[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n## Mac ignore\n\n# General\n.DS_Store\n.AppleDouble\n.LSOverride\n*.pyc\ntab_stats.dat\n*.dat\n\n.dropbox\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n\n# C extensions\n*.so\n\n# Distribution / packaging\n*.zip\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n.DS_Store\n*.dat\n\n# Cursor IDE\n.cursor/\n\n# AI assistant/tooling\n.claude/\n.codex/\n\n# JetBrains IDE\n.idea/\n\n# Code review reports\n.code-review/\n.code-review\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to the Nuke Survival Toolkit are documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [2.2.0] - 2026-03-19\n\n### Added\n\n**Tools (gizmos and Python)**\n\n**2026**\n- CardToTrack (AK) v9.0\n\n**2024**\n- aeShadows (AE) v1.0\n- FastComplexity_Distort (MHD)\n- fxT_ChromaticAberration (fxT) v3.1\n- Emission (NW) v1.2\n- aeRefracTHOR (AE) v1.0\n- LightSwitch (TL)\n- LightSwitchPuppet template\n- ChromaSmear (LJ)\n- apEdgeCrush (AP)\n- MirrorDimension (TL)\n\n**2023**\n- PointCloudKeyer (IS)\n- SpotLight (TL)\n- Rings of Power (TL)\n- Symmetry (TL)\n- SkyMatte\n\n**2022**\n- CardToTrack (AK) updated to v8.0 with NST_cardToTrack.py\n- ID_Extractor (TL) with NST_ID_Extractor.py\n- ConstantPro (TL)\n- HexColor (NW)\n- RadialDilate (CF)\n\n**2021**\n- GuidedBlur (RF)\n- iErode (PP)\n- aeRelight2D (AE)\n- iTransform_ae (AE) — later fixed onCreate code for render farm\n- ImagePlane3D_v2 (TL) v2.0\n- bm_OpticalLightwrap (renamed from bm_Lightwrap)\n\n---\n\n**Other**\n\n- `LOAD_EXPRESSION_MENU` configuration option in `menu.py` to optionally enable or disable the Expression Nodes AG submenu (default: disabled).\n\n### Changed\n\n- Icon assets recompressed for ~53% size reduction (~127 KB saved); no visual changes.\n- `ColorGradientUi.py` updated for Nuke 16+ compatibility and PySide6 migration (GradientEditor MHD).\n- Menu refactor: `nk_path()` and `icon_path()` helpers, f-strings, improved readability; no user-visible behavior change.\n- Documentation menu now uses a `Documentation` submenu with `Wiki/Docs (Auto)`, `Wiki (Online)`, `Wiki (Offline)`, and `Docs (PDF)` commands. The auto command now falls back in order: online wiki -> offline local wiki -> local PDF, with reachability checks and concise missing-target guidance.\n- Documentation (offline HTML): **`Wiki/Docs (Auto)`** and **`Wiki (Offline)`** open the bundled wiki via a local **`http://127.0.0.1`** static server (ephemeral port) so **MkDocs Material search** works; falls back to **`file://`** if the server cannot start; browser launch is **non-blocking** (background thread). Reuses the same server when the offline root path is unchanged.\n- Added dedicated icons for documentation submenu entries (`wiki_default`, `wiki_online`, `wiki_offline`) and used Nuke native `StickyNote` for PDF.\n- `README.md` now includes an optional offline documentation install section that points users to release ZIP downloads and the required local path (`NukeSurvivalToolkit/NST_Documentation/index.html`).\n- Updated .nk templates: NST_AdvancedKeyingTemplate_Stamps.nk, NST_X_Aton_Examples.nk, deepThickness.nk.\n- New icon assets for aeRefracTHOR, aeShadows.\n- EdgeDetect, GuidedBlur: corrected icons and attribution (#62).\n- iMorph v2 AP (beta) added alongside v1 in menu.\n- CardToTrack v9 (AK): Transform menu entries CardToTrack_v9 AK, CProject2 AK, TProject2 AK now use NST_-prefixed gizmos (NST_CardToTrack2, NST_CProject2, NST_TProject2) and NST_cardToTrack_v9.py.\n\n**Updated Tools**\n\n*Nuke 13 compatibility:*\n- aPCard\n- AutoCropTool\n- DeepKeyMix\n- FrameFiller\n- GradMagic\n- ImagePlane3D\n- LumaGrain\n- Matrix4x4_Inverse\n- mScatterGeo\n- origami\n- PlanarProjection (also fixed XAton volumes example)\n- Reconcile3DFast\n- Relight_Simple\n- ReProject_3D\n- RotoCentroid\n- RP_Reformat\n- Sparky\n- SSMesh\n- viewer_render\n- VoronoiGradient\n\n*Other updates:*\n- apeGlow (fixed overscan bug on crop knobs)\n- apChroma (internal restructure)\n- apChromaMergeNew (internal restructure)\n- apDespill: v1 deprecated, v2 promoted as canonical — `NST_apDespill_v2.gizmo` renamed to `NST_apDespill.gizmo` (#63)\n- apVignette (v0.5: added transform tab, \"Apply to White Constant\" option)\n- bm_CameraShake (v4.0: fewer internal nodes/expressions, curve smoothness control, cleaner UI, experimental auto-motionblur beta) (#39)\n- bm_OpticalGlow (v4.1: fixed mix slider with mask input, removed stale `algorithm_code` knob) (#40, #64)\n- bm_OpticalLightwrap (fixed mix slider with mask input, removed stale `algorithm_code` knob, default `effect_only` to false, renamed menu entry and icon) (#41)\n- CameraNormals (updated DummyCam to v1.3)\n- CellNoise (fixed onCreate center calculation)\n- ColorSampler (added option to export constant)\n- DeepRecolorMatte (bug fixes, ported later version)\n- DummyCam (v1.3, Nuke 13/14+ Camera3 class)\n- ExponGlow (fixed bug that deleted luma key when changing iterations)\n- Glass (added channel support and mask input)\n- InjectMatteChannel (exposed bbox knob)\n- LightWrapPro (fixed bounding box in non-final view modes)\n- MorphDissolve (added 0→1 / 1→0 options, STmap export)\n- SimpleSSS (internal cleanup)\n- SliceTool (code cleanup)\n- STmapInverse (code cleanup)\n- Suppress_RGBCMY (added mask and mix features)\n- UV_Map (fixed overscan scaling bug)\n- UV_Mapper (internal cleanup)\n\n### Removed\n\n- `h_Qt.py` — obsolete Qt compatibility shim (no longer needed after PySide6 migration).\n- `NST_bm_Lightwrap.gizmo` — replaced by bm_OpticalLightwrap.\n- `NST_apDespill_v2.gizmo` — renamed to `NST_apDespill.gizmo` (v2 promoted as canonical).\n- GlobalCTRL, AnamorphicLensBlur — removed from toolkit (no menu entry, not maintained).\n- Duplicate `NST_ImagePlane3D_v2.gizmo` — identical to v1, single copy retained.\n\n### Fixed\n\n- CellNoise: Blink kernel compile errors on Nuke 15+ (moved globals to #define, replaced abs() with signedness check) (#36).\n- apEdgeCrush: BlinkScript compile error on Nuke 16 — replaced global inline `lerp()` with `#define` macro (#59).\n- Windows filepath issues: use `Path.as_posix()` for all toolkit paths so forward slashes are used on every platform, avoiding backslash escape sequences (e.g. `\\n` in `\\nk_files`) that broke `nuke.nodePaste()` and file knobs on Windows.\n- Help documentation link on Windows: use `Path.as_uri()` for the documentation PDF URL so drive-letter paths open correctly in the browser.\n- Documentation online reachability check now handles environments where Python SSL certificate validation fails, preventing false fallback from online docs to PDF.\n- Offline MkDocs **search** was unreliable when the wiki was opened as **`file://`** — mitigated by serving the same folder over **localhost** when launching from Nuke (**Wiki/Docs (Auto)** / **Wiki (Offline)**).\n- Node class check in `filepathCreateNode`: use tuple membership instead of chained `or` for file-node detection (#46).\n- Replaced bare `except:` clauses with specific exception handling (ImportError, RuntimeError) for ColorGradientUi, VectorTracker, and NST_cardToTrack imports (#45).\n- Menu: corrected bm_Lightwrap node name to bm_OpticalLightwrap (#61).\n- Menu: replaced broken DeepToPosition TL with Deep2VPosition MJT (#60).\n- Issue #43: **`NST_FolderPath` is defined inside `NST_helper`** (from `__file__`) instead of being assigned from `menu.py`, so the helper does not depend on `menu.py` having run first and avoids import-order `NameError` risk.\n\n---\n\n## [2.1.1] - 2021-05-19\n\n### Changed\n\n- Updated NST_ImagePlane3D, NST_apDespill_v2, NST_FrameHoldSpecial gizmos.\n- Updated deepThickness.nk script.\n\n---\n\n## [2.1.0] - 2021-04-28\n\n### Added\n\n**Tools (gizmos and Python)**\n\n**2021**\n- BokehBuilder (KB)\n- LensEngine (KB)\n- RankFilter (JP)\n- MotionBlurPaint (AG)\n- RotoPaintTransform (AG)\n- Deep2VP (MJT)\n- DVPColorCorrect (MJT)\n- DVP_Shader (MJT)\n- DVP_ToonShader (MJT)\n- DVPrelightPT (MJT)\n- DVPortal (MJT)\n- FrameHoldSpecial (AG)\n- InverseMatrix33 (MJT)\n- InverseMatrix44 (MJT)\n- apDespill v2 (AP)\n- MonochromePlus (CF)\n\n**2020**\n- iMorph v2 (AP)\n- LabelFromRead (TL)\n- Unify3DCoordinate (MJT)\n- SceneDepthCalculator (MJT)\n- DasGrain (FH)\n- Looper (DB)\n- HeatWave (DB)\n\n---\n\n**Other**\n\n- New documentation.\n\n### Changed\n\n- NST_ImagePlane3D, NST_GradMagic, NST_iMorph updates.\n- Menu structure updates.\n\n---\n\n## [2.0.0] - 2021-03-29\n\n### Added\n\n**Tools (gizmos and Python)**\n\n**2021**\n- GodRaysProjector (CF)\n- MonochromePlus (CF)\n- RainMaker (MR)\n\n**2020**\n- ImagePlane3D (TL) v2.0\n- FrameFiller (MJT)\n- Edge (RB)\n- Reconcile3DFast (DR)\n- GlueP (LS)\n- AutoFlare2 (NKPD)\n- DeepMerge_Advanced (BM)\n- bm_MatteCheck (BM)\n- bm_NoiseGen (BM)\n- bm_Lightwrap (BM)\n- SimpleSSS (MHD)\n- KeyChew (NKPD)\n- AdditiveKeyerPro (TL)\n- apeGlow (AP)\n- iBlurU (NKPD)\n- DeepFromDepth\n\n---\n\n**Other**\n\n- ReadGeo class support in NST_helper.\n- PerspectiveBB reset points button.\n- UV_Map, injectChannelMatte tab rename.\n- Menu restructure and submenus.\n\n### Changed\n\n- Nuke 13 compatibility updates across multiple gizmos.\n- Major init.py restructure.\n- Documentation updates.\n\n### Fixed\n\n- ImagePlane3D crop1, DirectionalBlur CopyBBox, bm_MatteCheck grey_amt.\n- Menu bugs.\n- NST_Reconcile3DFast.\n\n---\n\n## [1.1.1] - 2020-10-05\n\n### Changed\n\n- Updated NST_AutoFlare2 gizmo.\n\n---\n\n## [1.1.0] - 2020-10-04\n\n### Added\n\n**Tools (gizmos and Python)**\n\n- AutoFlare2 (NKPD)\n- FrameFiller (MJT)\n- Edge (RB)\n- Reconcile3DFast (DR)\n- GlueP (LS)\n- DeepMerge_Advanced (BM)\n- bm_MatteCheck (BM)\n- bm_NoiseGen (BM)\n- bm_CurveRemapper (BM)\n- bm_Lightwrap (BM)\n- SimpleSSS (MHD)\n- KeyChew (NKPD)\n\n---\n\n### Changed\n\n- Dev branch merge; bm_Lightwrap replaced prior NST_bm_Lightwrap; various tool updates.\n\n---\n\n## [1.0.1] - 2020-09-26\n\n### Changed\n\n- Sparky DB updated to v1.5.\n- README updates.\n\n---\n\n## [1.0.0] - 2020-09-23\n\n### Added\n\n**Tools (gizmos and Python)**\n\n- Initial curated gizmo collection.\n\n---\n\n**Other**\n\n- Portable tool menu for Foundry Nuke.\n- Installation via init.py plugin path.\n\n[Unreleased]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.2.0...HEAD\n[2.2.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.1.1...v2.2.0\n[2.1.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.1.0...v2.1.1\n[2.1.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.0.0...v2.1.0\n[2.0.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.1.1...v2.0.0\n[1.1.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.1.0...v1.1.1\n[1.1.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.0.1...v1.1.0\n[1.0.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.0.0...v1.0.1\n[1.0.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/tag/v1.0.0\n"
  },
  {
    "path": "DEVELOPMENT.md",
    "content": "# NukeSurvivalToolkit Development Notes\n\nThis document captures key learnings, architecture decisions, and development knowledge for AI agents and developers working on this project.\n\n## Architecture Overview\n\n```\nNukeSurvivalToolkit/\n├── menu.py            # Main entry point - creates toolbar, loads all tools\n├── init.py            # Minimal (plugin path setup happens in menu.py)\n├── gizmos/            # 290+ .gizmo files (prefixed NST_)\n├── python/            # Supporting Python modules\n├── nk_files/          # .nk script templates and presets\n├── icons/             # Menu and tool icons (.png)\n└── images/            # Demo images referenced by gizmos\n```\n\n**Loading Flow:**\n1. User adds `nuke.pluginAddPath(\"path/to/NukeSurvivalToolkit\")` to their `init.py`\n2. Nuke auto-loads `menu.py` on startup\n3. `menu.py` registers plugin paths, imports helpers, creates the toolbar menu structure\n\n**Documentation menu:** Online/offline/PDF targets and opening offline HTML (preferring a local `http://127.0.0.1` server so MkDocs Material search works) are implemented in `NST_helper`—see that module and `CHANGELOG.md`.\n\n## Menu System\n\n### Entry Point: `menu.py`\n\nThe menu system uses `nuke.menu('Nodes')` to create a toolbar with submenus:\n\n```python\ntoolbar = nuke.menu('Nodes')\nNST_menu = toolbar.addMenu('NukeSurvivalToolkit', icon=\"SurvivalToolkit.png\")\n```\n\n### Helper Functions\n\nTwo utility functions simplify path construction:\n\n```python\ndef nk_path(filename, prefix=False):\n    \"\"\"Return full path to an .nk file in nk_files folder.\"\"\"\n    name = f\"{prefixNST}{filename}\" if prefix else filename\n    return f\"{NST_FolderPath}/nk_files/{name}\"\n\ndef icon_path(filename):\n    \"\"\"Return full path to an icon file.\"\"\"\n    return f\"{NST_FolderPath}/icons/{filename}\"\n```\n\nUsage patterns:\n```python\n# With prefix (NST_AdvancedKeyingTemplate.nk)\nnk_path(\"AdvancedKeyingTemplate.nk\", prefix=True)\n\n# Without prefix (deepThickness.nk)\nnk_path(\"deepThickness.nk\")\n```\n\n### Tool Creation Methods\n\nThere are three ways tools are added to menus:\n\n1. **Direct gizmo creation** (most common):\n   ```python\n   menu.addCommand('ToolName', f\"nuke.createNode('{prefixNST}ToolName')\", icon=\"icon.png\")\n   ```\n\n2. **Node paste from .nk file** (for templates/multi-node setups):\n   ```python\n   menu.addCommand('Template', f'nuke.nodePaste(\"{nk_path(\"Template.nk\")}\")')\n   ```\n\n3. **Helper function** (for tools needing file path replacement):\n   ```python\n   menu.addCommand('AutoFlare', f\"NST_helper.filepathCreateNode('{prefixNST}AutoFlare2')\")\n   ```\n\n## Gizmo Naming Convention\n\n**All toolkit gizmos are prefixed with `NST_`** to avoid conflicts with user tools or other plugins.\n\n```\nNST_DummyCam.gizmo\nNST_LabelFromRead.gizmo\nNST_ID_Extractor.gizmo\n```\n\nThe prefix is stored as a global in `menu.py`:\n```python\nglobal prefixNST\nprefixNST = \"NST_\"\n```\n\n## Cross-Platform Path Handling\n\n### The Windows Backslash Problem\n\nWindows uses backslashes (`\\`) in paths, which causes issues:\n- `\\n` in a path like `C:\\nk_files\\` is interpreted as a newline\n- `nuke.nodePaste()` fails with malformed paths\n- File knobs display incorrectly\n\n**Solution:** Always use `Path.as_posix()` to force forward slashes:\n\n```python\nfrom pathlib import Path\n\n# CORRECT - works on all platforms\nNST_FolderPath = Path(__file__).parent.as_posix()\n\n# WRONG - breaks on Windows\nNST_FolderPath = os.path.dirname(__file__)\n```\n\n`NST_helper.py` also defines `NST_FolderPath` at import time from its own location (toolkit root is the parent of `python/`). `menu.py` still assigns `NST_helper.NST_FolderPath` after import; both point at the same toolkit folder.\n\n### Documentation URLs (`NST_helper`)\n\nDocumentation is opened from `NST_helper` (see `openNSTDocumentationDefault`, `openNSTDocumentationOffline`, `openNSTDocumentationPDF`).\n\n- **Online wiki:** `webbrowser.open(NST_DOCS_ONLINE_URL)` with a prior HTTPS reachability check (`is_online_wiki_reachable`).\n- **Offline HTML:** Prefer `http://127.0.0.1:<port>/` via a small local static server so MkDocs Material search works; if that fails, fall back to `offline_index.as_uri()` (`file://`).\n- **PDF in toolkit root:** Resolve with `find_pdf_doc()` (`NST_DOCS_PDF_NAME` under `_toolkit_root()`), then open with `Path.as_uri()` so Windows drive letters become valid `file:///…` URLs:\n\n```python\npdf_doc = find_pdf_doc()\nif pdf_doc:\n    webbrowser.open(pdf_doc.as_uri())\n```\n\n## Dynamic File Path Replacement\n\nSome gizmos contain Read/Camera nodes that reference image files in the toolkit. These use a placeholder pattern:\n\n```python\n# In gizmo: file path contains \"<<<replace>>>\"\n# NST_helper.filepathCreateNode() swaps it with actual path\n\ndef filepathCreateNode(gizmoName):\n    # ...create node...\n    for i in fileNodes:\n        if i.Class() in (\"Read\", \"DeepRead\", \"ReadGeo\", \"ReadGeo2\", \"Camera2\", \"Axis2\"):\n            filepath = i.knob(\"file\").getValue()\n            if \"<<<replace>>>\" in filepath:\n                newFilepath = filepath.replace(\"<<<replace>>>\", NST_FolderPath)\n                i.knob(\"file\").setValue(newFilepath)\n```\n\n**Example (Read node `file` knob):**\n\n| | Path |\n|---|------|\n| **Before** (placeholder in gizmo) | `<<<replace>>>/images/my_demo.exr` |\n| **After** (at runtime) | `NST_FolderPath` + `/images/my_demo.exr` — e.g. `/…/NukeSurvivalToolkit/images/my_demo.exr` |\n\nPut assets under `images/` next to `gizmos/`, `python/`, etc., and keep the path after `<<<replace>>>` relative to the toolkit root.\n\n**Node classes that support file replacement:** Read, DeepRead, ReadGeo, ReadGeo2, Camera2, Axis2\n\n## Python Module Loading\n\n### Safe Import Pattern\n\nWhen loading optional Python modules, use specific exception handling:\n\n```python\n# CORRECT - catches specific errors\ntry:\n    import ColorGradientUi\n    drawMenu.addCommand(\"GradientEditor\", ...)\nexcept ImportError as e:\n    print(f\"Could not load ColorGradientUi: {e}\")\n    pass\n\n# ALSO CORRECT - for nuke.load()\ntry:\n    nuke.load(f'{prefixNST}VectorTracker.py')\n    menu.addCommand('VectorTracker', ...)\nexcept RuntimeError as e:\n    print(f\"Could not load VectorTracker.py: {e}\")\n    pass\n```\n\n### Module Dependencies\n\n| Module | Purpose | Dependencies |\n|--------|---------|--------------|\n| `ColorGradientUi.py` | Gradient editor widget | PySide6, ConfigParser |\n| `NST_helper.py` | Path replacement utility; documentation submenu (online/offline/PDF); local HTTP for offline HTML | nuke, nukescripts, pathlib, stdlib (http, threading) |\n| `NST_ID_Extractor.py` | ID channel extraction | nuke, nukescripts |\n| `NST_VectorTracker.py` | Vector-based tracking | nuke |\n| `NST_cardToTrack.py` | CardToTrack v7 — 3D card to 2D track | nuke, math, threading |\n| `NST_cardToTrack_v9.py` | CardToTrack v9 — used by NST_CardToTrack2, NST_CProject2, NST_TProject2 | nuke, math, re, time |\n| `NST_stickit.py` | Camera tracker warping | nuke, nuke.splinewarp, math |\n\n## Nuke Version Compatibility\n\n### Camera Class Changes (Nuke 13+)\n\nNuke 13 introduced `Camera3` class. Code must check for all camera types:\n\n```tcl\n# In DummyCam.gizmo TCL expression\nif {[class $x]==\"Camera3\"||[class $x]==\"Camera2\"||[class $x]==\"Camera\"} {\n    # handle camera...\n}\n```\n\n### PySide Migration (Nuke 16+)\n\nNuke 16+ uses PySide6 instead of PySide2. The `ColorGradientUi.py` was updated:\n\n```python\n# Old (PySide2)\nfrom PySide2 import QtGui, QtCore, QtWidgets\n\n# New (PySide6)\nfrom PySide6 import QtGui, QtCore, QtWidgets\nfrom PySide6.QtWidgets import QWidget, QLabel, ...\nfrom PySide6.QtGui import QColor, QPainter, ...\n```\n\n**Key change:** In PySide6, some classes moved from `QtWidgets` to `QtGui` (e.g., `QAction`).\n\n## Gizmo Etiquette\n\n### Save as Group, not Gizmo\n\nWhen you save a tool to disk, use a **Group** as the root node, not a **Gizmo**. NST ships tools as Groups so scripts remain valid if NST is not installed (for example on a render farm) or if the toolkit is removed. Internal nodes, expressions, and the Group structure still load; a Gizmo definition would not.\n\n### Clean the header when pasting from Nuke\n\nCopying a node from Nuke into a text editor often includes paste/stack boilerplate before the node block. Strip that so **`Group {` is the first line** of the tool, and verify the **`name`** matches the tool.\n\n**Remove these lines** (everything above `Group {`):\n\n```nk\nset cut_paste_input [stack 0]\nversion 16.0 v8\npush $cut_paste_input\n```\n\n(Version numbers will differ; remove the `set`, `version`, and `push` block in full.)\n\n**Remove graph position** so the node does not snap to a fixed spot when the script is merged or opened elsewhere. Delete the `xpos` and `ypos` lines near the top of the Group, **before** the first `addUserKnob`:\n\n```nk\n xpos 136\n ypos -78\n```\n\n**Example — raw paste (abbreviated):**\n\n```nk\n---\n\nset cut_paste_input [stack 0]\nversion 16.0 v8\npush $cut_paste_input\nGroup {\n name GradMagic\n tile_color 0x621d5aff\n gl_color 0xbffffff\n note_font \"Verdana Bold\"\n note_font_color 0x73e6e2ff\n selected true\n xpos 136\n ypos -78\n addUserKnob {20 GradMagic}\n```\n\n**Example — cleaned header:**\n\n```nk\nGroup {\n name GradMagic\n tile_color 0x621d5aff\n gl_color 0xbffffff\n note_font \"Verdana Bold\"\n note_font_color 0x73e6e2ff\n selected true\n addUserKnob {20 GradMagic}\n```\n\n## TCL Expression Techniques\n\n### DummyCam's Camera Traversal\n\nThe DummyCam gizmo uses TCL to find an upstream camera through any number of group levels:\n\n```tcl\n# Traverse up through inputs and groups to find camera\nset x [node $starting_point]\nwhile {$finished != 1} {\n    while {[class $x] != \"Camera3\" && [class $x] != \"Camera2\" ...} {\n        set x [node $x.input0]\n    }\n    # If found Input node, jump to parent group's corresponding input\n    if {[class $x]==\"Input\"} {\n        set inp \"$x.parent.input\"\n        set inputNum [value $x.number]\n        # ...\n    }\n}\n```\n\n## Configuration Options\n\n`menu.py` includes user-configurable variables:\n\n```python\n# Set to True to load the Expression Nodes AG submenu under Draw\nLOAD_EXPRESSION_MENU = False\n```\n\n**Note:** Disabled by default to reduce menu clutter for users who don't need expression node presets.\n\n## Integration with External Tools\n\n### Stamps Integration\n\nSeveral tools attempt to integrate with Adrian Pueyo's Stamps tool:\n\n```python\ntry:\n    import stamps\n    stamps.anchor(title=channelName, tags=\"ID\", input_node=\"\", node_type=\"2D\")\nexcept ImportError:\n    pass  # Stamps not installed, skip silently\n```\n\n**Tools with Stamps support:** ID_Extractor\n\n## File Reference\n\n| File | Purpose |\n|------|---------|\n| `menu.py` | Main menu creation and tool registration |\n| `init.py` | Minimal stub (most work in menu.py) |\n| `NST_helper.py` | `filepathCreateNode()` for dynamic paths; documentation menu (online/offline/PDF); local HTTP server for offline wiki when opening bundled HTML |\n| `ColorGradientUi.py` | PySide6 gradient editor widget |\n| `NST_ID_Extractor.py` | RGB channel extraction with Stamps |\n| `NST_VectorTracker.py` | Vector/motion vector based tracking |\n| `NST_cardToTrack.py` | CardToTrack v7 3D→2D conversion |\n| `NST_cardToTrack_v9.py` | CardToTrack v9 3D→2D conversion; used by NST_CardToTrack2, NST_CProject2, NST_TProject2 gizmos |\n| `NST_stickit.py` | SplineWarp from CameraTracker |\n| `GradientPresets.cfg` | Stored gradient presets (ConfigParser) |\n\n## Testing\n\n1. Add toolkit path to `~/.nuke/init.py`:\n   ```python\n   nuke.pluginAddPath(\"/path/to/NukeSurvivalToolkit\")\n   ```\n\n2. Restart Nuke\n\n3. Look for red multi-tool icon in toolbar\n\n4. Test individual tools by creating them from the menu\n\n## Contributing\n\nWhen adding new tools:\n\n1. Name the gizmo file `NST_ToolName.gizmo`\n2. Add menu entry in appropriate section of `menu.py`\n3. Use existing icon or add new one to `icons/`\n4. If tools or tool demos need images to read in, add them to `images/` and use the `<<<replace>>>` placeholder in the Read (or other file) node's file path so `NST_helper.filepathCreateNode()` can substitute the toolkit root.\n5. Update CHANGELOG.md with addition\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 CreativeLyons\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AdditiveKeyerPro.gizmo",
    "content": "Group {\n name AdditiveKeyerPro\n tile_color 0x5200ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 AdditiveKeyer}\n addUserKnob {6 useSC l \"Use Screen Color as CleanPlate\" +STARTLINE}\n addUserKnob {41 screenColor l \"Screen Color\" T Keylight1.screenColour}\n addUserKnob {6 despillSat l \"Despill Screen Color from Saturation?\" +STARTLINE}\n despillSat true\n addUserKnob {26 \"\"}\n addUserKnob {7 DarkValue l \"Dark Value\" R 0 5}\n DarkValue 1\n addUserKnob {7 satDarks l \"Saturate Darks\"}\n satDarks 0.2\n addUserKnob {18 darkTint l \"Dark Tint\"}\n darkTint 1\n addUserKnob {6 darkTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {7 ExtraLightValue l \"Light Value Plus\" R 0 2}\n ExtraLightValue 1\n addUserKnob {7 satLights l \"Saturate Lights\"}\n satLights 0.2\n addUserKnob {18 lightTint l \"Light Tint\"}\n lightTint 1\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 LightValue l \"Light Value BG Mult\" R 0 5}\n LightValue 0.25\n addUserKnob {26 \"\"}\n addUserKnob {6 darkTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 lightTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 compositeSwitch l \"Output Difference to RGB\" +STARTLINE}\n addUserKnob {6 outputDiffAlpha l \"Output Difference Matte to Alpha\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l \"Modified By:\" T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"adds the difference between cleanplate and key plate to the BG\\n\\nGood for hair details and shadows and sensitive edge treatment\" T AdditiveKeyer}\n addUserKnob {26 ver l Version: T v04}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 685\n  ypos 1141\n  number 3\n }\n Dot {\n  name Dot10\n  label Mask\n  note_font_size 41\n  xpos 719\n  ypos 1883\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 719\n  ypos 1983\n }\n Input {\n  inputs 0\n  name fg\n  label \"\\[value number]\"\n  xpos -500\n  ypos -221\n  number 1\n }\n Remove {\n  channels alpha\n  name Remove2\n  xpos -500\n  ypos -147\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos -500\n  ypos -109\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos -466\n  ypos 5\n }\nset Ne63218b0 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {0 0 0}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight1\n  xpos -500\n  ypos 73\n }\nset Nda7c91c0 [stack 0]\npush $Ne63218b0\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -356\n  ypos 5\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -390\n  ypos 73\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -390\n  ypos 99\n }\n Saturation {\n  saturation 0\n  name Saturation4\n  xpos -390\n  ypos 125\n }\npush $Nda7c91c0\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -500\n  ypos 125\n }\npush $Ne63218b0\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos -598\n  ypos 5\n }\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos -598\n  ypos 218\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch1\n  label \"\\[value which]\"\n  xpos -500\n  ypos 208\n }\n Dot {\n  name Dot8\n  xpos -466\n  ypos 373\n }\nset Ne61ad600 [stack 0]\n Input {\n  inputs 0\n  name clean\n  label \"\\[value number]\"\n  xpos 126\n  ypos -175\n  number 2\n }\n Remove {\n  channels alpha\n  name Remove3\n  xpos 126\n  ypos -101\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 126\n  ypos -63\n }\n Grade {\n  multiply 0\n  add {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}\n  name ScreenColor\n  xpos 126\n  ypos -14\n  disable {{!parent.useSC}}\n }\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 160\n  ypos 50\n }\nset Ne61d0820 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight2\n  xpos 126\n  ypos 118\n }\nset Ne61d4760 [stack 0]\npush $Ne61d0820\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 270\n  ypos 50\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 236\n  ypos 118\n }\n Clamp {\n  channels rgba\n  name Clamp2\n  xpos 236\n  ypos 144\n }\n Saturation {\n  saturation 0\n  name Saturation5\n  xpos 236\n  ypos 170\n }\npush $Ne61d4760\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 126\n  ypos 170\n }\npush $Ne61d0820\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 28\n  ypos 50\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 28\n  ypos 230\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch2\n  label \"\\[value which]\"\n  xpos 126\n  ypos 223\n }\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 160\n  ypos 320\n }\nset Ndc6e9920 [stack 0]\n Dot {\n  name Dot6\n  xpos 412\n  ypos 320\n }\n Merge2 {\n  inputs 2\n  operation difference\n  Achannels rgb\n  Bchannels rgb\n  name Merge6\n  xpos 378\n  ypos 370\n }\n Group {\n  name ChannelControl_v3\n  label \"\\[value channel_selector.in]\"\n  note_font \"Bitstream Vera Sans\"\n  xpos 378\n  ypos 440\n  mapsize {0.15 0.15}\n  addUserKnob {20 channelControl}\n  addUserKnob {41 Channel_Selection T channel_selector.in}\n  addUserKnob {26 Description l \"\" +STARTLINE T \":Channel Control:\\n\\nChannel math with choice of merge operation\"}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 redGain}\n  redGain 0.3\n  addUserKnob {7 greenGain}\n  greenGain 0.59\n  addUserKnob {7 blueGain}\n  blueGain 0.11\n  addUserKnob {7 alphaGain}\n  addUserKnob {41 operation T Merge1.operation}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 558\n   ypos -694\n  }\n  Shuffle {\n   name channel_selector\n   label \"\\[value in]\"\n   xpos 558\n   ypos -668\n  }\nset Ne600a100 [stack 0]\n  Shuffle {\n   green red\n   blue red\n   alpha red\n   name Shuffle1\n   xpos 386\n   ypos -536\n  }\n  Grade {\n   channels rgba\n   white {{parent.redGain i}}\n   name Grade12\n   xpos 386\n   ypos -492\n  }\npush $Ne600a100\n  Shuffle {\n   red green\n   blue green\n   alpha green\n   name Shuffle2\n   xpos 499\n   ypos -534\n  }\n  Grade {\n   channels rgba\n   white {{parent.greenGain i}}\n   name Grade13\n   xpos 499\n   ypos -493\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   name Merge1\n   xpos 411\n   ypos -428\n  }\n  set C310f6910 [stack 0]\npush $Ne600a100\n  Shuffle {\n   red blue\n   green blue\n   alpha blue\n   name Shuffle3\n   xpos 610\n   ypos -538\n  }\n  Grade {\n   channels rgba\n   white {{parent.blueGain i}}\n   name Grade14\n   xpos 610\n   ypos -494\n  }\nclone $C310f6910 {\n   inputs 2\n   xpos 486\n   ypos -369\n   selected false\n  }\npush $Ne600a100\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle4\n   selected true\n   xpos 725\n   ypos -535\n  }\n  Grade {\n   channels rgba\n   white {{parent.alphaGain i}}\n   name Grade15\n   xpos 725\n   ypos -494\n  }\nclone $C310f6910 {\n   inputs 2\n   xpos 580\n   ypos -307\n   selected false\n  }\n  Output {\n   name Output1\n   xpos 600\n   ypos -210\n  }\n end_group\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 412\n  ypos 1768\n }\n Input {\n  inputs 0\n  name bg\n  label \"\\[value number]\"\n  xpos -845\n  ypos -242\n }\n AddChannels {\n  channels rgba\n  name AddChannels3\n  xpos -845\n  ypos -151\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -811\n  ypos -78\n }\n Dot {\n  name Dot4\n  xpos -811\n  ypos 1449\n }\nset Nd631a0b0 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -811\n  ypos 1688\n }\nset Nd631df90 [stack 0]\npush $Ne61ad600\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -466\n  ypos 421\n }\nset Nd6321e60 [stack 0]\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation9\n  xpos -378\n  ypos 418\n }\npush $Ndc6e9920\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation8\n  xpos -215\n  ypos 317\n }\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -215\n  ypos 418\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos -181\n  ypos 674\n }\n Clamp {\n  channels rgba\n  minimum 1\n  minimum_enable false\n  name Clamp4\n  xpos -215\n  ypos 786\n }\n Add {\n  channels rgba\n  value -1\n  name Add3\n  xpos -215\n  ypos 840\n }\n Multiply {\n  channels rgb\n  value {{parent.DarkValue} {parent.DarkValue} {parent.DarkValue} 0}\n  name DARK_VALUE\n  xpos -215\n  ypos 892\n }\n Grade {\n  multiply {{parent.darkTint} {parent.darkTint} {parent.darkTint} {parent.darkTint}}\n  reverse true\n  black_clamp false\n  name DARK_TINT\n  xpos -215\n  ypos 931\n }\n Add {\n  channels rgba\n  value 1\n  name Add4\n  xpos -215\n  ypos 988\n }\n Clamp {\n  channels rgb\n  name Clamp5\n  xpos -215\n  ypos 1065\n }\n Dot {\n  name Dot39\n  note_font_size 41\n  xpos -181\n  ypos 1257\n }\npush $Nd6321e60\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos -466\n  ypos 577\n }\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation1\n  xpos -101\n  ypos 574\n }\nset Nb662b010 [stack 0]\npush $Ndc6e9920\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation6\n  xpos 126\n  ypos 500\n }\nset Nb662f000 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  also_merge all\n  name Merge10\n  label all\n  xpos 126\n  ypos 568\n }\n Clamp {\n  channels rgba\n  minimum 1\n  maximum_enable false\n  name Clamp3\n  xpos 126\n  ypos 780\n }\n Add {\n  channels rgba\n  value -1\n  name Add1\n  xpos 126\n  ypos 838\n }\n Multiply {\n  channels rgb\n  value {{parent.LightValue} {parent.LightValue} {parent.LightValue} 0}\n  name LIGHT_VALUE\n  xpos 126\n  ypos 961\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT\n  xpos 126\n  ypos 1039\n }\n Add {\n  channels rgba\n  value 1\n  name Add2\n  xpos 126\n  ypos 1120\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name __CONSTRAIN_DARKS__\n  xpos 128\n  ypos 1253\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 162\n  ypos 1354\n }\nset Nd6028a80 [stack 0]\n Dot {\n  name Dot3\n  xpos -8\n  ypos 1354\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -8\n  ypos 1611\n }\npush $Nb662f000\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 310\n  ypos 503\n }\npush $Nb662b010\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -67\n  ypos 691\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 276\n  ypos 688\n }\n Clamp {\n  channels rgba\n  maximum_enable false\n  name Clamp6\n  xpos 276\n  ypos 781\n }\n Multiply {\n  channels rgba\n  value {{parent.ExtraLightValue}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 276\n  ypos 899\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT1\n  xpos 276\n  ypos 1036\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 310\n  ypos 1513\n }\npush $Nd6028a80\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 162\n  ypos 1449\n }\npush $Nd631a0b0\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name CONSTRAIN_LIGHTS\n  xpos 128\n  ypos 1446\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 128\n  ypos 1510\n }\n Switch {\n  inputs 2\n  which {{parent.compositeSwitch}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 128\n  ypos 1604\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 128\n  ypos 1678\n  disable {{parent.outputDiffAlpha}}\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name __LUMA_INTO_ALPHA__\n  xpos 128\n  ypos 1758\n  disable {{!parent.outputDiffAlpha}}\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 162\n  ypos 1910\n }\npush $Nd631df90\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -811\n  ypos 1895\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -811\n  ypos 1986\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeKeymix\n  xpos 128\n  ypos 1973\n }\n Output {\n  name Output1\n  xpos 128\n  ypos 2235\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AnimationCurve.gizmo",
    "content": "Group {\n name ANIMATION_CURVES\n inputs 0\n knobChanged \"nk = nuke.thisNode()\\nk = nuke.thisKnob()\\nif ('active_translate' in k.name()) or ('active_scale' in k.name()) or ('active_time' in k.name())or ('scale_1' in k.name()) or ('translate' in k.name()) or ('delay' in k.name()):\\n    input = nk.knob('input_modify').getValue()\\n    value = input\\n    expression = 'input_modify'\\n    string = 'input'\\n    if(nk.knob('active_time').getValue() == 1):\\n        expression = 'input_modify(frame + delay)'\\n        string = 'input(frame + offset)'\\n    if(nk.knob('active_scale').getValue() == 1):\\n        value = value * nk.knob('scale_1').getValue()\\n        expression = expression + '*scale_1'\\n        string = string + ' * scale'\\n    if(nk.knob('active_translate').getValue() == 1):\\n        value = value + nk.knob('translate').getValue()\\n        expression = '(' + expression + ' + translate)'\\n        string = '(' + string + '+ translate)'\\n    nk.knob('output_modify').setExpression(expression)\\n    nk.knob('expression_modify').setValue(string)\\nif ('wave_type' in k.name()):\\n    if int(nk.knob('wave_type').getValue())==0:\\n        expression = 'random((frame+offset)/speed) * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==1:\\n        expression = '(noise((frame+offset)/speed)+1)/2 * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==2:\\n        expression = '(sin(2*pi*(frame+offset)/speed)+1)/2 * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==3:\\n        expression = '(asin(sin(2*pi*(frame+offset)/speed))/pi+0.5) * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==4:\\n        expression = 'int(sin(2*pi*(frame+offset)/speed)+1) * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==5:\\n        expression = '((frame+(offset+speed)) % (speed+blip)/(speed)) *(speed/blip) - (speed/blip) >= 0 ? max_val : min_val'\\n    elif int(nk.knob('wave_type').getValue())==6:\\n        expression = '((int((frame+offset) % speed)) >= 0 ? ((int((frame+offset) % speed)) <= (0+(blip-1)) ? ((sin(pi*((frame+offset) % speed)/blip)/2+1/2) * (2*max_val-2*min_val) + (2*min_val-max_val)) : min_val)  : min_val)'\\n    elif int(nk.knob('wave_type').getValue())==7:\\n        expression = 'abs(sin(pi*(frame + offset)/speed))* (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==8:\\n        expression = '((frame+offset) % speed)/speed * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==9:\\n        expression = 'sin((pi*(frame+offset)/(2*speed)) % (pi/2)) * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==10:\\n        expression = 'cos((pi*(frame+offset)/(2*speed)) % (pi/2)) * (max_val-min_val) + min_val'\\n    elif int(nk.knob('wave_type').getValue())==11:\\n        expression = '(exp(2*pi*((frame+offset) % speed)/speed)-1)/exp(2*pi) * (max_val-min_val) + min_val'\\n    nk.knob('output_wave').setExpression(expression)\\n    nk.knob('expression_wave').setValue(expression)\\n#----------------------------------------\\n#FADE\\n\\n\\nif ('fade_type' in k.name()) or ('fade_dissolve' in k.name()):\\n    fadeStart = nk.knob('fadeStart').getValue()\\n    fadeEnd = nk.knob('fadeEnd').getValue()\\n    \\n    if int(nk.knob('fade_type').getValue())==0:\\n        expression_fade=\\\"clamp((frame-fadeStart)/(fadeEnd-fadeStart))\\\"\\n    elif int(nk.knob('fade_type').getValue())==1:\\n        expression_fade=\\\"(sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2\\\"\\n    elif int(nk.knob('fade_type').getValue())==2:\\n        expression_fade=\\\"sin(clamp(((frame-fadeStart)*pi)/((fadeEnd-fadeStart)*2)-pi/2, -pi/2,0))+1\\\"\\n    elif int(nk.knob('fade_type').getValue())==3:\\n        expression_fade=\\\"sin(clamp(((frame-(fadeStart*2-fadeEnd))*pi)/((fadeEnd-fadeStart)*2)-pi/2,0,pi/2))\\\"\\n\\n\\n           \\n    saveExpression = expression_fade\\n        \\n    if int(nk.knob('fade_dissolve').getValue())==0:\\n        expression_fade = saveExpression\\n    elif int(nk.knob('fade_dissolve').getValue())==1:\\n        expression_fade = \\\"1-(\\\" + saveExpression + \\\")\\\"\\n        \\n    nk.knob('out_fade').setExpression(expression_fade)\\n    nk.knob('expression_fade').setValue(expression_fade)\\n\"\n autolabel nuke.thisNode().name()\n tile_color 0x367f5eff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n addUserKnob {20 wave_generator l \"Wave Generator\"}\n addUserKnob {4 wave_type l \"Wave type\" M {Random Noise Sine Triangle Square Blip \"Sine Blip\" Bounce SawTooth \"Saw Parabolic\" \"Saw Parabolic Reverse\" \"Saw Exponential\" \"\"}}\n addUserKnob {7 min_val l \"Min val\" R -10 10}\n min_val 10\n addUserKnob {7 max_val l \"Max val\" R -10 10}\n max_val 28\n addUserKnob {7 speed l \"Speed (frequency)\" R 1 100}\n speed 2\n addUserKnob {7 offset l \"Time offset\" R -10 10}\n addUserKnob {7 blip l Blip R 1 10}\n blip 1\n addUserKnob {26 \"\"}\n addUserKnob {7 output_wave l \"<font color=orangered><i>output wave\"}\n output_wave {{\"random((frame+offset)/speed) * (max_val-min_val) + min_val\"}}\n addUserKnob {1 expression_wave l \"<font color=darkcyan>Expression\"}\n expression_wave \"random((frame+offset)/speed) * (max_val-min_val) + min_val\"\n addUserKnob {26 \"\"}\n addUserKnob {26 email l \"\" +STARTLINE T \"<b><font color=\\\"MediumSeaGreen\\\">Animation and Curves v2.2</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n addUserKnob {22 Tutorial l \"<b><font color=\\\"MediumSeaGreen\\\">Tutorial\" -STARTLINE T \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial_animation_nuke.html')\"}\n addUserKnob {20 newrange l \"New Range\"}\n addUserKnob {26 message l \"\" +STARTLINE T \"<i>Normalize animation curves\\nRemap a curve into a new min-max range, keeping the proportion\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 input_range l \"<font color=springgreen><i>input\"}\n addUserKnob {26 original l \"ORIGINAL RANGE\"}\n addUserKnob {22 calc_min_max l \"Calculate Min and Max\" t \"Drag and drop your input curve, then press this button. \\nYou can calculate automatically the min and max value of the curve\" T \"first = nuke.Root().firstFrame()\\nlast = nuke.Root().lastFrame()\\n\\nframeRange = str(first) + \\\"-\\\" + str(last)\\n\\n\\nret = nuke.getFramesAndViews('insert frame range', frameRange)\\nif ret:\\n    frame_range = ret\\[0].split('-')\\n    \\n    min = max = nuke.thisNode()\\['input_range'].getValueAt(int(frame_range\\[0]))\\n    \\n    nuke.frame(int(frame_range\\[0]))\\n    \\n    for i in range(int(frame_range\\[0]), int(frame_range\\[1])+1):\\n        knob = nuke.thisNode()\\['input_range'].getValueAt(i)\\n        if (knob > max):\\n            max = knob\\n    \\n        if (knob < min):\\n            min = knob\\n    \\n    \\n    nuke.thisNode()\\['min_old'].setValue(min)\\n    nuke.thisNode()\\['max_old'].setValue(max)\" +STARTLINE}\n addUserKnob {7 min_old l min}\n min_old -5\n addUserKnob {7 max_old l max}\n max_old 6\n addUserKnob {26 new l \"NEW RANGE\"}\n addUserKnob {7 min_new l min}\n addUserKnob {7 max_new l max}\n max_new 1\n addUserKnob {26 \"\"}\n addUserKnob {7 output_range l \"<font color=orangered><i>output range\" -STARTLINE}\n output_range {{min_new+(((max_new-min_new)/(max_old-min_old))*(input_range-min_old))}}\n addUserKnob {1 expression_range l \"<font color=darkcyan>Expression\"}\n expression_range min_new+(((max_new-min_new)/(max_old-min_old))*(input-min_old))\n addUserKnob {22 generate l Generate -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('expression_range').setValue(\\\"min_new+(((max_new-min_new)/(max_old-min_old))*(input-min_old))\\\")\"}\n addUserKnob {20 smooth_curve l \"Smooth Curves\"}\n addUserKnob {26 message_2 l \"\" +STARTLINE T \"<i>Drag and drop your curve and apply the smooth.\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {14 input_smooth l \"<font color=springgreen><i>input\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {14 smooth l Smooth R 0 100}\n smooth 2\n addUserKnob {4 smooth_type l Type M {low high \"\" \"\"}}\n smooth_type high\n addUserKnob {26 \"\"}\n addUserKnob {14 output_smooth l \"<font color=orangered><i>output smooth\" R 0 100}\n output_smooth {{\"smooth_type==0?input_smooth.w.integrate(frame-1, frame+1) / (2*smooth.w):input_smooth.w.integrate(frame-smooth.w, frame+smooth.w) / (2*smooth.w)\"}}\n addUserKnob {1 expression_smooth l \"<font color=darkcyan>Expression\"}\n expression_smooth \"input.x.integrate(frame-smooth, frame+smooth) / (2*smooth)\"\n addUserKnob {22 generate_smooth l Generate -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('expression_smooth').setValue(\\\"input.x.integrate(frame-smooth, frame+smooth) / (2*smooth)\\\")\"}\n addUserKnob {20 modify l \"Modify Curves\"}\n addUserKnob {26 message_5 l \"\" +STARTLINE T \"<i>Change size, translation or offset of your curve\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {14 input_modify l \"<font color=springgreen><i>input\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {6 active_translate l \"\" +STARTLINE +STARTLINE}\n addUserKnob {26 position l TRANSLATE -STARTLINE T \" \"}\n addUserKnob {14 translate R 0 100}\n translate 1\n addUserKnob {26 \"\"}\n addUserKnob {6 active_scale l \"\" +STARTLINE +STARTLINE}\n addUserKnob {26 scale l SCALE -STARTLINE T \" \"}\n addUserKnob {14 scale_1 l scale R 0 100}\n scale_1 1\n addUserKnob {26 \"\"}\n addUserKnob {6 active_time l \"\" +STARTLINE +STARTLINE}\n addUserKnob {26 time l TIME -STARTLINE T \" \"}\n addUserKnob {3 delay l \"Time offset\"}\n delay 1\n addUserKnob {26 frames -STARTLINE T \" \"}\n addUserKnob {26 \"\"}\n addUserKnob {14 output_modify l \"<font color=orangered><i>output modify\" R 0 100}\n output_modify {{input_modify}}\n addUserKnob {1 expression_modify l \"<font color=darkcyan>Expression\"}\n expression_modify input\n addUserKnob {20 Fade}\n addUserKnob {26 fade_message l \"\" +STARTLINE T \"<i>Create the fade/dissolve from start frame till end frame. \\nYou can animate mix or another value from 0-1 or 1-0\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {4 fade_type l Type M {Linear \"Slow-in Slow-out\" \"Slow-in Linear-out\" \"Linear-in Slow-Out\"}}\n fade_type \"Slow-in Slow-out\"\n addUserKnob {4 fade_dissolve l \"fade from\" M {\"0 to 1\" \"1 to 0\"}}\n fade_dissolve \"1 to 0\"\n addUserKnob {26 \"\"}\n addUserKnob {26 fade_message_1 l \"\" +STARTLINE T \"<b>Start frame has to be less than End frame\"}\n addUserKnob {3 fadeStart l \"start Frame\"}\n addUserKnob {3 fadeEnd l \"end Frame\"}\n fadeEnd 5\n addUserKnob {26 \"\"}\n addUserKnob {7 out_fade l \"<font color=orangered><i>output fade\"}\n out_fade {{\"1-((sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2)\"}}\n addUserKnob {1 expression_fade l \"<font color=darkcyan>Expression\"}\n expression_fade \"1-((sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2)\"\n addUserKnob {20 reference_frame l \"Ref frame\"}\n addUserKnob {26 message_1 l \"\" +STARTLINE T \"<i>Change reference frame of your curve.\\nSet the input equal to 0 in the reference frame\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 input_ref l \"<font color=springgreen><i>input\"}\n addUserKnob {3 ref_frame l \"Reference frame\"}\n ref_frame 100\n addUserKnob {22 set_frame l \"set current to frame\" -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('ref_frame').setValue(nuke.frame())\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 output_ref l \"<font color=orangered><i>output ref\"}\n output_ref {{\"input_ref - input_ref(ref_frame)\"}}\n addUserKnob {1 expression_ref l \"<font color=darkcyan>Expression\"}\n expression_ref \"input - input(frame)\"\n addUserKnob {22 generate_3 l Generate -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('expression_ref').setValue(\\\"input - input(frame)\\\")\"}\n addUserKnob {20 percentage l Percentage}\n addUserKnob {26 message_4 l \"\" +STARTLINE T \"<i>Increase or reduce the curve with %\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 input_percentage l \"<font color=springgreen><i>input\"}\n addUserKnob {4 operation M {increase reduce \"\" \"\" \"\"}}\n addUserKnob {3 percentage_1 l \"       \"}\n percentage_1 10\n addUserKnob {26 percentage_2 l % -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {7 output_percentage l \"<font color=orangered><i>output percentage\"}\n output_percentage {{operation==0?input_percentage+(input_percentage*percentage_1)/100:input_percentage-(input_percentage*percentage_1)/100}}\n addUserKnob {1 expression_percentage l \"<font color=darkcyan>Expression\" t \"nk = nuke.thisNode()\\nnk.knob('expression_percentage').setValue(\\\"input+(input*percentage)/100\\\")\"}\n expression_percentage input+(input*percentage)/100\n addUserKnob {22 generate_1 l Generate -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('expression_percentage').setValue(\\\"input+(input*percentage)/100\\\")\"}\n addUserKnob {20 average_1 l Average}\n addUserKnob {26 message_3 l \"\" +STARTLINE T \"<i>Find the average number of the curve values\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 input_average l \"<font color=springgreen><i>input\"}\n addUserKnob {3 frame_in l \"frame range\"}\n frame_in 1\n addUserKnob {3 frame_out l \"\" -STARTLINE}\n frame_out 100\n addUserKnob {26 \"\"}\n addUserKnob {7 average l \"<font color=orangered><i>average\"}\n average {{\"input_average.integrate(frame_in, frame_out)/(frame_out-frame_in)\"}}\n addUserKnob {1 expression_average l \"<font color=darkcyan>Expression\"}\n expression_average \"input.integrate(frame_in, frame_out)/(frame_out-frame_in)\"\n addUserKnob {22 generate_2 l Generate -STARTLINE T \"nk = nuke.thisNode()\\nnk.knob('expression_average').setValue(\\\"input.integrate(frame_in, frame_out)/(frame_out-frame_in)\\\")\"}\n}\n Output {\n  inputs 0\n  name Output1\n  xpos 0\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AntiAliasingFilter.gizmo",
    "content": "Group {\n name AntialiasingFilter\n inputs 2\n tile_color 0xc17a4aff\n label \"(\\[value antialiasing])\"\n note_font \"Verdana Bold\"\n addUserKnob {20 Antialiasing}\n addUserKnob {41 channels T Matrix3.channels}\n addUserKnob {26 \"\"}\n addUserKnob {4 antialiasing t \"Select which filter you want to apply: you have 3 intensity for the antialiasing filter and other 3 for to tweak the aliasing and get the image sharper\" M {\"- aliasing high\" \"- aliasing medium\" \"- aliasing low\" none \"+ antialiasing low\" \"+ antialiasing medium\" \"+ antialiasing high\" \"\"}}\n antialiasing none\n addUserKnob {6 blackClamp l \"black clamp\" t \"Aliasing filter can give you negative values\" +STARTLINE}\n blackClamp true\n addUserKnob {6 whiteClamp l \"white clamp\" t \"Aliasing filter can give you values over 1 in the alpha channel\" -STARTLINE}\n addUserKnob {6 normalize l INVISIBLE -STARTLINE +INVISIBLE}\n normalize true\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannel l \"mask channel\" T Keymix1.maskChannel}\n addUserKnob {41 invertMask l invert -STARTLINE T Keymix1.invertMask}\n addUserKnob {26 \"\"}\n addUserKnob {41 mix T Keymix1.mix}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 email l \"\" +STARTLINE T \"<b><font color='SandyBrown'>Antialiasing filter  v2.0</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font> \"}\n}\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 10\n  box_height 10\n  box_fixed true\n  name Reformat1\n  xpos 207\n  ypos -40\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  xpos 207\n  ypos 40\n }\n Input {\n  inputs 0\n  name mask\n  xpos 55\n  ypos -187\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos 55\n  ypos 40\n }\n Dot {\n  name Dot8\n  xpos 88\n  ypos 432\n }\n Input {\n  inputs 0\n  name src\n  xpos -1152\n  ypos -390\n }\nset N66a8cd60 [stack 0]\n Dot {\n  name Dot3\n  xpos -1119\n  ypos -180\n }\nset N7f720840 [stack 0]\n Dot {\n  name Dot9\n  xpos -1005\n  ypos -180\n }\nset N66ce7a80 [stack 0]\n Dot {\n  name Dot10\n  xpos -858\n  ypos -180\n }\nset N66ce9ee0 [stack 0]\n Dot {\n  name Dot4\n  xpos -623\n  ypos -180\n }\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {1 1 1}\n      {1 1 1}\n      {1 1 1}\n    }\n  normalize true\n  name Matrix8\n  label \"ANTIALIASING HIGH\"\n  xpos -656\n  ypos -34\n }\npush $N66ce9ee0\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {1 2 1}\n      {2 4 2}\n      {1 2 1}\n    }\n  normalize true\n  name Matrix5\n  label \"ANTIALIASING MEDIUM\"\n  xpos -891\n  ypos -24\n }\npush $N66ce7a80\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {0 1 0}\n      {1 2 1}\n      {0 1 0}\n    }\n  normalize true\n  name Matrix6\n  label \"ANTIALIASING LOW\"\n  xpos -1038\n  ypos -26\n }\npush $N7f720840\npush $N7f720840\n Dot {\n  name Dot12\n  xpos -1309\n  ypos -180\n }\nset N66ce0a50 [stack 0]\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {0 -0.5 0}\n      {-0.5 3 -0.5}\n      {0 -0.5 0}\n    }\n  normalize {{parent.normalize}}\n  name Matrix10\n  label \"ALIASING LOW\"\n  xpos -1342\n  ypos -65\n }\npush $N66ce0a50\n Dot {\n  name Dot5\n  xpos -1464\n  ypos -180\n }\nset N66cc8b70 [stack 0]\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {0 -1 0}\n      {-1 5 -1}\n      {0 -1 0}\n    }\n  normalize true\n  name Matrix7\n  label \"ALIASING MEDIUM\"\n  xpos -1497\n  ypos -59\n }\npush $N66cc8b70\n Dot {\n  name Dot13\n  xpos -1699\n  ypos -180\n }\n Matrix {\n  channels {{{parent.Matrix3.channels}}}\n  matrix {\n      {-1 -1 -1}\n      {-1 9 -1}\n      {-1 -1 -1}\n    }\n  normalize {{parent.normalize}}\n  name Matrix4\n  label \"ALIASING HIGH\"\n  xpos -1732\n  ypos -58\n }\n Switch {\n  inputs 7\n  which {{parent.antialiasing}}\n  name Switch1\n  xpos -1152\n  ypos 244\n }\n Clamp {\n  channels {{{parent.Matrix3.channels}}}\n  minimum_enable {{parent.blackClamp}}\n  maximum_enable {{parent.whiteClamp}}\n  name Clamp1\n  xpos -1152\n  ypos 323\n }\n Dot {\n  name Dot2\n  xpos -1119\n  ypos 432\n }\npush $N66a8cd60\n Dot {\n  name Dot1\n  xpos -234\n  ypos -388\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos -267\n  ypos 426\n }\n Output {\n  name Output1\n  xpos -267\n  ypos 516\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"<b>sharp        .\"\n  note_font_size 20\n  xpos -1486\n  ypos -239\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"<b>antialiasing        .\"\n  note_font_size 20\n  xpos -925\n  ypos -226\n }\n Matrix {\n  inputs 0\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 1 0}\n      {0 0 0}\n    }\n  name Matrix3\n  xpos -1936\n  ypos -79\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AutoCropTool.gizmo",
    "content": "Group {\n name AutoCropTool\n tile_color 0xa57aaaff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 AutoCropTool}\n addUserKnob {41 channels l \"Channels to Analyse\" T CurveTool.channels}\n addUserKnob {26 \"\"}\n addUserKnob {26 preReformat l \"@b; Pre-Reformat Scale\" T \" \"}\n addUserKnob {41 scale l \"\" -STARTLINE T Reformat1.scale}\n addUserKnob {22 go l Go! T \"import time\\nn = nuke.thisNode()\\n#Define this node\\n\\nct1 = nuke.toNode(\\\"CurveTool\\\")\\n# Define curveTool nodes\\n\\nfirst_frame = int(nuke.Root()\\['first_frame'].getValue())\\nlast_frame = int(nuke.Root()\\['last_frame'].getValue())\\n# Grab first and last frame from root\\n\\np = nuke.Panel(\\\"Execute on FrameRange\\\")\\np.addSingleLineInput('First Frame', first_frame)\\np.addSingleLineInput('Last Frame', last_frame)\\np.addSingleLineInput('Increment', 1)\\nif p.show():\\n    \\n    # Create user input panel\\n    \\n    ff = int(p.value(\\\"First Frame\\\"))\\n    lf = int(p.value(\\\"Last Frame\\\"))\\n    i = int(p.value(\\\"Increment\\\"))\\n    # Define first, last, increment from user input panel\\n    \\n    with n:\\n        \\n        ct1\\[\\\"autocropdata\\\"].clearAnimated()\\n        # Clear any intensitydata from all CurveTool nodes\\n    \\n        def executeCT(first,last,inc):\\n            runMe = True\\n            while runMe == True:\\n                nuke.execute(ct1,first,last,inc)\\n                stop_event.set()\\n                runMe = False\\n                print('CurveTools done')\\n                break\\n            # Define CurveTool execution function\\n    \\n    \\n        global stop_event \\n        stop_event = threading.Event()\\n        threading.Thread(target=executeCT, kwargs=dict(first=ff,last=lf,inc=i) ).start() \\n        while not stop_event.is_set():\\n            time.sleep(0.1)\\n        # run CurveTools with threading\" +STARTLINE}\n addUserKnob {26 adjustbbox l \"@b;Adjust Final BBox\"}\n addUserKnob {6 blackOutside l BlackOutside +STARTLINE}\n addUserKnob {7 addPix l \"Add Pixels\" R 0 100}\n addPix 20\n addUserKnob {20 outbbox2 l \"Output BBox Data\" n 1}\n outbbox2 0\n addUserKnob {41 box T CropBBox_v02_.box}\n addUserKnob {41 bboxCenter l \"bbox Center\" T CropBBox_v02_.bboxCenter}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 Info}\n addUserKnob {26 creator l Creator: T \"<big><b>Tony Lyons\"}\n addUserKnob {26 desc l Name: T AutoCropTool}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -489\n  ypos 342\n }\n Dot {\n  name Dot159\n  xpos -455\n  ypos 404\n }\nset N1f815980 [stack 0]\n Reformat {\n  type scale\n  scale 0.05\n  pbb true\n  name Reformat1\n  xpos -629\n  ypos 400\n }\nset N1f864460 [stack 0]\n CurveTool {\n  operation \"Auto Crop\"\n  channels alpha\n  ROI {{\"min(bboxSize1.Crop6.box.x, bboxSize2.Crop6.box.x)\"} {\"min(bboxSize1.Crop6.box.y, bboxSize2.Crop6.box.y)\"} {\"max(bboxSize1.Crop6.box.r, bboxSize2.Crop6.box.r)\"} {\"max(bboxSize1.Crop6.box.t, bboxSize2.Crop6.box.t)\"}}\n  autocropdata {{curve} {curve} {curve} {curve}}\n  intensitydata {0 0 0 0}\n  name CurveTool\n  xpos -629\n  ypos 496\n }\n Crop {\n  box {{parent.CurveTool.autocropdata} {parent.CurveTool.autocropdata} {\"parent.CurveTool.autocropdata.r == 0 ? 1 : parent.CurveTool.autocropdata.r\"} {\"parent.CurveTool.autocropdata.t == 0 ? 1 : parent.CurveTool.autocropdata.t\"}}\n  name Crop29\n  xpos -629\n  ypos 534\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Reformat {\n  type scale\n  scale {{1/parent.Reformat1.scale}}\n  pbb true\n  name Reformat6\n  xpos -629\n  ypos 560\n }\n Group {\n  name CropBBox_v02_\n  tile_color 0xa57aaaff\n  xpos -629\n  ypos 586\n  lock_connections {{curve x1000 0}}\n  addUserKnob {20 User}\n  addUserKnob {26 info l \"\" +STARTLINE T \"crop node with width/height set to the inputs width/height, with black outside checked off\"}\n  addUserKnob {4 type l Type M {\"To Format\" \"To BBox\"}}\n  type \"To BBox\"\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {20 inputBbox n 1}\n  addUserKnob {41 box T Crop6.box}\n  addUserKnob {14 bboxCenter l \"bbox Center\" R 0 100}\n  bboxCenter {{\"(this.Crop6.box.r-this.Crop6.box.x)/2 + this.Crop6.box.x\"} {\"(this.Crop6.box.t-this.Crop6.box.y)/2 + this.Crop6.box.y\"}}\n  addUserKnob {20 endGroup n -1}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 261\n   ypos 388\n  }\n  Crop {\n   box {{\"type == 0 ? 0 : input.bbox.x\"} {\"type == 0 ? 0 : input.bbox.y\"} {\"type == 0 ? input.width : input.bbox.r\"} {\"type == 0 ? input.height : input.bbox.t\"}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 466\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Output {\n   name Output1\n   xpos 261\n   ypos 583\n  }\n end_group\n AdjBBox {\n  numpixels {{parent.addPix}}\n  name AdjBBox6\n  xpos -629\n  ypos 612\n }\npush $N1f815980\n CopyBBox {\n  inputs 2\n  name CopyBBox13\n  xpos -489\n  ypos 612\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -489\n  ypos 636\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos -489\n  ypos 712\n }\npush $N1f864460\n Group {\n  name bboxSize1\n  tile_color 0xa57aaaff\n  xpos -780\n  ypos 400\n  lock_connections {{curve x1000 0}}\n  addUserKnob {20 User}\n  addUserKnob {26 info l \"\" +STARTLINE T \"crop node with width/height set to the inputs width/height, with black outside checked off\"}\n  addUserKnob {4 type l Type M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {20 inputBbox n 1}\n  addUserKnob {41 box T Crop6.box}\n  addUserKnob {14 bboxCenter l \"bbox Center\" R 0 100}\n  bboxCenter {{\"(this.Crop6.box.r-this.Crop6.box.x)/2 + this.Crop6.box.x\"} {\"(this.Crop6.box.t-this.Crop6.box.y)/2 + this.Crop6.box.y\"}}\n  addUserKnob {20 endGroup n -1}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 261\n   ypos 388\n  }\n  Crop {\n   box {{\"type == 0 ? 0 : input.bbox.x\"} {\"type == 0 ? 0 : input.bbox.y\"} {\"type == 0 ? input.width : input.bbox.r\"} {\"type == 0 ? input.height : input.bbox.t\"}}\n   intersect true\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 466\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Output {\n   name Output1\n   xpos 261\n   ypos 583\n  }\n end_group\npush $N1f864460\n Group {\n  name bboxSize2\n  tile_color 0xa57aaaff\n  xpos -763\n  ypos 501\n  lock_connections {{curve x1000 0}}\n  addUserKnob {20 User}\n  addUserKnob {26 info l \"\" +STARTLINE T \"crop node with width/height set to the inputs width/height, with black outside checked off\"}\n  addUserKnob {4 type l Type M {\"To Format\" \"To BBox\"}}\n  type \"To BBox\"\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {20 inputBbox n 1}\n  addUserKnob {20 endGroup n -1}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 261\n   ypos 388\n  }\n  Crop {\n   box {{\"type == 0 ? 0 : input.bbox.x\"} {\"type == 0 ? 0 : input.bbox.y\"} {\"type == 0 ? input.width : input.bbox.r\"} {\"type == 0 ? input.height : input.bbox.t\"}}\n   intersect true\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 466\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Output {\n   name Output1\n   xpos 261\n   ypos 583\n  }\n end_group\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AutoFlare2.gizmo",
    "content": "Group {\n name AutoFlare\n selected true\n lock_connections true\n addUserKnob {20 User l Controls}\n addUserKnob {41 effectOnly l \"effect only\" T _INPUT_CTRL.effectOnly}\n addUserKnob {41 viewSelectedHighlights l \"view highlights selection\" T _INPUT_CTRL.viewSelectedHighlights}\n addUserKnob {41 brightspot T _INPUT_CTRL.brightspot}\n addUserKnob {41 threshold T _INPUT_CTRL.threshold}\n addUserKnob {41 gamma T _INPUT_CTRL.gamma}\n addUserKnob {41 clampBright l \"clamp to brightspot\" T _INPUT_CTRL.clampBright}\n addUserKnob {41 quality T _INPUT_CTRL.quality}\n addUserKnob {26 \"\"}\n addUserKnob {41 overallMult l \"overall mult\" T _INPUT_CTRL.overallMult}\n addUserKnob {41 overallLensScale l \"overall lens scale\" T _INPUT_CTRL.overallLensScale}\n addUserKnob {41 overallLensDistance l \"overall lens distance\" T _INPUT_CTRL.overallLensDistance}\n addUserKnob {41 overallSaturation l \"overall saturation\" T _INPUT_CTRL.overallSaturation}\n addUserKnob {41 sourceCol l \"source color\" T _INPUT_CTRL.sourceCol}\n addUserKnob {41 sourceSat l \"source sat\" T _INPUT_CTRL.sourceSat}\n addUserKnob {26 \"\"}\n addUserKnob {41 overallGrainOpacity l \"overall grain opacity\" T _INPUT_CTRL.overallGrainOpacity}\n addUserKnob {41 overallGrainSizeMult l \"grain size mult\" T _INPUT_CTRL.overallGrainSizeMult}\n addUserKnob {41 overallGrainGainMult l \"grain gain mult\" T _INPUT_CTRL.overallGrainGainMult}\n addUserKnob {26 \"\"}\n addUserKnob {41 reflectionsOpacity l \"reflections opacity\" T _INPUT_CTRL.reflectionsOpacity}\n addUserKnob {41 reflectionsRotOffset l \"reflections rot offset\" T _INPUT_CTRL.reflectionsRotOffset}\n addUserKnob {41 reflectionsBlurAdd l \"reflections add blur\" T _INPUT_CTRL.reflectionsBlurAdd}\n addUserKnob {41 reflectionsWhitepointMult l \"refl whitepoint mult\" T _INPUT_CTRL.reflectionsWhitepointMult}\n addUserKnob {41 reflectionsGammaMult l \"refl gamma mult\" T _INPUT_CTRL.reflectionsGammaMult}\n addUserKnob {26 \"\"}\n addUserKnob {41 vignetteActive l \"vignette source\" T _INPUT_CTRL.vignetteActive}\n addUserKnob {41 vignetteScale l scale T _INPUT_CTRL.vignetteScale}\n addUserKnob {41 vignetteDarkness l darkness T _INPUT_CTRL.vignetteDarkness}\n addUserKnob {20 Presets}\n addUserKnob {41 preset_01 l \"Pink on Blue\" T _INPUT_CTRL.preset_01}\n addUserKnob {41 preset_02 l \"Fat Orange\" T _INPUT_CTRL.preset_02}\n addUserKnob {41 preset_03 l \"Classic Orange Blue\" T _INPUT_CTRL.preset_03}\n addUserKnob {41 preset_04 l \"Giant Colorful\" T _INPUT_CTRL.preset_04}\n addUserKnob {41 preset_05 l \"Thin and Wide\" T _INPUT_CTRL.preset_05}\n addUserKnob {41 preset_06 l \"Hexa Green Orange\" T _INPUT_CTRL.preset_06}\n addUserKnob {20 Lenses}\n addUserKnob {41 showNumbers l \"show numbers on lenses\" T _INPUT_CTRL.showNumbers}\n addUserKnob {26 \"\"}\n addUserKnob {20 Lens1GRP l \"lens 01\" n 1}\n Lens1GRP 0\n addUserKnob {41 lens1Active l active T _INPUT_CTRL.lens1Active}\n addUserKnob {41 lens1Size l size T _INPUT_CTRL.lens1Size}\n addUserKnob {41 lens1Col l color T _INPUT_CTRL.lens1Col}\n addUserKnob {41 lens1Blur l blur T _INPUT_CTRL.lens1Blur}\n addUserKnob {41 lens1AxisPos l \"axis pos\" T _INPUT_CTRL.lens1AxisPos}\n addUserKnob {41 lens1Polygon l polygon T _INPUT_CTRL.lens1Polygon}\n addUserKnob {41 lens1Diaphragm l diaphragm T _INPUT_CTRL.lens1Diaphragm}\n addUserKnob {41 lens1DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens1DiaphRot}\n addUserKnob {41 lens1grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens1grainOpacity}\n addUserKnob {41 lens1grainSize l \"grain size\" T _INPUT_CTRL.lens1grainSize}\n addUserKnob {41 lens1grainGain l \"grain gain\" T _INPUT_CTRL.lens1grainGain}\n addUserKnob {41 lens1reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens1reflectionOpacity}\n addUserKnob {41 lens1reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens1reflectionRotation}\n addUserKnob {41 lens1reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens1reflWhitepoint}\n addUserKnob {41 lens1reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens1reflectionGamma}\n addUserKnob {41 lens1reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens1reflectionBlur}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens2GRP l \"lens 02\" n 1}\n lens2GRP 0\n addUserKnob {41 lens2Active l active T _INPUT_CTRL.lens2Active}\n addUserKnob {41 lens2Size l size T _INPUT_CTRL.lens2Size}\n addUserKnob {41 lens2Col l color T _INPUT_CTRL.lens2Col}\n addUserKnob {41 lens2Blur l blur T _INPUT_CTRL.lens2Blur}\n addUserKnob {41 lens2AxisPos l \"axis pos\" T _INPUT_CTRL.lens2AxisPos}\n addUserKnob {41 lens2Polygon l polygon T _INPUT_CTRL.lens2Polygon}\n addUserKnob {41 lens2Diaphragm l diaphragm T _INPUT_CTRL.lens2Diaphragm}\n addUserKnob {41 lens2DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens2DiaphRot}\n addUserKnob {41 lens2grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens2grainOpacity}\n addUserKnob {41 lens2grainSize l \"grain size\" T _INPUT_CTRL.lens2grainSize}\n addUserKnob {41 lens2grainGain l \"grain gain\" T _INPUT_CTRL.lens2grainGain}\n addUserKnob {41 lens2reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens2reflectionOpacity}\n addUserKnob {41 lens2reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens2reflectionRotation}\n addUserKnob {41 lens2reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens2reflWhitepoint}\n addUserKnob {41 lens2reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens2reflectionGamma}\n addUserKnob {41 lens2reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens2reflectionBlur}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens3GRP l \"lens 03\" n 1}\n lens3GRP 0\n addUserKnob {41 lens3Active l active T _INPUT_CTRL.lens3Active}\n addUserKnob {41 lens3Size l size T _INPUT_CTRL.lens3Size}\n addUserKnob {41 lens3Col l color T _INPUT_CTRL.lens3Col}\n addUserKnob {41 lens3Blur l blur T _INPUT_CTRL.lens3Blur}\n addUserKnob {41 lens3AxisPos l \"axis pos\" T _INPUT_CTRL.lens3AxisPos}\n addUserKnob {41 lens3Polygon l polygon T _INPUT_CTRL.lens3Polygon}\n addUserKnob {41 lens3Diaphragm l diaphragm T _INPUT_CTRL.lens3Diaphragm}\n addUserKnob {41 lens3DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens3DiaphRot}\n addUserKnob {41 lens3grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens3grainOpacity}\n addUserKnob {41 lens3grainSize l \"grain size\" T _INPUT_CTRL.lens3grainSize}\n addUserKnob {41 lens3grainGain l \"grain gain\" T _INPUT_CTRL.lens3grainGain}\n addUserKnob {41 lens3reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens3reflectionOpacity}\n addUserKnob {41 lens3reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens3reflectionRotation}\n addUserKnob {41 lens3reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens3reflWhitepoint}\n addUserKnob {41 lens3reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens3reflectionGamma}\n addUserKnob {41 lens3reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens3reflectionBlur}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens4GRP l \"lens 04\" n 1}\n lens4GRP 0\n addUserKnob {41 lens4Active l active T _INPUT_CTRL.lens4Active}\n addUserKnob {41 lens4Size l size T _INPUT_CTRL.lens4Size}\n addUserKnob {41 lens4Col l color T _INPUT_CTRL.lens4Col}\n addUserKnob {41 lens4Blur l blur T _INPUT_CTRL.lens4Blur}\n addUserKnob {41 lens4AxisPos l \"axis pos\" T _INPUT_CTRL.lens4AxisPos}\n addUserKnob {41 lens4Polygon l polygon T _INPUT_CTRL.lens4Polygon}\n addUserKnob {41 lens4Diaphragm l diaphragm T _INPUT_CTRL.lens4Diaphragm}\n addUserKnob {41 lens4DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens4DiaphRot}\n addUserKnob {41 lens4grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens4grainOpacity}\n addUserKnob {41 lens4grainSize l \"grain size\" T _INPUT_CTRL.lens4grainSize}\n addUserKnob {41 lens4grainGain l \"grain gain\" T _INPUT_CTRL.lens4grainGain}\n addUserKnob {41 lens4reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens4reflectionOpacity}\n addUserKnob {41 lens4reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens4reflectionRotation}\n addUserKnob {41 lens4reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens4reflWhitepoint}\n addUserKnob {41 lens4reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens4reflectionGamma}\n addUserKnob {41 lens4reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens4reflectionBlur}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens5GRP l \"lens 05\" n 1}\n lens5GRP 0\n addUserKnob {41 lens5Active l active T _INPUT_CTRL.lens5Active}\n addUserKnob {41 lens5Size l size T _INPUT_CTRL.lens5Size}\n addUserKnob {41 lens5Col l color T _INPUT_CTRL.lens5Col}\n addUserKnob {41 lens5Blur l blur T _INPUT_CTRL.lens5Blur}\n addUserKnob {41 lens5AxisPos l \"axis pos\" T _INPUT_CTRL.lens5AxisPos}\n addUserKnob {41 lens5Polygon l polygon T _INPUT_CTRL.lens5Polygon}\n addUserKnob {41 lens5Diaphragm l diaphragm T _INPUT_CTRL.lens5Diaphragm}\n addUserKnob {41 lens5DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens5DiaphRot}\n addUserKnob {41 lens5grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens5grainOpacity}\n addUserKnob {41 lens5grainSize l \"grain size\" T _INPUT_CTRL.lens5grainSize}\n addUserKnob {41 lens5grainGain l \"grain gain\" T _INPUT_CTRL.lens5grainGain}\n addUserKnob {41 lens5reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens5reflectionOpacity}\n addUserKnob {41 lens5reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens5reflectionRotation}\n addUserKnob {41 lens5reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens5reflWhitepoint}\n addUserKnob {41 lens5reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens5reflectionGamma}\n addUserKnob {41 lens5reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens5reflectionBlur}\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens6GRP l \"lens 06\" n 1}\n lens6GRP 0\n addUserKnob {41 lens6Active l active T _INPUT_CTRL.lens6Active}\n addUserKnob {41 lens6Size l size T _INPUT_CTRL.lens6Size}\n addUserKnob {41 lens6Col l color T _INPUT_CTRL.lens6Col}\n addUserKnob {41 lens6Blur l blur T _INPUT_CTRL.lens6Blur}\n addUserKnob {41 lens6AxisPos l \"axis pos\" T _INPUT_CTRL.lens6AxisPos}\n addUserKnob {41 lens6Polygon l polygon T _INPUT_CTRL.lens6Polygon}\n addUserKnob {41 lens6Diaphragm l diaphragm T _INPUT_CTRL.lens6Diaphragm}\n addUserKnob {41 lens6DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens6DiaphRot}\n addUserKnob {41 lens6grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens6grainOpacity}\n addUserKnob {41 lens6grainSize l \"grain size\" T _INPUT_CTRL.lens6grainSize}\n addUserKnob {41 lens6grainGain l \"grain gain\" T _INPUT_CTRL.lens6grainGain}\n addUserKnob {41 lens6reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens6reflectionOpacity}\n addUserKnob {41 lens6reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens6reflectionRotation}\n addUserKnob {41 lens6reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens6reflWhitepoint}\n addUserKnob {41 lens6reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens6reflectionGamma}\n addUserKnob {41 lens6reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens6reflectionBlur}\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens7GRP l \"lens 07\" n 1}\n lens7GRP 0\n addUserKnob {41 lens7Active l active T _INPUT_CTRL.lens7Active}\n addUserKnob {41 lens7Size l size T _INPUT_CTRL.lens7Size}\n addUserKnob {41 lens7Col l color T _INPUT_CTRL.lens7Col}\n addUserKnob {41 lens7Blur l blur T _INPUT_CTRL.lens7Blur}\n addUserKnob {41 lens7AxisPos l \"axis pos\" T _INPUT_CTRL.lens7AxisPos}\n addUserKnob {41 lens7Polygon l polygon T _INPUT_CTRL.lens7Polygon}\n addUserKnob {41 lens7Diaphragm l diaphragm T _INPUT_CTRL.lens7Diaphragm}\n addUserKnob {41 lens7DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens7DiaphRot}\n addUserKnob {41 lens7grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens7grainOpacity}\n addUserKnob {41 lens7grainSize l \"grain size\" T _INPUT_CTRL.lens7grainSize}\n addUserKnob {41 lens7grainGain l \"grain gain\" T _INPUT_CTRL.lens7grainGain}\n addUserKnob {41 lens7reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens7reflectionOpacity}\n addUserKnob {41 lens7reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens7reflectionRotation}\n addUserKnob {41 lens7reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens7reflWhitepoint}\n addUserKnob {41 lens7reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens7reflectionGamma}\n addUserKnob {41 lens7reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens7reflectionBlur}\n addUserKnob {20 endGroup_6 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens8GRP l \"lens 08\" n 1}\n lens8GRP 0\n addUserKnob {41 lens8Active l active T _INPUT_CTRL.lens8Active}\n addUserKnob {41 lens8Size l size T _INPUT_CTRL.lens8Size}\n addUserKnob {41 lens8Col l color T _INPUT_CTRL.lens8Col}\n addUserKnob {41 lens8Blur l blur T _INPUT_CTRL.lens8Blur}\n addUserKnob {41 lens8AxisPos l \"axis pos\" T _INPUT_CTRL.lens8AxisPos}\n addUserKnob {41 lens8Polygon l polygon T _INPUT_CTRL.lens8Polygon}\n addUserKnob {41 lens8Diaphragm l diaphragm T _INPUT_CTRL.lens8Diaphragm}\n addUserKnob {41 lens8DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens8DiaphRot}\n addUserKnob {41 lens8grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens8grainOpacity}\n addUserKnob {41 lens8grainSize l \"grain size\" T _INPUT_CTRL.lens8grainSize}\n addUserKnob {41 lens8grainGain l \"grain gain\" T _INPUT_CTRL.lens8grainGain}\n addUserKnob {41 lens8reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens8reflectionOpacity}\n addUserKnob {41 lens8reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens8reflectionRotation}\n addUserKnob {41 lens8reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens8reflWhitepoint}\n addUserKnob {41 lens8reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens8reflectionGamma}\n addUserKnob {41 lens8reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens8reflectionBlur}\n addUserKnob {20 endGroup_7 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens9GRP l \"lens 09\" n 1}\n lens9GRP 0\n addUserKnob {41 lens9Active l active T _INPUT_CTRL.lens9Active}\n addUserKnob {41 lens9Size l size T _INPUT_CTRL.lens9Size}\n addUserKnob {41 lens9Col l color T _INPUT_CTRL.lens9Col}\n addUserKnob {41 lens9Blur l blur T _INPUT_CTRL.lens9Blur}\n addUserKnob {41 lens9AxisPos l \"axis pos\" T _INPUT_CTRL.lens9AxisPos}\n addUserKnob {41 lens9Polygon l polygon T _INPUT_CTRL.lens9Polygon}\n addUserKnob {41 lens9Diaphragm l diaphragm T _INPUT_CTRL.lens9Diaphragm}\n addUserKnob {41 lens9DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens9DiaphRot}\n addUserKnob {41 lens9grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens9grainOpacity}\n addUserKnob {41 lens9grainSize l \"grain size\" T _INPUT_CTRL.lens9grainSize}\n addUserKnob {41 lens9grainGain l \"grain gain\" T _INPUT_CTRL.lens9grainGain}\n addUserKnob {41 lens9reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens9reflectionOpacity}\n addUserKnob {41 lens9reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens9reflectionRotation}\n addUserKnob {41 lens9reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens9reflWhitepoint}\n addUserKnob {41 lens9reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens9reflectionGamma}\n addUserKnob {41 lens9reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens9reflectionBlur}\n addUserKnob {20 endGroup_8 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens10GRP l \"lens 10\" n 1}\n lens10GRP 0\n addUserKnob {41 lens10Active l active T _INPUT_CTRL.lens10Active}\n addUserKnob {41 lens10Size l size T _INPUT_CTRL.lens10Size}\n addUserKnob {41 lens10Col l color T _INPUT_CTRL.lens10Col}\n addUserKnob {41 lens10Blur l blur T _INPUT_CTRL.lens10Blur}\n addUserKnob {41 lens10AxisPos l \"axis pos\" T _INPUT_CTRL.lens10AxisPos}\n addUserKnob {41 lens10Polygon l polygon T _INPUT_CTRL.lens10Polygon}\n addUserKnob {41 lens10Diaphragm l diaphragm T _INPUT_CTRL.lens10Diaphragm}\n addUserKnob {41 lens10DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens10DiaphRot}\n addUserKnob {41 lens10grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens10grainOpacity}\n addUserKnob {41 lens10grainSize l \"grain size\" T _INPUT_CTRL.lens10grainSize}\n addUserKnob {41 lens10grainGain l \"grain gain\" T _INPUT_CTRL.lens10grainGain}\n addUserKnob {41 lens10reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens10reflectionOpacity}\n addUserKnob {41 lens10reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens10reflectionRotation}\n addUserKnob {41 lens10reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens10reflWhitepoint}\n addUserKnob {41 lens10reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens10reflectionGamma}\n addUserKnob {41 lens10reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens10reflectionBlur}\n addUserKnob {20 endGroup_9 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens11GRP l \"lens 11\" n 1}\n lens11GRP 0\n addUserKnob {41 lens11Active l active T _INPUT_CTRL.lens11Active}\n addUserKnob {41 lens11Size l size T _INPUT_CTRL.lens11Size}\n addUserKnob {41 lens11Col l color T _INPUT_CTRL.lens11Col}\n addUserKnob {41 lens11Blur l blur T _INPUT_CTRL.lens11Blur}\n addUserKnob {41 lens11AxisPos l \"axis pos\" T _INPUT_CTRL.lens11AxisPos}\n addUserKnob {41 lens11Polygon l polygon T _INPUT_CTRL.lens11Polygon}\n addUserKnob {41 lens11Diaphragm l diaphragm T _INPUT_CTRL.lens11Diaphragm}\n addUserKnob {41 lens11DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens11DiaphRot}\n addUserKnob {41 lens11grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens11grainOpacity}\n addUserKnob {41 lens11grainSize l \"grain size\" T _INPUT_CTRL.lens11grainSize}\n addUserKnob {41 lens11grainGain l \"grain gain\" T _INPUT_CTRL.lens11grainGain}\n addUserKnob {41 lens11reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens11reflectionOpacity}\n addUserKnob {41 lens11reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens11reflectionRotation}\n addUserKnob {41 lens11reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens11reflWhitepoint}\n addUserKnob {41 lens11reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens11reflectionGamma}\n addUserKnob {41 lens11reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens11reflectionBlur}\n addUserKnob {20 endGroup_10 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens12GRP l \"lens 12\" n 1}\n lens12GRP 0\n addUserKnob {41 lens12Active l active T _INPUT_CTRL.lens12Active}\n addUserKnob {41 lens12Size l size T _INPUT_CTRL.lens12Size}\n addUserKnob {41 lens12Col l color T _INPUT_CTRL.lens12Col}\n addUserKnob {41 lens12Blur l blur T _INPUT_CTRL.lens12Blur}\n addUserKnob {41 lens12AxisPos l \"axis pos\" T _INPUT_CTRL.lens12AxisPos}\n addUserKnob {41 lens12Polygon l polygon T _INPUT_CTRL.lens12Polygon}\n addUserKnob {41 lens12Diaphragm l diaphragm T _INPUT_CTRL.lens12Diaphragm}\n addUserKnob {41 lens12DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens12DiaphRot}\n addUserKnob {41 lens12grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens12grainOpacity}\n addUserKnob {41 lens12grainSize l \"grain size\" T _INPUT_CTRL.lens12grainSize}\n addUserKnob {41 lens12grainGain l \"grain gain\" T _INPUT_CTRL.lens12grainGain}\n addUserKnob {41 lens12reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens12reflectionOpacity}\n addUserKnob {41 lens12reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens12reflectionRotation}\n addUserKnob {41 lens12reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens12reflWhitepoint}\n addUserKnob {41 lens12reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens12reflectionGamma}\n addUserKnob {41 lens12reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens12reflectionBlur}\n addUserKnob {20 endGroup_11 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 len13GRP l \"lens 13\" n 1}\n len13GRP 0\n addUserKnob {41 lens13Active l active T _INPUT_CTRL.lens13Active}\n addUserKnob {41 lens13Size l size T _INPUT_CTRL.lens13Size}\n addUserKnob {41 lens13Col l color T _INPUT_CTRL.lens13Col}\n addUserKnob {41 lens13Blur l blur T _INPUT_CTRL.lens13Blur}\n addUserKnob {41 lens13AxisPos l \"axis pos\" T _INPUT_CTRL.lens13AxisPos}\n addUserKnob {41 lens13Polygon l polygon T _INPUT_CTRL.lens13Polygon}\n addUserKnob {41 lens13Diaphragm l diaphragm T _INPUT_CTRL.lens13Diaphragm}\n addUserKnob {41 lens13DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens13DiaphRot}\n addUserKnob {41 lens13grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens13grainOpacity}\n addUserKnob {41 lens13grainSize l \"grain size\" T _INPUT_CTRL.lens13grainSize}\n addUserKnob {41 lens13grainGain l \"grain gain\" T _INPUT_CTRL.lens13grainGain}\n addUserKnob {41 lens13reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens13reflectionOpacity}\n addUserKnob {41 lens13reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens13reflectionRotation}\n addUserKnob {41 lens13reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens13reflWhitepoint}\n addUserKnob {41 lens13reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens13reflectionGamma}\n addUserKnob {41 lens13reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens13reflectionBlur}\n addUserKnob {20 endGroup_12 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens14GRP l \"lens 14\" n 1}\n lens14GRP 0\n addUserKnob {41 lens14Active l active T _INPUT_CTRL.lens14Active}\n addUserKnob {41 lens14Size l size T _INPUT_CTRL.lens14Size}\n addUserKnob {41 lens14Col l color T _INPUT_CTRL.lens14Col}\n addUserKnob {41 lens14Blur l blur T _INPUT_CTRL.lens14Blur}\n addUserKnob {41 lens14AxisPos l \"axis pos\" T _INPUT_CTRL.lens14AxisPos}\n addUserKnob {41 lens14Polygon l polygon T _INPUT_CTRL.lens14Polygon}\n addUserKnob {41 lens14Diaphragm l diaphragm T _INPUT_CTRL.lens14Diaphragm}\n addUserKnob {41 lens14DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens14DiaphRot}\n addUserKnob {41 lens14grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens14grainOpacity}\n addUserKnob {41 lens14grainSize l \"grain size\" T _INPUT_CTRL.lens14grainSize}\n addUserKnob {41 lens14grainGain l \"grain gain\" T _INPUT_CTRL.lens14grainGain}\n addUserKnob {41 lens14reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens14reflectionOpacity}\n addUserKnob {41 lens14reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens14reflectionRotation}\n addUserKnob {41 lens14reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens14reflWhitepoint}\n addUserKnob {41 lens14reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens14reflectionGamma}\n addUserKnob {41 lens14reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens14reflectionBlur}\n addUserKnob {20 endGroup_13 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens15GRP l \"lens 15\" n 1}\n lens15GRP 0\n addUserKnob {41 lens15Active l active T _INPUT_CTRL.lens15Active}\n addUserKnob {41 lens15Size l size T _INPUT_CTRL.lens15Size}\n addUserKnob {41 lens15Col l color T _INPUT_CTRL.lens15Col}\n addUserKnob {41 lens15Blur l blur T _INPUT_CTRL.lens15Blur}\n addUserKnob {41 lens15AxisPos l \"axis pos\" T _INPUT_CTRL.lens15AxisPos}\n addUserKnob {41 lens15Polygon l polygon T _INPUT_CTRL.lens15Polygon}\n addUserKnob {41 lens15Diaphragm l diaphragm T _INPUT_CTRL.lens15Diaphragm}\n addUserKnob {41 lens15DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens15DiaphRot}\n addUserKnob {41 lens15grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens15grainOpacity}\n addUserKnob {41 lens15grainSize l \"grain size\" T _INPUT_CTRL.lens15grainSize}\n addUserKnob {41 lens15grainGain l \"grain gain\" T _INPUT_CTRL.lens15grainGain}\n addUserKnob {41 lens15reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens15reflectionOpacity}\n addUserKnob {41 lens15reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens15reflectionRotation}\n addUserKnob {41 lens15reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens15reflWhitepoint}\n addUserKnob {41 lens15reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens15reflectionGamma}\n addUserKnob {41 lens15reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens15reflectionBlur}\n addUserKnob {20 endGroup_14 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens16GRP l \"lens 16\" n 1}\n lens16GRP 0\n addUserKnob {41 lens16Active l active T _INPUT_CTRL.lens16Active}\n addUserKnob {41 lens16Size l size T _INPUT_CTRL.lens16Size}\n addUserKnob {41 lens16Col l color T _INPUT_CTRL.lens16Col}\n addUserKnob {41 lens16Blur l blur T _INPUT_CTRL.lens16Blur}\n addUserKnob {41 lens16AxisPos l \"axis pos\" T _INPUT_CTRL.lens16AxisPos}\n addUserKnob {41 lens16Polygon l polygon T _INPUT_CTRL.lens16Polygon}\n addUserKnob {41 lens16Diaphragm l diaphragm T _INPUT_CTRL.lens16Diaphragm}\n addUserKnob {41 lens16DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens16DiaphRot}\n addUserKnob {41 lens16grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens16grainOpacity}\n addUserKnob {41 lens16grainSize l \"grain size\" T _INPUT_CTRL.lens16grainSize}\n addUserKnob {41 lens16grainGain l \"grain gain\" T _INPUT_CTRL.lens16grainGain}\n addUserKnob {41 lens16reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens16reflectionOpacity}\n addUserKnob {41 lens16reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens16reflectionRotation}\n addUserKnob {41 lens16reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens16reflWhitepoint}\n addUserKnob {41 lens16reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens16reflectionGamma}\n addUserKnob {41 lens16reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens16reflectionBlur}\n addUserKnob {20 endGroup_15 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens17GRP l \"lens 17\" n 1}\n lens17GRP 0\n addUserKnob {41 lens17Active l active T _INPUT_CTRL.lens17Active}\n addUserKnob {41 lens17Size l size T _INPUT_CTRL.lens17Size}\n addUserKnob {41 lens17Col l color T _INPUT_CTRL.lens17Col}\n addUserKnob {41 lens17Blur l blur T _INPUT_CTRL.lens17Blur}\n addUserKnob {41 lens17AxisPos l \"axis pos\" T _INPUT_CTRL.lens17AxisPos}\n addUserKnob {41 lens17Polygon l polygon T _INPUT_CTRL.lens17Polygon}\n addUserKnob {41 lens17Diaphragm l diaphragm T _INPUT_CTRL.lens17Diaphragm}\n addUserKnob {41 lens17DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens17DiaphRot}\n addUserKnob {41 lens17grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens17grainOpacity}\n addUserKnob {41 lens17grainSize l \"grain size\" T _INPUT_CTRL.lens17grainSize}\n addUserKnob {41 lens17grainGain l \"grain gain\" T _INPUT_CTRL.lens17grainGain}\n addUserKnob {41 lens17reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens17reflectionOpacity}\n addUserKnob {41 lens17reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens17reflectionRotation}\n addUserKnob {41 lens17reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens17reflWhitepoint}\n addUserKnob {41 lens17reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens17reflectionGamma}\n addUserKnob {41 lens17reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens17reflectionBlur}\n addUserKnob {20 endGroup_16 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens18GRP l \"lens 18\" n 1}\n lens18GRP 0\n addUserKnob {41 lens18Active l active T _INPUT_CTRL.lens18Active}\n addUserKnob {41 lens18Size l size T _INPUT_CTRL.lens18Size}\n addUserKnob {41 lens18Col l color T _INPUT_CTRL.lens18Col}\n addUserKnob {41 lens18Blur l blur T _INPUT_CTRL.lens18Blur}\n addUserKnob {41 lens18AxisPos l \"axis pos\" T _INPUT_CTRL.lens18AxisPos}\n addUserKnob {41 lens18Polygon l polygon T _INPUT_CTRL.lens18Polygon}\n addUserKnob {41 lens18Diaphragm l diaphragm T _INPUT_CTRL.lens18Diaphragm}\n addUserKnob {41 lens18DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens18DiaphRot}\n addUserKnob {41 lens18grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens18grainOpacity}\n addUserKnob {41 lens18grainSize l \"grain size\" T _INPUT_CTRL.lens18grainSize}\n addUserKnob {41 lens18grainGain l \"grain gain\" T _INPUT_CTRL.lens18grainGain}\n addUserKnob {41 lens18reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens18reflectionOpacity}\n addUserKnob {41 lens18reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens18reflectionRotation}\n addUserKnob {41 lens18reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens18reflWhitepoint}\n addUserKnob {41 lens18reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens18reflectionGamma}\n addUserKnob {41 lens18reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens18reflectionBlur}\n addUserKnob {20 endGroup_17 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens19GRP l \"lens 19\" n 1}\n lens19GRP 0\n addUserKnob {41 lens19Active l active T _INPUT_CTRL.lens19Active}\n addUserKnob {41 lens19Size l size T _INPUT_CTRL.lens19Size}\n addUserKnob {41 lens19Col l color T _INPUT_CTRL.lens19Col}\n addUserKnob {41 lens19Blur l blur T _INPUT_CTRL.lens19Blur}\n addUserKnob {41 lens19AxisPos l \"axis pos\" T _INPUT_CTRL.lens19AxisPos}\n addUserKnob {41 lens19Polygon l polygon T _INPUT_CTRL.lens19Polygon}\n addUserKnob {41 lens19Diaphragm l diaphragm T _INPUT_CTRL.lens19Diaphragm}\n addUserKnob {41 lens19DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens19DiaphRot}\n addUserKnob {41 lens19grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens19grainOpacity}\n addUserKnob {41 lens19grainSize l \"grain size\" T _INPUT_CTRL.lens19grainSize}\n addUserKnob {41 lens19grainGain l \"grain gain\" T _INPUT_CTRL.lens19grainGain}\n addUserKnob {41 lens19reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens19reflectionOpacity}\n addUserKnob {41 lens19reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens19reflectionRotation}\n addUserKnob {41 lens19reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens19reflWhitepoint}\n addUserKnob {41 lens19reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens19reflectionGamma}\n addUserKnob {41 lens19reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens19reflectionBlur}\n addUserKnob {20 endGroup_18 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 lens20GRP l \"lens 20\" n 1}\n lens20GRP 0\n addUserKnob {41 lens20Active l active T _INPUT_CTRL.lens20Active}\n addUserKnob {41 lens20Size l size T _INPUT_CTRL.lens20Size}\n addUserKnob {41 lens20Col l color T _INPUT_CTRL.lens20Col}\n addUserKnob {41 lens20Blur l blur T _INPUT_CTRL.lens20Blur}\n addUserKnob {41 lens20AxisPos l \"axis pos\" T _INPUT_CTRL.lens20AxisPos}\n addUserKnob {41 lens20Polygon l polygon T _INPUT_CTRL.lens20Polygon}\n addUserKnob {41 lens20Diaphragm l diaphragm T _INPUT_CTRL.lens20Diaphragm}\n addUserKnob {41 lens20DiaphRot l \"diaph rotation\" T _INPUT_CTRL.lens20DiaphRot}\n addUserKnob {41 lens20grainOpacity l \"grain opacity\" T _INPUT_CTRL.lens20grainOpacity}\n addUserKnob {41 lens20grainSize l \"grain size\" T _INPUT_CTRL.lens20grainSize}\n addUserKnob {41 lens20grainGain l \"grain gain\" T _INPUT_CTRL.lens20grainGain}\n addUserKnob {41 lens20reflectionOpacity l \"refl opacity\" T _INPUT_CTRL.lens20reflectionOpacity}\n addUserKnob {41 lens20reflectionRotation l \"refl rotation\" T _INPUT_CTRL.lens20reflectionRotation}\n addUserKnob {41 lens20reflWhitepoint l \"refl whitepoint\" T _INPUT_CTRL.lens20reflWhitepoint}\n addUserKnob {41 lens20reflectionGamma l \"refl gamma\" T _INPUT_CTRL.lens20reflectionGamma}\n addUserKnob {41 lens20reflectionBlur l \"refl blur\" T _INPUT_CTRL.lens20reflectionBlur}\n addUserKnob {20 endGroup_19 l endGroup n -1}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 153\n  ypos 416\n }\n NoOp {\n  name _INPUT_\n  xpos 153\n  ypos 456\n }\nset N49d16e70 [stack 0]\n NoOp {\n  name _SOURCE\n  xpos -72\n  ypos 456\n }\n Multiply {\n  value 0\n  name _compOnSource\n  xpos -72\n  ypos 10508\n  disable {{1-_INPUT_CTRL.effectOnly i}}\n }\npush $N49d16e70\n Reformat {\n  type scale\n  scale {{_INPUT_CTRL.quality i}}\n  name _reformatQuality\n  xpos 153\n  ypos 485\n }\n NoOp {\n  name _INPUT_CTRL\n  xpos 153\n  ypos 523\n  addUserKnob {20 Controls}\n  addUserKnob {6 effectOnly l \"effect only\" +STARTLINE}\n  addUserKnob {6 viewSelectedHighlights l \"view highlights selection\" +STARTLINE}\n  addUserKnob {7 brightspot R 0.9 15}\n  brightspot 2\n  addUserKnob {7 threshold}\n  threshold 1\n  addUserKnob {7 gamma t \"Value for the gamma function applied between threshold value and brightspot value.\\n\" R 0 3}\n  gamma 2.2\n  addUserKnob {6 clampBright l \"clamp to brightspot\" t \"Clamp the maximum values to the brightspot value.\" +STARTLINE}\n  clampBright true\n  addUserKnob {7 quality}\n  quality 0.5\n  addUserKnob {26 \"\"}\n  addUserKnob {7 overallMult l \"overall mult\" R 0 2}\n  overallMult 1\n  addUserKnob {7 overallLensScale l \"overall lens scale\" R 0 2}\n  overallLensScale 1\n  addUserKnob {7 overallLensDistance l \"overall lens distance\" R 0 2}\n  overallLensDistance 1\n  addUserKnob {7 overallSaturation l \"overall saturation\" R 0 2}\n  overallSaturation 1\n  addUserKnob {7 sourceCol l \"source color\" t \"Mix with source color\"}\n  sourceCol 1\n  addUserKnob {7 sourceSat l \"source sat\" R 0 3}\n  sourceSat 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 overallGrainOpacity l \"overall grain opacity\"}\n  addUserKnob {7 overallGrainSizeMult l \"grain size mult\" R 0 10}\n  overallGrainSizeMult 1\n  addUserKnob {7 overallGrainGainMult l \"grain gain mult\" R 0 5}\n  overallGrainGainMult 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 reflectionsOpacity l \"reflections opacity\"}\n  addUserKnob {7 reflectionsRotOffset l \"reflections rot offset\" R 0 360}\n  addUserKnob {7 reflectionsBlurAdd l \"reflections add blur\" R 0 50}\n  addUserKnob {18 reflectionsWhitepointMult l \"refl whitepoint mult\" R 0 2}\n  reflectionsWhitepointMult 1\n  addUserKnob {6 reflectionsWhitepointMult_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 reflectionsWhitepointMult_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 reflectionsWhitepointMult_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 reflectionsGammaMult l \"refl gamma mult\" R 0 5}\n  reflectionsGammaMult 1\n  addUserKnob {6 reflectionsGammaMult_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 reflectionsGammaMult_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 reflectionsGammaMult_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {26 \"\"}\n  addUserKnob {6 vignetteActive l \"vignette source\" +STARTLINE}\n  vignetteActive true\n  addUserKnob {7 vignetteScale l scale}\n  vignetteScale 0.7\n  addUserKnob {7 vignetteDarkness l darkness}\n  vignetteDarkness 1\n  addUserKnob {20 Presets}\n  addUserKnob {22 preset_01 l \"Pink on Blue\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(230)\\nn.knob('lens1Col').setValue(2.48,0)\\nn.knob('lens1Col').setValue(2.86,1)\\nn.knob('lens1Col').setValue(16.6,2)\\nn.knob('lens1Blur').setValue(17)\\nn.knob('lens1AxisPos').setValue(-1.18)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(1)\\nn.knob('lens1DiaphRot').setValue(0)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(50)\\nn.knob('lens2Col').setValue(0.0027,0)\\nn.knob('lens2Col').setValue(0.0095,1)\\nn.knob('lens2Col').setValue(0.3,2)\\nn.knob('lens2Blur').setValue(0)\\nn.knob('lens2AxisPos').setValue(1.86)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(1)\\nn.knob('lens2DiaphRot').setValue(0)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(200)\\nn.knob('lens3Col').setValue(7,0)\\nn.knob('lens3Col').setValue(6.02,1)\\nn.knob('lens3Col').setValue(2.79,2)\\nn.knob('lens3Blur').setValue(0)\\nn.knob('lens3AxisPos').setValue(-1.18)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(1)\\nn.knob('lens3DiaphRot').setValue(0)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(900)\\nn.knob('lens4Col').setValue(26,0)\\nn.knob('lens4Col').setValue(5.88,1)\\nn.knob('lens4Col').setValue(10.64,2)\\nn.knob('lens4Blur').setValue(0)\\nn.knob('lens4AxisPos').setValue(-2.2)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(1)\\nn.knob('lens4DiaphRot').setValue(0)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(540)\\nn.knob('lens5Col').setValue(0.6,0)\\nn.knob('lens5Col').setValue(0.34,1)\\nn.knob('lens5Col').setValue(0.4,2)\\nn.knob('lens5Blur').setValue(0)\\nn.knob('lens5AxisPos').setValue(1)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(0)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(430)\\nn.knob('lens6Col').setValue(1.29,0)\\nn.knob('lens6Col').setValue(0.19,1)\\nn.knob('lens6Col').setValue(1.17,2)\\nn.knob('lens6Blur').setValue(0)\\nn.knob('lens6AxisPos').setValue(2.2)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(1)\\nn.knob('lens6DiaphRot').setValue(0)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(400)\\nn.knob('lens7Col').setValue(0,0)\\nn.knob('lens7Col').setValue(674.66,1)\\nn.knob('lens7Col').setValue(720,2)\\nn.knob('lens7Blur').setValue(0)\\nn.knob('lens7AxisPos').setValue(0.1)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(1)\\nn.knob('lens7DiaphRot').setValue(0)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(950)\\nn.knob('lens8Col').setValue(5,0)\\nn.knob('lens8Col').setValue(13.21,1)\\nn.knob('lens8Col').setValue(20,2)\\nn.knob('lens8Blur').setValue(40)\\nn.knob('lens8AxisPos').setValue(-2.16)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(1)\\nn.knob('lens8DiaphRot').setValue(0)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(130)\\nn.knob('lens9Col').setValue(0.07,0)\\nn.knob('lens9Col').setValue(0.23,1)\\nn.knob('lens9Col').setValue(4.8,2)\\nn.knob('lens9Blur').setValue(5.6)\\nn.knob('lens9AxisPos').setValue(0.7)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(1)\\nn.knob('lens9DiaphRot').setValue(0)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(350)\\nn.knob('lens10Col').setValue(1.549,0)\\nn.knob('lens10Col').setValue(1,1)\\nn.knob('lens10Col').setValue(0.85,2)\\nn.knob('lens10Blur').setValue(0)\\nn.knob('lens10AxisPos').setValue(-1.8)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(1)\\nn.knob('lens10DiaphRot').setValue(0)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(10)\\nn.knob('lens11Col').setValue(0.1,0)\\nn.knob('lens11Col').setValue(0.032,1)\\nn.knob('lens11Col').setValue(0.087,2)\\nn.knob('lens11Blur').setValue(3.8)\\nn.knob('lens11AxisPos').setValue(-0.6)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(1)\\nn.knob('lens11DiaphRot').setValue(0)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(390)\\nn.knob('lens12Col').setValue(0.11,0)\\nn.knob('lens12Col').setValue(0.053,1)\\nn.knob('lens12Col').setValue(0.036,2)\\nn.knob('lens12Blur').setValue(2.1)\\nn.knob('lens12AxisPos').setValue(-1.8)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(0)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(140)\\nn.knob('lens13Col').setValue(0.5,0)\\nn.knob('lens13Col').setValue(2.75,1)\\nn.knob('lens13Col').setValue(5,2)\\nn.knob('lens13Blur').setValue(140)\\nn.knob('lens13AxisPos').setValue(2)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(1)\\nn.knob('lens13DiaphRot').setValue(0)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(420)\\nn.knob('lens14Col').setValue(509.29,0)\\nn.knob('lens14Col').setValue(-50.93,1)\\nn.knob('lens14Col').setValue(500.3,2)\\nn.knob('lens14Blur').setValue(20)\\nn.knob('lens14AxisPos').setValue(0.08)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(1)\\nn.knob('lens14DiaphRot').setValue(0)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(590)\\nn.knob('lens15Col').setValue(1120,0)\\nn.knob('lens15Col').setValue(-55.99,1)\\nn.knob('lens15Col').setValue(946.47,2)\\nn.knob('lens15Blur').setValue(0)\\nn.knob('lens15AxisPos').setValue(-0.1)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(130)\\nn.knob('lens16Col').setValue(0.8,0)\\nn.knob('lens16Col').setValue(0.74,1)\\nn.knob('lens16Col').setValue(0.119,2)\\nn.knob('lens16Blur').setValue(5.8)\\nn.knob('lens16AxisPos').setValue(-0.51)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(1)\\nn.knob('lens16DiaphRot').setValue(0)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(210)\\nn.knob('lens17Col').setValue(0.4911,0)\\nn.knob('lens17Col').setValue(1.01,1)\\nn.knob('lens17Col').setValue(2.59,2)\\nn.knob('lens17Blur').setValue(0)\\nn.knob('lens17AxisPos').setValue(1.2)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(1)\\nn.knob('lens17DiaphRot').setValue(0)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(50)\\nn.knob('lens18Col').setValue(0.26,0)\\nn.knob('lens18Col').setValue(0.039,1)\\nn.knob('lens18Col').setValue(-0.624,2)\\nn.knob('lens18Blur').setValue(0)\\nn.knob('lens18AxisPos').setValue(-0.83)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(1)\\nn.knob('lens18DiaphRot').setValue(0)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(410)\\nn.knob('lens19Col').setValue(4.4,0)\\nn.knob('lens19Col').setValue(2.7,1)\\nn.knob('lens19Col').setValue(2.04,2)\\nn.knob('lens19Blur').setValue(0)\\nn.knob('lens19AxisPos').setValue(-0.95)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(700)\\nn.knob('lens20Col').setValue(2.32,0)\\nn.knob('lens20Col').setValue(0,1)\\nn.knob('lens20Col').setValue(104,2)\\nn.knob('lens20Blur').setValue(0)\\nn.knob('lens20AxisPos').setValue(0.6)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(0)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {22 preset_02 l \"Fat Orange\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(7)\\nn.knob('lens1Col').setValue(0.0074,0)\\nn.knob('lens1Col').setValue(0,1)\\nn.knob('lens1Col').setValue(0.07,2)\\nn.knob('lens1Blur').setValue(17)\\nn.knob('lens1AxisPos').setValue(-1.3)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(1)\\nn.knob('lens1DiaphRot').setValue(0)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(130)\\nn.knob('lens2Col').setValue(0.11,0)\\nn.knob('lens2Col').setValue(0.055,1)\\nn.knob('lens2Col').setValue(0.0709,2)\\nn.knob('lens2Blur').setValue(9.5)\\nn.knob('lens2AxisPos').setValue(-1.66)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(1)\\nn.knob('lens2DiaphRot').setValue(0)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(340)\\nn.knob('lens3Col').setValue(3.9,0)\\nn.knob('lens3Col').setValue(1.125,1)\\nn.knob('lens3Col').setValue(0.195,2)\\nn.knob('lens3Blur').setValue(0)\\nn.knob('lens3AxisPos').setValue(-0.32)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(1)\\nn.knob('lens3DiaphRot').setValue(0)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(160)\\nn.knob('lens4Col').setValue(2.59,0)\\nn.knob('lens4Col').setValue(0.13,1)\\nn.knob('lens4Col').setValue(0.228,2)\\nn.knob('lens4Blur').setValue(0)\\nn.knob('lens4AxisPos').setValue(-0.24)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(1)\\nn.knob('lens4DiaphRot').setValue(0)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(350)\\nn.knob('lens5Col').setValue(0.6,0)\\nn.knob('lens5Col').setValue(0.135,1)\\nn.knob('lens5Col').setValue(0,2)\\nn.knob('lens5Blur').setValue(0)\\nn.knob('lens5AxisPos').setValue(-0.78)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(0)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(30)\\nn.knob('lens6Col').setValue(0.11,0)\\nn.knob('lens6Col').setValue(0.053,1)\\nn.knob('lens6Col').setValue(0.0000012,2)\\nn.knob('lens6Blur').setValue(4)\\nn.knob('lens6AxisPos').setValue(-0.75)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(1)\\nn.knob('lens6DiaphRot').setValue(0)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(1000)\\nn.knob('lens7Col').setValue(190,0)\\nn.knob('lens7Col').setValue(24.27,1)\\nn.knob('lens7Col').setValue(0,2)\\nn.knob('lens7Blur').setValue(0)\\nn.knob('lens7AxisPos').setValue(-0.04)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(1)\\nn.knob('lens7DiaphRot').setValue(0)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(350)\\nn.knob('lens8Col').setValue(0.6,0)\\nn.knob('lens8Col').setValue(0.233,1)\\nn.knob('lens8Col').setValue(0.089,2)\\nn.knob('lens8Blur').setValue(100)\\nn.knob('lens8AxisPos').setValue(-1.9)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(1)\\nn.knob('lens8DiaphRot').setValue(0)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(200)\\nn.knob('lens9Col').setValue(0.949,0)\\nn.knob('lens9Col').setValue(0.05,1)\\nn.knob('lens9Col').setValue(0,2)\\nn.knob('lens9Blur').setValue(30)\\nn.knob('lens9AxisPos').setValue(-0.76)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(1)\\nn.knob('lens9DiaphRot').setValue(0)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(270)\\nn.knob('lens10Col').setValue(5,0)\\nn.knob('lens10Col').setValue(1.78,1)\\nn.knob('lens10Col').setValue(0.87,2)\\nn.knob('lens10Blur').setValue(0)\\nn.knob('lens10AxisPos').setValue(0.18)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(1)\\nn.knob('lens10DiaphRot').setValue(0)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(20)\\nn.knob('lens11Col').setValue(0.03,0)\\nn.knob('lens11Col').setValue(0.0093,1)\\nn.knob('lens11Col').setValue(0,2)\\nn.knob('lens11Blur').setValue(3.5)\\nn.knob('lens11AxisPos').setValue(-0.6)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(1)\\nn.knob('lens11DiaphRot').setValue(0)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(700)\\nn.knob('lens12Col').setValue(0.04,0)\\nn.knob('lens12Col').setValue(0,1)\\nn.knob('lens12Col').setValue(0.0058,2)\\nn.knob('lens12Blur').setValue(10)\\nn.knob('lens12AxisPos').setValue(-2.2)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(0)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(100)\\nn.knob('lens13Col').setValue(0.12,0)\\nn.knob('lens13Col').setValue(0,1)\\nn.knob('lens13Col').setValue(0.0178,2)\\nn.knob('lens13Blur').setValue(200)\\nn.knob('lens13AxisPos').setValue(2)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(1)\\nn.knob('lens13DiaphRot').setValue(0)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(80)\\nn.knob('lens14Col').setValue(0.28,0)\\nn.knob('lens14Col').setValue(0.0419,1)\\nn.knob('lens14Col').setValue(0.101,2)\\nn.knob('lens14Blur').setValue(0)\\nn.knob('lens14AxisPos').setValue(0.38)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(1)\\nn.knob('lens14DiaphRot').setValue(0)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(500)\\nn.knob('lens15Col').setValue(1,0)\\nn.knob('lens15Col').setValue(0.2428,1)\\nn.knob('lens15Col').setValue(0.1,2)\\nn.knob('lens15Blur').setValue(0)\\nn.knob('lens15AxisPos').setValue(-0.5)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(130)\\nn.knob('lens16Col').setValue(0.449,0)\\nn.knob('lens16Col').setValue(0.146,1)\\nn.knob('lens16Col').setValue(0.0225,2)\\nn.knob('lens16Blur').setValue(0)\\nn.knob('lens16AxisPos').setValue(1.4)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(1)\\nn.knob('lens16DiaphRot').setValue(0)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(210)\\nn.knob('lens17Col').setValue(0.09,0)\\nn.knob('lens17Col').setValue(0.009,1)\\nn.knob('lens17Col').setValue(0.056,2)\\nn.knob('lens17Blur').setValue(0)\\nn.knob('lens17AxisPos').setValue(1.2)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(1)\\nn.knob('lens17DiaphRot').setValue(0)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(100)\\nn.knob('lens18Col').setValue(0.06,0)\\nn.knob('lens18Col').setValue(0.009,1)\\nn.knob('lens18Col').setValue(0.0579,2)\\nn.knob('lens18Blur').setValue(120)\\nn.knob('lens18AxisPos').setValue(2.5)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(1)\\nn.knob('lens18DiaphRot').setValue(0)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(150)\\nn.knob('lens19Col').setValue(0.2,0)\\nn.knob('lens19Col').setValue(0.0708,1)\\nn.knob('lens19Col').setValue(0.1219,2)\\nn.knob('lens19Blur').setValue(9)\\nn.knob('lens19AxisPos').setValue(0.8)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(1100)\\nn.knob('lens20Col').setValue(0.8,0)\\nn.knob('lens20Col').setValue(0.178,1)\\nn.knob('lens20Col').setValue(0.119,2)\\nn.knob('lens20Blur').setValue(0)\\nn.knob('lens20AxisPos').setValue(0.95)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(0)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {22 preset_03 l \"Classic Orange Blue\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(650)\\nn.knob('lens1Col').setValue(35.59,0)\\nn.knob('lens1Col').setValue(19.95,1)\\nn.knob('lens1Col').setValue(5.27,2)\\nn.knob('lens1Blur').setValue(17)\\nn.knob('lens1AxisPos').setValue(0.98)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(1)\\nn.knob('lens1DiaphRot').setValue(0)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(20)\\nn.knob('lens2Col').setValue(0.649,0)\\nn.knob('lens2Col').setValue(0.34,1)\\nn.knob('lens2Col').setValue(0.137,2)\\nn.knob('lens2Blur').setValue(7)\\nn.knob('lens2AxisPos').setValue(0.77)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(1)\\nn.knob('lens2DiaphRot').setValue(0)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(520)\\nn.knob('lens3Col').setValue(446,0)\\nn.knob('lens3Col').setValue(249.31,1)\\nn.knob('lens3Col').setValue(44.6,2)\\nn.knob('lens3Blur').setValue(9.4)\\nn.knob('lens3AxisPos').setValue(-0.43)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(1)\\nn.knob('lens3DiaphRot').setValue(0)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(60)\\nn.knob('lens4Col').setValue(26,0)\\nn.knob('lens4Col').setValue(22.8,1)\\nn.knob('lens4Col').setValue(14,2)\\nn.knob('lens4Blur').setValue(7)\\nn.knob('lens4AxisPos').setValue(0.7)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(1)\\nn.knob('lens4DiaphRot').setValue(0)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(220)\\nn.knob('lens5Col').setValue(30,0)\\nn.knob('lens5Col').setValue(11.46,1)\\nn.knob('lens5Col').setValue(0,2)\\nn.knob('lens5Blur').setValue(4.4)\\nn.knob('lens5AxisPos').setValue(0.66)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(0)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(130)\\nn.knob('lens6Col').setValue(0.134,0)\\nn.knob('lens6Col').setValue(17.49,1)\\nn.knob('lens6Col').setValue(40,2)\\nn.knob('lens6Blur').setValue(0)\\nn.knob('lens6AxisPos').setValue(0.23)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(1)\\nn.knob('lens6DiaphRot').setValue(0)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(200)\\nn.knob('lens7Col').setValue(50,0)\\nn.knob('lens7Col').setValue(47.767,1)\\nn.knob('lens7Col').setValue(31.44,2)\\nn.knob('lens7Blur').setValue(0)\\nn.knob('lens7AxisPos').setValue(0.203)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(1)\\nn.knob('lens7DiaphRot').setValue(0)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(850)\\nn.knob('lens8Col').setValue(130,0)\\nn.knob('lens8Col').setValue(61.45,1)\\nn.knob('lens8Col').setValue(1.76,2)\\nn.knob('lens8Blur').setValue(40)\\nn.knob('lens8AxisPos').setValue(-0.96)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(1)\\nn.knob('lens8DiaphRot').setValue(0)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(10)\\nn.knob('lens9Col').setValue(1.25,0)\\nn.knob('lens9Col').setValue(0.249,1)\\nn.knob('lens9Col').setValue(0.756,2)\\nn.knob('lens9Blur').setValue(0)\\nn.knob('lens9AxisPos').setValue(0.53)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(1)\\nn.knob('lens9DiaphRot').setValue(0)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(65)\\nn.knob('lens10Col').setValue(20,0)\\nn.knob('lens10Col').setValue(9.2,1)\\nn.knob('lens10Col').setValue(5.5,2)\\nn.knob('lens10Blur').setValue(4.8)\\nn.knob('lens10AxisPos').setValue(0.18)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(1)\\nn.knob('lens10DiaphRot').setValue(0)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(30)\\nn.knob('lens11Col').setValue(4.5,0)\\nn.knob('lens11Col').setValue(8.26,1)\\nn.knob('lens11Col').setValue(10,2)\\nn.knob('lens11Blur').setValue(0)\\nn.knob('lens11AxisPos').setValue(-0.2)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(1)\\nn.knob('lens11DiaphRot').setValue(0)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(1090)\\nn.knob('lens12Col').setValue(0.11,0)\\nn.knob('lens12Col').setValue(0.053,1)\\nn.knob('lens12Col').setValue(0.036,2)\\nn.knob('lens12Blur').setValue(2.1)\\nn.knob('lens12AxisPos').setValue(-0.8)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(0)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(32)\\nn.knob('lens13Col').setValue(10,0)\\nn.knob('lens13Col').setValue(9.7,1)\\nn.knob('lens13Col').setValue(6.26,2)\\nn.knob('lens13Blur').setValue(19.6)\\nn.knob('lens13AxisPos').setValue(0.68)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(1)\\nn.knob('lens13DiaphRot').setValue(0)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(320)\\nn.knob('lens14Col').setValue(2509,0)\\nn.knob('lens14Col').setValue(1171,1)\\nn.knob('lens14Col').setValue(1256,2)\\nn.knob('lens14Blur').setValue(0)\\nn.knob('lens14AxisPos').setValue(-0.04)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(1)\\nn.knob('lens14DiaphRot').setValue(0)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(590)\\nn.knob('lens15Col').setValue(1120,0)\\nn.knob('lens15Col').setValue(506,1)\\nn.knob('lens15Col').setValue(456,2)\\nn.knob('lens15Blur').setValue(0)\\nn.knob('lens15AxisPos').setValue(-0.1)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(60)\\nn.knob('lens16Col').setValue(18,0)\\nn.knob('lens16Col').setValue(4.51,1)\\nn.knob('lens16Col').setValue(1.8,2)\\nn.knob('lens16Blur').setValue(5.8)\\nn.knob('lens16AxisPos').setValue(-0.27)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(1)\\nn.knob('lens16DiaphRot').setValue(0)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(70)\\nn.knob('lens17Col').setValue(20,0)\\nn.knob('lens17Col').setValue(13.74,1)\\nn.knob('lens17Col').setValue(4.58,2)\\nn.knob('lens17Blur').setValue(0)\\nn.knob('lens17AxisPos').setValue(-0.24)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(1)\\nn.knob('lens17DiaphRot').setValue(0)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(50)\\nn.knob('lens18Col').setValue(30,0)\\nn.knob('lens18Col').setValue(8.94,1)\\nn.knob('lens18Col').setValue(-10.5,2)\\nn.knob('lens18Blur').setValue(30)\\nn.knob('lens18AxisPos').setValue(-0.32)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(1)\\nn.knob('lens18DiaphRot').setValue(0)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(50)\\nn.knob('lens19Col').setValue(1.97,0)\\nn.knob('lens19Col').setValue(3.2,1)\\nn.knob('lens19Col').setValue(0.32,2)\\nn.knob('lens19Blur').setValue(4.4)\\nn.knob('lens19AxisPos').setValue(-0.47)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(80)\\nn.knob('lens20Col').setValue(3.79,0)\\nn.knob('lens20Col').setValue(3.11,1)\\nn.knob('lens20Col').setValue(0.8,2)\\nn.knob('lens20Blur').setValue(0)\\nn.knob('lens20AxisPos').setValue(-0.15)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(0)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {22 preset_04 l \"Giant Colorful\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(6)\\nn.knob('lens1Col').setValue(0.4,0)\\nn.knob('lens1Col').setValue(0.664,1)\\nn.knob('lens1Col').setValue(1.85,2)\\nn.knob('lens1Blur').setValue(0)\\nn.knob('lens1AxisPos').setValue(-0.16)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(1)\\nn.knob('lens1DiaphRot').setValue(0)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(1.1)\\nn.knob('lens2Col').setValue(2.67,0)\\nn.knob('lens2Col').setValue(3.09,1)\\nn.knob('lens2Col').setValue(0.68,2)\\nn.knob('lens2Blur').setValue(0)\\nn.knob('lens2AxisPos').setValue(0.05)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(1)\\nn.knob('lens2DiaphRot').setValue(0)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(410)\\nn.knob('lens3Col').setValue(14,0)\\nn.knob('lens3Col').setValue(4.77,1)\\nn.knob('lens3Col').setValue(0.76,2)\\nn.knob('lens3Blur').setValue(0)\\nn.knob('lens3AxisPos').setValue(1.1)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(1)\\nn.knob('lens3DiaphRot').setValue(0)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(370)\\nn.knob('lens4Col').setValue(12,0)\\nn.knob('lens4Col').setValue(3.96,1)\\nn.knob('lens4Col').setValue(10.37,2)\\nn.knob('lens4Blur').setValue(7)\\nn.knob('lens4AxisPos').setValue(0.95)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(1)\\nn.knob('lens4DiaphRot').setValue(0)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(1120)\\nn.knob('lens5Col').setValue(110,0)\\nn.knob('lens5Col').setValue(48.46,1)\\nn.knob('lens5Col').setValue(7.55,2)\\nn.knob('lens5Blur').setValue(18.8)\\nn.knob('lens5AxisPos').setValue(0.26)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(0)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(330)\\nn.knob('lens6Col').setValue(0.55,0)\\nn.knob('lens6Col').setValue(0.329,1)\\nn.knob('lens6Col').setValue(0.073,2)\\nn.knob('lens6Blur').setValue(0)\\nn.knob('lens6AxisPos').setValue(-1.43)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(1)\\nn.knob('lens6DiaphRot').setValue(0)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(360)\\nn.knob('lens7Col').setValue(5.69,0)\\nn.knob('lens7Col').setValue(3.44,1)\\nn.knob('lens7Col').setValue(0,2)\\nn.knob('lens7Blur').setValue(0)\\nn.knob('lens7AxisPos').setValue(-1.58)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(1)\\nn.knob('lens7DiaphRot').setValue(0)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(8)\\nn.knob('lens8Col').setValue(0.38,0)\\nn.knob('lens8Col').setValue(1.5,1)\\nn.knob('lens8Col').setValue(3.79,2)\\nn.knob('lens8Blur').setValue(0)\\nn.knob('lens8AxisPos').setValue(0.1)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(1)\\nn.knob('lens8DiaphRot').setValue(0)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(46.5)\\nn.knob('lens9Col').setValue(1.8,0)\\nn.knob('lens9Col').setValue(1.88,1)\\nn.knob('lens9Col').setValue(3.29,2)\\nn.knob('lens9Blur').setValue(2.8)\\nn.knob('lens9AxisPos').setValue(-0.22)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(1)\\nn.knob('lens9DiaphRot').setValue(0)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(400)\\nn.knob('lens10Col').setValue(14,0)\\nn.knob('lens10Col').setValue(7.09,1)\\nn.knob('lens10Col').setValue(12.38,2)\\nn.knob('lens10Blur').setValue(0)\\nn.knob('lens10AxisPos').setValue(0.44)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(1)\\nn.knob('lens10DiaphRot').setValue(0)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(6.2)\\nn.knob('lens11Col').setValue(0.14,0)\\nn.knob('lens11Col').setValue(0.11,1)\\nn.knob('lens11Col').setValue(0.014,2)\\nn.knob('lens11Blur').setValue(10.8)\\nn.knob('lens11AxisPos').setValue(-1.4)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(1)\\nn.knob('lens11DiaphRot').setValue(0)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(10)\\nn.knob('lens12Col').setValue(0.11,0)\\nn.knob('lens12Col').setValue(0.05,1)\\nn.knob('lens12Col').setValue(0.02,2)\\nn.knob('lens12Blur').setValue(4.6)\\nn.knob('lens12AxisPos').setValue(-1.42)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(0)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(2.3)\\nn.knob('lens13Col').setValue(0.14,0)\\nn.knob('lens13Col').setValue(0.13,1)\\nn.knob('lens13Col').setValue(0.04,2)\\nn.knob('lens13Blur').setValue(3)\\nn.knob('lens13AxisPos').setValue(-1.48)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(1)\\nn.knob('lens13DiaphRot').setValue(0)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(1020)\\nn.knob('lens14Col').setValue(260,0)\\nn.knob('lens14Col').setValue(122,1)\\nn.knob('lens14Col').setValue(12.6,2)\\nn.knob('lens14Blur').setValue(0)\\nn.knob('lens14AxisPos').setValue(0.5)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(1)\\nn.knob('lens14DiaphRot').setValue(0)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(650)\\nn.knob('lens15Col').setValue(80,0)\\nn.knob('lens15Col').setValue(21.6,1)\\nn.knob('lens15Col').setValue(47.88,2)\\nn.knob('lens15Blur').setValue(0)\\nn.knob('lens15AxisPos').setValue(0.4)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(60)\\nn.knob('lens16Col').setValue(2.04,0)\\nn.knob('lens16Col').setValue(0.42,1)\\nn.knob('lens16Col').setValue(0.10,2)\\nn.knob('lens16Blur').setValue(0)\\nn.knob('lens16AxisPos').setValue(0.4)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(1)\\nn.knob('lens16DiaphRot').setValue(0)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(80)\\nn.knob('lens17Col').setValue(1.2,0)\\nn.knob('lens17Col').setValue(0.36,1)\\nn.knob('lens17Col').setValue(0.388,2)\\nn.knob('lens17Blur').setValue(70)\\nn.knob('lens17AxisPos').setValue(-2.4)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(1)\\nn.knob('lens17DiaphRot').setValue(0)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(60)\\nn.knob('lens18Col').setValue(10,0)\\nn.knob('lens18Col').setValue(4.42,1)\\nn.knob('lens18Col').setValue(0,2)\\nn.knob('lens18Blur').setValue(30)\\nn.knob('lens18AxisPos').setValue(-0.54)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(1)\\nn.knob('lens18DiaphRot').setValue(0)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(99)\\nn.knob('lens19Col').setValue(1.54,0)\\nn.knob('lens19Col').setValue(1.25,1)\\nn.knob('lens19Col').setValue(0.24,2)\\nn.knob('lens19Blur').setValue(50)\\nn.knob('lens19AxisPos').setValue(1.8)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(9.4)\\nn.knob('lens20Col').setValue(0.239,0)\\nn.knob('lens20Col').setValue(0.121,1)\\nn.knob('lens20Col').setValue(0.065,2)\\nn.knob('lens20Blur').setValue(4)\\nn.knob('lens20AxisPos').setValue(0.58)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(0)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {22 preset_05 l \"Thin and Wide\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(25.2)\\nn.knob('lens1Col').setValue(0.97,0)\\nn.knob('lens1Col').setValue(2.927,1)\\nn.knob('lens1Col').setValue(18,2)\\nn.knob('lens1Blur').setValue(0)\\nn.knob('lens1AxisPos').setValue(-0.11)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(0.8)\\nn.knob('lens1DiaphRot').setValue(0)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(4.8)\\nn.knob('lens2Col').setValue(-2.3,0)\\nn.knob('lens2Col').setValue(6.32,1)\\nn.knob('lens2Col').setValue(15.39,2)\\nn.knob('lens2Blur').setValue(0)\\nn.knob('lens2AxisPos').setValue(-0.082)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(1)\\nn.knob('lens2DiaphRot').setValue(0)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(13.5)\\nn.knob('lens3Col').setValue(1.17,0)\\nn.knob('lens3Col').setValue(1.72,1)\\nn.knob('lens3Col').setValue(26,2)\\nn.knob('lens3Blur').setValue(0)\\nn.knob('lens3AxisPos').setValue(-0.06)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(0.8)\\nn.knob('lens3DiaphRot').setValue(0)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(2.05)\\nn.knob('lens4Col').setValue(6.93,0)\\nn.knob('lens4Col').setValue(32,1)\\nn.knob('lens4Col').setValue(29.82,2)\\nn.knob('lens4Blur').setValue(0)\\nn.knob('lens4AxisPos').setValue(0.08)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(1)\\nn.knob('lens4DiaphRot').setValue(0)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(200)\\nn.knob('lens5Col').setValue(1.09,0)\\nn.knob('lens5Col').setValue(1.14,1)\\nn.knob('lens5Col').setValue(8,2)\\nn.knob('lens5Blur').setValue(0)\\nn.knob('lens5AxisPos').setValue(0.27)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(0)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(1000)\\nn.knob('lens6Col').setValue(50,0)\\nn.knob('lens6Col').setValue(6.38,1)\\nn.knob('lens6Col').setValue(0,2)\\nn.knob('lens6Blur').setValue(0)\\nn.knob('lens6AxisPos').setValue(-1.08)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(1)\\nn.knob('lens6DiaphRot').setValue(0)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(460)\\nn.knob('lens7Col').setValue(0,0)\\nn.knob('lens7Col').setValue(0.99,1)\\nn.knob('lens7Col').setValue(20,2)\\nn.knob('lens7Blur').setValue(0)\\nn.knob('lens7AxisPos').setValue(-0.88)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(1)\\nn.knob('lens7DiaphRot').setValue(0)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(450)\\nn.knob('lens8Col').setValue(12,0)\\nn.knob('lens8Col').setValue(2.25,1)\\nn.knob('lens8Col').setValue(10.04,2)\\nn.knob('lens8Blur').setValue(9.9)\\nn.knob('lens8AxisPos').setValue(-0.69)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(1)\\nn.knob('lens8DiaphRot').setValue(0)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(50.4)\\nn.knob('lens9Col').setValue(0.9,0)\\nn.knob('lens9Col').setValue(1.012,1)\\nn.knob('lens9Col').setValue(3,2)\\nn.knob('lens9Blur').setValue(2.8)\\nn.knob('lens9AxisPos').setValue(0.34)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(1)\\nn.knob('lens9DiaphRot').setValue(0)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(85.6)\\nn.knob('lens10Col').setValue(2.79,0)\\nn.knob('lens10Col').setValue(1.537,1)\\nn.knob('lens10Col').setValue(-2.6,2)\\nn.knob('lens10Blur').setValue(4.6)\\nn.knob('lens10AxisPos').setValue(0.37)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(1)\\nn.knob('lens10DiaphRot').setValue(0)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(83.5)\\nn.knob('lens11Col').setValue(0,0)\\nn.knob('lens11Col').setValue(4.86,1)\\nn.knob('lens11Col').setValue(30,2)\\nn.knob('lens11Blur').setValue(0)\\nn.knob('lens11AxisPos').setValue(0.15)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(1)\\nn.knob('lens11DiaphRot').setValue(0)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(40)\\nn.knob('lens12Col').setValue(10,0)\\nn.knob('lens12Col').setValue(3.9,1)\\nn.knob('lens12Col').setValue(7.98,2)\\nn.knob('lens12Blur').setValue(4.6)\\nn.knob('lens12AxisPos').setValue(0.44)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(0)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(1.4)\\nn.knob('lens13Col').setValue(3.29,0)\\nn.knob('lens13Col').setValue(1.28,1)\\nn.knob('lens13Col').setValue(2.6,2)\\nn.knob('lens13Blur').setValue(5.6)\\nn.knob('lens13AxisPos').setValue(0.45)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(1)\\nn.knob('lens13DiaphRot').setValue(0)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(1)\\nn.knob('lens14Col').setValue(1.64,0)\\nn.knob('lens14Col').setValue(0.74,1)\\nn.knob('lens14Col').setValue(1.3,2)\\nn.knob('lens14Blur').setValue(2)\\nn.knob('lens14AxisPos').setValue(0.458)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(1)\\nn.knob('lens14DiaphRot').setValue(0)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(1050)\\nn.knob('lens15Col').setValue(80,0)\\nn.knob('lens15Col').setValue(24,1)\\nn.knob('lens15Col').setValue(49.19,2)\\nn.knob('lens15Blur').setValue(0)\\nn.knob('lens15AxisPos').setValue(0.8)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(600)\\nn.knob('lens16Col').setValue(30,0)\\nn.knob('lens16Col').setValue(7.29,1)\\nn.knob('lens16Col').setValue(12.7,2)\\nn.knob('lens16Blur').setValue(0)\\nn.knob('lens16AxisPos').setValue(-0.42)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(1)\\nn.knob('lens16DiaphRot').setValue(0)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(600)\\nn.knob('lens17Col').setValue(25,0)\\nn.knob('lens17Col').setValue(7.5,1)\\nn.knob('lens17Col').setValue(8.08,2)\\nn.knob('lens17Blur').setValue(50)\\nn.knob('lens17AxisPos').setValue(0.7)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(1)\\nn.knob('lens17DiaphRot').setValue(0)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(270)\\nn.knob('lens18Col').setValue(6.4,0)\\nn.knob('lens18Col').setValue(3.69,1)\\nn.knob('lens18Col').setValue(0.73,2)\\nn.knob('lens18Blur').setValue(0)\\nn.knob('lens18AxisPos').setValue(-0.36)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(1)\\nn.knob('lens18DiaphRot').setValue(0)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(99)\\nn.knob('lens19Col').setValue(5.249,0)\\nn.knob('lens19Col').setValue(7.51,1)\\nn.knob('lens19Col').setValue(40,2)\\nn.knob('lens19Blur').setValue(20)\\nn.knob('lens19AxisPos').setValue(-0.16)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(9.4)\\nn.knob('lens20Col').setValue(0.03,0)\\nn.knob('lens20Col').setValue(0.006,1)\\nn.knob('lens20Col').setValue(0.015,2)\\nn.knob('lens20Blur').setValue(4)\\nn.knob('lens20AxisPos').setValue(0.5)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(0)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {22 preset_06 l \"Hexa Green Orange\" T \"n=nuke.toNode('_INPUT_CTRL')\\n\\nn.knob('lens1Active').setValue(True)\\nn.knob('lens1Size').setValue(140)\\nn.knob('lens1Col').setValue(0.918,0)\\nn.knob('lens1Col').setValue(6.62,1)\\nn.knob('lens1Col').setValue(7,2)\\nn.knob('lens1Blur').setValue(12.9)\\nn.knob('lens1AxisPos').setValue(-0.426)\\nn.knob('lens1Polygon').setValue(0)\\nn.knob('lens1Diaphragm').setValue(0.722)\\nn.knob('lens1DiaphRot').setValue(26)\\n\\nn.knob('lens2Active').setValue(True)\\nn.knob('lens2Size').setValue(140)\\nn.knob('lens2Col').setValue(10.72,0)\\nn.knob('lens2Col').setValue(13,1)\\nn.knob('lens2Col').setValue(1.63,2)\\nn.knob('lens2Blur').setValue(9.5)\\nn.knob('lens2AxisPos').setValue(-0.358)\\nn.knob('lens2Polygon').setValue(0)\\nn.knob('lens2Diaphragm').setValue(0.656)\\nn.knob('lens2DiaphRot').setValue(26)\\n\\nn.knob('lens3Active').setValue(True)\\nn.knob('lens3Size').setValue(82)\\nn.knob('lens3Col').setValue(3,0)\\nn.knob('lens3Col').setValue(1.72,1)\\nn.knob('lens3Col').setValue(0,2)\\nn.knob('lens3Blur').setValue(5.4)\\nn.knob('lens3AxisPos').setValue(-0.346)\\nn.knob('lens3Polygon').setValue(0)\\nn.knob('lens3Diaphragm').setValue(0.792)\\nn.knob('lens3DiaphRot').setValue(26)\\n\\nn.knob('lens4Active').setValue(True)\\nn.knob('lens4Size').setValue(230)\\nn.knob('lens4Col').setValue(152,0)\\nn.knob('lens4Col').setValue(41.01,1)\\nn.knob('lens4Col').setValue(0,2)\\nn.knob('lens4Blur').setValue(6.1)\\nn.knob('lens4AxisPos').setValue(-0.634)\\nn.knob('lens4Polygon').setValue(0)\\nn.knob('lens4Diaphragm').setValue(0.566)\\nn.knob('lens4DiaphRot').setValue(26)\\n\\nn.knob('lens5Active').setValue(True)\\nn.knob('lens5Size').setValue(250)\\nn.knob('lens5Col').setValue(23,0)\\nn.knob('lens5Col').setValue(19,1)\\nn.knob('lens5Col').setValue(0,2)\\nn.knob('lens5Blur').setValue(60)\\nn.knob('lens5AxisPos').setValue(-0.66)\\nn.knob('lens5Polygon').setValue(0)\\nn.knob('lens5Diaphragm').setValue(1)\\nn.knob('lens5DiaphRot').setValue(26)\\n\\nn.knob('lens6Active').setValue(True)\\nn.knob('lens6Size').setValue(520)\\nn.knob('lens6Col').setValue(12,0)\\nn.knob('lens6Col').setValue(-2.54,1)\\nn.knob('lens6Col').setValue(-4.8,2)\\nn.knob('lens6Blur').setValue(21)\\nn.knob('lens6AxisPos').setValue(-1.06)\\nn.knob('lens6Polygon').setValue(0)\\nn.knob('lens6Diaphragm').setValue(0.446)\\nn.knob('lens6DiaphRot').setValue(26)\\n\\nn.knob('lens7Active').setValue(True)\\nn.knob('lens7Size').setValue(460)\\nn.knob('lens7Col').setValue(2.46,0)\\nn.knob('lens7Col').setValue(9,1)\\nn.knob('lens7Col').setValue(0.9,2)\\nn.knob('lens7Blur').setValue(50)\\nn.knob('lens7AxisPos').setValue(-1.04)\\nn.knob('lens7Polygon').setValue(0)\\nn.knob('lens7Diaphragm').setValue(0.536)\\nn.knob('lens7DiaphRot').setValue(26)\\n\\nn.knob('lens8Active').setValue(True)\\nn.knob('lens8Size').setValue(110)\\nn.knob('lens8Col').setValue(4,0)\\nn.knob('lens8Col').setValue(2.44,1)\\nn.knob('lens8Col').setValue(0,2)\\nn.knob('lens8Blur').setValue(4.5)\\nn.knob('lens8AxisPos').setValue(0.414)\\nn.knob('lens8Polygon').setValue(0)\\nn.knob('lens8Diaphragm').setValue(0.754)\\nn.knob('lens8DiaphRot').setValue(26)\\n\\nn.knob('lens9Active').setValue(True)\\nn.knob('lens9Size').setValue(50)\\nn.knob('lens9Col').setValue(7,0)\\nn.knob('lens9Col').setValue(4.89,1)\\nn.knob('lens9Col').setValue(2.45,2)\\nn.knob('lens9Blur').setValue(2.8)\\nn.knob('lens9AxisPos').setValue(0.19)\\nn.knob('lens9Polygon').setValue(0)\\nn.knob('lens9Diaphragm').setValue(0.726)\\nn.knob('lens9DiaphRot').setValue(26)\\n\\nn.knob('lens10Active').setValue(True)\\nn.knob('lens10Size').setValue(40)\\nn.knob('lens10Col').setValue(-0.32,0)\\nn.knob('lens10Col').setValue(10,1)\\nn.knob('lens10Col').setValue(-5,2)\\nn.knob('lens10Blur').setValue(12.1)\\nn.knob('lens10AxisPos').setValue(0.234)\\nn.knob('lens10Polygon').setValue(0)\\nn.knob('lens10Diaphragm').setValue(0.836)\\nn.knob('lens10DiaphRot').setValue(26)\\n\\nn.knob('lens11Active').setValue(True)\\nn.knob('lens11Size').setValue(57)\\nn.knob('lens11Col').setValue(5.3,0)\\nn.knob('lens11Col').setValue(10,1)\\nn.knob('lens11Col').setValue(6.13,2)\\nn.knob('lens11Blur').setValue(3)\\nn.knob('lens11AxisPos').setValue(0.3)\\nn.knob('lens11Polygon').setValue(0)\\nn.knob('lens11Diaphragm').setValue(0.732)\\nn.knob('lens11DiaphRot').setValue(26)\\n\\nn.knob('lens12Active').setValue(True)\\nn.knob('lens12Size').setValue(70)\\nn.knob('lens12Col').setValue(-9,0)\\nn.knob('lens12Col').setValue(16,1)\\nn.knob('lens12Col').setValue(20,2)\\nn.knob('lens12Blur').setValue(4.6)\\nn.knob('lens12AxisPos').setValue(0.216)\\nn.knob('lens12Polygon').setValue(0)\\nn.knob('lens12Diaphragm').setValue(1)\\nn.knob('lens12DiaphRot').setValue(26)\\n\\nn.knob('lens13Active').setValue(True)\\nn.knob('lens13Size').setValue(120)\\nn.knob('lens13Col').setValue(10,0)\\nn.knob('lens13Col').setValue(8.51,1)\\nn.knob('lens13Col').setValue(1.19,2)\\nn.knob('lens13Blur').setValue(5.6)\\nn.knob('lens13AxisPos').setValue(0.242)\\nn.knob('lens13Polygon').setValue(0)\\nn.knob('lens13Diaphragm').setValue(0.363)\\nn.knob('lens13DiaphRot').setValue(26)\\n\\nn.knob('lens14Active').setValue(True)\\nn.knob('lens14Size').setValue(20)\\nn.knob('lens14Col').setValue(5.5,0)\\nn.knob('lens14Col').setValue(3.02,1)\\nn.knob('lens14Col').setValue(0,2)\\nn.knob('lens14Blur').setValue(1.7)\\nn.knob('lens14AxisPos').setValue(0.18)\\nn.knob('lens14Polygon').setValue(0)\\nn.knob('lens14Diaphragm').setValue(0.532)\\nn.knob('lens14DiaphRot').setValue(26)\\n\\nn.knob('lens15Active').setValue(True)\\nn.knob('lens15Size').setValue(500)\\nn.knob('lens15Col').setValue(50,0)\\nn.knob('lens15Col').setValue(21.61,1)\\nn.knob('lens15Col').setValue(-7.5,2)\\nn.knob('lens15Blur').setValue(500)\\nn.knob('lens15AxisPos').setValue(1.2)\\nn.knob('lens15Polygon').setValue(0)\\nn.knob('lens15Diaphragm').setValue(1)\\nn.knob('lens15DiaphRot').setValue(0)\\n\\nn.knob('lens16Active').setValue(True)\\nn.knob('lens16Size').setValue(30)\\nn.knob('lens16Col').setValue(20,0)\\nn.knob('lens16Col').setValue(16.7,1)\\nn.knob('lens16Col').setValue(5,2)\\nn.knob('lens16Blur').setValue(5)\\nn.knob('lens16AxisPos').setValue(0.7)\\nn.knob('lens16Polygon').setValue(0)\\nn.knob('lens16Diaphragm').setValue(0.496)\\nn.knob('lens16DiaphRot').setValue(26)\\n\\nn.knob('lens17Active').setValue(True)\\nn.knob('lens17Size').setValue(10)\\nn.knob('lens17Col').setValue(5,0)\\nn.knob('lens17Col').setValue(2.31,1)\\nn.knob('lens17Col').setValue(0.26,2)\\nn.knob('lens17Blur').setValue(3.7)\\nn.knob('lens17AxisPos').setValue(0.67)\\nn.knob('lens17Polygon').setValue(0)\\nn.knob('lens17Diaphragm').setValue(0.468)\\nn.knob('lens17DiaphRot').setValue(26)\\n\\nn.knob('lens18Active').setValue(True)\\nn.knob('lens18Size').setValue(200)\\nn.knob('lens18Col').setValue(6.4,0)\\nn.knob('lens18Col').setValue(0.86,1)\\nn.knob('lens18Col').setValue(-0.64,2)\\nn.knob('lens18Blur').setValue(70)\\nn.knob('lens18AxisPos').setValue(0.75)\\nn.knob('lens18Polygon').setValue(0)\\nn.knob('lens18Diaphragm').setValue(0.624)\\nn.knob('lens18DiaphRot').setValue(26)\\n\\nn.knob('lens19Active').setValue(True)\\nn.knob('lens19Size').setValue(9)\\nn.knob('lens19Col').setValue(0.3,0)\\nn.knob('lens19Col').setValue(0.1,1)\\nn.knob('lens19Col').setValue(0.284,2)\\nn.knob('lens19Blur').setValue(9.4)\\nn.knob('lens19AxisPos').setValue(0.64)\\nn.knob('lens19Polygon').setValue(0)\\nn.knob('lens19Diaphragm').setValue(1)\\nn.knob('lens19DiaphRot').setValue(0)\\n\\nn.knob('lens20Active').setValue(True)\\nn.knob('lens20Size').setValue(500)\\nn.knob('lens20Col').setValue(500,0)\\nn.knob('lens20Col').setValue(100,1)\\nn.knob('lens20Col').setValue(250,2)\\nn.knob('lens20Blur').setValue(100)\\nn.knob('lens20AxisPos').setValue(-0.1)\\nn.knob('lens20Polygon').setValue(0)\\nn.knob('lens20Diaphragm').setValue(1)\\nn.knob('lens20DiaphRot').setValue(26)\\n\\n\\n\" +STARTLINE}\n  addUserKnob {20 Lenses}\n  addUserKnob {6 showNumbers l \"show numbers on lenses\" +STARTLINE}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 Lens1GRP l \"lens 01\" n 1}\n  Lens1GRP 0\n  addUserKnob {6 lens1Active l active +STARTLINE}\n  lens1Active true\n  addUserKnob {14 lens1Size l size R 0 100}\n  lens1Size 25.2\n  addUserKnob {18 lens1Col l color R 0 10}\n  lens1Col {0.97 2.927 18}\n  addUserKnob {6 lens1Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens1Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens1Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens1Blur l blur R 0 50}\n  addUserKnob {7 lens1AxisPos l \"axis pos\" R -3 3}\n  lens1AxisPos -0.11\n  addUserKnob {4 lens1Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens1Diaphragm l diaphragm}\n  lens1Diaphragm 0.8\n  addUserKnob {7 lens1DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens1grainOpacity l \"grain opacity\"}\n  lens1grainOpacity 1\n  addUserKnob {7 lens1grainSize l \"grain size\" R 0 1000}\n  lens1grainSize 100\n  addUserKnob {7 lens1grainGain l \"grain gain\" R 0 3}\n  lens1grainGain 1\n  addUserKnob {7 lens1reflectionOpacity l \"refl opacity\"}\n  lens1reflectionOpacity 1\n  addUserKnob {7 lens1reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens1reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens1reflWhitepoint 1\n  addUserKnob {18 lens1reflectionGamma l \"refl gamma\" R 0 5}\n  lens1reflectionGamma 1\n  addUserKnob {6 lens1reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens1reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens1reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens1reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens2GRP l \"lens 02\" n 1}\n  lens2GRP 0\n  addUserKnob {6 lens2Active l active +STARTLINE}\n  lens2Active true\n  addUserKnob {14 lens2Size l size R 0 100}\n  lens2Size 4.8\n  addUserKnob {18 lens2Col l color R 0 10}\n  lens2Col {-2.3 6.32 15.39}\n  addUserKnob {6 lens2Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens2Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens2Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens2Blur l blur R 0 50}\n  addUserKnob {7 lens2AxisPos l \"axis pos\" R -3 3}\n  lens2AxisPos -0.082\n  addUserKnob {4 lens2Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens2Diaphragm l diaphragm}\n  lens2Diaphragm 1\n  addUserKnob {7 lens2DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens2grainOpacity l \"grain opacity\"}\n  lens2grainOpacity 1\n  addUserKnob {7 lens2grainSize l \"grain size\" R 0 1000}\n  lens2grainSize 100\n  addUserKnob {7 lens2grainGain l \"grain gain\" R 0 3}\n  lens2grainGain 1\n  addUserKnob {7 lens2reflectionOpacity l \"refl opacity\"}\n  lens2reflectionOpacity 1\n  addUserKnob {7 lens2reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens2reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens2reflWhitepoint 1\n  addUserKnob {18 lens2reflectionGamma l \"refl gamma\" R 0 5}\n  lens2reflectionGamma 1\n  addUserKnob {6 lens2reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens2reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens2reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens2reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens3GRP l \"lens 03\" n 1}\n  lens3GRP 0\n  addUserKnob {6 lens3Active l active +STARTLINE}\n  lens3Active true\n  addUserKnob {14 lens3Size l size R 0 100}\n  lens3Size 13.5\n  addUserKnob {18 lens3Col l color R 0 10}\n  lens3Col {1.17 1.72 26}\n  addUserKnob {6 lens3Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens3Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens3Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens3Blur l blur R 0 50}\n  addUserKnob {7 lens3AxisPos l \"axis pos\" R -3 3}\n  lens3AxisPos -0.06\n  addUserKnob {4 lens3Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens3Diaphragm l diaphragm}\n  lens3Diaphragm 0.8\n  addUserKnob {7 lens3DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens3grainOpacity l \"grain opacity\"}\n  lens3grainOpacity 1\n  addUserKnob {7 lens3grainSize l \"grain size\" t \"\\t\" R 0 1000}\n  lens3grainSize 100\n  addUserKnob {7 lens3grainGain l \"grain gain\" R 0 3}\n  lens3grainGain 1\n  addUserKnob {7 lens3reflectionOpacity l \"refl opacity\"}\n  lens3reflectionOpacity 1\n  addUserKnob {7 lens3reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens3reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens3reflWhitepoint 1\n  addUserKnob {18 lens3reflectionGamma l \"refl gamma\" R 0 5}\n  lens3reflectionGamma 1\n  addUserKnob {6 lens3reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens3reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens3reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens3reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens4GRP l \"lens 04\" n 1}\n  lens4GRP 0\n  addUserKnob {6 lens4Active l active +STARTLINE}\n  lens4Active true\n  addUserKnob {14 lens4Size l size R 0 100}\n  lens4Size 2.05\n  addUserKnob {18 lens4Col l color R 0 10}\n  lens4Col {6.93 32 29.82}\n  addUserKnob {6 lens4Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens4Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens4Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens4Blur l blur R 0 50}\n  addUserKnob {7 lens4AxisPos l \"axis pos\" R -3 3}\n  lens4AxisPos 0.08\n  addUserKnob {4 lens4Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens4Diaphragm l diaphragm}\n  lens4Diaphragm 1\n  addUserKnob {7 lens4DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens4grainOpacity l \"grain opacity\"}\n  lens4grainOpacity 1\n  addUserKnob {7 lens4grainSize l \"grain size\" R 0 1000}\n  lens4grainSize 100\n  addUserKnob {7 lens4grainGain l \"grain gain\" R 0 3}\n  lens4grainGain 1\n  addUserKnob {7 lens4reflectionOpacity l \"refl opacity\"}\n  lens4reflectionOpacity 1\n  addUserKnob {7 lens4reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens4reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens4reflWhitepoint 1\n  addUserKnob {18 lens4reflectionGamma l \"refl gamma\" R 0 5}\n  lens4reflectionGamma 1\n  addUserKnob {6 lens4reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens4reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens4reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens4reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_3 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens5GRP l \"lens 05\" n 1}\n  lens5GRP 0\n  addUserKnob {6 lens5Active l active +STARTLINE}\n  lens5Active true\n  addUserKnob {14 lens5Size l size R 0 100}\n  lens5Size 200\n  addUserKnob {18 lens5Col l color R 0 10}\n  lens5Col {1.09 1.14 8}\n  addUserKnob {6 lens5Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens5Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens5Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens5Blur l blur R 0 50}\n  addUserKnob {7 lens5AxisPos l \"axis pos\" R -3 3}\n  lens5AxisPos 0.27\n  addUserKnob {4 lens5Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens5Diaphragm l diaphragm}\n  lens5Diaphragm 1\n  addUserKnob {7 lens5DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens5grainOpacity l \"grain opacity\"}\n  lens5grainOpacity 1\n  addUserKnob {7 lens5grainSize l \"grain size\" R 0 1000}\n  lens5grainSize 100\n  addUserKnob {7 lens5grainGain l \"grain gain\" R 0 3}\n  lens5grainGain 1\n  addUserKnob {7 lens5reflectionOpacity l \"refl opacity\"}\n  lens5reflectionOpacity 1\n  addUserKnob {7 lens5reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens5reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens5reflWhitepoint 1\n  addUserKnob {18 lens5reflectionGamma l \"refl gamma\" R 0 5}\n  lens5reflectionGamma 1\n  addUserKnob {6 lens5reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens5reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens5reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens5reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_4 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens6GRP l \"lens 06\" n 1}\n  lens6GRP 0\n  addUserKnob {6 lens6Active l active +STARTLINE}\n  lens6Active true\n  addUserKnob {14 lens6Size l size R 0 100}\n  lens6Size 1000\n  addUserKnob {18 lens6Col l color R 0 10}\n  lens6Col {50 6.38 0}\n  addUserKnob {6 lens6Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens6Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens6Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens6Blur l blur R 0 50}\n  addUserKnob {7 lens6AxisPos l \"axis pos\" R -3 3}\n  lens6AxisPos -1.08\n  addUserKnob {4 lens6Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens6Diaphragm l diaphragm}\n  lens6Diaphragm 1\n  addUserKnob {7 lens6DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens6grainOpacity l \"grain opacity\"}\n  lens6grainOpacity 1\n  addUserKnob {7 lens6grainSize l \"grain size\" R 0 1000}\n  lens6grainSize 100\n  addUserKnob {7 lens6grainGain l \"grain gain\" R 0 3}\n  lens6grainGain 1\n  addUserKnob {7 lens6reflectionOpacity l \"refl opacity\"}\n  lens6reflectionOpacity 1\n  addUserKnob {7 lens6reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens6reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens6reflWhitepoint 1\n  addUserKnob {18 lens6reflectionGamma l \"refl gamma\" R 0 5}\n  lens6reflectionGamma 1\n  addUserKnob {6 lens6reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens6reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens6reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens6reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_5 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens7GRP l \"lens 07\" n 1}\n  lens7GRP 0\n  addUserKnob {6 lens7Active l active +STARTLINE}\n  lens7Active true\n  addUserKnob {14 lens7Size l size R 0 100}\n  lens7Size 460\n  addUserKnob {18 lens7Col l color R 0 10}\n  lens7Col {0 3.959999084 80}\n  addUserKnob {6 lens7Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens7Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens7Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {16 lens7Blur l blur}\n  addUserKnob {7 lens7AxisPos l \"axis pos\" R -3 3}\n  lens7AxisPos -0.88\n  addUserKnob {4 lens7Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens7Diaphragm l diaphragm}\n  lens7Diaphragm 1\n  addUserKnob {7 lens7DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens7grainOpacity l \"grain opacity\"}\n  lens7grainOpacity 1\n  addUserKnob {7 lens7grainSize l \"grain size\" R 0 1000}\n  lens7grainSize 100\n  addUserKnob {7 lens7grainGain l \"grain gain\" R 0 3}\n  lens7grainGain 1\n  addUserKnob {7 lens7reflectionOpacity l \"refl opacity\"}\n  lens7reflectionOpacity 1\n  addUserKnob {7 lens7reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens7reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens7reflWhitepoint 1\n  addUserKnob {18 lens7reflectionGamma l \"refl gamma\" R 0 5}\n  lens7reflectionGamma 1\n  addUserKnob {6 lens7reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens7reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens7reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens7reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_6 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens8GRP l \"lens 08\" n 1}\n  lens8GRP 0\n  addUserKnob {6 lens8Active l active +STARTLINE}\n  lens8Active true\n  addUserKnob {14 lens8Size l size R 0 100}\n  lens8Size 450\n  addUserKnob {18 lens8Col l color R 0 10}\n  lens8Col {12 2.25 10.04}\n  addUserKnob {6 lens8Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens8Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens8Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens8Blur l blur R 0 10}\n  lens8Blur 9.9\n  addUserKnob {7 lens8AxisPos l \"axis pos\" R -3 3}\n  lens8AxisPos -0.69\n  addUserKnob {4 lens8Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens8Diaphragm l diaphragm}\n  lens8Diaphragm 1\n  addUserKnob {7 lens8DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens8grainOpacity l \"grain opacity\"}\n  lens8grainOpacity 1\n  addUserKnob {7 lens8grainSize l \"grain size\" R 0 1000}\n  lens8grainSize 100\n  addUserKnob {7 lens8grainGain l \"grain gain\" R 0 3}\n  lens8grainGain 1\n  addUserKnob {7 lens8reflectionOpacity l \"refl opacity\"}\n  lens8reflectionOpacity 1\n  addUserKnob {7 lens8reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens8reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens8reflWhitepoint 1\n  addUserKnob {18 lens8reflectionGamma l \"refl gamma\" R 0 5}\n  lens8reflectionGamma 1\n  addUserKnob {6 lens8reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens8reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens8reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens8reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_7 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens9GRP l \"lens 09\" n 1}\n  lens9GRP 0\n  addUserKnob {6 lens9Active l active +STARTLINE}\n  lens9Active true\n  addUserKnob {14 lens9Size l size R 0 100}\n  lens9Size 50.4\n  addUserKnob {18 lens9Col l color R 0 10}\n  lens9Col {0.9 1.012 3}\n  addUserKnob {6 lens9Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens9Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens9Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens9Blur l blur R 0 50}\n  lens9Blur 2.8\n  addUserKnob {7 lens9AxisPos l \"axis pos\" R -3 3}\n  lens9AxisPos 0.34\n  addUserKnob {4 lens9Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens9Diaphragm l diaphragm}\n  lens9Diaphragm 1\n  addUserKnob {7 lens9DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens9grainOpacity l \"grain opacity\"}\n  lens9grainOpacity 1\n  addUserKnob {7 lens9grainSize l \"grain size\" R 0 1000}\n  lens9grainSize 100\n  addUserKnob {7 lens9grainGain l \"grain gain\" R 0 3}\n  lens9grainGain 1\n  addUserKnob {7 lens9reflectionOpacity l \"refl opacity\"}\n  lens9reflectionOpacity 1\n  addUserKnob {7 lens9reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens9reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens9reflWhitepoint 1\n  addUserKnob {18 lens9reflectionGamma l \"refl gamma\" R 0 5}\n  lens9reflectionGamma 1\n  addUserKnob {6 lens9reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens9reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens9reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens9reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_8 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens10GRP l \"lens 10\" n 1}\n  lens10GRP 0\n  addUserKnob {6 lens10Active l active +STARTLINE}\n  lens10Active true\n  addUserKnob {14 lens10Size l size R 0 100}\n  lens10Size 85.6\n  addUserKnob {18 lens10Col l color R 0 10}\n  lens10Col {2.79 1.537 -2.6}\n  addUserKnob {6 lens10Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens10Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens10Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens10Blur l blur R 0 50}\n  lens10Blur 4.6\n  addUserKnob {7 lens10AxisPos l \"axis pos\" R -3 3}\n  lens10AxisPos 0.37\n  addUserKnob {4 lens10Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens10Diaphragm l diaphragm}\n  lens10Diaphragm 1\n  addUserKnob {7 lens10DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens10grainOpacity l \"grain opacity\"}\n  lens10grainOpacity 1\n  addUserKnob {7 lens10grainSize l \"grain size\" R 0 1000}\n  lens10grainSize 100\n  addUserKnob {7 lens10grainGain l \"grain gain\" R 0 3}\n  lens10grainGain 1\n  addUserKnob {7 lens10reflectionOpacity l \"refl opacity\"}\n  lens10reflectionOpacity 1\n  addUserKnob {7 lens10reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens10reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens10reflWhitepoint 1\n  addUserKnob {18 lens10reflectionGamma l \"refl gamma\" R 0 5}\n  lens10reflectionGamma 1\n  addUserKnob {6 lens10reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens10reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens10reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens10reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_9 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens11GRP l \"lens 11\" n 1}\n  lens11GRP 0\n  addUserKnob {6 lens11Active l active +STARTLINE}\n  lens11Active true\n  addUserKnob {14 lens11Size l size R 0 100}\n  lens11Size 83.5\n  addUserKnob {18 lens11Col l color R 0 10}\n  lens11Col {0 4.86 30}\n  addUserKnob {6 lens11Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens11Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens11Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens11Blur l blur R 0 50}\n  addUserKnob {7 lens11AxisPos l \"axis pos\" R -3 3}\n  lens11AxisPos 0.15\n  addUserKnob {4 lens11Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens11Diaphragm l diaphragm}\n  lens11Diaphragm 1\n  addUserKnob {7 lens11DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens11grainOpacity l \"grain opacity\"}\n  lens11grainOpacity 1\n  addUserKnob {7 lens11grainSize l \"grain size\" R 0 1000}\n  lens11grainSize 100\n  addUserKnob {7 lens11grainGain l \"grain gain\" R 0 3}\n  lens11grainGain 1\n  addUserKnob {7 lens11reflectionOpacity l \"refl opacity\"}\n  lens11reflectionOpacity 1\n  addUserKnob {7 lens11reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens11reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens11reflWhitepoint 1\n  addUserKnob {18 lens11reflectionGamma l \"refl gamma\" R 0 5}\n  lens11reflectionGamma 1\n  addUserKnob {6 lens11reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens11reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens11reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens11reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_10 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens12GRP l \"lens 12\" n 1}\n  lens12GRP 0\n  addUserKnob {6 lens12Active l active +STARTLINE}\n  lens12Active true\n  addUserKnob {14 lens12Size l size R 0 100}\n  lens12Size 40\n  addUserKnob {18 lens12Col l color R 0 10}\n  lens12Col {10 3.9 7.98}\n  addUserKnob {6 lens12Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens12Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens12Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens12Blur l blur R 0 10}\n  lens12Blur 4.6\n  addUserKnob {7 lens12AxisPos l \"axis pos\" R -3 3}\n  lens12AxisPos 0.44\n  addUserKnob {4 lens12Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\" \"\"}}\n  addUserKnob {7 lens12Diaphragm l diaphragm}\n  lens12Diaphragm 1\n  addUserKnob {7 lens12DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens12grainOpacity l \"grain opacity\"}\n  lens12grainOpacity 1\n  addUserKnob {7 lens12grainSize l \"grain size\" R 0 1000}\n  lens12grainSize 100\n  addUserKnob {7 lens12grainGain l \"grain gain\" R 0 3}\n  lens12grainGain 1\n  addUserKnob {7 lens12reflectionOpacity l \"refl opacity\"}\n  lens12reflectionOpacity 1\n  addUserKnob {7 lens12reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens12reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens12reflWhitepoint 1\n  addUserKnob {18 lens12reflectionGamma l \"refl gamma\" R 0 5}\n  lens12reflectionGamma 1\n  addUserKnob {6 lens12reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens12reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens12reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens12reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_11 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 len13GRP l \"lens 13\" n 1}\n  len13GRP 0\n  addUserKnob {6 lens13Active l active +STARTLINE}\n  lens13Active true\n  addUserKnob {14 lens13Size l size R 0 100}\n  lens13Size 1.4\n  addUserKnob {18 lens13Col l color R 0 10}\n  lens13Col {3.29 1.28 2.6}\n  addUserKnob {6 lens13Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens13Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens13Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens13Blur l blur R 0 50}\n  lens13Blur 5.6\n  addUserKnob {7 lens13AxisPos l \"axis pos\" R -3 3}\n  lens13AxisPos 0.45\n  addUserKnob {4 lens13Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon}}\n  addUserKnob {7 lens13Diaphragm l diaphragm}\n  lens13Diaphragm 1\n  addUserKnob {7 lens13DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens13grainOpacity l \"grain opacity\"}\n  lens13grainOpacity 1\n  addUserKnob {7 lens13grainSize l \"grain size\" R 0 1000}\n  lens13grainSize 100\n  addUserKnob {7 lens13grainGain l \"grain gain\" R 0 3}\n  lens13grainGain 1\n  addUserKnob {7 lens13reflectionOpacity l \"refl opacity\"}\n  lens13reflectionOpacity 1\n  addUserKnob {7 lens13reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens13reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens13reflWhitepoint 1\n  addUserKnob {18 lens13reflectionGamma l \"refl gamma\" R 0 5}\n  lens13reflectionGamma 1\n  addUserKnob {6 lens13reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens13reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens13reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens13reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_12 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens14GRP l \"lens 14\" n 1}\n  lens14GRP 0\n  addUserKnob {6 lens14Active l active +STARTLINE}\n  lens14Active true\n  addUserKnob {14 lens14Size l size R 0 100}\n  lens14Size 1\n  addUserKnob {18 lens14Col l color R 0 10}\n  lens14Col {1.64 0.74 1.3}\n  addUserKnob {6 lens14Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens14Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens14Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens14Blur l blur R 0 50}\n  lens14Blur 2\n  addUserKnob {7 lens14AxisPos l \"axis pos\" R -3 3}\n  lens14AxisPos 0.458\n  addUserKnob {4 lens14Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens14Diaphragm l diaphragm}\n  lens14Diaphragm 1\n  addUserKnob {7 lens14DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens14grainOpacity l \"grain opacity\"}\n  lens14grainOpacity 1\n  addUserKnob {7 lens14grainSize l \"grain size\" R 0 1000}\n  lens14grainSize 100\n  addUserKnob {7 lens14grainGain l \"grain gain\" R 0 3}\n  lens14grainGain 1\n  addUserKnob {7 lens14reflectionOpacity l \"refl opacity\"}\n  lens14reflectionOpacity 1\n  addUserKnob {7 lens14reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens14reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens14reflWhitepoint 1\n  addUserKnob {18 lens14reflectionGamma l \"refl gamma\" R 0 5}\n  lens14reflectionGamma 1\n  addUserKnob {6 lens14reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens14reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens14reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens14reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_13 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens15GRP l \"lens 15\" n 1}\n  lens15GRP 0\n  addUserKnob {6 lens15Active l active +STARTLINE}\n  lens15Active true\n  addUserKnob {14 lens15Size l size R 0 100}\n  lens15Size 1050\n  addUserKnob {18 lens15Col l color R 0 10}\n  lens15Col {80 24 49.19}\n  addUserKnob {6 lens15Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens15Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens15Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens15Blur l blur R 0 50}\n  addUserKnob {7 lens15AxisPos l \"axis pos\" R -3 3}\n  lens15AxisPos 0.8\n  addUserKnob {4 lens15Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens15Diaphragm l diaphragm}\n  lens15Diaphragm 1\n  addUserKnob {7 lens15DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens15grainOpacity l \"grain opacity\"}\n  lens15grainOpacity 1\n  addUserKnob {7 lens15grainSize l \"grain size\" R 0 1000}\n  lens15grainSize 100\n  addUserKnob {7 lens15grainGain l \"grain gain\" R 0 3}\n  lens15grainGain 1\n  addUserKnob {7 lens15reflectionOpacity l \"refl opacity\"}\n  lens15reflectionOpacity 1\n  addUserKnob {7 lens15reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens15reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens15reflWhitepoint 1\n  addUserKnob {18 lens15reflectionGamma l \"refl gamma\" R 0 5}\n  lens15reflectionGamma 1\n  addUserKnob {6 lens15reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens15reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens15reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens15reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_14 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens16GRP l \"lens 16\" n 1}\n  lens16GRP 0\n  addUserKnob {6 lens16Active l active +STARTLINE}\n  lens16Active true\n  addUserKnob {14 lens16Size l size R 0 100}\n  lens16Size 600\n  addUserKnob {18 lens16Col l color R 0 10}\n  lens16Col {30 7.29 12.7}\n  addUserKnob {6 lens16Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens16Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens16Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens16Blur l blur R 0 50}\n  addUserKnob {7 lens16AxisPos l \"axis pos\" R -3 3}\n  lens16AxisPos -0.42\n  addUserKnob {4 lens16Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens16Diaphragm l diaphragm}\n  lens16Diaphragm 1\n  addUserKnob {7 lens16DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens16grainOpacity l \"grain opacity\"}\n  lens16grainOpacity 1\n  addUserKnob {7 lens16grainSize l \"grain size\" R 0 1000}\n  lens16grainSize 100\n  addUserKnob {7 lens16grainGain l \"grain gain\" R 0 3}\n  lens16grainGain 1\n  addUserKnob {7 lens16reflectionOpacity l \"refl opacity\"}\n  lens16reflectionOpacity 1\n  addUserKnob {7 lens16reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens16reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens16reflWhitepoint 1\n  addUserKnob {18 lens16reflectionGamma l \"refl gamma\" R 0 5}\n  lens16reflectionGamma 1\n  addUserKnob {6 lens16reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens16reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens16reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens16reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_15 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens17GRP l \"lens 17\" n 1}\n  lens17GRP 0\n  addUserKnob {6 lens17Active l active +STARTLINE}\n  lens17Active true\n  addUserKnob {14 lens17Size l size R 0 100}\n  lens17Size 600\n  addUserKnob {18 lens17Col l color R 0 10}\n  lens17Col {25 7.5 8.08}\n  addUserKnob {6 lens17Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens17Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens17Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens17Blur l blur R 0 50}\n  lens17Blur 50\n  addUserKnob {7 lens17AxisPos l \"axis pos\" R -3 3}\n  lens17AxisPos 0.7\n  addUserKnob {4 lens17Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens17Diaphragm l diaphragm}\n  lens17Diaphragm 1\n  addUserKnob {7 lens17DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens17grainOpacity l \"grain opacity\"}\n  lens17grainOpacity 1\n  addUserKnob {7 lens17grainSize l \"grain size\" R 0 1000}\n  lens17grainSize 100\n  addUserKnob {7 lens17grainGain l \"grain gain\" R 0 3}\n  lens17grainGain 1\n  addUserKnob {7 lens17reflectionOpacity l \"refl opacity\"}\n  lens17reflectionOpacity 1\n  addUserKnob {7 lens17reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens17reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens17reflWhitepoint 1\n  addUserKnob {18 lens17reflectionGamma l \"refl gamma\" R 0 5}\n  lens17reflectionGamma 1\n  addUserKnob {6 lens17reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens17reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens17reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens17reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_16 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens18GRP l \"lens 18\" n 1}\n  lens18GRP 0\n  addUserKnob {6 lens18Active l active +STARTLINE}\n  lens18Active true\n  addUserKnob {14 lens18Size l size R 0 100}\n  lens18Size 270\n  addUserKnob {18 lens18Col l color R 0 10}\n  lens18Col {6.4 3.69 0.73}\n  addUserKnob {6 lens18Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens18Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens18Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens18Blur l blur R 0 50}\n  addUserKnob {7 lens18AxisPos l \"axis pos\" R -3 3}\n  lens18AxisPos -0.36\n  addUserKnob {4 lens18Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens18Diaphragm l diaphragm}\n  lens18Diaphragm 1\n  addUserKnob {7 lens18DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens18grainOpacity l \"grain opacity\"}\n  lens18grainOpacity 1\n  addUserKnob {7 lens18grainSize l \"grain size\" R 0 1000}\n  lens18grainSize 100\n  addUserKnob {7 lens18grainGain l \"grain gain\" R 0 3}\n  lens18grainGain 1\n  addUserKnob {7 lens18reflectionOpacity l \"refl opacity\"}\n  lens18reflectionOpacity 1\n  addUserKnob {7 lens18reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens18reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens18reflWhitepoint 1\n  addUserKnob {18 lens18reflectionGamma l \"refl gamma\" R 0 5}\n  lens18reflectionGamma 1\n  addUserKnob {6 lens18reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens18reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens18reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens18reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_17 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens19GRP l \"lens 19\" n 1}\n  lens19GRP 0\n  addUserKnob {6 lens19Active l active +STARTLINE}\n  lens19Active true\n  addUserKnob {14 lens19Size l size R 0 100}\n  lens19Size 99\n  addUserKnob {18 lens19Col l color R 0 10}\n  lens19Col {5.249 7.51 40}\n  addUserKnob {6 lens19Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens19Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens19Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens19Blur l blur R 0 50}\n  lens19Blur 20\n  addUserKnob {7 lens19AxisPos l \"axis pos\" R -3 3}\n  lens19AxisPos -0.16\n  addUserKnob {4 lens19Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens19Diaphragm l diaphragm}\n  lens19Diaphragm 1\n  addUserKnob {7 lens19DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens19grainOpacity l \"grain opacity\"}\n  lens19grainOpacity 1\n  addUserKnob {7 lens19grainSize l \"grain size\" R 0 1000}\n  lens19grainSize 100\n  addUserKnob {7 lens19grainGain l \"grain gain\" R 0 3}\n  lens19grainGain 1\n  addUserKnob {7 lens19reflectionOpacity l \"refl opacity\"}\n  lens19reflectionOpacity 1\n  addUserKnob {7 lens19reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens19reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens19reflWhitepoint 1\n  addUserKnob {18 lens19reflectionGamma l \"refl gamma\" R 0 5}\n  lens19reflectionGamma 1\n  addUserKnob {6 lens19reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens19reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens19reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens19reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_18 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 lens20GRP l \"lens 20\" n 1}\n  lens20GRP 0\n  addUserKnob {6 lens20Active l active +STARTLINE}\n  lens20Active true\n  addUserKnob {14 lens20Size l size R 0 100}\n  lens20Size 9.4\n  addUserKnob {18 lens20Col l color R 0 10}\n  lens20Col {0.03 0.006 0.015}\n  addUserKnob {6 lens20Col_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens20Col_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens20Col_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens20Blur l blur R 0 50}\n  lens20Blur 4\n  addUserKnob {7 lens20AxisPos l \"axis pos\" R -3 3}\n  lens20AxisPos 0.5\n  addUserKnob {4 lens20Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon \"\"}}\n  addUserKnob {7 lens20Diaphragm l diaphragm}\n  lens20Diaphragm 1\n  addUserKnob {7 lens20DiaphRot l \"diaph rotation\" R -180 180}\n  addUserKnob {7 lens20grainOpacity l \"grain opacity\"}\n  lens20grainOpacity 1\n  addUserKnob {7 lens20grainSize l \"grain size\" R 0 1000}\n  lens20grainSize 100\n  addUserKnob {7 lens20grainGain l \"grain gain\" R 0 3}\n  lens20grainGain 1\n  addUserKnob {7 lens20reflectionOpacity l \"refl opacity\"}\n  lens20reflectionOpacity 1\n  addUserKnob {7 lens20reflectionRotation l \"refl rotation\" R 0 360}\n  addUserKnob {7 lens20reflWhitepoint l \"refl whitepoint\" R 0 2}\n  lens20reflWhitepoint 1\n  addUserKnob {18 lens20reflectionGamma l \"refl gamma\" R 0 5}\n  lens20reflectionGamma 1\n  addUserKnob {6 lens20reflectionGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens20reflectionGamma_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 lens20reflectionGamma_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 lens20reflectionBlur l \"refl blur\" R 0 50}\n  addUserKnob {20 endGroup_19 l endGroup n -1}\n }\nset N49978760 [stack 0]\n Dot {\n  name Dot21\n  xpos 274\n  ypos 566\n }\n SphericalTransform {\n  fix true\n  name _SphericalTransformLensALL\n  xpos 240\n  ypos 960\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  resize distort\n  name _ReformatReflectionLensALL\n  xpos 240\n  ypos 1002\n }\n Shuffle {\n  alpha white\n  name _ShuffleCleanALensALL\n  xpos 240\n  ypos 1044\n }\n Dot {\n  name Dot26\n  xpos 274\n  ypos 1128\n }\nset N474c77c0 [stack 0]\n Dot {\n  name Dot22\n  xpos 274\n  ypos 1560\n }\nset N3f716ff0 [stack 0]\n Dot {\n  name Dot23\n  xpos 274\n  ypos 1992\n }\nset N4a48a940 [stack 0]\n Dot {\n  name Dot24\n  xpos 274\n  ypos 2428\n }\nset N47423090 [stack 0]\n Dot {\n  name Dot27\n  xpos 274\n  ypos 2889\n }\nset N3f719100 [stack 0]\n Dot {\n  name Dot28\n  xpos 274\n  ypos 3335\n }\nset N4a6543b0 [stack 0]\n Dot {\n  name Dot30\n  xpos 274\n  ypos 3791\n }\nset N4a469eb0 [stack 0]\n Dot {\n  name Dot31\n  xpos 274\n  ypos 4338\n }\nset N676f4660 [stack 0]\n Dot {\n  name Dot32\n  xpos 274\n  ypos 4811\n }\nset N4a6df9c0 [stack 0]\n Dot {\n  name Dot33\n  xpos 274\n  ypos 5253\n }\nset N4a6925e0 [stack 0]\n Dot {\n  name Dot29\n  xpos 274\n  ypos 5734\n }\nset N6662b930 [stack 0]\n Dot {\n  name Dot34\n  xpos 274\n  ypos 6211\n }\nset N67043a20 [stack 0]\n Dot {\n  name Dot35\n  xpos 274\n  ypos 6685\n }\nset N6d8e0a10 [stack 0]\n Dot {\n  name Dot36\n  xpos 274\n  ypos 7163\n }\nset N4a2dc600 [stack 0]\n Dot {\n  name Dot37\n  xpos 274\n  ypos 7632\n }\nset N474278a0 [stack 0]\n Dot {\n  name Dot38\n  xpos 274\n  ypos 8100\n }\nset N4a542850 [stack 0]\n Dot {\n  name Dot39\n  xpos 273\n  ypos 8578\n }\nset N4a541e20 [stack 0]\n Dot {\n  name Dot40\n  xpos 273\n  ypos 9052\n }\nset N4a58cd50 [stack 0]\n Dot {\n  name Dot41\n  xpos 273\n  ypos 9548\n }\nset N66a55920 [stack 0]\n Dot {\n  name Dot25\n  xpos 273\n  ypos 10031\n }\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens20\n  xpos 402\n  ypos 10026\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens20\n  xpos 402\n  ypos 10054\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens20\n  xpos 402\n  ypos 10082\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/dodecagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read19\n  xpos 1735\n  ypos 632\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  note_font_color 0xffffffff\n  xpos 1735\n  ypos 712\n }\nset N4a2244b0 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/undecagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read26\n  xpos 1649\n  ypos 632\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle2\n  note_font_color 0xffffffff\n  xpos 1649\n  ypos 712\n }\nset N4a638510 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/decagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read3\n  xpos 1562\n  ypos 633\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  note_font_color 0xffffffff\n  xpos 1562\n  ypos 713\n }\nset N6703bbe0 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/nonagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read22\n  xpos 1475\n  ypos 632\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle4\n  note_font_color 0xffffffff\n  xpos 1475\n  ypos 712\n }\nset N4993c8b0 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/octogon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read23\n  xpos 1388\n  ypos 632\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle5\n  note_font_color 0xffffffff\n  xpos 1388\n  ypos 712\n }\nset N4a1d10d0 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/heptagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read20\n  xpos 1301\n  ypos 632\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle8\n  note_font_color 0xffffffff\n  xpos 1301\n  ypos 712\n }\nset N4a055400 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/hexagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read21\n  xpos 1214\n  ypos 633\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle6\n  note_font_color 0xffffffff\n  xpos 1214\n  ypos 713\n }\nset N4a07d0f0 [stack 0]\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/pentagon.png\n  format \"512 512 0 0 512 512 1 square_512\"\n  origset true\n  name Read24\n  xpos 1128\n  ypos 633\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle7\n  note_font_color 0xffffffff\n  xpos 1128\n  ypos 713\n }\nset N49b24150 [stack 0]\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens20Polygon i}}\n  name _switchPolygon20\n  xpos 684\n  ypos 9983\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens20DiaphRot i}}\n  scale {{_INPUT_CTRL.lens20Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon20\n  xpos 684\n  ypos 10012\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens20\n  xpos 684\n  ypos 10040\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens20\n  xpos 684\n  ypos 10082\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/twoCircle2.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read12\n  xpos 893\n  ypos 3398\n }\nset N49bb6c00 [stack 0]\n Dot {\n  name Dot8\n  xpos 927\n  ypos 6783\n }\nset N49b4e340 [stack 0]\n Dot {\n  name Dot13\n  xpos 927\n  ypos 8198\n }\nset N477b0ad0 [stack 0]\n Dot {\n  name Dot16\n  xpos 927\n  ypos 10129\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon20\n  xpos 684\n  ypos 10124\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask20\n  xpos 684\n  ypos 10153\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number30\n  xpos 574\n  ypos 10160\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{123 89.3}\n{123 102.5}\n{161.3 104 7.1 0.64 14.9}\n{169.1 124.7}\n{127.3 123.1 15.2 2.59 16.7}\n{114.3 159.5 19.5 1.33 18.5}\n{170.4 176.6 19.5 -0.72 18.8}\n{183.7 141.3}\n{169.5 138}\n{157 167.5 16.1 2.79 15.4}\n{127.3 155.2 3.5 4.4 9.3}\n{135.5 135.8 11.8 5.78 11}\n{183.7 141.3}\n{172.6 95.5 17.6 4.01 19.1}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number31\n  xpos 574\n  ypos 10189\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens20Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens20Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize20\n  xpos 574\n  ypos 10218\n }\npush $N49978760\n Dot {\n  name Dot1\n  xpos 72\n  ypos 528\n }\n Multiply {\n  value 0\n  name _mkBlack\n  xpos 38\n  ypos 701\n }\nset N49dbb260 [stack 0]\n Dot {\n  name Dot12\n  xpos -149\n  ypos 713\n }\nset N49b99050 [stack 0]\n Dot {\n  name Dot11\n  xpos -259\n  ypos 713\n }\n Add {\n  value 1\n  name _mkWhite\n  xpos -293\n  ypos 772\n }\n Clamp {\n  name _vignetteClamp\n  xpos -293\n  ypos 815\n }\n Crop {\n  box {{_INPUT_CTRL.width-((_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)) i} {_INPUT_CTRL.height-((_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)-(_INPUT_CTRL.width-_INPUT_CTRL.height)) i} {(_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2) i} {(_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)-(_INPUT_CTRL.width-_INPUT_CTRL.height) i}}\n  name _cropVignette\n  xpos -293\n  ypos 858\n }\npush $N49b99050\n Add {\n  value {{1-_INPUT_CTRL.vignetteDarkness i}}\n  name _vignetteDarkness\n  xpos -183\n  ypos 772\n }\n Merge2 {\n  inputs 2\n  name _compVignette\n  xpos -183\n  ypos 858\n }\n Blur {\n  size {{_cropVignette.box.x*0.8 i}}\n  name Blur2\n  xpos -183\n  ypos 887\n }\npush $N49978760\n Clamp {\n  name _clampCol\n  xpos 310\n  ypos 516\n }\n Saturation {\n  saturation {{_INPUT_CTRL.sourceSat i}}\n  name _sourceSaturation\n  xpos 310\n  ypos 617\n }\npush $N49978760\n Expression {\n  temp_name0 X\n  temp_expr0 (_INPUT_CTRL.brightspot/pow((_INPUT_CTRL.brightspot-_INPUT_CTRL.threshold),_INPUT_CTRL.gamma))*pow(((0.2126*r+0.7152*g+0.0722*b)-_INPUT_CTRL.threshold),(_INPUT_CTRL.gamma+0.000000001))\n  expr0 X\n  expr1 X\n  expr2 X\n  expr3 X\n  name _curvOp\n  xpos 153\n  ypos 610\n }\n Clamp {\n  minimum_enable false\n  maximum {{_INPUT_CTRL.brightspot i}}\n  MinClampTo_enable true\n  MaxClampTo {{_INPUT_CTRL.brightspot i}}\n  MaxClampTo_enable true\n  name _resultClamp\n  xpos 153\n  ypos 639\n  disable {{1-(_INPUT_CTRL.clampBright) i}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{_INPUT_CTRL.sourceCol i}}\n  name _multCol\n  xpos 310\n  ypos 646\n }\n NoOp {\n  name _GAMMA_RESULT\n  xpos 310\n  ypos 674\n }\nset N499e6c00 [stack 0]\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multVignette\n  xpos 310\n  ypos 894\n  disable {{1-_INPUT_CTRL.vignetteActive i}}\n }\nset N67220f40 [stack 0]\n NoOp {\n  name _inputToBokeh20\n  xpos 473\n  ypos 10218\n }\n Transform {\n  scale {{_INPUT_CTRL.lens20AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource20\n  xpos 473\n  ypos 10247\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens20\n  xpos 574\n  ypos 10247\n }\n Multiply {\n  value {{_INPUT_CTRL.lens20Col.r i} {_INPUT_CTRL.lens20Col.g i} {_INPUT_CTRL.lens20Col.b i} 0}\n  name _colorLens20\n  xpos 574\n  ypos 10276\n }\n Blur {\n  size {{_INPUT_CTRL.lens20Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens20\n  xpos 574\n  ypos 10319\n }\npush $N66a55920\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens19\n  xpos 401\n  ypos 9543\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens19\n  xpos 401\n  ypos 9571\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens19\n  xpos 401\n  ypos 9599\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens19Polygon i}}\n  name _switchPolygon19\n  xpos 683\n  ypos 9500\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens19DiaphRot i}}\n  scale {{_INPUT_CTRL.lens19Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon19\n  xpos 683\n  ypos 9529\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens19\n  xpos 683\n  ypos 9557\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens19\n  xpos 683\n  ypos 9599\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/circleNoise1.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read7\n  xpos 1110\n  ypos 2055\n }\nset N4996bc50 [stack 0]\n Dot {\n  name Dot5\n  xpos 1144\n  ypos 5351\n }\nset N4995abf0 [stack 0]\n Dot {\n  name Dot15\n  xpos 1143\n  ypos 9646\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon19\n  xpos 683\n  ypos 9641\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask19\n  xpos 683\n  ypos 9670\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number28\n  xpos 573\n  ypos 9677\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{123 89.3}\n{123 102.5}\n{161.3 104 7.1 0.64 14.9}\n{169.1 124.7}\n{127.3 123.1 15.2 2.59 16.7}\n{114.3 159.5 19.5 1.33 18.5}\n{170.4 176.6 19.5 -0.72 18.8}\n{183.7 141.3}\n{169.5 138}\n{157 167.5 16.1 2.79 15.4}\n{127.3 155.2 3.5 4.4 9.3}\n{135.5 135.8 11.8 5.78 11}\n{183.7 141.3}\n{172.6 95.5 17.6 4.01 19.1}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number29\n  xpos 573\n  ypos 9706\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens19Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens19Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize19\n  xpos 573\n  ypos 9735\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh19\n  xpos 472\n  ypos 9735\n }\n Transform {\n  scale {{_INPUT_CTRL.lens19AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource19\n  xpos 472\n  ypos 9764\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens19\n  xpos 573\n  ypos 9764\n }\n Multiply {\n  value {{_INPUT_CTRL.lens19Col.r i} {_INPUT_CTRL.lens19Col.g i} {_INPUT_CTRL.lens19Col.b i} 0}\n  name _colorLens19\n  xpos 573\n  ypos 9793\n }\n Blur {\n  size {{_INPUT_CTRL.lens19Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens19\n  xpos 573\n  ypos 9836\n }\npush $N4a58cd50\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens18\n  xpos 401\n  ypos 9047\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens18\n  xpos 401\n  ypos 9075\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens18\n  xpos 401\n  ypos 9103\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens18Polygon i}}\n  name _switchPolygon18\n  xpos 683\n  ypos 9004\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens18DiaphRot i}}\n  scale {{_INPUT_CTRL.lens18Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon18\n  xpos 683\n  ypos 9033\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens18\n  xpos 683\n  ypos 9061\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens18\n  xpos 683\n  ypos 9103\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/circleHard1.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read14\n  xpos 817\n  ypos 3854\n }\nset N4a1f2640 [stack 0]\n Dot {\n  name Dot9\n  xpos 851\n  ypos 7261\n }\nset N67230a50 [stack 0]\n Dot {\n  name Dot10\n  xpos 851\n  ypos 7730\n }\nset N4a1df840 [stack 0]\n Dot {\n  name Dot2\n  xpos 850\n  ypos 9150\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon18\n  xpos 683\n  ypos 9145\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask18\n  xpos 683\n  ypos 9174\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number26\n  xpos 573\n  ypos 9181\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{159.8 178.7 1.4 -1.72 4.3 1.7 0 0 0 0 0 1.7}\n{159.4 167.3 4.7 -3.07 2.5 1.44 0 0 0 0 0 1.44}\n{144.1 152.3 8.9 -1.57 13.4}\n{157.2 136 6.1 0.68 2.9 -1.3 0 0 0 0 0 -1.3}\n{173.6 153.5 11.3 -4.79 14}\n{159.6 167.6 2.1 1.59 4.4 1.47 0 0 0 0 0 1.47}\n{159.8 178.7 8.6 -0.04 3.9 1.55 0 0 0 0 0 1.55}\n{185.7 152.5 18.1 -1.56 22.7}\n{156.8 123.6 3.2 2.78 1}\n{133.4 150.5 27.6 1.55 16.4}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number8\n  xpos 573\n  ypos 9210\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{161.2 78.4 1.3 1.48 4.3 1.7 0 0 0 0 0 1.7}\n{160.7 90.8 4.7 0.13 2.5 1.44 0 0 0 0 0 1.44}\n{177.5 108.8 8.8 1.63 13.3}\n{160.9 125.2 6 3.88 2.9 -1.3 0 0 0 0 0 -1.3}\n{144.7 105.3 11.2 -1.59 13.9}\n{160.5 90.5 2.1 4.79 4.4 1.47 0 0 0 0 0 1.47}\n{161.2 78.4 8.5 3.16 3.9 1.55 0 0 0 0 0 1.55}\n{132.7 105.7 18 1.64 22.6}\n{160.6 137.5 3.1 5.98 1}\n{188 111.1 27.4 4.75 16.3}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number8_2\n  xpos 574\n  ypos 9239\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens18Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens18Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize18\n  xpos 574\n  ypos 9268\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh18\n  xpos 473\n  ypos 9268\n }\n Transform {\n  scale {{_INPUT_CTRL.lens18AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource18\n  xpos 473\n  ypos 9297\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens18\n  xpos 574\n  ypos 9297\n }\n Multiply {\n  value {{_INPUT_CTRL.lens18Col.r i} {_INPUT_CTRL.lens18Col.g i} {_INPUT_CTRL.lens18Col.b i} 0}\n  name _colorLens18\n  xpos 574\n  ypos 9326\n }\n Blur {\n  size {{_INPUT_CTRL.lens18Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens18\n  xpos 574\n  ypos 9369\n }\npush $N4a541e20\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens17\n  xpos 403\n  ypos 8573\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens17\n  xpos 403\n  ypos 8601\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens17\n  xpos 403\n  ypos 8629\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens17Polygon i}}\n  name _switchPolygon17\n  xpos 685\n  ypos 8530\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens17DiaphRot i}}\n  scale {{_INPUT_CTRL.lens17Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon17\n  xpos 685\n  ypos 8559\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens17\n  xpos 685\n  ypos 8587\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens17\n  xpos 685\n  ypos 8629\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/circleBlur1.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read9\n  xpos 1035\n  ypos 2491\n }\nset N4a5c4aa0 [stack 0]\n Dot {\n  name Dot6\n  xpos 1069\n  ypos 5832\n }\nset N4a5e2670 [stack 0]\n Dot {\n  name Dot14\n  xpos 1069\n  ypos 8676\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon17\n  xpos 685\n  ypos 8671\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask17\n  xpos 685\n  ypos 8700\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number24\n  xpos 575\n  ypos 8707\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{120.4 178.9}\n{120 164.1}\n{166.3 164.8}\n{128.3 88.5}\n{147.1 87.9}\n{184.7 163.7}\n{185.5 180.2}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number25\n  xpos 575\n  ypos 8736\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens17Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens17Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize17\n  xpos 575\n  ypos 8765\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh17\n  xpos 474\n  ypos 8765\n }\n Transform {\n  scale {{_INPUT_CTRL.lens17AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource17\n  xpos 474\n  ypos 8794\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens17\n  xpos 575\n  ypos 8794\n }\n Multiply {\n  value {{_INPUT_CTRL.lens17Col.r i} {_INPUT_CTRL.lens17Col.g i} {_INPUT_CTRL.lens17Col.b i} 0}\n  name _colorLens17\n  xpos 575\n  ypos 8823\n }\n Blur {\n  size {{_INPUT_CTRL.lens17Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens17\n  xpos 575\n  ypos 8866\n }\npush $N4a542850\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens16\n  xpos 403\n  ypos 8095\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens16\n  xpos 403\n  ypos 8123\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens16\n  xpos 403\n  ypos 8151\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens16Polygon i}}\n  name _switchPolygon16\n  xpos 685\n  ypos 8052\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens16DiaphRot i}}\n  scale {{_INPUT_CTRL.lens16Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon16\n  xpos 685\n  ypos 8081\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens16\n  xpos 685\n  ypos 8109\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens16\n  xpos 685\n  ypos 8151\n }\npush $N477b0ad0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon16\n  xpos 685\n  ypos 8193\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask16\n  xpos 685\n  ypos 8222\n }\n Bezier {\n  replace true\n  points {{\n{90.2 180.4}\n{110 179.9}\n{111 87.6}\n{89.8 86.8}\n{89.8 155.4}\n{75.5 143.4}\n{63.3 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number22\n  xpos 575\n  ypos 8229\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{180.5 180.1}\n{180.5 166.6}\n{141.4 165.1 7.2 -2.5 15.2}\n{133.5 143.9}\n{176.1 145.6 15.6 -0.55 17}\n{189.7 108.4 15.6 -1.76 18.9}\n{130.8 90.1 19.9 -3.94 24.2}\n{118.7 126.8}\n{133.2 129.9}\n{145.8 100.2 16.4 -0.35 15.7}\n{176.1 112.8 3.6 1.34 3.6}\n{167.7 132.6 12.1 2.64 11.2}\n{118.7 126.5}\n{129.8 173.8 18 0.87 19.5}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number23\n  xpos 575\n  ypos 8258\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens16Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens16Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize16\n  xpos 575\n  ypos 8287\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh16\n  xpos 474\n  ypos 8287\n }\n Transform {\n  scale {{_INPUT_CTRL.lens16AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource16\n  xpos 474\n  ypos 8316\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens16\n  xpos 575\n  ypos 8316\n }\n Multiply {\n  value {{_INPUT_CTRL.lens16Col.r i} {_INPUT_CTRL.lens16Col.g i} {_INPUT_CTRL.lens16Col.b i} 0}\n  name _colorLens16\n  xpos 575\n  ypos 8345\n }\n Blur {\n  size {{_INPUT_CTRL.lens16Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens16\n  xpos 575\n  ypos 8388\n }\npush $N474278a0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens15\n  xpos 403\n  ypos 7627\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens15\n  xpos 403\n  ypos 7655\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens15\n  xpos 403\n  ypos 7683\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens15Polygon i}}\n  name _switchPolygon15\n  xpos 685\n  ypos 7584\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens15DiaphRot i}}\n  scale {{_INPUT_CTRL.lens15Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon15\n  xpos 685\n  ypos 7613\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens15\n  xpos 685\n  ypos 7641\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens15\n  xpos 685\n  ypos 7683\n }\npush $N4a1df840\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon15\n  xpos 685\n  ypos 7725\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask15\n  xpos 685\n  ypos 7754\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number20\n  xpos 575\n  ypos 7761\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{179.3 178.7}\n{179.3 164.8}\n{133.6 165.5}\n{134.1 146.6}\n{175.1 144.5 15 -0.55 16.4}\n{188.1 108.6 15 -1.76 18.3}\n{147.3 85.8 9.6 -3.39 14.2}\n{118.7 94.6}\n{123.3 109.8}\n{151.1 100.9 11 -0.02 10.3}\n{174.6 112.8 3.5 1.34 3.5}\n{167.6 133.1 11.6 2.64 10.8}\n{120.3 127}\n{120.3 179.4}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number21\n  xpos 575\n  ypos 7790\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens15Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens15Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize15\n  xpos 575\n  ypos 7819\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh15\n  xpos 474\n  ypos 7819\n }\n Transform {\n  scale {{_INPUT_CTRL.lens15AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource15\n  xpos 474\n  ypos 7848\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens15\n  xpos 575\n  ypos 7848\n }\n Multiply {\n  value {{_INPUT_CTRL.lens15Col.r i} {_INPUT_CTRL.lens15Col.g i} {_INPUT_CTRL.lens15Col.b i} 0}\n  name _colorLens15\n  xpos 575\n  ypos 7878\n }\n Blur {\n  size {{_INPUT_CTRL.lens15Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens15\n  xpos 575\n  ypos 7920\n }\npush $N4a2dc600\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens14\n  xpos 406\n  ypos 7158\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens14\n  xpos 406\n  ypos 7186\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens14\n  xpos 406\n  ypos 7214\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens14Polygon i}}\n  name _switchPolygon14\n  xpos 688\n  ypos 7115\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens14DiaphRot i}}\n  scale {{_INPUT_CTRL.lens14Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon14\n  xpos 688\n  ypos 7144\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens14\n  xpos 688\n  ypos 7172\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens14\n  xpos 688\n  ypos 7214\n }\npush $N67230a50\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon14\n  xpos 688\n  ypos 7256\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask14\n  xpos 688\n  ypos 7285\n }\n Bezier {\n  replace true\n  points {{\n{87.8 180.4}\n{107.6 179.9}\n{108.6 87.6}\n{87.4 86.8}\n{87.4 155.4}\n{73.1 143.4}\n{60.9 158.9}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number18\n  xpos 578\n  ypos 7292\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{159.5 183}\n{118.6 121.8}\n{119.3 100.1}\n{153.8 102.3}\n{154 86.4}\n{169 89}\n{168.6 104.3}\n{181 105.2}\n{180.5 121.8}\n{168.1 120.3}\n{168.2 131.5}\n{153.8 130.8}\n{154.4 120.2}\n{137 119.2}\n{173.5 176.2}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number19\n  xpos 578\n  ypos 7321\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens14Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens14Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize14\n  xpos 578\n  ypos 7350\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh14\n  xpos 477\n  ypos 7350\n }\n Transform {\n  scale {{_INPUT_CTRL.lens14AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource14\n  xpos 477\n  ypos 7379\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens14\n  xpos 578\n  ypos 7379\n }\n Multiply {\n  value {{_INPUT_CTRL.lens14Col.r i} {_INPUT_CTRL.lens14Col.g i} {_INPUT_CTRL.lens14Col.b i} 0}\n  name _colorLens14\n  xpos 578\n  ypos 7408\n }\n Blur {\n  size {{_INPUT_CTRL.lens14Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens14\n  xpos 578\n  ypos 7451\n }\npush $N6d8e0a10\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens13\n  xpos 406\n  ypos 6680\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens13\n  xpos 406\n  ypos 6708\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens13\n  xpos 406\n  ypos 6736\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens13Polygon i}}\n  name _switchPolygon13\n  xpos 688\n  ypos 6637\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens13DiaphRot i}}\n  scale {{_INPUT_CTRL.lens13Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon13\n  xpos 688\n  ypos 6666\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens13\n  xpos 688\n  ypos 6694\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens13\n  xpos 688\n  ypos 6736\n }\npush $N49b4e340\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon13\n  xpos 688\n  ypos 6778\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask13\n  xpos 688\n  ypos 6807\n }\n Bezier {\n  replace true\n  points {{\n{91.5 175.1}\n{109.1 174.7}\n{110 92.6}\n{91.1 91.9}\n{91.1 152.9}\n{78.4 142.2}\n{67.6 156}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number16\n  xpos 578\n  ypos 6814\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{125 172.8}\n{142.6 180.8 19.6 0.25 15.5}\n{173.4 150.2 14.3 -1.84 18.3}\n{155.4 134.4}\n{177.4 103.8 30.5 -1.76 27.9}\n{126.4 89}\n{126.6 103.8}\n{161.2 107.8 18.9 1.34 17.9}\n{135.6 126.4}\n{135.4 142.2}\n{159.8 155.8 23.6 1.72 6.8}\n{131.2 161.6}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number17\n  xpos 578\n  ypos 6843\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens13Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens13Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize13\n  xpos 578\n  ypos 6872\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh13\n  xpos 477\n  ypos 6872\n }\n Transform {\n  scale {{_INPUT_CTRL.lens13AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource13\n  xpos 477\n  ypos 6901\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens13\n  xpos 578\n  ypos 6901\n }\n Multiply {\n  value {{_INPUT_CTRL.lens13Col.r i} {_INPUT_CTRL.lens13Col.g i} {_INPUT_CTRL.lens13Col.b i} 0}\n  name _colorLens13\n  xpos 578\n  ypos 6930\n }\n Blur {\n  size {{_INPUT_CTRL.lens13Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens13\n  xpos 578\n  ypos 6973\n }\npush $N67043a20\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens12\n  xpos 406\n  ypos 6206\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens12\n  xpos 406\n  ypos 6234\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens12\n  xpos 406\n  ypos 6262\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens12Polygon i}}\n  name _switchPolygon12\n  xpos 688\n  ypos 6163\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens12DiaphRot i}}\n  scale {{_INPUT_CTRL.lens12Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon12\n  xpos 688\n  ypos 6192\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens12\n  xpos 688\n  ypos 6220\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens12\n  xpos 688\n  ypos 6262\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/twoCircle1.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read11\n  xpos 964\n  ypos 2952\n }\nset N4a09bae0 [stack 0]\n Dot {\n  name Dot7\n  xpos 998\n  ypos 6309\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon12\n  xpos 688\n  ypos 6304\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask12\n  xpos 688\n  ypos 6333\n }\n Bezier {\n  replace true\n  points {{\n{91.5 175.1}\n{109.1 174.7}\n{110 92.6}\n{91.1 91.9}\n{91.1 152.9}\n{78.4 142.2}\n{67.6 156}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number14\n  xpos 578\n  ypos 6340\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{115.9 160.7}\n{143.6 176.4 17.4 0.25 13.8}\n{172.7 149.4 18.4 -1.88 16.3}\n{143.2 111.5}\n{177.2 111.5}\n{177.7 93.2}\n{121.9 93.2}\n{122.5 112.2}\n{156.9 152.6 21 1.72 6}\n{123.2 147.1}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number15\n  xpos 578\n  ypos 6369\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens12Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens12Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize12\n  xpos 578\n  ypos 6398\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh12\n  xpos 477\n  ypos 6398\n }\n Transform {\n  scale {{_INPUT_CTRL.lens12AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource12\n  xpos 477\n  ypos 6427\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens12\n  xpos 578\n  ypos 6427\n }\n Multiply {\n  value {{_INPUT_CTRL.lens12Col.r i} {_INPUT_CTRL.lens12Col.g i} {_INPUT_CTRL.lens12Col.b i} 0}\n  name _colorLens12\n  xpos 578\n  ypos 6456\n }\n Blur {\n  size {{_INPUT_CTRL.lens12Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens12\n  xpos 578\n  ypos 6499\n }\npush $N6662b930\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens11\n  xpos 406\n  ypos 5729\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens11\n  xpos 406\n  ypos 5757\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens11\n  xpos 406\n  ypos 5785\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens11Polygon i}}\n  name _switchPolygon11\n  xpos 688\n  ypos 5686\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens11DiaphRot i}}\n  scale {{_INPUT_CTRL.lens11Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon11\n  xpos 688\n  ypos 5715\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens11\n  xpos 688\n  ypos 5743\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens11\n  xpos 688\n  ypos 5785\n }\npush $N4a5e2670\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon11\n  xpos 688\n  ypos 5827\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask11\n  xpos 688\n  ypos 5856\n }\n Bezier {\n  replace true\n  points {{\n{103.8 170.6}\n{119.4 170.3}\n{120.2 97.4}\n{103.4 96.8}\n{103.4 150.9}\n{92.2 141.4}\n{82.6 153.7}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number13\n  xpos 578\n  ypos 5863\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{146.2 171.4}\n{161.8 171.1}\n{162.6 98.2}\n{145.8 97.6}\n{145.8 151.7}\n{134.6 142.2}\n{125 154.5}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number11\n  xpos 578\n  ypos 5892\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens11Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens11Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize11\n  xpos 578\n  ypos 5921\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh11\n  xpos 477\n  ypos 5921\n }\n Transform {\n  scale {{_INPUT_CTRL.lens11AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource11\n  xpos 477\n  ypos 5950\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens11\n  xpos 578\n  ypos 5950\n }\n Multiply {\n  value {{_INPUT_CTRL.lens11Col.r i} {_INPUT_CTRL.lens11Col.g i} {_INPUT_CTRL.lens11Col.b i} 0}\n  name _colorLens11\n  xpos 578\n  ypos 5979\n }\n Blur {\n  size {{_INPUT_CTRL.lens11Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens11\n  xpos 578\n  ypos 6022\n }\npush $N4a6925e0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens10\n  xpos 402\n  ypos 5248\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens10\n  xpos 402\n  ypos 5276\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens10\n  xpos 402\n  ypos 5304\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens10Polygon i}}\n  name _switchPolygon10\n  xpos 684\n  ypos 5205\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens10DiaphRot i}}\n  scale {{_INPUT_CTRL.lens10Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon10\n  xpos 684\n  ypos 5234\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens10\n  xpos 684\n  ypos 5262\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens10\n  xpos 684\n  ypos 5304\n }\npush $N4995abf0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon10\n  xpos 684\n  ypos 5346\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask10\n  xpos 684\n  ypos 5375\n }\n Bezier {\n  replace true\n  points {{\n{150.9 171.1 34.4 3.15 26.2}\n{122.4 130.5}\n{134.9 131.3}\n{150 158.8 13.2 0 19.2}\n{165.4 133.6 8 -1.54 13}\n{150.4 111.4 13.8 -3.13 11.6}\n{134.9 131.3}\n{122.5 130.4}\n{151.3 97.6 24 0.01 26.9}\n{178 134.4 7.3 1.57 6.6}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number10\n  xpos 574\n  ypos 5382\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{98.8 171}\n{114.4 170.7}\n{115.2 97.8}\n{98.4 97.2}\n{98.4 151.3}\n{87.2 141.8}\n{77.6 154.1}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number12\n  xpos 574\n  ypos 5411\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens10Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens10Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize10\n  xpos 574\n  ypos 5440\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh10\n  xpos 473\n  ypos 5440\n }\n Transform {\n  scale {{_INPUT_CTRL.lens10AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource10\n  xpos 473\n  ypos 5469\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens10\n  xpos 574\n  ypos 5469\n }\n Multiply {\n  value {{_INPUT_CTRL.lens10Col.r i} {_INPUT_CTRL.lens10Col.g i} {_INPUT_CTRL.lens9Col.b i} 0}\n  name _colorLens10\n  xpos 574\n  ypos 5498\n }\n Blur {\n  size {{_INPUT_CTRL.lens10Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens10\n  xpos 574\n  ypos 5541\n }\npush $N4a6df9c0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens9\n  xpos 417\n  ypos 4806\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens9\n  xpos 417\n  ypos 4834\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens9\n  xpos 417\n  ypos 4862\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens9Polygon i}}\n  name _switchPolygon9\n  xpos 684\n  ypos 4763\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens9DiaphRot i}}\n  scale {{_INPUT_CTRL.lens9Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon9\n  xpos 684\n  ypos 4792\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens9\n  xpos 684\n  ypos 4820\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens9\n  xpos 684\n  ypos 4862\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/circleHard3.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read6\n  xpos 1205\n  ypos 1623\n }\nset N49f68da0 [stack 0]\n Dot {\n  name Dot4\n  xpos 1217\n  ypos 4909\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon9\n  xpos 684\n  ypos 4904\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask9\n  xpos 684\n  ypos 4932\n }\n Bezier {\n  replace true\n  points {{\n{105 94.4}\n{105 105.6}\n{137.4 106.8 6 0.64 12.6}\n{144 124.4}\n{108.6 123 12.9 2.59 14.1}\n{97.6 153.8 16.5 1.33 15.7}\n{145.1 168.3 16.5 -0.72 15.9}\n{156.4 138.4}\n{144.4 135.6}\n{133.8 160.6 13.6 2.79 13}\n{108.6 150.2 3 4.4 7.9}\n{115.6 133.8 10 5.78 9.3}\n{156.4 138.4}\n{147 99.6 14.9 4.01 16.2}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number9\n  xpos 574\n  ypos 4939\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens9Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens9Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize9\n  xpos 574\n  ypos 4968\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh9\n  xpos 473\n  ypos 4968\n }\n Transform {\n  scale {{_INPUT_CTRL.lens9AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource9\n  xpos 473\n  ypos 4997\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens9\n  xpos 574\n  ypos 4997\n }\n Multiply {\n  value {{_INPUT_CTRL.lens9Col.r i} {_INPUT_CTRL.lens9Col.g i} {_INPUT_CTRL.lens9Col.b i} 0}\n  name _colorLens9\n  xpos 574\n  ypos 5026\n }\n Blur {\n  size {{_INPUT_CTRL.lens9Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens9\n  xpos 574\n  ypos 5069\n }\npush $N676f4660\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens8\n  xpos 401\n  ypos 4333\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens8\n  xpos 401\n  ypos 4361\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens8\n  xpos 401\n  ypos 4389\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens8Polygon i}}\n  name _switchPolygon8\n  xpos 683\n  ypos 4290\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens8DiaphRot i}}\n  scale {{_INPUT_CTRL.lens8Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon8\n  xpos 683\n  ypos 4319\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity i}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult i}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult i}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens8\n  xpos 683\n  ypos 4347\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens8\n  xpos 683\n  ypos 4389\n }\n Read {\n  inputs 0\n  file_type png\n  file <<<replace>>>/images/circleHard2.png\n  format \"256 256 0 0 256 256 1 square_256\"\n  origset true\n  name Read5\n  xpos 1264\n  ypos 1079\n }\nset N67371ef0 [stack 0]\n Dot {\n  name Dot3\n  xpos 1298\n  ypos 4436\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon8\n  xpos 683\n  ypos 4431\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask8\n  xpos 683\n  ypos 4460\n }\n Bezier {\n  replace true\n  points {{\n{125.5 178.3 1.2 -1.72 3.8 1.7 0 0 0 0 0 1.7}\n{125.3 167.2 4.2 -3.07 2.2 1.44 0 0 0 0 0 1.44}\n{109.3 152.1 7.9 -1.57 11.9}\n{123.2 136.5 5.4 0.68 2.6 -1.3 0 0 0 0 0 -1.3}\n{138.7 153.3 10 -4.79 12.4}\n{125.5 167.4 1.9 1.59 3.9 1.47 0 0 0 0 0 1.47}\n{125.5 178.3 7.6 -0.04 3.5 1.55 0 0 0 0 0 1.55}\n{149.5 152.4 16.1 -1.56 20.2}\n{122.8 125.5 2.8 2.78 0.9}\n{99.8 150.5 24.5 1.55 14.6}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number27\n  xpos 573\n  ypos 4467\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Bezier {\n  points {{\n{125 84.6 1.2 1.48 3.8 1.7 0 0 0 0 0 1.7}\n{124.6 95.7 4.2 0.13 2.2 1.44 0 0 0 0 0 1.44}\n{139.6 111.8 7.9 1.63 11.9}\n{124.7 126.5 5.4 3.88 2.6 -1.3 0 0 0 0 0 -1.3}\n{110.3 108.7 10 -1.59 12.4}\n{124.4 95.5 1.9 4.79 3.9 1.47 0 0 0 0 0 1.47}\n{125 84.6 7.6 3.16 3.5 1.55 0 0 0 0 0 1.55}\n{99.5 109 16.1 1.64 20.2}\n{124.5 137.5 2.8 5.98 0.9}\n{149 113.9 24.5 4.75 14.6}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number8_1\n  xpos 574\n  ypos 4496\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens8Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i} {(_INPUT_CTRL.lens8Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i}}\n  name _bokehSize8\n  xpos 574\n  ypos 4525\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh8\n  xpos 473\n  ypos 4525\n }\n Transform {\n  scale {{_INPUT_CTRL.lens8AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource8\n  xpos 473\n  ypos 4554\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens8\n  xpos 574\n  ypos 4554\n }\n Multiply {\n  value {{_INPUT_CTRL.lens8Col.r i} {_INPUT_CTRL.lens8Col.g i} {_INPUT_CTRL.lens8Col.b i} 0}\n  name _colorLens8\n  xpos 574\n  ypos 4583\n }\n Blur {\n  size {{_INPUT_CTRL.lens8Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens8\n  xpos 574\n  ypos 4626\n }\npush $N4a469eb0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens7\n  xpos 397\n  ypos 3786\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens7\n  xpos 397\n  ypos 3814\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens7\n  xpos 397\n  ypos 3842\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens7Polygon i}}\n  name _switchPolygon7\n  xpos 679\n  ypos 3743\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens7DiaphRot i}}\n  scale {{_INPUT_CTRL.lens7Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon7\n  xpos 679\n  ypos 3772\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens7\n  xpos 679\n  ypos 3800\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens7\n  xpos 679\n  ypos 3842\n }\npush $N4a1f2640\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon7\n  xpos 679\n  ypos 3884\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask7\n  xpos 679\n  ypos 4032\n }\n Bezier {\n  replace true\n  points {{\n{98.7 170.4}\n{98.3 156.4}\n{142.2 157}\n{106.2 84.6}\n{124 84.1}\n{159.7 156}\n{160.4 171.6}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number7\n  xpos 574\n  ypos 4039\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens7Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/246)+0.01 i} {(_INPUT_CTRL.lens7Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/246)+0.01 i}}\n  name _bokehSize7\n  xpos 574\n  ypos 4069\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh7\n  xpos 473\n  ypos 4068\n }\n Transform {\n  scale {{_INPUT_CTRL.lens7AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource7\n  xpos 473\n  ypos 4097\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens7\n  xpos 574\n  ypos 4097\n }\n Multiply {\n  value {{_INPUT_CTRL.lens7Col.r i} {_INPUT_CTRL.lens7Col.g i} {_INPUT_CTRL.lens7Col.b i} 0}\n  name _colorLens7\n  xpos 574\n  ypos 4126\n }\n Blur {\n  size {{_INPUT_CTRL.lens7Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens7\n  xpos 574\n  ypos 4169\n }\npush $N4a6543b0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens6\n  xpos 403\n  ypos 3330\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens6\n  xpos 403\n  ypos 3358\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens6\n  xpos 403\n  ypos 3386\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens6Polygon}}\n  name _switchPolygon6\n  xpos 685\n  ypos 3287\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens6DiaphRot i}}\n  scale {{_INPUT_CTRL.lens6Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon6\n  xpos 685\n  ypos 3316\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens6\n  xpos 685\n  ypos 3344\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens6\n  xpos 685\n  ypos 3386\n }\npush $N49bb6c00\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon6\n  xpos 684\n  ypos 3428\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask6\n  xpos 684\n  ypos 3457\n }\n Bezier {\n  replace true\n  points {{\n{148.6 169}\n{148.6 157.8}\n{116.2 156.6 6 -2.5 12.6}\n{109.6 139}\n{145 140.4 12.9 -0.55 14.1}\n{156.2 109.6 12.9 -1.76 15.7}\n{107.4 94.4 16.5 -3.94 20.1}\n{97.4 124.8}\n{109.4 127.4}\n{119.8 102.8 13.6 -0.35 13}\n{145 113.2 3 1.34 3}\n{138 129.6 10 2.64 9.3}\n{97.4 124.6}\n{106.6 163.8 14.9 0.87 16.2}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number6\n  xpos 574\n  ypos 3464\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens6Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens6Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}\n  name _bokehSize6\n  xpos 574\n  ypos 3493\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh6\n  xpos 473\n  ypos 3493\n }\n Transform {\n  scale {{_INPUT_CTRL.lens6AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource6\n  xpos 473\n  ypos 3522\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens6\n  xpos 574\n  ypos 3522\n }\n Multiply {\n  value {{_INPUT_CTRL.lens6Col.r i} {_INPUT_CTRL.lens6Col.g i} {_INPUT_CTRL.lens6Col.b i} 0}\n  name _colorLens6\n  xpos 574\n  ypos 3551\n }\n Blur {\n  size {{_INPUT_CTRL.lens6Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens6\n  xpos 574\n  ypos 3594\n }\npush $N3f719100\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens5\n  xpos 402\n  ypos 2884\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens5\n  xpos 402\n  ypos 2912\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens5\n  xpos 402\n  ypos 2940\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens5Polygon i}}\n  name _switchPolygon5\n  xpos 684\n  ypos 2842\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens5DiaphRot i}}\n  scale {{_INPUT_CTRL.lens5Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon5\n  xpos 684\n  ypos 2870\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens5\n  xpos 684\n  ypos 2898\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens5\n  xpos 684\n  ypos 2940\n }\npush $N4a09bae0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon5\n  xpos 684\n  ypos 2982\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask5\n  xpos 684\n  ypos 3011\n }\n Bezier {\n  replace true\n  points {{\n{154.4 168.4}\n{154.4 156.4}\n{115.2 157}\n{115.6 140.8}\n{150.8 139 12.9 -0.55 14.1}\n{162 108.2 12.9 -1.76 15.7}\n{127 88.6 8.2 -3.39 12.2}\n{102.4 96.2}\n{106.4 109.2}\n{130.2 101.6 9.4 -0.02 8.8}\n{150.4 111.8 3 1.34 3}\n{144.4 129.2 10 2.64 9.3}\n{103.8 124}\n{103.8 169}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number5\n  xpos 574\n  ypos 3018\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens5Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/240)+0.01 i} {(_INPUT_CTRL.lens5Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/240)+0.01 i}}\n  name _bokehSize5\n  xpos 574\n  ypos 3047\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh5\n  xpos 473\n  ypos 3047\n }\n Transform {\n  scale {{_INPUT_CTRL.lens5AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource5\n  xpos 473\n  ypos 3076\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens5\n  xpos 574\n  ypos 3076\n }\n Multiply {\n  value {{_INPUT_CTRL.lens5Col.r i} {_INPUT_CTRL.lens5Col.g i} {_INPUT_CTRL.lens5Col.b i} 0}\n  name _colorLens5\n  xpos 574\n  ypos 3105\n }\n Blur {\n  size {{_INPUT_CTRL.lens5Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens5\n  xpos 574\n  ypos 3148\n }\npush $N47423090\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens4\n  xpos 402\n  ypos 2423\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens4\n  xpos 402\n  ypos 2451\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens4\n  xpos 402\n  ypos 2479\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens4Polygon i}}\n  name _switchPolygon4\n  xpos 684\n  ypos 2380\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens4DiaphRot i}}\n  scale {{_INPUT_CTRL.lens4Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon4\n  xpos 684\n  ypos 2409\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens4\n  xpos 684\n  ypos 2437\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens4\n  xpos 684\n  ypos 2479\n }\npush $N4a5c4aa0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon4\n  xpos 684\n  ypos 2521\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask4\n  xpos 684\n  ypos 2550\n }\n Bezier {\n  replace true\n  points {{\n{132.9 186.8}\n{92 125.6}\n{92.7 103.9}\n{127.2 106.1}\n{127.4 90.2}\n{142.4 92.8}\n{142 108.1}\n{154.4 109}\n{153.9 125.6}\n{141.5 124.1}\n{141.6 135.3}\n{127.2 134.6}\n{127.8 124}\n{110.4 123}\n{146.9 180}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number4\n  xpos 574\n  ypos 2557\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens4Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/242)+0.01 i} {(_INPUT_CTRL.lens4Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/242)+0.01 i}}\n  name _bokehSize4\n  xpos 574\n  ypos 2586\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh4\n  xpos 473\n  ypos 2586\n }\n Transform {\n  scale {{_INPUT_CTRL.lens4AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource4\n  xpos 473\n  ypos 2615\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens4\n  xpos 574\n  ypos 2615\n }\n Multiply {\n  value {{_INPUT_CTRL.lens4Col.r i} {_INPUT_CTRL.lens4Col.g i} {_INPUT_CTRL.lens4Col.b i} 0}\n  name _colorLens4\n  xpos 574\n  ypos 2644\n }\n Blur {\n  size {{_INPUT_CTRL.lens4Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens4\n  xpos 574\n  ypos 2687\n }\npush $N4a48a940\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens3\n  xpos 402\n  ypos 1987\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens3\n  xpos 402\n  ypos 2015\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens3\n  xpos 402\n  ypos 2043\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens3Polygon}}\n  name _switchPolygon3\n  xpos 684\n  ypos 1877\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens3DiaphRot i}}\n  scale {{_INPUT_CTRL.lens3Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon3\n  xpos 684\n  ypos 1906\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens3\n  xpos 684\n  ypos 2001\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens3\n  xpos 684\n  ypos 2043\n }\npush $N4996bc50\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon3\n  xpos 684\n  ypos 2085\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask3\n  xpos 684\n  ypos 2114\n }\n Bezier {\n  replace true\n  points {{\n{105.2 171.6}\n{122.8 179.6 19.6 0.25 15.5}\n{153.6 149 14.3 -1.84 18.3}\n{135.6 133.2}\n{157.6 102.6 30.5 -1.76 27.9}\n{106.6 87.8}\n{106.8 102.6}\n{141.4 106.6 18.9 1.34 17.9}\n{115.8 125.2}\n{115.6 141}\n{140 154.6 23.6 1.72 6.8}\n{111.4 160.4}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number3\n  xpos 574\n  ypos 2121\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens3Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i} {(_INPUT_CTRL.lens3Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i}}\n  name _bokehSize3\n  xpos 574\n  ypos 2149\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh3\n  xpos 473\n  ypos 2149\n }\n Transform {\n  scale {{_INPUT_CTRL.lens3AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource3\n  xpos 473\n  ypos 2178\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens3\n  xpos 574\n  ypos 2178\n }\n Multiply {\n  value {{_INPUT_CTRL.lens3Col.r i} {_INPUT_CTRL.lens3Col.g i} {_INPUT_CTRL.lens3Col.b i} 0}\n  name _colorLens3\n  xpos 574\n  ypos 2207\n }\n Blur {\n  size {{_INPUT_CTRL.lens3Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens3\n  xpos 574\n  ypos 2250\n }\npush $N3f716ff0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens2\n  xpos 402\n  ypos 1555\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens2\n  xpos 402\n  ypos 1583\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}\n  name _BlurReflectionLens2\n  xpos 402\n  ypos 1611\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens2Polygon i}}\n  name _switchPolygon2\n  xpos 684\n  ypos 1512\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens2DiaphRot i}}\n  scale {{_INPUT_CTRL.lens2Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon2\n  xpos 684\n  ypos 1541\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens2\n  xpos 684\n  ypos 1569\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}\n  name _MergeReflectionLens2\n  xpos 684\n  ypos 1611\n }\npush $N49f68da0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon2\n  xpos 684\n  ypos 1653\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name _reformatPolyMask2\n  xpos 684\n  ypos 1682\n }\n Bezier {\n  replace true\n  points {{\n{89.6 161.8 0 0.82}\n{120.8 179.4 19.6 0.25 15.5}\n{153.6 149 20.7 -1.88 18.3}\n{120.4 106.4 0 -1.39}\n{158.6 106.4 0 -0.49}\n{159.2 85.8 0 -2.82}\n{96.4 85.8}\n{97 107.2}\n{135.8 152.6 23.6 1.72 6.8}\n{97.8 146.4 0 3.14}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number2\n  xpos 574\n  ypos 1689\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens2Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/237)+0.01 i} {(_INPUT_CTRL.lens2Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/237)+0.01 i}}\n  name _bokehSize2\n  xpos 574\n  ypos 1718\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh2\n  xpos 473\n  ypos 1718\n }\n Transform {\n  scale {{_INPUT_CTRL.lens2AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource2\n  xpos 473\n  ypos 1747\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens2\n  xpos 574\n  ypos 1747\n }\n Multiply {\n  value {{_INPUT_CTRL.lens2Col.r i} {_INPUT_CTRL.lens2Col.g i} {_INPUT_CTRL.lens2Col.b i} 0}\n  name _colorLens2\n  xpos 574\n  ypos 1776\n }\n Blur {\n  size {{_INPUT_CTRL.lens2Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens2\n  xpos 574\n  ypos 1819\n }\npush $N474c77c0\n Grade {\n  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}\n  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}\n  name _GradeReflectionLens1\n  xpos 397\n  ypos 1123\n }\n Transform {\n  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}\n  center {128 128}\n  name _TransformReflectionLens1\n  xpos 397\n  ypos 1151\n }\n Blur {\n  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd i}}\n  name _BlurReflectionLens1\n  xpos 397\n  ypos 1179\n }\npush $N4a2244b0\npush $N4a638510\npush $N6703bbe0\npush $N4993c8b0\npush $N4a1d10d0\npush $N4a055400\npush $N4a07d0f0\npush $N49b24150\n Switch {\n  inputs 8\n  which {{_INPUT_CTRL.lens1Polygon i}}\n  name _switchPolygon1\n  xpos 679\n  ypos 1051\n }\n Transform {\n  translate {-128 -128}\n  rotate {{_INPUT_CTRL.lens1DiaphRot i}}\n  scale {{_INPUT_CTRL.lens1Diaphragm*0.65 i}}\n  center {256 256}\n  name _transformPolygon1\n  xpos 679\n  ypos 1081\n }\npush $N67371ef0\n Merge2 {\n  inputs 2\n  operation multiply\n  name _multPolygon1\n  xpos 679\n  ypos 1109\n }\n Noise {\n  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity i}}\n  maskChannelInput rgba.red\n  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult i}}\n  octaves 4\n  lacunarity 5\n  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult i}}\n  gamma 1\n  center {640 360}\n  name _NoiseLens1\n  xpos 679\n  ypos 1137\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity i}}\n  name _MergeReflectionLens1\n  xpos 679\n  ypos 1179\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  box_width 256\n  name _reformatPolyMask1\n  xpos 679\n  ypos 1255\n }\n Bezier {\n  replace true\n  points {{\n{121.6 171.4}\n{138.8 171.1}\n{139.6 98.2}\n{121.2 97.6}\n{121.2 151.7}\n{110 142.2}\n{100.4 154.5}\n}}\n  shape {}\n  center {128 128}\n  color 10\n  name _number1\n  xpos 572\n  ypos 1262\n  disable {{1-_INPUT_CTRL.showNumbers i}}\n }\n Reformat {\n  type scale\n  scale {{(_INPUT_CTRL.lens1Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i} {(_INPUT_CTRL.lens1Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/247)+0.01 i}}\n  name _bokehSize1\n  xpos 572\n  ypos 1291\n }\npush $N67220f40\n NoOp {\n  name _inputToBokeh1\n  xpos 471\n  ypos 1291\n }\n Transform {\n  scale {{_INPUT_CTRL.lens1AxisPos*_INPUT_CTRL.overallLensDistance i}}\n  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}\n  name _symSource1\n  xpos 471\n  ypos 1320\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens1\n  xpos 572\n  ypos 1320\n }\n Multiply {\n  value {{_INPUT_CTRL.lens1Col.r i} {_INPUT_CTRL.lens1Col.g i} {_INPUT_CTRL.lens1Col.b i} 0}\n  name _colorLens1\n  xpos 572\n  ypos 1349\n }\n Blur {\n  size {{_INPUT_CTRL.lens1Blur*(1-_INPUT_CTRL.showNumbers) i}}\n  name _blurLens1\n  xpos 572\n  ypos 1392\n }\npush $N49dbb260\n Merge2 {\n  inputs 2\n  name _screenLens1\n  xpos 38\n  ypos 1399\n  disable {{1-_INPUT_CTRL.lens1Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens2\n  xpos 38\n  ypos 1826\n  disable {{1-_INPUT_CTRL.lens2Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens3\n  xpos 38\n  ypos 2257\n  disable {{1-_INPUT_CTRL.lens3Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens4\n  xpos 38\n  ypos 2694\n  disable {{1-_INPUT_CTRL.lens4Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens5\n  xpos 38\n  ypos 3155\n  disable {{1-_INPUT_CTRL.lens5Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens6\n  xpos 38\n  ypos 3601\n  disable {{1-_INPUT_CTRL.lens6Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens7\n  xpos 38\n  ypos 4176\n  disable {{1-_INPUT_CTRL.lens7Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens8\n  xpos 38\n  ypos 4633\n  disable {{1-_INPUT_CTRL.lens8Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens9\n  xpos 38\n  ypos 5076\n  disable {{1-_INPUT_CTRL.lens9Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens10\n  xpos 38\n  ypos 5548\n  disable {{1-_INPUT_CTRL.lens10Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens11\n  xpos 38\n  ypos 6029\n  disable {{1-_INPUT_CTRL.lens11Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens12\n  xpos 38\n  ypos 6506\n  disable {{1-_INPUT_CTRL.lens12Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens13\n  xpos 38\n  ypos 6980\n  disable {{1-_INPUT_CTRL.lens13Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens14\n  xpos 38\n  ypos 7458\n  disable {{1-_INPUT_CTRL.lens14Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens15\n  xpos 38\n  ypos 7927\n  disable {{1-_INPUT_CTRL.lens15Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens16\n  xpos 38\n  ypos 8395\n  disable {{1-_INPUT_CTRL.lens16Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens17\n  xpos 38\n  ypos 8873\n  disable {{1-_INPUT_CTRL.lens17Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens18\n  xpos 36\n  ypos 9376\n  disable {{1-_INPUT_CTRL.lens18Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens19\n  xpos 36\n  ypos 9843\n  disable {{1-_INPUT_CTRL.lens19Active i}}\n }\n Merge2 {\n  inputs 2\n  name _screenLens20\n  xpos 38\n  ypos 10330\n  disable {{1-_INPUT_CTRL.lens20Active i}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{_INPUT_.width i}}\n  box_height {{_INPUT_.height i}}\n  box_fixed true\n  resize distort\n  filter Mitchell\n  name _reformatQualityOriginal\n  xpos 38\n  ypos 10393\n }\n Saturation {\n  saturation {{_INPUT_CTRL.overallSaturation i}}\n  mode Average\n  name _overallSaturation\n  xpos 38\n  ypos 10422\n }\n Multiply {\n  value {{_INPUT_CTRL.overallMult i}}\n  name _overallMult\n  xpos 38\n  ypos 10451\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge5\n  xpos 38\n  ypos 10515\n }\npush $N499e6c00\n Dot {\n  name Dot18\n  xpos 194\n  ypos 814\n }\n Dot {\n  name Dot17\n  xpos 194\n  ypos 10620\n }\n Switch {\n  inputs 2\n  which {{1-_INPUT_CTRL.viewSelectedHighlights i}}\n  name _switchSelectedHighlights\n  xpos 38\n  ypos 10615\n }\n NoOp {\n  name _OUTPUT\n  xpos 38\n  ypos 10643\n }\n Output {\n  name Output1\n  xpos 38\n  ypos 10702\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BBoxToFormat.gizmo",
    "content": "Group {\n name BBoxToFormat\n onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n tile_color 0xa57aaaff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 CropBBox}\n addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n addUserKnob {41 intersect T Crop6.intersect}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n overscanType Percentage\n addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n overscanPercent 1\n addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n inputBbox 0\n addUserKnob {15 inputFormat l \"Input Format\"}\n inputFormat {0 0 {input.width} {input.height}}\n addUserKnob {15 inputBBox l \"Input BBox\"}\n inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n addUserKnob {15 outputBBox l \"Output BBox\"}\n outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 info_1 l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n addUserKnob {26 ver l Version: T v02}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 261\n  ypos 394\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 295\n  ypos 462\n }\nset N7f3e26e0 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -160\n  ypos 462\n }\nset N7f3e6330 [stack 0]\npush $N7f3e26e0\n Crop {\n  box {{curve} {curve} {input.width} {input.height}}\n  crop {{parent.blackOutside}}\n  name Crop6\n  xpos 261\n  ypos 510\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset N7f3e9f50 [stack 0]\n Remove {\n  operation keep\n  channels none\n  name Remove1\n  xpos 120\n  ypos 504\n }\nset N7f3f5c30 [stack 0]\n Transform {\n  scale {{parent.overscanPercent} {parent.overscanPercent}}\n  center {{input.bbox.r/2} {input.bbox.t/2}}\n  shutteroffset centred\n  name Transform1\n  xpos 120\n  ypos 555\n }\npush $N7f3f5c30\n AdjBBox {\n  numpixels {{parent.overscan} {parent.overscan}}\n  name AdjBBox1\n  xpos -5\n  ypos 510\n }\n Switch {\n  inputs 2\n  which {{overscanType}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -5\n  ypos 549\n }\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Merge1\n  xpos -5\n  ypos 647\n  disable {{!parent.Crop6.intersect}}\n }\npush $N7f3e6330\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -194\n  ypos 653\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -194\n  ypos 692\n  disable {{!parent.blackOutside}}\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -160\n  ypos 769\n }\npush $N7f3e9f50\n Switch {\n  inputs 2\n  which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 261\n  ypos 759\n }\nset N7f4342c0 [stack 0]\n Output {\n  name Output1\n  xpos 261\n  ypos 921\n }\npush $N7f4342c0\n NoOp {\n  name OutputBBox1\n  selected true\n  xpos 378\n  ypos 821\n  addUserKnob {20 User}\n  addUserKnob {15 OutputBBox l \"Output BBox\"}\n  OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n  outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BeautifulSkin.gizmo",
    "content": "Group {\n name BeautifulSkin\n tile_color 0xb2776dff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 BeautifulSkin}\n addUserKnob {41 channels l Channels T Merge1.also_merge}\n addUserKnob {41 size l \"Dilate size\" T Dilate5.size}\n addUserKnob {26 \"\"}\n addUserKnob {4 blurType l \"Blur Type\" M {Blur Defocus Median}}\n blurType Median\n addUserKnob {7 blurDefocusSize l \"Blur/Defocus size\" R 0 100}\n blurDefocusSize 5\n addUserKnob {41 size_2 l \"Median size\" T Median2.size}\n addUserKnob {6 guiblur l \"use blur in gui, switch to defocus/median at render time\" +STARTLINE}\n guiblur true\n addUserKnob {26 \"\"}\n addUserKnob {41 mixMax l \"mix Max back in\" T Merge8.mix}\n addUserKnob {41 mixMin l \"mix Min back in\" T Merge7.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: T BeautifulSkin}\n addUserKnob {26 ver l Version: T v02}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 626\n  ypos -370\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 462\n  ypos -1126\n }\n Dot {\n  name Dot9\n  xpos 496\n  ypos -1018\n }\nset Neb880d20 [stack 0]\n Dot {\n  name Dot10\n  xpos 264\n  ypos -1018\n }\n Dot {\n  name Dot12\n  xpos 264\n  ypos -530\n }\nset Neb885890 [stack 0]\n Dot {\n  name Dot13\n  xpos 264\n  ypos -454\n }\nset Neb8897b0 [stack 0]\npush $Neb885890\npush $Neb880d20\n Dilate {\n  size 3\n  name Dilate5\n  xpos 462\n  ypos -959\n }\n Dilate {\n  size {{-parent.Dilate5.size i}}\n  name Dilate6\n  xpos 462\n  ypos -895\n }\n Dot {\n  name Dot14\n  xpos 496\n  ypos -819\n }\nset Neb8d7770 [stack 0]\n Blur {\n  size {{parent.blurDefocusSize}}\n  name Blur10\n  label \"\\[value size]\"\n  xpos 343\n  ypos -736\n }\nset Neb8db490 [stack 0]\npush $Neb8d7770\n Median {\n  channels all\n  size 2\n  ignore_top_line false\n  name Median2\n  xpos 573\n  ypos -729\n }\npush $Neb8d7770\n Defocus {\n  defocus {{parent.blurDefocusSize i}}\n  name Defocus1\n  xpos 462\n  ypos -728\n }\npush $Neb8db490\n Switch {\n  inputs 3\n  which {{parent.blurType i}}\n  name Switch1\n  xpos 462\n  ypos -660\n }\n Switch {\n  inputs 2\n  which {{guiblur i}}\n  name Switch2\n  xpos 462\n  ypos -602\n }\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  mix 0.5\n  name Merge8\n  xpos 462\n  ypos -534\n }\n Merge2 {\n  inputs 2\n  operation min\n  also_merge all\n  mix 0.2\n  name Merge7\n  xpos 462\n  ypos -458\n }\npush $Neb8897b0\n Dot {\n  name Dot11\n  xpos 264\n  ypos -367\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 462\n  ypos -374\n }\n Output {\n  name Output1\n  xpos 462\n  ypos -225\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BiasedSaturation.gizmo",
    "content": "Group {\n name BiasedSaturation\n tile_color 0x5c7fc0ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 BiasedSaturation}\n addUserKnob {41 channels T MergeKeymix.also_merge}\n addUserKnob {26 \"\"}\n addUserKnob {41 source l \"bias colour\" T targetMult.source}\n addUserKnob {41 mode l \"luminance math\" T Saturation1.mode}\n addUserKnob {41 saturation T Saturation1.saturation}\n addUserKnob {7 restoreLuminance l \"Restore Luminance\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 unpremult l \"(un)premult? by\" T Unpremult1.alpha}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 createdBy l \"Created By:\" T \"Paul Raeburn\"}\n addUserKnob {26 creator l \"Modified By:\" T \"Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"desaturates towards target color\" T BiasedSaturation}\n addUserKnob {26 ver l Version: T v02}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 346\n  ypos 202\n  number 1\n }\n Dot {\n  name Dot5\n  label Mask\n  note_font_size 41\n  xpos 380\n  ypos 577\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 380\n  ypos 677\n }\n Input {\n  inputs 0\n  name Input\n  xpos 0\n  ypos -269\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 34\n  ypos -102\n }\nset N544377f0 [stack 0]\n Unpremult {\n  channels all\n  alpha -rgba.alpha\n  name Unpremult1\n  xpos 0\n  ypos -40\n }\nset N54210d80 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -247\n  ypos -30\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace3\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos -281\n  ypos 193\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -247\n  ypos 287\n }\npush $N54210d80\n Multiply {\n  value {{target/source} {target/source} {target/source} {target/source}}\n  name targetMult\n  xpos 0\n  ypos 49\n  addUserKnob {20 User}\n  addUserKnob {19 source l \"bias colour\"}\n  source {0.03229996562 0.1138856411 0.2395002097 0.218351528}\n  addUserKnob {6 source_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {19 target}\n  target {{(source.r*.3)+(source.g*.59)+(source.b*.11)}}\n  addUserKnob {6 target_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Saturation {\n  channels all\n  saturation 0.5\n  unpremult -rgba.alpha\n  name Saturation1\n  xpos 0\n  ypos 87\n }\n Multiply {\n  value {{1/targetMult.value} {1/targetMult.value} {1/targetMult.value} {1/targetMult.value}}\n  name MultiBack\n  xpos 0\n  ypos 125\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 34\n  ypos 212\n }\nset N5476c040 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace2\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos -137\n  ypos 196\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name Copy1\n  xpos -137\n  ypos 277\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace1\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos -137\n  ypos 337\n }\npush $N5476c040\n Dissolve {\n  inputs 2\n  which {{parent.restoreLuminance}}\n  name Dissolve1\n  label \"\\[value which]\"\n  xpos 0\n  ypos 337\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 34\n  ypos 459\n }\n Premult {\n  channels all\n  alpha {{{parent.Unpremult1.alpha}}}\n  name Premult1\n  xpos 0\n  ypos 521\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 589\n }\npush $N544377f0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -389\n  ypos -102\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -389\n  ypos 586\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -389\n  ypos 677\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  mix 0.5\n  name MergeKeymix\n  xpos 0\n  ypos 670\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 851\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BinaryAlpha.gizmo",
    "content": "Group {\n name BinaryAlpha\n tile_color 0x2a2a2aff\n label \"(\\[value an] --> \\[value output1])\"\n note_font Verdana\n note_font_color 0xfffff9ff\n selected true\n addUserKnob {20 BinaryAlpha}\n addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n output1 alpha\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -398\n  ypos 275\n }\n Expression {\n  temp_name0 rgb_an\n  temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n  temp_name1 rgba_an\n  temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n  temp_name2 alpha_an\n  temp_expr2 a!=0?1:0\n  expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n  name Expression\n  xpos -398\n  ypos 341\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle\n  label \"\\[value in]\"\n  xpos -398\n  ypos 367\n  disable {{parent.output1}}\n }\n Output {\n  name Output1\n  xpos -398\n  ypos 456\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BlacksExpon.gizmo",
    "content": "Group {\nname BlacksExpon\nknobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"steps\\\":    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        with n:\\n            ebs1 = nuke.toNode(\\\"ExponBlurSimple\\\")\\n            ebs2 = nuke.toNode(\\\"ExponBlurSimple1\\\")\\n            ebs1.knob('steps').setValue(s)\\n            ebs2.knob('steps').setValue(s)\\n            \\n            both = \\[ebs1, ebs2]\\n            for ebs in both:\\n                with ebs:   \\n                    start = nuke.toNode(\\\"Start\\\")\\n                    end   = nuke.toNode(\\\"End\\\")\\n                    b1    = nuke.toNode(\\\"Blur1\\\")\\n                    merge = nuke.toNode(\\\"Merge1\\\")\\n                    AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n                    \\n                    b1x   = b1.xpos()\\n                    b1y   = b1.ypos()\\n                    b1n   = b1.name()\\n                    \\n                    steps = int(n.knob('steps').getValue())\\n                    size  = ebs1.knob('size').getValue()\\n                    mult  = ebs1.knob('mult').getValue()\\n                    \\n                    #b1.setInput(0, start)\\n                    for i in range(1,merge.inputs()):\\n                        merge.setInput(i,None)\\n                    merge.setInput(0, b1)\\n                    \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n                    for i in range(1,steps):\\n                        # Blur\\n                        b = nuke.nodes.Blur()\\n                        b.setXYpos(b1x+i*100,b1y)\\n                        b.setInput(0,start)\\n                        b\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n                        b\\[\\\"crop\\\"].setValue(0)\\n                        b\\[\\\"size\\\"].setValue(0, 1)\\n                        b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n                        b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n                        merge.setInput(i if i<2 else i+1, b)\\n                        AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n\\n            \\n\\n\"\ntile_color 0x262626ff\nnote_font \"Verdana Bold Bold Bold Bold Bold Bold Bold\"\nnote_font_color 0xccccccff\nselected true\naddUserKnob {20 BlacksExpon}\naddUserKnob {41 maskChannelInput l \"area mask\" T Merge1.maskChannelInput}\naddUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\naddUserKnob {41 operation2 l operation T Keyer1.operation}\naddUserKnob {6 previewKey l \"Preview Key\" -STARTLINE}\naddUserKnob {6 invertKey l \"invert key\" -STARTLINE}\ninvertKey true\naddUserKnob {7 blackpoint}\nblackpoint 0.1\naddUserKnob {7 whitepoint}\nwhitepoint 0.2\naddUserKnob {26 \"\"}\naddUserKnob {41 steps l \"  Steps Min\" T ExponBlurSimple.steps}\naddUserKnob {41 steps_1 l \"  Steps Over\" -STARTLINE T ExponBlurSimple1.steps}\naddUserKnob {7 size l Size R 0 20}\nsize 3\naddUserKnob {7 mult l Multiply R 1 8}\nmult 2\naddUserKnob {14 postBlur R 0 100}\naddUserKnob {26 \"\"}\naddUserKnob {26 \"\" l mask T \"\"}\naddUserKnob {41 maskChannelInput_1 l \"\" -STARTLINE T Merge2.maskChannelInput}\naddUserKnob {41 inject -STARTLINE T Merge2.inject}\naddUserKnob {41 invert_mask_1 l invert -STARTLINE T Merge2.invert_mask}\naddUserKnob {41 fringe -STARTLINE T Merge2.fringe}\naddUserKnob {41 mix T Merge2.mix}\naddUserKnob {41 bbox l \"set bbox to \" T Merge2.bbox}\naddUserKnob {20 info l Info}\naddUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\naddUserKnob {26 desc l Description: T BlacksExpon}\naddUserKnob {26 ver l Version: T v02}\n}\nInput {\ninputs 0\nname Inputmask\nxpos 198\nypos 1042\nnumber 2\n}\nInput {\ninputs 0\nname Inputarea\nxpos 371\nypos 371\nnumber 1\n}\nInput {\ninputs 0\nname Inputimg\nxpos 52\nypos 109\n}\nDot {\nname Dot1\nnote_font_size 41\nxpos 86\nypos 202\n}\nset N32d06f00 [stack 0]\nKeyer {\noperation \"luminance key\"\nname Keyer1\nxpos 177\nypos 192\n}\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle1\ntile_color 0xffffffff\nxpos 177\nypos 230\n}\nGrade {\nchannels rgba\nblackpoint {{parent.blackpoint}}\nwhitepoint {{parent.whitepoint}}\nwhite_clamp true\nname Grade1\nxpos 177\nypos 272\n}\nInvert {\nchannels rgba\nname Invert1\nxpos 177\nypos 298\ndisable {{!parent.invertKey}}\n}\nConstant {\ninputs 0\ncolor 1\nname Constant1\nxpos 299\nypos 303\npostage_stamp false\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 177\nypos 371\n}\nDot {\nname Dot2\nnote_font_size 41\nxpos 211\nypos 450\n}\nset N9ad740a0 [stack 0]\nDot {\nname Dot3\nnote_font_size 41\nxpos 211\nypos 984\n}\npush $N9ad740a0\npush $N32d06f00\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy1\nxpos 52\nypos 440\n}\nPremult {\nname Premult1\nxpos 52\nypos 478\n}\nUnpremult {\nname Unpremult1\nxpos 52\nypos 504\n}\nGroup {\nname BinaryAlpha\ntile_color 0x2a2a2aff\nlabel \"(\\[value an] --> \\[value output1])\"\nnote_font Verdana\nnote_font_color 0xfffff9ff\nxpos 52\nypos 580\naddUserKnob {20 BinaryAlpha}\naddUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\naddUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\noutput1 alpha\naddUserKnob {20 info l Info}\naddUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\naddUserKnob {26 ver l Version: T v03}\n}\nInput {\ninputs 0\nname Input\nxpos -398\nypos 275\n}\nExpression {\ntemp_name0 rgb_an\ntemp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\ntemp_name1 rgba_an\ntemp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\ntemp_name2 alpha_an\ntemp_expr2 a!=0?1:0\nexpr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\nname Expression\nxpos -398\nypos 341\n}\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle\nlabel \"\\[value in]\"\nxpos -398\nypos 367\ndisable {{parent.output1}}\n}\nOutput {\nname Output1\nxpos -398\nypos 456\n}\nend_group\nGroup {\nname ExponBlurSimple\nonCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\nknobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n        \\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n        \\nelif k.name() == \\\"steps\\\":\\n    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        \\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n        \\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('mult').getValue()\\n        \\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, b1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n            b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n            merge.setInput(i if i<2 else i+1, b)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n            \\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n        \\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n        \\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n            \\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n        \\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\ntile_color 0xcc804eff\nlabel \"(\\[value output2])\"\nnote_font \"Verdana Bold Bold Bold Bold Bold Bold Bold\"\nnote_font_color 0xffffffff\nxpos 52\nypos 645\naddUserKnob {20 ExponBlurSimple}\naddUserKnob {41 channels T Shuffle1.in}\naddUserKnob {41 maskChannelMask_1 l area T Multiply1.maskChannelMask}\naddUserKnob {41 inject_1 l inject -STARTLINE T Multiply1.inject}\naddUserKnob {41 invert_mask_1 l invert -STARTLINE T Multiply1.invert_mask}\naddUserKnob {41 fringe_1 l fringe -STARTLINE T Multiply1.fringe}\naddUserKnob {26 \"\"}\naddUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\noutput2 Min\naddUserKnob {3 steps l \"  Steps\" -STARTLINE}\nsteps 8\naddUserKnob {3 mergeNumber -STARTLINE +INVISIBLE}\nmergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\naddUserKnob {26 text l \" \" -STARTLINE T \" \"}\naddUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\nincludeOriginal true\naddUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\naddUserKnob {14 size l Size R -100 100}\nsize {{parent.ExponBlurSimple1.size} {parent.ExponBlurSimple1.size}}\naddUserKnob {7 mult l Multiplier R 1 8}\nmult {{parent.mult}}\naddUserKnob {14 postBlur l \"Post Blur\" R 0 100}\npostBlur {0 0}\naddUserKnob {26 text_1 l \" \" -STARTLINE T \" \"}\naddUserKnob {26 \"\"}\naddUserKnob {20 bboxControl l \"BBox Control\" n 1}\nbboxControl 0\naddUserKnob {26 text_2 l \" \" T \" \"}\naddUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\naddUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\naddUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\nsafeBBox true\naddUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\naddUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\nsafetyBBoxMethod percent\naddUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\nsafeBBoxPercent 1.1\naddUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\naddUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\naddUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\naddUserKnob {26 \"\"}\naddUserKnob {20 endGroup n -1}\naddUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\naddUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\naddUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\naddUserKnob {41 mix T MergeKeymix.mix}\naddUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\nsafeBBoxPixels 100\naddUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\nadjustBBoxPercent 1\naddUserKnob {20 info l Info}\naddUserKnob {26 creator l Creator: T \"Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\naddUserKnob {26 ver l Version: T v02}\n}\nBackdropNode {\ninputs 0\nname BackdropNode1\ntile_color 0x535e5a00\nlabel \"BBox Management\"\nnote_font_size 30\nnote_font_color 0xffffffff\nxpos -529\nypos 492\nbdwidth 341\nbdheight 525\n}\nInput {\ninputs 0\nname Inputimg\nxpos 0\nypos -969\n}\nDot {\nname Dot16\nnote_font_size 41\nxpos 34\nypos -802\n}\nset N9ade9da0 [stack 0]\nDot {\nname Dot2\nnote_font_size 41\nxpos -367\nypos -802\n}\nDot {\nname Dot18\nlabel B\nnote_font_size 41\nxpos -367\nypos 434\n}\nDot {\nname Dot11\nnote_font_size 41\nxpos -367\nypos 623\n}\nset N9adf8000 [stack 0]\nDot {\nname Dot3\nnote_font_size 41\nxpos -367\nypos 675\n}\nset N9adfcc00 [stack 0]\nDot {\nname Dot8\nnote_font_size 41\nxpos -463\nypos 675\n}\nDot {\nname Dot15\nnote_font_size 41\nxpos -463\nypos 831\n}\npush $N9ade9da0\nDot {\nname Dot1\nnote_font_size 41\nxpos 461\nypos -802\n}\nShuffle {\nname Shuffle1\nlabel \"\\[value in]\"\nxpos 427\nypos -756\n}\nRemove {\noperation keep\nchannels rgba\nname Remove1\nxpos 427\nypos -718\n}\nDot {\nname Dot21\nnote_font_size 41\nxpos 461\nypos -597\n}\nset N9ae289a0 [stack 0]\nInvert {\nchannels rgba\nname Invert1\nxpos 695\nypos -601\ndisable {{\"parent.size < 0 ? 0 : 1\"}}\n}\nset N9ae2d530 [stack 0]\nDot {\nname Dot4\nnote_font_size 41\nxpos 540\nypos -543\n}\nNoOp {\nname Original\nxpos 506\nypos -327\n}\nset N9ac4da10 [stack 0]\nDot {\nname Dot5\nnote_font_size 41\nxpos 540\nypos 14\n}\nCrop {\ninputs 0\nbox {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\nreformat true\ncrop false\nname Crop1\nxpos 210\nypos -750\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nAddChannels {\nchannels rgba\nname AddChannels2\nxpos 210\nypos -724\n}\npush $N9ade9da0\nMerge2 {\ninputs 2\nname Merge3\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 83\nypos -671\n}\nNoOp {\nname BBoxInput\nxpos 83\nypos -628\naddUserKnob {20 User}\naddUserKnob {15 bbox}\nbbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n}\npush $N9ac4da10\nInput {\ninputs 0\nname Inputarea\nxpos 289\nypos -638\nnumber 2\n}\nAddChannels {\nchannels alpha\ncolor 1\nname AddChannels1\nxpos 289\nypos -580\n}\nInvert {\nchannels rgba\nname Invert3\nxpos 289\nypos -503\n}\npush $N9ae2d530\nMultiply {\ninputs 1+1\nchannels rgba\nvalue 0\nname Multiply1\nlabel \"\\[value value]\"\nxpos 695\nypos -509\n}\nNoOp {\nname Start\nxpos 695\nypos -450\n}\nset N9aca5f90 [stack 0]\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**7} {(Blur1.size)*(mult)**7}}\ncrop false\nname Blur8\nlabel \"\\[value size]\"\nxpos 1395\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**6} {(Blur1.size)*(mult)**6}}\ncrop false\nname Blur7\nlabel \"\\[value size]\"\nxpos 1295\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**5} {(Blur1.size)*(mult)**5}}\ncrop false\nname Blur6\nlabel \"\\[value size]\"\nxpos 1195\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**4} {(Blur1.size)*(mult)**4}}\ncrop false\nname Blur5\nlabel \"\\[value size]\"\nxpos 1095\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**3} {(Blur1.size)*(mult)**3}}\ncrop false\nname Blur4\nlabel \"\\[value size]\"\nxpos 995\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**2} {(Blur1.size)*(mult)**2}}\ncrop false\nname Blur3\nlabel \"\\[value size]\"\nxpos 895\nypos -370\n}\npush 0\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**1} {(Blur1.size)*(mult)**1}}\ncrop false\nname Blur2\nlabel \"\\[value size]\"\nxpos 795\nypos -370\n}\npush $N9aca5f90\nBlur {\nchannels rgba\nsize {{parent.size.w} {parent.size.h}}\nname Blur1\nlabel \"\\[value size]\"\nxpos 695\nypos -370\n}\nMerge2 {\ninputs 9+1\noperation {{parent.mergeNumber}}\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 695\nypos -256\n}\nNoOp {\nname End\nxpos 695\nypos -230\n}\nset N9ad292a0 [stack 0]\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 585\nypos -175\n}\nGroup {\nname BBoxToFormat\nonCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\ntile_color 0xa57aaaff\nnote_font \"Verdana Bold Bold Bold Bold Bold Bold Bold\"\nnote_font_color 0xffffffff\nxpos 585\nypos -151\naddUserKnob {20 CropBBox}\naddUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\naddUserKnob {41 intersect T Crop6.intersect}\naddUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\naddUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\noverscanType {{parent.safetyBBoxMethod}}\naddUserKnob {14 overscan l Overscan R 0 400}\noverscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\naddUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\noverscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\naddUserKnob {20 inputBbox l \"BBox Data\" n 1}\naddUserKnob {15 inputFormat l \"Input Format\"}\ninputFormat {0 0 {input.width} {input.height}}\naddUserKnob {15 inputBBox l \"Input BBox\"}\ninputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\naddUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\noutputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\naddUserKnob {15 outputBBox l \"Output BBox\"}\noutputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\naddUserKnob {20 endGroup n -1}\naddUserKnob {20 info_1 l Info}\naddUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\naddUserKnob {26 ver l Version: T v02}\n}\nInput {\ninputs 0\nname Input\nxpos 261\nypos 394\n}\nDot {\nname Dot2\nnote_font_size 41\nxpos 295\nypos 462\n}\nset N9ab58640 [stack 0]\nDot {\nname Dot1\nnote_font_size 41\nxpos -160\nypos 462\n}\nset N9ab5d180 [stack 0]\npush $N9ab58640\nCrop {\nbox {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\ncrop {{parent.blackOutside}}\nname Crop6\nxpos 261\nypos 510\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nset N9ab61d00 [stack 0]\nRemove {\noperation keep\nchannels none\nname Remove1\nxpos 120\nypos 504\n}\nset N9ab6d0f0 [stack 0]\nTransform {\nscale {{parent.overscanPercent} {parent.overscanPercent}}\ncenter {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\nshutteroffset centred\nname Transform1\nselected true\nxpos 120\nypos 553\n}\npush $N9ab6d0f0\nAdjBBox {\nnumpixels {{parent.overscan} {parent.overscan}}\nname AdjBBox1\nxpos -5\nypos 510\n}\nSwitch {\ninputs 2\nwhich {{overscanType}}\nname Switch2\nlabel \"\\[value which]\"\nxpos -5\nypos 549\n}\nMerge2 {\ninputs 2\nbbox intersection\nAchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {-rgba.red -rgba.green -rgba.blue rgba.alpha}\nname Merge1\nxpos -5\nypos 647\ndisable {{!parent.Crop6.intersect}}\n}\npush $N9ab5d180\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos -194\nypos 653\n}\nBlackOutside {\nname BlackOutside1\nxpos -194\nypos 692\ndisable {{!parent.blackOutside}}\n}\nDot {\nname Dot4\nnote_font_size 41\nxpos -160\nypos 769\n}\npush $N9ab61d00\nSwitch {\ninputs 2\nwhich {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 261\nypos 759\n}\nset N9abb8db0 [stack 0]\nOutput {\nname Output1\nxpos 261\nypos 921\n}\npush $N9abb8db0\nNoOp {\nname OutputBBox1\nxpos 378\nypos 821\naddUserKnob {20 User}\naddUserKnob {15 OutputBBox l \"Output BBox\"}\nOutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\naddUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\noutputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n}\nend_group\npush $N9ad292a0\nMerge2 {\ninputs 2\nbbox intersection\nname Merge4\nxpos 585\nypos -127\n}\npush $N9ad292a0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 585\nypos -101\n}\npush $N9ad292a0\nSwitch {\ninputs 2\nwhich {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\nname Switch2\nlabel \"\\[value which]\"\nxpos 695\nypos -106\n}\nGrade {\nchannels rgba\nwhitepoint 9\nblack_clamp false\nname AverageMult\nxpos 695\nypos -37\ndisable {{\"output2 == 4 ? 0 : 1\"}}\n}\nMerge2 {\ninputs 2\noperation max\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 695\nypos 10\ndisable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n}\nBlur {\nchannels rgba\nsize {{postBlur} {postBlur}}\nname BlurOriginal\nlabel \"\\[value size]\"\nxpos 695\nypos 59\n}\nInvert {\nchannels rgba\nname Invert2\nxpos 695\nypos 97\ndisable {{\"parent.size < 0 ? 0 : 1\"}}\n}\npush $N9ae289a0\nSwitch {\ninputs 2\nwhich {{\"parent.size == 0 ? 0 : 1\"}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 427\nypos 93\n}\npush $N9ade9da0\nShuffleCopy {\ninputs 2\nin2 none\nblack red\nwhite green\nred2 blue\ngreen2 alpha\nout none\nout2 {{{parent.Shuffle1.in}}}\nname ShuffleCopy1\nxpos 0\nypos 97\n}\nDot {\nname Dot17\nlabel A\nnote_font_size 41\nxpos 34\nypos 455\n}\nDot {\nname Dot7\nnote_font_size 41\nxpos 34\nypos 585\n}\nset N9aa53770 [stack 0]\nDot {\nname Dot12\nnote_font_size 41\nxpos -260\nypos 585\n}\nDot {\nname Dot13\nnote_font_size 41\nxpos -260\nypos 799\n}\npush $N9adf8000\nInput {\ninputs 0\nname Inputmask\nxpos 346\nypos 325\nnumber 1\n}\nDot {\nname Dot19\nlabel Mask\nnote_font_size 41\nxpos 380\nypos 438\n}\nset N9aa66520 [stack 0]\nDot {\nname Dot20\nnote_font_size 41\nxpos 270\nypos 438\n}\npush $N9aa53770\nMerge2 {\ninputs 2\nbbox intersection\nAchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {rgba.red -rgba.green -rgba.blue rgba.alpha}\nname MergeIntersection\nxpos 236\nypos 575\ndisable {{\"!\\[exists parent.input1]\"}}\n}\nMerge2 {\ninputs 2\nAchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {rgba.red -rgba.green -rgba.blue rgba.alpha}\nname MergeUnion\nxpos 236\nypos 613\ndisable {{\"!\\[exists parent.input1]\"}}\n}\nDot {\nname Dot6\nlabel \"intersection\\nof (Mask and A) + B\"\nnote_font_size 14\nnote_font_color 0xffffffff\nxpos 270\nypos 773\n}\npush $N9aa66520\nDot {\nname Dot10\nnote_font_size 41\nxpos 380\nypos 675\n}\npush $N9aa53770\npush $N9adfcc00\nMerge2 {\ninputs 2+1\noperation copy\nAchannels none\nBchannels none\noutput none\nalso_merge all\nname MergeKeymix\nxpos 0\nypos 665\n}\nDot {\nname Dot14\nnote_font_size 41\nxpos 34\nypos 747\n}\nset N9aaaa4f0 [stack 0]\npush $N9adfcc00\nCopyBBox {\ninputs 2\nname CopyBBoxUnion\nxpos -401\nypos 743\ndisable {{parent.bbox==0?0:1}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxIntersection\nxpos -401\nypos 769\ndisable {{\"parent.bbox==1 ? 0 : 1\"}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxA\nxpos -401\nypos 795\ndisable {{\"parent.bbox==2 ? 0 : 1\"}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxB\nxpos -401\nypos 827\ndisable {{\"parent.bbox==3 ? 0 : 1\"}}\n}\nCrop {\nbox {0 0 {parent.width} {parent.height}}\ncrop false\nname CopyBBoxFormat\nxpos -401\nypos 853\ndisable {{\"parent.bbox==4 ? 0 : 1\"}}\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nset N9aace0b0 [stack 0]\nTransform {\nscale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\ncenter {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\nblack_outside false\nshutteroffset centred\nname TransformBBoxAdjustPercent\nxpos -516\nypos 898\n}\npush $N9aace0b0\nAdjBBox {\nnumpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\nname AdjBBoxPixels\nxpos -401\nypos 901\n}\nSwitch {\ninputs 2\nwhich {{adjustBBoxExtra}}\nname Switch3\nxpos -401\nypos 940\n}\nDot {\nname Dot9\nnote_font_size 41\nxpos -367\nypos 993\n}\npush $N9aaaa4f0\nCopyBBox {\ninputs 2\nname CopyBBox\nxpos 0\nypos 989\n}\nBlackOutside {\nname BlackOutside1\nxpos 0\nypos 1015\ndisable {{!parent.blackOutside}}\n}\nOutput {\nname Output1\nxpos 0\nypos 1155\n}\npush $N9ad292a0\nNoOp {\nname BBoxResult\nxpos 588\nypos -223\naddUserKnob {20 User}\naddUserKnob {15 bbox}\nbbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n}\nend_group\nGroup {\nname BinaryAlpha1\ntile_color 0x2a2a2aff\nlabel \"(\\[value an] --> \\[value output1])\"\nnote_font Verdana\nnote_font_color 0xfffff9ff\nxpos 52\nypos 741\naddUserKnob {20 BinaryAlpha}\naddUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\naddUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\noutput1 alpha\naddUserKnob {20 info l Info}\naddUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\naddUserKnob {26 ver l Version: T v03}\n}\nInput {\ninputs 0\nname Input\nxpos -398\nypos 275\n}\nExpression {\ntemp_name0 rgb_an\ntemp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\ntemp_name1 rgba_an\ntemp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\ntemp_name2 alpha_an\ntemp_expr2 a!=0?1:0\nexpr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\nname Expression\nxpos -398\nypos 341\n}\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle\nlabel \"\\[value in]\"\nxpos -398\nypos 367\ndisable {{parent.output1}}\n}\nOutput {\nname Output1\nxpos -398\nypos 456\n}\nend_group\nGroup {\nname ExponBlurSimple1\nonCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\nknobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n        \\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n        \\nelif k.name() == \\\"steps\\\":\\n    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        \\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n        \\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('mult').getValue()\\n        \\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, b1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n            b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n            merge.setInput(i if i<2 else i+1, b)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n            \\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n        \\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n        \\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n            \\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n        \\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\ntile_color 0xcc804eff\nlabel \"(\\[value output2])\"\nnote_font \"Verdana Bold Bold Bold Bold Bold Bold Bold\"\nnote_font_color 0xffffffff\nselected true\nxpos 52\nypos 823\naddUserKnob {20 ExponBlurSimple}\naddUserKnob {41 channels T Shuffle1.in}\naddUserKnob {41 maskChannelMask_1 l area T Multiply1.maskChannelMask}\naddUserKnob {41 inject_1 l inject -STARTLINE T Multiply1.inject}\naddUserKnob {41 invert_mask_1 l invert -STARTLINE T Multiply1.invert_mask}\naddUserKnob {41 fringe_1 l fringe -STARTLINE T Multiply1.fringe}\naddUserKnob {26 \"\"}\naddUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\noutput2 Over\naddUserKnob {3 steps l \"  Steps\" -STARTLINE}\nsteps 8\naddUserKnob {3 mergeNumber -STARTLINE +INVISIBLE}\nmergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\naddUserKnob {26 text l \" \" -STARTLINE T \" \"}\naddUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\naddUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\naddUserKnob {14 size l Size R -100 100}\nsize {{parent.size} {parent.size}}\naddUserKnob {7 mult l Multiplier R 1 8}\nmult {{parent.mult}}\naddUserKnob {26 text_1 l \" \" T \" \"}\naddUserKnob {14 postBlur l \"Post Blur\" R 0 100}\npostBlur {{parent.postBlur} {parent.postBlur}}\naddUserKnob {26 \"\"}\naddUserKnob {20 bboxControl l \"BBox Control\" n 1}\nbboxControl 0\naddUserKnob {26 text_2 l \" \" T \" \"}\naddUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\naddUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\naddUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\nsafeBBox true\naddUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\naddUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\nsafetyBBoxMethod percent\naddUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\nsafeBBoxPercent 1.1\naddUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\naddUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\naddUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\naddUserKnob {26 \"\"}\naddUserKnob {20 endGroup n -1}\naddUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\naddUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\naddUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\naddUserKnob {41 mix T MergeKeymix.mix}\naddUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\nsafeBBoxPixels 100\naddUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\nadjustBBoxPercent 1\naddUserKnob {20 info l Info}\naddUserKnob {26 creator l Creator: T \"Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\naddUserKnob {26 ver l Version: T v02}\n}\nBackdropNode {\ninputs 0\nname BackdropNode1\ntile_color 0x535e5a00\nlabel \"BBox Management\"\nnote_font_size 30\nnote_font_color 0xffffffff\nxpos -529\nypos 492\nbdwidth 341\nbdheight 525\n}\nInput {\ninputs 0\nname Inputimg\nxpos 0\nypos -969\n}\nDot {\nname Dot16\nnote_font_size 41\nxpos 34\nypos -802\n}\nset N9a974650 [stack 0]\nDot {\nname Dot2\nnote_font_size 41\nxpos -367\nypos -802\n}\nDot {\nname Dot18\nlabel B\nnote_font_size 41\nxpos -367\nypos 434\n}\nDot {\nname Dot11\nnote_font_size 41\nxpos -367\nypos 623\n}\nset N9a9828b0 [stack 0]\nDot {\nname Dot3\nnote_font_size 41\nxpos -367\nypos 675\n}\nset N9a9874b0 [stack 0]\nDot {\nname Dot8\nnote_font_size 41\nxpos -463\nypos 675\n}\nDot {\nname Dot15\nnote_font_size 41\nxpos -463\nypos 831\n}\npush $N9a974650\nDot {\nname Dot1\nnote_font_size 41\nxpos 461\nypos -802\n}\nShuffle {\nname Shuffle1\nlabel \"\\[value in]\"\nxpos 427\nypos -756\n}\nRemove {\noperation keep\nchannels rgba\nname Remove1\nxpos 427\nypos -718\n}\nDot {\nname Dot21\nnote_font_size 41\nxpos 461\nypos -597\n}\nset N9a9b3250 [stack 0]\nInvert {\nchannels rgba\nname Invert1\nxpos 695\nypos -601\ndisable {{\"parent.size < 0 ? 0 : 1\"}}\n}\nset N9a9b7de0 [stack 0]\nDot {\nname Dot4\nnote_font_size 41\nxpos 540\nypos -543\n}\nNoOp {\nname Original\nxpos 506\nypos -327\n}\nDot {\nname Dot5\nnote_font_size 41\nxpos 540\nypos 14\n}\nCrop {\ninputs 0\nbox {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\nreformat true\ncrop false\nname Crop1\nxpos 210\nypos -750\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nAddChannels {\nchannels rgba\nname AddChannels2\nxpos 210\nypos -724\n}\npush $N9a974650\nMerge2 {\ninputs 2\nname Merge3\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 83\nypos -671\n}\nNoOp {\nname BBoxInput\nxpos 83\nypos -628\naddUserKnob {20 User}\naddUserKnob {15 bbox}\nbbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n}\nInput {\ninputs 0\nname Inputarea\nxpos 289\nypos -638\nnumber 2\n}\nAddChannels {\nchannels alpha\ncolor 1\nname AddChannels1\nxpos 289\nypos -580\n}\nInvert {\nchannels rgba\nname Invert3\nxpos 289\nypos -503\n}\npush $N9a9b7de0\nMultiply {\ninputs 1+1\nchannels rgba\nvalue 0\nname Multiply1\nlabel \"\\[value value]\"\nxpos 695\nypos -509\n}\nNoOp {\nname Start\nxpos 695\nypos -450\n}\nset N9aa20930 [stack 0]\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**7} {(Blur1.size)*(mult)**7}}\ncrop false\nname Blur8\nlabel \"\\[value size]\"\nxpos 1395\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**6} {(Blur1.size)*(mult)**6}}\ncrop false\nname Blur7\nlabel \"\\[value size]\"\nxpos 1295\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**5} {(Blur1.size)*(mult)**5}}\ncrop false\nname Blur6\nlabel \"\\[value size]\"\nxpos 1195\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**4} {(Blur1.size)*(mult)**4}}\ncrop false\nname Blur5\nlabel \"\\[value size]\"\nxpos 1095\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**3} {(Blur1.size)*(mult)**3}}\ncrop false\nname Blur4\nlabel \"\\[value size]\"\nxpos 995\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**2} {(Blur1.size)*(mult)**2}}\ncrop false\nname Blur3\nlabel \"\\[value size]\"\nxpos 895\nypos -370\n}\npush 0\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{(Blur1.size)*(mult)**1} {(Blur1.size)*(mult)**1}}\ncrop false\nname Blur2\nlabel \"\\[value size]\"\nxpos 795\nypos -370\n}\npush $N9aa20930\nBlur {\nchannels rgba\nsize {{parent.size.w} {parent.size.h}}\nname Blur1\nlabel \"\\[value size]\"\nxpos 695\nypos -370\n}\nMerge2 {\ninputs 8+1\noperation {{parent.mergeNumber}}\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 695\nypos -256\n}\nNoOp {\nname End\nxpos 695\nypos -230\n}\nset Nd6534700 [stack 0]\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 585\nypos -175\n}\nGroup {\nname BBoxToFormat\nonCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\ntile_color 0xa57aaaff\nnote_font \"Verdana Bold Bold Bold Bold Bold Bold Bold\"\nnote_font_color 0xffffffff\nxpos 585\nypos -151\naddUserKnob {20 CropBBox}\naddUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\naddUserKnob {41 intersect T Crop6.intersect}\naddUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\naddUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\noverscanType {{parent.safetyBBoxMethod}}\naddUserKnob {14 overscan l Overscan R 0 400}\noverscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\naddUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\noverscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\naddUserKnob {20 inputBbox l \"BBox Data\" n 1}\naddUserKnob {15 inputFormat l \"Input Format\"}\ninputFormat {0 0 {input.width} {input.height}}\naddUserKnob {15 inputBBox l \"Input BBox\"}\ninputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\naddUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\noutputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\naddUserKnob {15 outputBBox l \"Output BBox\"}\noutputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\naddUserKnob {20 endGroup n -1}\naddUserKnob {20 info_1 l Info}\naddUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\naddUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\naddUserKnob {26 ver l Version: T v02}\n}\nInput {\ninputs 0\nname Input\nxpos 261\nypos 394\n}\nDot {\nname Dot2\nnote_font_size 41\nxpos 295\nypos 462\n}\nset Nd6553b90 [stack 0]\nDot {\nname Dot1\nnote_font_size 41\nxpos -160\nypos 462\n}\nset Nd65586d0 [stack 0]\npush $Nd6553b90\nCrop {\nbox {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\ncrop {{parent.blackOutside}}\nname Crop6\nxpos 261\nypos 510\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nset Nd655d250 [stack 0]\nRemove {\noperation keep\nchannels none\nname Remove1\nxpos 120\nypos 504\n}\nset Nd6568640 [stack 0]\nTransform {\nscale {{parent.overscanPercent} {parent.overscanPercent}}\ncenter {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\nshutteroffset centred\nname Transform1\nselected true\nxpos 120\nypos 553\n}\npush $Nd6568640\nAdjBBox {\nnumpixels {{parent.overscan} {parent.overscan}}\nname AdjBBox1\nxpos -5\nypos 510\n}\nSwitch {\ninputs 2\nwhich {{overscanType}}\nname Switch2\nlabel \"\\[value which]\"\nxpos -5\nypos 549\n}\nMerge2 {\ninputs 2\nbbox intersection\nAchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {-rgba.red -rgba.green -rgba.blue rgba.alpha}\nname Merge1\nxpos -5\nypos 647\ndisable {{!parent.Crop6.intersect}}\n}\npush $Nd65586d0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos -194\nypos 653\n}\nBlackOutside {\nname BlackOutside1\nxpos -194\nypos 692\ndisable {{!parent.blackOutside}}\n}\nDot {\nname Dot4\nnote_font_size 41\nxpos -160\nypos 769\n}\npush $Nd655d250\nSwitch {\ninputs 2\nwhich {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 261\nypos 759\n}\nset N9ed07210 [stack 0]\nOutput {\nname Output1\nxpos 261\nypos 921\n}\npush $N9ed07210\nNoOp {\nname OutputBBox1\nxpos 378\nypos 821\naddUserKnob {20 User}\naddUserKnob {15 OutputBBox l \"Output BBox\"}\nOutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\naddUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\noutputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n}\nend_group\npush $Nd6534700\nMerge2 {\ninputs 2\nbbox intersection\nname Merge4\nxpos 585\nypos -127\n}\npush $Nd6534700\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 585\nypos -101\n}\npush $Nd6534700\nSwitch {\ninputs 2\nwhich {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\nname Switch2\nlabel \"\\[value which]\"\nxpos 695\nypos -106\n}\nGrade {\nchannels rgba\nwhitepoint 8\nblack_clamp false\nname AverageMult\nxpos 695\nypos -37\ndisable {{\"output2 == 4 ? 0 : 1\"}}\n}\nMerge2 {\ninputs 2\noperation max\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 695\nypos 10\ndisable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n}\nBlur {\nchannels rgba\nsize {{postBlur} {postBlur}}\nname BlurOriginal\nlabel \"\\[value size]\"\nxpos 695\nypos 59\n}\nInvert {\nchannels rgba\nname Invert2\nxpos 695\nypos 97\ndisable {{\"parent.size < 0 ? 0 : 1\"}}\n}\npush $N9a9b3250\nSwitch {\ninputs 2\nwhich {{\"parent.size == 0 ? 0 : 1\"}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 427\nypos 93\n}\npush $N9a974650\nShuffleCopy {\ninputs 2\nin2 none\nblack red\nwhite green\nred2 blue\ngreen2 alpha\nout none\nout2 {{{parent.Shuffle1.in}}}\nname ShuffleCopy1\nxpos 0\nypos 97\n}\nDot {\nname Dot17\nlabel A\nnote_font_size 41\nxpos 34\nypos 455\n}\nDot {\nname Dot7\nnote_font_size 41\nxpos 34\nypos 585\n}\nset N9eda1cc0 [stack 0]\nDot {\nname Dot12\nnote_font_size 41\nxpos -260\nypos 585\n}\nDot {\nname Dot13\nnote_font_size 41\nxpos -260\nypos 799\n}\npush $N9a9828b0\nInput {\ninputs 0\nname Inputmask\nxpos 346\nypos 325\nnumber 1\n}\nDot {\nname Dot19\nlabel Mask\nnote_font_size 41\nxpos 380\nypos 438\n}\nset N9edb4a70 [stack 0]\nDot {\nname Dot20\nnote_font_size 41\nxpos 270\nypos 438\n}\npush $N9eda1cc0\nMerge2 {\ninputs 2\nbbox intersection\nAchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {rgba.red -rgba.green -rgba.blue rgba.alpha}\nname MergeIntersection\nxpos 236\nypos 575\ndisable {{\"!\\[exists parent.input1]\"}}\n}\nMerge2 {\ninputs 2\nAchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\nBchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\noutput {rgba.red -rgba.green -rgba.blue rgba.alpha}\nname MergeUnion\nxpos 236\nypos 613\ndisable {{\"!\\[exists parent.input1]\"}}\n}\nDot {\nname Dot6\nlabel \"intersection\\nof (Mask and A) + B\"\nnote_font_size 14\nnote_font_color 0xffffffff\nxpos 270\nypos 773\n}\npush $N9edb4a70\nDot {\nname Dot10\nnote_font_size 41\nxpos 380\nypos 675\n}\npush $N9eda1cc0\npush $N9a9874b0\nMerge2 {\ninputs 2+1\noperation copy\nAchannels none\nBchannels none\noutput none\nalso_merge all\nname MergeKeymix\nxpos 0\nypos 665\n}\nDot {\nname Dot14\nnote_font_size 41\nxpos 34\nypos 747\n}\nset N9eb08930 [stack 0]\npush $N9a9874b0\nCopyBBox {\ninputs 2\nname CopyBBoxUnion\nxpos -401\nypos 743\ndisable {{parent.bbox==0?0:1}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxIntersection\nxpos -401\nypos 769\ndisable {{\"parent.bbox==1 ? 0 : 1\"}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxA\nxpos -401\nypos 795\ndisable {{\"parent.bbox==2 ? 0 : 1\"}}\n}\nCopyBBox {\ninputs 2\nname CopyBBoxB\nxpos -401\nypos 827\ndisable {{\"parent.bbox==3 ? 0 : 1\"}}\n}\nCrop {\nbox {0 0 {parent.width} {parent.height}}\ncrop false\nname CopyBBoxFormat\nxpos -401\nypos 853\ndisable {{\"parent.bbox==4 ? 0 : 1\"}}\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\nset N9eb2c890 [stack 0]\nTransform {\nscale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\ncenter {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\nblack_outside false\nshutteroffset centred\nname TransformBBoxAdjustPercent\nxpos -516\nypos 898\n}\npush $N9eb2c890\nAdjBBox {\nnumpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\nname AdjBBoxPixels\nxpos -401\nypos 901\n}\nSwitch {\ninputs 2\nwhich {{adjustBBoxExtra}}\nname Switch3\nxpos -401\nypos 940\n}\nDot {\nname Dot9\nnote_font_size 41\nxpos -367\nypos 993\n}\npush $N9eb08930\nCopyBBox {\ninputs 2\nname CopyBBox\nxpos 0\nypos 989\n}\nBlackOutside {\nname BlackOutside1\nxpos 0\nypos 1015\ndisable {{!parent.blackOutside}}\n}\nOutput {\nname Output1\nxpos 0\nypos 1155\n}\npush $Nd6534700\nNoOp {\nname BBoxResult\nxpos 588\nypos -223\naddUserKnob {20 User}\naddUserKnob {15 bbox}\nbbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n}\nend_group\nUnpremult {\nname Unpremult6\nxpos 52\nypos 929\n}\nSwitch {\ninputs 2\nwhich {{parent.previewKey}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 52\nypos 977\n}\npush $N32d06f00\nDot {\nname Dot4\nnote_font_size 41\nxpos -124\nypos 202\n}\nDot {\nname Dot5\nnote_font_size 41\nxpos -124\nypos 1046\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 52\nypos 1043\n}\nOutput {\nname Output1\nxpos 52\nypos 1163\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BlacksMatch.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name BlacksMatch\n help \"Choose a black point color or plug an image /constant you wish to be your blackpoint into BlackColor input.\\n\\nUse Mult Range to control how far above the blackpoint color to affect the lows\\n\\nUse the RollOff gamma to add fall off to the bottom of the curve\\n\\nTurn on the preview Plotscan and move the sampler over a region to see what your settings are doing to a linear 0-1 ramp.  This will help you see if you have weird curves, clamping or other funky problems as you adjust settings\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"inputChange\\\":\\n    nsd = nuke.toNode(\\\"SwitchDefault\\\")\\n    n\\[\\\"defaultBlack\\\"].setEnabled(nsd\\[\\\"which\\\"].getValue()==1)\\n\\nif k.name() == \\\"previewPlotScan\\\":\\n    p = n.knob(\\\"previewPlotScan\\\").value()\\n    if p == True:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(True)\\n    else:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(False)\"\n tile_color 0x1c1c1cff\n note_font \"Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n selected true\n addUserKnob {20 BlacksMatch}\n addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 premultInput l \"Premultiplied Input\" +STARTLINE}\n addUserKnob {4 mergeOp l Operation: t \"Plus and Screen do the same thing with our operation, so I only included a hypot between plus/screen and hypot.  Hypot raises the mult by x2 because I thought that gave more pleasising results.  It will probably be a harsher curve (more towards clamp) than the plus/screen result).\" M {Plus/Screen Hypot \"\" \"\"}}\n addUserKnob {18 defaultBlack l \"Default Black\"}\n defaultBlack {0.05 0.05 0.05}\n addUserKnob {6 defaultBlack_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 multBase l \"Mult Low Range\" t \"This is the Multiplier for the top of the \\\"toe\\\" curve.  It is multiplying the BlackPoint color by this number and setting it as the highest point weird the curve will influence the midtones and the highlights\" R 1.5 10}\n multBase 4\n addUserKnob {7 rolloffGamma l \"Rolloff Gamma\" t \"This controls the bottom of the curve, the falloff to where it is bending toward the \\\"cut off point\\\" which is out black color.  A lower value will act more like a clamp and a higher value will act more like a plus.\" R 0.1 1}\n rolloffGamma 0.35\n addUserKnob {4 minVal l \"Min Value is:\" M {\"Toe Result\" \"Clamp Result\" \"\" \"\"}}\n addUserKnob {6 previewPlotScan l \"Preview PlotScan\" t \"Click to overlay a plotscan graph to show you how your black color is influenced by your settings.\" +STARTLINE}\n addUserKnob {12 plotscanSampler l \"PlotScan Sampler\" +HIDDEN}\n plotscanSampler {200 200}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T BlacksMatch}\n addUserKnob {26 ver l Version: T v10}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x556a5000\n  label \"This Creates a \\nPer Channel Key\\nBased on the Blackpoint\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos 991\n  ypos -77\n  bdwidth 314\n  bdheight 421\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  tile_color 0xff\n  label green\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 177\n  ypos 466\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xff\n  label red\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 188\n  ypos 350\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  tile_color 0xff\n  label blue\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 186\n  ypos 570\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  tile_color 0xff\n  label \"min will be \\nblack color\"\n  note_font_size 31\n  note_font_color 0xffffffff\n  xpos 143\n  ypos 733\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 322\n  ypos -550\n }\n Dot {\n  name Dot17\n  xpos 356\n  ypos -418\n }\nset N8dc35590 [stack 0]\n AddChannels {\n  channels rgba\n  color 1\n  name AddChannels1\n  xpos 322\n  ypos -365\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 356\n  ypos -288\n }\nset N8dd1b7b0 [stack 0]\n Grade {\n  channels rgba\n  white 0\n  multiply 0\n  add {{defaultBlack.r} {defaultBlack.g} {defaultBlack.b} 0}\n  black_clamp false\n  name Grade1\n  label color\n  xpos 922\n  ypos -295\n }\n Input {\n  inputs 0\n  name InputBlackColor\n  xpos 1138\n  ypos -569\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name SwitchDefault\n  xpos 1138\n  ypos -291\n }\n Dot {\n  name Dot26\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1172\n  ypos -212\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1172\n  ypos -151\n }\nset N8dc262e0 [stack 0]\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos 1631\n  ypos -151\n }\nset N7a523960 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 2140\n  ypos -151\n }\nset N920f36d0 [stack 0]\n Crop {\n  box {{plotscanSampler.x-2} {plotscanSampler.y-2} {plotscanSampler.x+2} {plotscanSampler.x+2}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 2432\n  ypos -154\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size 16\n  name Blur1\n  label \"\\[value size]\"\n  xpos 2432\n  ypos -130\n }\n Reformat {\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Reformat4\n  xpos 2432\n  ypos -92\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 2466\n  ypos -43\n }\nset N8d9639b0 [stack 0]\n Dot {\n  name Dot47\n  note_font_size 41\n  xpos 2917\n  ypos -43\n }\nset N8daf4010 [stack 0]\n Dot {\n  name Dot42\n  label \"Black Color\"\n  note_font_size 41\n  xpos 2917\n  ypos 286\n }\n Dot {\n  name Dot43\n  note_font_size 41\n  xpos 2917\n  ypos 366\n }\nset N8de4da70 [stack 0]\n Dot {\n  name Dot44\n  note_font_size 41\n  xpos 2917\n  ypos 480\n }\nset N8de34ea0 [stack 0]\n Dot {\n  name Dot45\n  note_font_size 41\n  xpos 2917\n  ypos 588\n }\nset N8de26340 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 2917\n  ypos 656\n }\nset N6a60ea60 [stack 0]\npush $N6a60ea60\npush $N8daf4010\n Dot {\n  name Dot11\n  label \"Black Color\"\n  note_font_size 41\n  xpos 3426\n  ypos -43\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply6\n  label \"mult black color\"\n  xpos 3392\n  ypos 77\n }\n Reformat {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  pbb true\n  name Reformat1\n  xpos 2711\n  ypos 61\n }\n Ramp {\n  p0 {0 0}\n  p1 {512 0}\n  name Ramp1\n  xpos 2711\n  ypos 93\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 2745\n  ypos 154\n }\nset N8dd35090 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 3138\n  ypos 154\n }\nset N8deb2480 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide2\n  xpos 3392\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert5\n  xpos 3392\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp4\n  xpos 3392\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value 0.5\n  name Gamma4\n  xpos 3392\n  ypos 223\n }\n Dot {\n  name Dot39\n  xpos 3426\n  ypos 366\n }\nset N8de36a30 [stack 0]\n Dot {\n  name Dot40\n  xpos 3426\n  ypos 480\n }\nset N8de3ea20 [stack 0]\n Dot {\n  name Dot41\n  xpos 3426\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle11\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3277\n  ypos 581\n }\npush $N8de26340\npush $N8de3ea20\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle12\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3276\n  ypos 473\n }\npush $N8de34ea0\npush $N8de36a30\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle13\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3270\n  ypos 359\n }\npush $N8de4da70\npush $N8deb2480\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge14\n  label red\n  xpos 3104\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge15\n  label green\n  xpos 3104\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge16\n  label blue\n  xpos 3104\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge18\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 3104\n  ypos 644\n }\n Dot {\n  name Dot46\n  note_font_size 41\n  xpos 3138\n  ypos 742\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor1\n  xpos 2883\n  ypos 739\n }\npush $N8d9639b0\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply3\n  label \"mult black color\"\n  xpos 2432\n  ypos 63\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply4\n  label \"hypot Extra Mult\\n\"\n  xpos 2432\n  ypos 95\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N8dd35090\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide1\n  xpos 2432\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert2\n  xpos 2432\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp2\n  xpos 2432\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma2\n  xpos 2432\n  ypos 223\n }\n Dot {\n  name Dot6\n  xpos 2466\n  ypos 366\n }\nset N8dd476b0 [stack 0]\n Dot {\n  name Dot9\n  xpos 2466\n  ypos 480\n }\nset N8dd49a30 [stack 0]\n Dot {\n  name Dot10\n  xpos 2466\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle4\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 581\n }\npush $N8de26340\npush $N8dd49a30\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle5\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 473\n }\npush $N8de34ea0\npush $N8dd476b0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle6\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2517\n  ypos 359\n }\npush $N8de4da70\npush $N8dd35090\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge2\n  label red\n  xpos 2711\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge6\n  label green\n  xpos 2711\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge7\n  label blue\n  xpos 2711\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge8\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 2711\n  ypos 730\n }\n Group {\n  name PlotScanline\n  tile_color 0x9c0000ff\n  xpos 2711\n  ypos 805\n  addUserKnob {20 Controls}\n  addUserKnob {4 mode l \"Sampling method\" M {\"Slice Per Pixel (faster)\" \"Slice Area (slower)\" \"Full Scanline\" \"\" \"\" \"\"}}\n  mode \"Full Scanline\"\n  addUserKnob {6 add2image l \"Add to original\" +STARTLINE}\n  addUserKnob {6 Normalize -STARTLINE}\n  addUserKnob {6 tonemap l \"Tone Map (HDRI)\" -STARTLINE}\n  addUserKnob {6 curve l \"Plot as curve\" +STARTLINE}\n  curve true\n  addUserKnob {3 curveFat l \"Curve Thickness\" -STARTLINE}\n  addUserKnob {3 sa l \"Sample Area\" t \"Disabled when using pr pixel method.\"}\n  sa 1\n  addUserKnob {7 lift l Lift R -1 1}\n  addUserKnob {7 scale l Scale R 0 5}\n  scale 1\n  addUserKnob {26 \"\"}\n  addUserKnob {12 p1 l \"Start Point\"}\n  p1 {376 418}\n  addUserKnob {12 p2 l \"End Point\" -STARTLINE}\n  p2 {428.5 425.5}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 \"\" l \"About \" T \"Plot Scanline v0.4 | theo@euqahuba.com\\nUse P1 to select your scanline and/or you start slice.\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -480\n   ypos 62\n  }\nset N8d8817e0 [stack 0]\n  Expression {\n   temp_name0 length\n   temp_expr0 sqrt(r*r+g*g+b*b)\n   expr0 r/length\n   expr1 g/length\n   expr2 b/length\n   name Normalize\n   xpos -480\n   ypos 108\n   disable {{1-parent.Normalize i}}\n  }\n  Expression {\n   expr0 r/(r+1)\n   expr1 g/(g+1)\n   expr2 b/(b+1)\n   name tonamap\n   xpos -480\n   ypos 134\n   disable {{1-parent.tonemap i}}\n  }\nset N8d88b5b0 [stack 0]\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name scanline\n   xpos -302\n   ypos 193\n   addUserKnob {20 User}\n  }\npush $N8d88b5b0\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name Expression_highQuality\n   xpos -515\n   ypos 197\n   addUserKnob {20 User}\n  }\npush $N8d88b5b0\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name perPixel\n   xpos -419\n   ypos 201\n   addUserKnob {20 User}\n  }\n  Switch {\n   inputs 3\n   which {{parent.mode i}}\n   name Switch2\n   xpos -480\n   ypos 253\n  }\n  Matrix {\n   matrix {\n       {0 1 0}\n       {1 -4 1}\n       {0 1 0}\n     }\n   name Matrix2\n   xpos -480\n   ypos 284\n   disable {{-1+parent.curve i x70 1}}\n  }\n  Dilate {\n   size {{parent.curveFat}}\n   name Dilate1\n   xpos -480\n   ypos 326\n   disable {{-1+parent.curve.main}}\n  }\n  Clamp {\n   name Clamp1\n   xpos -480\n   ypos 383\n  }\nset N8dd6f3b0 [stack 0]\npush $N8d8817e0\n  Dot {\n   name Dot1\n   xpos -556\n   ypos 66\n  }\n  Clamp {\n   maximum 331\n   name Clamp2\n   xpos -590\n   ypos 352\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   bbox intersection\n   name Merge1\n   xpos -590\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   xpos -556\n   ypos 433\n  }\npush $N8dd6f3b0\n  Switch {\n   inputs 2\n   which {{parent.add2image i}}\n   name Switch1\n   xpos -480\n   ypos 430\n  }\n  Output {\n   name Output1\n   xpos -480\n   ypos 470\n  }\n end_group\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 2745\n  ypos 857\n }\nset N8d88db50 [stack 0]\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name Shuffle7\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2821\n  ypos 850\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 2821\n  ypos 882\n }\n Dilate {\n  channels rgba\n  size -2\n  name Dilate1\n  xpos 2821\n  ypos 910\n }\n Invert {\n  name Invert3\n  xpos 2821\n  ypos 934\n }\npush $N8d88db50\n Merge2 {\n  inputs 2\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 2711\n  ypos 938\n }\n Group {\n  name BinaryAlpha\n  tile_color 0x2a2a2aff\n  label \"(\\[value an] --> \\[value output1])\"\n  note_font Verdana\n  note_font_color 0xfffff9ff\n  xpos 2711\n  ypos 983\n  addUserKnob {20 BinaryAlpha}\n  addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n  addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n  output1 alpha\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n  addUserKnob {26 ver l Version: T v03}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -398\n   ypos 275\n  }\n  Expression {\n   temp_name0 rgb_an\n   temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n   temp_name1 rgba_an\n   temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n   temp_name2 alpha_an\n   temp_expr2 a!=0?1:0\n   expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n   name Expression\n   xpos -398\n   ypos 341\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle\n   label \"\\[value in]\"\n   xpos -398\n   ypos 367\n   disable {{parent.output1}}\n  }\n  Output {\n   name Output1\n   xpos -398\n   ypos 456\n  }\n end_group\n Reformat {\n  type \"to box\"\n  box_height {{\"\\[exists parent.input0] ? parent.input.height : root.format.height\"}}\n  resize height\n  filter Impulse\n  pbb true\n  name Reformat2\n  xpos 2711\n  ypos 1041\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists parent.input0] ? parent.input.width : root.format.width\"}}\n  box_height {{input.height}}\n  resize none\n  filter Impulse\n  black_outside true\n  pbb true\n  name Reformat3\n  xpos 2711\n  ypos 1081\n }\n Dilate {\n  channels rgba\n  size 1\n  name Dilate2\n  xpos 2711\n  ypos 1121\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 2745\n  ypos 1192\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 864\n  ypos 878\n  number 2\n }\n Dot {\n  name Dot29\n  xpos 898\n  ypos 1015\n }\npush $N7a523960\n Dot {\n  name Dot33\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1631\n  ypos 295\n }\n Dot {\n  name Dot37\n  note_font_size 41\n  xpos 1631\n  ypos 360\n }\nset N7a5235b0 [stack 0]\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 1631\n  ypos 474\n }\nset N7a51e4a0 [stack 0]\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 1631\n  ypos 582\n }\nset N7a520820 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 1631\n  ypos 674\n }\nset N92018d80 [stack 0]\npush $N92018d80\npush $N920f36d0\n Multiply {\n  channels rgb\n  value 2\n  name Multiply7\n  label \"mult black color\"\n  xpos 2106\n  ypos 87\n }\npush $N8dd1b7b0\n Unpremult {\n  name Unpremult1\n  xpos 322\n  ypos -16\n  disable {{\"! premultInput\"}}\n }\n Dot {\n  name Dot18\n  xpos 356\n  ypos 145\n }\nset N8d8b1320 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 1028\n  ypos 145\n }\nset N920f9750 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 1852\n  ypos 145\n }\nset N8dea12a0 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide3\n  xpos 2106\n  ypos 142\n }\n Invert {\n  channels rgb\n  name Invert4\n  xpos 2106\n  ypos 166\n }\n Clamp {\n  channels rgb\n  name Clamp3\n  xpos 2106\n  ypos 190\n }\n Gamma {\n  channels rgb\n  value 0.51\n  name Gamma3\n  xpos 2106\n  ypos 214\n }\n Dot {\n  name Dot24\n  xpos 2140\n  ypos 360\n }\nset N8d9b6b10 [stack 0]\n Dot {\n  name Dot25\n  xpos 2140\n  ypos 474\n }\nset N8d9b8fd0 [stack 0]\n Dot {\n  name Dot27\n  xpos 2140\n  ypos 582\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle8\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 575\n }\npush $N7a520820\npush $N8d9b8fd0\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle9\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 467\n }\npush $N7a51e4a0\npush $N8d9b6b10\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle10\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1984\n  ypos 353\n }\npush $N7a5235b0\npush $N8dea12a0\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge11\n  label red\n  xpos 1818\n  ypos 353\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge12\n  label green\n  xpos 1818\n  ypos 467\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge13\n  label blue\n  xpos 1818\n  ypos 575\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge17\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 1818\n  ypos 662\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 1852\n  ypos 760\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor\n  xpos 1597\n  ypos 757\n }\npush $N8dc262e0\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply1\n  label \"mult black color\"\n  xpos 1138\n  ypos 52\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply2\n  label \"hypot Extra Mult\\n\"\n  xpos 1138\n  ypos 84\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N920f9750\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide\n  xpos 1138\n  ypos 194\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 1138\n  ypos 239\n }\n Clamp {\n  channels rgb\n  name Clamp1\n  xpos 1138\n  ypos 263\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma1\n  xpos 1138\n  ypos 287\n }\n Dot {\n  name Dot19\n  xpos 1172\n  ypos 364\n }\nset N8d8cc9a0 [stack 0]\n Dot {\n  name Dot20\n  xpos 1172\n  ypos 478\n }\nset N8d8ced20 [stack 0]\n Dot {\n  name Dot21\n  xpos 1172\n  ypos 586\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle3\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 579\n }\npush $N8dc262e0\n Dot {\n  name Dot23\n  xpos 706\n  ypos -151\n }\n Dot {\n  name Dot8\n  label \"Black Color\"\n  note_font_size 41\n  xpos 706\n  ypos 293\n }\nset N8dcc6640 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 706\n  ypos 404\n }\nset N8dcc8b00 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 706\n  ypos 523\n }\npush $N8d8ced20\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle2\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 471\n }\npush $N8dcc8b00\npush $N8d8cc9a0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1016\n  ypos 357\n }\npush $N8dcc6640\npush $N8d8b1320\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge3\n  label red\n  xpos 322\n  ypos 357\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge4\n  label green\n  xpos 322\n  ypos 471\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge5\n  label blue\n  xpos 322\n  ypos 579\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge1\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 322\n  ypos 748\n }\n Premult {\n  name Premult4\n  xpos 322\n  ypos 881\n  disable {{\"! premultInput\"}}\n }\npush $N8dc35590\n Dot {\n  name Dot28\n  xpos -146\n  ypos -418\n }\n Dot {\n  name Dot30\n  xpos -146\n  ypos 1015\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name MergeKeymix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1012\n }\n Merge2 {\n  inputs 2\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1189\n  disable {{!previewPlotScan}}\n }\n Output {\n  name Output1\n  xpos 322\n  ypos 1395\n }\n NoOp {\n  inputs 0\n  name Settings\n  note_font_size 51\n  xpos 2494\n  ypos -414\n  addUserKnob {20 User}\n  addUserKnob {7 mergeOpNum l \"Merge Op Num\"}\n  mergeOpNum {{\"mergeOp == 0 ? 24 : 13\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BokehBuilder.gizmo",
    "content": "Group {\n inputs 0\n name BokehBuilder\n tile_color 0x242424ff\n note_font_color 0x91d5ffff\n selected true\n addUserKnob {20 mainSettings l main}\n addUserKnob {26 header l \"\" +STARTLINE T \"<font color=#8cb5ff><font size=7>Bokeh Builder</font> v1.0 </font>\"}\n addUserKnob {26 subheader l \"\" +STARTLINE T \"<font color=#8cb5ff><font size=2>by Kyran Bishop</font></font>\"}\n addUserKnob {26 formatHeader l INVISIBLE +INVISIBLE}\n addUserKnob {41 format l INVISIBLE +INVISIBLE T Constant1.format}\n addUserKnob {26 qualityHeader l \"<b><font color=#70EE70>bokeh quality</font><b>\"}\n addUserKnob {7 bokehQuality l quality}\n bokehQuality 0.2\n addUserKnob {26 typeHeader l \"<b><font color=#70EE70>bokeh controls</font><b>\"}\n addUserKnob {4 bokehType l type M {circular spiked}}\n addUserKnob {7 bokehAnamorph l anamorph}\n addUserKnob {7 bokehRotation l rotation R -180 180}\n addUserKnob {7 bokehGamma l gamma}\n addUserKnob {6 grainEnable l grain +STARTLINE}\n addUserKnob {26 presetHeader l \"<b><font color=#70EE70>preset picker</font><b>\"}\n addUserKnob {4 presetPicker l presets M {\"broken blue\" \"soft blue\" \"natural blue\" microscope \"hexagonal falloff\" \"ringed blue\" \"blue microscope\" \"purple haze\" \"dirty circle\" \"softer dirty circle\" \"super blue\" \"soft spike\"}}\n presetPicker \"soft spike\"\n addUserKnob {22 presetApply l \"apply preset\" -STARTLINE T \"import nuke\\n\\n#TEMPLATE\\n#nuke.thisNode()\\[''].setValue()\\n\\nnuke.thisNode()\\['bokehQuality'].setValue(0.25)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"broken blue\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(200)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.835)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.135)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.21)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(1.2)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.3)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.2)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.495)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.02)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.5)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.5)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(23)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(5.95)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(2.8)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(6)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\t\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"soft blue\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(0)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(0)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(200)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.835)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.135)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.21)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.3)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.2)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.15)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.02)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.5)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.49)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(19)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(5.95)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(2.8)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(4)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\t\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"natural blue\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(0)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(98)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.755)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.035)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.095)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(3)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0.5)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.63)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.24)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.24)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.02)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.5)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.49)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(19)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(22)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(0)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(8.5)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(1)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\t\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"microscope\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.66)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.41)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.04)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.55)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.39)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.31)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0392)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.545)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.49)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(9)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(3)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"hexagonal falloff\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(1)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(0)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.66)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.41)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.01)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.55)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.39)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.31)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0392)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.545)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.49)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(13.5)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(0)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(0)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(3)\\n\\t\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"ringed blue\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.185)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.66)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.41)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.04)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(3)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.55)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.39)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.2)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0392)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.695)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(43)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(125)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(4, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.78)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(13.5)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(6)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(0)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"blue microscope\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.185)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(68)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.66)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.41)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.04)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0.1)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.535)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.405)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.45)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0392)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.28)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.345)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(15)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(0.7)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(6)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"purple haze\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.185)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.765)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.1)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.08)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.13)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.155)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0392)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.28)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1.5, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(19)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(10, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(10, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(0.7)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(4)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\t\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"dirty circle\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.185)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(70)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.63)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.41)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.04)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.585)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.18)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.595)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0472)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.615)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1.5, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(3.4)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(0.415)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(2.7)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(6)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(0)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"softer dirty circle\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.185)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(70)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.63)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.13)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.04)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.585)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.18)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.595)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0472)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.615)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1.5, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(3.4)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(0.415)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(2.7)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(6)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(4)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"super blue\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0.08)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0.165)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(1)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(70)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.32)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.105)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.095)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(4)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(1.2)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.375)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.69)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(1)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0472)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.615)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(11)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(78)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(5, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(10, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.88)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(26.5)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(10, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(1)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(2.7)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(3.4)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(5)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\\n\\nif nuke.thisNode()\\['presetPicker'].value() == \\\"soft spike\\\":\\n\\tnuke.thisNode()\\['bokehType'].setValue(1)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(0)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(86)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.43)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.15)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.055)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(3)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(1.2)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0.375)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.69)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.205)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.0472)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.615)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(11)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(78)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(2, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(10)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(0, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(4, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(5, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(0.385)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(2.7)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(3.4)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(0)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(2)\"}\n addUserKnob {26 uiControlHeader l \"<b><font color=#70EE70>UI controls</font><b>\"}\n addUserKnob {22 resetButton l \"reset all\" T \"import nuke\\n\\n#TEMPLATE\\n#nuke.thisNode()\\[''].setValue()\\n\\nif nuke.ask('Are you sure you want to reset the bokeh shape? This cannot be undone!'):\\t\\n\\tnuke.thisNode()\\['bokehQuality'].setValue(0.2)\\n\\tnuke.thisNode()\\['bokehType'].setValue(0)\\n\\tnuke.thisNode()\\['bokehAnamorph'].setValue(0)\\n\\tnuke.thisNode()\\['bokehRotation'].setValue(0)\\n\\tnuke.thisNode()\\['bokehGamma'].setValue(0)\\n\\tnuke.thisNode()\\['grainEnable'].setValue(0)\\n\\t#\\t\\n\\tnuke.thisNode()\\['noiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['noiseSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseGain'].setValue(0.5)\\n\\tnuke.thisNode()\\['noiseGamma'].setValue(0.4)\\n\\tnuke.thisNode()\\['noiseMix'].setValue(0.05)\\n\\t#\\n\\tnuke.thisNode()\\['naturalNoiseEnable'].setValue(1)\\n\\tnuke.thisNode()\\['naturalNoisePicker'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSize'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseSoftness'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGain'].setValue(0)\\n\\tnuke.thisNode()\\['naturalNoiseGamma'].setValue(0.7)\\n\\tnuke.thisNode()\\['naturalNoiseStrength'].setValue(0.4)\\n\\t#\\n\\tnuke.thisNode()\\['ringsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ringsThickness'].setValue(0.04)\\n\\tnuke.thisNode()\\['ringsStrength'].setValue(0.1)\\n\\t#\\n\\tnuke.thisNode()\\['chromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaFalloff'].setValue(0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['innerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['innerChromaStrength'].setValue(0.5)\\n\\t#\\n\\tnuke.thisNode()\\['outerChromaEnable'].setValue(0)\\n\\tnuke.thisNode()\\['outerChromaSize'].setValue(0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['outerChromaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['outerChromaStrength'].setValue(1)\\n\\t#\\n\\tnuke.thisNode()\\['distortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['distortionSize'].setValue(100)\\n\\tnuke.thisNode()\\['noiseDetail'].setValue(1)\\n\\tnuke.thisNode()\\['distortionStrength'].setValue(8.5)\\n\\t#\\n\\tnuke.thisNode()\\['circularTypePicker'].setValue(0)\\n\\tnuke.thisNode()\\['spikedTypePicker'].setValue(0)\" +STARTLINE}\n addUserKnob {20 globalTab l global}\n addUserKnob {26 globalOptionsHeader l \"<b><font color=#70EE70>global options</font><b>\"}\n addUserKnob {20 noiseGrp l noise n 1}\n addUserKnob {6 noiseEnable l enable +STARTLINE}\n noiseEnable true\n addUserKnob {26 \"\"}\n addUserKnob {14 noiseSize l size R 0 100}\n noiseSize 100\n addUserKnob {7 noiseGain l gain R 0.1 1}\n noiseGain 0.5\n addUserKnob {7 noiseGamma l gamma}\n noiseGamma 0.4\n addUserKnob {26 \"\"}\n addUserKnob {7 noiseMix l strength}\n noiseMix 0.05\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {20 naturalNoiseGrp l \"natural noise\" n 1}\n addUserKnob {6 naturalNoiseEnable l enable +STARTLINE}\n naturalNoiseEnable true\n addUserKnob {4 naturalNoisePicker l type M {wavy streaks blobs \"spiky blobs\" \"inverted blobs\"}}\n addUserKnob {26 \"\"}\n addUserKnob {14 naturalNoiseSize l size R 0 100}\n addUserKnob {14 naturalNoiseSoftness l softness R 0 100}\n addUserKnob {7 naturalNoiseGain l gain}\n addUserKnob {7 naturalNoiseGamma l gamma}\n naturalNoiseGamma 0.7\n addUserKnob {26 \"\"}\n addUserKnob {7 naturalNoiseStrength l strength}\n naturalNoiseStrength 0.4\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_8 l endGroup n -1}\n addUserKnob {20 ringsGrp l rings n 1}\n ringsGrp 0\n addUserKnob {6 ringsEnable l enable +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {7 ringsThickness l thickness R 0 0.05}\n ringsThickness 0.04\n addUserKnob {26 thicknessDescriptor l \"\" +STARTLINE T \"(thick) < - - - > (thin)\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 ringsStrength l strength}\n ringsStrength 0.1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {20 innerChromaGrp l \"inner chroma\" n 1}\n innerChromaGrp 0\n addUserKnob {6 chromaEnable l enable +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {14 innerChromaSize l size R 0 100}\n addUserKnob {7 innerChromaFalloff l falloff R 0 200}\n addUserKnob {18 innerChromaTint l tint}\n innerChromaTint {1 1 1}\n addUserKnob {6 innerChromaTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 innerChromaStrength l strength}\n innerChromaStrength 0.5\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {20 outerChromaGrp l \"outer chroma\" n 1}\n outerChromaGrp 0\n addUserKnob {6 outerChromaEnable l enable +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {14 outerChromaSize l size R 0 100}\n addUserKnob {18 outerChromaTint l tint}\n outerChromaTint {1 1 1}\n addUserKnob {6 outerChromaTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 outerChromaStrength l strength}\n outerChromaStrength 1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_7 l endGroup n -1}\n addUserKnob {20 distortionGrp l distortion n 1}\n distortionGrp 0\n addUserKnob {6 distortionEnable l enable +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {14 distortionSize l size R 0 100}\n distortionSize 100\n addUserKnob {7 noiseDetail l detail R 1 10}\n noiseDetail 1\n addUserKnob {26 \"\"}\n addUserKnob {14 distortionStrength l strength R 0 100}\n distortionStrength 8.5\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_6 l endGroup n -1}\n addUserKnob {20 typeTab l type}\n addUserKnob {26 typeHeader_1 l \"<b><font color=#70EE70>type options</font><b>\"}\n addUserKnob {20 circularGrp l circular n 1}\n addUserKnob {4 circularTypePicker l type M {\"solid circle\" \"radial falloff\" \"smooth radial falloff\" \"soft outer clip\" \"inverted outer clip\" \"sharp split\" \"thin clip\" \"punch hole\" \"\"}}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 spikedGrp l spiked n 1}\n addUserKnob {4 spikedTypePicker l type M {\"medium incline\" \"short incline\" \"soft curves\" \"no incline\"}}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n}\n Noise {\n  inputs 0\n  size {{parent.distortionSize}}\n  lacunarity {{parent.noiseDetail}}\n  center {640 360}\n  name Noise2\n  xpos -196\n  ypos 959\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 512\n  box_height 512\n  box_fixed true\n  name Reformat2\n  xpos 992\n  ypos -312\n }\n Dot {\n  name Dot38\n  xpos 1026\n  ypos -286\n }\nset N672a3400 [stack 0]\n Dot {\n  name Dot41\n  xpos 1864\n  ypos -286\n }\n Flare {\n  position {256 256}\n  radius {80 113.15 120}\n  size_mult 2\n  ring_color 0.33\n  inner_color 0.1\n  outer_falloff 0.56\n  inner_falloff 1.55\n  flattening 0.7\n  sharpness 0.98\n  name Flare8\n  xpos 1830\n  ypos -222\n }\n Dot {\n  name Dot37\n  xpos 1864\n  ypos 337\n }\npush $N672a3400\n Flare {\n  position {256 256}\n  radius {80 117.54 120}\n  size_mult 2\n  inner_color 1\n  flattening 0.7\n  sharpness 0.98\n  name Flare7\n  xpos 992\n  ypos -251\n }\n Roto {\n  output alpha\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x43800000 x43800000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier1 512 bezier\n     {{cc\n       {f 8192}\n       {px x429e0000\n        {0 0}\n        {xc2635552 x41e40000}\n        {0 0}\n        {0 0}\n        {x438000a9 x438000ac}\n        {0 0}\n        {0 0}\n        {x43b0c000 xc21c0000}\n        {0 0}}}     idem}\n     {tx x429e0000 x4325d555 x426f5555}\n     {a osw x41200000 osf 0 str 1 spx x43800000 spy x43800000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {256 256}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto1\n  xpos 992\n  ypos -209\n }\n Premult {\n  name Premult2\n  xpos 992\n  ypos -158\n }\nset N7cf6b400 [stack 0]\n Transform {\n  rotate 60\n  center {256 256}\n  name Transform9\n  xpos 1103\n  ypos -129\n }\nset N7cf6b000 [stack 0]\n Transform {\n  rotate {{parent.Transform9.rotate}}\n  center {256 256}\n  name Transform10\n  xpos 1103\n  ypos -79\n }\nset N7cf6ac00 [stack 0]\n Transform {\n  rotate {{parent.Transform9.rotate}}\n  center {256 256}\n  name Transform11\n  xpos 1103\n  ypos -37\n }\nset N7cf6a800 [stack 0]\n Transform {\n  rotate {{parent.Transform9.rotate}}\n  center {256 256}\n  name Transform12\n  xpos 1103\n  ypos 10\n }\nset N7cf6a400 [stack 0]\n Transform {\n  rotate {{parent.Transform9.rotate}}\n  center {256 256}\n  name Transform13\n  xpos 1103\n  ypos 50\n }\nset N7cf6a000 [stack 0]\n Transform {\n  rotate {{parent.Transform9.rotate}}\n  center {256 256}\n  name Transform14\n  xpos 1103\n  ypos 104\n }\n Roto {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x43800000 x43800000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier3 512 bezier\n     {{cc\n       {f 8192}\n       {px x429e0000\n        {0 0}\n        {x43538000 x439a0000}\n        {0 0}\n        {xc0400000 x40800000}\n        {x434f0000 x43568000}\n        {x40400000 xc0800000}\n        {xc1800000 xc1e80000}\n        {x439a4000 x43500000}\n        {x41800000 x41e80000}\n        {x40d00000 xc1780000}\n        {x43a34000 x4386c000}\n        {xc0d00000 x41780000}\n        {x3fc00000 x3fc00000}\n        {x435e0000 x439b0000}\n        {xbfc00000 xbfc00000}}}     idem}\n     {tx x429e0000 x437f199a x43830000}\n     {a osw x41200000 osf 0 str 1 spx x43800000 spy x43800000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}\n    {curvegroup Bezier2 512 bezier\n     {{cc\n       {f 8192}\n       {px x429e0000\n        {0 0}\n        {x43a3a666 x42533333}\n        {0 0}\n        {x3e999800 x3dccce00}\n        {x43963333 x4205999a}\n        {xbe999800 xbdccce00}\n        {xbf666600 1}\n        {x4396599a x41dccccd}\n        {x3f666600 xbf800000}\n        {xc1133340 x3f4ccce0}\n        {x439d6666 x41a5999a}\n        {x41133340 xbf4ccce0}\n        {xbf800000 xc111999c}\n        {x43a9a666 x41c66666}\n        {1 x4111999c}\n        {x40466680 xc0533340}\n        {x43a8599a x422c6666}\n        {xc0466680 x40533340}}}     idem}\n     {tx x429e0000 x439feeef x4206eeef}\n     {a r 0 g 0 b 0 a 0 osw x41200000 osf 0 str 1 spx x43800000 spy x43800000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}\n    {curvegroup Bezier1 512 bezier\n     {{cc\n       {f 8192}\n       {px x429e0000\n        {0 0}\n        {x438aa333 x42633333}\n        {0 0}\n        {xbeccd000 1}\n        {x438be666 x41b1999a}\n        {x3eccd000 xbf800000}\n        {xbfb33300 0}\n        {x438d6684 x41b134ff}\n        {x3fb33300 0}\n        {xbf4cce00 xbf199980}\n        {x43b6c2eb x42a4ce98}\n        {x3f4cce00 x3f199980}\n        {xbf999a00 xbfb33300}\n        {x43d4cb40 x430aa9b0}\n        {x3f999a00 x3fb33300}\n        {x41266660 x40866660}\n        {x43973333 x43006666}\n        {xc1266660 xc0866660}}}\n      {cc\n       {f 8192}\n       {px x429e0000\n        {0 0}\n        {xc010fe00 x3ed4da80}\n        {0 0}\n        {xbeccd000 1}\n        {xbff23900 xbf5b6460}\n        {x3eccd000 xbf800000}\n        {xbfb33300 0}\n        {0 xc0180000}\n        {x3fb33300 0}\n        {xbf4cce00 xbf199980}\n        {x3f9f6f00 xbfc59f00}\n        {x3f4cce00 x3f199980}\n        {xbf999a00 xbfb33300}\n        {x40a4f180 x400a2280}\n        {x3f999a00 x3fb33300}\n        {x41266660 x40866660}\n        {0 0}\n        {xc1266660 xc0866660}}}}\n     {tx x429e0000 x43a15555 x42944445}\n     {a osw x41200000 osf 0 str 1 spx x43800000 spy x43800000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {256 256}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto2\n  xpos 1103\n  ypos 130\n }\npush $N7cf6a000\npush $N7cf6a400\npush $N7cf6a800\npush $N7cf6ac00\npush $N7cf6b000\npush $N7cf6b400\n Merge2 {\n  inputs 2\n  name Merge22\n  xpos 992\n  ypos -96\n }\n Merge2 {\n  inputs 2\n  name Merge23\n  xpos 992\n  ypos -53\n }\n Merge2 {\n  inputs 2\n  name Merge24\n  xpos 992\n  ypos -11\n }\n Merge2 {\n  inputs 2\n  name Merge25\n  xpos 992\n  ypos 36\n }\n Merge2 {\n  inputs 2\n  name Merge26\n  xpos 992\n  ypos 111\n }\n Merge2 {\n  inputs 2\n  name Merge27\n  xpos 992\n  ypos 165\n }\nset N7fff3c00 [stack 0]\n Dot {\n  name Dot35\n  xpos 1136\n  ypos 169\n }\nset N7fff3800 [stack 0]\n Dot {\n  name Dot45\n  xpos 1246\n  ypos 169\n }\n Dot {\n  name Dot46\n  xpos 1246\n  ypos -217\n }\n Dot {\n  name Dot47\n  xpos 1404\n  ypos -217\n }\nset N7fff2c00 [stack 0]\n Dot {\n  name Dot40\n  xpos 1657\n  ypos -217\n }\n Roto {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {layer Layer6\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43960000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}\n    {layer Layer5\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43700000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}\n    {layer Layer4\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43340000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}\n    {layer Layer3\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x42f00000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}\n    {layer Layer2\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x42700000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}\n    {layer Layer1\n     {f 512}\n     {t x43800000 x43800000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x43def9f0 x43c58d06}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x43dcf97c x43c0e62d}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x43dbd960 x43baed22}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x43dc199a x43b48ccd}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x43dca714 x43aecccd}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {x43d5599a x43add99a}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {x43ce6666 x43baa666}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {x43d74000 x43c68000}\n     {x408cccc0 x3e4cd000}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {xbe4cd000 0}\n     {x4023ab80 x3f7fa800}\n     {x3e4cd000 0}\n     {x3f000000 x3ff33300}\n     {x400bf800 xbf57ce00}\n     {xbf000000 xbff33300}\n     {x3e4cc800 x40600000}\n     {x4020a480 x3e144800}\n     {xbe4cc800 xc0600000}\n     {xbe4cc800 x40399980}\n     {x401ebb00 xbd9df000}\n     {x3e4cc800 xc0399980}\n     {x3dccd000 x40066680}\n     {x403de500 xc04d7d80}\n     {xbdccd000 xc0066680}\n     {x40a999c0 xc0833300}\n     {0 0}\n     {xc0a999c0 x40833300}\n     {x3f999900 xc11b3340}\n     {0 0}\n     {xbf999900 x411b3340}\n     {xc08cccc0 xbe4cd000}\n     {xbe9ba000 x40498400}\n     {x408cccc0 x3e4cd000}}}}\n      {tx x429e0000 x43d97000 x43ba8666}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000}}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto4\n  xpos 1623\n  ypos -99\n }\n Grade {\n  multiply 0.28\n  name Grade18\n  xpos 1623\n  ypos -20\n }\n Dot {\n  name Dot39\n  xpos 1657\n  ypos 54\n }\nset N7fff1c00 [stack 0]\n Dot {\n  name Dot44\n  xpos 1767\n  ypos 54\n }\n FilterErode {\n  channels all\n  size 31\n  name FilterErode7\n  xpos 1733\n  ypos 120\n }\n Blur {\n  size 37\n  name Blur12\n  xpos 1733\n  ypos 173\n }\npush $N7fff1c00\n Merge2 {\n  inputs 2\n  operation from\n  mix 0.705\n  name Merge21\n  xpos 1623\n  ypos 227\n }\n Dot {\n  name Dot36\n  xpos 1657\n  ypos 290\n }\npush $N7fff2c00\n Roto {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {layer Layer6\n     {f 2097664}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43960000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}\n    {layer Layer5\n     {f 2097664}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43700000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}\n    {layer Layer4\n     {f 512}\n     {t x43800000 x43800000 0 0 0 0 0 0 x43340000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}\n    {layer Layer3\n     {f 2097664}\n     {t x43800000 x43800000 0 0 0 0 0 0 x42f00000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}\n    {layer Layer2\n     {f 2097664}\n     {t x43800000 x43800000 0 0 0 0 0 0 x42700000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}\n    {layer Layer1\n     {f 512}\n     {t x43800000 x43800000}\n     {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n     {curvegroup Bezier1 512 bezier\n      {{cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {x43ddc380 x43c2ac85}\n     {0 0}\n     {0 0}\n     {x436aabab x43ec7e7e}\n     {0 0}\n     {0 0}\n     {x43681818 x43f6e7e8}\n     {0 0}\n     {0 0}\n     {x43ede666 x43cb3333}\n     {0 0}}}\n       {cc\n        {f 8192}\n        {px x429e0000\n     {0 0}\n     {xbee5b000 xc01dde00}\n     {0 0}\n     {0 0}\n     {xbfd7e700 xc02c0480}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}\n     {0 0}}}}\n      {tx x429e0000 x43acd99a x43dc0667}\n      {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x40800000 a 0 b 0 g 0 r 0}}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  color 0\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto3\n  xpos 1370\n  ypos -55\n }\n Grade {\n  multiply 0.32\n  name Grade12\n  xpos 1370\n  ypos -12\n }\n Dot {\n  name Dot43\n  xpos 1404\n  ypos 51\n }\nset N7ff67800 [stack 0]\n Dot {\n  name Dot42\n  xpos 1514\n  ypos 51\n }\n FilterErode {\n  channels all\n  size 31\n  name FilterErode4\n  xpos 1480\n  ypos 117\n }\n Blur {\n  size 37\n  name Blur11\n  xpos 1480\n  ypos 170\n }\npush $N7ff67800\n Merge2 {\n  inputs 2\n  operation from\n  mix 0.705\n  name Merge35\n  xpos 1370\n  ypos 224\n }\n Dot {\n  name Dot34\n  xpos 1404\n  ypos 283\n }\npush $N7fff3800\n FilterErode {\n  channels all\n  size 5.5\n  name FilterErode5\n  xpos 1102\n  ypos 210\n }\npush $N7fff3c00\n Merge2 {\n  inputs 2\n  operation from\n  mix 0.365\n  name Merge28\n  xpos 992\n  ypos 216\n }\n Grade {\n  multiply 0.32\n  name Grade16\n  xpos 992\n  ypos 265\n }\n Switch {\n  inputs 4\n  which {{parent.spikedTypePicker}}\n  name Switch4\n  xpos 992\n  ypos 333\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"root.width * parent.bokehQuality\"}}\n  box_height {{\"root.width * parent.bokehQuality\"}}\n  box_fixed true\n  name Reformat3\n  xpos 992\n  ypos 376\n }\n Grain2 {\n  name Grain2_1\n  label \"Kodak 5248\"\n  xpos 99\n  ypos 500\n  disable {{!parent.grainEnable}}\n  red_m 0.17\n  green_m 0.195\n  blue_m 0.235\n  black {0 0 0}\n  minimum {0 0 0}\n  maskgrain false\n }\n Constant {\n  inputs 0\n  channels rgba\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Constant1\n  xpos -78\n  ypos -599\n }\n Crop {\n  box {0 0 {\"root.width * parent.bokehQuality\"} {\"root.width * parent.bokehQuality\"}}\n  reformat true\n  crop false\n  name Crop2\n  xpos -78\n  ypos -502\n }\n Dot {\n  name Dot1\n  xpos -44\n  ypos -411\n }\n Dot {\n  name Dot2\n  xpos -44\n  ypos -325\n }\nset N7feee000 [stack 0]\n Dot {\n  name Dot20\n  xpos 522\n  ypos -325\n }\nset N7feedc00 [stack 0]\n Dot {\n  name Dot24\n  xpos 632\n  ypos -325\n }\nset N7feed800 [stack 0]\n Dot {\n  name Dot26\n  xpos 733\n  ypos -325\n }\nset N7feed400 [stack 0]\n Dot {\n  name Dot28\n  xpos 833\n  ypos -325\n }\nset N7feed000 [stack 0]\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {17.14 49.31 54.22}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  inner_color 1\n  outer_falloff 0.31\n  inner_falloff 1.75\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare6\n  xpos 861\n  ypos -289\n }\npush $N7feed000\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {96.09 117.08 120}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  ring_color 0.235\n  inner_color 0.96\n  outer_falloff 0.31\n  inner_falloff 1.75\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare5\n  xpos 799\n  ypos -260\n }\nset N7feec400 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  name Merge19\n  xpos 861\n  ypos -209\n }\n Dot {\n  name Dot30\n  xpos 895\n  ypos -74\n }\npush $N7feec400\n Dot {\n  name Dot29\n  xpos 833\n  ypos -105\n }\npush $N7feed400\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {96.09 117.08 120}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  ring_color 0.125\n  inner_color 0.74\n  outer_falloff 0.52\n  inner_falloff 0.31\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare4\n  xpos 699\n  ypos -261\n }\n Dot {\n  name Dot27\n  xpos 733\n  ypos -127\n }\npush $N7feed800\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {96.09 120 120}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  ring_color 0.09\n  inner_color 0.56\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare3\n  xpos 598\n  ypos -261\n }\n Dot {\n  name Dot25\n  xpos 632\n  ypos -147\n }\npush $N7feedc00\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {101.93 120 120}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  ring_color 0.6\n  inner_color 0.024\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare2\n  xpos 488\n  ypos -261\n }\n Dot {\n  name Dot21\n  xpos 522\n  ypos -164\n }\npush $N7feee000\n Flare {\n  position {{\"parent.Crop2.box.r / 2\"} {\"parent.Crop2.box.t / 2\"}}\n  radius {80 119 120}\n  size_mult {{\"parent.Crop2.box.r / 256\"}}\n  ring_color 0.6\n  brightness 0.53\n  vis_in 1.01\n  vis_out 1.29\n  vis_mask_size 3.15\n  sharpness 0.93\n  name Flare1\n  xpos -78\n  ypos -266\n }\nset N78be0800 [stack 0]\n Dot {\n  name Dot4\n  xpos 81\n  ypos -262\n }\nset N78b8fc00 [stack 0]\n Dot {\n  name Dot19\n  xpos 295\n  ypos -262\n }\nset N78b8f800 [stack 0]\n Blur {\n  size 400\n  name Blur10\n  xpos 365\n  ypos -213\n }\n Grade {\n  whitepoint 0.56\n  name Grade9\n  xpos 365\n  ypos -175\n }\npush $N78b8f800\n Merge2 {\n  inputs 2\n  operation from\n  name Merge18\n  xpos 261\n  ypos -175\n }\n Dot {\n  name Dot22\n  xpos 295\n  ypos -138\n }\npush $N78b8fc00\n Blur {\n  size 100\n  name Blur1\n  xpos 151\n  ypos -213\n }\npush $N78b8fc00\n Merge2 {\n  inputs 2\n  operation from\n  mix 0.9\n  name Merge1\n  xpos 47\n  ypos -207\n }\n Dot {\n  name Dot23\n  xpos 81\n  ypos -160\n }\npush $N78be0800\n Switch {\n  inputs 8\n  which {{parent.circularTypePicker}}\n  name Switch2\n  xpos -78\n  ypos -29\n }\n Blur {\n  size 2.2\n  name Blur13\n  xpos -78\n  ypos 47\n }\n Grain2 {\n  name Grain2_2\n  label \"Kodak 5248\"\n  xpos -78\n  ypos 424\n  disable {{!parent.grainEnable}}\n  red_m 0.17\n  green_m 0.195\n  blue_m 0.235\n  black {0 0 0}\n  minimum {0 0 0}\n  maskgrain false\n }\n Switch {\n  inputs 2\n  which {{parent.bokehType}}\n  name Switch1\n  xpos -78\n  ypos 535\n }\n Transform {\n  rotate {{parent.bokehRotation}}\n  scale {{\"1 - parent.bokehAnamorph\"} 1}\n  center {{\"root.width * parent.bokehQuality / 2\"} {\"root.width * parent.bokehQuality / 2\"}}\n  name Transform15\n  xpos -78\n  ypos 652\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.red\n  to1 forward.v\n  name Copy1\n  xpos -78\n  ypos 977\n }\n IDistort {\n  uv forward\n  uv_scale {{parent.distortionStrength}}\n  blur_scale 0.8\n  name IDistort1\n  xpos -78\n  ypos 1029\n  disable {{!parent.distortionEnable}}\n }\n Crop {\n  box {0 0 {\"root.width * parent.bokehQuality\"} {\"root.width * parent.bokehQuality\"}}\n  reformat true\n  crop false\n  name Crop3\n  xpos -78\n  ypos 1083\n }\n Transform {\n  scale 0.86\n  center {{\"root.width * parent.bokehQuality / 2\"} {\"root.width * parent.bokehQuality / 2\"}}\n  name Transform16\n  xpos -78\n  ypos 1126\n }\n Clamp {\n  name Clamp1\n  xpos -78\n  ypos 1172\n }\nset N78b12000 [stack 0]\n Shuffle {\n  alpha red\n  name Shuffle4\n  xpos 682\n  ypos 1178\n }\n Dot {\n  name Dot12\n  xpos 716\n  ypos 3715\n }\nset N78b11800 [stack 0]\n Dot {\n  name Dot15\n  xpos 364\n  ypos 3715\n }\n Dot {\n  name Dot16\n  xpos 364\n  ypos 4041\n }\npush $N78b11800\n Dilate {\n  size {{\"1 - parent.innerChromaSize\"}}\n  name Dilate1\n  xpos 682\n  ypos 3760\n }\n Blur {\n  size {{parent.innerChromaFalloff}}\n  filter box\n  name Blur6\n  xpos 682\n  ypos 3810\n }\n Clamp {\n  name Clamp5\n  xpos 682\n  ypos 3848\n }\n Dot {\n  name Dot14\n  xpos 716\n  ypos 3944\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 500\n  box_height 500\n  box_fixed true\n  name Reformat1\n  xpos 32\n  ypos 2994\n }\nset N803f3800 [stack 0]\n RotoPaint {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41900000 x43ef8000 1}\n       {x41800000 x43ef8000 x3ec9324d}\n       {x41700000 x43ef8000 x3ee5b96e}\n       {x41700000 x43ef0000 x3f0aa2a9}\n       {x41700000 x43ee8000 x3f0b22c9}\n       {x41700000 x43ee0000 x3f0b22c9}\n       {x41800000 x43ed8000 x3e80a028}}}\n     {tx x429e0000 x417b6db7 x43eec925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42780000 x43e08000 x3ec1304c}\n       {x42700000 x43e08000 x3efbbef0}}}\n     {tx x429e0000 x42740000 x43e08000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43580000 x43e78000 1}}}\n     {tx x429e0000 x43580000 x43e78000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43700000 x43ca0000 1}\n       {x436f0000 x43ca0000 x3f05a168}\n       {x436d0000 x43c98000 x3f2deb7b}\n       {x436c0000 x43c98000 x3f2f6bdb}\n       {x436c0000 x43c90000 x3f23e8fa}\n       {x436a0000 x43c88000 0}}}\n     {tx x429e0000 x436d0000 x43c96aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d58000 x43df0000 1}\n       {x43d48000 x43df0000 x3f00e038}\n       {x43d58000 x43de8000 x3edf37ce}}}\n     {tx x429e0000 x43d52aab x43ded555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d90000 x43de8000 1}}}\n     {tx x429e0000 x43d90000 x43de8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d60000 x43e00000 1}}}\n     {tx x429e0000 x43d60000 x43e00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d90000 x43f00000 x3eb02c0b}\n       {x43d80000 x43f00000 x3ece338d}\n       {x43d78000 x43f00000 x3ed0340d}\n       {x43d78000 x43ef8000 x3ed0340d}\n       {x43d80000 x43ef0000 0}}}\n     {tx x429e0000 x43d80000 x43efb333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e20000 x43d60000 1}\n       {x43e18000 x43d60000 x3f15e579}\n       {x43e18000 x43d58000 x3f1a268a}\n       {x43e20000 x43d48000 x3ec6b1ac}}}\n     {tx x429e0000 x43e1c000 x43d58000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42000000 x41a80000 1}\n       {x42000000 x41a00000 x3f09e279}\n       {x42000000 x41980000 x3f0a2289}\n       {x42000000 x41900000 x3edb36ce}}}\n     {tx x429e0000 x42000000 x419c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x422c0000 x437a0000 1}\n       {x42280000 x437a0000 x3ef1bc6f}\n       {x42280000 x43780000 x3eae2b8b}}}\n     {tx x429e0000 x42295555 x43795555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d38000 x41f00000 x3eb0ac2b}\n       {x43d30000 x41f00000 x3ec1304c}\n       {x43d30000 x41e80000 x3ed5b56d}\n       {x43d38000 x41e80000 x3f0ca329}\n       {x43d40000 x41e80000 x3f0360d8}\n       {x43d48000 x41e00000 x3e902409}}}\n     {tx x429e0000 x43d39555 x41e95555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43710000 x423c0000 1}\n       {x43700000 x423c0000 x3ed0b42d}\n       {x43710000 x423c0000 x3f1ae6ba}\n       {x43730000 x423c0000 x3f18661a}}}\n     {tx x429e0000 x43714000 x423c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43908000 x434e0000 1}\n       {x438f8000 x434e0000 x3f10e439}\n       {x438f8000 x434d0000 x3f006018}\n       {x438f8000 x434b0000 x3e822088}}}\n     {tx x429e0000 x438fc000 x434d0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d00000 x43950000 1}\n       {x43d00000 x43940000 x3ef93e50}\n       {x43d00000 x43930000 x3e773dcf}}}\n     {tx x429e0000 x43d00000 x43940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ec8000 x43690000 x3ed8360e}\n       {x43ec8000 x43680000 x3ef53d4f}\n       {x43ed8000 x43670000 x3ea0280a}}}\n     {tx x429e0000 x43ecd555 x43680000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fc8000 x43230000 x3ebfafec}\n       {x43fc0000 x43230000 x3eecbb2f}\n       {x43fb8000 x43230000 x3f08a229}\n       {x43fb8000 x43220000 x3f1324c9}\n       {x43fb8000 x43210000 x3f11e479}\n       {x43fc0000 x43210000 x3ece338d}\n       {x43fc8000 x43210000 x3df83e10}}}\n     {tx x429e0000 x43fbedb7 x43220000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c00000 x42ba0000 1}\n       {x43c10000 x42ba0000 x3ece338d}\n       {x43c10000 x42b60000 x3e152549}}}\n     {tx x429e0000 x43c0aaab x42b8aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x433f0000 x43310000 x3e842108}\n       {x43400000 x43310000 x3eb5ad6b}}}\n     {tx x429e0000 x433f8000 x43310000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43410000 x43360000 1}\n       {x43430000 x43360000 x3ef7bdef}\n       {x43440000 x43340000 x3ee5394e}\n       {x43450000 x43330000 x3e94a529}}}\n     {tx x429e0000 x43434000 x4334c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43808000 x43040000 x3eae2b8b}\n       {x43810000 x43030000 x3f0ae2b9}\n       {x43818000 x43030000 x3eccb32d}\n       {x43818000 x43020000 x3dfa3e90}}}\n     {tx x429e0000 x43812000 x43030000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43170000 x43b00000 x3e723c8f}\n       {x43170000 x43af0000 x3e6b3acf}}}\n     {tx x429e0000 x43170000 x43af8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x429a0000 x43b70000 x3e7d3f50}\n       {x429a0000 x43b60000 x3f01a068}\n       {x429e0000 x43b58000 x3ea5294a}}}\n     {tx x429e0000 x429b5555 x43b62aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43950000 x43e80000 1}\n       {x43940000 x43e80000 x3e9ba6ea}}}\n     {tx x429e0000 x43948000 x43e80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42100000 x43c60000 x3eda368e}\n       {x421c0000 x43c60000 x3eb82e0c}}}\n     {tx x429e0000 x42160000 x43c60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43860000 x43940000 1}\n       {x43858000 x43940000 x3ed8360e}\n       {x43850000 x43940000 x3e52348d}}}\n     {tx x429e0000 x43858000 x43940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43bd8000 x435a0000 1}\n       {x43bc8000 x435a0000 x3f02a0a8}\n       {x43bd8000 x43590000 x3f0761d8}\n       {x43be0000 x43590000 x3f0761d8}\n       {x43bf8000 x43590000 x3ebdaf6c}\n       {x43c10000 x43590000 0}}}\n     {tx x429e0000 x43be5555 x43595555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42480000 x42f20000 x3ec2b0ac}\n       {x42440000 x42f20000 x3ee4390e}\n       {x42440000 x42f00000 x3f292a4b}\n       {x42480000 x42f00000 x3ec0b02c}}}\n     {tx x429e0000 x42460000 x42f10000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f00000 x43520000 x3e862188}\n       {x42ec0000 x43520000 x3ec8320d}\n       {x42f00000 x43520000 x3f122489}\n       {x42f20000 x43520000 x3edfb7ee}\n       {x42f40000 x43520000 x3d042108}}}\n     {tx x429e0000 x42f06666 x43520000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43a98000 x43ea0000 x3e50340d}\n       {x43a98000 x43ea8000 x3ec5314c}\n       {x43a80000 x43ea8000 x3efc3f10}\n       {x43a80000 x43ea0000 x3ed8360e}\n       {x43a80000 x43e90000 x3e842108}}}\n     {tx x429e0000 x43a8999a x43ea0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f68000 x43b38000 x3ed0340d}\n       {x43f68000 x43b28000 x3ea6a9aa}}}\n     {tx x429e0000 x43f68000 x43b30000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ec0000 x42880000 x3edeb7ae}\n       {x43eb8000 x42880000 x3f0ae2b9}\n       {x43eb8000 x42860000 x3f162589}}}\n     {tx x429e0000 x43ebaaab x42875555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43878000 x42b20000 x3e6d3b4f}}}\n     {tx x429e0000 x43878000 x42b20000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43540000 x43b58000 x3eac2b0b}\n       {x43560000 x43b58000 x3e062188}}}\n     {tx x429e0000 x43550000 x43b58000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43450000 x43808000 x3edb36ce}\n       {x43450000 x437f0000 x3efc3f10}}}\n     {tx x429e0000 x43450000 x43800000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ca8000 x43370000 1}\n       {x43ca0000 x43370000 x3f0d6359}}}\n     {tx x429e0000 x43ca4000 x43370000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {1 x42860000 x3d743d0f}\n       {x40000000 x42860000 x3eca328d}\n       {x40800000 x42860000 x3e5d374e}}}\n     {tx x429e0000 x40155555 x42860000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ea0000 x42940000 1}\n       {x42e80000 x42940000 x3efabeb0}}}\n     {tx x429e0000 x42e90000 x42940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x430b0000 x43e88000 x3ea1a86a}\n       {x430b0000 x43e80000 x3e0b22c9}}}\n     {tx x429e0000 x430b0000 x43e84000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42040000 x43ac8000 x3ea4290a}\n       {x42040000 x43ab8000 x3f22288a}\n       {x42040000 x43ab0000 x3f21284a}\n       {x42000000 x43ab0000 0}}}\n     {tx x429e0000 x42030000 x43ab8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f40000 x43860000 1}\n       {x42f00000 x43860000 x3ea328ca}\n       {x42f00000 x43858000 x3ea328ca}}}\n     {tx x429e0000 x42f15555 x4385d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ae8000 x43ae8000 x3ea2a8aa}}}\n     {tx x429e0000 x43ae8000 x43ae8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43b18000 x43480000 1}\n       {x43b08000 x43480000 x3f1f67da}\n       {x43b10000 x43480000 x3f2dab6b}\n       {x43b10000 x434a0000 x3eedbb6f}}}\n     {tx x429e0000 x43b10000 x43488000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fb0000 x43280000 x3ea8aa2b}\n       {x43fb0000 x43260000 x3f08a229}}}\n     {tx x429e0000 x43fb0000 x43270000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ea8000 x42740000 1}\n       {x43eb0000 x42740000 x3f042108}\n       {x43eb8000 x42740000 x3f0de379}\n       {x43ec0000 x42740000 x3f106419}\n       {x43ec8000 x42740000 x3f10e439}\n       {x43ed8000 x42740000 x3f10e439}\n       {x43ee0000 x42700000 x3f10a429}\n       {x43ee8000 x426c0000 x3ed1344d}}}\n     {tx x429e0000 x43ec7000 x42728000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c98000 x42880000 1}\n       {x43ca0000 x42880000 x3f11e479}\n       {x43ca8000 x42880000 x3f06e1b8}\n       {x43cb8000 x42880000 x3e19264a}}}\n     {tx x429e0000 x43ca6000 x42880000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439c8000 x43080000 x3ea5a96a}}}\n     {tx x429e0000 x439c8000 x43080000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41a80000 x42a60000 1}\n       {x41a00000 x42a60000 x3ee2b8ae}\n       {x41b80000 x42a60000 0}}}\n     {tx x429e0000 x41aaaaab x42a60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42080000 x42780000 1}\n       {x42040000 x42780000 x3f046118}}}\n     {tx x429e0000 x42060000 x42780000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43230000 x41f00000 1}\n       {x43220000 x41f00000 x3f1ce73a}}}\n     {tx x429e0000 x43228000 x41f00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437f0000 x42600000 0}\n       {x437f0000 x425c0000 x3f09a269}\n       {x43808000 x425c0000 x3f0fa3e9}\n       {x43810000 x425c0000 x3f0fa3e9}\n       {x43810000 x42580000 0}}}\n     {tx x429e0000 x43804ccd x425c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43550000 x42a60000 x3ea5294a}\n       {x43550000 x42a40000 x3ee6398e}\n       {x43580000 x42a20000 x3f1364d9}\n       {x43590000 x42a20000 x3f1a669a}\n       {x435b0000 x42a00000 x3f1c671a}\n       {x435c0000 x42a00000 x3f1c671a}\n       {x435f0000 x429a0000 x3f16a5a9}\n       {x43600000 x429a0000 x3f0a6299}\n       {x43620000 x42980000 x3edcb72e}\n       {x43630000 x42960000 0}}}\n     {tx x429e0000 x435bcccd x429e6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431a0000 x42ea0000 x3ef83e10}\n       {x431b0000 x42ea0000 x3f32ecbb}\n       {x431c0000 x42ea0000 x3f2febfb}\n       {x431d0000 x42ea0000 x3f22689a}\n       {x431f0000 x42e80000 x3e7d3f50}}}\n     {tx x429e0000 x431c3333 x42e9999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42740000 x43100000 1}\n       {x42700000 x43100000 x3eff3fd0}\n       {x42700000 x430f0000 x3f1b66da}\n       {x42740000 x430f0000 x3f062188}\n       {x42780000 x430f0000 x3eac2b0b}}}\n     {tx x429e0000 x42733333 x430f6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x428c0000 x43400000 1}\n       {x428a0000 x43400000 x3ee338ce}}}\n     {tx x429e0000 x428b0000 x43400000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x40a00000 x436d0000 x3eb7adeb}\n       {x40c00000 x436c0000 x3ef3bcef}}}\n     {tx x429e0000 x40b00000 x436c8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42380000 x43988000 1}\n       {x42380000 x43970000 x3d802008}}}\n     {tx x429e0000 x42380000 x4397c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x430f0000 x43b08000 1}\n       {x430e0000 x43b08000 x3ed4b52d}\n       {x430d0000 x43b08000 x3ed4b52d}}}\n     {tx x429e0000 x430e0000 x43b08000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43510000 x439f8000 1}}}\n     {tx x429e0000 x43510000 x439f8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437a0000 x43878000 x3e95a569}\n       {x43780000 x43878000 x3f106419}\n       {x437a0000 x43878000 x3f0360d8}\n       {x437b0000 x43878000 x3e96a5a9}}}\n     {tx x429e0000 x4379c000 x43878000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43210000 x43680000 1}\n       {x43210000 x43670000 x3e773dcf}}}\n     {tx x429e0000 x43210000 x43678000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x438d0000 x43c10000 1}\n       {x438e0000 x43c10000 x3ec4310c}\n       {x438e0000 x43c00000 x3e152549}}}\n     {tx x429e0000 x438daaab x43c0aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439d0000 x43de0000 x3f002008}\n       {x439c8000 x43de0000 1}\n       {x439d0000 x43dd8000 x3eefbbef}}}\n     {tx x429e0000 x439cd555 x43ddd555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43560000 x43ea0000 x3e723c8f}\n       {x43580000 x43ea0000 x3ebe2f8c}\n       {x43580000 x43ea8000 x3f19a66a}\n       {x43580000 x43ea0000 x3f1725c9}}}\n     {tx x429e0000 x43578000 x43ea2000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431f0000 x43cc0000 1}\n       {x431e0000 x43cc0000 x3eeb3acf}\n       {x431e0000 x43cc8000 x3f12e4b9}}}\n     {tx x429e0000 x431e5555 x43cc2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43600000 x43b80000 x3e743d0f}\n       {x43610000 x43b80000 x3ed5354d}}}\n     {tx x429e0000 x43608000 x43b80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43870000 x43b00000 1}\n       {x43870000 x43af0000 x3eb3aceb}\n       {x43870000 x43ae8000 x3e46318c}}}\n     {tx x429e0000 x43870000 x43af2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43cf0000 x439a0000 1}\n       {x43ce8000 x439a0000 x3ee7b9ee}\n       {x43ce8000 x43998000 x3f0ee3b9}\n       {x43cf0000 x43998000 x3f056158}\n       {x43cf8000 x43998000 x3ed2b4ad}}}\n     {tx x429e0000 x43cee666 x4399b333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ff0000 x43e30000 1}\n       {x43fe8000 x43e30000 x3ee4b92e}\n       {x43fe8000 x43e20000 x3ef9be70}}}\n     {tx x429e0000 x43feaaab x43e2aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43da0000 x43e90000 x3dda368e}}}\n     {tx x429e0000 x43da0000 x43e90000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ac8000 x43d20000 x3e19264a}\n       {x43ab8000 x43d28000 x3e052148}}}\n     {tx x429e0000 x43ac0000 x43d24000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c98000 x437a0000 x3e93a4e9}}}\n     {tx x429e0000 x43c98000 x437a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x438e0000 x43610000 1}\n       {x438d0000 x43610000 x3e8b22c9}\n       {x438d0000 x43600000 x3eaaaaab}\n       {x438e0000 x435f0000 x3cb02c0b}}}\n     {tx x429e0000 x438d8000 x43604000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431d0000 x431c0000 x3ea729ca}}}\n     {tx x429e0000 x431d0000 x431c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42860000 x43090000 x3ec0b02c}\n       {x42840000 x43090000 x3edb36ce}\n       {x42840000 x43080000 x3e25294a}}}\n     {tx x429e0000 x4284aaab x4308aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41e80000 x43a90000 1}}}\n     {tx x429e0000 x41e80000 x43a90000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42b60000 x43ec8000 1}\n       {x42b40000 x43ec8000 x3eb8ae2c}}}\n     {tx x429e0000 x42b50000 x43ec8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f20000 x425c0000 x3e362d8b}\n       {x42f00000 x425c0000 x3e9aa6aa}}}\n     {tx x429e0000 x42f10000 x425c0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439a8000 x42700000 1}\n       {x439a0000 x42700000 x3e49324d}}}\n     {tx x429e0000 x439a4000 x42700000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d38000 x43140000 1}\n       {x43d30000 x43140000 x3ec4310c}\n       {x43d20000 x43140000 x3eef3bcf}\n       {x43d28000 x43140000 x3eefbbef}\n       {x43d30000 x43140000 x3eb3aceb}}}\n     {tx x429e0000 x43d2cccd x43140000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43660000 x43220000 1}\n       {x43680000 x43220000 x3e7d3f50}}}\n     {tx x429e0000 x43670000 x43220000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431a0000 x439f0000 x3e7a3e90}\n       {x43180000 x439f0000 x3eca328d}\n       {x431a0000 x439f0000 x3e9aa6aa}}}\n     {tx x429e0000 x43195555 x439f0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x435b0000 x43cf0000 1}\n       {x435c0000 x43cf0000 x3e9725c9}}}\n     {tx x429e0000 x435b8000 x43cf0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c68000 x43c68000 1}\n       {x43c60000 x43c70000 x3eb8ae2c}\n       {x43c58000 x43c70000 x3ebcaf2c}\n       {x43c68000 x43c68000 x3d48320d}}}\n     {tx x429e0000 x43c62000 x43c6c000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43970000 x438e0000 1}\n       {x43968000 x438e0000 x3e842108}}}\n     {tx x429e0000 x4396c000 x438e0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ea0000 x43760000 1}}}\n     {tx x429e0000 x42ea0000 x43760000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42940000 x43b78000 x3e322c8b}}}\n     {tx x429e0000 x42940000 x43b78000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}}}}}\n  toolbox {brush {\n  { selectAll opc 0.1 bs 249 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.1 bs 249 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 79 ltm 79 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone bs 53 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 79 ltm 79 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_opacity 0.1000000015\n  toolbar_brush_size 249\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 79\n  toolbar_lifetime_end 79\n  toolbar_openspline_render_hull always\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  colorOverlay {0 0 0 0}\n  opacity 0.5\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  brush_size 47\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_black_outside true\n  name RotoPaint5\n  xpos 381\n  ypos 3065\n }\n Grade {\n  blackpoint -0.01\n  whitepoint 0.76\n  black -0.065\n  name Grade14\n  xpos 381\n  ypos 3091\n }\nset N803f2c00 [stack 0]\n FilterErode {\n  channels all\n  size 0.1\n  name FilterErode6\n  xpos 481\n  ypos 3085\n }\npush $N803f2c00\n Merge2 {\n  inputs 2\n  operation stencil\n  mix 0.76\n  name Merge29\n  xpos 381\n  ypos 3139\n }\n Grade {\n  blackpoint 0.015\n  whitepoint 0.92\n  black -0.008\n  white 0.88\n  add -0.18\n  name Grade15\n  xpos 381\n  ypos 3170\n }\nset N803f2000 [stack 0]\n Invert {\n  name Invert3\n  xpos 499\n  ypos 3197\n }\n Grade {\n  blackpoint 0.76\n  multiply 0.16\n  name Grade17\n  xpos 499\n  ypos 3235\n }\npush $N803f2000\n Dot {\n  name Dot31\n  xpos 415\n  ypos 3208\n }\npush $N803f3800\n RotoPaint {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41900000 x43ef8000 1}\n       {x41800000 x43ef8000 x3ec9324d}\n       {x41700000 x43ef8000 x3ee5b96e}\n       {x41700000 x43ef0000 x3f0aa2a9}\n       {x41700000 x43ee8000 x3f0b22c9}\n       {x41700000 x43ee0000 x3f0b22c9}\n       {x41800000 x43ed8000 x3e80a028}}}\n     {tx x429e0000 x417b6db7 x43eec925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42780000 x43e08000 x3ec1304c}\n       {x42700000 x43e08000 x3efbbef0}}}\n     {tx x429e0000 x42740000 x43e08000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43580000 x43e78000 1}}}\n     {tx x429e0000 x43580000 x43e78000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43700000 x43ca0000 1}\n       {x436f0000 x43ca0000 x3f05a168}\n       {x436d0000 x43c98000 x3f2deb7b}\n       {x436c0000 x43c98000 x3f2f6bdb}\n       {x436c0000 x43c90000 x3f23e8fa}\n       {x436a0000 x43c88000 0}}}\n     {tx x429e0000 x436d0000 x43c96aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d58000 x43df0000 1}\n       {x43d48000 x43df0000 x3f00e038}\n       {x43d58000 x43de8000 x3edf37ce}}}\n     {tx x429e0000 x43d52aab x43ded555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d90000 x43de8000 1}}}\n     {tx x429e0000 x43d90000 x43de8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d60000 x43e00000 1}}}\n     {tx x429e0000 x43d60000 x43e00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d90000 x43f00000 x3eb02c0b}\n       {x43d80000 x43f00000 x3ece338d}\n       {x43d78000 x43f00000 x3ed0340d}\n       {x43d78000 x43ef8000 x3ed0340d}\n       {x43d80000 x43ef0000 0}}}\n     {tx x429e0000 x43d80000 x43efb333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e20000 x43d60000 1}\n       {x43e18000 x43d60000 x3f15e579}\n       {x43e18000 x43d58000 x3f1a268a}\n       {x43e20000 x43d48000 x3ec6b1ac}}}\n     {tx x429e0000 x43e1c000 x43d58000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42000000 x41a80000 1}\n       {x42000000 x41a00000 x3f09e279}\n       {x42000000 x41980000 x3f0a2289}\n       {x42000000 x41900000 x3edb36ce}}}\n     {tx x429e0000 x42000000 x419c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x422c0000 x437a0000 1}\n       {x42280000 x437a0000 x3ef1bc6f}\n       {x42280000 x43780000 x3eae2b8b}}}\n     {tx x429e0000 x42295555 x43795555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d38000 x41f00000 x3eb0ac2b}\n       {x43d30000 x41f00000 x3ec1304c}\n       {x43d30000 x41e80000 x3ed5b56d}\n       {x43d38000 x41e80000 x3f0ca329}\n       {x43d40000 x41e80000 x3f0360d8}\n       {x43d48000 x41e00000 x3e902409}}}\n     {tx x429e0000 x43d39555 x41e95555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43710000 x423c0000 1}\n       {x43700000 x423c0000 x3ed0b42d}\n       {x43710000 x423c0000 x3f1ae6ba}\n       {x43730000 x423c0000 x3f18661a}}}\n     {tx x429e0000 x43714000 x423c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43908000 x434e0000 1}\n       {x438f8000 x434e0000 x3f10e439}\n       {x438f8000 x434d0000 x3f006018}\n       {x438f8000 x434b0000 x3e822088}}}\n     {tx x429e0000 x438fc000 x434d0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d00000 x43950000 1}\n       {x43d00000 x43940000 x3ef93e50}\n       {x43d00000 x43930000 x3e773dcf}}}\n     {tx x429e0000 x43d00000 x43940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ec8000 x43690000 x3ed8360e}\n       {x43ec8000 x43680000 x3ef53d4f}\n       {x43ed8000 x43670000 x3ea0280a}}}\n     {tx x429e0000 x43ecd555 x43680000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fc8000 x43230000 x3ebfafec}\n       {x43fc0000 x43230000 x3eecbb2f}\n       {x43fb8000 x43230000 x3f08a229}\n       {x43fb8000 x43220000 x3f1324c9}\n       {x43fb8000 x43210000 x3f11e479}\n       {x43fc0000 x43210000 x3ece338d}\n       {x43fc8000 x43210000 x3df83e10}}}\n     {tx x429e0000 x43fbedb7 x43220000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c00000 x42ba0000 1}\n       {x43c10000 x42ba0000 x3ece338d}\n       {x43c10000 x42b60000 x3e152549}}}\n     {tx x429e0000 x43c0aaab x42b8aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x433f0000 x43310000 x3e842108}\n       {x43400000 x43310000 x3eb5ad6b}}}\n     {tx x429e0000 x433f8000 x43310000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43410000 x43360000 1}\n       {x43430000 x43360000 x3ef7bdef}\n       {x43440000 x43340000 x3ee5394e}\n       {x43450000 x43330000 x3e94a529}}}\n     {tx x429e0000 x43434000 x4334c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43808000 x43040000 x3eae2b8b}\n       {x43810000 x43030000 x3f0ae2b9}\n       {x43818000 x43030000 x3eccb32d}\n       {x43818000 x43020000 x3dfa3e90}}}\n     {tx x429e0000 x43812000 x43030000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43170000 x43b00000 x3e723c8f}\n       {x43170000 x43af0000 x3e6b3acf}}}\n     {tx x429e0000 x43170000 x43af8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x429a0000 x43b70000 x3e7d3f50}\n       {x429a0000 x43b60000 x3f01a068}\n       {x429e0000 x43b58000 x3ea5294a}}}\n     {tx x429e0000 x429b5555 x43b62aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43950000 x43e80000 1}\n       {x43940000 x43e80000 x3e9ba6ea}}}\n     {tx x429e0000 x43948000 x43e80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42100000 x43c60000 x3eda368e}\n       {x421c0000 x43c60000 x3eb82e0c}}}\n     {tx x429e0000 x42160000 x43c60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43860000 x43940000 1}\n       {x43858000 x43940000 x3ed8360e}\n       {x43850000 x43940000 x3e52348d}}}\n     {tx x429e0000 x43858000 x43940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43bd8000 x435a0000 1}\n       {x43bc8000 x435a0000 x3f02a0a8}\n       {x43bd8000 x43590000 x3f0761d8}\n       {x43be0000 x43590000 x3f0761d8}\n       {x43bf8000 x43590000 x3ebdaf6c}\n       {x43c10000 x43590000 0}}}\n     {tx x429e0000 x43be5555 x43595555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42480000 x42f20000 x3ec2b0ac}\n       {x42440000 x42f20000 x3ee4390e}\n       {x42440000 x42f00000 x3f292a4b}\n       {x42480000 x42f00000 x3ec0b02c}}}\n     {tx x429e0000 x42460000 x42f10000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f00000 x43520000 x3e862188}\n       {x42ec0000 x43520000 x3ec8320d}\n       {x42f00000 x43520000 x3f122489}\n       {x42f20000 x43520000 x3edfb7ee}\n       {x42f40000 x43520000 x3d042108}}}\n     {tx x429e0000 x42f06666 x43520000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43790000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43a98000 x43ea0000 x3e50340d}\n       {x43a98000 x43ea8000 x3ec5314c}\n       {x43a80000 x43ea8000 x3efc3f10}\n       {x43a80000 x43ea0000 x3ed8360e}\n       {x43a80000 x43e90000 x3e842108}}}\n     {tx x429e0000 x43a8999a x43ea0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f68000 x43b38000 x3ed0340d}\n       {x43f68000 x43b28000 x3ea6a9aa}}}\n     {tx x429e0000 x43f68000 x43b30000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ec0000 x42880000 x3edeb7ae}\n       {x43eb8000 x42880000 x3f0ae2b9}\n       {x43eb8000 x42860000 x3f162589}}}\n     {tx x429e0000 x43ebaaab x42875555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43878000 x42b20000 x3e6d3b4f}}}\n     {tx x429e0000 x43878000 x42b20000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43540000 x43b58000 x3eac2b0b}\n       {x43560000 x43b58000 x3e062188}}}\n     {tx x429e0000 x43550000 x43b58000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43450000 x43808000 x3edb36ce}\n       {x43450000 x437f0000 x3efc3f10}}}\n     {tx x429e0000 x43450000 x43800000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ca8000 x43370000 1}\n       {x43ca0000 x43370000 x3f0d6359}}}\n     {tx x429e0000 x43ca4000 x43370000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {1 x42860000 x3d743d0f}\n       {x40000000 x42860000 x3eca328d}\n       {x40800000 x42860000 x3e5d374e}}}\n     {tx x429e0000 x40155555 x42860000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ea0000 x42940000 1}\n       {x42e80000 x42940000 x3efabeb0}}}\n     {tx x429e0000 x42e90000 x42940000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x430b0000 x43e88000 x3ea1a86a}\n       {x430b0000 x43e80000 x3e0b22c9}}}\n     {tx x429e0000 x430b0000 x43e84000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42040000 x43ac8000 x3ea4290a}\n       {x42040000 x43ab8000 x3f22288a}\n       {x42040000 x43ab0000 x3f21284a}\n       {x42000000 x43ab0000 0}}}\n     {tx x429e0000 x42030000 x43ab8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f40000 x43860000 1}\n       {x42f00000 x43860000 x3ea328ca}\n       {x42f00000 x43858000 x3ea328ca}}}\n     {tx x429e0000 x42f15555 x4385d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ae8000 x43ae8000 x3ea2a8aa}}}\n     {tx x429e0000 x43ae8000 x43ae8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x431b0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43b18000 x43480000 1}\n       {x43b08000 x43480000 x3f1f67da}\n       {x43b10000 x43480000 x3f2dab6b}\n       {x43b10000 x434a0000 x3eedbb6f}}}\n     {tx x429e0000 x43b10000 x43488000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fb0000 x43280000 x3ea8aa2b}\n       {x43fb0000 x43260000 x3f08a229}}}\n     {tx x429e0000 x43fb0000 x43270000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ea8000 x42740000 1}\n       {x43eb0000 x42740000 x3f042108}\n       {x43eb8000 x42740000 x3f0de379}\n       {x43ec0000 x42740000 x3f106419}\n       {x43ec8000 x42740000 x3f10e439}\n       {x43ed8000 x42740000 x3f10e439}\n       {x43ee0000 x42700000 x3f10a429}\n       {x43ee8000 x426c0000 x3ed1344d}}}\n     {tx x429e0000 x43ec7000 x42728000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c98000 x42880000 1}\n       {x43ca0000 x42880000 x3f11e479}\n       {x43ca8000 x42880000 x3f06e1b8}\n       {x43cb8000 x42880000 x3e19264a}}}\n     {tx x429e0000 x43ca6000 x42880000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439c8000 x43080000 x3ea5a96a}}}\n     {tx x429e0000 x439c8000 x43080000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41a80000 x42a60000 1}\n       {x41a00000 x42a60000 x3ee2b8ae}\n       {x41b80000 x42a60000 0}}}\n     {tx x429e0000 x41aaaaab x42a60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42080000 x42780000 1}\n       {x42040000 x42780000 x3f046118}}}\n     {tx x429e0000 x42060000 x42780000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43230000 x41f00000 1}\n       {x43220000 x41f00000 x3f1ce73a}}}\n     {tx x429e0000 x43228000 x41f00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437f0000 x42600000 0}\n       {x437f0000 x425c0000 x3f09a269}\n       {x43808000 x425c0000 x3f0fa3e9}\n       {x43810000 x425c0000 x3f0fa3e9}\n       {x43810000 x42580000 0}}}\n     {tx x429e0000 x43804ccd x425c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43550000 x42a60000 x3ea5294a}\n       {x43550000 x42a40000 x3ee6398e}\n       {x43580000 x42a20000 x3f1364d9}\n       {x43590000 x42a20000 x3f1a669a}\n       {x435b0000 x42a00000 x3f1c671a}\n       {x435c0000 x42a00000 x3f1c671a}\n       {x435f0000 x429a0000 x3f16a5a9}\n       {x43600000 x429a0000 x3f0a6299}\n       {x43620000 x42980000 x3edcb72e}\n       {x43630000 x42960000 0}}}\n     {tx x429e0000 x435bcccd x429e6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431a0000 x42ea0000 x3ef83e10}\n       {x431b0000 x42ea0000 x3f32ecbb}\n       {x431c0000 x42ea0000 x3f2febfb}\n       {x431d0000 x42ea0000 x3f22689a}\n       {x431f0000 x42e80000 x3e7d3f50}}}\n     {tx x429e0000 x431c3333 x42e9999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42740000 x43100000 1}\n       {x42700000 x43100000 x3eff3fd0}\n       {x42700000 x430f0000 x3f1b66da}\n       {x42740000 x430f0000 x3f062188}\n       {x42780000 x430f0000 x3eac2b0b}}}\n     {tx x429e0000 x42733333 x430f6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x428c0000 x43400000 1}\n       {x428a0000 x43400000 x3ee338ce}}}\n     {tx x429e0000 x428b0000 x43400000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x40a00000 x436d0000 x3eb7adeb}\n       {x40c00000 x436c0000 x3ef3bcef}}}\n     {tx x429e0000 x40b00000 x436c8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42380000 x43988000 1}\n       {x42380000 x43970000 x3d802008}}}\n     {tx x429e0000 x42380000 x4397c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x430f0000 x43b08000 1}\n       {x430e0000 x43b08000 x3ed4b52d}\n       {x430d0000 x43b08000 x3ed4b52d}}}\n     {tx x429e0000 x430e0000 x43b08000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43510000 x439f8000 1}}}\n     {tx x429e0000 x43510000 x439f8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437a0000 x43878000 x3e95a569}\n       {x43780000 x43878000 x3f106419}\n       {x437a0000 x43878000 x3f0360d8}\n       {x437b0000 x43878000 x3e96a5a9}}}\n     {tx x429e0000 x4379c000 x43878000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43210000 x43680000 1}\n       {x43210000 x43670000 x3e773dcf}}}\n     {tx x429e0000 x43210000 x43678000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x438d0000 x43c10000 1}\n       {x438e0000 x43c10000 x3ec4310c}\n       {x438e0000 x43c00000 x3e152549}}}\n     {tx x429e0000 x438daaab x43c0aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439d0000 x43de0000 x3f002008}\n       {x439c8000 x43de0000 1}\n       {x439d0000 x43dd8000 x3eefbbef}}}\n     {tx x429e0000 x439cd555 x43ddd555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43560000 x43ea0000 x3e723c8f}\n       {x43580000 x43ea0000 x3ebe2f8c}\n       {x43580000 x43ea8000 x3f19a66a}\n       {x43580000 x43ea0000 x3f1725c9}}}\n     {tx x429e0000 x43578000 x43ea2000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431f0000 x43cc0000 1}\n       {x431e0000 x43cc0000 x3eeb3acf}\n       {x431e0000 x43cc8000 x3f12e4b9}}}\n     {tx x429e0000 x431e5555 x43cc2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43600000 x43b80000 x3e743d0f}\n       {x43610000 x43b80000 x3ed5354d}}}\n     {tx x429e0000 x43608000 x43b80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43870000 x43b00000 1}\n       {x43870000 x43af0000 x3eb3aceb}\n       {x43870000 x43ae8000 x3e46318c}}}\n     {tx x429e0000 x43870000 x43af2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43cf0000 x439a0000 1}\n       {x43ce8000 x439a0000 x3ee7b9ee}\n       {x43ce8000 x43998000 x3f0ee3b9}\n       {x43cf0000 x43998000 x3f056158}\n       {x43cf8000 x43998000 x3ed2b4ad}}}\n     {tx x429e0000 x43cee666 x4399b333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ff0000 x43e30000 1}\n       {x43fe8000 x43e30000 x3ee4b92e}\n       {x43fe8000 x43e20000 x3ef9be70}}}\n     {tx x429e0000 x43feaaab x43e2aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43da0000 x43e90000 x3dda368e}}}\n     {tx x429e0000 x43da0000 x43e90000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ac8000 x43d20000 x3e19264a}\n       {x43ab8000 x43d28000 x3e052148}}}\n     {tx x429e0000 x43ac0000 x43d24000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c98000 x437a0000 x3e93a4e9}}}\n     {tx x429e0000 x43c98000 x437a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x438e0000 x43610000 1}\n       {x438d0000 x43610000 x3e8b22c9}\n       {x438d0000 x43600000 x3eaaaaab}\n       {x438e0000 x435f0000 x3cb02c0b}}}\n     {tx x429e0000 x438d8000 x43604000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431d0000 x431c0000 x3ea729ca}}}\n     {tx x429e0000 x431d0000 x431c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42860000 x43090000 x3ec0b02c}\n       {x42840000 x43090000 x3edb36ce}\n       {x42840000 x43080000 x3e25294a}}}\n     {tx x429e0000 x4284aaab x4308aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41e80000 x43a90000 1}}}\n     {tx x429e0000 x41e80000 x43a90000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42b60000 x43ec8000 1}\n       {x42b40000 x43ec8000 x3eb8ae2c}}}\n     {tx x429e0000 x42b50000 x43ec8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42f20000 x425c0000 x3e362d8b}\n       {x42f00000 x425c0000 x3e9aa6aa}}}\n     {tx x429e0000 x42f10000 x425c0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439a8000 x42700000 1}\n       {x439a0000 x42700000 x3e49324d}}}\n     {tx x429e0000 x439a4000 x42700000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d38000 x43140000 1}\n       {x43d30000 x43140000 x3ec4310c}\n       {x43d20000 x43140000 x3eef3bcf}\n       {x43d28000 x43140000 x3eefbbef}\n       {x43d30000 x43140000 x3eb3aceb}}}\n     {tx x429e0000 x43d2cccd x43140000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43660000 x43220000 1}\n       {x43680000 x43220000 x3e7d3f50}}}\n     {tx x429e0000 x43670000 x43220000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x431a0000 x439f0000 x3e7a3e90}\n       {x43180000 x439f0000 x3eca328d}\n       {x431a0000 x439f0000 x3e9aa6aa}}}\n     {tx x429e0000 x43195555 x439f0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x435b0000 x43cf0000 1}\n       {x435c0000 x43cf0000 x3e9725c9}}}\n     {tx x429e0000 x435b8000 x43cf0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c68000 x43c68000 1}\n       {x43c60000 x43c70000 x3eb8ae2c}\n       {x43c58000 x43c70000 x3ebcaf2c}\n       {x43c68000 x43c68000 x3d48320d}}}\n     {tx x429e0000 x43c62000 x43c6c000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43970000 x438e0000 1}\n       {x43968000 x438e0000 x3e842108}}}\n     {tx x429e0000 x4396c000 x438e0000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ea0000 x43760000 1}}}\n     {tx x429e0000 x42ea0000 x43760000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42940000 x43b78000 x3e322c8b}}}\n     {tx x429e0000 x42940000 x43b78000}\n     {a ro 0 go 0 bo 0 ao 0 bs x423c0000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}}}}}\n  toolbox {brush {\n  { selectAll opc 0.1 bs 249 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.1 bs 249 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 79 ltm 79 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone bs 53 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 79 ltm 79 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_opacity 0.1\n  toolbar_brush_size 249\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_openspline_render_hull always\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  colorOverlay {0 0 0 0}\n  opacity 0.5\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  brush_size 47\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_black_outside true\n  name RotoPaint3\n  xpos 269\n  ypos 3066\n }\n Dot {\n  name Dot33\n  xpos 303\n  ypos 3220\n }\npush $N803f3800\n RotoPaint {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x434e0000 x42d60000 1}\n       {x43420000 x42c20000 x3ec8320d}\n       {x432e0000 x429e0000 x3eb3aceb}\n       {x43240000 x42900000 x3eb7adeb}\n       {x431d0000 x42820000 x3eb7adeb}\n       {x43150000 x42580000 x3ec6318c}\n       {x43150000 x42480000 x3ecd334d}\n       {x43450000 x42840000 x3d683a0f}}}\n     {tx x429e0000 x432dc000 x42938000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42bc0000 x42c40000 1}\n       {x42b80000 x42b80000 x3efcbf30}\n       {x42b40000 x42aa0000 x3efcbf30}\n       {x42a40000 x42800000 x3f016058}\n       {x429c0000 x425c0000 x3f0320c8}\n       {x42920000 x423c0000 x3f0721c8}\n       {x42740000 x41c00000 x3f126499}\n       {x42380000 xc0a00000 x3f142509}\n       {x42280000 xc1200000 x3f1364d9}\n       {x42180000 xc1b00000 x3ef43d0f}\n       {x42440000 xc1a00000 0}}}\n     {tx x429e0000 x4287745d x42145d17}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43998000 x43ae0000 1}\n       {x43990000 x43af0000 x3e86a1a8}\n       {x43988000 x43b10000 x3e9324c9}\n       {x43980000 x43b20000 x3ea729ca}\n       {x43970000 x43b38000 x3eb42d0b}\n       {x43968000 x43b48000 x3ebdaf6c}\n       {x43958000 x43b68000 x3ed8360e}\n       {x43950000 x43b70000 x3ee0380e}\n       {x43930000 x43b70000 x3f046118}\n       {x438b0000 x43ad0000 x3f15e579}\n       {x43878000 x43a80000 x3f1aa6aa}\n       {x43838000 x43a28000 x3f1fa7ea}\n       {x43630000 x438f8000 x3f292a4b}\n       {x431c0000 x43600000 x3f322c8b}\n       {x430a0000 x43510000 x3f336cdb}\n       {x42a40000 x431a0000 x3f34ed3b}\n       {x42780000 x42f00000 x3f2b2acb}\n       {x42780000 x42e60000 x3f20681a}\n       {x42920000 x42dc0000 x3ebe2f8c}\n       {x429e0000 x42dc0000 x3e96a5a9}\n       {x42a80000 x42e00000 x3e25294a}}}\n     {tx x429e0000 x4355db6e x43871249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43a60000 x434e0000 x3e793e50}\n       {x43ad0000 x43690000 1}\n       {x43b00000 x43750000 x3e793e50}\n       {x43b48000 x43848000 x3e9aa6aa}\n       {x43b68000 x43880000 x3ea5294a}\n       {x43b90000 x438e0000 x3ec2b0ac}\n       {x43b98000 x43940000 x3ef0bc2f}\n       {x43b98000 x43958000 x3efebfb0}\n       {x43b98000 x43968000 x3f056158}\n       {x43b98000 x43980000 x3f09e279}\n       {x43ba0000 x43998000 x3f12e4b9}\n       {x43b98000 x43998000 x3f2aaaab}\n       {x43b78000 x43980000 x3f2eabab}\n       {x43b50000 x43950000 x3f2f6bdb}\n       {x43a88000 x43870000 x3f342d0b}\n       {x438b0000 x435a0000 x3f3a2e8c}\n       {x43820000 x434b0000 x3f3aeebc}\n       {x432d0000 x430b0000 x3f3beefc}\n       {x42ce0000 x42b40000 x3f3c2f0c}\n       {x42b60000 x42a40000 x3f3b6edc}\n       {x428e0000 x42820000 x3f24691a}\n       {x428c0000 x42740000 x3f19264a}\n       {x428c0000 x42700000 x3f06e1b8}\n       {x42a00000 x42780000 x3d8c2309}}}\n     {tx x429e0000 x4389d000 x43577555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43cb0000 x43740000 1}\n       {x43c70000 x43700000 x3e9725c9}\n       {x43c38000 x436a0000 x3e9b26ca}\n       {x43bf8000 x43630000 x3ea2a8aa}\n       {x43ba8000 x43590000 x3eb02c0b}\n       {x43b50000 x434e0000 x3ebdaf6c}\n       {x43aa0000 x43380000 x3ed9364e}\n       {x43968000 x43110000 x3efbbef0}\n       {x438f8000 x43030000 x3f012048}\n       {x435f0000 x429a0000 x3f0ae2b9}\n       {x43280000 x42100000 x3f0e6399}\n       {x43200000 x41f00000 x3f0e6399}\n       {x43150000 x41b80000 x3f096259}\n       {x43240000 x42280000 x3e1725c9}}}\n     {tx x429e0000 x43929b6e x43116db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ce8000 x42b40000 1}\n       {x43cb8000 x42ac0000 x3eef3bcf}\n       {x43c68000 x429e0000 x3eedbb6f}\n       {x43c38000 x42920000 x3ef5bd6f}\n       {x43c08000 x42780000 x3efabeb0}\n       {x43bf8000 x426c0000 x3efabeb0}\n       {x43be0000 x425c0000 x3ef8be30}\n       {x43b80000 x422c0000 x3eeebbaf}\n       {x43b08000 x41f80000 x3edb36ce}\n       {x43b00000 x41f80000 x3ecdb36d}\n       {x43b08000 x42280000 x3d102409}}}\n     {tx x429e0000 x43be1746 x426cba2f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e80000 x43660000 1}\n       {x43e90000 x43660000 x3da0280a}\n       {x43ea0000 x43660000 x3dd6358d}\n       {x43ea0000 x43650000 x3df03c0f}\n       {x43ea0000 x43630000 x3e052148}\n       {x43e98000 x435c0000 x3e4b32cd}\n       {x43df0000 x43460000 x3e9ca72a}\n       {x43db8000 x433f0000 x3eadab6b}\n       {x43d78000 x43380000 x3ebcaf2c}\n       {x43ca0000 x431e0000 x3ed4b52d}\n       {x43b80000 x42f40000 x3ee9ba6f}\n       {x43b40000 x42e40000 x3eeb3acf}\n       {x43b10000 x42d60000 x3eeb3acf}\n       {x43ab0000 x42b20000 x3eeb3acf}\n       {x43ad8000 x429e0000 x3ea1284a}\n       {x43b08000 x429e0000 x3e59364e}\n       {x43b38000 x42a00000 0}}}\n     {tx x429e0000 x43ce0000 x4322c3c4}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43a00000 x42e60000 x3e5f37ce}\n       {x43a10000 x42d60000 x3e693a4f}\n       {x439f0000 x42c20000 x3eaaaaab}\n       {x439c8000 x42b40000 x3ece338d}\n       {x439c0000 x42ac0000 x3ee0380e}\n       {x439b8000 x42a80000 x3ef0bc2f}\n       {x439b0000 x42a40000 x3efb3ed0}\n       {x43a48000 x42b60000 x3ed8360e}\n       {x43a88000 x42c20000 x3ed1b46d}\n       {x43bb0000 x43020000 x3e7f3fd0}\n       {x43c38000 x43140000 0}}}\n     {tx x429e0000 x43a55174 x42cce8ba}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e48000 x43b30000 1}\n       {x43e18000 x43b08000 x3eb6adab}\n       {x43de0000 x43ad0000 x3eb9ae6c}\n       {x43da8000 x43a90000 x3ec8b22d}\n       {x43d60000 x43a50000 x3ed735cd}\n       {x43d20000 x43a10000 x3ee338ce}\n       {x43ce0000 x439c0000 x3ef03c0f}\n       {x43c58000 x43920000 x3efdbf70}\n       {x43b78000 x43808000 x3f0320c8}\n       {x43b20000 x43740000 x3f0360d8}\n       {x43ad0000 x43650000 x3f046118}\n       {x43a60000 x43570000 x3f046118}\n       {x43990000 x433a0000 x3f04e138}\n       {x43830000 x430b0000 x3f056158}\n       {x43800000 x43040000 x3f056158}\n       {x437d0000 x42fe0000 x3f056158}\n       {x43800000 x42ee0000 x3ee5b96e}\n       {x438c0000 x42e80000 x3e042108}}}\n     {tx x429e0000 x43b3638e x4375471c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43bb0000 x43ba8000 1}\n       {x43bd0000 x43ba8000 x3e6d3b4f}\n       {x43bd0000 x43b90000 x3e90a429}\n       {x43bc0000 x43b70000 x3eb12c4b}\n       {x43ba0000 x43b40000 x3ecd334d}\n       {x43b40000 x43ad0000 x3ef63d8f}\n       {x43ab0000 x43a30000 x3f056158}\n       {x43920000 x438a8000 x3f166599}\n       {x43898000 x43838000 x3f17e5f9}\n       {x43818000 x437a0000 x3f19264a}\n       {x43520000 x43520000 x3f1aa6aa}\n       {x43200000 x43220000 x3f18a62a}\n       {x431a0000 x431a0000 x3f122489}\n       {x43120000 x430c0000 x3e2b2acb}}}\n     {tx x429e0000 x43919249 x438dc925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x439c8000 x43c90000 1}\n       {x43988000 x43c58000 x3eb3aceb}\n       {x43908000 x43bf0000 x3ec6318c}\n       {x438d0000 x43bb0000 x3ed9364e}\n       {x43898000 x43b70000 x3ee3b8ee}\n       {x43780000 x43a58000 x3efe3f90}\n       {x43520000 x438e0000 x3f046118}\n       {x43470000 x43880000 x3f04e138}\n       {x43240000 x436e0000 x3f066198}\n       {x43270000 x436a0000 x3ecbb2ed}\n       {x432e0000 x436f0000 x3e9c270a}\n       {x43380000 x43750000 0}}}\n     {tx x429e0000 x436a2aab x439cc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437b0000 x43e30000 1}\n       {x43710000 x43de0000 x3e842108}\n       {x43660000 x43d80000 x3e9c270a}\n       {x43590000 x43d18000 x3eb2acab}\n       {x434b0000 x43c98000 x3ec8320d}\n       {x433b0000 x43c10000 x3eddb76e}\n       {x432a0000 x43b80000 x3ef0bc2f}\n       {x42f80000 x439d0000 x3f012048}\n       {x42da0000 x43950000 x3f022088}\n       {x42980000 x43818000 x3f012048}\n       {x428e0000 x437c0000 x3efabeb0}\n       {x428c0000 x43780000 x3ef03c0f}\n       {x42a60000 x43800000 x3e042108}}}\n     {tx x429e0000 x431c4ec5 x43ae589e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ac0000 x43f40000 1}\n       {x42a40000 x43ef0000 x3ea2288a}\n       {x42940000 x43e90000 x3eb0ac2b}\n       {x426c0000 x43db8000 x3ec2b0ac}\n       {x42240000 x43cd0000 x3ed9364e}\n       {x41400000 x43b78000 x3ef93e50}\n       {x40800000 x43b08000 x3efdbf70}\n       {xc1800000 x43998000 x3edab6ae}\n       {xc1000000 x43958000 0}}}\n     {tx x429e0000 x421471c7 x43c8638e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42ec0000 x43fd0000 1}\n       {x42a60000 x43ef8000 x3eb0ac2b}\n       {x42880000 x43ea0000 x3eb7adeb}\n       {x42540000 x43e48000 x3eba2e8c}\n       {x42100000 x43df0000 x3ecc330d}\n       {x41200000 x43d78000 x3eddb76e}\n       {xc1200000 x43d40000 x3eecbb2f}\n       {x40c00000 x43de8000 x3ed6b5ad}\n       {x420c0000 x43ea8000 x3eaeabab}\n       {x42180000 x43ec8000 x3ea5294a}\n       {x42200000 x43ed8000 x3ea5a96a}\n       {x42140000 x43ed8000 x3eadab6b}\n       {x42000000 x43ed0000 x3eb5ad6b}\n       {x41500000 x43e90000 x3ece338d}\n       {x41000000 x43e80000 x3ed9b66e}\n       {x40000000 x43e78000 x3ee93a4f}\n       {x40000000 x43e80000 x3ee93a4f}\n       {x40000000 x43e98000 x3ee739ce}\n       {x41400000 x43f00000 x3ed1344d}\n       {x41980000 x43f68000 x3ebeafac}\n       {x41980000 x43f70000 x3ebeafac}\n       {x41900000 x43f80000 x3ec8320d}\n       {x41900000 x43f88000 x3ed4b52d}\n       {x41900000 x43f90000 x3ed4b52d}\n       {x41900000 x43f98000 x3ed5b56d}\n       {x41900000 x43f70000 x3ef0bc2f}\n       {x41900000 x43f60000 x3ef6bdaf}\n       {x41600000 x43f40000 x3eff3fd0}\n       {x41600000 x43f68000 x3ef1bc6f}\n       {x41880000 x43f88000 x3ee6398e}\n       {x41d00000 x43ff0000 x3ebe2f8c}\n       {x41f00000 x44008000 x3eb5ad6b}\n       {x42000000 x44010000 x3eaeabab}\n       {x42100000 x44018000 x3ea92a4b}\n       {x42100000 x44014000 x3ea92a4b}\n       {x41e80000 x43fc8000 x3eb9ae6c}\n       {x41b80000 x43f98000 x3ec1304c}\n       {x41300000 x43f50000 x3ec8320d}\n       {xc1200000 x43ed0000 x3ee1384e}\n       {xc1400000 x43ec0000 x3ee4390e}\n       {xc1300000 x43eb0000 x3ed1344d}\n       {xc0e00000 x43ec8000 x3ecc330d}\n       {xbf800000 x43ed8000 x3eca328d}\n       {x41b80000 x43f38000 x3eaf2bcb}\n       {x41f00000 x43f50000 x3ea2288a}\n       {x42400000 x43f88000 x3e90a429}\n       {x42540000 x43f98000 x3e912449}\n       {x42600000 x43fa0000 x3e91a469}\n       {x42700000 x43fb0000 x3e93a4e9}\n       {x42480000 x43f20000 x3eb4ad2b}\n       {x42300000 x43ef0000 x3ebdaf6c}\n       {x42200000 x43ec0000 x3ec4b12c}\n       {x41a00000 x43e20000 x3edab6ae}\n       {xbf800000 x43d70000 x3ef63d8f}\n       {xc0000000 x43d58000 x3ef63d8f}\n       {x40a00000 x43d58000 x3eab2acb}\n       {x41a00000 x43da8000 0}}}\n     {tx x429e0000 x41c50d79 x43ef50d8}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43330000 x43d58000 1}\n       {x43290000 x43cf8000 x3e9fa7ea}\n       {x431d0000 x43c98000 x3ea6298a}\n       {x43040000 x43bc8000 x3eb82e0c}\n       {x42ec0000 x43b60000 x3ec6318c}\n       {x42ce0000 x43ae8000 x3ed334cd}\n       {x42b00000 x43a80000 x3ee5394e}\n       {x42920000 x43a18000 x3ef1bc6f}\n       {x42700000 x439b0000 x3ef9be70}\n       {x423c0000 x43958000 x3efebfb0}\n       {x42100000 x43908000 x3effbff0}\n       {x41c00000 x438a8000 x3efe3f90}\n       {x41c00000 x438b0000 x3ee5b96e}\n       {x42180000 x43970000 x3e5f37ce}\n       {x423c0000 x439d0000 x3e0c2309}}}\n     {tx x429e0000 x42acaaab x43a8c444}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43440000 x43bc8000 x3e4b32cd}\n       {x43420000 x43ba8000 x3e802008}\n       {x43270000 x43b08000 x3eae2b8b}\n       {x430b0000 x43a78000 x3eb12c4b}\n       {x42b60000 x439b0000 x3eb1ac6b}\n       {x42940000 x43980000 x3eb1ac6b}\n       {x42180000 x43950000 x3eb1ac6b}\n       {x42000000 x43958000 x3eaaaaab}\n       {x41f00000 x43980000 x3e96a5a9}\n       {x42140000 x43a48000 x3e6a3a8f}\n       {x42300000 x43a90000 x3e292a4b}\n       {x42880000 x43b48000 x3a802008}\n       {x42940000 x43b68000 x3de4390e}\n       {x429c0000 x43b70000 x3e22288a}\n       {x429e0000 x43b18000 x3e8ea3a9}\n       {x42480000 x43a10000 x3ebcaf2c}\n       {x42280000 x439c8000 x3ec6318c}\n       {x41000000 x43920000 x3ee2b8ae}\n       {x41000000 x43970000 x3eda368e}\n       {x41800000 x439b8000 x3eceb3ad}\n       {x42480000 x43af0000 x3ec4b12c}\n       {x429e0000 x43c70000 x3ebe2f8c}\n       {x42aa0000 x43cc0000 x3ebeafac}\n       {x42b40000 x43cf8000 x3ec0300c}\n       {x42bc0000 x43d20000 x3ec2308c}\n       {x42bc0000 x43d18000 x3ecdb36d}\n       {x42b20000 x43cf8000 x3ee6398e}\n       {x42840000 x43c38000 x3efb3ed0}\n       {x42680000 x43bf8000 x3f03a0e8}\n       {x41e80000 x43b20000 x3f0e2389}\n       {x41980000 x43ae8000 x3f0e6399}\n       {x40000000 x43ab0000 x3f122489}\n       {x420c0000 x43bd0000 x3eba2e8c}\n       {x42400000 x43c30000 x3ea7a9ea}\n       {x42ca0000 x43dd8000 x3dcc330d}\n       {x43100000 x43ee0000 x3e40300c}\n       {x43160000 x43ef8000 x3e713c4f}\n       {x43120000 x43ea0000 x3e9ea7aa}\n       {x42e80000 x43d88000 x3eb1ac6b}\n       {x42ac0000 x43c60000 x3eb82e0c}\n       {x42a00000 x43c20000 x3eb92e4c}\n       {x42980000 x43be0000 x3eb9ae6c}\n       {x428e0000 x43b90000 x3eb1ac6b}\n       {x42920000 x43b90000 x3e9324c9}\n       {x42a00000 x43ba8000 0}}}\n     {tx x429e0000 x42984444 x43b8693f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43868000 x43ad8000 1}\n       {x438c8000 x43b20000 x3df83e10}\n       {x43938000 x43b78000 x3e25294a}\n       {x43950000 x43b80000 x3e64390e}\n       {x43920000 x43b70000 x3eaa2a8b}\n       {x438d8000 x43b40000 x3eb5ad6b}\n       {x43870000 x43b08000 x3ebaaeac}\n       {x43800000 x43ab0000 x3ebdaf6c}\n       {x43320000 x43930000 x3ec2308c}\n       {x42c80000 x43740000 x3ec3b0ec}\n       {x42a80000 x43690000 x3ec4310c}\n       {x42540000 x435a0000 x3ec0b02c}\n       {x42860000 x43720000 0}}}\n     {tx x429e0000 x4351b13b x439d4ec5}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43bd8000 x43b68000 1}\n       {x43bc0000 x43b68000 x3eb3aceb}\n       {x43b80000 x43b68000 x3eba2e8c}\n       {x43b00000 x43b08000 x3ed3b4ed}\n       {x43aa8000 x43ab8000 x3ee8ba2f}\n       {x439c8000 x439d0000 x3efe3f90}\n       {x438a8000 x438a8000 x3f01a068}\n       {x43808000 x43810000 x3f03a0e8}\n       {x436a0000 x436e0000 x3f062188}\n       {x431e0000 x432d0000 x3f0d2349}\n       {x43060000 x43180000 x3f0da369}\n       {x42680000 x42b80000 x3f0fa3e9}\n       {x42140000 x42a00000 x3f0e2389}\n       {x42180000 x42aa0000 x3eefbbef}\n       {x42780000 x42f20000 x3e8d2349}\n       {x42940000 x430a0000 x3e25294a}}}\n     {tx x429e0000 x43582000 x43687000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43b98000 x43a88000 1}\n       {x43ba8000 x43a88000 x3e902409}\n       {x43b40000 x439e0000 x3ea2288a}\n       {x43ae0000 x43970000 x3eb0ac2b}\n       {x43a70000 x43900000 x3eb92e4c}\n       {x439f0000 x43878000 x3ec1b06c}\n       {x438d8000 x436b0000 x3ecbb2ed}\n       {x43530000 x431d0000 x3ee6398e}\n       {x433f0000 x430a0000 x3ee9ba6f}\n       {x432e0000 x42ee0000 x3eea3a8f}\n       {x42fe0000 x42940000 x3eed3b4f}\n       {x42e80000 x42820000 x3eecbb2f}\n       {x42cc0000 x42600000 x3eaf2bcb}\n       {x42d00000 x42780000 0}}}\n     {tx x429e0000 x4373b6db x4344edb7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43be0000 x438a8000 1}\n       {x43b98000 x43870000 x3eab2acb}\n       {x43ad8000 x43780000 x3eadab6b}\n       {x43a70000 x436a0000 x3eb8ae2c}\n       {x439f0000 x435a0000 x3ebfafec}\n       {x438d0000 x43360000 x3eddb76e}\n       {x43838000 x43240000 x3eeb3acf}\n       {x43740000 x43110000 x3ef6bdaf}\n       {x433c0000 x42be0000 x3f012048}\n       {x430e0000 x42540000 x3f012048}\n       {x430a0000 x42480000 x3f00a028}\n       {x430e0000 x428e0000 x3e783e10}}}\n     {tx x429e0000 x43833555 x43274000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e18000 x43350000 x3ea5294a}\n       {x43d28000 x43180000 1}\n       {x43cc8000 x430e0000 x3eb0ac2b}\n       {x43b70000 x42ce0000 x3ec6318c}\n       {x43af0000 x42b40000 x3ec8b22d}\n       {x43a70000 x429a0000 x3ec9324d}\n       {x439e0000 x42800000 x3ec9b26d}\n       {x43958000 x42500000 x3eca328d}\n       {x438d8000 x42200000 x3ecab2ad}\n       {x43870000 x41f80000 x3ecbb2ed}\n       {x437b0000 x41c80000 x3eb2acab}\n       {x437e0000 x42000000 0}}}\n     {tx x429e0000 x43a6d555 x42a4d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f50000 x42b80000 1}\n       {x43eb0000 x429c0000 x3ec3b0ec}\n       {x43e80000 x42940000 x3edb36ce}\n       {x43e60000 x428e0000 x3eef3bcf}\n       {x43e30000 x42860000 x3efb3ed0}\n       {x43de8000 x42800000 x3f0761d8}\n       {x43e00000 x42860000 x3efb3ed0}\n       {x43e70000 x42aa0000 x3eb12c4b}\n       {x43e80000 x42b60000 x3e9da76a}\n       {x43e90000 x42e00000 x3e89a269}\n       {x43e90000 x42f00000 x3e85a168}\n       {x43e90000 x43000000 x3e7a3e90}\n       {x43e70000 x431d0000 x3dda368e}\n       {x43e70000 x43280000 x3d2c2b0b}}}\n     {tx x429e0000 x43e76492 x42c44925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e40000 x42880000 x3da2288a}\n       {x43e60000 x428c0000 x3e703c0f}\n       {x43e78000 x428e0000 x3e753d4f}\n       {x43e90000 x428e0000 x3e773dcf}\n       {x43ea8000 x428e0000 x3e773dcf}\n       {x43ec0000 x428e0000 x3e703c0f}\n       {x43ec8000 x428e0000 x3e58360e}\n       {x43ec8000 x42880000 x3e4b32cd}\n       {x43eb0000 x42800000 x3e4731cc}\n       {x43ea8000 x42800000 x3e5735cd}\n       {x43ea8000 x428c0000 x3e22288a}\n       {x43ec0000 x42940000 0}}}\n     {tx x429e0000 x43e9d555 x428ad555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c00000 x43260000 x3e5d374e}\n       {x43cc0000 x43380000 1}\n       {x43d18000 x433e0000 x3e46318c}\n       {x43de8000 x43440000 x3e892249}\n       {x43de8000 x433e0000 x3e9725c9}\n       {x43db8000 x432a0000 x3eaaaaab}\n       {x43cb8000 x43050000 x3ed0b42d}\n       {x43c58000 x42f20000 x3edcb72e}\n       {x43c00000 x42da0000 x3ee93a4f}\n       {x43b08000 x429c0000 x3ef6bdaf}\n       {x43a70000 x42580000 x3ef9be70}\n       {x43a70000 x42500000 x3ef9be70}\n       {x43b48000 x42580000 x3edc370e}\n       {x43c58000 x42860000 x3ed1b46d}\n       {x43c88000 x428e0000 x3ed1b46d}\n       {x43cc0000 x42920000 x3ed1b46d}\n       {x43cc0000 x42900000 x3ed2b4ad}\n       {x43cc0000 x42880000 x3edfb7ee}\n       {x43c50000 x42540000 x3ee5b96e}\n       {x43c28000 x42400000 x3ee93a4f}\n       {x43bc8000 x42100000 x3ef6bdaf}\n       {x43ba8000 x42000000 x3ef8be30}\n       {x43b98000 x41f00000 x3ef93e50}\n       {x43b78000 x41d00000 x3ef9be70}\n       {x43b80000 x41e00000 x3eecbb2f}\n       {x43c30000 x42280000 x3ec6318c}\n       {x43c80000 x42400000 x3eb2acab}\n       {x43db0000 x42840000 x3e7b3ed0}\n       {x43e30000 x42880000 0}}}\n     {tx x429e0000 x43c56584 x42ae234f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e20000 x43920000 1}\n       {x43de0000 x438f8000 x3e96a5a9}\n       {x43d20000 x43878000 x3ea7a9ea}\n       {x43cb8000 x43820000 x3eb8ae2c}\n       {x43c50000 x43770000 x3ecab2ad}\n       {x43bf0000 x43690000 x3ed8360e}\n       {x43b78000 x43580000 x3ee3b8ee}\n       {x43aa0000 x43350000 x3eeebbaf}\n       {x438e0000 x42da0000 x3ef3bcef}\n       {x43740000 x425c0000 x3ef2bcaf}\n       {x436f0000 x42380000 x3eedbb6f}\n       {x43690000 x41b80000 x3eaeabab}\n       {x436f0000 x41c00000 0}}}\n     {tx x429e0000 x43aaf627 x432c9d8a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ae0000 x43958000 1}\n       {x43a80000 x438f0000 x3ea3a8ea}\n       {x43a20000 x43870000 x3ea3a8ea}\n       {x43950000 x436f0000 x3ea729ca}\n       {x43868000 x434d0000 x3eae2b8b}\n       {x43620000 x431c0000 x3eb5ad6b}\n       {x43520000 x430c0000 x3eb5ad6b}\n       {x432a0000 x42ca0000 x3eb5ad6b}\n       {x43200000 x42b40000 x3eb12c4b}\n       {x43180000 x42a40000 x3eaa2a8b}\n       {x430c0000 x42780000 x3e80a028}\n       {x430b0000 x42700000 x3e312c4b}}}\n     {tx x429e0000 x43670000 x4325d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fb8000 x43a50000 x3e19264a}\n       {x43fd0000 x43a90000 1}\n       {x43fe8000 x43ad0000 x3e352d4b}\n       {x43ff8000 x43b00000 x3e50340d}\n       {x44000000 x43b18000 x3e703c0f}\n       {x44008000 x43b38000 x3e89a269}\n       {x44008000 x43b40000 x3e99264a}\n       {x44008000 x43b50000 x3eb0ac2b}\n       {x44000000 x43b38000 x3edb36ce}\n       {x43fb8000 x43ae8000 x3edf37ce}\n       {x43f38000 x43a60000 x3ee3b8ee}\n       {x43ef0000 x43a10000 x3ee5394e}\n       {x43e90000 x439b0000 x3ee83a0f}\n       {x43e18000 x43938000 x3eed3b4f}\n       {x43bf0000 x435e0000 x3f002008}\n       {x43980000 x42fe0000 x3f0be2f9}\n       {x438d8000 x42ce0000 x3f0c6319}\n       {x435f0000 x41f00000 x3f0ca329}\n       {x434c0000 x41000000 x3f0be2f9}\n       {x433a0000 xc1300000 x3f0a2289}\n       {x430e0000 xc2740000 x3f07a1e8}\n       {x42d00000 xc2c80000 x3f062188}\n       {x42c40000 xc2d00000 x3f0320c8}\n       {x42ac0000 xc2d40000 x3eecbb2f}\n       {x42aa0000 xc2be0000 x3ed1344d}\n       {x42aa0000 xc2b00000 x3ec8b22d}\n       {x42aa0000 xc29e0000 x3eba2e8c}\n       {x42aa0000 xc28e0000 x3eab2acb}\n       {x42aa0000 xc2700000 x3e9ea7aa}\n       {x42b00000 xc2400000 x3e952549}\n       {x42c20000 xc1a00000 x3e8a2289}\n       {x42ec0000 x41500000 x3e892249}\n       {x43030000 x42000000 x3e89a269}\n       {x43120000 x42500000 x3e8b22c9}\n       {x43240000 x428e0000 x3e8c2309}\n       {x43818000 x431a0000 x3e8e2389}\n       {x43b48000 x43700000 x3e8d2349}\n       {x43c10000 x43830000 x3e8d2349}\n       {x43e68000 x43a00000 x3e912449}\n       {x43f20000 x43a88000 x3e93a4e9}\n       {x43fc0000 x43b00000 x3e97a5e9}\n       {x4408c000 x43c10000 x3eab2acb}\n       {x440e0000 x43d00000 x3ec9b26d}\n       {x440e4000 x43d28000 x3ed2b4ad}\n       {x440ec000 x43d88000 x3eeb3acf}\n       {x440e4000 x43d88000 x3f016058}\n       {x440d4000 x43d60000 x3f022088}\n       {x440a0000 x43ce8000 x3f02e0b8}\n       {x44040000 x43c20000 x3f042108}\n       {x43ff8000 x43ba0000 x3f042108}\n       {x43f68000 x43b10000 x3f056158}\n       {x43e00000 x439c8000 x3f062188}\n       {x43d30000 x43910000 x3f066198}\n       {x43c60000 x43850000 x3f06a1a8}\n       {x43b80000 x43710000 x3f0721c8}\n       {x43830000 x43080000 x3f092249}\n       {x43240000 x42200000 x3f09a269}\n       {x43100000 x41900000 x3f09a269}\n       {x42be0000 xc20c0000 x3f096259}\n       {x42a80000 xc2440000 x3f096259}\n       {x42540000 xc2b60000 x3f0360d8}\n       {x42400000 xc2c20000 x3efb3ed0}\n       {x42280000 xc2d00000 x3eceb3ad}\n       {x42240000 xc2ca0000 x3eacab2b}\n       {x42240000 xc2c00000 x3ea0280a}\n       {x42240000 xc2b40000 x3e9ca72a}\n       {x42240000 xc2a60000 x3e9aa6aa}\n       {x42240000 xc2920000 x3e98260a}\n       {x422c0000 xc2700000 x3e96a5a9}\n       {x42400000 xc23c0000 x3e96a5a9}\n       {x425c0000 xc1f80000 x3e95a569}\n       {x42920000 x40800000 x3e952549}\n       {x42aa0000 x41b80000 x3e95a569}\n       {x42c20000 x42300000 x3e98260a}\n       {x432c0000 x430a0000 x3eadab6b}\n       {x43440000 x43230000 x3eb02c0b}\n       {x43990000 x43840000 x3eb5ad6b}\n       {x43c40000 x43ab0000 x3eba2e8c}\n       {x43cc0000 x43b38000 x3ebc2f0c}\n       {x43df0000 x43c90000 x3ebe2f8c}\n       {x43e38000 x43cf8000 x3ebe2f8c}\n       {x43e60000 x43d58000 x3ebe2f8c}\n       {x43e80000 x43e30000 x3ebe2f8c}\n       {x43e80000 x43e50000 x3ebe2f8c}\n       {x43e48000 x43e90000 x3ec7b1ec}\n       {x43e08000 x43e48000 x3ed1b46d}\n       {x43dd8000 x43e08000 x3ed2348d}\n       {x43cd0000 x43c88000 x3ed6b5ad}\n       {x43c58000 x43bd8000 x3ed6b5ad}\n       {x43bc0000 x43b08000 x3ed6b5ad}\n       {x43980000 x43850000 x3edab6ae}\n       {x433b0000 x430e0000 x3ef93e50}\n       {x431e0000 x42dc0000 x3efbbef0}\n       {x42740000 xbf800000 x3f02e0b8}\n       {xc1200000 xc2940000 x3f0761d8}\n       {xc1b80000 xc2ac0000 x3f0761d8}\n       {xc2080000 xc2c40000 x3f0761d8}\n       {xc2580000 xc2e60000 x3f07a1e8}\n       {xc2740000 xc2f40000 x3f006018}\n       {xc2840000 xc2fe0000 x3ef93e50}\n       {xc2880000 xc3020000 x3ef93e50}\n       {xc2880000 xc2fc0000 x3ea4290a}\n       {xc2880000 xc2f00000 x3e9b26ca}\n       {xc2880000 xc2e20000 x3e94a529}\n       {xc2860000 xc2ce0000 x3e922489}\n       {xc2800000 xc2b80000 x3e922489}\n       {xc26c0000 xc29c0000 x3e922489}\n       {xc2500000 xc2780000 x3e9324c9}\n       {xc22c0000 xc2380000 x3e952549}\n       {xc2000000 xc1d00000 x3e9aa6aa}\n       {xc1980000 xc0c00000 x3ea2a8aa}\n       {xc0a00000 x41800000 x3eadab6b}\n       {x41400000 x42180000 x3eb92e4c}\n       {x42480000 x42b20000 x3eccb32d}\n       {x42f00000 x432a0000 x3edcb72e}\n       {x436a0000 x43898000 x3eeebbaf}\n       {x43838000 x43950000 x3ef1bc6f}\n       {x43b10000 x43bc8000 x3ef63d8f}\n       {x43ce8000 x43db8000 x3ef8be30}\n       {x43d50000 x43e20000 x3efabeb0}\n       {x43e38000 x43f30000 x3efc3f10}\n       {x43e70000 x43f80000 x3efc3f10}\n       {x43ea0000 x43fc8000 x3efebfb0}\n       {x43f30000 x4403c000 x3f016058}\n       {x43f58000 x44050000 x3f016058}\n       {x43fa0000 x44070000 x3f02a0a8}\n       {x43fb0000 x44074000 x3f02a0a8}\n       {x43fb0000 x44068000 x3f09e279}\n       {x43f88000 x44030000 x3f0d2349}\n       {x43f60000 x4400c000 x3f0de379}\n       {x43f28000 x43fb8000 x3f0fe3f9}\n       {x43ee0000 x43f50000 x3f126499}\n       {x43e90000 x43ed8000 x3f13a4e9}\n       {x43dc0000 x43dd8000 x3f14e539}\n       {x43c28000 x43bf8000 x3f122489}\n       {x43b90000 x43b48000 x3f0f63d9}\n       {x438f8000 x438c8000 x3f0a2289}\n       {x43690000 x436e0000 x3f0be2f9}\n       {x43680000 x436c0000 x3f0da369}\n       {x43820000 x43810000 x3f0d2349}\n       {x438b0000 x43890000 x3f0c6319}\n       {x43958000 x43910000 x3f0be2f9}\n       {x43b70000 x43b08000 x3f06e1b8}\n       {x43e68000 x43da8000 x3f00a028}\n       {x43f08000 x43e30000 x3effbff0}\n       {x44074000 x43fd0000 x3efdbf70}\n       {x440cc000 x44058000 x3efdbf70}\n       {x440d4000 x44068000 x3efdbf70}\n       {x440e8000 x4408c000 x3efdbf70}\n       {x440ec000 x44090000 x3efdbf70}\n       {x440ec000 x44098000 x3efdbf70}\n       {x440e8000 x44078000 x3ee5394e}\n       {x440d8000 x44058000 x3ee5394e}\n       {x440c8000 x44030000 x3ee7b9ee}\n       {x440b0000 x44000000 x3ee83a0f}\n       {x4408c000 x43f98000 x3ee93a4f}\n       {x44060000 x43f28000 x3eea3a8f}\n       {x44038000 x43ea8000 x3eed3b4f}\n       {x44000000 x43e20000 x3eeebbaf}\n       {x43f88000 x43d88000 x3eeebbaf}\n       {x43f00000 x43ce8000 x3ef03c0f}\n       {x43dc0000 x43b70000 x3ef53d4f}\n       {x43c60000 x439f8000 x3ef83e10}\n       {x43ba8000 x43940000 x3ef83e10}\n       {x43b00000 x43898000 x3efabeb0}\n       {x43908000 x435a0000 x3f022088}\n       {x43870000 x434b0000 x3f046118}\n       {x435a0000 x43200000 x3f0c6319}\n       {x43530000 x43180000 x3f096259}\n       {x43590000 x431c0000 x3f03a0e8}\n       {x437a0000 x43340000 x3eee3b8f}\n       {x43838000 x433f0000 x3ee5394e}\n       {x43a10000 x43740000 x3ed735cd}\n       {x43be0000 x43980000 x3edab6ae}\n       {x43c60000 x43a00000 x3edb36ce}\n       {x43ec0000 x43c40000 x3ede378e}\n       {x44084000 x43e48000 x3ede378e}\n       {x440c0000 x43eb0000 x3eddb76e}\n       {x44150000 x43f98000 x3edb36ce}\n       {x44174000 x43fd0000 x3ed8360e}\n       {x44190000 x44000000 x3ed6b5ad}\n       {x441ac000 x44020000 x3ed1b46d}\n       {x441ac000 x44024000 x3ed1b46d}\n       {x44198000 x44020000 x3edf37ce}\n       {x44188000 x44008000 x3ee739ce}\n       {x44164000 x43fb0000 x3ee7b9ee}\n       {x4414c000 x43f60000 x3ee9ba6f}\n       {x44110000 x43e98000 x3ef3bcef}\n       {x440b4000 x43d88000 x3ef83e10}\n       {x44040000 x43c38000 x3f002008}\n       {x43f60000 x43ad8000 x3f0360d8}\n       {x43ec8000 x43a18000 x3f03a0e8}\n       {x43d78000 x438a0000 x3f042108}\n       {x43b08000 x433c0000 x3f056158}\n       {x43958000 x42fc0000 x3f0be2f9}\n       {x43910000 x42e60000 x3f0c6319}\n       {x438c8000 x42c40000 x3f0e2389}\n       {x438c8000 x42c00000 x3f0e2389}\n       {x43928000 x42ca0000 x3ef93e50}\n       {x43a20000 x430a0000 x3ee93a4f}\n       {x43a78000 x43170000 x3ee5394e}\n       {x43c20000 x435c0000 x3ee4b92e}\n       {x43e98000 x43930000 x3ee5b96e}\n       {x43f38000 x439c0000 x3ee5b96e}\n       {x44078000 x43b18000 x3ee4b92e}\n       {x440b8000 x43b70000 x3ee4b92e}\n       {x440e4000 x43bc0000 x3ee4390e}\n       {x44130000 x43c50000 x3ee4390e}\n       {x44134000 x43c60000 x3ee5394e}\n       {x44134000 x43c68000 x3f06a1a8}\n       {x44130000 x43c60000 x3f0ae2b9}\n       {x44120000 x43c50000 x3f0be2f9}\n       {x44100000 x43be0000 x3f0da369}\n       {x440e8000 x43b98000 x3f0e6399}\n       {x440a8000 x43ad0000 x3f106419}\n       {x44084000 x43a60000 x3f10e439}\n       {x4405c000 x439f0000 x3f11e479}\n       {x4402c000 x43970000 x3f12e4b9}\n       {x43ff0000 x438f8000 x3f1324c9}\n       {x43f88000 x43870000 x3f1364d9}\n       {x43f10000 x437d0000 x3f13a4e9}\n       {x43e98000 x436b0000 x3f13a4e9}\n       {x43db0000 x43480000 x3f14a529}\n       {x43d48000 x43390000 x3f14a529}\n       {x43ca0000 x431c0000 x3f14e539}\n       {x43c68000 x43110000 x3f14e539}\n       {x43be0000 x42ec0000 x3f14e539}\n       {x43b78000 x42c00000 x3f122489}\n       {x43b70000 x42bc0000 x3f106419}\n       {x43b70000 x42b80000 x3f0fa3e9}\n       {x43b70000 x42b60000 x3f09e279}\n       {x43bd0000 x42dc0000 x3ef5bd6f}\n       {x43bf8000 x42ee0000 x3ef83e10}\n       {x43cb8000 x43270000 x3efb3ed0}\n       {x43e08000 x43680000 x3efc3f10}\n       {x43e78000 x437a0000 x3efc3f10}\n       {x43fe0000 x43960000 x3efb3ed0}\n       {x44030000 x439e0000 x3efb3ed0}\n       {x4406c000 x43a50000 x3efabeb0}\n       {x44114000 x43b70000 x3ef6bdaf}\n       {x44194000 x43c50000 x3eeabaaf}\n       {x441a0000 x43c60000 x3eea3a8f}\n       {x441a4000 x43c70000 x3eea3a8f}\n       {x44194000 x43c70000 x3ef83e10}\n       {x44170000 x43c50000 x3efabeb0}\n       {x44150000 x43c20000 x3efbbef0}\n       {x44130000 x43bd8000 x3efc3f10}\n       {x44108000 x43b80000 x3efe3f90}\n       {x440a8000 x43aa0000 x3f002008}\n       {x44028000 x43988000 x3f012048}\n       {x43fb8000 x438f0000 x3f016058}\n       {x43f10000 x43850000 x3f022088}\n       {x43e68000 x43770000 x3f026098}\n       {x43d10000 x434e0000 x3f0320c8}\n       {x43c68000 x433a0000 x3f0320c8}\n       {x43b60000 x43150000 x3f062188}\n       {x43ae8000 x43040000 x3f06e1b8}\n       {x439f8000 x42a60000 x3f09e279}\n       {x439f0000 x42940000 x3f09e279}\n       {x439f0000 x425c0000 x3f082209}\n       {x43a00000 x42480000 x3f042108}\n       {x43a10000 x42380000 x3efa3e90}\n       {x43a18000 x420c0000 x3ed1344d}\n       {x439f8000 x41c00000 x3ec2b0ac}\n       {x439e8000 x41b00000 x3ec2308c}\n       {x439d0000 x41980000 x3ec2308c}\n       {x439a0000 x41500000 x3ec7b1ec}\n       {x43998000 x41400000 x3eca328d}\n       {x43998000 x41200000 x3ecdb36d}\n       {x439a0000 x41200000 x3ece338d}\n       {x439e8000 x41200000 x3ecd334d}\n       {x439f8000 x41400000 x3ecd334d}\n       {x43a10000 x41800000 x3ecd334d}\n       {x43a48000 x41e80000 x3eceb3ad}\n       {x43a60000 x420c0000 x3ed2348d}\n       {x43ad0000 x42940000 x3edab6ae}\n       {x43ba8000 x430c0000 x3ee4390e}\n       {x43c00000 x43210000 x3ee4b92e}\n       {x43d58000 x435f0000 x3ee4390e}\n       {x43de8000 x43740000 x3ee2b8ae}\n       {x4400c000 x439c0000 x3ed2b4ad}\n       {x440e0000 x43b60000 x3ecdb36d}\n       {x44108000 x43ba8000 x3ecd334d}\n       {x4412c000 x43bf0000 x3eccb32d}\n       {x44174000 x43c80000 x3ecd334d}\n       {x4417c000 x43c98000 x3ee93a4f}\n       {x44174000 x43c80000 x3ef63d8f}\n       {x44148000 x43be0000 x3efb3ed0}\n       {x440f0000 x43af0000 x3f026098}\n       {x44074000 x439e0000 x3f042108}\n       {x43fb0000 x43898000 x3f062188}\n       {x43ef8000 x437d0000 x3f06e1b8}\n       {x43d80000 x43500000 x3f07e1f8}\n       {x43cb8000 x43380000 x3f07e1f8}\n       {x43aa0000 x42e60000 x3f092249}\n       {x43850000 x422c0000 x3f0e2389}\n       {x437d0000 x41e80000 x3f0f23c9}\n       {x43710000 x41800000 x3f0f63d9}\n       {x43570000 xc1900000 x3f0fe3f9}\n       {x43460000 xc23c0000 x3f0fa3e9}\n       {x43440000 xc2500000 x3f0ea3a9}\n       {x43400000 xc2780000 x3f0ae2b9}\n       {x433f0000 xc2820000 x3f0a2289}\n       {x433a0000 xc2900000 x3f08a229}\n       {x433a0000 xc2920000 x3f086219}\n       {x433b0000 xc28e0000 x3ef33ccf}\n       {x43440000 xc2780000 x3ef33ccf}\n       {x434e0000 xc2480000 x3ef33ccf}\n       {x43560000 xc2280000 x3ef33ccf}\n       {x43650000 xc1c80000 x3ef2bcaf}\n       {x43760000 xc0c00000 x3ef4bd2f}\n       {x43800000 x40800000 x3ef63d8f}\n       {x438a8000 x41b00000 x3ef8be30}\n       {x43990000 x42400000 x3ef9be70}\n       {x439d0000 x42680000 x3efa3e90}\n       {x43aa0000 x42aa0000 x3efa3e90}\n       {x43ae0000 x42c00000 x3efabeb0}\n       {x43b18000 x42d60000 x3efb3ed0}\n       {x43ba8000 x430b0000 x3efbbef0}\n       {x43c30000 x43380000 x3efc3f10}\n       {x43c58000 x43420000 x3efc3f10}\n       {x43c88000 x434e0000 x3efc3f10}\n       {x43d70000 x43740000 x3efe3f90}\n       {x43ef8000 x43908000 x3effbff0}\n       {x43f50000 x43960000 x3effbff0}\n       {x43fa0000 x439b8000 x3effbff0}\n       {x44058000 x43ab0000 x3eff3fd0}\n       {x44108000 x43c10000 x3effbff0}\n       {x44130000 x43c68000 x3effbff0}\n       {x4417c000 x43d48000 x3effbff0}\n       {x44188000 x43d80000 x3effbff0}\n       {x44194000 x43e30000 x3eff3fd0}\n       {x44180000 x43ed8000 x3ef8be30}\n       {x4417c000 x43ed0000 x3ef8be30}\n       {x44164000 x43e90000 x3efcbf30}\n       {x4414c000 x43e48000 x3effbff0}\n       {x44108000 x43d90000 x3f04a128}\n       {x440d4000 x43d28000 x3f082209}\n       {x4405c000 x43c20000 x3f0e6399}\n       {x43f88000 x43ae0000 x3f12e4b9}\n       {x43ed8000 x43a40000 x3f14a529}\n       {x43d58000 x438d0000 x3f15a569}\n       {x43bc8000 x436b0000 x3f162589}\n       {x43b00000 x43540000 x3f166599}\n       {x43960000 x43270000 x3f16a5a9}\n       {x43898000 x43100000 x3f1725c9}\n       {x43470000 x42a80000 x3f19264a}\n       {x43320000 x42840000 x3f1a268a}\n       {x431d0000 x42440000 x3f1b26ca}\n       {x42dc0000 x41200000 x3f1c671a}\n       {x42a40000 xc1500000 x3f1e278a}\n       {x42a00000 xc1600000 x3f1e679a}\n       {x42b20000 xc1200000 x3f17a5e9}\n       {x42f20000 x41a00000 x3f13a4e9}\n       {x43050000 x42000000 x3f122489}\n       {x43120000 x423c0000 x3f11e479}\n       {x43360000 x429c0000 x3f11e479}\n       {x437c0000 x43060000 x3f11e479}\n       {x438a0000 x431b0000 x3f11e479}\n       {x43af0000 x435e0000 x3f10e439}\n       {x43bc8000 x43750000 x3f106419}\n       {x43ca0000 x43868000 x3f0fe3f9}\n       {x43f50000 x43a80000 x3f0d6359}\n       {x4411c000 x43cf0000 x3f07e1f8}\n       {x44160000 x43d70000 x3f06a1a8}\n       {x44198000 x43de0000 x3f056158}\n       {x44220000 x43ed8000 x3efc3f10}\n       {x44280000 x43f80000 x3ef53d4f}\n       {x44288000 x43f90000 x3ef53d4f}\n       {x44288000 x43f98000 x3ef5bd6f}\n       {x44278000 x43f90000 x3f04e138}\n       {x44264000 x43f70000 x3f04e138}\n       {x44224000 x43f20000 x3f066198}\n       {x441c0000 x43e70000 x3f086219}\n       {x44178000 x43df0000 x3f0aa2a9}\n       {x440c0000 x43ca0000 x3f102409}\n       {x43fa0000 x43b18000 x3f14a529}\n       {x43ea0000 x43a50000 x3f17e5f9}\n       {x43c90000 x438a8000 x3f1c671a}\n       {x43b90000 x437b0000 x3f1da76a}\n       {x439b8000 x43460000 x3f1ea7aa}\n       {x438d8000 x432d0000 x3f1f27ca}\n       {x437e0000 x43150000 x3f1f27ca}\n       {x43320000 x42aa0000 x3f20681a}\n       {x42f20000 x42200000 x3f20280a}\n       {x42d80000 x41f00000 x3f20280a}\n       {x42c40000 x41b00000 x3f20280a}\n       {x42ac0000 x40c00000 x3f1d675a}\n       {x42b60000 xc0c00000 x3f016058}\n       {x42bc0000 xc1000000 x3ef1bc6f}\n       {x42c40000 xc1000000 x3ec7b1ec}\n       {x42ca0000 xc0e00000 x3ebfafec}\n       {x42ce0000 xc0000000 x3ebe2f8c}\n       {x42ec0000 x41c00000 x3ec4b12c}\n       {x42fa0000 x42140000 x3ec9324d}\n       {x431b0000 x42ac0000 x3ed2b4ad}\n       {x43280000 x42d40000 x3ed5354d}\n       {x43740000 x43400000 x3ed8360e}\n       {x43850000 x43570000 x3ed7b5ed}\n       {x43a88000 x438b0000 x3ed735cd}\n       {x43b40000 x43950000 x3ed6b5ad}\n       {x43bf8000 x439e8000 x3ed6b5ad}\n       {x43e08000 x43b80000 x3ed5b56d}\n       {x44014000 x43d30000 x3ed334cd}\n       {x44048000 x43d90000 x3ed2b4ad}\n       {x440e0000 x43ee0000 x3ed2348d}\n       {x4414c000 x43ff0000 x3ed334cd}\n       {x44164000 x44018000 x3ed3b4ed}\n       {x44198000 x44058000 x3ed3b4ed}\n       {x441b0000 x44074000 x3ed3b4ed}\n       {x441e8000 x440b0000 x3ed334cd}\n       {x44210000 x440e0000 x3ed1344d}\n       {x44224000 x440f0000 x3ecdb36d}\n       {x4423c000 x44114000 x3ecc330d}\n       {x44240000 x44120000 x3ecab2ad}\n       {x44240000 x44128000 x3ecab2ad}\n       {x4423c000 x44128000 x3ecc330d}\n       {x44238000 x4412c000 x3ecc330d}\n       {x44224000 x4412c000 x3eca328d}\n       {x44220000 x4412c000 x3ecbb2ed}\n       {x4421c000 x4412c000 x3ecc330d}\n       {x4420c000 x44130000 x3eceb3ad}\n       {x44204000 x44134000 x3ed2b4ad}\n       {x44200000 x44138000 x3ed3b4ed}\n       {x441f8000 x44144000 x3ed2b4ad}\n       {x441f8000 x44148000 x3ed1b46d}\n       {x441f4000 x44158000 x3ecc330d}\n       {x441f0000 x44164000 x3eca328d}\n       {x441ec000 x44170000 x3eca328d}\n       {x441e0000 x44178000 x3eca328d}\n       {x441dc000 x4417c000 x3ecbb2ed}\n       {x441c8000 x4417c000 x3edf37ce}\n       {x441ac000 x44174000 x3eecbb2f}\n       {x44194000 x44164000 x3ef03c0f}\n       {x4415c000 x44140000 x3efbbef0}\n       {x44138000 x44120000 x3f022088}\n       {x440e8000 x440e8000 x3f0a6299}\n       {x44084000 x44090000 x3f1364d9}\n       {x44048000 x44060000 x3f17a5e9}\n       {x43fb0000 x43ff8000 x3f1ea7aa}\n       {x43f38000 x43f98000 x3f21685a}\n       {x43e50000 x43ed8000 x3f2729ca}\n       {x43d80000 x43e20000 x3f2baaeb}\n       {x43d20000 x43dd0000 x3f2ceb3b}\n       {x43c90000 x43d30000 x3f30ac2b}\n       {x43c40000 x43cf0000 x3f322c8b}\n       {x43bd0000 x43c70000 x3f336cdb}\n       {x43ba0000 x43c38000 x3f33aceb}\n       {x43b70000 x43c10000 x3f346d1b}\n       {x43b08000 x43bc0000 x3f35ad6b}\n       {x43af0000 x43bb0000 x3f35ad6b}\n       {x43ae0000 x43ba0000 x3f35ed7b}\n       {x43ad8000 x43b98000 x3f366d9b}\n       {x43ad0000 x43b90000 x3f366d9b}\n       {x43aa0000 x43b68000 x3f36adab}\n       {x43a48000 x43b20000 x3f366d9b}\n       {x43a20000 x43b08000 x3f366d9b}\n       {x439f0000 x43ad8000 x3f366d9b}\n       {x43910000 x43a28000 x3f35ed7b}\n       {x436b0000 x43900000 x3f35ad6b}\n       {x435c0000 x438b0000 x3f35ad6b}\n       {x432d0000 x437b0000 x3f34ed3b}\n       {x43260000 x43780000 x3f2d6b5b}\n       {x432a0000 x437d0000 x3f2aeabb}\n       {x434b0000 x438e0000 x3f26699a}\n       {x435a0000 x43950000 x3f25294a}\n       {x43900000 x43b70000 x3f1c671a}\n       {x43b38000 x43da8000 x3f19a66a}\n       {x43bb0000 x43e20000 x3f19665a}\n       {x43c20000 x43e98000 x3f19264a}\n       {x43d10000 x43f98000 x3f17a5e9}\n       {x43d58000 x44038000 x3f17e5f9}\n       {x43d58000 x44040000 x3f17e5f9}\n       {x43d58000 x44048000 x3f18260a}\n       {x43d20000 x44054000 x3f1c270a}\n       {x43d10000 x44054000 x3f1f27ca}\n       {x43ca0000 x44020000 x3f2368da}\n       {x43c58000 x43ff0000 x3f23a8ea}\n       {x43b98000 x43f10000 x3f25695a}\n       {x43b18000 x43e90000 x3f25695a}\n       {x439d0000 x43d40000 x3f26a9aa}\n       {x436a0000 x43ad8000 x3f2ceb3b}\n       {x434d0000 x439f0000 x3f2e6b9b}\n       {x42f00000 x436a0000 x3f312c4b}\n       {x42be0000 x434e0000 x3f31ac6b}\n       {xc0800000 x42e00000 x3f326c9b}\n       {xc2b40000 x42440000 x3f2f6bdb}\n       {xc2ce0000 x42240000 x3f2f6bdb}\n       {xc2f40000 x42080000 x3f2dab6b}\n       {xc2c20000 x429c0000 x3f25294a}\n       {xc2a80000 x42c00000 x3f22a8aa}\n       {xc2400000 x43060000 x3f1f27ca}\n       {xc1d00000 x431d0000 x3f1ea7aa}\n       {x41b80000 x434b0000 x3f1e278a}\n       {x42440000 x43630000 x3f1da76a}\n       {x43060000 x43960000 x3f1da76a}\n       {x43660000 x43b98000 x3f1d675a}\n       {x43a18000 x43d70000 x3f1ba6ea}\n       {x43cb8000 x43f20000 x3f19665a}\n       {x43d20000 x43f60000 x3f18260a}\n       {x43e10000 x44010000 x3f1725c9}\n       {x43e18000 x4403c000 x3f1725c9}\n       {x43e18000 x44044000 x3f1725c9}\n       {x43e18000 x44050000 x3f1725c9}\n       {x43e10000 x44054000 x3f1725c9}\n       {x43db8000 x4402c000 x3f18661a}\n       {x43d78000 x44000000 x3f18a62a}\n       {x43c98000 x43f10000 x3f1a669a}\n       {x43c08000 x43e78000 x3f1ba6ea}\n       {x43ab0000 x43d10000 x3f1fa7ea}\n       {x439e0000 x43c40000 x3f2368da}\n       {x438f8000 x43b78000 x3f26a9aa}\n       {x43600000 x439e0000 x3f2c6b1b}\n       {x43400000 x43908000 x3f2dab6b}\n       {x42ce0000 x435c0000 x3f2f6bdb}\n       {x429c0000 x43480000 x3f2f6bdb}\n       {x41400000 x43180000 x3f302c0b}\n       {xc1e00000 x42fa0000 x3f312c4b}\n       {xc1f00000 x42f80000 x3f312c4b}\n       {xc1980000 x43000000 x3f1ae6ba}\n       {x41880000 x43260000 x3f0d2349}\n       {x41f80000 x43340000 x3f0be2f9}\n       {x42840000 x43560000 x3f0ba2e9}\n       {x42aa0000 x43680000 x3f0ba2e9}\n       {x43110000 x43928000 x3f0be2f9}\n       {x43280000 x439d0000 x3f0be2f9}\n       {x437a0000 x43c00000 x3f0b22c9}\n       {x438a8000 x43cc0000 x3f082209}\n       {x43bc0000 x43f08000 x3efa3e90}\n       {x43d78000 x4402c000 x3ef7bdef}\n       {x43db0000 x44044000 x3ef7bdef}\n       {x43e00000 x44074000 x3ef7bdef}\n       {x43e00000 x44080000 x3ef83e10}\n       {x43e00000 x44084000 x3ef8be30}\n       {x43df0000 x4408c000 x3f0360d8}\n       {x43db8000 x44084000 x3f0ee3b9}\n       {x43d58000 x44054000 x3f10e439}\n       {x43d18000 x44028000 x3f13e4f9}\n       {x43c60000 x43f70000 x3f19665a}\n       {x43be0000 x43ee0000 x3f1be6fa}\n       {x43ab0000 x43da8000 x3f21685a}\n       {x439f0000 x43cf0000 x3f23e8fa}\n       {x436c0000 x43a90000 x3f2a6a9b}\n       {x43330000 x438f0000 x3f2beafb}\n       {x43170000 x43820000 x3f2beafb}\n       {x42820000 x432e0000 x3f286a1b}\n       {x42440000 x431e0000 x3f2769da}\n       {x41800000 x42fc0000 x3f26e9ba}\n       {x41c80000 x43020000 x3f162589}\n       {x42000000 x43090000 x3f11e479}\n       {x42700000 x432e0000 x3f0f63d9}\n       {x42900000 x433f0000 x3f0e6399}\n       {x42aa0000 x43510000 x3f0c6319}\n       {x42fc0000 x43860000 x3f0aa2a9}\n       {x430b0000 x438f8000 x3f09a269}\n       {x43360000 x43ae0000 x3f046118}\n       {x43460000 x43b80000 x3efdbf70}\n       {x43820000 x43dc0000 x3ed735cd}\n       {x43988000 x43f40000 x3eceb3ad}\n       {x439c0000 x43f90000 x3ece338d}\n       {x439f8000 x43fd0000 x3ecd334d}\n       {x43a58000 x44038000 x3ecd334d}\n       {x43a70000 x44048000 x3ecd334d}\n       {x43a90000 x44074000 x3ecdb36d}\n       {x43aa0000 x44084000 x3ed0340d}\n       {x43ac0000 x440b0000 x3eda368e}\n       {x43ac0000 x440b8000 x3ee2388e}\n       {x43ac0000 x440bc000 x3ee8ba2f}\n       {x43ab8000 x440b0000 x3f0ea3a9}\n       {x43a70000 x44078000 x3f126499}\n       {x43a40000 x44050000 x3f152549}\n       {x439f0000 x44024000 x3f19665a}\n       {x43938000 x43f70000 x3f1f67da}\n       {x438c8000 x43f00000 x3f21284a}\n       {x437c0000 x43e30000 x3f23e8fa}\n       {x436f0000 x43dd0000 x3f24a92a}\n       {x434c0000 x43c98000 x3f26298a}\n       {x43270000 x43b30000 x3f26298a}\n       {x431a0000 x43ab8000 x3f25a96a}\n       {x42d80000 x43970000 x3f2368da}\n       {x42280000 x43838000 x3f23a8ea}\n       {xc1000000 x43750000 x3f23e8fa}\n       {xc1880000 x43750000 x3f23a8ea}\n       {xc1b00000 x43770000 x3f22288a}\n       {xc1c80000 x437c0000 x3f18e63a}\n       {xc1980000 x438e0000 x3f112449}\n       {x41200000 x43a50000 x3f022088}\n       {x41b00000 x43ad0000 x3efa3e90}\n       {x42740000 x43c50000 x3ee4b92e}\n       {x42d00000 x43db8000 x3edab6ae}\n       {x431a0000 x43f30000 x3ed9364e}\n       {x43230000 x43f80000 x3ed9364e}\n       {x432a0000 x43fc0000 x3ed9b66e}\n       {x43380000 x44030000 x3eddb76e}\n       {x43390000 x44044000 x3ee0b82e}\n       {x43360000 x4406c000 x3efcbf30}\n       {x43340000 x44070000 x3f042108}\n       {x43290000 x44070000 x3f1725c9}\n       {x43240000 x44068000 x3f1b26ca}\n       {x431e0000 x44054000 x3f1de77a}\n       {x43100000 x4400c000 x3f24a92a}\n       {x43050000 x43fb8000 x3f26e9ba}\n       {x42da0000 x43ed0000 x3f2a2a8b}\n       {x42be0000 x43e50000 x3f2aaaab}\n       {x42380000 x43ce0000 x3f2beafb}\n       {x41000000 x43bf8000 x3f2cab2b}\n       {xc1200000 x43b90000 x3f2d6b5b}\n       {xc1e80000 x43b30000 x3f2d6b5b}\n       {xc29c0000 x43a58000 x3f2d6b5b}\n       {xc2c80000 x43a10000 x3f2cab2b}\n       {xc2ca0000 x43a10000 x3f2b2acb}\n       {xc2c20000 x43a70000 x3f26699a}\n       {xc2b40000 x43ab8000 x3f21a86a}\n       {xc2820000 x43b98000 x3f1da76a}\n       {xc2400000 x43c10000 x3f1a669a}\n       {xc1000000 x43d28000 x3f112449}\n       {x41500000 x43db8000 x3f0ea3a9}\n       {x420c0000 x43e40000 x3f0da369}\n       {x42be0000 x43fb0000 x3f0a6299}\n       {x43080000 x44050000 x3f092249}\n       {x43180000 x4408c000 x3f092249}\n       {x431a0000 x44098000 x3f092249}\n       {x43110000 x44074000 x3f21a86a}\n       {x43090000 x44054000 x3f22a8aa}\n       {x42ca0000 x43f70000 x3f26a9aa}\n       {x42880000 x43e80000 x3f27e9fa}\n       {x42500000 x43e00000 x3f28ea3b}\n       {xc0e00000 x43c60000 x3f29aa6b}\n       {xc2820000 x43ad8000 x3f296a5b}\n       {xc2cc0000 x439c8000 x3f27e9fa}\n       {xc2f80000 x43920000 x3f2729ca}\n       {xc2f80000 x43910000 x3f26699a}\n       {xc2ec0000 x43930000 x3f18a62a}\n       {xc2d80000 x43988000 x3f15e579}\n       {xc2ca0000 x439c8000 x3f156559}\n       {xc29e0000 x43a88000 x3f156559}\n       {xc2820000 x43b00000 x3f156559}\n       {xc1500000 x43c70000 x3f156559}\n       {x41c00000 x43d78000 x3f14e539}\n       {x422c0000 x43df0000 x3f14a529}\n       {x42740000 x43e68000 x3f14a529}\n       {x42c00000 x43f40000 x3f13a4e9}\n       {x42e00000 x43fa0000 x3f1364d9}\n       {x42fc0000 x44000000 x3f12a4a9}\n       {x43240000 x44080000 x3f102409}\n       {x43460000 x440d4000 x3f0f63d9}\n       {x434d0000 x440e8000 x3f0f63d9}\n       {x43580000 x44100000 x3f0f23c9}\n       {x435a0000 x44108000 x3f0ee3b9}\n       {x435c0000 x44108000 x3f0f23c9}\n       {x43570000 x440e8000 x3f12e4b9}\n       {x43470000 x440a0000 x3f166599}\n       {x433c0000 x44070000 x3f17a5e9}\n       {x43320000 x44040000 x3f18a62a}\n       {x43170000 x43fa0000 x3f1a669a}\n       {x43090000 x43f28000 x3f1ae6ba}\n       {x42c80000 x43e00000 x3f1ae6ba}\n       {x429c0000 x43d58000 x3f1ae6ba}\n       {x42580000 x43cb0000 x3f19a66a}\n       {xc1c00000 x43ab0000 x3f18a62a}\n       {xc2c40000 x438e0000 x3f19665a}\n       {xc3150000 x436f0000 x3f1ae6ba}\n       {xc3200000 x43630000 x3f1b66da}\n       {xc32f0000 x434a0000 x3f1be6fa}\n       {xc32c0000 x43450000 x3f1324c9}\n       {xc3240000 x43450000 x3f0b22c9}\n       {xc3200000 x43450000 x3f092249}\n       {xc31d0000 x43460000 x3f0721c8}\n       {xc3160000 x434c0000 x3f04a128}\n       {xc3140000 x43520000 x3f04a128}\n       {xc30a0000 x43620000 x3f05e178}\n       {xc3040000 x436c0000 x3f066198}\n       {xc2fa0000 x43780000 x3f07a1e8}\n       {xc2d60000 x43890000 x3f0a2289}\n       {xc2c00000 x43900000 x3f0a6299}\n       {xc2580000 x43a80000 x3f0ae2b9}\n       {x40000000 x43c30000 x3f0aa2a9}\n       {x42280000 x43d40000 x3f0aa2a9}\n       {x42740000 x43db0000 x3f0a6299}\n       {x429e0000 x43e20000 x3f0a6299}\n       {x42e20000 x43ef0000 x3f0a6299}\n       {x43000000 x43f50000 x3f0a6299}\n       {x430f0000 x43fa0000 x3f0a6299}\n       {x43360000 x44040000 x3f0aa2a9}\n       {x43420000 x44060000 x3f0a6299}\n       {x434d0000 x44084000 x3f0a6299}\n       {x43600000 x440b8000 x3f09e279}\n       {x43690000 x440d0000 x3f096259}\n       {x437d0000 x44104000 x3f092249}\n       {x43848000 x4411c000 x3f08a229}\n       {x43860000 x4411c000 x3f08a229}\n       {x43860000 x44110000 x3f0aa2a9}\n       {x43838000 x440f8000 x3f0c6319}\n       {x43808000 x440d0000 x3f0f23c9}\n       {x436a0000 x44070000 x3f13a4e9}\n       {x435c0000 x44038000 x3f156559}\n       {x43210000 x43ec0000 x3f1a268a}\n       {x42e60000 x43d58000 x3f1ba6ea}\n       {x42b40000 x43c90000 x3f1ba6ea}\n       {x41600000 x43a40000 x3f1c270a}\n       {xc1000000 x43988000 x3f1ce73a}\n       {xc2880000 x43720000 x3f1ce73a}\n       {xc2a60000 x43600000 x3f1ce73a}\n       {xc2e80000 x43320000 x3f1aa6aa}\n       {xc2fa0000 x43240000 x3f1a268a}\n       {xc30c0000 x43060000 x3f19665a}\n       {xc30f0000 x43000000 x3f18e63a}\n       {xc3120000 x42ee0000 x3f1765d9}\n       {xc3120000 x42e80000 x3f126499}\n       {xc3110000 x42ec0000 x3f0b22c9}\n       {xc30e0000 x42f00000 x3f09e279}\n       {xc30b0000 x42f40000 x3f09a269}\n       {xc3080000 x42fc0000 x3f09a269}\n       {xc3000000 x43090000 x3f0ae2b9}\n       {xc2f80000 x43100000 x3f0b62d9}\n       {xc2ec0000 x43180000 x3f0c6319}\n       {xc2b60000 x43390000 x3f0e2389}\n       {xc2820000 x43540000 x3f0f63d9}\n       {xc2400000 x43640000 x3f102409}\n       {xc1f00000 x43750000 x3f112449}\n       {x41400000 x438d8000 x3f122489}\n       {x42080000 x43980000 x3f122489}\n       {x42600000 x43a28000 x3f122489}\n       {x42f20000 x43c10000 x3f112449}\n       {x430e0000 x43cb0000 x3f10a429}\n       {x43460000 x43e30000 x3f0ea3a9}\n       {x43580000 x43ea0000 x3f0de379}\n       {x43850000 x43fc8000 x3f0c6319}\n       {x438d8000 x44010000 x3f0c6319}\n       {x43958000 x44038000 x3f0ba2e9}\n       {x43a88000 x44098000 x3f092249}\n       {x43b50000 x440d0000 x3f062188}\n       {x43bd8000 x440ec000 x3f016058}\n       {x43c28000 x440fc000 x3efdbf70}\n       {x43c20000 x440f0000 x3efa3e90}\n       {x43bc0000 x440c0000 x3f002008}\n       {x43af0000 x44044000 x3f056158}\n       {x43988000 x43ef0000 x3f09a269}\n       {x436c0000 x43cc0000 x3f0be2f9}\n       {x431e0000 x43a48000 x3f0b22c9}\n       {x42a60000 x43720000 x3f0b62d9}\n       {x426c0000 x43560000 x3f0b62d9}\n       {xc1200000 x43040000 x3f0c6319}\n       {xc1e80000 x42d80000 x3f0ca329}\n       {xc2380000 x42b00000 x3f0da369}\n       {xc2a00000 x420c0000 x3f0da369}\n       {xc2b80000 xbf800000 x3f0de379}\n       {xc2bc0000 xc1200000 x3f0ca329}\n       {xc2bc0000 xc1c80000 x3f096259}\n       {xc2a80000 xc1e00000 x3f002008}\n       {xc2800000 xc1200000 x3eefbbef}\n       {xc1f00000 x42080000 x3ef33ccf}\n       {x41900000 x42bc0000 x3ef6bdaf}\n       {x42a60000 x43230000 x3efabeb0}\n       {x43240000 x43680000 x3efcbf30}\n       {x43820000 x43930000 x3f002008}\n       {x43910000 x439c8000 x3f002008}\n       {x439f0000 x43a58000 x3effbff0}\n       {x43ca0000 x43c58000 x3efe3f90}\n       {x43e10000 x43d70000 x3efbbef0}\n       {x43e60000 x43db0000 x3efa3e90}\n       {x43e98000 x43de8000 x3ef8be30}\n       {x43ed0000 x43e40000 x3efa3e90}\n       {x43ed0000 x43e48000 x3eff3fd0}\n       {x43ea8000 x43e30000 x3f0f23c9}\n       {x43e78000 x43e08000 x3f102409}\n       {x43cd0000 x43c60000 x3f18661a}\n       {x43af0000 x43aa8000 x3f1f67da}\n       {x43a30000 x43a00000 x3f21a86a}\n       {x43590000 x43650000 x3f2729ca}\n       {x42fc0000 x43090000 x3f28aa2b}\n       {x42dc0000 x42ec0000 x3f28ea3b}\n       {x42920000 x42740000 x3f29ea7b}\n       {x426c0000 x41d00000 x3f26e9ba}\n       {x42500000 x41300000 x3f1de77a}\n       {x42500000 x41400000 x3f05a168}\n       {x42500000 x41800000 x3f04a128}\n       {x42700000 x42180000 x3f04e138}\n       {x42820000 x42440000 x3f04e138}\n       {x428e0000 x42700000 x3f04e138}\n       {x42c40000 x42c20000 x3f05a168}\n       {x43180000 x431b0000 x3f082209}\n       {x432a0000 x432a0000 x3f086219}\n       {x43800000 x43710000 x3f09a269}\n       {x43ae8000 x439f0000 x3f092249}\n       {x43b98000 x43a80000 x3f086219}\n       {x43de0000 x43c60000 x3f02a0a8}\n       {x43f70000 x43dc0000 x3efcbf30}\n       {x44060000 x43ec0000 x3efb3ed0}\n       {x44084000 x43ef0000 x3efabeb0}\n       {x440a0000 x43f20000 x3efabeb0}\n       {x440ec000 x43fd0000 x3ef83e10}\n       {x440ec000 x43fe0000 x3ef6bdaf}\n       {x440d0000 x43fe8000 x3ef63d8f}\n       {x4405c000 x43f60000 x3ef7bdef}\n       {x44020000 x43f10000 x3ef8be30}\n       {x43e68000 x43d90000 x3f002008}\n       {x43bf8000 x43b80000 x3f022088}\n       {x43970000 x43938000 x3f06a1a8}\n       {x43400000 x43400000 x3f082209}\n       {x43260000 x43280000 x3f086219}\n       {x429c0000 x42b00000 x3f092249}\n       {x42700000 x42920000 x3f096259}\n       {x41880000 x42140000 x3f09e279}\n       {x40c00000 x41e00000 x3f0a6299}\n       {xc1c00000 xc0a00000 x3f0aa2a9}\n       {xc2080000 xc1a00000 x3f0a6299}\n       {xc20c0000 xc1c00000 x3f0a2289}\n       {xc2200000 xc1f00000 x3f08a229}\n       {xc2240000 xc1f80000 x3f086219}\n       {xc23c0000 xc2000000 x3f07e1f8}\n       {xc23c0000 xc1b00000 x3f06a1a8}\n       {xc2300000 xc1800000 x3f06a1a8}\n       {xc1f80000 0 x3f066198}\n       {xc1b80000 x41000000 x3f066198}\n       {xc1500000 x41800000 x3f066198}\n       {x41a00000 x42200000 x3f06a1a8}\n       {x42000000 x42440000 x3f06a1a8}\n       {x42740000 x42880000 x3f0761d8}\n       {x42980000 x429c0000 x3f07a1e8}\n       {x42b40000 x42b20000 x3f07a1e8}\n       {x43000000 x42f00000 x3f082209}\n       {x430b0000 x43000000 x3f082209}\n       {x43270000 x43170000 x3f086219}\n       {x432e0000 x431d0000 x3f086219}\n       {x43390000 x43220000 x3f086219}\n       {x432a0000 x43110000 x3f0f63d9}\n       {x42fc0000 x42da0000 x3f10a429}\n       {x42e20000 x42c40000 x3f112449}\n       {x42c20000 x42b20000 x3f112449}\n       {x42540000 x42580000 x3f11e479}\n       {x42180000 x422c0000 x3f11e479}\n       {x40c00000 x41800000 x3f126499}\n       {1 x41300000 x3f126499}\n       {x41000000 x41880000 x3f10a429}\n       {x426c0000 x42800000 x3f10e439}\n       {x42940000 x429e0000 x3f10e439}\n       {x42fa0000 x43060000 x3f10e439}\n       {x430f0000 x431b0000 x3f10e439}\n       {x43220000 x43320000 x3f10e439}\n       {x43640000 x43780000 x3f10e439}\n       {x437b0000 x43880000 x3f106419}\n       {x439c8000 x43a88000 x3f0f63d9}\n       {x43a50000 x43b20000 x3f0f63d9}\n       {x43ad0000 x43bb0000 x3f0f23c9}\n       {x43c30000 x43d78000 x3f0f63d9}\n       {x43d00000 x43e70000 x3f0fa3e9}\n       {x43d50000 x43ec0000 x3f0fa3e9}\n       {x43d90000 x43f00000 x3f0fe3f9}\n       {x43e60000 x43fe0000 x3f0fa3e9}\n       {x43e98000 x44010000 x3f0fa3e9}\n       {x43f20000 x44074000 x3f0f63d9}\n       {x43f50000 x44098000 x3f0f63d9}\n       {x4400c000 x44128000 x3f07e1f8}\n       {x44060000 x44198000 x3ef9be70}\n       {x44070000 x441ac000 x3ef5bd6f}\n       {x44084000 x441d4000 x3eefbbef}\n       {x44090000 x441e0000 x3eee3b8f}\n       {x44098000 x441e8000 x3eee3b8f}\n       {x440a0000 x441e8000 x3ee9ba6f}\n       {x440a0000 x441c0000 x3eea3a8f}\n       {x44090000 x441a0000 x3ef6bdaf}\n       {x44028000 x440f0000 x3f16a5a9}\n       {x43f30000 x4402c000 x3f25695a}\n       {x43ed0000 x43fd0000 x3f27e9fa}\n       {x43db0000 x43e18000 x3f2dab6b}\n       {x43cf0000 x43c80000 x3f2fabeb}\n       {x43c90000 x43b20000 x3f2f2bcb}\n       {x43c80000 x43ab0000 x3f2f2bcb}\n       {x43c60000 x43a48000 x3f2eabab}\n       {x43be0000 x438c0000 x3f2beafb}\n       {x43b78000 x43770000 x3f2729ca}\n       {x43b50000 x436e0000 x3f24290a}\n       {x43ab8000 x43460000 x3f152549}\n       {x43a90000 x433b0000 x3f1324c9}\n       {x43a80000 x43330000 x3f11e479}\n       {x43a80000 x43210000 x3f10a429}\n       {x43a90000 x431d0000 x3f10a429}\n       {x43ab0000 x431c0000 x3f0ee3b9}\n       {x43b30000 x431b0000 x3efebfb0}\n       {x43b68000 x431e0000 x3ef7bdef}\n       {x43c58000 x43350000 x3ef53d4f}\n       {x43cc8000 x43400000 x3ef7bdef}\n       {x43e60000 x436a0000 x3efb3ed0}\n       {x43ef0000 x437a0000 x3efb3ed0}\n       {x43f70000 x43848000 x3efbbef0}\n       {x44084000 x439b8000 x3efb3ed0}\n       {x440c0000 x43a28000 x3ef9be70}\n       {x44188000 x43b78000 x3ef33ccf}\n       {x441d8000 x43bc8000 x3ef3bcef}\n       {x441c4000 x43b20000 x3f0b62d9}\n       {x441a4000 x43ab8000 x3f102409}\n       {x44114000 x43938000 x3f21685a}\n       {x4403c000 x436f0000 x3f25294a}\n       {x43fd0000 x435a0000 x3f26a9aa}\n       {x43de0000 x431a0000 x3f286a1b}\n       {x43d40000 x43040000 x3f28aa2b}\n       {x43b90000 x428c0000 x3f282a0b}\n       {x43b10000 x42480000 x3f27a9ea}\n       {x43a90000 x42000000 x3f26a9aa}\n       {x43970000 xc1600000 x3f2328ca}\n       {x43938000 xc1c80000 x3f22e8ba}\n       {x43910000 xc2000000 x3f22689a}\n       {x43900000 xc2300000 x3f21284a}\n       {x43920000 xc2380000 x3f19264a}\n       {x43940000 xc23c0000 x3f0da369}\n       {x439c8000 xc2300000 x3ee6398e}\n       {x43a00000 xc2280000 x3ed7b5ed}\n       {x43a88000 xc1e80000 x3eb5ad6b}\n       {x43ab0000 xc1c00000 x3eaeabab}\n       {x43b20000 xc0e00000 x3ea2288a}\n       {x43b48000 xbf800000 x3e99264a}\n       {x43bf8000 x41400000 x3e9324c9}\n       {x43c30000 x41880000 x3e842108}\n       {x43c80000 x41a00000 0}}}\n     {tx x429e0000 x438fbc93 x43916406}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c20000 x43080000 1}\n       {x43c70000 x431c0000 x3c102409}}}\n     {tx x429e0000 x43c48000 x43120000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e20000 x43460000 1}\n       {x43de8000 x433f0000 x3ec8b22d}\n       {x43da0000 x43360000 x3ec8b22d}\n       {x43d50000 x432d0000 x3ec8b22d}\n       {x43ca0000 x43170000 x3ed735cd}\n       {x43c40000 x430b0000 x3ee4390e}\n       {x43bd8000 x42fc0000 x3ee9ba6f}\n       {x43b70000 x42e20000 x3eed3b4f}\n       {x43a78000 x42a40000 x3ef83e10}\n       {x439f0000 x42840000 x3f002008}\n       {x43960000 x42440000 x3f02e0b8}\n       {x437e0000 x40c00000 x3f0d6359}\n       {x43650000 xc1c80000 x3f10a429}\n       {x43630000 xc1e80000 x3f10e439}\n       {x43630000 xc2000000 x3f10e439}\n       {x43630000 xc2200000 x3f0ae2b9}\n       {x43680000 xc22c0000 x3ee9ba6f}\n       {x43690000 xc22c0000 x3edbb6ee}\n       {x436e0000 xc2240000 x3ebe2f8c}\n       {x43760000 xc2080000 x3eb3aceb}\n       {x43818000 xc1a00000 x3eae2b8b}\n       {x43860000 xc1500000 x3eab2acb}\n       {x438a0000 xc0800000 x3ea9aa6b}\n       {x438f0000 x40a00000 x3ea9aa6b}\n       {x43c38000 x42f40000 x3eb02c0b}\n       {x43c88000 x43000000 x3eb12c4b}\n       {x43cc8000 x43050000 x3eb12c4b}\n       {x43d00000 x43090000 x3eb2acab}\n       {x43d40000 x430a0000 x3eb42d0b}\n       {x43d30000 x43030000 x3eb82e0c}\n       {x43c58000 x42ce0000 x3ed4b52d}\n       {x43bf8000 x42b40000 x3ee0380e}\n       {x43a18000 x41c80000 x3efe3f90}\n       {x43860000 xc20c0000 x3f0761d8}\n       {x43818000 xc2300000 x3f086219}\n       {x437d0000 xc26c0000 x3f092249}\n       {x43820000 xc26c0000 x3f07a1e8}\n       {x43870000 xc2580000 x3f01a068}\n       {x439e8000 xc1a00000 x3ee4b92e}\n       {x43b00000 x41400000 x3eddb76e}\n       {x43b80000 x41f00000 x3eda368e}\n       {x43c00000 x42400000 x3ed2b4ad}\n       {x43c70000 x42840000 x3eca328d}\n       {x43ce8000 x42a60000 x3ec5314c}\n       {x43e38000 x43000000 x3ec3b0ec}\n       {x43ea0000 x430c0000 x3ec2b0ac}\n       {x43f38000 x43200000 x3ec6318c}\n       {x43f40000 x43220000 x3ec9b26d}\n       {x43f40000 x43230000 x3ed2b4ad}\n       {x43f10000 x431c0000 x3f09a269}\n       {x43e20000 x42e80000 x3f0d2349}\n       {x43db8000 x42ce0000 x3f0da369}\n       {x43d50000 x42b00000 x3f0da369}\n       {x43ce0000 x428e0000 x3f0da369}\n       {x43c00000 x42100000 x3f0de379}\n       {x43a90000 xc1e00000 x3f0e6399}\n       {x43a60000 xc2240000 x3f0e6399}\n       {x43a30000 xc2880000 x3f0ee3b9}\n       {x43a30000 xc2940000 x3f0e2389}\n       {x43a50000 xc29a0000 x3f0ae2b9}\n       {x43ac0000 xc2940000 x3ec6b1ac}\n       {x43af0000 xc28c0000 x3eac2b0b}\n       {x43b18000 xc2800000 x3e94a529}\n       {x43b40000 xc2600000 x3e82a0a8}\n       {x43b70000 xc23c0000 x3e82a0a8}\n       {x43ba0000 xc2180000 x3e86a1a8}\n       {x43bd0000 xc1e00000 x3e8b22c9}\n       {x43c00000 xc1880000 x3e8fa3e9}\n       {x43c30000 xc0a00000 x3e94a529}\n       {x43c68000 x41200000 x3e9a268a}\n       {x43cb0000 x41c00000 x3e9f27ca}\n       {x43d00000 x42180000 x3ea328ca}\n       {x43d58000 x42500000 x3ea6298a}\n       {x43ed0000 x42b00000 x3eb5ad6b}\n       {x43f40000 x42b20000 x3ec6318c}\n       {x43f40000 x42a60000 x3edab6ae}\n       {x43e98000 x42540000 x3ef7bdef}\n       {x43e40000 x42200000 x3efabeb0}\n       {x43dd8000 x41d00000 x3efcbf30}\n       {x43c68000 xc1a00000 x3f01a068}\n       {x43bf8000 xc20c0000 x3f02e0b8}\n       {x43b00000 xc2920000 x3f0da369}\n       {x43ad8000 xc2a00000 x3f126499}\n       {x43b10000 xc2b20000 x3f152549}\n       {x43b98000 xc2a00000 x3f0f23c9}\n       {x43bf0000 xc2920000 x3f0b62d9}\n       {x43c40000 xc2820000 x3f07e1f8}\n       {x43ca0000 xc2580000 x3f0360d8}\n       {x43d58000 xc1f80000 x3efabeb0}\n       {x43e18000 xc0e00000 x3ef83e10}\n       {x43eb0000 x41900000 x3ef7bdef}\n       {x43ef0000 x41f80000 x3ef7bdef}\n       {x43f28000 x42300000 x3ef7bdef}\n       {x43f60000 x42680000 x3ef7bdef}\n       {x43f98000 x428e0000 x3ef6bdaf}\n       {x44000000 x42c00000 x3ef7bdef}\n       {x44024000 x42d60000 x3ef7bdef}\n       {x44040000 x42e80000 x3ef7bdef}\n       {x4408c000 x430a0000 x3ef83e10}\n       {x440a0000 x430f0000 x3ef83e10}\n       {x440d0000 x431b0000 x3ef8be30}\n       {x440d8000 x431d0000 x3ef9be70}\n       {x440e0000 x43200000 x3ef9be70}\n       {x440e4000 x43210000 x3ef9be70}\n       {x440d8000 x431c0000 x3f02a0a8}\n       {x440c8000 x43160000 x3f02a0a8}\n       {x44090000 x43040000 x3f02a0a8}\n       {x44048000 x42da0000 x3f03a0e8}\n       {x44024000 x42c00000 x3f05a168}\n       {x43ff8000 x42a60000 x3f062188}\n       {x43fb0000 x428c0000 x3f06e1b8}\n       {x43f60000 x425c0000 x3f0761d8}\n       {x43f10000 x42240000 x3f0761d8}\n       {x43ec8000 x41e00000 x3f07e1f8}\n       {x43e78000 x41600000 x3f07e1f8}\n       {x43d70000 xc1e80000 x3f07e1f8}\n       {x43d00000 xc2540000 x3f06e1b8}\n       {x43d00000 xc2600000 x3f06a1a8}\n       {x43d10000 xc2680000 x3ee7b9ee}\n       {x43d20000 xc2600000 x3ed5354d}\n       {x43d30000 xc2540000 x3ed1344d}\n       {x43d90000 xc20c0000 x3eceb3ad}\n       {x43dc0000 xc1d00000 x3ece338d}\n       {x43df0000 xc1880000 x3ece338d}\n       {x43e38000 xc0e00000 x3eceb3ad}\n       {x43e70000 x40800000 x3ed1344d}\n       {x43eb0000 x41800000 x3ed2348d}\n       {x43ef8000 x41e00000 x3ed3b4ed}\n       {x43fd0000 x42740000 x3ed9b66e}\n       {x44010000 x428e0000 x3ed9b66e}\n       {x44070000 x42b40000 x3edab6ae}\n       {x44080000 x42b80000 x3eda368e}\n       {x44088000 x42bc0000 x3eda368e}\n       {x44080000 x42b20000 x3efa3e90}\n       {x44008000 x42600000 x3efebfb0}\n       {x43fb8000 x42380000 x3effbff0}\n       {x43ef8000 x41b00000 x3f006018}\n       {x43e38000 xc0000000 x3f046118}\n       {x43d78000 xc20c0000 x3f126499}\n       {x43d70000 xc2200000 x3f1324c9}\n       {x43d70000 xc2280000 x3f1324c9}\n       {x43d90000 xc22c0000 x3f10e439}\n       {x43db0000 xc22c0000 x3f086219}\n       {x43dd0000 xc2280000 x3efb3ed0}\n       {x43e38000 xc1f00000 x3ed6b5ad}\n       {x43e60000 xc1c80000 x3ed5354d}\n       {x43e80000 xc1900000 x3ed1b46d}\n       {x43ea8000 xc1300000 x3ed0340d}\n       {x43ed0000 xc0000000 x3eceb3ad}\n       {x43ef8000 x40e00000 x3ece338d}\n       {x43f20000 x41880000 x3ecdb36d}\n       {x43f58000 x41d00000 x3ecdb36d}\n       {x43f88000 x420c0000 x3ecdb36d}\n       {x44010000 x42600000 x3ece338d}\n       {x44028000 x42740000 x3ece338d}\n       {x44044000 x42860000 x3ece338d}\n       {x44020000 x42740000 x3ee5b96e}\n       {x44008000 x425c0000 x3ee83a0f}\n       {x43fd0000 x42440000 x3eeb3acf}\n       {x43f90000 x42280000 x3eeebbaf}\n       {x43f00000 x41c00000 x3ef3bcef}\n       {x43da8000 xc1300000 x3efc3f10}\n       {x43d58000 xc1880000 x3effbff0}\n       {x43ce0000 xc1e80000 x3f016058}\n       {x43d20000 xc1000000 x3eea3a8f}\n       {x43d80000 x41880000 x3ed6b5ad}\n       {x43db8000 x42000000 x3ec1b06c}\n       {x43df0000 x42400000 x3ea2288a}\n       {x43e38000 x42840000 x3e85a168}\n       {x43f58000 x430b0000 x3e40300c}\n       {x44014000 x43470000 x3e842108}\n       {x44024000 x43510000 x3e8ca329}\n       {x4402c000 x43590000 x3e97a5e9}\n       {x44030000 x43640000 x3eb92e4c}\n       {x44030000 x43660000 x3ec6318c}\n       {x44030000 x43680000 x3ed3b4ed}\n       {x44014000 x435e0000 x3ef6bdaf}\n       {x43ff0000 x43530000 x3ef83e10}\n       {x43fa0000 x43460000 x3ef93e50}\n       {x43f30000 x43350000 x3efa3e90}\n       {x43eb0000 x43240000 x3efa3e90}\n       {x43e30000 x43120000 x3efbbef0}\n       {x43da8000 x43020000 x3efbbef0}\n       {x43c10000 x429c0000 x3efc3f10}\n       {x43b80000 x42740000 x3efdbf70}\n       {x43a00000 x41600000 x3f012048}\n       {x43998000 1 x3f022088}\n       {x43958000 xc1000000 x3f02e0b8}\n       {x43908000 xc1b00000 x3f03a0e8}\n       {x43970000 xc1200000 x3ebcaf2c}\n       {x439b0000 0 x3e9da76a}\n       {x43a28000 x41d00000 0}}}\n     {tx x429e0000 x43d3feab x422fe555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43dd0000 x43500000 1}\n       {x43d78000 x43440000 x3ea328ca}\n       {x43d20000 x43350000 x3e9324c9}\n       {x43c58000 x43150000 x3e9aa6aa}\n       {x43be0000 x43020000 x3ea5294a}\n       {x43b68000 x42dc0000 x3eadab6b}\n       {x43a48000 x428c0000 x3eb5ad6b}\n       {x43908000 x41e00000 x3ebcaf2c}\n       {x43530000 xc2540000 x3ec5314c}\n       {x43420000 xc28c0000 x3ec5314c}\n       {x43240000 xc2dc0000 x3e9ba6ea}}}\n     {tx x429e0000 x43a48ba3 x42988ba3}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43ed0000 x43660000 1}\n       {x43e98000 x43600000 x3eeb3acf}\n       {x43e40000 x43500000 x3ed2348d}\n       {x43e08000 x43450000 x3ed3b4ed}\n       {x43d80000 x432c0000 x3edbb6ee}\n       {x43cd0000 x430f0000 x3ee1384e}\n       {x43c70000 x42fe0000 x3ee2388e}\n       {x43c08000 x42dc0000 x3ee2388e}\n       {x43a78000 x42580000 x3ee3b8ee}\n       {x439f0000 x42100000 x3ee4390e}\n       {x43870000 xc1600000 x3ee4b92e}\n       {x43818000 xc1d00000 x3ee2b8ae}\n       {x437d0000 xc20c0000 x3ed9b66e}\n       {x437b0000 xc22c0000 0}}}\n     {tx x429e0000 x43b82db7 x42c59249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43e98000 x434d0000 1}\n       {x43e38000 x43450000 x3ed2348d}\n       {x43dd8000 x433b0000 x3ed2348d}\n       {x43d20000 x43260000 x3ed0340d}\n       {x43cc8000 x431a0000 x3ed4b52d}\n       {x43c70000 x430b0000 x3eda368e}\n       {x43c20000 x42f80000 x3ee0380e}\n       {x43ae0000 x42900000 x3ee7b9ee}\n       {x43a60000 x42580000 x3ee7b9ee}\n       {x43928000 x40a00000 x3ee5b96e}\n       {x438e0000 xc0e00000 x3ee4390e}\n       {x438b0000 xc1800000 x3edeb7ae}\n       {x438c0000 xc1c00000 x3d44310c}}}\n     {tx x429e0000 x43b86c4f x42c13b14}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f58000 x42600000 1}\n       {x43f08000 x42480000 x3e97a5e9}\n       {x43e60000 x42100000 x3e97a5e9}\n       {x43e00000 x41e80000 x3e97a5e9}\n       {x43d48000 x41800000 x3e91a469}\n       {x43d00000 x41200000 x3e912449}\n       {x43cb0000 x40800000 x3e90a429}\n       {x43cb0000 x40c00000 0}}}\n     {tx x429e0000 x43dcd000 x41cf0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f60000 x42180000 x3e723c8f}\n       {x43f38000 x420c0000 1}\n       {x43f10000 x41e80000 x3e892249}\n       {x43ef0000 x41c00000 x3e9ca72a}\n       {x43eb0000 x41880000 x3eaaaaab}\n       {x43e80000 x41300000 x3eb4ad2b}\n       {x43e48000 x40a00000 x3ebcaf2c}\n       {x43de0000 xc1000000 x3ec9324d}\n       {x43db0000 xc1500000 x3ecc330d}\n       {x43d80000 xc1980000 x3edab6ae}\n       {x43d90000 xc1980000 x3ed7b5ed}\n       {x43db8000 xc1900000 x3ec0300c}\n       {x43e68000 xc0000000 x3e2f2bcb}}}\n     {tx x429e0000 x43e5ec4f x40c4ec4f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43fe8000 x42ee0000 1}\n       {x43fa0000 x42dc0000 x3ed3b4ed}\n       {x43f68000 x42cc0000 x3ed3b4ed}\n       {x43ef8000 x42a80000 x3edf37ce}\n       {x43eb0000 x42940000 x3ee5394e}\n       {x43e70000 x42820000 x3ee93a4f}\n       {x43e30000 x425c0000 x3eedbb6f}\n       {x43db8000 x42180000 x3ef1bc6f}\n       {x43d90000 x41f00000 x3ef1bc6f}\n       {x43d70000 x41c00000 x3ef23c8f}\n       {x43d48000 x41200000 x3eefbbef}\n       {x43d58000 x40000000 x3e99264a}\n       {x43d70000 x40000000 x3e54350d}\n       {x43d88000 x40800000 0}}}\n     {tx x429e0000 x43e40925 x424d6db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43df0000 x40800000 1}\n       {x43db0000 xc0e00000 x3dde378e}\n       {x43d78000 xc1600000 x3e3c2f0c}\n       {x43d78000 xc1880000 x3e5735cd}\n       {x43d88000 xc1800000 x3e282a0b}\n       {x43db8000 xc1400000 x3da6298a}}}\n     {tx x429e0000 x43da2aab xc1255555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43b10000 x42aa0000 1}\n       {x439d0000 x41e80000 x3eb82e0c}\n       {x439c0000 x41a00000 x3ec1b06c}\n       {x439c0000 x41800000 x3ec4b12c}\n       {x439f0000 x41200000 x3ec6318c}\n       {x43a80000 x41400000 x3eb4ad2b}\n       {x43b48000 x42200000 x3eb0ac2b}\n       {x43b80000 x42480000 x3eb1ac6b}\n       {x43cb0000 x42ce0000 x3ec0b02c}\n       {x43e90000 x43220000 x3ec2308c}\n       {x43f10000 x432f0000 x3ec2308c}\n       {x4403c000 x434c0000 x3ec1b06c}\n       {x4406c000 x43520000 x3ec1304c}\n       {x44090000 x43570000 x3ec1304c}\n       {x440d8000 x43620000 x3ec0300c}\n       {x440e4000 x43630000 x3ebfafec}\n       {x440e8000 x43630000 x3eb5ad6b}\n       {x440e0000 x43600000 x3eb5ad6b}\n       {x440b4000 x43570000 x3eb4ad2b}\n       {x44074000 x43480000 x3eb0ac2b}\n       {x44020000 x43340000 x3eac2b0b}\n       {x43fd0000 x43290000 x3ea8aa2b}\n       {x43f68000 x431c0000 x3ea6a9aa}\n       {x43ef8000 x430f0000 x3ea6298a}\n       {x43e78000 x42fe0000 x3ea6298a}\n       {x43df0000 x42e00000 x3ea6298a}\n       {x43c00000 x42300000 x3eae2b8b}\n       {x43bb0000 x41f00000 x3eb5ad6b}\n       {x43b40000 0 x3ec1304c}\n       {x43b40000 xc0c00000 x3ec1304c}\n       {x43b40000 xc1300000 x3ec1304c}\n       {x43ba8000 xc1900000 x3e5d374e}}}\n     {tx x429e0000 x43dcd000 x42df8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x438d8000 x42700000 1}\n       {x438c0000 x42480000 x3e89a269}\n       {x438a8000 x422c0000 x3e89a269}\n       {x438a8000 x42180000 x3e89a269}\n       {x438b0000 x420c0000 x3e89a269}\n       {x438d0000 x420c0000 x3e89a269}\n       {x438f8000 x420c0000 x3e80a028}\n       {x43920000 x42140000 x3e6d3b4f}\n       {x43970000 x423c0000 x3e6a3a8f}\n       {x43a48000 x42aa0000 x3e9aa6aa}\n       {x43a88000 x42c40000 x3eb42d0b}\n       {x43c58000 x43230000 x3ecab2ad}\n       {x43ed0000 x43540000 x3ed0b42d}\n       {x43f58000 x435d0000 x3ed0b42d}\n       {x44060000 x43750000 x3ecc330d}\n       {x4409c000 x437d0000 x3ec2308c}\n       {x44084000 x437b0000 x3e892249}\n       {x44070000 x43760000 x3e5334cd}\n       {x44048000 x436f0000 0}}}\n     {tx x429e0000 x43bfbca2 x42fbe50d}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437a0000 x429c0000 1}\n       {x43690000 x426c0000 x3e4731cc}\n       {x43510000 x41d00000 x3e4731cc}\n       {x43480000 x41500000 x3e693a4f}\n       {x43450000 x40800000 x3e892249}\n       {x43470000 xc1400000 x3e99264a}\n       {x435f0000 xc0800000 x3e753d4f}\n       {x43660000 x40a00000 x3e753d4f}\n       {x43808000 x42180000 x3e86a1a8}\n       {x43848000 x42500000 x3e9324c9}\n       {x438a0000 x42840000 x3e9b26ca}\n       {x439a0000 x42ec0000 x3ea8aa2b}\n       {x43a00000 x430a0000 x3ea9aa6b}\n       {x43b48000 x434a0000 x3ea9aa6b}\n       {x43bc8000 x435e0000 x3ea7a9ea}\n       {x43c50000 x43710000 x3ea6298a}\n       {x43e10000 x43920000 x3e98a62a}\n       {x44000000 x43a90000 x3e6a3a8f}\n       {x44038000 x43ae0000 x3e59364e}\n       {x440c8000 x43ba8000 x3e102409}\n       {x440e8000 x43bd0000 x3d042108}}}\n     {tx x429e0000 x43a4bcf4 x430daaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x436e0000 x42100000 x3e392e4c}\n       {x43750000 x42280000 1}\n       {x437c0000 x42400000 x3e3d2f4c}\n       {x43820000 x425c0000 x3e51344d}\n       {x43868000 x42740000 x3e753d4f}\n       {x438f0000 x42900000 x3e862188}\n       {x439c0000 x42b40000 x3e892249}\n       {x439f0000 x42c00000 x3e89a269}\n       {x43aa0000 x42fe0000 x3ea2a8aa}\n       {x43b80000 x43330000 x3ea6298a}\n       {x43bc0000 x43420000 x3ea2a8aa}\n       {x43c90000 x43750000 x3e54350d}\n       {x43ce0000 x43820000 x3e0a2289}\n       {x43d40000 x43898000 0}}}\n     {tx x429e0000 x43a0c925 x42fe4925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x433b0000 x426c0000 1}\n       {x432f0000 x42380000 x3e9725c9}\n       {x43260000 x42000000 x3ea328ca}\n       {x43210000 x41d00000 x3eaaaaab}\n       {x431d0000 x41b00000 x3eb12c4b}\n       {x431b0000 x41900000 x3eb5ad6b}\n       {x431a0000 x41880000 x3eb82e0c}\n       {x43210000 x41b00000 x3ebbaeec}\n       {x43520000 x42820000 x3ebeafac}\n       {x43620000 x429e0000 x3ebfafec}\n       {x43880000 x43030000 x3ec6318c}\n       {x43900000 x43160000 x3ec6318c}\n       {x43980000 x432a0000 x3ec6b1ac}\n       {x43ad0000 x436a0000 x3ec6318c}\n       {x43c50000 x43970000 x3ec0300c}\n       {x43ca0000 x439d0000 x3ec0b02c}\n       {x43cf8000 x43a28000 x3ec0b02c}\n       {x43e00000 x43b00000 x3ec0b02c}\n       {x43ed0000 x43b68000 x3ebeafac}\n       {x43ed0000 x43b60000 x3eb9ae6c}\n       {x43e18000 x43a40000 x3ebcaf2c}\n       {x43bf8000 x437d0000 x3ebeafac}\n       {x43b50000 x43660000 x3ec0b02c}\n       {x438a8000 x42fe0000 x3ec2b0ac}\n       {x434d0000 x420c0000 x3ec6b1ac}\n       {x433f0000 x41800000 x3ec8b22d}\n       {x43270000 xc1c00000 x3eceb3ad}\n       {x43240000 xc1f80000 x3eceb3ad}\n       {x43240000 xc2140000 x3eceb3ad}\n       {x43260000 xc2280000 x3eb42d0b}\n       {x43290000 xc2240000 x3e91a469}\n       {x43300000 xc1f80000 0}}}\n     {tx x429e0000 x4383f800 x42f24000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x4400c000 x43e90000 x3e4330cc}\n       {x43fd0000 x43e10000 x3e50340d}\n       {x43f88000 x43d80000 x3e5334cd}\n       {x43e38000 x43b80000 x3e8a2289}\n       {x43da8000 x43ad0000 x3e96a5a9}\n       {x43d10000 x43a10000 x3e9f27ca}\n       {x43c68000 x43950000 x3ea7a9ea}\n       {x43b00000 x43760000 x3eb62d8b}\n       {x43a30000 x435c0000 x3ebcaf2c}\n       {x43630000 x42f00000 x3ec6b1ac}\n       {x431a0000 x42200000 x3eca328d}\n       {x430f0000 x41c80000 x3ecbb2ed}\n       {x42f40000 xc1200000 x3ecc330d}\n       {x42ee0000 xc1880000 x3ecab2ad}\n       {x42ec0000 xc1b80000 x3ec6318c}\n       {x42ec0000 xc1f00000 x3e842108}\n       {x42f00000 xc1f00000 0}}}\n     {tx x429e0000 x4393c3c4 x433d9697}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43100000 x429e0000 1}\n       {x430c0000 x42980000 x3eb82e0c}\n       {x430c0000 x42940000 x3ebaaeac}\n       {x430f0000 x42980000 x3ebaaeac}\n       {x43140000 x42a00000 x3ebdaf6c}\n       {x431a0000 x42ac0000 x3ec0b02c}\n       {x43210000 x42bc0000 x3ec4b12c}\n       {x432a0000 x42ce0000 x3ec7b1ec}\n       {x43400000 x42fe0000 x3ec8320d}\n       {x43800000 x43480000 x3ec8320d}\n       {x438a0000 x435e0000 x3ec7b1ec}\n       {x43b20000 x439c0000 x3eb0ac2b}\n       {x43d48000 x43c28000 x3e802008}\n       {x43db8000 x43ca0000 x3e5e378e}\n       {x43ea8000 x43de0000 x3e4d334d}\n       {x43ee0000 x43e38000 x3e4c330d}\n       {x43f10000 x43e78000 x3e4b32cd}\n       {x43f98000 x43f20000 x3e162589}\n       {x43fc8000 x43f50000 x3e022088}\n       {x43ff0000 x43f70000 0}}}\n     {tx x429e0000 x43982000 x4380cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42b20000 x42820000 1}\n       {x42cc0000 x42980000 x3e19264a}\n       {x42e80000 x42b00000 x3e332ccb}\n       {x43040000 x42c80000 x3e5f37ce}\n       {x43280000 x42fa0000 x3e8d2349}\n       {x433b0000 x430b0000 x3e922489}\n       {x437a0000 x43350000 x3ea2a8aa}\n       {x43868000 x43440000 x3ea6298a}\n       {x439f0000 x436c0000 x3ea6a9aa}\n       {x43a58000 x43780000 x3ea5294a}\n       {x43b08000 x43848000 0}}}\n     {tx x429e0000 x4352745d x431c45d1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {xc2860000 x42180000 x3e5f37ce}\n       {xc2860000 x42240000 x3e6d3b4f}\n       {xc2820000 x42300000 x3e773dcf}\n       {xc2700000 x42440000 x3e8a2289}\n       {xc25c0000 x425c0000 x3e96a5a9}\n       {xc2440000 x42780000 x3e9ca72a}\n       {xc2280000 x42900000 x3ea1284a}\n       {xc2080000 x42a40000 x3ea3a8ea}\n       {xc1c00000 x42b80000 x3ea5294a}\n       {xc1400000 x42d40000 x3ea5294a}\n       {x40000000 x42f20000 x3ea6a9aa}\n       {x41980000 x430a0000 x3ea8aa2b}\n       {x42200000 x431e0000 x3ea92a4b}\n       {x42780000 x43340000 x3eaaaaab}\n       {x42b00000 x434b0000 x3eaaaaab}\n       {x43340000 x43898000 x3ea92a4b}\n       {x43a00000 x43b38000 x3e9ca72a}\n       {x43af0000 x43bc0000 x3e96a5a9}\n       {x43e08000 x43db0000 x3e2a2a8b}\n       {x43f30000 x43e78000 0}}}\n     {tx x429e0000 x4298199a x4327999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43860000 x43cf8000 1}\n       {x43850000 x43cf8000 x3e9725c9}\n       {x43808000 x43cf8000 x3ebdaf6c}\n       {x437c0000 x43ce0000 x3ece338d}\n       {x43760000 x43cc0000 x3ed7b5ed}\n       {x43700000 x43c88000 x3ee2b8ae}\n       {x43580000 x43b78000 x3ef43d0f}\n       {x43240000 x43938000 x3f006018}\n       {x43150000 x43898000 x3f00e038}\n       {x429e0000 x43400000 x3efabeb0}\n       {x40c00000 x42da0000 x3edf37ce}\n       {xc1200000 x42b80000 x3ed5b56d}\n       {xc2480000 x42480000 x3eb0ac2b}\n       {xc2740000 x42200000 x3ea328ca}\n       {xc2a40000 x41b80000 x3e5a368e}\n       {xc2a40000 x41c00000 0}}}\n     {tx x429e0000 x42e84000 x4375d000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c40000 x43f08000 1}\n       {x43c00000 x43ed8000 x3eaeabab}\n       {x43bc8000 x43ea8000 x3eb0ac2b}\n       {x43b40000 x43e18000 x3ebc2f0c}\n       {x43ab8000 x43d78000 x3ec4310c}\n       {x43a70000 x43d10000 x3ec9b26d}\n       {x439b8000 x43c10000 x3ed1b46d}\n       {x43940000 x43b78000 x3ed334cd}\n       {x438c0000 x43ad8000 x3ed5b56d}\n       {x43580000 x438c0000 x3ed8360e}\n       {x42e40000 x433a0000 x3ed0b42d}\n       {x42b20000 x43240000 x3ed0340d}\n       {1 x42be0000 x3ed2348d}\n       {xc2380000 x426c0000 x3ed8360e}\n       {xc2400000 x42580000 x3ed8360e}\n       {xc2280000 x42480000 x3eab2acb}\n       {xc2100000 x42480000 x3e82a0a8}\n       {xc1e80000 x42540000 x3d743d0f}}}\n     {tx x429e0000 x43371c72 x4385c71c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43b30000 x43ed0000 1}\n       {x43b50000 x43ed0000 x3e4b32cd}\n       {x43b40000 x43ea0000 x3e8721c8}\n       {x43b00000 x43e48000 x3eb12c4b}\n       {x439f0000 x43d48000 x3edab6ae}\n       {x43640000 x43b00000 x3ef23c8f}\n       {x433f0000 x43a20000 x3ef83e10}\n       {x431b0000 x43940000 x3efbbef0}\n       {x425c0000 x43580000 x3f0360d8}\n       {x41e00000 x43400000 x3f04a128}\n       {xc2000000 x43030000 x3f04e138}\n       {xc2300000 x42e80000 x3f04e138}\n       {xc2200000 x42c80000 x3ed2b4ad}\n       {x41400000 x43050000 0}}}\n     {tx x429e0000 x43248000 x43948000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x41300000 x43b98000 1}\n       {x42140000 x43c20000 x3dee3b8f}\n       {x42820000 x43c98000 x3df63d8f}\n       {x43470000 x43f70000 x3dc0300c}\n       {x43540000 x43fc8000 x3dc0300c}\n       {x43630000 x44024000 x3df03c0f}\n       {x435d0000 x44044000 x3e733ccf}\n       {x43540000 x44044000 x3e9aa6aa}\n       {x434c0000 x44044000 x3ea729ca}\n       {x432d0000 x44024000 x3eb92e4c}\n       {x43040000 x43f58000 x3eb92e4c}\n       {x42f40000 x43f00000 x3eb9ae6c}\n       {x42e20000 x43e98000 x3ebaaeac}\n       {x42ca0000 x43e30000 x3ebc2f0c}\n       {x42540000 x43c30000 x3eb9ae6c}\n       {x42240000 x43bb0000 x3eb1ac6b}\n       {x40e00000 x43a58000 x3e733ccf}\n       {1 x439f8000 x3e2b2acb}\n       {xc0800000 x439b0000 x3d743d0f}}}\n     {tx x429e0000 x42dfe50d x43dd35e5}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43450000 x43ef8000 1}\n       {x43400000 x43ef8000 x3ea1284a}\n       {x43330000 x43ed0000 x3eb92e4c}\n       {x432c0000 x43ea8000 x3ec5314c}\n       {x431a0000 x43e38000 x3ed8360e}\n       {x42ee0000 x43d20000 x3ee9ba6f}\n       {x42ce0000 x43cb0000 x3eeb3acf}\n       {x42aa0000 x43c30000 x3eecbb2f}\n       {x41b80000 x43aa0000 x3eed3b4f}\n       {xc2740000 x438d0000 x3edcb72e}\n       {xc29e0000 x43880000 x3ed2b4ad}\n       {xc2bc0000 x43848000 x3ed0340d}\n       {xc2e60000 x43818000 x3ec4b12c}\n       {xc2dc0000 x438c0000 x3e7d3f50}\n       {xc2d00000 x438f8000 x3e2c2b0b}\n       {xc2aa0000 x43990000 x3c902409}}}\n     {tx x429e0000 x42100000 x43b73800}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437d0000 x4402c000 1}\n       {x43808000 x44038000 x3e25294a}\n       {x43760000 x44014000 x3e9324c9}\n       {x436e0000 x43fe8000 x3e9aa6aa}\n       {x43630000 x43f98000 x3ea6298a}\n       {x43570000 x43f38000 x3eb0ac2b}\n       {x433b0000 x43e68000 x3ec4b12c}\n       {x432d0000 x43df0000 x3eca328d}\n       {x43000000 x43c68000 x3ece338d}\n       {x42e20000 x43bd8000 x3eceb3ad}\n       {x42c00000 x43b48000 x3ed0340d}\n       {x42400000 x439b0000 x3ed0b42d}\n       {xc1600000 x43800000 x3ecdb36d}\n       {xc1c80000 x43760000 x3ecdb36d}\n       {xc2300000 x436a0000 x3eb9ae6c}\n       {xc2180000 x436e0000 0}}}\n     {tx x429e0000 x4300c000 x43c7a800}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {xc1800000 x43660000 1}\n       {1 x43720000 x3e6739ce}\n       {x41900000 x437e0000 x3e6b3acf}\n       {x42080000 x43850000 x3e6b3acf}\n       {x42480000 x438c0000 x3e7f3fd0}\n       {x42840000 x43920000 x3e882209}\n       {x42bc0000 x439e8000 x3e902409}\n       {x43020000 x43b18000 x3e9aa6aa}\n       {x430c0000 x43b80000 x3e9b26ca}\n       {x43390000 x43d10000 x3e9ca72a}\n       {x43660000 x43e70000 x3e9da76a}\n       {x43710000 x43eb0000 x3e9da76a}\n       {x438b0000 x43fc0000 x3e8fa3e9}\n       {x43940000 x44030000 x3e6a3a8f}\n       {x43940000 x44038000 x3e6a3a8f}\n       {x43928000 x4403c000 x3e902409}\n       {x43900000 x44028000 x3e9ea7aa}\n       {x438c8000 x4400c000 x3ea5294a}\n       {x43780000 x43ed0000 x3ece338d}\n       {x435a0000 x43dd8000 x3ed1344d}\n       {x43480000 x43d58000 x3ed1344d}\n       {x43360000 x43ce0000 x3ed1344d}\n       {x43270000 x43c60000 x3ed2348d}\n       {x42d60000 x43a88000 x3ebbaeec}\n       {x42bc0000 x43a28000 x3eaa2a8b}\n       {x42820000 x43968000 x3e49324d}\n       {x426c0000 x43940000 x3dfe3f90}}}\n     {tx x429e0000 x431d38e4 x43c2212f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43210000 x43c00000 1}\n       {x43320000 x43c58000 1}\n       {x43420000 x43cb8000 x3e322c8b}\n       {x43620000 x43d58000 x3e352d4b}\n       {x43700000 x43da8000 x3e7e3f90}\n       {x437c0000 x43df0000 x3e8c2309}\n       {x43950000 x43f00000 x3eaa2a8b}\n       {x43998000 x43f40000 x3eadab6b}\n       {x43a58000 x4400c000 x3eb5ad6b}\n       {x43a88000 x4402c000 x3eb6adab}\n       {x43ab8000 x44048000 x3eb7adeb}\n       {x43b30000 x4409c000 x3eb8ae2c}\n       {x43b98000 x440e8000 x3eb92e4c}\n       {x43ba0000 x440f0000 x3eb9ae6c}\n       {x43ba8000 x440f0000 x3eb9ae6c}\n       {x43ba8000 x440f8000 x3eb9ae6c}\n       {x43b90000 x440d8000 x3ed8360e}\n       {x43b68000 x440b8000 x3edbb6ee}\n       {x43b30000 x44090000 x3edeb7ae}\n       {x43ae8000 x44060000 x3ee0380e}\n       {x43a90000 x44028000 x3ee1384e}\n       {x43a30000 x43fe0000 x3ee2b8ae}\n       {x43940000 x43ed8000 x3ee338ce}\n       {x43800000 x43db0000 x3ee0380e}\n       {x43200000 x43b30000 x3ee2388e}\n       {x43080000 x43a90000 x3ee2388e}\n       {x42400000 x43860000 x3eeb3acf}\n       {xc1e00000 x43510000 x3ef23c8f}\n       {xc2300000 x43440000 x3ef2bcaf}\n       {xc2aa0000 x43220000 x3eeebbaf}\n       {xc2be0000 x43180000 x3ee5b96e}\n       {xc2d00000 x43110000 x3ed9b66e}\n       {xc3000000 x42fe0000 x3ec6318c}\n       {xc30b0000 x42ee0000 x3eac2b0b}\n       {xc30f0000 x42e80000 x3e9b26ca}\n       {xc3120000 x42e40000 x3e822088}\n       {xc3140000 x42e20000 x3e42308c}\n       {xc3150000 x42e00000 x3dae2b8b}}}\n     {tx x429e0000 x432b3ca2 x43bf75e5}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43a40000 x43f80000 x3dde378e}\n       {x43ab0000 x43fe0000 1}\n       {x43b08000 x44014000 x3de0380e}\n       {x43b80000 x44054000 x3df83e10}\n       {x43bc0000 x44078000 x3e1b26ca}\n       {x43bc0000 x44090000 x3e65394e}\n       {x43bb0000 x44090000 x3e7e3f90}\n       {x43b98000 x44088000 x3e912449}\n       {x43b68000 x4406c000 x3e9ba6ea}\n       {x43b18000 x4402c000 x3ea2288a}\n       {x43ab0000 x43fb0000 x3ea92a4b}\n       {x43a60000 x43f40000 x3ea92a4b}\n       {x43a18000 x43ed0000 x3ea7a9ea}\n       {x439b8000 x43e60000 x3ea0280a}\n       {x43760000 x43c80000 x3e8d2349}\n       {x432a0000 x43ac0000 x3e93a4e9}\n       {x43180000 x43a70000 x3e9725c9}\n       {x430a0000 x43a28000 x3e9aa6aa}\n       {x42e40000 x439c0000 x3ea729ca}\n       {x42d60000 x439b0000 1}\n       {x42d00000 x439f8000 x3eb02c0b}\n       {x42e00000 x43a50000 x3ea328ca}\n       {x43270000 x43c38000 x3e20280a}\n       {x433a0000 x43cc8000 0}}}\n     {tx x429e0000 x43859555 x43dee000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42240000 x43400000 1}\n       {x42540000 x43500000 x3e8c2309}\n       {x429a0000 x436f0000 x3e8c2309}\n       {x42b60000 x43800000 x3e922489}\n       {x42f40000 x43910000 x3ea3a8ea}\n       {x430e0000 x43998000 x3ea92a4b}\n       {x434b0000 x43b10000 x3eb02c0b}\n       {x43600000 x43b80000 x3eb02c0b}\n       {x438a8000 x43cc8000 x3eb12c4b}\n       {x43928000 x43d28000 x3eb2acab}\n       {x43a90000 x43e98000 x3eb42d0b}\n       {x43b98000 x43fe0000 x3eb5ad6b}\n       {x43bd8000 x44014000 x3eb5ad6b}\n       {x43c68000 x44080000 x3eb4ad2b}\n       {x43c90000 x4409c000 x3eb4ad2b}\n       {x43cb0000 x440b4000 x3eb42d0b}\n       {x43ce0000 x440e0000 x3eb4ad2b}\n       {x43c60000 x44084000 x3ec6b1ac}\n       {x43bc0000 x44010000 x3eceb3ad}\n       {x43ae0000 x43f10000 x3ed5b56d}\n       {x43a60000 x43e80000 x3ed5b56d}\n       {x439d0000 x43de0000 x3ed5354d}\n       {x43938000 x43d30000 x3ed1344d}\n       {x434c0000 x43a78000 x3ec0b02c}\n       {x42e80000 x43870000 x3eba2e8c}\n       {x42c40000 x43818000 x3ebcaf2c}\n       {x42820000 x43750000 x3ec1304c}\n       {x42b60000 x438f8000 x3e9e278a}\n       {x42d40000 x43980000 x3e8b22c9}\n       {x42f00000 x43a00000 0}}}\n     {tx x429e0000 x436c4ccd x43c22666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c00000 x43e00000 1}\n       {x43bd0000 x43de0000 x3e99264a}\n       {x43b48000 x43d70000 x3ea1a86a}\n       {x43b00000 x43d10000 x3eadab6b}\n       {x43aa0000 x43ca0000 x3ebaaeac}\n       {x43a30000 x43c28000 x3ec9324d}\n       {x43938000 x43af0000 x3ed5b56d}\n       {x438a0000 x43a48000 x3edbb6ee}\n       {x432f0000 x43660000 x3eeabaaf}\n       {x43140000 x434c0000 x3eecbb2f}\n       {x428e0000 x43020000 x3ee83a0f}\n       {x42400000 x42d80000 x3ee2388e}\n       {xc1a00000 x422c0000 x3ec7b1ec}\n       {xc22c0000 x41b00000 x3e94a529}}}\n     {tx x429e0000 x435cc925 x438d0925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x42920000 x42940000 1}\n       {x42d00000 x42e40000 x3e332ccb}\n       {x42f40000 x43080000 x3e3c2f0c}\n       {x430f0000 x431d0000 x3e42308c}\n       {x43260000 x43340000 x3e46318c}\n       {x433f0000 x434a0000 x3e4731cc}\n       {x43770000 x43770000 x3e49324d}\n       {x43a20000 x439b0000 x3e46318c}\n       {x43ad0000 x43a48000 x3e4330cc}\n       {x43cf0000 x43c60000 x3e46318c}\n       {x43e50000 x43e10000 x3e102409}\n       {x43e90000 x43e60000 x3dec3b0f}\n       {x43eb0000 x43ea8000 x3db82e0c}\n       {x43ed8000 x43ef0000 x3da2288a}\n       {x43f08000 x43f60000 x3d962589}\n       {x43f20000 x44000000 x3dbc2f0c}\n       {x43f28000 x4400c000 x3dd0340d}\n       {x43f28000 x44014000 x3df03c0f}\n       {x43f28000 x44018000 x3e1324c9}\n       {x43ec0000 x43f90000 x3e91a469}\n       {x43e80000 x43f38000 x3ea1284a}\n       {x43e38000 x43ed8000 x3ea9aa6b}\n       {x43de0000 x43e70000 x3eb02c0b}\n       {x43c30000 x43c58000 x3ec0300c}\n       {x43bb0000 x43ba8000 x3ec4b12c}\n       {x439f0000 x43960000 x3ec7b1ec}\n       {x43938000 x43898000 x3ec6318c}\n       {x43880000 x437a0000 x3ec2308c}\n       {x43460000 x432e0000 x3ebaaeac}\n       {x42d40000 x42a80000 x3eb9ae6c}\n       {x42aa0000 x42800000 x3eb2acab}\n       {x41b00000 1 x3e98a62a}\n       {xbf800000 xc1c80000 x3e52348d}\n       {xbf800000 xc1d00000 x3db02c0b}}}\n     {tx x429e0000 x4397a5a6 x43981a5a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x437c0000 x43230000 1}\n       {x43940000 x43520000 x3ebfafec}\n       {x43998000 x435f0000 x3ed6b5ad}\n       {x439a0000 x43630000 x3ee5394e}\n       {x43958000 x435d0000 x3f0d2349}\n       {x43900000 x43530000 x3f0ea3a9}\n       {x43890000 x43450000 x3f0fa3e9}\n       {x43540000 x430c0000 x3f0fe3f9}\n       {x42e60000 x42600000 x3f106419}\n       {x42b80000 x42140000 x3f106419}\n       {x41d00000 xc1c80000 x3f07e1f8}\n       {1 xc2500000 x3eedbb6f}\n       {0 xc2500000 x3edab6ae}\n       {x41200000 xc1c80000 x3dc0300c}}}\n     {tx x429e0000 x43312492 x42dab6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43f00000 x439d0000 1}\n       {x43ee0000 x439d0000 x3eae2b8b}\n       {x43e78000 x439c0000 x3edc370e}\n       {x43e38000 x43990000 x3eea3a8f}\n       {x43de0000 x43950000 x3ef93e50}\n       {x43d88000 x43900000 x3f02a0a8}\n       {x43c58000 x43760000 x3f0be2f9}\n       {x43be0000 x43650000 x3f0c6319}\n       {x43a40000 x432c0000 x3f0d2349}\n       {x43998000 x43160000 x3f0d2349}\n       {x438e0000 x42fe0000 x3f0d2349}\n       {x43540000 x426c0000 x3f086219}\n       {x43060000 xc1880000 x3ed5354d}\n       {x42f20000 xc1f80000 x3ebcaf2c}\n       {x42bc0000 xc2740000 0}}}\n     {tx x429e0000 x43a6ddde x43346666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43c28000 x43500000 1}\n       {x43c38000 x43540000 x3e713c4f}\n       {x43c40000 x43580000 x3e733ccf}\n       {x43c40000 x43590000 x3e80a028}\n       {x43c40000 x435a0000 x3e912449}\n       {x43c28000 x43590000 x3ec9324d}\n       {x43c10000 x43570000 x3ed2b4ad}\n       {x43b70000 x43390000 x3ee739ce}\n       {x439f0000 x43020000 x3ee7b9ee}\n       {x43968000 x42e40000 x3ee739ce}\n       {x43620000 x42440000 x3ee6398e}\n       {x43240000 xc0800000 x3eb8ae2c}\n       {x431b0000 xc1600000 x3e9e278a}\n       {x430b0000 xc1f80000 x3d98260a}}}\n     {tx x429e0000 x439d2492 x430a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x429e0000\n       {x43d20000 xc0800000 1}\n       {x43cb8000 xc1500000 1}\n       {x43c50000 xc1b80000 x3e96a5a9}\n       {x43bd0000 xc2080000 x3ea92a4b}\n       {x43ae0000 xc2580000 x3eba2e8c}\n       {x43a60000 xc2800000 x3ec6318c}\n       {x439f0000 xc2920000 x3eca328d}\n       {x43990000 xc2a40000 x3ecab2ad}\n       {x43938000 xc2b20000 x3ecab2ad}\n       {x438f0000 xc2bc0000 x3ec5314c}\n       {x438c0000 xc2c20000 x3ebaaeac}\n       {x438a0000 xc2c00000 x3ea2a8aa}\n       {x438b0000 xc2a40000 x3e25294a}}}\n     {tx x429e0000 x43a613b1 xc277b13b}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x429e0000 ltm x429e0000 tt x41880000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43e80000 x43030000 1}\n       {x43ec0000 x430c0000 1}\n       {x43ef8000 x43170000 x3e5f37ce}\n       {x43f28000 x43210000 x3e8ca329}\n       {x43f68000 x43350000 x3eae2b8b}\n       {x43f90000 x433f0000 x3eaf2bcb}\n       {x43fa0000 x43470000 x3eaf2bcb}\n       {x43fc8000 x434e0000 x3eb02c0b}\n       {x44000000 x43580000 x3eb0ac2b}\n       {x44014000 x435c0000 x3eb0ac2b}\n       {x44038000 x434e0000 x3eb3aceb}\n       {x43f98000 x43170000 x3eb92e4c}\n       {x43f30000 x43050000 x3ebfafec}\n       {x43ec0000 x42e60000 x3ec4310c}\n       {x43e40000 x42be0000 x3ec6b1ac}\n       {x43c00000 x41400000 x3ec8b22d}\n       {x43a60000 xc2600000 x3ec8b22d}\n       {x43a28000 xc2880000 x3ec9324d}\n       {x43a30000 xc2a80000 x3ebe2f8c}\n       {x43a78000 xc2a80000 0}}}\n     {tx x41b00000 x43e2a666 x42dd999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43c50000 x43220000 1}\n       {x43cf8000 x433c0000 x3e60380e}\n       {x43d48000 x434a0000 x3e60380e}\n       {x43de8000 x43630000 x3e6338ce}\n       {x43ec8000 x43808000 x3e59364e}\n       {x43f08000 x43838000 x3e59364e}\n       {x43fe0000 x43870000 x3e59364e}\n       {x43ff0000 x43808000 x3e6d3b4f}\n       {x43fc8000 x43780000 x3e733ccf}\n       {x43f90000 x436f0000 x3e733ccf}\n       {x43e80000 x43450000 x3e733ccf}\n       {x43c50000 x42ee0000 x3e9da76a}\n       {x43bc0000 x42c00000 x3ea4290a}\n       {x43990000 x40e00000 x3eacab2b}\n       {x437d0000 xc2700000 x3ea729ca}\n       {x43750000 xc2900000 x3ea4290a}\n       {x43660000 xc2b40000 x3e98260a}\n       {x436a0000 xc2a40000 0}}}\n     {tx x41b00000 x43c6c71c x4306e38e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x438e0000 x43290000 1}\n       {x438c0000 x43240000 x3e9aa6aa}\n       {x438a0000 x43200000 x3ead2b4b}\n       {x438c0000 x43240000 x3ebc2f0c}\n       {x439f8000 x43500000 x3ec5314c}\n       {x43a70000 x435e0000 x3ed6b5ad}\n       {x43bc8000 x43898000 x3ee83a0f}\n       {x43c40000 x43938000 x3ee93a4f}\n       {x43cc0000 x439e8000 x3ee9ba6f}\n       {x43e68000 x43bc8000 x3eea3a8f}\n       {x44008000 x43d48000 x3ee93a4f}\n       {x44024000 x43d70000 x3ee5394e}\n       {x44020000 x43d48000 x3ee4390e}\n       {x43f08000 x43bc0000 x3eedbb6f}\n       {x43e90000 x43b20000 x3eedbb6f}\n       {x43e08000 x43a80000 x3eea3a8f}\n       {x43d70000 x439c8000 x3ee5394e}\n       {x43ab8000 x43500000 x3ebd2f4c}\n       {x439f8000 x43340000 x3ebd2f4c}\n       {x43770000 x42bc0000 x3ebc2f0c}\n       {x435f0000 x42840000 x3eb82e0c}\n       {x43480000 x42240000 x3eb82e0c}\n       {x43150000 xc1b80000 x3ead2b4b}\n       {x42f40000 xc2940000 x3e743d0f}\n       {x42f40000 xc2a00000 x3e3a2e8c}\n       {x42f40000 xc2a80000 0}}}\n     {tx x41b00000 x43a62276 x434d6276}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43e38000 x43f58000 1}\n       {x43dd0000 x43f20000 x3ecbb2ed}\n       {x43d60000 x43ec8000 x3ecbb2ed}\n       {x43c80000 x43de0000 x3ed5b56d}\n       {x43c00000 x43d48000 x3edc370e}\n       {x43b80000 x43c98000 x3ee4b92e}\n       {x43b00000 x43bd8000 x3ee93a4f}\n       {x439c8000 x43a40000 x3eedbb6f}\n       {x43910000 x43960000 x3eee3b8f}\n       {x43360000 x432f0000 x3ee739ce}\n       {x42a80000 x42680000 x3ed9364e}\n       {x42820000 x42080000 x3ecc330d}\n       {x42400000 x41400000 x3ec0300c}\n       {x41800000 xc2000000 x3e64390e}\n       {x41500000 xc2200000 0}}}\n     {tx x41b00000 x43800000 x43832222}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43db0000 x43e68000 x3dd8360e}\n       {x43d90000 x43e48000 x3e362d8b}\n       {x43c40000 x43d58000 x3ea1284a}\n       {x43a60000 x43ba0000 x3eb7adeb}\n       {x435f0000 x43840000 x3ec7b1ec}\n       {x43400000 x436b0000 x3ecab2ad}\n       {x42a00000 x42ee0000 x3ece338d}\n       {x40000000 x41f00000 x3ebeafac}\n       {xc1000000 x41600000 x3eb3aceb}\n       {xc1b80000 xc0a00000 x3e4c330d}}}\n     {tx x41b00000 x434e3333 x436d6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x436c0000 x43b68000 1}\n       {x43580000 x43ae0000 x3ea7a9ea}\n       {x432c0000 x439c0000 x3eb9ae6c}\n       {x43150000 x43920000 x3eccb32d}\n       {x42fc0000 x43870000 x3ed735cd}\n       {x42d00000 x43770000 x3edfb7ee}\n       {x42400000 x43350000 x3ee4b92e}\n       {x42000000 x43210000 x3edeb7ae}\n       {xbf800000 x42c40000 x3e98260a}\n       {xc0000000 x42aa0000 0}}}\n     {tx x41b00000 x42d80000 x436be666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42940000 x44010000 1}\n       {x42900000 x43ff0000 x3e86a1a8}\n       {x42580000 x43f68000 x3e9da76a}\n       {x42280000 x43f10000 x3ea9aa6b}\n       {x41880000 x43e68000 x3ebaaeac}\n       {x40800000 x43e10000 x3ec2b0ac}\n       {xc1d00000 x43cd0000 x3ed4b52d}\n       {xc20c0000 x43c60000 x3ed735cd}\n       {xc2380000 x43ac0000 x3ea7a9ea}\n       {xc2380000 x43a80000 x3e162589}}}\n     {tx x41b00000 x41300000 x43dbe666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42800000 x43f90000 1}\n       {x42800000 x43f98000 x3e6e3b8f}\n       {x42780000 x43f98000 x3e793e50}\n       {x42480000 x43f80000 x3e9ca72a}\n       {x42240000 x43f58000 x3ea4290a}\n       {x41f00000 x43f28000 x3eaaaaab}\n       {xc0c00000 x43e80000 x3eb5ad6b}\n       {xc1980000 x43e40000 x3eb92e4c}\n       {xc1f00000 x43e08000 x3ebe2f8c}\n       {xc2500000 x43da8000 x3ec8320d}\n       {xc1e80000 x43e30000 x3e42308c}}}\n     {tx x41b00000 x417e8ba3 x43eda2e9}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x429c0000 x43ef8000 1}\n       {x42740000 x43ea8000 x3ead2b4b}\n       {x422c0000 x43e50000 x3eae2b8b}\n       {x41200000 x43db8000 x3eb7adeb}\n       {xc0a00000 x43d70000 x3ec4310c}\n       {xc1880000 x43d40000 x3ed7b5ed}\n       {xc1d00000 x43d18000 x3edeb7ae}\n       {xc1b80000 x43d28000 x3eb9ae6c}\n       {xc1800000 x43d58000 x3eb1ac6b}\n       {x41a00000 x43e20000 x3d44310c}}}\n     {tx x41b00000 x41480000 x43dce666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x437a0000 x44024000 x3e26298a}\n       {x43720000 x44010000 1}\n       {x43680000 x43ff0000 x3e2f2bcb}\n       {x43500000 x43f80000 x3e58360e}\n       {x43400000 x43f38000 x3e753d4f}\n       {x43320000 x43ef8000 x3e8a2289}\n       {x43230000 x43eb0000 x3e95a569}\n       {x42fe0000 x43de8000 x3eb3aceb}\n       {x42ee0000 x43db0000 x3eb4ad2b}\n       {x42dc0000 x43d80000 x3eb5ad6b}\n       {x42ca0000 x43d20000 x3eb0ac2b}\n       {x42ca0000 x43d18000 x3e9fa7ea}}}\n     {tx x41b00000 x43289555 x43eab555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43090000 x43fe8000 x3e352d4b}\n       {x430b0000 x43ff0000 1}\n       {x430f0000 x43ff8000 x3e3c2f0c}\n       {x43120000 x44000000 x3e56358d}\n       {x431b0000 x44008000 x3e773dcf}\n       {x43210000 x44008000 x3e7a3e90}\n       {x43290000 x4400c000 x3e7a3e90}\n       {x43330000 x44014000 x3e7a3e90}\n       {x433c0000 x44018000 x3e793e50}\n       {x43480000 x44024000 x3e753d4f}\n       {x43530000 x4402c000 x3e64390e}\n       {x435d0000 x44038000 x3e49324d}\n       {x43660000 x4403c000 x3e332ccb}\n       {x436f0000 x44044000 0}}}\n     {tx x41b00000 x4333db6e x44016492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43020000 x43f30000 1}\n       {x42fa0000 x43f10000 x3e5a368e}\n       {x42ee0000 x43f00000 x3e5e378e}\n       {x42e20000 x43ed8000 x3e7e3f90}\n       {x42d60000 x43ec0000 x3e8b22c9}\n       {x42c80000 x43e98000 x3e98260a}\n       {x42bc0000 x43e70000 x3ea1a86a}\n       {x42a60000 x43e20000 x3eb02c0b}\n       {x42b60000 x43e78000 x3e25294a}}}\n     {tx x41b00000 x42d5c71c x43eb8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x433b0000 x43ff8000 1}\n       {x43360000 x43ff8000 x3e64390e}\n       {x432f0000 x43ff0000 x3e842108}\n       {x432a0000 x43fe0000 x3e8e2389}\n       {x43260000 x43fc0000 x3e9725c9}\n       {x43200000 x43f90000 x3e9da76a}\n       {x431a0000 x43f58000 x3e9ea7aa}\n       {x43120000 x43f20000 x3e9ea7aa}\n       {x430b0000 x43ed8000 x3ea1a86a}\n       {x42e40000 x43e10000 x3ea2a8aa}\n       {x42d40000 x43dd0000 x3ea2a8aa}\n       {x42b00000 x43d58000 x3ea3a8ea}\n       {x42ac0000 x43d58000 x3ea2a8aa}\n       {x42be0000 x43db8000 0}}}\n     {tx x41b00000 x430c9249 x43ee76db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x439c8000 x44030000 1}\n       {x439c0000 x44030000 x3e773dcf}\n       {x439b8000 x44030000 x3e7b3ed0}\n       {x439b0000 x44030000 x3e8e2389}\n       {x439a0000 x44030000 x3ea1284a}\n       {x43998000 x44030000 x3ea1284a}\n       {x43990000 x44028000 x3ea1284a}\n       {x43980000 x44018000 x3ea1284a}\n       {x43958000 x44008000 x3ea328ca}\n       {x43920000 x43fe0000 x3ea5294a}\n       {x438d0000 x43f98000 x3ea6a9aa}\n       {x43800000 x43ef0000 x3eacab2b}\n       {x43380000 x43d10000 x3eb12c4b}\n       {x43240000 x43c90000 x3eb12c4b}\n       {x42e60000 x43b10000 x3eaa2a8b}\n       {x42ca0000 x43aa8000 x3ea2a8aa}\n       {x42b00000 x43a40000 x3e95a569}\n       {x42600000 x43950000 x3e86a1a8}\n       {x42440000 x43920000 x3e862188}\n       {x42280000 x438f0000 x3e5a368e}\n       {x42280000 x43900000 x3cc0300c}}}\n     {tx x41b00000 x435379e8 x43dacf3d}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43a18000 x43e18000 1}\n       {x43a80000 x43e60000 x3e0c2309}\n       {x43ad8000 x43e98000 x3e0f23c9}\n       {x43b18000 x43ec0000 x3e152549}\n       {x43b50000 x43ee0000 x3e20280a}\n       {x43b70000 x43f00000 x3e26298a}\n       {x43b80000 x43f08000 x3e2d2b4b}\n       {x43b80000 x43f10000 x3e42308c}\n       {x43b38000 x43f00000 x3ea4290a}\n       {x439c0000 x43e00000 x3eb4ad2b}\n       {x43928000 x43d80000 x3eb5ad6b}\n       {x433e0000 x43ae0000 x3eb92e4c}\n       {x42b20000 x437b0000 x3eb6adab}\n       {x42880000 x43650000 x3eaeabab}\n       {x41980000 x432f0000 x3e9aa6aa}\n       {x41000000 x43220000 x3e91a469}\n       {0 x43180000 x3e8c2309}\n       {xc1000000 x43080000 x3e5c370e}}}\n     {tx x41b00000 x4366d555 x43b6d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43ae8000 x43e60000 1}\n       {x43b08000 x43e78000 x3e56358d}\n       {x43b20000 x43e90000 x3e5a368e}\n       {x43b50000 x43ea8000 x3e693a4f}\n       {x43b68000 x43ea8000 x3e703c0f}\n       {x43b60000 x43e70000 x3e93a4e9}\n       {x43a50000 x43d50000 x3eab2acb}\n       {x439e0000 x43cd0000 x3eb42d0b}\n       {x43958000 x43c40000 x3eb9ae6c}\n       {x43660000 x43a10000 x3ed2348d}\n       {x42f20000 x434e0000 x3ee7b9ee}\n       {x42c00000 x43320000 x3ee93a4f}\n       {x41300000 x42980000 x3ed334cd}\n       {xc1e80000 x41400000 x3e60380e}\n       {xc1e80000 x40e00000 x3cb82e0c}}}\n     {tx x41b00000 x4368eeef x43a0999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43988000 x43e50000 1}\n       {x43958000 x43e20000 x3e282a0b}\n       {x438d8000 x43d90000 x3e693a4f}\n       {x43818000 x43cb0000 x3e952549}\n       {x434c0000 x43ad0000 x3eb82e0c}\n       {x43350000 x43a10000 x3ebfafec}\n       {x431d0000 x43940000 x3ec6318c}\n       {x42aa0000 x43540000 x3ece338d}\n       {x42780000 x43360000 x3ece338d}\n       {xc1b80000 x429a0000 x3ebbaeec}\n       {xc2800000 x41b00000 0}}}\n     {tx x41b00000 x431ee8ba x4391c5d1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43a60000 x43f38000 x3e092249}\n       {x43a48000 x43f30000 x3e3e2f8c}\n       {x43a20000 x43f08000 x3e5d374e}\n       {x439f0000 x43ee0000 x3e6d3b4f}\n       {x439b0000 x43ea8000 x3e7b3ed0}\n       {x43968000 x43e60000 x3e8721c8}\n       {x43910000 x43e00000 x3e8a2289}\n       {x438a8000 x43d90000 x3e8d2349}\n       {x43750000 x43c70000 x3e90a429}\n       {x43620000 x43bd0000 x3e90a429}\n       {x43040000 x438a8000 x3e9e278a}\n       {x42100000 x432a0000 x3eb0ac2b}\n       {x41500000 x43110000 x3eb5ad6b}\n       {xc2540000 x428c0000 x3eb42d0b}\n       {xc2780000 x42440000 0}}}\n     {tx x41b00000 x43493333 x43ae4444}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42820000 x43a40000 1}\n       {x42280000 x43958000 x3e802008}\n       {x41e80000 x438d8000 x3e822088}\n       {x41600000 x43850000 x3e8721c8}\n       {xbf800000 x437a0000 x3e922489}\n       {xc2300000 x434a0000 x3ea0280a}\n       {xc2680000 x433a0000 x3e9c270a}\n       {xc2aa0000 x43170000 0}}}\n     {tx x41b00000 xc0980000 x4375a000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42b60000 x439c0000 1}\n       {x429e0000 x43940000 x3e2a2a8b}\n       {x42840000 x438d0000 x3e2b2acb}\n       {x42540000 x43860000 x3e3a2e8c}\n       {x42200000 x437d0000 x3e44310c}\n       {x41d00000 x43700000 x3e4731cc}\n       {1 x43580000 x3e49324d}\n       {xc1b00000 x43400000 x3e44310c}\n       {xc1c80000 x433c0000 x3e40300c}\n       {xc1d00000 x433a0000 x3e1725c9}}}\n     {tx x41b00000 x41e26666 x43734ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x433b0000 x43e80000 1}\n       {x433e0000 x43ea8000 x3e1c270a}\n       {x433e0000 x43ec0000 x3e5735cd}\n       {x433a0000 x43ec0000 x3e7b3ed0}\n       {x43330000 x43eb0000 x3e8e2389}\n       {x43290000 x43e90000 x3e9aa6aa}\n       {x43200000 x43e60000 x3e9ba6ea}\n       {x43150000 x43e20000 x3e9e278a}\n       {x42ec0000 x43d48000 x3ea4290a}\n       {x42d60000 x43cf8000 x3ea8aa2b}\n       {x42c20000 x43cb0000 x3eb0ac2b}\n       {x42980000 x43bf8000 x3ec6318c}\n       {x42a80000 x43bf8000 x3ec6318c}\n       {x42bc0000 x43c30000 x3ebfafec}\n       {x43100000 x43d78000 x3e87a1e8}\n       {x43440000 x43ef0000 x3e8d2349}\n       {x43500000 x43f40000 x3e8ea3a9}\n       {x436c0000 x4400c000 x3e91a469}\n       {x43720000 x44024000 x3e91a469}\n       {x43760000 x44030000 x3e902409}\n       {x437b0000 x44044000 x3e59364e}\n       {x43710000 x44010000 x3e80a028}\n       {x436b0000 x43fe8000 x3e842108}\n       {x435d0000 x43f60000 x3e882209}\n       {x434a0000 x43ec0000 x3e842108}\n       {x433e0000 x43e50000 x3e6b3acf}\n       {x43320000 x43de8000 x3e4330cc}\n       {x43240000 x43d78000 x3dfc3f10}\n       {x43180000 x43cf8000 x3c882209}\n       {x42fa0000 x43bf0000 x3ce0380e}\n       {x42dc0000 x43b68000 x3d98260a}\n       {x42580000 x43980000 x3e52348d}\n       {x422c0000 x43920000 x3e693a4f}\n       {x41b80000 x43840000 x3e753d4f}\n       {x41e00000 x43838000 0}}}\n     {tx x41b00000 x431c6db7 x43d9715f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x433f0000 x43e18000 1}\n       {x43420000 x43e48000 x3e042108}\n       {x43440000 x43e80000 x3e1d274a}\n       {x43440000 x43e90000 x3e5f37ce}\n       {x43410000 x43e98000 x3e8721c8}\n       {x433f0000 x43ea0000 x3e98260a}\n       {x43380000 x43e90000 x3eb62d8b}\n       {x43220000 x43dd0000 x3eb9ae6c}\n       {x431a0000 x43d88000 x3eb82e0c}\n       {x43110000 x43d40000 x3eb5ad6b}\n       {x42ec0000 x43c88000 x3eac2b0b}\n       {x42e20000 x43c68000 x3eab2acb}\n       {x42dc0000 x43c68000 x3e8d2349}\n       {x42e60000 x43c88000 x3e6739ce}\n       {x430f0000 x43d48000 0}}}\n     {tx x41b00000 x43205555 x43daa222}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43838000 x43eb0000 1}\n       {x43818000 x43ea0000 x3e54350d}\n       {x437e0000 x43e78000 x3e5f37ce}\n       {x437a0000 x43e50000 x3e842108}\n       {x436b0000 x43dd0000 x3e9ca72a}\n       {x433a0000 x43c08000 x3eb5ad6b}\n       {x42ec0000 x43998000 x3ebe2f8c}\n       {x42c40000 x438f8000 x3ebd2f4c}\n       {x41b80000 x43590000 x3eb6adab}\n       {xc1c00000 x43380000 x3eb2acab}\n       {xc1e00000 x43380000 x3ea8aa2b}\n       {xc1e00000 x43400000 0}}}\n     {tx x41b00000 x4305d555 x43a90aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x438b0000 x43f28000 x3e753d4f}\n       {x438b0000 x43f20000 x3e7a3e90}\n       {x43898000 x43f08000 x3e812048}\n       {x43850000 x43ec0000 x3e9fa7ea}\n       {x437b0000 x43e38000 x3eba2e8c}\n       {x43530000 x43ce8000 x3ec8b22d}\n       {x43400000 x43c58000 x3eca328d}\n       {x432c0000 x43bc0000 x3ecc330d}\n       {x42d40000 x439c0000 x3ecd334d}\n       {x42a40000 x43910000 x3ecc330d}\n       {x41800000 x436a0000 x3ec8b22d}\n       {0 x435a0000 x3ec8b22d}\n       {xc1500000 x434d0000 x3ec8b22d}\n       {xc2000000 x43360000 x3eae2b8b}\n       {xc2000000 x43340000 0}}}\n     {tx x41b00000 x4308aaab x43acbbbc}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x437e0000 x44028000 1}\n       {x438d8000 x44068000 1}\n       {x43998000 x44098000 x3e44310c}\n       {x43a48000 x440bc000 x3e7b3ed0}\n       {x43ab8000 x440d4000 x3e882209}\n       {x43b00000 x440e0000 x3e8a2289}\n       {x43b10000 x440e0000 x3e8a2289}\n       {x43b10000 x440cc000 x3e892249}\n       {x43ad8000 x440b0000 x3e892249}\n       {x43a80000 x44088000 x3e98260a}\n       {x43a18000 x4405c000 x3ea2288a}\n       {x43920000 x43ff0000 x3eaeabab}\n       {x43898000 x43f88000 x3eb3aceb}\n       {x43810000 x43f20000 x3eb3aceb}\n       {x43710000 x43eb0000 x3eb3aceb}\n       {x43620000 x43e38000 x3eb12c4b}\n       {x43500000 x43dc0000 x3eb12c4b}\n       {x43120000 x43bd0000 x3e6b3acf}\n       {x43040000 x43b60000 x3e282a0b}\n       {x42ce0000 x43a78000 0}}}\n     {tx x41b00000 x43889333 x43fa1333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x43000000 x43e98000 1}\n       {x42ee0000 x43e48000 x3e87a1e8}\n       {x42d80000 x43df0000 x3e8aa2a9}\n       {x42ac0000 x43d30000 x3e9e278a}\n       {x42980000 x43cc8000 x3ea328ca}\n       {x42780000 x43c58000 x3ea729ca}\n       {x42480000 x43be0000 x3eaa2a8b}\n       {x42140000 x43b78000 x3eab2acb}\n       {x41000000 x43a60000 x3ead2b4b}\n       {x40800000 x43a18000 x3ead2b4b}\n       {1 x439c0000 x3e902409}\n       {x40800000 x439c0000 x3e352d4b}}}\n     {tx x41b00000 x4263aaab x43c09555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42900000 x43fa0000 1}\n       {x42920000 x43fa0000 x3e49324d}\n       {x428c0000 x43f88000 x3e9c270a}\n       {x42840000 x43f60000 x3ea5a96a}\n       {x42740000 x43f30000 x3eab2acb}\n       {x42580000 x43ef8000 x3eadab6b}\n       {x423c0000 x43eb0000 x3eaeabab}\n       {x41600000 x43db8000 x3eaeabab}\n       {xc2280000 x43c40000 x3e9f27ca}\n       {xc25c0000 x43bf0000 x3e98260a}\n       {xc2900000 x43b80000 0}}}\n     {tx x41b00000 x41d1745d x43e38000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42e00000 x43f80000 1}\n       {x42d80000 x43f68000 x3e60380e}\n       {x42d00000 x43f58000 x3e85a168}\n       {x42c80000 x43f38000 x3e8da369}\n       {x42bc0000 x43f20000 x3e91a469}\n       {x42920000 x43eb0000 x3e952549}\n       {x42820000 x43e80000 x3e95a569}\n       {x41c80000 x43dd8000 x3ea1a86a}\n       {x41200000 x43da8000 x3e9725c9}\n       {x41200000 x43db8000 x3e6d3b4f}\n       {x41200000 x43dd8000 0}}}\n     {tx x41b00000 x428145d1 x43e9f45d}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42b80000 x43c68000 1}\n       {x42c40000 x43cb0000 x3e743d0f}\n       {x42d00000 x43cf0000 x3e773dcf}\n       {x42e40000 x43d58000 x3e902409}\n       {x42ec0000 x43d88000 x3e91a469}\n       {x42f00000 x43db8000 x3e9324c9}\n       {x42f00000 x43dc0000 x3e9324c9}\n       {x42e60000 x43dc0000 x3ea2a8aa}\n       {x42e00000 x43db0000 x3ea328ca}\n       {x42d80000 x43da0000 x3ea3a8ea}\n       {x42c40000 x43d60000 x3ea6298a}\n       {x42c00000 x43d58000 x3e6338ce}\n       {x42c00000 x43d60000 x3e092249}\n       {x42c20000 x43d78000 0}}}\n     {tx x41b00000 x42d49249 x43d5b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42b20000 x43a58000 1}\n       {x42a80000 x43a40000 x3e64390e}\n       {x429c0000 x43a18000 x3e8320c8}\n       {x42840000 x439d0000 x3e9ca72a}\n       {x42740000 x439b0000 x3ea4290a}\n       {x42600000 x43990000 x3ea92a4b}\n       {x42540000 x43970000 x3eaa2a8b}\n       {x42440000 x43958000 x3eaaaaab}\n       {x422c0000 x43930000 x3eab2acb}\n       {x42180000 x43930000 x3e60380e}\n       {x42180000 x43950000 x3de0380e}}}\n     {tx x41b00000 x426e2e8c x439a8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42500000 x43a18000 x3e8e2389}\n       {x42280000 x439c8000 1}\n       {x42140000 x43998000 x3e9fa7ea}\n       {x41f80000 x43950000 x3eaf2bcb}\n       {x41f00000 x43930000 x3eb1ac6b}\n       {x41f00000 x43920000 x3eb2acab}\n       {x42280000 x43930000 x3e802008}\n       {x42440000 x43950000 x3e5c370e}\n       {x42600000 x43970000 x3e152549}\n       {x42800000 x439a0000 0}}}\n     {tx x41b00000 x422d3333 x43977333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42dc0000 x43cf0000 x3d18260a}\n       {x42dc0000 x43ce0000 x3dba2e8c}\n       {x42ca0000 x43c68000 x3e793e50}\n       {x42c00000 x43c30000 x3e8320c8}\n       {x42b60000 x43c00000 x3e842108}\n       {x428e0000 x43b40000 x3e842108}\n       {x42800000 x43b08000 x3e822088}\n       {x42240000 x43a40000 x3e59364e}\n       {x42080000 x43a00000 x3e46318c}\n       {x41d00000 x439d0000 x3e362d8b}\n       {x41880000 x43988000 x3d64390e}}}\n     {tx x41b00000 x428a5d17 x43b4c5d1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x422c0000 x43b80000 0}\n       {x42600000 x43bc8000 1}}}\n     {tx x41b00000 x42460000 x43ba4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x431a0000 x43ea0000 1}\n       {x43120000 x43e70000 x3e8320c8}\n       {x43030000 x43e00000 x3e882209}\n       {x42f40000 x43db0000 x3e8aa2a9}\n       {x42e40000 x43d60000 x3e8b22c9}\n       {x42880000 x43be0000 x3e98a62a}\n       {x41500000 x43a58000 x3ea5294a}\n       {1 x43a00000 x3ea5a96a}\n       {xc1300000 x439b8000 x3ea6298a}\n       {xc22c0000 x438f8000 x3ea6a9aa}\n       {xc2680000 x438c8000 x3e98a62a}\n       {xc2600000 x438e0000 x3e713c4f}\n       {xc1f80000 x43988000 0}}}\n     {tx x41b00000 x42293b14 x43b66c4f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42dc0000 x43e40000 1}\n       {x42e00000 x43e50000 x3dd4350d}\n       {x42e00000 x43e70000 x3de2388e}\n       {x42d80000 x43e50000 x3e733ccf}\n       {x42c80000 x43e08000 x3e8320c8}\n       {x42be0000 x43dd0000 x3e85a168}\n       {x42920000 x43d00000 x3e8c2309}\n       {x42820000 x43cb8000 x3e8da369}\n       {x42600000 x43c70000 x3e8ea3a9}\n       {x41e80000 x43ba0000 x3e9324c9}\n       {x40000000 x43af0000 x3e9324c9}\n       {1 x43ae0000 x3e8da369}\n       {0 x43ae0000 0}}}\n     {tx x41b00000 x4284c4ec x43ce4ec5}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x41c80000 x43af0000 1}\n       {x41980000 x43ad0000 x3d2c2b0b}\n       {x41800000 x43ab8000 x3d18260a}\n       {x41400000 x43aa8000 x3d18260a}}}\n     {tx x41b00000 x41900000 x43ac8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42980000 x43c28000 1}\n       {x42900000 x43c08000 x3d962589}\n       {x42880000 x43bf0000 x3d58360e}\n       {x42840000 x43bd0000 x3d1c270a}}}\n     {tx x41b00000 x428d0000 x43bfc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x429e0000 x43ce8000 1}\n       {x42920000 x43cc0000 x3de4390e}\n       {x42780000 x43c70000 x3dee3b8f}\n       {x42580000 x43c28000 x3dec3b0f}\n       {x42480000 x43be0000 0}}}\n     {tx x41b00000 x427e6666 x43c6cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42ac0000 x43dd8000 1}\n       {x42a40000 x43db0000 x3e2328ca}\n       {x42880000 x43d40000 x3dc0300c}}}\n     {tx x41b00000 x429d5555 x43d98000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42d60000 x43ec0000 1}\n       {x42da0000 x43ed0000 x3e312c4b}\n       {x42dc0000 x43ee0000 x3e312c4b}\n       {x42d80000 x43ed8000 x3e6d3b4f}\n       {x42d40000 x43ec8000 x3e723c8f}\n       {x42c40000 x43e98000 x3e80a028}\n       {x429c0000 x43de8000 x3e862188}\n       {x428e0000 x43db8000 x3e8721c8}\n       {x42200000 x43cc8000 x3e8721c8}\n       {x41600000 x43c00000 x3e723c8f}\n       {x41300000 x43bd8000 x3e6d3b4f}\n       {x41000000 x43bc8000 0}}}\n     {tx x41b00000 x428f5555 x43db9555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42da0000 x43f08000 1}\n       {x42da0000 x43f00000 x3e6b3acf}\n       {x42da0000 x43ef8000 x3e7e3f90}\n       {x42be0000 x43e78000 x3e8ea3a9}\n       {x42740000 x43d78000 x3ea0280a}\n       {x42480000 x43d28000 x3ea3a8ea}\n       {x40c00000 x43c00000 x3ead2b4b}\n       {xc1600000 x43b68000 x3eaaaaab}\n       {xc0c00000 x43b90000 0}}}\n     {tx x41b00000 x4266aaab x43d738e4}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42a80000 x43e70000 1}\n       {x429e0000 x43e48000 x3e1b26ca}\n       {x42900000 x43e10000 x3e46318c}\n       {x42820000 x43dd8000 x3e65394e}\n       {x42600000 x43da0000 x3e812048}\n       {x423c0000 x43d58000 x3e8ea3a9}\n       {x41600000 x43c70000 x3ea3a8ea}\n       {x40a00000 x43c08000 x3e7f3fd0}}}\n     {tx x41b00000 x42530000 x43d82000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41b00000\n       {x42c20000 x43f00000 1}\n       {x42c80000 x43f00000 x3e112449}\n       {x42c00000 x43ee0000 x3e7b3ed0}\n       {x42b80000 x43ec8000 x3e8aa2a9}\n       {x42b00000 x43ea0000 x3e96a5a9}\n       {x42700000 x43db0000 x3ebe2f8c}\n       {x42000000 x43cc8000 x3ed1344d}\n       {x41d00000 x43ca0000 x3ed1b46d}\n       {x41b00000 x43c70000 x3ea8aa2b}\n       {x42000000 x43cc0000 0}}}\n     {tx x41b00000 x42810000 x43ddb333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3c23d70a bs x41700000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 ltn x41b00000 ltm x41b00000 tt x41880000}}}}}}\n  toolbox {brush {\n  { selectAll opc 0.01 bs 15 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.01 bs 15 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 79 ltm 79 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_opacity 0.01\n  toolbar_brush_size 15\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  colorOverlay {0 0 0 0}\n  opacity 0.009999999776\n  lifetime_type \"all frames\"\n  lifetime_start 79\n  lifetime_end 79\n  brush_size 15\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_black_outside true\n  name RotoPaint2\n  xpos 162\n  ypos 3063\n }\n Dot {\n  name Dot32\n  xpos 196\n  ypos 3145\n }\npush $N803f3800\n RotoPaint {\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush284 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41600000 x42d00000 1}\n       {xc0200000 x42ca0000 x3e392e4c}\n       {xc1200000 x42c70000 x3e3d2f4c}\n       {xc1c00000 x42c30000 x3e46318c}\n       {xc1f40000 x42c20000 x3e4c330d}\n       {xc2440000 x42c20000 x3e5a368e}\n       {xc26c0000 x42c70000 x3e713c4f}\n       {xc2780000 x42d20000 x3e703c0f}\n       {xc26c0000 x42d70000 x3e723c8f}\n       {xc24c0000 x42c70000 x3e82a0a8}\n       {xc2460000 x42b50000 x3e892249}\n       {xc2460000 x42a40000 x3e86a1a8}\n       {xc2460000 x429f0000 0}}}\n     {tx 1 xc2142762 x42c1c4ec}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush283 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43560000 x430d0000 1}\n       {x43540000 x430c8000 x3e65394e}\n       {x434f0000 x430a8000 x3e703c0f}\n       {x43488000 x43090000 x3e862188}\n       {x43340000 x43040000 x3e51344d}\n       {x43240000 x43018000 0}}}\n     {tx 1 x43444000 x43086aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush282 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43490000 x42d60000 1}\n       {x43450000 x42db0000 x3eb02c0b}\n       {x43410000 x42e00000 0}}}\n     {tx 1 x43450000 x42db0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush281 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ac4000 x422a0000 1}\n       {x43ab8000 x42280000 x3e8a2289}\n       {x43aac000 x42280000 x3e282a0b}\n       {x43a9c000 x42280000 0}}}\n     {tx 1 x43ab1000 x42288000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush280 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43dcc000 x429a0000 1}\n       {x43da4000 x42950000 x3ef7bdef}\n       {x43d7c000 x428f0000 x3ef63d8f}\n       {x43d20000 x42840000 x3ee7b9ee}\n       {x43c30000 x42560000 x3ed2348d}\n       {x43ba0000 x42420000 x3e3d2f4c}\n       {x43b88000 x42400000 0}}}\n     {tx 1 x43cc5249 x427adb6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush279 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x44032000 x43be0000 1}\n       {x44024000 x43be8000 x3e842108}\n       {x4400e000 x43be8000 x3e842108}\n       {x44002000 x43be8000 x3e892249}\n       {x43fc8000 x43bdc000 x3e91a469}\n       {x43ee4000 x43b98000 x3e9aa6aa}\n       {x43ddc000 x43b48000 x3e97a5e9}\n       {x43ce4000 x43afc000 0}}}\n     {tx 1 x43f47000 x43baa000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush278 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43cb4000 x43f54000 1}\n       {x43d24000 x43f54000 x3e99264a}\n       {x43d8c000 x43f50000 x3e9ba6ea}\n       {x43df4000 x43f50000 x3ea92a4b}\n       {x43ed8000 x43f58000 x3e9b26ca}\n       {x43f14000 x43f58000 1}\n       {x44008000 x43f54000 x3e64390e}\n       {x4406a000 x43f30000 x3e3e2f8c}\n       {x440b8000 x43f08000 x3e102409}\n       {x440d8000 x43ef8000 0}}}\n     {tx 1 x43f20ccd x43f3f99a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush277 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x40b00000 x43f70000 1}\n       {x41700000 x43f3c000 x3e8da369}\n       {x41a40000 x43f24000 x3e9a268a}\n       {x42160000 x43eec000 x3eacab2b}\n       {x427c0000 x43ed0000 x3ea9aa6b}\n       {x42bf0000 x43ef0000 x3e64390e}\n       {x42ca0000 x43efc000 0}}}\n     {tx 1 x42412492 x43f11249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush276 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x40b00000 x43fe0000 1}\n       {x40000000 x43fd4000 x3e84a128}\n       {0 x43fcc000 x3e80a028}\n       {xc1080000 x43fb4000 x3e5a368e}\n       {xc1880000 x43f9c000 x3dda368e}\n       {xc19c0000 x43f9c000 x3e2c2b0b}\n       {xc19c0000 x43fa4000 0}}}\n     {tx 1 xc1024925 x43fb9249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush275 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43170000 x43f28000 1}\n       {x43078000 x43f30000 x3f04a128}\n       {x43000000 x43f38000 x3ee7b9ee}\n       {x42d20000 x43f48000 x3ea4290a}\n       {x42980000 x43f5c000 x3e773dcf}\n       {x42680000 x43f78000 0}}}\n     {tx 1 x42d9d555 x43f47555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush274 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432e0000 x43ce0000 1}\n       {x432c0000 x43cf4000 x3dc6318c}\n       {x43298000 x43d08000 x3e22288a}\n       {x43250000 x43d2c000 x3e7a3e90}\n       {x43158000 x43d50000 x3eb0ac2b}\n       {x43030000 x43d58000 x3eb9ae6c}\n       {x42ee0000 x43d6c000 0}}}\n     {tx 1 x431a4925 x43d28925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush273 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x437d8000 x43968000 1}\n       {x43678000 x43950000 x3e59364e}\n       {x43538000 x4393c000 x3e59364e}\n       {x43310000 x43924000 x3e58360e}\n       {x432a0000 x43924000 x3e392e4c}\n       {x431d0000 x43958000 x3e2d2b4b}\n       {x431c8000 x43988000 0}}}\n     {tx 1 x4341db6e x4394d249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush272 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439f0000 x43900000 1}\n       {x43a10000 x43908000 x3ea6a9aa}\n       {x43a34000 x43910000 x3ea6a9aa}\n       {x43aec000 x43950000 x3e8d2349}\n       {x43b7c000 x43994000 x3e892249}\n       {x43bd8000 x439d0000 0}}}\n     {tx 1 x43abe000 x4394caab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush271 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438d0000 x438dc000 1}\n       {x43900000 x438c8000 x3e352d4b}\n       {x43910000 x438c0000 x3cc0300c}}}\n     {tx 1 x438f5555 x438cc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush270 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a90000 x43a20000 1}\n       {x42b50000 x43a1c000 x3d8e2389}\n       {x42c00000 x43a14000 x3d942509}\n       {x42cc0000 x43a0c000 x3d942509}\n       {x42e60000 x439fc000 x3da2288a}\n       {x430c8000 x439e4000 0}}}\n     {tx 1 x42d18000 x43a0a000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush269 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x422c0000 x43934000 1}\n       {x42120000 x43960000 x3e8ca329}\n       {x41f40000 x4399c000 x3e80a028}\n       {x41b40000 x43a14000 x3dd4350d}\n       {x41a00000 x43a28000 x3dd6358d}\n       {x41480000 x43a5c000 x3dda368e}\n       {x40a00000 x43a48000 x3e6e3b8f}\n       {xc0400000 x439e8000 x3e882209}\n       {xc1200000 x4399c000 x3e8b22c9}\n       {xc1100000 x43984000 x3d882209}}}\n     {tx 1 x416ccccd x439cf333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush268 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42c50000 x43500000 1}\n       {x42b90000 x434f0000 x3dcc330d}\n       {x42af0000 x434e0000 x3e22288a}\n       {x42a40000 x434c8000 x3e372dcb}\n       {x42840000 x43480000 x3e8fa3e9}\n       {x42360000 x43410000 x3eae2b8b}\n       {x41d40000 x433f0000 x3e95a569}\n       {x41980000 x43438000 x3dda368e}\n       {x418c0000 x43470000 0}}}\n     {tx 1 x426dc71c x434871c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush267 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43210000 x43528000 1}\n       {x431e0000 x43510000 x3ea5294a}\n       {x431b8000 x43500000 x3ea5294a}\n       {x43188000 x434f0000 x3ea1a86a}\n       {x43130000 x434e0000 x3e93a4e9}\n       {x43068000 x434f0000 x3dba2e8c}\n       {x42fb0000 x43508000 0}}}\n     {tx 1 x4313b6db x43500000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush266 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x4397c000 x43630000 1}\n       {x4394c000 x43630000 x3e54350d}\n       {x4391c000 x43630000 x3e7d3f50}\n       {x43888000 x43600000 x3e783e10}\n       {x43758000 x435b8000 x3e7d3f50}\n       {x43518000 x43560000 x3e5d374e}\n       {x43440000 x43548000 0}}}\n     {tx 1 x4381c000 x435d9249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush265 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d70000 x436c0000 1}\n       {x43d24000 x43698000 x3ec2308c}\n       {x43cf8000 x43680000 x3ebdaf6c}\n       {x43cc8000 x43668000 x3ebaaeac}\n       {x43c58000 x43640000 x3ea8aa2b}\n       {x43b6c000 x43608000 x3e6d3b4f}\n       {x43b30000 x43608000 0}}}\n     {tx 1 x43c78000 x4365db6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush264 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e2c000 x43390000 1}\n       {x43e38000 x433f8000 x3e2b2acb}\n       {x43e3c000 x43420000 x3e2b2acb}\n       {x43e40000 x43448000 x3e3c2f0c}\n       {x43e3c000 x434d0000 x3e812048}\n       {x43e08000 x43568000 x3e6b3acf}\n       {x43dfc000 x43598000 0}}}\n     {tx 1 x43e29249 x43489249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush263 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42890000 x42fa0000 1}\n       {x428d0000 x42fb0000 x3e713c4f}\n       {x42920000 x42fd0000 x3e90a429}\n       {x42a30000 x43000000 x3ea4290a}\n       {x42b40000 x43018000 x3eadab6b}\n       {x42cc0000 x43028000 x3eb12c4b}\n       {x42ef0000 x43030000 x3eb8ae2c}\n       {x43008000 x43000000 x3eb4ad2b}\n       {x43050000 x42f40000 x3ebaaeac}\n       {x43050000 x42e50000 x3ebcaf2c}\n       {x43038000 x42d60000 x3eb8ae2c}\n       {x42fc0000 x42ca0000 x3eb0ac2b}\n       {x42f30000 x42c00000 x3e8fa3e9}\n       {x42f20000 x42be0000 1}\n       {x42f40000 x42b50000 x3e8da369}\n       {x43018000 x42a90000 x3e9b26ca}\n       {x43110000 x429b0000 x3e99264a}\n       {x43230000 x42920000 x3e9a268a}\n       {x433e8000 x42880000 x3e9aa6aa}\n       {x43570000 x42810000 x3e99264a}\n       {x43740000 x42660000 x3ea2a8aa}\n       {x43838000 x424c0000 x3ea5294a}\n       {x438c4000 x423a0000 x3ea0280a}\n       {x43978000 x42320000 x3e9725c9}\n       {x439c8000 x42300000 0}}}\n     {tx 1 x431ab852 x42bce148}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x432d8000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush262 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42720000 x433c0000 1}\n       {x42700000 x433d8000 x3e94a529}\n       {x426e0000 x433f0000 x3e97a5e9}\n       {x426c0000 x43420000 x3ea1a86a}\n       {x426a0000 x43450000 x3ec7b1ec}\n       {x42620000 x43458000 x3edfb7ee}\n       {x42400000 x43450000 x3ee83a0f}\n       {x421c0000 x43440000 x3eeebbaf}\n       {x42020000 x43440000 x3ed1344d}}}\n     {tx 1 x425271c7 x43420000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush261 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42890000 x431e0000 1}\n       {x42850000 x431e0000 1}\n       {x42830000 x431e0000 x3ead2b4b}\n       {x42800000 x431e0000 x3eb92e4c}\n       {x427a0000 x431e0000 x3eed3b4f}\n       {x42740000 x43208000 x3f03a0e8}\n       {x42760000 x43268000 x3f04e138}\n       {x42870000 x43308000 x3ed735cd}\n       {x428a0000 x43320000 0}}}\n     {tx 1 x428238e4 x43238000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush260 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e24000 x43160000 1}\n       {x43e14000 x43160000 x3ea6298a}\n       {x43dec000 x43148000 x3ea729ca}\n       {x43ddc000 x43118000 x3ea2a8aa}\n       {x43dd4000 x430d8000 x3ec1304c}\n       {x43dbc000 x430a8000 x3e292a4b}}}\n     {tx 1 x43ded555 x4311aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush259 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e14000 x43300000 1}\n       {x43e0c000 x432e8000 x3eb0ac2b}\n       {x43e0c000 x432c0000 x3ed6b5ad}\n       {x43e18000 x432b0000 x3ed9364e}\n       {x43e24000 x43290000 x3edb36ce}\n       {x43e24000 x43260000 x3edcb72e}\n       {x43e28000 x43238000 x3eddb76e}\n       {x43e44000 x43228000 x3ec6318c}\n       {x43e64000 x43218000 x3eba2e8c}\n       {x43e68000 x431f0000 x3ea729ca}\n       {x43e58000 x431d8000 0}}}\n     {tx 1 x43e31174 x43269746}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush258 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e78000 x43408000 1}\n       {x43e70000 x43400000 x3e98260a}\n       {x43e60000 x433f8000 x3e98260a}\n       {x43e54000 x433f0000 x3e9b26ca}\n       {x43e2c000 x433e0000 x3ea2288a}\n       {x43de0000 x433b8000 x3e99264a}\n       {x43db4000 x43398000 0}}}\n     {tx 1 x43e31b6e x433e0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush257 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f08000 x43410000 1}\n       {x43ef4000 x43408000 x3eb92e4c}\n       {x43ee8000 x43400000 x3ec9324d}\n       {x43ed0000 x433f8000 x3ef83e10}\n       {x43ec0000 x433f0000 x3ed1344d}}}\n     {tx 1 x43ee4000 x43400000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush256 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43fc4000 x43408000 1}\n       {x43fc0000 x43418000 x3ec8b22d}\n       {x43f90000 x43420000 x3f00e038}\n       {x43f7c000 x43418000 x3f022088}\n       {x43f58000 x43408000 x3f04e138}\n       {x43f30000 x433f8000 x3ef9be70}\n       {x43f24000 x43408000 x3e5735cd}}}\n     {tx 1 x43f76492 x4340db6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush255 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f7c000 x432b0000 1}\n       {x43f90000 x432c8000 x3e1f27ca}\n       {x43f98000 x432d8000 x3e1f27ca}\n       {x43fb8000 x432f8000 x3de4390e}\n       {x43fd0000 x43320000 0}}}\n     {tx 1 x43fa2666 x432e199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush254 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f04000 x43110000 1}\n       {x43ef4000 x43118000 x3eda368e}\n       {x43ee4000 x43120000 x3ee338ce}\n       {x43edc000 x43128000 x3ef03c0f}\n       {x43ee0000 x43178000 x3edbb6ee}\n       {x43f08000 x431b8000 0}}}\n     {tx 1 x43ef0000 x43145555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush253 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43fcc000 x42f80000 x3e882209}\n       {x43fc4000 x42f80000 x3ef33ccf}\n       {x43fb0000 x42fa0000 x3f1ce73a}\n       {x43fa0000 x42fb0000 x3f20e83a}\n       {x43f84000 x42fe0000 x3f19264a}\n       {x43f84000 x43010000 x3eac2b0b}\n       {x43f90000 x43030000 x3dec3b0f}\n       {x43f70000 x43048000 x3e6739ce}\n       {x43f3c000 x43060000 x3ea92a4b}\n       {x43f1c000 x43090000 x3ea92a4b}\n       {x43f18000 x430b8000 x3ea3a8ea}\n       {x43f18000 x430c8000 0}}}\n     {tx 1 x43f74000 x4302c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush252 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ac0000 x42ad0000 1}\n       {x43ac4000 x42aa0000 x3ea1a86a}\n       {x43ac8000 x42a70000 x3eaeabab}\n       {x43ad4000 x42a10000 x3eb42d0b}\n       {x43acc000 x42940000 x3eda368e}\n       {x43ac0000 x42930000 x3ed0340d}\n       {x43ac0000 x42910000 x3e59364e}}}\n     {tx 1 x43ac6492 x429eb6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush251 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43aa8000 x42d10000 1}\n       {x43aac000 x42cd0000 x3e9da76a}\n       {x43aac000 x42cb0000 x3ea3a8ea}\n       {x43aa0000 x42c80000 x3eb7adeb}\n       {x43a80000 x42bf0000 x3ed5354d}\n       {x43a54000 x42b60000 x3f006018}\n       {x43a4c000 x42b30000 x3ef03c0f}\n       {x43a68000 x42af0000 x3d042108}}}\n     {tx 1 x43a85000 x42c10000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush250 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a1c000 x42cb0000 1}\n       {x43a30000 x42cb0000 x3e042108}\n       {x43a38000 x42cb0000 x3e042108}\n       {x43a48000 x42cb0000 x3e042108}\n       {x43a64000 x42cc0000 x3da4290a}\n       {x43a74000 x42cd0000 0}}}\n     {tx 1 x43a46000 x42cb8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush249 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438f0000 x42f70000 1}\n       {x438e4000 x42f50000 x3ea6298a}\n       {x43918000 x42f40000 x3e743d0f}\n       {x43948000 x42f20000 x3d042108}}}\n     {tx 1 x4390d000 x42f48000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush248 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43874000 x430d8000 1}\n       {x43870000 x430c8000 x3e6e3b8f}\n       {x43864000 x430c0000 x3eb42d0b}\n       {x4383c000 x430a0000 x3ee739ce}\n       {x4381c000 x43090000 x3ef2bcaf}\n       {x43808000 x43070000 x3ec7b1ec}\n       {x43808000 x43048000 x3e52348d}}}\n     {tx 1 x4383db6e x4309c925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush247 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43878000 x431b0000 1}\n       {x4387c000 x431a0000 x3df03c0f}\n       {x4387c000 x43190000 x3e8ca329}\n       {x43870000 x43188000 x3eb82e0c}\n       {x43868000 x43188000 x3eb3aceb}}}\n     {tx 1 x43874ccd x43196666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush246 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43810000 x432b8000 1}\n       {x437f0000 x432b8000 x3e842108}\n       {x437d8000 x432b8000 x3e9a268a}\n       {x437c0000 x432c8000 x3eb9ae6c}\n       {x437c0000 x432f0000 x3ebc2f0c}\n       {x437c0000 x43320000 x3e9ba6ea}\n       {x437b0000 x43340000 x3e8320c8}\n       {x43780000 x43350000 x3e8d2349}\n       {x43768000 x43360000 x3eacab2b}\n       {x43770000 x43378000 x3eb12c4b}\n       {x437a0000 x43388000 x3eb0ac2b}\n       {x437b8000 x43398000 x3eb02c0b}\n       {x437d8000 x433a8000 x3ea6298a}\n       {x437f0000 x433b0000 x3e9f27ca}\n       {x437f8000 x43398000 x3e94a529}\n       {x43804000 x43368000 x3e8da369}\n       {x43824000 x43340000 x3e19264a}\n       {x43838000 x43328000 x3df03c0f}\n       {x43834000 x432e8000 x3ea92a4b}\n       {x43824000 x432b0000 x3edab6ae}\n       {x43820000 x43280000 x3ee0b82e}\n       {x43838000 x43258000 x3e7a3e90}\n       {x43848000 x43240000 0}}}\n     {tx 1 x437f4859 x43315e9c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush245 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438dc000 x43238000 1}\n       {x438cc000 x43238000 x3e0f23c9}\n       {x438c0000 x43238000 x3e18260a}\n       {x438b4000 x43240000 x3e362d8b}\n       {x438a4000 x43240000 x3e50340d}\n       {x43894000 x43258000 x3e95a569}\n       {x4388c000 x43278000 x3ec9324d}\n       {x43884000 x432a8000 x3edbb6ee}\n       {x43884000 x432c8000 x3eca328d}}}\n     {tx 1 x438a8000 x43260e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush244 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439d0000 x43208000 1}\n       {x439c8000 x43208000 x3e713c4f}\n       {x439bc000 x43200000 x3e86a1a8}\n       {x439b4000 x43200000 x3ea0280a}\n       {x439a0000 x431f0000 x3ebcaf2c}\n       {x43978000 x431e0000 x3ed1b46d}\n       {x43968000 x431e0000 x3e952549}}}\n     {tx 1 x439a5b6e x431f6db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush243 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43adc000 x43140000 1}\n       {x43ad4000 x43148000 x3e95a569}\n       {x43acc000 x43150000 x3e98260a}\n       {x43ab8000 x43168000 x3ecd334d}\n       {x43ab4000 x43198000 x3ec0300c}\n       {x43ab4000 x431c8000 x3e8ca329}\n       {x43a90000 x431d0000 x3eb5ad6b}\n       {x43a44000 x431d0000 x3f0a6299}\n       {x43a1c000 x431d0000 x3f1725c9}\n       {x439fc000 x431f8000 x3e9e278a}\n       {x439f4000 x431f8000 0}}}\n     {tx 1 x43a7fa2f x431a2e8c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush242 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43afc000 x42fd0000 1}\n       {x43af0000 x42fd0000 x3eb6adab}\n       {x43ae8000 x42fd0000 x3ebc2f0c}\n       {x43ae0000 x42fd0000 x3edab6ae}\n       {x43ad4000 x42ff0000 x3eea3a8f}\n       {x43ad0000 x43020000 x3eea3a8f}\n       {x43ac8000 x43058000 x3ec6b1ac}\n       {x43ac0000 x43068000 x3ec2b0ac}}}\n     {tx 1 x43adc000 x4300f000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush241 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c00000 x42c20000 1}\n       {x43bf4000 x42c30000 x3ea4290a}\n       {x43bec000 x42c30000 x3eb4ad2b}\n       {x43bec000 x42c60000 x3ebbaeec}\n       {x43c00000 x42cc0000 0}}}\n     {tx 1 x43bf599a x42c53333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush240 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c9c000 x42b30000 1}\n       {x43c80000 x42b20000 1}\n       {x43c70000 x42b20000 x3ed2348d}\n       {x43c68000 x42b20000 x3ee3b8ee}\n       {x43c60000 x42b20000 x3eef3bcf}\n       {x43c58000 x42b30000 x3ef3bcef}\n       {x43c48000 x42ba0000 x3eba2e8c}\n       {x43c38000 x42be0000 x3ea5294a}\n       {x43c2c000 x42c00000 0}}}\n     {tx 1 x43c5f1c7 x42b60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush239 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d60000 x42b60000 1}\n       {x43d50000 x42b40000 x3eedbb6f}\n       {x43d40000 x42b30000 x3eeebbaf}\n       {x43d38000 x42b20000 x3ef8be30}\n       {x43d28000 x42b20000 x3f022088}\n       {x43d18000 x42b30000 x3eb2acab}\n       {x43cf4000 x42b40000 x3c50340d}}}\n     {tx 1 x43d31b6e x42b36db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush238 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f24000 x42b50000 1}\n       {x43f14000 x42b50000 x3e86a1a8}\n       {x43f04000 x42b50000 x3e86a1a8}\n       {x43ec4000 x42b40000 x3ed1b46d}\n       {x43e60000 x42b30000 x3ee83a0f}\n       {x43e28000 x42b60000 x3e59364e}\n       {x43e20000 x42b70000 0}}}\n     {tx 1 x43eaa492 x42b50000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush237 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43efc000 x42980000 1}\n       {x43f0c000 x429a0000 x3eb82e0c}\n       {x43f18000 x429b0000 x3ec2b0ac}\n       {x43f40000 x429d0000 x3ef03c0f}\n       {x43f74000 x429f0000 x3f14a529}\n       {x43f94000 x42a60000 x3ef7bdef}\n       {x43f9c000 x42a90000 0}}}\n     {tx 1 x43f49b6e x429edb6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush236 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ee4000 x42740000 1}\n       {x43edc000 x42740000 x3eb4ad2b}\n       {x43ed4000 x42760000 x3eb62d8b}\n       {x43ec8000 x427c0000 x3ec0b02c}\n       {x43ecc000 x42850000 x3eae2b8b}\n       {x43edc000 x428b0000 x3df23c8f}}}\n     {tx 1 x43ed6000 x427f0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush235 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f98000 x421c0000 1}\n       {x43f94000 x42240000 x3e8e2389}\n       {x43f94000 x42280000 x3e89a269}\n       {x43fa4000 x42300000 x3e4c330d}\n       {x43fbc000 x423a0000 x3e713c4f}\n       {x43f90000 x423c0000 x3ed2b4ad}\n       {x43f40000 x423a0000 x3ee8ba2f}\n       {x43f24000 x423c0000 x3ec9324d}\n       {x43f24000 x42460000 0}}}\n     {tx 1 x43f78000 x4232e38e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush234 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f28000 x41900000 1}\n       {x43f28000 x41880000 x3ea3a8ea}\n       {x43f24000 x41800000 x3ed3b4ed}\n       {x43f30000 x41800000 x3eb9ae6c}\n       {x43f40000 x41880000 x3e842108}\n       {x43f48000 x41900000 0}}}\n     {tx 1 x43f32000 x41880000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush233 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e5c000 x41400000 x3ea2a8aa}\n       {x43e68000 x41400000 x3eb42d0b}\n       {x43e70000 x41480000 x3eb42d0b}\n       {x43e80000 x41500000 x3eb82e0c}\n       {x43ec4000 x41700000 x3ea5294a}\n       {x43ee4000 x41780000 x3e812048}\n       {x43ef0000 x41800000 0}}}\n     {tx 1 x43e9d249 x415b6db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush232 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d64000 x41ac0000 1}\n       {x43d64000 x41a40000 x3e0a2289}\n       {x43d60000 x41940000 x3e96a5a9}\n       {x43d5c000 x41800000 x3ec0300c}\n       {x43d5c000 x41600000 x3ed6b5ad}\n       {x43d84000 x41580000 x3ec1304c}\n       {x43dbc000 x41480000 x3e892249}\n       {x43dc8000 x41400000 0}}}\n     {tx 1 x43d7d000 x41808000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush231 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e98000 x42020000 1}\n       {x43ea0000 x42000000 x3dda368e}\n       {x43ea8000 x41fc0000 x3e122489}\n       {x43ea8000 x41ec0000 x3eb0ac2b}\n       {x43e9c000 x41e00000 x3eccb32d}\n       {x43e74000 x41d00000 x3eceb3ad}\n       {x43e40000 x41c80000 x3ec1304c}\n       {x43e0c000 x41c40000 x3e8ea3a9}\n       {x43dcc000 x41cc0000 x3e51344d}\n       {x43da8000 x41d80000 x3e2328ca}\n       {x43d7c000 x41d80000 x3e5a368e}\n       {x43d68000 x41c40000 x3e59364e}}}\n     {tx 1 x43e2faab x41de0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush230 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43df4000 x424a0000 x3d64390e}\n       {x43dfc000 x424a0000 x3d64390e}}}\n     {tx 1 x43df8000 x424a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush229 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43da8000 x426a0000 1}\n       {x43d9c000 x42660000 x3ec2b0ac}\n       {x43d94000 x42640000 x3ec8b22d}\n       {x43d90000 x425e0000 x3ee5394e}\n       {x43da8000 x425c0000 x3eecbb2f}\n       {x43de4000 x425c0000 x3ebcaf2c}\n       {x43df8000 x425a0000 x3e96a5a9}\n       {x43df8000 x42540000 x3e0c2309}}}\n     {tx 1 x43dbc800 x425f0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush228 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ca8000 x42680000 1}\n       {x43cb0000 x426c0000 x3e56358d}\n       {x43cc8000 x42760000 x3e812048}\n       {x43cf8000 x42810000 x3e82a0a8}\n       {x43d20000 x42840000 x3e783e10}\n       {x43d4c000 x42830000 x3ee93a4f}\n       {x43d88000 x42820000 x3f05e178}\n       {x43ddc000 x42820000 x3f0360d8}\n       {x43e00000 x42840000 0}}}\n     {tx 1 x43d3638e x427d8e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush227 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43cbc000 x42140000 1}\n       {x43cac000 x42140000 x3eb42d0b}\n       {x43c9c000 x42140000 x3eb8ae2c}\n       {x43c74000 x42120000 x3ed2b4ad}\n       {x43c5c000 x42180000 x3e0c2309}}}\n     {tx 1 x43c90ccd x42146666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush226 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c9c000 x41b00000 1}\n       {x43c94000 x41b40000 x3eb3aceb}\n       {x43c90000 x41bc0000 x3ea3a8ea}\n       {x43ca8000 x41d00000 x3e8da369}\n       {x43cc4000 x41e00000 x3e6338ce}\n       {x43cc4000 x41f00000 x3e743d0f}\n       {x43cb0000 x41f80000 x3e7a3e90}\n       {x43c98000 x42000000 x3e892249}}}\n     {tx 1 x43ca7000 x41d70000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush225 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c98000 x41300000 1}\n       {x43ca4000 x41380000 x3eaf2bcb}\n       {x43cb8000 x41500000 x3dd8360e}}}\n     {tx 1 x43ca6aab x413d5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush224 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43bc4000 x41380000 1}\n       {x43bbc000 x41300000 x3e8aa2a9}\n       {x43bbc000 x41200000 x3e842108}\n       {x43be4000 x41200000 x3e5a368e}\n       {x43bf8000 x41200000 0}}}\n     {tx 1 x43bd199a x41280000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush223 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439ec000 x41680000 x3edfb7ee}\n       {x439f8000 x41680000 x3ed4b52d}\n       {x43a04000 x41680000 x3ed4b52d}\n       {x43a60000 x41680000 x3e882209}\n       {x43aa8000 x41600000 x3e20280a}\n       {x43ab0000 x41580000 x3e25294a}\n       {x43ad0000 x41480000 x3e2a2a8b}\n       {x43ae8000 x41300000 x3e95a569}\n       {x43af4000 x41280000 x3edfb7ee}\n       {x43b14000 x41480000 x3ec4310c}\n       {x43b3c000 x41700000 0}}}\n     {tx 1 x43a99d17 x4155d174}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush222 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43768000 x41180000 1}\n       {x43750000 x41100000 x3efb3ed0}\n       {x43740000 x41000000 x3ef2bcaf}\n       {x43730000 x40d00000 x3efabeb0}\n       {x437a0000 x40d00000 x3eeb3acf}\n       {x43850000 x40d00000 x3e8a2289}\n       {x4386c000 x40d00000 0}}}\n     {tx 1 x437c0000 x40f00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush221 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439b4000 x41bc0000 1}\n       {x439a8000 x41b80000 x3ebbaeec}\n       {x4399c000 x41b40000 x3ebbaeec}\n       {x43984000 x41a80000 x3eb82e0c}\n       {x43964000 x41940000 x3ebeafac}\n       {x43928000 x41840000 x3ebeafac}\n       {x438f4000 x41840000 x3ec1304c}\n       {x4389c000 x418c0000 x3ee6398e}\n       {x43854000 x41900000 x3ee1384e}\n       {x43824000 x41840000 0}}}\n     {tx 1 x4391b333 x419acccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush220 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a88000 x42280000 1}\n       {x43a70000 x42220000 x3ed9b66e}\n       {x43a34000 x42140000 x3ed5354d}\n       {x43a10000 x420a0000 0}}}\n     {tx 1 x43a4f000 x421a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush219 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ab0000 x42800000 1}\n       {x43aac000 x427c0000 x3eacab2b}\n       {x43aa4000 x427a0000 x3eae2b8b}\n       {x43a8c000 x426e0000 x3ee3b8ee}\n       {x43a74000 x42600000 x3efdbf70}\n       {x43a9c000 x425a0000 x3e693a4f}}}\n     {tx 1 x43a9a000 x426faaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush218 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43930000 x42660000 1}\n       {x43930000 x426c0000 x3e5d374e}\n       {x43938000 x42740000 x3eac2b0b}\n       {x43944000 x427c0000 x3ec7b1ec}\n       {x43944000 x42800000 x3ef1bc6f}\n       {x43948000 x42820000 x3ef3bcef}\n       {x43958000 x42850000 x3ebe2f8c}\n       {x43970000 x42860000 x3ea6a9aa}\n       {x439a8000 x42870000 x3ea9aa6b}\n       {x439c0000 x42870000 x3ec2b0ac}\n       {x439c8000 x42860000 x3eefbbef}\n       {x439c0000 x42870000 x3f0c6319}\n       {x439bc000 x428b0000 x3f09a269}\n       {x439bc000 x42920000 x3efbbef0}\n       {x439e4000 x42990000 x3ea5294a}\n       {x439f8000 x42990000 0}}}\n     {tx 1 x43987400 x42858000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush217 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43848000 x42300000 1}\n       {x4383c000 x42320000 x3eaeabab}\n       {x43834000 x42320000 x3ebbaeec}\n       {x4382c000 x42440000 x3f022088}\n       {x43840000 x42480000 x3f042108}\n       {x43884000 x424c0000 x3f09e279}\n       {x438c0000 x424e0000 x3eee3b8f}\n       {x438f8000 x42500000 x3e713c4f}\n       {x43914000 x42520000 0}}}\n     {tx 1 x4387eaab x42431c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush216 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41a40000 x431e0000 1}\n       {x41940000 x431d8000 x3e5e378e}\n       {x41840000 x431c8000 x3e5e378e}\n       {x41700000 x431b8000 x3e282a0b}}}\n     {tx 1 x418d0000 x431ce000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush215 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x420c0000 x43180000 1}\n       {x420c0000 x43190000 1}\n       {x42100000 x431a0000 x3e60380e}\n       {x420a0000 x431a8000 x3e80a028}\n       {x41fc0000 x431a8000 x3e8d2349}\n       {x41dc0000 x431b0000 x3e50340d}\n       {x41d40000 x431b0000 0}}}\n     {tx 1 x42012492 x431a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush214 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42830000 x43008000 1}\n       {x42800000 x43010000 x3d44310c}\n       {x42720000 x43038000 x3d60380e}\n       {x425e0000 x43078000 x3e002008}\n       {x424c0000 x430c0000 x3e9e278a}\n       {x42440000 x430d0000 x3ed3b4ed}\n       {x42380000 x430d8000 x3f13e4f9}\n       {x42240000 x430e0000 x3f1725c9}\n       {x42100000 x430f0000 x3efe3f90}\n       {x42080000 x430f8000 0}}}\n     {tx 1 x42490000 x43098ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush213 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ac0000 x42d30000 1}\n       {x42a90000 x42d40000 x3ea328ca}\n       {x42a60000 x42d60000 x3e8ca329}\n       {x42a10000 x42dc0000 x3e60380e}\n       {x42990000 x42e60000 x3e25294a}\n       {x428e0000 x42f30000 x3eb2acab}\n       {x42880000 x42fb0000 x3ec8320d}\n       {x42840000 x42fe0000 x3e5e378e}}}\n     {tx 1 x4299e000 x42e56000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush212 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42f60000 x42c00000 1}\n       {x42f30000 x42c00000 x3ea1284a}\n       {x42f00000 x42c00000 x3ea2a8aa}\n       {x42e90000 x42c00000 x3ec2308c}\n       {x42cf0000 x42bc0000 x3f086219}\n       {x42c00000 x42bb0000 x3f0761d8}\n       {x42bd0000 x42c30000 0}}}\n     {tx 1 x42dd6db7 x42bf2492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush211 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43180000 x42940000 x3eb3aceb}\n       {x43190000 x42940000 x3ed0340d}\n       {x431c0000 x42930000 x3ed1b46d}\n       {x43210000 x42930000 x3ec8320d}\n       {x43240000 x42950000 x3eaa2a8b}\n       {x43220000 x42970000 x3ebc2f0c}\n       {x43200000 x42980000 x3ebeafac}\n       {x43190000 x42a00000 x3eacab2b}\n       {x43148000 x42a80000 x3e84a128}\n       {x43110000 x42af0000 x3e7f3fd0}\n       {x430b0000 x42b30000 x3e89a269}\n       {x43088000 x42b60000 0}}}\n     {tx 1 x43188000 x429ed555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush210 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42dd0000 x42a30000 x3eb2acab}\n       {x42e00000 x42a10000 x3edb36ce}\n       {x42e60000 x42a30000 x3ec6318c}\n       {x42f30000 x42a90000 x3e743d0f}\n       {x42f70000 x42aa0000 x3e5334cd}\n       {x42f90000 x42a60000 x3ee2b8ae}\n       {x42fc0000 x42a30000 x3efc3f10}\n       {x43000000 x429d0000 x3f0360d8}\n       {x43020000 x42980000 x3f05a168}\n       {x43050000 x42970000 x3ee6398e}\n       {x430a8000 x42980000 x3e98a62a}\n       {x430b0000 x42940000 x3e94a529}\n       {x43068000 x428e0000 x3e51344d}\n       {x42fe0000 x42840000 x3ec9324d}\n       {x42fa0000 x427e0000 x3edf37ce}\n       {x43000000 x427e0000 x3eb8ae2c}\n       {x43048000 x427e0000 0}}}\n     {tx 1 x42fcc3c4 x42972d2d}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush209 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42940000 x42bb0000 1}\n       {x428f0000 x42b10000 x3eb82e0c}\n       {x428e0000 x42ae0000 x3ec9b26d}\n       {x428e0000 x42ab0000 x3ed334cd}\n       {x428e0000 x42a40000 x3edb36ce}\n       {x428e0000 x429d0000 x3ee3b8ee}\n       {x42910000 x429a0000 x3eea3a8f}\n       {x429b0000 x429a0000 x3e802008}\n       {x42a20000 x429c0000 0}}}\n     {tx 1 x4292c71c x42a60000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush208 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42620000 x42b80000 1}\n       {x42660000 x42b80000 x3ea3a8ea}\n       {x426c0000 x42b80000 x3ebcaf2c}\n       {x427c0000 x42b80000 x3ef93e50}\n       {x428a0000 x42ba0000 x3efebfb0}\n       {x42960000 x42bf0000 x3ec4b12c}\n       {x42990000 x42c20000 0}}}\n     {tx 1 x42826db7 x42bab6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush207 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41a40000 x42a00000 1}\n       {x419c0000 x42a60000 x3ebc2f0c}\n       {x41a00000 x42aa0000 x3eb1ac6b}\n       {x41c00000 x42b10000 x3e8e2389}\n       {x41c80000 x42b40000 x3cc8320d}\n       {x41c00000 x42b50000 x3dc8320d}}}\n     {tx 1 x41b15555 x42ac5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush206 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42080000 x42520000 1}\n       {x42040000 x42560000 x3e9c270a}\n       {x42020000 x425c0000 x3e9da76a}\n       {x42020000 x426a0000 x3e922489}\n       {x42020000 x42720000 x3e90a429}\n       {x41d80000 x42760000 x3ee739ce}\n       {x41c00000 x42760000 x3f04e138}\n       {x41a00000 x427a0000 x3f19a66a}\n       {x41a00000 x42820000 x3efa3e90}\n       {x41a00000 x42850000 0}}}\n     {tx 1 x41dc6666 x426ecccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush205 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41780000 x42060000 1}\n       {x41840000 x42060000 x3ea2a8aa}\n       {x418c0000 x42080000 x3eb6adab}\n       {x41a80000 x420c0000 x3eb0ac2b}\n       {x41bc0000 x420e0000 x3e9a268a}\n       {x41d00000 x420a0000 x3d942509}\n       {x41c00000 x42040000 x3eab2acb}\n       {x41800000 x41fc0000 x3f13a4e9}\n       {x41500000 x42040000 x3f0f63d9}\n       {x419c0000 x421e0000 x3e2d2b4b}}}\n     {tx 1 x419a0000 x42093333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush204 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x40e00000 x40e00000 1}\n       {x40b00000 x40e00000 x3f002008}\n       {x40800000 x40e00000 x3ef9be70}\n       {0 x40d00000 x3efbbef0}\n       {xc0200000 x40d00000 x3ef93e50}\n       {xc0d00000 x41000000 x3ef4bd2f}\n       {xc1580000 x41280000 x3ec6318c}\n       {xc1700000 x41680000 x3e8320c8}\n       {xc1300000 x41a40000 x3e3c2f0c}\n       {xc1000000 x41b40000 x3e052148}\n       {xc0a00000 x41c40000 0}}}\n     {tx 1 xc082e8ba x4143a2e9}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush203 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42740000 x41b00000 1}\n       {x42700000 x41ac0000 x3ea4290a}\n       {x426c0000 x41a80000 x3ebd2f4c}\n       {x42680000 x41a80000 x3f0d2349}\n       {x42640000 x41a80000 x3f0ee3b9}\n       {x425c0000 x41a80000 x3f106419}\n       {x42460000 x41ac0000 x3f0fe3f9}\n       {x42400000 x41b00000 x3f0aa2a9}\n       {x422e0000 x41b80000 x3ed5354d}\n       {x42220000 x41b40000 x3eb4ad2b}\n       {x42100000 x41980000 x3ee93a4f}\n       {x41f80000 x41780000 x3f162589}\n       {x41c80000 x41400000 x3f1c270a}\n       {x41b80000 x41380000 x3ee338ce}}}\n     {tx 1 x4238b6db x419cdb6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush202 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43098000 x41e00000 1}\n       {x43078000 x41dc0000 x3ec0b02c}\n       {x43040000 x41d40000 x3ec9b26d}\n       {x43020000 x41d40000 x3ed1344d}\n       {x43000000 x41d40000 x3eb1ac6b}\n       {x42f90000 x41e40000 x3e352d4b}\n       {x42f00000 x41e80000 x3e95a569}\n       {x42e00000 x41c00000 x3eef3bcf}\n       {x42d70000 x41a40000 x3f00e038}\n       {x42d50000 x419c0000 x3ef6bdaf}\n       {x42da0000 x419c0000 x3eac2b0b}\n       {x42e50000 x418c0000 x3c98260a}\n       {x42e90000 x41500000 x3e8320c8}\n       {x42e50000 x41280000 x3ec0300c}\n       {x42d80000 x41300000 x3ecc330d}\n       {x42c30000 x41380000 x3ebd2f4c}\n       {x42a60000 x41400000 x3e98260a}\n       {x429f0000 x41400000 x3d8c2309}}}\n     {tx 1 x42e471c7 x41a18e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush201 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432f0000 x41780000 1}\n       {x432d0000 x41700000 x3efb3ed0}\n       {x432b8000 x41680000 x3ef6bdaf}\n       {x432a0000 x41680000 x3ef6bdaf}\n       {x43290000 x41680000 x3ef7bdef}\n       {x43280000 x41880000 x3c50340d}}}\n     {tx 1 x432b1555 x4172aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush200 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43680000 x426e0000 1}\n       {x43668000 x426a0000 x3eaf2bcb}\n       {x43650000 x42640000 x3eb42d0b}\n       {x43630000 x42600000 x3ed6b5ad}\n       {x435d8000 x425a0000 x3db42d0b}\n       {x435c0000 x425a0000 x3e0c2309}\n       {x43590000 x42580000 x3e49324d}\n       {x43558000 x42580000 x3e60380e}\n       {x43520000 x42520000 x3ea2a8aa}\n       {x43500000 x42460000 x3eb5ad6b}\n       {x434d0000 x423a0000 x3ecdb36d}\n       {x43498000 x42360000 x3ed7b5ed}\n       {x43460000 x42360000 x3ed6b5ad}\n       {x433f0000 x42400000 x3ed2348d}\n       {x433b0000 x42420000 x3eceb3ad}\n       {x43360000 x423a0000 x3ed6b5ad}\n       {x43328000 x42360000 x3ed334cd}\n       {x43308000 x42320000 x3ea7a9ea}\n       {x432e0000 x42280000 x3ea7a9ea}\n       {x432d0000 x421e0000 x3e9ca72a}\n       {x432e8000 x42120000 x3e922489}\n       {x43308000 x420a0000 x3eaf2bcb}\n       {x43308000 x42000000 x3ed7b5ed}\n       {x43308000 x41ec0000 x3eefbbef}\n       {x43330000 x41e80000 x3ec7b1ec}\n       {x433b0000 x41e80000 x3ebfafec}\n       {x43448000 x41dc0000 x3e9a268a}\n       {x43488000 x41c40000 x3e902409}\n       {x43480000 x41b00000 x3eaf2bcb}\n       {x43440000 x41a80000 x3ecdb36d}\n       {x433d0000 x419c0000 x3ed735cd}\n       {x43360000 x41940000 x3ea1284a}}}\n     {tx 1 x43452800 x4225b000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush199 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x437f0000 x429d0000 1}\n       {x437d8000 x429d0000 x3d942509}\n       {x437c0000 x429c0000 x3dec3b0f}\n       {x43798000 x429c0000 x3e082209}\n       {x43770000 x429c0000 x3dae2b8b}}}\n     {tx 1 x437b6666 x429c6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush198 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43860000 x42a40000 1}\n       {x43854000 x42a30000 x3e52348d}\n       {x43848000 x42a20000 x3e52348d}\n       {x4383c000 x42a20000 x3e52348d}\n       {x43834000 x42a10000 x3e58360e}\n       {x43824000 x42a00000 x3a802008}}}\n     {tx 1 x43842aab x42a20000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush197 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438f4000 x42bf0000 1}\n       {x438d8000 x42bb0000 x3e743d0f}\n       {x438cc000 x42ba0000 x3e743d0f}\n       {x438c0000 x42b80000 x3e773dcf}\n       {x438b8000 x42b70000 x3e773dcf}\n       {x438ac000 x42b50000 0}}}\n     {tx 1 x438ca000 x42b95555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush196 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438bc000 x42df0000 1}\n       {x438c0000 x42dc0000 x3e392e4c}\n       {x438c0000 x42d90000 x3e802008}\n       {x438b8000 x42d20000 x3ea9aa6b}\n       {x438a8000 x42cb0000 x3ec4b12c}\n       {x438b8000 x42c80000 x3eb02c0b}\n       {x438ec000 x42c80000 x3e372dcb}\n       {x438f8000 x42c70000 0}}}\n     {tx 1 x438c7000 x42d10000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush195 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43844000 x42e80000 1}\n       {x4383c000 x42e70000 x3e8320c8}\n       {x43834000 x42e50000 x3e842108}\n       {x43830000 x42e20000 x3e84a128}\n       {x43854000 x42e20000 x3df23c8f}\n       {x43874000 x42e20000 0}}}\n     {tx 1 x43847555 x42e45555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush194 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438bc000 x42f50000 1}\n       {x438b0000 x42f40000 x3e61384e}\n       {x438a4000 x42f40000 x3e59364e}\n       {x4388c000 x42f30000 x3db82e0c}}}\n     {tx 1 x438a7000 x42f40000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush193 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439b4000 x42f90000 1}\n       {x439ac000 x42f70000 x3e002008}\n       {x439a4000 x42f60000 x3e0f23c9}\n       {x43998000 x42f40000 x3e4330cc}\n       {x4397c000 x42f00000 x3e9324c9}\n       {x43944000 x42ea0000 x3ed334cd}\n       {x43910000 x42e90000 x3ee7b9ee}\n       {x438fc000 x42ef0000 x3eae2b8b}\n       {x438fc000 x42f20000 0}}}\n     {tx 1 x4396071c x42f18e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush192 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438d4000 x430a0000 1}\n       {x438cc000 x430a0000 x3ed0340d}\n       {x438fc000 x430a8000 x3ed5354d}\n       {x4392c000 x43098000 x3ed4b52d}\n       {x43944000 x43090000 x3ed4b52d}\n       {x439b0000 x43078000 x3ed1b46d}\n       {x43a10000 x43068000 x3eb8ae2c}\n       {x43a44000 x43060000 x3e86a1a8}\n       {x43a2c000 x43060000 x3e783e10}\n       {x43a24000 x43058000 x3e4b32cd}\n       {x43a10000 x43040000 x3e092249}\n       {x439f8000 x43018000 0}}}\n     {tx 1 x4399e000 x43072aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush191 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43418000 x43648000 1}\n       {x433c8000 x43648000 x3e743d0f}\n       {x433a0000 x43648000 x3ea1a86a}\n       {x43338000 x43630000 x3ecdb36d}\n       {x432d8000 x43608000 x3ecdb36d}\n       {x432b8000 x435f8000 0}}}\n     {tx 1 x43361555 x4362c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush190 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x434a0000 x43518000 1}\n       {x43490000 x43520000 x3e9a268a}\n       {x43480000 x43538000 x3ea5a96a}\n       {x43480000 x435b0000 x3e912449}\n       {x43480000 x435e0000 0}}}\n     {tx 1 x4348999a x43566666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush189 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x4381c000 x435f8000 1}\n       {x43808000 x435f8000 x3e22288a}\n       {x437b8000 x43600000 x3e882209}\n       {x43770000 x43600000 x3e9b26ca}\n       {x43718000 x43600000 x3e9a268a}\n       {x43690000 x435c8000 x3de0380e}}}\n     {tx 1 x43784000 x435f4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush188 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43858000 x43438000 1}\n       {x43850000 x43438000 1}\n       {x43848000 x43438000 x3ea9aa6b}\n       {x43838000 x43438000 x3ec2b0ac}\n       {x4381c000 x43440000 x3ec7b1ec}\n       {x43804000 x43450000 x3ec6b1ac}\n       {x437d8000 x434b0000 x3eb02c0b}\n       {x437f0000 x43538000 x3ea0280a}\n       {x4383c000 x435c0000 x3ea7a9ea}\n       {x43844000 x435e0000 x3e58360e}\n       {x43834000 x435e0000 0}}}\n     {tx 1 x4382ba2f x434cdd17}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush187 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43408000 x439d4000 1}\n       {x43408000 x439cc000 x3e51344d}\n       {x43408000 x439c4000 x3e723c8f}\n       {x43400000 x439b0000 x3ebaaeac}\n       {x433d8000 x439a4000 x3ee338ce}\n       {x433b0000 x43998000 x3edbb6ee}\n       {x43390000 x43998000 x3c102409}}}\n     {tx 1 x433e2492 x439b36db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush186 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432e8000 x43a58000 1}\n       {x432e8000 x43a4c000 x3e773dcf}\n       {x432e8000 x43a40000 x3eacab2b}\n       {x432d0000 x43a28000 x3ed0340d}\n       {x432c8000 x43a14000 x3edc370e}\n       {x432c8000 x43a00000 x3ed2b4ad}\n       {x432c0000 x439f0000 x3ec6b1ac}\n       {x432c8000 x439d8000 x3ec6318c}\n       {x43318000 x439d4000 x3e8ca329}\n       {x43348000 x439d4000 0}}}\n     {tx 1 x432e6666 x43a0e666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush185 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43330000 x43a80000 1}\n       {x43310000 x43a7c000 x3dba2e8c}\n       {x432f8000 x43a78000 x3dcc330d}\n       {x432c0000 x43a74000 x3e49324d}\n       {x432b0000 x43a74000 x3e042108}}}\n     {tx 1 x432ee666 x43a78ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush184 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438dc000 x43c34000 1}\n       {x438cc000 x43c1c000 x3ea6a9aa}\n       {x438c4000 x43c14000 x3eb12c4b}\n       {x438ac000 x43bfc000 x3eb8ae2c}\n       {x438b4000 x43bec000 x3ea7a9ea}\n       {x438e4000 x43be0000 x3e18260a}\n       {x43914000 x43bd8000 x3e693a4f}\n       {x43958000 x43bd8000 x3e52348d}\n       {x43990000 x43bd8000 0}\n       {x43990000 x43bd0000 x3dde378e}\n       {x43974000 x43bb0000 x3e773dcf}\n       {x43960000 x43b90000 x3e8320c8}\n       {x43948000 x43b6c000 x3ea7a9ea}\n       {x4392c000 x43b50000 x3eb42d0b}\n       {x438ec000 x43b24000 x3ea9aa6b}\n       {x438b8000 x43b0c000 x3ea5294a}\n       {x43890000 x43af8000 x3e9e278a}\n       {x43850000 x43ae4000 x3ea328ca}\n       {x43818000 x43ad4000 x3eb5ad6b}\n       {x437d0000 x43ad0000 x3edcb72e}\n       {x437a8000 x43ac8000 x3eeebbaf}\n       {x43740000 x43ac8000 x3ee8ba2f}\n       {x436d0000 x43ac8000 x3ee739ce}\n       {x43670000 x43ac8000 x3eb9ae6c}\n       {x43630000 x43ac4000 x3df63d8f}\n       {x435e0000 x43aa8000 x3e292a4b}\n       {x43540000 x43a8c000 x3e7d3f50}\n       {x434c0000 x43a84000 x3e9b26ca}\n       {x43440000 x43a98000 x3ea5a96a}\n       {x433e0000 x43ac4000 x3e86a1a8}\n       {x433a8000 x43ae4000 x3b802008}}}\n     {tx 1 x438298c6 x43b4273a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush183 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43824000 x43e58000 1}\n       {x43828000 x43e50000 x3e8fa3e9}\n       {x43830000 x43e4c000 x3ea1284a}\n       {x43858000 x43e4c000 x3ea2288a}\n       {x4389c000 x43e4c000 x3dec3b0f}}}\n     {tx 1 x4384999a x43e4f333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush182 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43550000 x43ee8000 1}\n       {x43568000 x43ee8000 x3e6a3a8f}\n       {x43580000 x43ee8000 x3e8320c8}\n       {x435c8000 x43ee8000 x3e8ea3a9}\n       {x43628000 x43ee8000 0}}}\n     {tx 1 x435a199a x43ee8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush181 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43288000 x43edc000 1}\n       {x432a8000 x43edc000 x3e5334cd}\n       {x432d0000 x43edc000 x3e842108}\n       {x43318000 x43ee0000 x3ea6a9aa}\n       {x433c8000 x43ef0000 x3eb4ad2b}\n       {x43420000 x43efc000 x3e4330cc}}}\n     {tx 1 x4332aaab x43ee5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush180 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43398000 x43ddc000 1}\n       {x43378000 x43ddc000 x3e6739ce}\n       {x43330000 x43ddc000 x3eb62d8b}\n       {x432d8000 x43de4000 x3ec2308c}\n       {x43260000 x43de8000 x3ec2b0ac}\n       {x43208000 x43df4000 x3eb2acab}\n       {x431d0000 x43e0c000 x3e6a3a8f}\n       {x431c0000 x43e14000 x3e54350d}\n       {x431b8000 x43e34000 x3e2d2b4b}\n       {x431b8000 x43e50000 x3e44310c}\n       {x43188000 x43e5c000 x3ecd334d}\n       {x43120000 x43e5c000 x3f07a1e8}\n       {x430b0000 x43e5c000 x3f1324c9}\n       {x43078000 x43e5c000 x3f0d2349}\n       {x43068000 x43e60000 0}}}\n     {tx 1 x431ea222 x43e1e666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush179 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x435c8000 x43dd0000 1}\n       {x43598000 x43dc8000 x3e8320c8}\n       {x43558000 x43dc0000 x3ecab2ad}\n       {x43520000 x43db8000 x3f026098}\n       {x43508000 x43db8000 x3eef3bcf}\n       {x43500000 x43dc0000 0}}}\n     {tx 1 x43550000 x43dc1555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush178 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436f0000 x43d84000 1}\n       {x436e0000 x43d88000 x3ed0340d}\n       {x436d8000 x43d90000 x3ef5bd6f}\n       {x436d8000 x43d98000 x3effbff0}\n       {x436d8000 x43dac000 x3f00a028}\n       {x436e0000 x43dc4000 x3efc3f10}\n       {x436e0000 x43dcc000 x3ef6bdaf}\n       {x436e8000 x43dd8000 x3ee6398e}\n       {x436a0000 x43ddc000 x3ec6318c}\n       {x43670000 x43de0000 x3dd2348d}}}\n     {tx 1 x436ce666 x43db399a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush177 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43688000 x43cf4000 1}\n       {x43670000 x43cf4000 x3ef1bc6f}\n       {x43658000 x43cf4000 x3ef43d0f}\n       {x43638000 x43cf4000 x3f122489}\n       {x43628000 x43cfc000 x3f17a5e9}\n       {x43638000 x43d20000 x3f006018}\n       {x43660000 x43d48000 x3ed334cd}\n       {x43678000 x43d54000 0}}}\n     {tx 1 x43658000 x43d11000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush176 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43814000 x43864000 1}\n       {x4380c000 x43864000 1}\n       {x43804000 x43868000 x3e922489}\n       {x437e0000 x4386c000 x3ec6318c}\n       {x437d0000 x4387c000 x3ec6b1ac}\n       {x437d0000 x43894000 x3eb0ac2b}\n       {x437b8000 x438a4000 x3ebd2f4c}\n       {x43748000 x438b4000 x3ee2388e}\n       {x436c8000 x438bc000 x3f04a128}\n       {x43690000 x438c8000 x3f066198}\n       {x43680000 x438e4000 x3ee338ce}\n       {x43678000 x438f0000 x3edfb7ee}\n       {x43648000 x438fc000 x3ee6398e}\n       {x43620000 x438fc000 x3ef5bd6f}\n       {x435e0000 x43900000 x3f0320c8}\n       {x435b0000 x4390c000 x3f05e178}\n       {x43588000 x43920000 x3f046118}\n       {x43580000 x43944000 x3f02e0b8}\n       {x43578000 x4396c000 x3f00e038}\n       {x43580000 x43984000 x3efebfb0}\n       {x435b8000 x43998000 x3ed6b5ad}\n       {x435d0000 x4399c000 x3ec4310c}\n       {x43620000 x439ac000 x3e51344d}\n       {x43630000 x439ac000 x3ba0280a}}}\n     {tx 1 x4369f000 x438f8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush175 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43830000 x43804000 1}\n       {x43830000 x4380c000 x3e8da369}\n       {x4382c000 x43818000 x3ea729ca}\n       {x43820000 x43830000 x3ea8aa2b}\n       {x43820000 x4383c000 0}}}\n     {tx 1 x43828ccd x4381d99a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush174 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43934000 x43720000 1}\n       {x43930000 x43710000 x3eb2acab}\n       {x4392c000 x43700000 x3ed6b5ad}\n       {x43918000 x436d8000 x3f026098}\n       {x438f8000 x436b0000 x3f0b22c9}\n       {x438e0000 x436a0000 x3f06e1b8}\n       {x438d0000 x436a0000 0}}}\n     {tx 1 x4390b6db x436da492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush173 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b74000 x436e0000 1}\n       {x43b6c000 x436e0000 x3e8aa2a9}}}\n     {tx 1 x43b70000 x436e0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush172 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c10000 x436d8000 1}\n       {x43c04000 x436d8000 x3e713c4f}\n       {x43bf4000 x436d8000 x3e842108}\n       {x43bdc000 x436e0000 x3e312c4b}\n       {x43bd4000 x436e0000 x3ce0380e}\n       {x43bc4000 x436e0000 x3e2c2b0b}}}\n     {tx 1 x43bea000 x436dc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush171 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d20000 x43750000 1}\n       {x43d20000 x43740000 x3e392e4c}\n       {x43d20000 x43730000 x3e5735cd}\n       {x43d1c000 x43720000 x3e84a128}\n       {x43cec000 x436c0000 x3ed8360e}\n       {x43c9c000 x43678000 x3f016058}\n       {x43c70000 x43670000 x3ef83e10}\n       {x43c64000 x43680000 0}}}\n     {tx 1 x43cdb000 x436e1000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush170 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43bc4000 x43778000 1}\n       {x43be8000 x43778000 x3e912449}\n       {x43bfc000 x43778000 x3ea3a8ea}\n       {x43c34000 x43778000 x3ec4310c}\n       {x43c68000 x43778000 x3ec7b1ec}\n       {x43c98000 x43770000 x3ed5b56d}\n       {x43cc0000 x43758000 x3ed6b5ad}\n       {x43ce4000 x43750000 x3ed735cd}\n       {x43d04000 x43760000 x3eab2acb}\n       {x43d0c000 x43768000 x3dc6318c}}}\n     {tx 1 x43c74ccd x4376c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush169 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c5c000 x43468000 1}\n       {x43c5c000 x43478000 x3e6d3b4f}\n       {x43c64000 x43490000 x3e892249}\n       {x43c80000 x43510000 x3ef03c0f}\n       {x43c84000 x43520000 x3ef03c0f}\n       {x43c8c000 x43540000 x3ee5394e}\n       {x43c8c000 x43560000 x3ed7b5ed}\n       {x43c7c000 x43588000 x3ed7b5ed}\n       {x43c58000 x435a0000 x3ee4390e}\n       {x43c18000 x435b8000 x3f04e138}\n       {x43bac000 x435d8000 x3f1ae6ba}\n       {x43b60000 x435f0000 x3f1ae6ba}\n       {x43b50000 x435f8000 x3f1ae6ba}\n       {x43b14000 x43618000 x3f1a669a}\n       {x43ae8000 x43640000 x3f1a669a}\n       {x43acc000 x43678000 x3f18a62a}\n       {x43abc000 x43698000 x3f0721c8}\n       {x43ab4000 x436c0000 x3e322c8b}}}\n     {tx 1 x43bd1555 x4359ce39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush168 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43cf0000 x43340000 1}\n       {x43ce4000 x43340000 x3ea1284a}\n       {x43cd8000 x43348000 x3ea5a96a}\n       {x43cc8000 x43348000 x3eb62d8b}\n       {x43ca8000 x43350000 x3ee739ce}\n       {x43c8c000 x43380000 x3eefbbef}\n       {x43c7c000 x433b8000 x3ed3b4ed}\n       {x43c78000 x433f8000 x3ea7a9ea}\n       {x43c74000 x43420000 x3d7c3f10}}}\n     {tx 1 x43cac71c x43385555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush167 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e18000 x43058000 x3ec1b06c}\n       {x43e1c000 x43048000 x3ecab2ad}\n       {x43e24000 x43038000 x3ecdb36d}\n       {x43e4c000 x43010000 x3edc370e}\n       {x43e68000 x42fe0000 x3ed2b4ad}\n       {x43e6c000 x42f90000 x3eceb3ad}\n       {x43e58000 x42f30000 x3eedbb6f}\n       {x43e5c000 x42ee0000 x3ef23c8f}\n       {x43e94000 x42ee0000 x3ec6318c}\n       {x43ee0000 x42f00000 x3eaa2a8b}\n       {x43ef4000 x42f10000 0}}}\n     {tx 1 x43e6a8ba x42fa8ba3}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush166 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d80000 x43130000 1}\n       {x43d68000 x43120000 x3edb36ce}\n       {x43d54000 x43110000 x3ee0b82e}\n       {x43d40000 x43100000 x3f006018}\n       {x43d18000 x430e0000 x3f13e4f9}\n       {x43d0c000 x430d8000 x3f1b66da}\n       {x43cfc000 x430c0000 x3f22e8ba}\n       {x43d20000 x430b8000 x3f1c270a}\n       {x43d54000 x430b0000 x3eba2e8c}\n       {x43d60000 x430a8000 0}}}\n     {tx 1 x43d3e666 x430e4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush165 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ce8000 x431d0000 1}\n       {x43ce0000 x431c8000 x3ee739ce}\n       {x43d00000 x431c0000 x3ef0bc2f}\n       {x43d10000 x431c0000 x3ee0380e}\n       {x43d34000 x431b8000 x3eb12c4b}\n       {x43d64000 x431b0000 0}}}\n     {tx 1 x43d12aab x431c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush164 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43bd0000 x431b8000 1}\n       {x43bd8000 x431b0000 x3ea729ca}\n       {x43be0000 x431a8000 x3ea8aa2b}\n       {x43c08000 x431b0000 0}}}\n     {tx 1 x43be4000 x431b0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush163 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b14000 x431e8000 1}\n       {x43b0c000 x431e0000 x3ebbaeec}\n       {x43b04000 x431d0000 x3edfb7ee}\n       {x43b0c000 x431c8000 x3eecbb2f}\n       {x43b14000 x431c8000 x3ede378e}\n       {x43b1c000 x431c8000 x3ed5b56d}\n       {x43b38000 x431c8000 x3eae2b8b}\n       {x43b64000 x431c8000 x3e9324c9}\n       {x43b84000 x431c8000 0}}}\n     {tx 1 x43b2aaab x431cf1c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush162 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b24000 x43360000 1}\n       {x43b2c000 x43350000 x3e9ea7aa}\n       {x43b2c000 x43330000 x3ec5314c}\n       {x43b10000 x432d8000 x3f02e0b8}\n       {x43b00000 x432a0000 x3f0d2349}\n       {x43b14000 x43280000 x3f0ae2b9}\n       {x43b30000 x43270000 x3ef8be30}\n       {x43b44000 x43248000 x3eefbbef}\n       {x43b44000 x43238000 x3ebfafec}}}\n     {tx 1 x43b2638e x432c0e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush161 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439c4000 x432c0000 1}\n       {x439b4000 x432b8000 x3ea92a4b}\n       {x43998000 x432b0000 x3ed2348d}\n       {x439a8000 x432c0000 x3f102409}\n       {x439bc000 x432c0000 x3f126499}\n       {x439f8000 x432d8000 x3f12e4b9}\n       {x43a4c000 x43310000 x3ece338d}\n       {x43a68000 x43328000 x3e5c370e}\n       {x43a74000 x43338000 0}}}\n     {tx 1 x439f4000 x432e1c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush160 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41a00000 x43680000 1}\n       {x41980000 x43688000 x3ec1b06c}\n       {x41900000 x43688000 x3ec4b12c}\n       {x41780000 x436a0000 x3f01a068}\n       {x41700000 x436d8000 x3f0aa2a9}\n       {x41a40000 x43710000 0}}}\n     {tx 1 x41900000 x436aeaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush159 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41840000 x434f0000 1}\n       {x41800000 x43500000 x3ebeafac}\n       {x41780000 x43518000 x3edf37ce}\n       {x41780000 x43560000 x3ef0bc2f}\n       {x41780000 x43590000 x3ee9ba6f}\n       {x41500000 x435a8000 x3ee2388e}\n       {x41280000 x435a8000 x3ec8b22d}}}\n     {tx 1 x416a4925 x435536db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush158 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41580000 x433d8000 1}\n       {x41500000 x43400000 x3ebbaeec}\n       {x41500000 x43420000 x3ebc2f0c}\n       {x41580000 x43450000 x3ea1284a}\n       {x41600000 x43468000 0}}}\n     {tx 1 x41566666 x43423333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush157 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41000000 x43268000 1}\n       {x40b00000 x43268000 x3e9c270a}\n       {x40600000 x43268000 x3ea3a8ea}\n       {x40000000 x43268000 x3eaa2a8b}\n       {0 x43268000 x3ee0b82e}\n       {xbfc00000 x43290000 x3f0360d8}\n       {xc0400000 x432b8000 x3efb3ed0}\n       {xc0b00000 x432d0000 x3ee0b82e}\n       {xc0b00000 x432f0000 x3e91a469}\n       {xc0a00000 x43300000 x3e6e3b8f}\n       {x40200000 x43330000 x3e783e10}\n       {x40c00000 x43330000 x3e91a469}\n       {x41400000 x43320000 x3eb12c4b}\n       {x41700000 x43318000 x3eadab6b}\n       {x41800000 x43318000 0}}}\n     {tx 1 x40555555 x432c8889}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush156 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42e00000 x43258000 1}\n       {x42d80000 x43268000 x3e93a4e9}\n       {x42d60000 x43270000 x3e922489}\n       {x42cf0000 x43290000 x3e9fa7ea}\n       {x42c60000 x432a8000 x3ed5354d}\n       {x42bc0000 x432d0000 x3eb42d0b}\n       {x42b60000 x432e0000 0}}}\n     {tx 1 x42cc2492 x43295b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush155 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x430f0000 x43160000 1}\n       {x430e0000 x43160000 x3ec3b0ec}\n       {x430d0000 x43160000 x3ec4310c}\n       {x430b0000 x43188000 x3ee6398e}\n       {x43098000 x431a8000 x3ee5394e}\n       {x43060000 x431c8000 x3ec6318c}\n       {x43038000 x431d8000 x3e9ea7aa}\n       {x43028000 x431e8000 0}}}\n     {tx 1 x43095000 x4319b000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush154 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43258000 x430c0000 1}\n       {x43218000 x430b8000 x3ef5bd6f}\n       {x43208000 x430b8000 x3f092249}\n       {x431d8000 x430a8000 x3f18260a}\n       {x431c8000 x430a8000 x3ef83e10}\n       {x431b8000 x430c8000 0}}}\n     {tx 1 x431f8000 x430b6aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush153 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43328000 x43018000 1}\n       {x43310000 x43028000 x3e9324c9}\n       {x432f8000 x43050000 x3e94a529}\n       {x432e8000 x43060000 x3e94a529}\n       {x432c0000 x43080000 x3e822088}\n       {x432b0000 x43090000 0}}}\n     {tx 1 x432ec000 x43055555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush152 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43450000 x42e70000 1}\n       {x43438000 x42e70000 x3eca328d}\n       {x43428000 x42e60000 x3ecd334d}\n       {x43410000 x42e60000 x3eeebbaf}\n       {x43400000 x42ec0000 x3ede378e}\n       {x433f0000 x42f20000 x3e312c4b}}}\n     {tx 1 x4341d555 x42e95555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush151 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436e8000 x42dc0000 1}\n       {x436d0000 x42dc0000 x3e8a2289}\n       {x436c0000 x42dc0000 x3e8c2309}\n       {x436a8000 x42dc0000 x3ea8aa2b}\n       {x43698000 x42dc0000 x3ecab2ad}\n       {x43680000 x42dc0000 x3edb36ce}\n       {x43670000 x42dc0000 x3ee0b82e}\n       {x43660000 x42df0000 x3eb9ae6c}\n       {x43660000 x42e20000 0}}}\n     {tx 1 x43699c72 x42dd0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush150 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43740000 x42ce0000 1}\n       {x43740000 x42d00000 x3e7b3ed0}\n       {x43730000 x42d30000 x3e7a3e90}\n       {x43710000 x42d40000 x3e7a3e90}\n       {x436e0000 x42d70000 x3e52348d}}}\n     {tx 1 x43720000 x42d26666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush149 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43620000 x42af0000 1}\n       {x43638000 x42af0000 x3e6d3b4f}\n       {x43648000 x42af0000 x3e6d3b4f}\n       {x436b0000 x42b10000 x3e802008}\n       {x43740000 x42b50000 x3e6d3b4f}\n       {x43778000 x42b60000 0}}}\n     {tx 1 x436ac000 x42b18000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush148 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43390000 x42a30000 1}\n       {x433a0000 x42a10000 x3e2f2bcb}\n       {x433b8000 x42a00000 x3e703c0f}\n       {x433e8000 x42a00000 x3e723c8f}\n       {x43450000 x42a00000 x3e322c8b}\n       {x43498000 x429f0000 x3e902409}\n       {x434a0000 x42a50000 x3eb7adeb}\n       {x43498000 x42a90000 x3e7d3f50}\n       {x43468000 x42ad0000 x3dde378e}\n       {x43458000 x42ae0000 0}}}\n     {tx 1 x4342b333 x42a46666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush147 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432a0000 x42aa0000 x3dae2b8b}\n       {x43298000 x42a80000 x3eb5ad6b}\n       {x43290000 x42a60000 x3eba2e8c}\n       {x432a8000 x42a40000 x3ebbaeec}\n       {x432f8000 x42a30000 x3ea6a9aa}\n       {x43350000 x42a30000 x3e733ccf}\n       {x43370000 x42a30000 0}}}\n     {tx 1 x432e1249 x42a54925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush146 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43188000 x42b50000 1}\n       {x43188000 x42b20000 x3e7f3fd0}\n       {x43198000 x42b10000 x3e793e50}\n       {x431d0000 x42af0000 0}}}\n     {tx 1 x4319e000 x42b1c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush145 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42870000 x42f90000 1}\n       {x42890000 x42f90000 x3e6338ce}\n       {x428b0000 x42f90000 x3e6338ce}\n       {x42940000 x42f80000 x3e6338ce}\n       {x42a30000 x42f70000 x3e6d3b4f}\n       {x42b50000 x42f50000 x3ea5294a}\n       {x42c20000 x42f80000 x3e842108}\n       {x42cd0000 x42fb0000 x3d58360e}\n       {x42d30000 x42fb0000 x3eba2e8c}\n       {x42d90000 x42f80000 x3edbb6ee}\n       {x42e60000 x42f00000 x3ee3b8ee}\n       {x42ef0000 x42e60000 x3f04a128}\n       {x42fd0000 x42e20000 x3f046118}\n       {x43048000 x42e50000 x3da6298a}}}\n     {tx 1 x42c21249 x42f39249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush144 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42320000 x42f80000 1}\n       {x422c0000 x42f60000 x3eaeabab}\n       {x42260000 x42f40000 x3ed3b4ed}\n       {x42380000 x42f30000 x3ee7b9ee}\n       {x42440000 x42f30000 x3edcb72e}\n       {x425a0000 x42f30000 x3ea6a9aa}\n       {x42660000 x42f30000 0}}}\n     {tx 1 x42400000 x42f44925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush143 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42440000 x43070000 1}\n       {x42400000 x43070000 x3e89a269}\n       {x423a0000 x43070000 x3e8aa2a9}\n       {x42340000 x43070000 x3e8ca329}\n       {x42300000 x43060000 0}}}\n     {tx 1 x423a0000 x4306cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush142 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x429d0000 x43188000 1}\n       {x429e0000 x43178000 x3e372dcb}\n       {x42ad0000 x43170000 x3e6739ce}\n       {x42b40000 x43178000 x3e4d334d}\n       {x42c20000 x43180000 x3e4731cc}\n       {x42c60000 x43170000 x3e9324c9}\n       {x42c10000 x43150000 x3eb7adeb}\n       {x42b60000 x43110000 x3ed735cd}\n       {x42ae0000 x430f0000 x3ed6b5ad}\n       {x42a80000 x430e8000 x3ebfafec}\n       {x429e0000 x430f0000 x3eb0ac2b}\n       {x42950000 x43108000 x3e61384e}\n       {x42930000 x43108000 0}}}\n     {tx 1 x42ab9d8a x4313c4ec}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush141 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42c40000 x43338000 1}\n       {x42c30000 x43328000 x3e773dcf}\n       {x42c00000 x43308000 x3e8b22c9}\n       {x42bb0000 x432d8000 x3e9ca72a}\n       {x42b10000 x43298000 x3ea92a4b}\n       {x42a50000 x43258000 x3e9a268a}\n       {x42a10000 x43228000 0}}}\n     {tx 1 x42b5db6e x432c36db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush140 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42c00000 x43430000 1}\n       {x42c00000 x43420000 x3ea92a4b}\n       {x42bf0000 x43408000 x3ebe2f8c}\n       {x42c00000 x433f0000 x3ef1bc6f}\n       {x42ca0000 x433e0000 x3eeebbaf}\n       {x42d40000 x433d8000 x3eccb32d}\n       {x42d90000 x433d8000 x3e8fa3e9}\n       {x42d80000 x433c8000 0}}}\n     {tx 1 x42c9c000 x433f4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush139 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42040000 x435e0000 1}\n       {x41fc0000 x435d0000 x3e392e4c}\n       {x41ec0000 x435c0000 x3e46318c}\n       {x41c80000 x43590000 x3e9ca72a}\n       {x41a00000 x43568000 x3eae2b8b}\n       {x41900000 x43558000 x3e6d3b4f}\n       {x41840000 x43558000 0}}}\n     {tx 1 x41c64925 x43595b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush138 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42420000 x43700000 1}\n       {x423e0000 x43700000 x3eaa2a8b}\n       {x42360000 x436f8000 x3eab2acb}\n       {x42320000 x436e8000 x3ea7a9ea}\n       {x42260000 x436b0000 x3ea5a96a}\n       {x420e0000 x43670000 x3e753d4f}\n       {x41f80000 x43648000 x3e4b32cd}}}\n     {tx 1 x42280000 x436c1249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush137 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x428f0000 x43638000 1}\n       {x428d0000 x43640000 x3e713c4f}\n       {x428b0000 x43648000 x3e6e3b8f}\n       {x42890000 x43648000 x3e6e3b8f}\n       {x427c0000 x43660000 x3e98a62a}\n       {x42660000 x43698000 x3e99264a}\n       {x42600000 x436d0000 x3e122489}}}\n     {tx 1 x42826db7 x43666db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush136 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a10000 x43a64000 1}\n       {x429f0000 x43a60000 x3ef2bcaf}\n       {x42a10000 x43a5c000 x3efbbef0}\n       {x42ae0000 x43a58000 x3f056158}\n       {x42b50000 x43a50000 x3f00a028}\n       {x42b50000 x43a30000 x3ee8ba2f}\n       {x42b90000 x43a1c000 x3ee4390e}\n       {x42c30000 x43a18000 x3e8721c8}\n       {x42c90000 x43a1c000 0}}}\n     {tx 1 x42b18e39 x43a40e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush135 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41ec0000 x43a30000 1}\n       {x41e00000 x43a30000 x3e9c270a}\n       {x41d40000 x43a2c000 x3e9da76a}\n       {x41c80000 x43a2c000 x3ea5a96a}\n       {x41c00000 x43a28000 x3eba2e8c}\n       {x41c80000 x43a30000 x3b40300c}}}\n     {tx 1 x41d2aaab x43a2d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush134 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42040000 x4399c000 1}\n       {x42000000 x439a0000 x3eacab2b}\n       {x41f80000 x439ac000 x3eb0ac2b}\n       {x41ec0000 x439bc000 x3eb4ad2b}\n       {x41dc0000 x439c4000 x3eb7adeb}\n       {x41c00000 x439d0000 x3ebc2f0c}\n       {x41b00000 x439d4000 x3e082209}}}\n     {tx 1 x41e36db7 x439b8925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush133 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41e00000 x43910000 1}\n       {x41d80000 x43910000 x3e783e10}\n       {x41d00000 x43914000 x3e892249}\n       {x41d00000 x4391c000 x3eaeabab}\n       {x41d00000 x43930000 x3eb0ac2b}\n       {x41e40000 x4394c000 x3eae2b8b}\n       {x41f80000 x4395c000 x3e50340d}}}\n     {tx 1 x41dc0000 x4392a492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x427c0000 x438a4000 1}\n       {x426e0000 x4389c000 x3d9a268a}\n       {x426a0000 x4389c000 x3dc6318c}\n       {x42640000 x43898000 x3df63d8f}\n       {x425a0000 x43898000 x3e51344d}\n       {x424c0000 x43898000 x3ed1b46d}\n       {x423e0000 x438a0000 x3ee6398e}\n       {x42320000 x438b0000 x3ebd2f4c}\n       {x42240000 x438b8000 x3ebc2f0c}\n       {x42100000 x438b8000 x3ec2308c}\n       {x42040000 x438c0000 x3eacab2b}\n       {x42020000 x438cc000 0}}}\n     {tx 1 x4240aaab x438a9555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42b40000 x438c0000 1}\n       {x42b20000 x438b8000 x3e6e3b8f}\n       {x42b00000 x438b4000 x3e812048}\n       {x42aa0000 x438a4000 x3ea3a8ea}\n       {x42a50000 x438a0000 x3eaf2bcb}\n       {x42a00000 x438a4000 x3ea6298a}\n       {x42970000 x438ac000 x3e95a569}\n       {x428e0000 x438ac000 x3d44310c}}}\n     {tx 1 x42a54000 x438ad800}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42da0000 x438f4000 1}\n       {x42d80000 x438f4000 x3e8a2289}\n       {x42d50000 x438f8000 x3e90a429}\n       {x42d30000 x43904000 x3e94a529}\n       {x42cf0000 x4390c000 x3ea9aa6b}\n       {x42c80000 x43918000 x3e87a1e8}}}\n     {tx 1 x42d2d555 x43901555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ee0000 x438ec000 1}\n       {x42ea0000 x438e8000 x3ea2a8aa}\n       {x42e80000 x438e8000 x3ea2a8aa}\n       {x42e60000 x438ec000 x3e062188}}}\n     {tx 1 x42e98000 x438ea000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43230000 x4398c000 1}\n       {x43218000 x43988000 x3eca328d}\n       {x43208000 x43988000 x3ecbb2ed}\n       {x431f8000 x43988000 x3ed1344d}\n       {x431f0000 x43990000 x3e703c0f}}}\n     {tx 1 x4320b333 x4398a666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43530000 x43924000 x3eb02c0b}\n       {x43520000 x43920000 x3eadab6b}\n       {x43510000 x43920000 x3eb92e4c}\n       {x434f8000 x43920000 x3ec1304c}\n       {x434d8000 x43930000 x3ec1b06c}\n       {x43488000 x43940000 x3ea4290a}\n       {x433c8000 x43948000 x3eb7adeb}\n       {x43338000 x43948000 x3ee2388e}\n       {x432d8000 x43950000 x3ee4b92e}\n       {x43280000 x43960000 x3ecab2ad}\n       {x43270000 x4396c000 0}}}\n     {tx 1 x4340ba2f x4393d174}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ee4000 x43a08000 1}\n       {x43edc000 x43a08000 x3eaf2bcb}\n       {x43eb0000 x43a1c000 x3eb9ae6c}\n       {x43e98000 x43a24000 x3ebcaf2c}\n       {x43e7c000 x43a38000 x3ebaaeac}\n       {x43e7c000 x43a48000 x3e912449}\n       {x43e8c000 x43a50000 0}}}\n     {tx 1 x43ea6492 x43a29249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43dcc000 x43508000 1}\n       {x43dc0000 x43500000 x3eaaaaab}\n       {x43db8000 x434f8000 x3eaaaaab}\n       {x43da0000 x434e8000 x3eab2acb}\n       {x43d84000 x434c8000 x3ea328ca}}}\n     {tx 1 x43dae666 x434f0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43edc000 x43588000 1}\n       {x43ec8000 x43578000 1}\n       {x43ec0000 x43568000 x3ebd2f4c}\n       {x43eb8000 x43550000 x3e783e10}\n       {x43e9c000 x43540000 x3e5a368e}\n       {x43e74000 x43538000 0}}}\n     {tx 1 x43eb2000 x4355d555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ef8000 x43630000 1}\n       {x43ef0000 x43628000 1}\n       {x43ee8000 x43618000 x3ec4310c}\n       {x43ee4000 x435f8000 x3ec7b1ec}\n       {x43eec000 x435e8000 x3ed9b66e}\n       {x43f00000 x435e8000 x3d60380e}}}\n     {tx 1 x43ef0000 x43609555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f4c000 x43860000 1}\n       {x43f44000 x43858000 x3eaf2bcb}\n       {x43f38000 x43848000 x3ecc330d}\n       {x43f30000 x4382c000 x3efb3ed0}\n       {x43f30000 x43814000 x3efc3f10}\n       {x43f24000 x43800000 x3ef8be30}\n       {x43f18000 x437f0000 x3ef7bdef}\n       {x43ef8000 x437d0000 x3ef7bdef}\n       {x43ee8000 x437a8000 x3ef33ccf}\n       {x43ee8000 x43790000 x3ef03c0f}\n       {x43f00000 x43780000 x3ed334cd}\n       {x43f08000 x43780000 x3ec8320d}\n       {x43f2c000 x43778000 x3e922489}\n       {x43f1c000 x43758000 x3ec6318c}\n       {x43ed0000 x43710000 x3f142509}\n       {x43eb4000 x436e0000 x3f1ea7aa}\n       {x43ebc000 x436c0000 x3f1be6fa}\n       {x43ec4000 x436b8000 x3f14e539}\n       {x43eec000 x436b8000 x3e8c2309}\n       {x43ef4000 x436b8000 0}}}\n     {tx 1 x43f04ccd x4379b333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f6c000 x43914000 1}\n       {x43f60000 x4390c000 x3ebeafac}\n       {x43f58000 x43900000 x3ec8b22d}\n       {x43f54000 x438f0000 x3efabeb0}\n       {x43f70000 x438e0000 x3efabeb0}\n       {x43f88000 x438c8000 x3ee0b82e}\n       {x43f90000 x438bc000 x3e6b3acf}}}\n     {tx 1 x43f6db6e x438ec000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e54000 x4393c000 1}\n       {x43e64000 x4393c000 x3e922489}\n       {x43e8c000 x4393c000 x3e9a268a}\n       {x43ebc000 x4393c000 x3eb9ae6c}\n       {x43ee0000 x4393c000 x3ebeafac}\n       {x43ef4000 x4393c000 x3e93a4e9}\n       {x43f04000 x43928000 x3e902409}\n       {x43f20000 x43924000 0}}}\n     {tx 1 x43ebf000 x43936800}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43aac000 x4380c000 1}\n       {x43ab8000 x43804000 x3e8ca329}\n       {x43ad0000 x43804000 x3e99264a}\n       {x43b04000 x43810000 x3e49324d}\n       {x43b34000 x43814000 x3e1d274a}\n       {x43b70000 x43818000 x3e693a4f}\n       {x43b8c000 x4380c000 x3ebaaeac}\n       {x43ba4000 x4380c000 x3ec9b26d}\n       {x43bc8000 x43824000 x3eb5ad6b}\n       {x43bf8000 x43838000 x3eac2b0b}\n       {x43c18000 x43838000 x3eac2b0b}\n       {x43c40000 x43838000 x3eab2acb}\n       {x43c7c000 x43834000 x3e9a268a}\n       {x43ca4000 x43828000 x3ea5a96a}\n       {x43ce8000 x43830000 x3e733ccf}\n       {x43cf8000 x43834000 0}}}\n     {tx 1 x43bc2400 x4381f400}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43988000 x437f0000 x3e042108}\n       {x43984000 x437e0000 0}}}\n     {tx 1 x43986000 x437e8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a20000 x4389c000 1}\n       {x43a20000 x43894000 x3ec7b1ec}\n       {x43a2c000 x4389c000 x3eb82e0c}\n       {x43a34000 x438a0000 x3ea3a8ea}\n       {x43a44000 x438a0000 x3e46318c}\n       {x43a5c000 x4389c000 x3d342d0b}\n       {x43a5c000 x43884000 x3e3e2f8c}\n       {x43a48000 x43878000 x3e51344d}\n       {x43a1c000 x43864000 x3e6739ce}\n       {x43a00000 x43854000 x3e6739ce}\n       {x439e0000 x43848000 0}}}\n     {tx 1 x43a2ba2f x4388345d}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43900000 x43920000 1}\n       {x43904000 x43918000 x3e9ba6ea}\n       {x4390c000 x43910000 x3e9725c9}\n       {x43928000 x438fc000 x3eb02c0b}\n       {x43930000 x438f8000 x3eb12c4b}\n       {x4393c000 x438ec000 x3eb1ac6b}\n       {x4395c000 x438e0000 x3eb4ad2b}\n       {x4396c000 x438d4000 x3eb5ad6b}\n       {x43970000 x438cc000 x3eb5ad6b}\n       {x43968000 x438c4000 x3eb5ad6b}\n       {x43968000 x438bc000 x3e912449}\n       {x43974000 x438bc000 0}}}\n     {tx 1 x43942aab x438e8555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a28000 x43a30000 1}\n       {x43a24000 x43a28000 x3e892249}\n       {x43a3c000 x43a20000 x3e98260a}\n       {x43a48000 x43a20000 x3e98a62a}\n       {x43a58000 x43a18000 x3e99264a}\n       {x43a60000 x43a08000 x3ea729ca}\n       {x43a50000 x439f0000 x3ec6318c}\n       {x43a44000 x439e0000 x3ec6b1ac}\n       {x43a28000 x439c8000 x3ec7b1ec}\n       {x439f8000 x439a8000 x3ec8b22d}\n       {x439cc000 x43998000 x3ec9324d}\n       {x4398c000 x43988000 x3ec8b22d}\n       {x43954000 x43984000 x3ea9aa6b}\n       {x43904000 x43980000 x3df03c0f}}}\n     {tx 1 x439fe925 x439dd6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43af8000 x43a88000 1}\n       {x43af0000 x43a80000 x3d3c2f0c}\n       {x43adc000 x43a74000 x3dae2b8b}\n       {x43aa0000 x43a5c000 x3e743d0f}\n       {x43a88000 x43a54000 x3e042108}}}\n     {tx 1 x43ac8ccd x43a6f333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c30000 x43b28000 1}\n       {x43c24000 x43b28000 x3e693a4f}\n       {x43c1c000 x43b28000 x3e693a4f}\n       {x43c10000 x43b24000 x3e693a4f}\n       {x43bec000 x43b10000 x3e94a529}\n       {x43bc8000 x43b00000 x3e9aa6aa}\n       {x43ba0000 x43af0000 x3e86a1a8}\n       {x43b4c000 x43acc000 x3e65394e}\n       {x43b1c000 x43ab4000 x3d8c2309}}}\n     {tx 1 x43bcdc72 x43b031c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d3c000 x43ae4000 1}\n       {x43d34000 x43ae4000 x3e6d3b4f}}}\n     {tx 1 x43d38000 x43ae4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e94000 x43b5c000 x3e5334cd}\n       {x43e94000 x43b54000 x3e64390e}\n       {x43e94000 x43b4c000 x3ea5a96a}\n       {x43e70000 x43b3c000 x3eb3aceb}\n       {x43e40000 x43b28000 x3ecd334d}\n       {x43e34000 x43b24000 x3ebc2f0c}}}\n     {tx 1 x43e70000 x43b40aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ec0000 x43bcc000 1}\n       {x43eac000 x43bc4000 x3ea328ca}\n       {x43ea4000 x43bc4000 x3eb42d0b}\n       {x43e98000 x43bbc000 x3ec4b12c}\n       {x43e80000 x43bb0000 x3eba2e8c}\n       {x43e4c000 x43b94000 x3ea729ca}}}\n     {tx 1 x43e93555 x43bb8aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f80000 x43c78000 1}\n       {x43f80000 x43c70000 x3c302c0b}\n       {x43f74000 x43c68000 x3e5735cd}\n       {x43f58000 x43c58000 x3e9da76a}\n       {x43f2c000 x43c44000 x3eb6adab}\n       {x43f18000 x43c38000 x3eceb3ad}}}\n     {tx 1 x43f58000 x43c5b555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ea4000 x43ca4000 1}\n       {x43eac000 x43ca4000 x3df83e10}\n       {x43ec0000 x43ca4000 x3e54350d}\n       {x43ef0000 x43ca8000 x3ea6a9aa}\n       {x43f1c000 x43cb0000 x3ecbb2ed}\n       {x43f34000 x43cb4000 x3edb36ce}\n       {x43f54000 x43cbc000 x3ebcaf2c}\n       {x43f6c000 x43cbc000 x3e4d334d}}}\n     {tx 1 x43f02000 x43cae000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e5c000 x43c58000 1}\n       {x43e64000 x43c60000 x3e51344d}\n       {x43e6c000 x43c70000 x3e6d3b4f}\n       {x43e74000 x43c88000 x3e5c370e}\n       {x43e88000 x43c98000 x3e1324c9}\n       {x43e94000 x43ca0000 0}}}\n     {tx 1 x43e74aab x43c7c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d40000 x43c40000 1}\n       {x43d30000 x43c3c000 x3ed6b5ad}\n       {x43d28000 x43c38000 x3ed7b5ed}\n       {x43d18000 x43c30000 x3ef2bcaf}\n       {x43d1c000 x43c28000 x3eeabaaf}\n       {x43d40000 x43c28000 x3ead2b4b}\n       {x43d68000 x43c2c000 0}}}\n     {tx 1 x43d35249 x43c32492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43abc000 x43c58000 1}\n       {x43acc000 x43c54000 x3eb92e4c}\n       {x43aec000 x43c54000 x3ec3b0ec}\n       {x43b3c000 x43c54000 x3ec6b1ac}\n       {x43b4c000 x43c54000 x3ec6318c}\n       {x43b54000 x43c4c000 x3ed6b5ad}\n       {x43ba0000 x43c54000 x3ed5b56d}\n       {x43bec000 x43c64000 x3ed2b4ad}\n       {x43c3c000 x43c78000 x3ed4b52d}\n       {x43c60000 x43c80000 x3ed6b5ad}\n       {x43c6c000 x43c7c000 x3ede378e}\n       {x43c90000 x43c74000 x3ee0b82e}\n       {x43cb4000 x43c68000 x3ece338d}\n       {x43cc4000 x43c5c000 x3e80a028}\n       {x43ccc000 x43c5c000 0}}}\n     {tx 1 x43bd9111 x43c61555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c74000 x43d08000 1}\n       {x43c6c000 x43d0c000 x3ea0280a}\n       {x43c64000 x43d0c000 x3ea4290a}\n       {x43c5c000 x43d0c000 x3ea6a9aa}\n       {x43c48000 x43d10000 x3f062188}\n       {x43c40000 x43d10000 x3f0be2f9}\n       {x43c38000 x43d10000 x3f09e279}\n       {x43c38000 x43d1c000 x3ef93e50}\n       {x43c18000 x43d24000 x3eefbbef}\n       {x43bd8000 x43d28000 x3eefbbef}\n       {x43b94000 x43d28000 x3ef2bcaf}\n       {x43b44000 x43d24000 x3ef4bd2f}\n       {x43b10000 x43d20000 x3ef5bd6f}\n       {x43ac0000 x43d14000 x3f06a1a8}\n       {x43a78000 x43cec000 x3f102409}\n       {x43a44000 x43cbc000 x3f12e4b9}\n       {x43a40000 x43ca4000 x3f0ea3a9}\n       {x43a34000 x43c8c000 x3f0aa2a9}\n       {x43a20000 x43c80000 x3edbb6ee}}}\n     {tx 1 x43b80000 x43cfabca}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b74000 x43ed4000 1}\n       {x43b6c000 x43ecc000 x3cf83e10}\n       {x43b58000 x43eb4000 x3d882209}\n       {x43b48000 x43eac000 x3d783e10}\n       {x43b1c000 x43e98000 x3e64390e}\n       {x43b0c000 x43e94000 x3e332ccb}}}\n     {tx 1 x43b46aab x43eb2000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43990000 x43f20000 1}\n       {x43998000 x43f1c000 x3e902409}\n       {x439b4000 x43f10000 x3eb3aceb}\n       {x43a08000 x43f04000 x3eb5ad6b}\n       {x43aa8000 x43efc000 x3ba0280a}}}\n     {tx 1 x439e8ccd x43f0f333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43718000 x43f4c000 1}\n       {x43728000 x43f4c000 x3eb1ac6b}\n       {x43748000 x43f48000 x3eb8ae2c}\n       {x437b0000 x43f34000 x3ee5b96e}\n       {x43838000 x43f38000 x3eea3a8f}\n       {x43854000 x43f3c000 x3ed3b4ed}\n       {x43860000 x43f38000 0}}}\n     {tx 1 x437ddb6e x43f40000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438e8000 x43f00000 x3e122489}\n       {x438f8000 x43f00000 x3e8d2349}\n       {x43914000 x43f04000 x3e98a62a}\n       {x43978000 x43f08000 x3e6739ce}\n       {x4398c000 x43f08000 0}}}\n     {tx 1 x4393199a x43f04000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a20000 x43f18000 1}\n       {x42a50000 x43f14000 x3e96a5a9}\n       {x42a90000 x43f0c000 x3ec2b0ac}\n       {x42b00000 x43f0c000 x3ec8b22d}\n       {x42b60000 x43f10000 0}}}\n     {tx 1 x42aacccd x43f10ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x423c0000 x43ec8000 1}\n       {x42420000 x43ec0000 x3e773dcf}\n       {x42460000 x43ebc000 x3e8a2289}\n       {x424c0000 x43eb8000 x3e9e278a}\n       {x42640000 x43eb8000 x3eba2e8c}\n       {x42740000 x43ecc000 x3eb8ae2c}\n       {x42840000 x43ee0000 x3e54350d}\n       {x42870000 x43ee4000 x3e0a2289}\n       {x428b0000 x43ee0000 x3e902409}\n       {x428f0000 x43eec000 x3e822088}\n       {x42920000 x43ef4000 0}}}\n     {tx 1 x42708ba3 x43ed1d17}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41dc0000 x43ec8000 1}\n       {x41ec0000 x43ec8000 x3e50340d}\n       {x41fc0000 x43ec8000 x3e6b3acf}\n       {x420c0000 x43ec4000 x3e90a429}\n       {x42200000 x43ec4000 x3e8ca329}\n       {x42340000 x43ed0000 x3e4d334d}}}\n     {tx 1 x420b0000 x43ec8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42440000 x43d48000 1}\n       {x42400000 x43d48000 x3eb02c0b}\n       {x42380000 x43d44000 x3ebeafac}\n       {x42340000 x43d44000 x3ec3b0ec}\n       {x42220000 x43d44000 x3ed6b5ad}\n       {x42040000 x43d50000 x3ec8320d}\n       {x41cc0000 x43d74000 x3e842108}\n       {x41940000 x43da8000 x3d8c2309}\n       {x41480000 x43dc8000 x3e26298a}\n       {x41300000 x43dd4000 x3e90a429}\n       {x41100000 x43dd8000 x3ec6318c}\n       {x41000000 x43de4000 x3ecab2ad}\n       {x40e00000 x43df0000 0}}}\n     {tx 1 x41d93b14 x43d8b13b}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41280000 x43bf4000 1}\n       {x41380000 x43bf4000 x3e60380e}\n       {x41480000 x43bf4000 x3e753d4f}\n       {x41880000 x43bf8000 x3e98a62a}\n       {x41d00000 x43c04000 x3ea3a8ea}\n       {x42100000 x43c1c000 x3e8b22c9}\n       {x42220000 x43c28000 x3e112449}\n       {x42340000 x43c34000 x3e162589}\n       {x423a0000 x43c38000 0}}}\n     {tx 1 x41da38e4 x43c0f1c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41a00000 x43bdc000 1}\n       {x41980000 x43bdc000 x3ea92a4b}\n       {x418c0000 x43bd8000 x3ec1b06c}\n       {x41840000 x43bd8000 x3ed3b4ed}\n       {x41400000 x43bd4000 x3eeebbaf}\n       {x40c00000 x43bd8000 x3eeabaaf}\n       {x3fc00000 x43bd4000 x3ec6318c}\n       {xbfc00000 x43bc8000 x3ec3b0ec}}}\n     {tx 1 x41360000 x43bd6000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a90000 x43b48000 1}\n       {x42950000 x43b44000 1}\n       {x42920000 x43b44000 x3eb7adeb}\n       {x42900000 x43b44000 x3e50340d}}}\n     {tx 1 x42980000 x43b45000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43150000 x43af0000 1}\n       {x43110000 x43ae4000 x3e902409}\n       {x430f0000 x43ae0000 x3e9c270a}\n       {x43090000 x43ad4000 x3eaf2bcb}\n       {x42ff0000 x43ac8000 x3e773dcf}\n       {x42f60000 x43ac8000 0}}}\n     {tx 1 x43096aab x43ad9555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43210000 x43b38000 1}\n       {x431f0000 x43b30000 x3e97a5e9}\n       {x431d0000 x43b28000 x3e97a5e9}\n       {x43180000 x43b18000 x3e91a469}\n       {x43130000 x43afc000 x3e902409}\n       {x430f8000 x43aec000 x3e80a028}\n       {x43128000 x43aec000 0}}}\n     {tx 1 x43184925 x43b11b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x433b8000 x43b68000 1}\n       {x43390000 x43b64000 x3eab2acb}\n       {x43378000 x43b64000 x3eab2acb}\n       {x43368000 x43b60000 x3e9ca72a}\n       {x43340000 x43b60000 x3ea0280a}\n       {x43318000 x43b60000 x3e7a3e90}}}\n     {tx 1 x4336aaab x43b62aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436a8000 x43b90000 1}\n       {x43690000 x43b8c000 x3e8a2289}\n       {x43678000 x43b88000 x3e8c2309}\n       {x43660000 x43b84000 x3e8d2349}\n       {x43648000 x43b80000 x3e98260a}\n       {x43628000 x43b74000 x3ea328ca}\n       {x43608000 x43b6c000 x3ea7a9ea}\n       {x435e8000 x43b64000 x3eb0ac2b}\n       {x435c8000 x43b5c000 x3eb42d0b}\n       {x43590000 x43b58000 x3e82a0a8}\n       {x43538000 x43b54000 x3e6d3b4f}\n       {x43510000 x43b58000 0}}}\n     {tx 1 x43601555 x43b71000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43450000 x43bc4000 1}\n       {x43480000 x43bbc000 x3dec3b0f}\n       {x43490000 x43bb8000 x3dd6358d}\n       {x434a8000 x43bb4000 x3dec3b0f}\n       {x434b0000 x43ba4000 x3e85a168}\n       {x43510000 x43bac000 x3eba2e8c}\n       {x43588000 x43bbc000 x3e8aa2a9}\n       {x435f8000 x43bc0000 x3e61384e}\n       {x43620000 x43bc0000 x3e5a368e}\n       {x43620000 x43bb4000 x3e723c8f}\n       {x43650000 x43bb0000 x3e8320c8}\n       {x436b0000 x43bac000 x3e882209}\n       {x436e8000 x43bac000 x3e703c0f}\n       {x436f8000 x43bac000 0}}}\n     {tx 1 x43599b6e x43bb4925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43108000 x43bac000 1}\n       {x43120000 x43ba8000 x3d042108}}}\n     {tx 1 x43114000 x43baa000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ba0000 x43cc0000 1}\n       {x42ba0000 x43cb8000 x3ea9aa6b}\n       {x42c50000 x43cac000 x3ec1304c}\n       {x42ce0000 x43cac000 x3ec3b0ec}\n       {x42e00000 x43ca8000 x3ec1304c}\n       {x42f00000 x43ca4000 x3c40300c}}}\n     {tx 1 x42ce8000 x43caf555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42c70000 x43d84000 1}\n       {x42c50000 x43d7c000 x3e51344d}\n       {x42c30000 x43d74000 x3e54350d}\n       {x42c20000 x43d6c000 x3e7a3e90}\n       {x42d20000 x43d78000 x3e862188}\n       {x42e70000 x43d7c000 x3e44310c}\n       {x42ed0000 x43d78000 0}}}\n     {tx 1 x42d10000 x43d78925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43048000 x43e50000 1}\n       {x43030000 x43e48000 x3e0a2289}\n       {x43020000 x43e44000 x3e162589}\n       {x42fe0000 x43e34000 x3e4c330d}\n       {x42fc0000 x43e30000 x3e5d374e}\n       {x42fa0000 x43e34000 x3dfe3f90}}}\n     {tx 1 x43009555 x43e3e000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43310000 x43ea0000 1}\n       {x432f0000 x43ea0000 x3dac2b0b}\n       {x43298000 x43e9c000 x3e25294a}\n       {x43220000 x43e98000 x3e882209}\n       {x431e8000 x43e98000 x3e46318c}\n       {x431d8000 x43e98000 x3e1c270a}\n       {x431c8000 x43e9c000 x3e092249}}}\n     {tx 1 x43252492 x43e9b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43608000 x43e84000 1}\n       {x435b8000 x43e74000 x3ea6a9aa}\n       {x43590000 x43e70000 x3eba2e8c}\n       {x43538000 x43e68000 x3ef9be70}\n       {x434e8000 x43e64000 x3f002008}\n       {x434d8000 x43e88000 x3ea6a9aa}\n       {x434d8000 x43e9c000 0}}}\n     {tx 1 x4354db6e x43e7a492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43e2c000 x43ee8000 1}\n       {x43e0c000 x43ee8000 x3e783e10}\n       {x43df4000 x43ee8000 x3e82a0a8}\n       {x43dec000 x43eec000 x3d842108}}}\n     {tx 1 x43e06000 x43ee9000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ec8000 x43ed4000 1}\n       {x43ec0000 x43ed4000 x3e842108}\n       {x43e9c000 x43ed4000 x3ea8aa2b}\n       {x43e80000 x43ed4000 x3eb62d8b}\n       {x43e80000 x43ee4000 x3e112449}}}\n     {tx 1 x43ea0ccd x43ed7333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f2c000 x43e98000 1}\n       {x43f24000 x43ea4000 x3e60380e}\n       {x43f18000 x43eb0000 x3e9c270a}\n       {x43f08000 x43eb0000 x3ea5a96a}\n       {x43eec000 x43eb4000 x3e9a268a}\n       {x43ee4000 x43ec0000 x3df63d8f}}}\n     {tx 1 x43f0aaab x43ead555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43ebc000 x43dfc000 1}\n       {x43ebc000 x43e04000 x3e042108}\n       {x43ebc000 x43e14000 x3ea5294a}\n       {x43ebc000 x43e28000 x3eaf2bcb}\n       {x43ec4000 x43e34000 x3ea328ca}\n       {x43ef0000 x43e50000 x3de4390e}}}\n     {tx 1 x43ec6000 x43e20000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d50000 x43cbc000 1}\n       {x43d40000 x43cbc000 x3e8c2309}\n       {x43d34000 x43cbc000 x3e8c2309}\n       {x43d18000 x43cbc000 x3e952549}\n       {x43d18000 x43cc8000 x3eb02c0b}\n       {x43d20000 x43cd8000 x3eb2acab}\n       {x43d3c000 x43cec000 x3ebcaf2c}\n       {x43d80000 x43d14000 x3ec6318c}\n       {x43da8000 x43d2c000 x3ec7b1ec}\n       {x43dc4000 x43d40000 x3ec9324d}\n       {x43de0000 x43d48000 x3ed2348d}\n       {x43e14000 x43d50000 x3ed735cd}\n       {x43e4c000 x43d5c000 x3ed7b5ed}\n       {x43e90000 x43d60000 x3ed7b5ed}\n       {x43ea4000 x43d60000 x3ed9b66e}\n       {x43ea8000 x43d4c000 x3ee6398e}\n       {x43ea4000 x43d34000 x3efcbf30}\n       {x43ea4000 x43d24000 x3f02a0a8}\n       {x43ec4000 x43d18000 x3f026098}\n       {x43ef0000 x43d18000 x3f012048}\n       {x43f24000 x43d18000 x3efdbf70}\n       {x43f4c000 x43d20000 x3efa3e90}\n       {x43f6c000 x43d28000 x3efb3ed0}\n       {x43f9c000 x43d2c000 x3efc3f10}\n       {x43fd0000 x43d34000 x3efcbf30}\n       {x4400e000 x43d38000 x3efcbf30}\n       {x44034000 x43d40000 x3e89a269}\n       {x44040000 x43d44000 0}}}\n     {tx 1 x43e736db x43d1b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b6c000 x43b18000 1}\n       {x43b88000 x43b2c000 x3ebaaeac}\n       {x43bb0000 x43b44000 x3e812048}\n       {x43bc0000 x43b48000 0}}}\n     {tx 1 x43b99000 x43b34000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a98000 x43adc000 1}\n       {x43aa0000 x43ae0000 x3e922489}\n       {x43aa8000 x43ae4000 x3e922489}\n       {x43acc000 x43af8000 x3e8721c8}\n       {x43b08000 x43b10000 0}}}\n     {tx 1 x43abd99a x43aee666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x439b0000 x43aac000 1}\n       {x439b0000 x43aa4000 x3e2d2b4b}\n       {x439c8000 x43a9c000 x3d8a2289}}}\n     {tx 1 x439b8000 x43aa4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438dc000 x43abc000 x3d8e2389}}}\n     {tx 1 x438dc000 x43abc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x4381c000 x43a30000 1}\n       {x43818000 x43a38000 x3e2c2b0b}\n       {x43818000 x43a40000 x3e4b32cd}\n       {x43818000 x43a48000 x3e4c330d}\n       {x43834000 x43a5c000 x3e322c8b}\n       {x4383c000 x43a60000 x3e25294a}\n       {x43868000 x43a70000 x3e1d274a}\n       {x43894000 x43a84000 x3e2328ca}\n       {x438ac000 x43a90000 x3da6298a}}}\n     {tx 1 x43846aab x43a5aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43880000 x439f4000 1}\n       {x43878000 x439f8000 x3e60380e}\n       {x43868000 x439fc000 x3e59364e}\n       {x43854000 x43a00000 x3e5a368e}\n       {x4382c000 x43a0c000 x3e65394e}\n       {x4381c000 x43a18000 x3e5f37ce}\n       {x4381c000 x43a28000 x3d342d0b}}}\n     {tx 1 x4384c925 x43a076db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43738000 x43954000 x3dc6318c}\n       {x43738000 x4395c000 x3e952549}\n       {x43748000 x43974000 x3ea5a96a}\n       {x43778000 x43998000 x3eb4ad2b}\n       {x437d8000 x439c0000 x3eb82e0c}\n       {x43848000 x439e0000 x3e65394e}\n       {x43868000 x439e8000 0}}}\n     {tx 1 x437c5b6e x4399c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43530000 x42fc0000 1}\n       {x43518000 x42fa0000 x3e9e278a}\n       {x43508000 x42f90000 x3e9fa7ea}\n       {x434e8000 x42f50000 x3ea1284a}\n       {x43500000 x42f30000 x3e56358d}}}\n     {tx 1 x4350b333 x42f7cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x434e0000 x43098000 1}}}\n     {tx 1 x434e0000 x43098000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436a0000 x43138000 1}\n       {x43690000 x43120000 x3e062188}\n       {x43680000 x43110000 x3e062188}\n       {x43668000 x430e0000 x3e082209}\n       {x43668000 x430c0000 x3e51344d}\n       {x43658000 x430b0000 x3e6739ce}\n       {x43638000 x430b0000 x3e5a368e}\n       {x435e0000 x430b0000 x3e4c330d}\n       {x435b0000 x430a8000 x3e3f2fcc}\n       {x43590000 x430a0000 x3e1f27ca}\n       {x43558000 x43090000 x3e40300c}\n       {x43538000 x43088000 x3e50340d}}}\n     {tx 1 x43610000 x430ca000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43230000 x43320000 1}\n       {x43238000 x43310000 x3e6d3b4f}\n       {x43258000 x432f8000 x3e6a3a8f}\n       {x43288000 x432e8000 x3e733ccf}\n       {x432c0000 x432d8000 x3e703c0f}\n       {x432d0000 x432c0000 x3e5334cd}\n       {x43300000 x432b0000 x3e0a2289}\n       {x43348000 x432a8000 x3e112449}\n       {x43398000 x432a0000 x3e6739ce}\n       {x433d8000 x43298000 x3e6d3b4f}\n       {x43430000 x43290000 x3e65394e}\n       {x434c8000 x43290000 x3d24290a}}}\n     {tx 1 x43320aab x432c7555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43108000 x43358000 1}\n       {x43118000 x43358000 x3e49324d}}}\n     {tx 1 x43110000 x43358000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42eb0000 x43420000 1}\n       {x42ea0000 x43408000 x3e733ccf}\n       {x42ea0000 x433c8000 x3e8ea3a9}\n       {x42f00000 x433b0000 x3e7f3fd0}\n       {x42f60000 x433a8000 x3d962589}\n       {x42fb0000 x43388000 0}}}\n     {tx 1 x42f00000 x433cd555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a90000 x436d8000 1}\n       {x42ab0000 x436c0000 x3e46318c}\n       {x42ae0000 x436a8000 x3df23c8f}\n       {x42b30000 x43698000 0}}}\n     {tx 1 x42ad4000 x436b6000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42b00000 x43814000 1}\n       {x42ac0000 x43814000 x3e5d374e}\n       {x42a30000 x43814000 x3e8b22c9}\n       {x42970000 x43810000 x3eadab6b}\n       {x42950000 x43824000 x3e9aa6aa}\n       {x42940000 x43840000 x3d683a0f}\n       {x428e0000 x4383c000 x3de0380e}\n       {x42780000 x43810000 x3e60380e}\n       {x42680000 x437f0000 0}}}\n     {tx 1 x42950000 x4381b1c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43080000 x43518000 1}\n       {x43070000 x43518000 x3e292a4b}\n       {x43050000 x43518000 x3e26298a}\n       {x43000000 x43518000 x3e4731cc}\n       {x42f70000 x43528000 x3e5334cd}\n       {x42f40000 x43550000 0}}}\n     {tx 1 x43019555 x43524000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436e0000 x43710000 1}\n       {x43700000 x43700000 x3e912449}\n       {x43720000 x436f0000 x3e93a4e9}\n       {x43740000 x436d0000 x3e94a529}\n       {x43730000 x436a8000 x3e99264a}\n       {x436d8000 x43698000 x3ea1a86a}\n       {x43650000 x43698000 x3d042108}}}\n     {tx 1 x436f1249 x436cedb7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x434b8000 x436f0000 1}\n       {x434e0000 x436f8000 x3dc6318c}}}\n     {tx 1 x434cc000 x436f4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42e40000 x437a0000 x3e5334cd}\n       {x42e70000 x437b0000 x3e7e3f90}\n       {x42ee0000 x437c0000 x3e802008}\n       {x42fd0000 x437d8000 x3e7f3fd0}\n       {x43028000 x437d8000 x3e723c8f}\n       {x43038000 x437d8000 x3e6e3b8f}\n       {x43048000 x437d8000 x3e6d3b4f}\n       {x43070000 x437c0000 x3e51344d}\n       {x430a8000 x43798000 x3e60380e}\n       {x430e0000 x43768000 x3e703c0f}\n       {x43118000 x43738000 x3e773dcf}\n       {x43158000 x43708000 x3e82a0a8}\n       {x431b0000 x436d0000 x3e80a028}\n       {x431f8000 x436c0000 x3e54350d}\n       {x43210000 x436c0000 0}}}\n     {tx 1 x43090889 x43773333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43138000 x439c8000 1}\n       {x43120000 x439d8000 x3d282a0b}\n       {x43108000 x439e0000 x3dbc2f0c}\n       {x430f0000 x439e8000 x3dfa3e90}\n       {x430c8000 x439f8000 x3df83e10}\n       {x43090000 x43a00000 x3d64390e}\n       {x43080000 x43a00000 0}}}\n     {tx 1 x430e1249 x439e9249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43150000 x43958000 1}\n       {x43130000 x43958000 x3e7a3e90}\n       {x43120000 x43958000 x3e8320c8}\n       {x43118000 x43964000 x3e8da369}\n       {x43128000 x43988000 x3e20280a}\n       {x43138000 x43990000 0}}}\n     {tx 1 x4312eaab x4396b555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432e8000 x438ac000 1}\n       {x432d8000 x438b0000 x3e98a62a}\n       {x432a8000 x438c4000 x3ea2288a}\n       {x43280000 x438dc000 x3ea6298a}\n       {x43260000 x438fc000 x3e9aa6aa}\n       {x43250000 x43908000 x3e042108}}}\n     {tx 1 x43299555 x438d5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b40000 x43950000 1}\n       {x43b54000 x43964000 x3e6d3b4f}\n       {x43b5c000 x4396c000 x3e723c8f}\n       {x43b64000 x43970000 x3e733ccf}\n       {x43b6c000 x43974000 x3e743d0f}\n       {x43b94000 x4398c000 x3e842108}\n       {x43bcc000 x439a4000 x3e8ca329}\n       {x43bfc000 x439c0000 x3e902409}\n       {x43c04000 x439cc000 x3e912449}\n       {x43c04000 x439d4000 x3e93a4e9}\n       {x43bf0000 x439dc000 x3e93a4e9}\n       {x43be0000 x439e0000 x3e93a4e9}\n       {x43bd8000 x439f4000 x3e93a4e9}\n       {x43bd8000 x43a08000 x3e8e2389}\n       {x43be8000 x43a18000 x3e8b22c9}\n       {x43bf8000 x43a2c000 x3e8c2309}\n       {x43c18000 x43a44000 x3e8ca329}\n       {x43c30000 x43a54000 x3e8da369}\n       {x43c4c000 x43a60000 x3e8e2389}\n       {x43c64000 x43a70000 x3e8d2349}\n       {x43c90000 x43a88000 x3e822088}\n       {x43cb8000 x43a98000 x3e60380e}\n       {x43ce4000 x43aac000 x3df03c0f}\n       {x43cf0000 x43ab0000 0}}}\n     {tx 1 x43bfbaab x439fa2ab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a10000 x43914000 x3e8fa3e9}\n       {x43a28000 x43914000 x3e842108}\n       {x43a4c000 x43914000 x3e8d2349}\n       {x43a78000 x43910000 x3e94a529}\n       {x43a90000 x43908000 x3e9725c9}\n       {x43a98000 x43900000 x3e9c270a}\n       {x43aac000 x43900000 x3e8e2389}\n       {x43ac8000 x43908000 x3c902409}}}\n     {tx 1 x43a73000 x4390b800}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43a50000 x43918000 1}\n       {x43a64000 x43924000 x3e7b3ed0}\n       {x43a70000 x4392c000 x3e65394e}\n       {x43a84000 x43934000 0}}}\n     {tx 1 x43a6a000 x43927000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43944000 x42f20000 1}\n       {x4393c000 x42f20000 x3ebd2f4c}\n       {x43944000 x42f00000 x3f062188}\n       {x43950000 x42f00000 x3f0d6359}\n       {x43984000 x42ed0000 x3f1e679a}\n       {x439fc000 x42ed0000 x3f2ceb3b}\n       {x43a60000 x42ec0000 x3f2fabeb}\n       {x43ac8000 x42e60000 x3f30ac2b}\n       {x43afc000 x42e20000 x3f30ec3b}\n       {x43b40000 x42e00000 x3f30ec3b}\n       {x43b6c000 x42df0000 x3f30ac2b}\n       {x43b90000 x42de0000 x3f2e2b8b}\n       {x43bb8000 x42e10000 x3f28aa2b}\n       {x43be8000 x42e30000 x3f23a8ea}\n       {x43c18000 x42e50000 x3f22689a}\n       {x43c40000 x42e80000 x3f21685a}\n       {x43c70000 x42f00000 x3f1da76a}\n       {x43c74000 x42f50000 x3f1ce73a}\n       {x43c3c000 x42fe0000 x3f1d675a}\n       {x43c24000 x43038000 x3f1d675a}\n       {x43c24000 x43058000 x3f1da76a}\n       {x43c4c000 x43080000 x3f1da76a}\n       {x43c94000 x430b8000 x3f1da76a}\n       {x43ccc000 x430f0000 x3f1de77a}\n       {x43ce0000 x43110000 x3f1e679a}\n       {x43d0c000 x43138000 x3f1f27ca}\n       {x43d38000 x43168000 x3f1f67da}\n       {x43d74000 x431a8000 x3f1f67da}\n       {x43d9c000 x431f0000 x3f1fa7ea}\n       {x43dd0000 x43250000 x3f1fa7ea}\n       {x43e30000 x432b0000 x3f1ea7aa}\n       {x43eb8000 x43320000 x3e1324c9}}}\n     {tx 1 x43bd7600 x43029c00}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ad0000 x429b0000 1}\n       {x42ab0000 x429c0000 x3e9b26ca}\n       {x42a80000 x429c0000 x3eac2b0b}\n       {x42a00000 x429d0000 x3ee1384e}\n       {x42920000 x429e0000 x3f13e4f9}\n       {x427c0000 x42a10000 x3f20e83a}\n       {x424e0000 x42a30000 x3f2a2a8b}\n       {x42320000 x42a50000 x3f31ac6b}\n       {x42180000 x42a90000 x3f32ecbb}\n       {x42080000 x42ad0000 x3f32ecbb}\n       {x42040000 x42b20000 x3f32acab}\n       {x42040000 x42b60000 x3f32acab}\n       {x42080000 x42b80000 x3f32acab}\n       {x420c0000 x42bc0000 x3f32acab}\n       {x41e40000 x42c30000 x3f346d1b}\n       {x41c80000 x42c50000 x3f35ad6b}\n       {x41940000 x42c90000 x3f366d9b}\n       {x41600000 x42d00000 x3f36adab}\n       {x41600000 x42d50000 x3f36adab}\n       {x41800000 x42d60000 x3f35ed7b}\n       {x41940000 x42d80000 x3f35ed7b}\n       {x41ac0000 x42dd0000 x3f35ed7b}\n       {x41bc0000 x42e30000 x3f35ad6b}\n       {x41d40000 x42e80000 x3f35ad6b}\n       {x41ec0000 x42ed0000 x3f35ad6b}\n       {x41f80000 x42f20000 x3f35ad6b}\n       {x41ec0000 x42f70000 x3f35ad6b}\n       {x41c40000 x42fb0000 x3f35ed7b}\n       {x41a40000 x43020000 x3f2d6b5b}\n       {x419c0000 x43070000 x3ef0bc2f}\n       {x419c0000 x43098000 0}}}\n     {tx 1 x42150842 x42c9a529}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42980000 x42760000 1}}}\n     {tx 1 x42980000 x42760000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43278000 x41d40000 1}\n       {x43260000 x41d40000 x3ebdaf6c}\n       {x43248000 x41d40000 x3ed2348d}\n       {x43230000 x41d80000 x3eee3b8f}\n       {x431d0000 x41f00000 x3f0360d8}\n       {x43178000 x420c0000 x3f056158}\n       {x43138000 x42180000 x3f082209}\n       {x430f0000 x421e0000 x3f16a5a9}\n       {x430b0000 x421e0000 x3f1f67da}\n       {x43030000 x421c0000 x3f24691a}\n       {x42fa0000 x42160000 x3f2769da}\n       {x42ea0000 x420e0000 x3f286a1b}\n       {x42df0000 x420a0000 x3f292a4b}\n       {x42d60000 x42060000 x3f29aa6b}\n       {x42ce0000 x42040000 x3f29ea7b}\n       {x42c90000 x42020000 x3f29aa6b}\n       {x42c70000 x42020000 x3f26e9ba}\n       {x42c50000 x42040000 x3f26e9ba}\n       {x42c00000 x41fc0000 x3f27a9ea}\n       {x42bd0000 x41f80000 x3f27e9fa}\n       {x42b70000 x41ec0000 x3f29aa6b}\n       {x42ab0000 x41cc0000 x3f2aeabb}\n       {x429d0000 x41a80000 x3f2aaaab}\n       {x42920000 x41880000 x3f2a2a8b}\n       {x42890000 x41680000 x3f21685a}\n       {x428b0000 x41680000 x3e7f3fd0}\n       {x428e0000 x41780000 0}}}\n     {tx 1 x42e71c72 x41ece38e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x434f0000 x41940000 1}\n       {x434e0000 x41940000 x3ed1b46d}\n       {x434f0000 x41980000 x3f00a028}\n       {x43510000 x419c0000 x3f00e038}\n       {x43580000 x41a40000 x3f022088}\n       {x435d0000 x41900000 x3f0b62d9}\n       {x43600000 x41800000 x3f166599}\n       {x43648000 x41780000 x3f1765d9}\n       {x436c0000 x41840000 x3f1aa6aa}\n       {x43720000 x41900000 x3f1b66da}\n       {x43788000 x41a00000 x3f1ae6ba}\n       {x437d8000 x41bc0000 x3f1c270a}\n       {x43800000 x41d40000 x3f1ce73a}\n       {x43804000 x41f40000 x3f1da76a}\n       {x43828000 x42080000 x3f1de77a}\n       {x43858000 x420e0000 x3f1de77a}\n       {x4388c000 x420e0000 x3f1e278a}\n       {x438c8000 x41fc0000 x3f21a86a}\n       {x438ec000 x41e00000 x3f23a8ea}\n       {x43918000 x41b00000 x3f27a9ea}\n       {x43930000 x41880000 x3f28ea3b}\n       {x43950000 x41480000 x3f292a4b}\n       {x43970000 x41280000 x3f28aa2b}\n       {x439a4000 x41180000 x3f23a8ea}\n       {x439dc000 x41180000 x3f022088}\n       {x43a24000 x41080000 0}}}\n     {tx 1 x43811627 x41a47627}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43f48000 x42820000 1}\n       {x43f40000 x42820000 x3ed334cd}\n       {x43f38000 x42830000 x3ed334cd}\n       {x43f18000 x42840000 x3ee6398e}\n       {x43efc000 x42880000 x3efa3e90}\n       {x43ed0000 x428f0000 x3f0320c8}\n       {x43ebc000 x42940000 x3f0360d8}\n       {x43eb0000 x429a0000 x3f042108}\n       {x43e9c000 x429e0000 x3f046118}\n       {x43e88000 x42a00000 x3f04e138}\n       {x43e6c000 x42a20000 x3f05e178}\n       {x43e48000 x42a30000 x3f0c6319}\n       {x43e14000 x42a30000 x3f122489}\n       {x43dd0000 x42a10000 x3f166599}\n       {x43d78000 x42990000 x3f21685a}\n       {x43d44000 x42950000 x3f25695a}\n       {x43d1c000 x42920000 x3f25e97a}\n       {x43cd8000 x428b0000 x3f26699a}\n       {x43c98000 x42870000 x3f26a9aa}\n       {x43c5c000 x42840000 x3f26a9aa}\n       {x43c1c000 x42810000 x3f26699a}\n       {x43bf8000 x42820000 x3f21284a}\n       {x43bf8000 x42840000 x3f1e679a}\n       {x43be0000 x42840000 x3f1ce73a}\n       {x43b9c000 x42800000 x3f1ce73a}\n       {x43b58000 x42760000 x3f1f67da}\n       {x43b0c000 x426a0000 x3f20a82a}\n       {x43acc000 x425c0000 x3f20e83a}\n       {x43ab8000 x42540000 x3f20e83a}\n       {x43aa8000 x424e0000 x3f1b26ca}\n       {x43a80000 x424a0000 0}}}\n     {tx 1 x43d298c6 x4288a529}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43950000 x42620000 1}\n       {x43944000 x42600000 x3e6b3acf}\n       {x4393c000 x425e0000 x3e842108}\n       {x43934000 x425c0000 x3ead2b4b}\n       {x43934000 x42580000 x3ebc2f0c}\n       {x43954000 x42560000 x3ec2308c}\n       {x4398c000 x42580000 x3ec2b0ac}\n       {x439e0000 x42600000 x3ec5314c}\n       {x439f0000 x42620000 x3ec5314c}\n       {x439f0000 x425a0000 x3ee6398e}\n       {x43a00000 x424c0000 x3ef8be30}\n       {x43a2c000 x42400000 x3efbbef0}\n       {x43a5c000 x423a0000 x3efdbf70}\n       {x43aa4000 x42380000 x3efe3f90}\n       {x43b04000 x42360000 x3efebfb0}\n       {x43b3c000 x42320000 x3f002008}\n       {x43b58000 x421a0000 x3f056158}\n       {x43b60000 x42060000 x3f0ca329}\n       {x43b7c000 x41f00000 x3f0de379}\n       {x43b88000 x41ec0000 x3f0de379}\n       {x43bb0000 x41dc0000 x3f0ca329}\n       {x43bc8000 x41cc0000 x3f096259}\n       {x43bd0000 x41c80000 x3f092249}\n       {x43bf0000 x41c00000 x3f086219}\n       {x43c1c000 x41c00000 x3f03a0e8}\n       {x43c40000 x41c40000 x3f02e0b8}\n       {x43c70000 x41d40000 x3f02a0a8}\n       {x43c9c000 x41e80000 x3f02a0a8}\n       {x43cc0000 x41fc0000 x3f02a0a8}\n       {x43cc8000 x42000000 x3f02a0a8}\n       {x43cdc000 x42060000 x3f02a0a8}\n       {x43cec000 x42100000 x3f02e0b8}\n       {x43d00000 x42200000 x3f0320c8}\n       {x43d0c000 x422e0000 x3f0360d8}\n       {x43d28000 x42380000 x3f03a0e8}\n       {x43d44000 x423a0000 x3f03a0e8}\n       {x43d68000 x423a0000 x3f03a0e8}\n       {x43d88000 x423a0000 x3f042108}\n       {x43dbc000 x423c0000 x3f046118}\n       {x43dd0000 x423c0000 x3f046118}\n       {x43e24000 x423e0000 x3f042108}\n       {x43e7c000 x423e0000 x3f046118}\n       {x43ea4000 x42340000 x3f046118}\n       {x43ebc000 x422a0000 x3f04e138}\n       {x43ef0000 x422c0000 x3f016058}\n       {x43f30000 x42340000 x3eddb76e}\n       {x43f68000 x423a0000 0}}}\n     {tx 1 x43bf7678 x4228cefb}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ec0000 x43028000 1}\n       {x42ec0000 x43038000 x3ebeafac}\n       {x42f10000 x43048000 x3eca328d}\n       {x43020000 x43040000 x3eedbb6f}\n       {x430b0000 x43008000 x3efc3f10}\n       {x43168000 x42f40000 x3f096259}\n       {x43210000 x42e70000 x3f10e439}\n       {x432e8000 x42d80000 x3f162589}\n       {x43368000 x42ce0000 x3f17e5f9}\n       {x43398000 x42c20000 x3f2328ca}\n       {x43390000 x42b50000 x3f32acab}\n       {x43398000 x42b10000 x3f34ed3b}\n       {x433d8000 x42b00000 x3f31ec7b}\n       {x433f0000 x42af0000 x3f2f6bdb}\n       {x43410000 x42b10000 x3f2a2a8b}\n       {x43468000 x42b90000 x3f26e9ba}\n       {x434e8000 x42c30000 x3f20a82a}\n       {x43550000 x42cd0000 x3f20280a}\n       {x435c0000 x42d80000 x3f20280a}\n       {x43658000 x42e70000 x3f20681a}\n       {x436e0000 x42ee0000 x3f20280a}\n       {x43788000 x42ef0000 x3f20681a}\n       {x43810000 x42ea0000 x3f22689a}\n       {x43858000 x42df0000 x3f22a8aa}\n       {x43864000 x42dc0000 x3f22e8ba}\n       {x43890000 x42cd0000 x3f25294a}\n       {x438ac000 x42b90000 x3f27e9fa}\n       {x438c0000 x42ad0000 x3f28aa2b}\n       {x438d8000 x42a50000 x3f28aa2b}\n       {x438f0000 x42a30000 x3f20e83a}\n       {x438fc000 x42a70000 x3f142509}\n       {x43920000 x42b10000 x3ecdb36d}\n       {x43934000 x42b40000 0}}}\n     {tx 1 x43558000 x42d0ba2f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42620000 x43218000 x3e152549}\n       {x42620000 x43228000 x3eb2acab}\n       {x42640000 x43238000 x3f046118}\n       {x42620000 x43248000 x3f0ca329}\n       {x425c0000 x43268000 x3f102409}\n       {x424a0000 x432a0000 x3f11e479}\n       {x422a0000 x432d0000 x3f156559}\n       {x42040000 x43308000 x3f19665a}\n       {x41d80000 x43328000 x3f19a66a}\n       {x41bc0000 x43368000 x3f19665a}\n       {x41b40000 x433a8000 x3f18a62a}\n       {x41b40000 x433f8000 x3f18260a}\n       {x41bc0000 x43460000 x3f166599}\n       {x41bc0000 x434b0000 x3f1765d9}\n       {x41bc0000 x43510000 x3f18e63a}\n       {x41c80000 x43560000 x3f19665a}\n       {x41dc0000 x435c8000 x3f1a268a}\n       {x41f40000 x43628000 x3f1ba6ea}\n       {x420a0000 x43680000 x3f1be6fa}\n       {x420e0000 x436b0000 x3f1c270a}\n       {x420e0000 x436e0000 x3f1ce73a}\n       {x420e0000 x43728000 x3f1ce73a}\n       {x420e0000 x43758000 x3f1ce73a}\n       {x420a0000 x43790000 x3f1ce73a}\n       {x42060000 x437a8000 x3f1ce73a}\n       {x42020000 x437c0000 x3f1c671a}\n       {x41e40000 x437c8000 x3f1ce73a}\n       {x41b00000 x437c8000 x3f1ce73a}\n       {x41a80000 x437c8000 x3f1c671a}\n       {x41a00000 x437c8000 x3f1725c9}\n       {x41940000 x437c8000 x3f1725c9}\n       {x41380000 x437c0000 x3f1765d9}\n       {x40600000 x437a8000 x3ef1bc6f}\n       {x40400000 x43798000 x3e6e3b8f}}}\n     {tx 1 x41f9c3c4 x4356e969}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43824000 x43800000 1}\n       {x4381c000 x43800000 x3e8320c8}\n       {x43844000 x437d0000 x3ef9be70}\n       {x43868000 x437b8000 x3f05e178}\n       {x438c0000 x43788000 x3f0ca329}\n       {x438d8000 x43780000 x3f0d6359}\n       {x43924000 x43748000 x3f0e2389}\n       {x43954000 x43708000 x3f0e6399}\n       {x43974000 x436b0000 x3f0ee3b9}\n       {x4398c000 x43680000 x3f0ee3b9}\n       {x439c4000 x43668000 x3f0ea3a9}\n       {x439f8000 x43668000 x3f0d6359}\n       {x43a0c000 x43668000 x3f0b22c9}\n       {x439fc000 x43640000 x3f0a6299}\n       {x439c4000 x43608000 x3f0ae2b9}\n       {x43974000 x435c0000 x3f0ba2e9}\n       {x4394c000 x43590000 x3f0ca329}\n       {x43938000 x43578000 x3f0d6359}\n       {x43918000 x43578000 x3f0ee3b9}\n       {x438e4000 x43588000 x3f112449}\n       {x438a8000 x43598000 x3f12a4a9}\n       {x43870000 x435b0000 x3f12e4b9}\n       {x43824000 x435b8000 x3f126499}\n       {x437c8000 x435a0000 x3f11e479}\n       {x436f0000 x43558000 x3f11e479}\n       {x43640000 x43510000 x3f10e439}\n       {x435a8000 x434c0000 x3f106419}\n       {x43550000 x43480000 x3f0f63d9}\n       {x43510000 x43450000 x3f0be2f9}\n       {x434e8000 x43428000 x3f0aa2a9}\n       {x434e0000 x43410000 x3f06e1b8}\n       {x434e0000 x433e8000 x3f05e178}\n       {x434d8000 x433b0000 x3f062188}\n       {x434b8000 x43378000 x3f05e178}\n       {x434c8000 x43358000 x3f05e178}\n       {x43520000 x43330000 x3f046118}\n       {x43598000 x432f8000 x3f0360d8}\n       {x43638000 x432c0000 x3f0320c8}\n       {x43668000 x43298000 x3f0320c8}\n       {x43670000 x43280000 x3f03a0e8}\n       {x435e8000 x43250000 x3f056158}\n       {x43520000 x43228000 x3f066198}\n       {x433f0000 x431f8000 x3f0a6299}\n       {x43338000 x431e8000 x3f0ca329}\n       {x432a0000 x431e8000 x3f0d2349}\n       {x43250000 x431f8000 x3f0d2349}\n       {x43230000 x431f8000 x3f0ba2e9}\n       {x43220000 x431f8000 x3f07a1e8}\n       {x43208000 x431d0000 x3f06e1b8}\n       {x431e0000 x43170000 x3f0761d8}\n       {x431e0000 x43120000 x3f07e1f8}\n       {x431b8000 x430b0000 x3f0761d8}\n       {x43130000 x43060000 x3ed2b4ad}\n       {x430f8000 x43050000 0}}}\n     {tx 1 x436c871c x4346a84c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43b34000 x43b54000 x3e25294a}\n       {x43b2c000 x43b54000 x3ebc2f0c}\n       {x43b2c000 x43b5c000 x3ec2308c}\n       {x43b24000 x43b68000 x3ec4b12c}\n       {x43b00000 x43b88000 x3ec9b26d}\n       {x43aac000 x43bb4000 x3ece338d}\n       {x43a4c000 x43bc4000 x3eed3b4f}\n       {x439d8000 x43bc4000 x3f066198}\n       {x439a0000 x43bc4000 x3f0a6299}\n       {x4397c000 x43bc4000 x3f0c6319}\n       {x4395c000 x43bc4000 x3f09a269}\n       {x43958000 x43bd0000 x3f05a168}\n       {x4394c000 x43bf0000 x3f05a168}\n       {x43934000 x43c10000 x3f05a168}\n       {x43918000 x43c40000 x3f05a168}\n       {x43910000 x43c60000 x3f046118}\n       {x43900000 x43c78000 x3ef5bd6f}\n       {x438f4000 x43c88000 x3ed8360e}\n       {x438e8000 x43c94000 x3edc370e}\n       {x438d8000 x43cac000 x3eecbb2f}\n       {x438d8000 x43ccc000 x3ef63d8f}\n       {x438d8000 x43cd8000 x3efa3e90}\n       {x438d8000 x43cf8000 x3f016058}\n       {x438d4000 x43d18000 x3f0721c8}\n       {x438d4000 x43d34000 x3f0aa2a9}\n       {x438dc000 x43d3c000 x3f0b62d9}\n       {x43918000 x43d48000 x3f0f63d9}\n       {x43950000 x43d58000 x3f0fe3f9}\n       {x43974000 x43d68000 x3f106419}\n       {x4397c000 x43d8c000 x3f106419}\n       {x43974000 x43db4000 x3f0ae2b9}\n       {x43970000 x43de0000 x3f09e279}\n       {x43980000 x43df8000 x3f09a269}\n       {x439a8000 x43e18000 x3edcb72e}\n       {x439c4000 x43e34000 0}}}\n     {tx 1 x439915f1 x43c9057c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43adc000 x43478000 1}\n       {x43ad4000 x43478000 x3ea328ca}\n       {x43adc000 x43478000 x3ea328ca}\n       {x43ae4000 x43480000 x3ea3a8ea}\n       {x43afc000 x43490000 x3ea328ca}\n       {x43b30000 x434b0000 x3e8ca329}\n       {x43b7c000 x434e0000 x3e5c370e}\n       {x43ba8000 x434f0000 x3e54350d}\n       {x43bc0000 x434f0000 x3e51344d}\n       {x43bd8000 x434e8000 x3e753d4f}\n       {x43bfc000 x434e0000 x3e882209}\n       {x43c40000 x434e0000 x3e952549}\n       {x43c74000 x434f0000 x3e94a529}\n       {x43ca8000 x434f8000 x3e91a469}\n       {x43cd0000 x43508000 x3e91a469}\n       {x43d00000 x43528000 x3e922489}\n       {x43d24000 x43540000 x3e8d2349}\n       {x43d50000 x43568000 x3e882209}\n       {x43d6c000 x43598000 x3e84a128}\n       {x43d8c000 x435c0000 x3e85a168}\n       {x43da8000 x435f0000 x3e85a168}\n       {x43dc0000 x43618000 x3e882209}\n       {x43dd8000 x43640000 x3e8e2389}\n       {x43e04000 x43660000 x3ea2a8aa}\n       {x43e4c000 x43690000 x3ea3a8ea}\n       {x43e78000 x436b0000 x3ea3a8ea}\n       {x43e84000 x436d8000 x3ea729ca}\n       {x43e7c000 x43700000 x3eba2e8c}\n       {x43e5c000 x43740000 x3ecab2ad}\n       {x43e38000 x437a8000 x3ed5b56d}\n       {x43e2c000 x437e0000 x3edab6ae}\n       {x43e2c000 x4380c000 x3eddb76e}\n       {x43e2c000 x43820000 x3edf37ce}\n       {x43e24000 x4383c000 x3ee0380e}\n       {x43e24000 x43854000 x3ee0b82e}\n       {x43e28000 x43874000 x3ee0b82e}\n       {x43e28000 x43888000 x3ee1384e}\n       {x43e04000 x43898000 x3ee4b92e}\n       {x43ddc000 x438b0000 x3eee3b8f}\n       {x43dac000 x438c8000 x3eef3bcf}\n       {x43d54000 x438e0000 x3ef6bdaf}\n       {x43d28000 x438f0000 x3efbbef0}\n       {x43d04000 x43908000 x3ef03c0f}\n       {x43ce4000 x43914000 x3ed0b42d}\n       {x43c80000 x43910000 x3ed2b4ad}\n       {x43c04000 x438f8000 x3ee2b8ae}\n       {x43ba4000 x438e4000 x3eef3bcf}\n       {x43b88000 x438e0000 x3efe3f90}\n       {x43b90000 x438e8000 x3efcbf30}\n       {x43b98000 x438ec000 x3efdbf70}\n       {x43bc8000 x43904000 x3efdbf70}\n       {x43c04000 x43920000 x3ef93e50}\n       {x43c40000 x43940000 x3eeb3acf}\n       {x43c68000 x43958000 x3ee9ba6f}\n       {x43c98000 x43970000 x3ee8ba2f}\n       {x43cc0000 x4397c000 x3ee83a0f}\n       {x43cf4000 x43988000 x3ee7b9ee}\n       {x43d34000 x4399c000 x3ee7b9ee}\n       {x43d4c000 x439a4000 x3ee3b8ee}\n       {x43d5c000 x439ac000 x3ee1384e}\n       {x43d7c000 x439c0000 x3ebcaf2c}\n       {x43d8c000 x439d0000 0}}}\n     {tx 1 x43ce77be x437cb18c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40f00000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43afc000 x428a0000 1}\n       {x43b04000 x428a0000 x3ead2b4b}\n       {x43b20000 x428d0000 x3ebc2f0c}\n       {x43b74000 x42960000 x3eceb3ad}\n       {x43c00000 x42a10000 x3ecd334d}\n       {x43c38000 x42a20000 x3ec6b1ac}\n       {x43c6c000 x42a10000 x3ed6b5ad}\n       {x43cac000 x42a10000 x3ef4bd2f}\n       {x43d0c000 x42ac0000 x3ef83e10}\n       {x43d40000 x42b90000 x3ef7bdef}\n       {x43d70000 x42cc0000 x3ef6bdaf}\n       {x43db0000 x42d80000 x3eef3bcf}\n       {x43dfc000 x42de0000 x3eedbb6f}\n       {x43e48000 x42e00000 x3eed3b4f}\n       {x43e7c000 x42dc0000 x3eedbb6f}\n       {x43e9c000 x42cf0000 x3ef3bcef}\n       {x43ecc000 x42c80000 x3f00e038}\n       {x43f24000 x42c00000 x3efcbf30}\n       {x43f58000 x42bd0000 x3ed9364e}\n       {x43f78000 x42bc0000 0}}}\n     {tx 1 x43d45666 x42b58ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42960000 x433a8000 1}\n       {x42950000 x433b8000 x3e6b3acf}\n       {x42920000 x433d0000 x3e85a168}\n       {x42910000 x43400000 x3e9b26ca}\n       {x42910000 x43428000 x3eadab6b}\n       {x42930000 x43430000 x3ec0300c}\n       {x429f0000 x43440000 x3ed4b52d}\n       {x42a80000 x43460000 x3ed5b56d}\n       {x42aa0000 x43478000 x3ed6b5ad}\n       {x42a90000 x43498000 x3ed9b66e}\n       {x42a70000 x434c8000 x3edcb72e}\n       {x42a40000 x434e0000 x3edeb7ae}\n       {x42a00000 x434e8000 x3ee5394e}\n       {x429e0000 x434f0000 x3ee5b96e}\n       {x429c0000 x434f0000 x3ed7b5ed}}}\n     {tx 1 x429cddde x43460889}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42fc0000 x42660000 1}\n       {x42f90000 x42660000 x3eb3aceb}\n       {x42f20000 x42660000 x3ea1284a}\n       {x42e90000 x42680000 x3eb82e0c}\n       {x42de0000 x426e0000 x3ebfafec}\n       {x42d30000 x42720000 x3ec1b06c}\n       {x42be0000 x42740000 x3ed6b5ad}\n       {x42aa0000 x426e0000 x3ef63d8f}\n       {x42990000 x42640000 x3f002008}\n       {x42910000 x425c0000 x3f00a028}\n       {x428b0000 x42520000 x3f016058}\n       {x42890000 x424c0000 x3f02a0a8}\n       {x42840000 x42380000 x3f0ae2b9}\n       {x42820000 x42220000 x3f0fa3e9}\n       {x427a0000 x420a0000 x3f1324c9}\n       {x426a0000 x41f80000 x3f142509}\n       {x424e0000 x41e00000 x3f14e539}\n       {x42240000 x41d00000 x3f142509}\n       {x41f40000 x41c00000 x3e9da76a}}}\n     {tx 1 x42a2ca1b x4240f287}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42660000 x42d60000 1}\n       {x426c0000 x42d60000 x3eb3aceb}\n       {x42700000 x42d60000 x3eb8ae2c}\n       {x427c0000 x42d70000 x3ed0340d}\n       {x42820000 x42d80000 1}\n       {x428a0000 x42da0000 x3ed2b4ad}\n       {x429b0000 x42df0000 x3eda368e}\n       {x42a80000 x42df0000 x3edc370e}\n       {x42aa0000 x42d60000 x3ee5b96e}\n       {x42aa0000 x42cb0000 x3f00e038}\n       {x42ab0000 x42c90000 x3f02a0a8}\n       {x42b40000 x42c20000 x3f042108}\n       {x42c40000 x42bb0000 x3f022088}\n       {x42db0000 x42b40000 x3efdbf70}\n       {x42ec0000 x42ac0000 x3efe3f90}\n       {x42f90000 x42a30000 x3efebfb0}\n       {x43020000 x429d0000 x3f02e0b8}\n       {x430c0000 x42990000 x3f042108}\n       {x43158000 x42960000 x3f03a0e8}\n       {x431a8000 x42920000 x3f0360d8}\n       {x431e0000 x428c0000 x3f0a6299}\n       {x43208000 x42860000 x3f0f23c9}\n       {x43220000 x427a0000 x3f16a5a9}\n       {x43250000 x42700000 x3f19665a}\n       {x432b8000 x42620000 x3f19a66a}\n       {x43318000 x425a0000 x3f19e67a}\n       {x433b0000 x424c0000 x3f1a268a}\n       {x43420000 x423e0000 x3f1a669a}\n       {x43470000 x422e0000 x3f1aa6aa}\n       {x434a8000 x42260000 x3f1ae6ba}\n       {x434f0000 x42200000 x3f1b26ca}\n       {x43540000 x421e0000 x3f1ae6ba}\n       {x43578000 x421c0000 x3f1ae6ba}\n       {x435b0000 x421a0000 x3f12e4b9}\n       {x435e8000 x421a0000 x3e91a469}}}\n     {tx 1 x4307edb7 x42990750}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {xc0000000 x43a90000 1}\n       {xc0400000 x43a90000 x3ea0280a}\n       {xc0400000 x43a9c000 x3e9ba6ea}\n       {xc0400000 x43aa4000 x3ea8aa2b}\n       {0 x43ab4000 x3eb5ad6b}\n       {x40f00000 x43ad0000 x3ec4310c}\n       {x41a00000 x43ad8000 x3ed3b4ed}\n       {x41e00000 x43ac4000 x3edb36ce}\n       {x42000000 x43aa4000 x3ee83a0f}\n       {x420e0000 x43a88000 x3ef33ccf}\n       {x421e0000 x43a80000 x3ef5bd6f}\n       {x42320000 x43a80000 x3ef4bd2f}\n       {x42420000 x43a7c000 x3ef3bcef}\n       {x42520000 x43a74000 x3ef2bcaf}\n       {x42540000 x43a54000 x3ef43d0f}\n       {x424a0000 x43a2c000 x3efe3f90}\n       {x42460000 x43a10000 x3effbff0}\n       {x423e0000 x439f4000 x3eff3fd0}\n       {x42320000 x439d4000 x3eff3fd0}\n       {x42260000 x439b4000 x3effbff0}\n       {x421c0000 x43990000 x3f02a0a8}\n       {x421a0000 x43978000 x3f05e178}\n       {x421e0000 x43964000 x3f06a1a8}\n       {x423a0000 x43954000 x3f05a168}\n       {x425e0000 x43944000 x3ef63d8f}\n       {x426e0000 x43938000 x3eb02c0b}\n       {x42760000 x43934000 x3e312c4b}\n       {x42760000 x43924000 x3d9a268a}\n       {x427a0000 x4391c000 x3dc6318c}\n       {x42840000 x43914000 x3dcc330d}\n       {x428b0000 x4390c000 x3df23c8f}\n       {x42900000 x438fc000 x3dd2348d}\n       {x42920000 x438f4000 0}}}\n     {tx 1 x4220f83e x439f3a2f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43008000 x43b8c000 1}\n       {x42fe0000 x43b90000 x3e96a5a9}\n       {x42f80000 x43b9c000 x3ea4290a}\n       {x42ed0000 x43ba4000 x3eceb3ad}\n       {x42e00000 x43ba8000 x3ede378e}\n       {x42d50000 x43bb8000 x3ede378e}\n       {x42d20000 x43bdc000 x3ec7b1ec}\n       {x42d20000 x43bf4000 x3ec2308c}\n       {x42ce0000 x43c0c000 x3ebe2f8c}\n       {x42c70000 x43c24000 x3ebd2f4c}\n       {x42c30000 x43c38000 x3ebdaf6c}\n       {x42be0000 x43c54000 x3ebdaf6c}\n       {x42b80000 x43c64000 x3ebdaf6c}\n       {x42af0000 x43c70000 x3ec4b12c}\n       {x42970000 x43c7c000 x3ee9ba6f}\n       {x426a0000 x43c78000 x3f05a168}\n       {x424c0000 x43c74000 x3f09a269}\n       {x42460000 x43c7c000 x3f016058}\n       {x423e0000 x43ca0000 x3d7c3f10}}}\n     {tx 1 x42bbaf28 x43c15e51}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x431a8000 x43d68000 1}\n       {x43198000 x43d64000 x3e5735cd}\n       {x43178000 x43d5c000 x3e97a5e9}\n       {x43138000 x43d50000 x3ec6318c}\n       {x430f0000 x43d44000 x3ee83a0f}\n       {x430c8000 x43d44000 x3eeebbaf}\n       {x430a0000 x43d44000 x3eefbbef}\n       {x43090000 x43d38000 x3edb36ce}\n       {x43090000 x43d2c000 x3edb36ce}\n       {x430a0000 x43d18000 x3edbb6ee}\n       {x43128000 x43d0c000 x3edab6ae}\n       {x43150000 x43d0c000 x3edab6ae}\n       {x431a8000 x43cfc000 x3eda368e}\n       {x431b8000 x43cd8000 x3eddb76e}\n       {x431a0000 x43cbc000 x3ee83a0f}\n       {x431a8000 x43cb0000 x3ef0bc2f}\n       {x43230000 x43ca8000 x3ef5bd6f}\n       {x43280000 x43c98000 x3ef53d4f}\n       {x43288000 x43c84000 x3ef5bd6f}\n       {x43280000 x43c70000 x3ef83e10}\n       {x432c0000 x43c6c000 x3efabeb0}\n       {x432f0000 x43c6c000 x3efdbf70}\n       {x433d0000 x43c70000 x3efdbf70}\n       {x43448000 x43c6c000 x3ef93e50}\n       {x43450000 x43c58000 x3ef93e50}\n       {x43450000 x43c48000 x3efa3e90}\n       {x43468000 x43c40000 x3ef33ccf}\n       {x43480000 x43c40000 x3ef23c8f}\n       {x43488000 x43c38000 x3ef0bc2f}\n       {x434a0000 x43c2c000 x3eee3b8f}\n       {x434c8000 x43c1c000 x3eed3b4f}\n       {x434d8000 x43c14000 x3eeb3acf}\n       {x43518000 x43c00000 x3ee0b82e}\n       {x43568000 x43be0000 x3eda368e}\n       {x435a0000 x43bcc000 x3ec7b1ec}\n       {x435d8000 x43bc0000 x3e1b26ca}}}\n     {tx 1 x432cdc72 x43ca471c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x438a4000 x43e30000 1}\n       {x43884000 x43e28000 x3ea6298a}\n       {x4386c000 x43e20000 x3eb7adeb}\n       {x4385c000 x43e1c000 x3ecc330d}\n       {x43854000 x43e1c000 x3ed6b5ad}\n       {x43848000 x43e18000 0}}}\n     {tx 1 x4386caab x43e21555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43cdc000 x43e04000 1}\n       {x43ce8000 x43e08000 x3e40300c}\n       {x43cf0000 x43e0c000 x3e46318c}\n       {x43d14000 x43e18000 x3e6739ce}\n       {x43d54000 x43e2c000 x3e8b22c9}\n       {x43d84000 x43e40000 x3e91a469}\n       {x43d94000 x43e54000 x3e99264a}\n       {x43d88000 x43e74000 x3ea328ca}\n       {x43d70000 x43e84000 x3ec0b02c}\n       {x43d48000 x43e8c000 x3ee4390e}\n       {x43d2c000 x43e90000 x3ee8ba2f}\n       {x43d08000 x43e94000 x3ee6398e}\n       {x43cb0000 x43e98000 x3ec3b0ec}\n       {x43c3c000 x43e8c000 x3e753d4f}\n       {x43ba0000 x43e84000 x3e322c8b}\n       {x43b5c000 x43e84000 x3e352d4b}\n       {x43b54000 x43e84000 0}}}\n     {tx 1 x43cd12d3 x43e5e969}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43c2c000 x43ce8000 1}\n       {x43c38000 x43ce4000 1}\n       {x43c44000 x43ce4000 x3dd6358d}\n       {x43c14000 x43ce0000 x3eb92e4c}\n       {x43c00000 x43cdc000 x3ec9324d}\n       {x43bcc000 x43cdc000 x3ee6398e}\n       {x43b74000 x43cd4000 x3f0721c8}\n       {x43b28000 x43cd0000 x3f0de379}\n       {x43b0c000 x43ccc000 x3f0de379}\n       {x43aec000 x43cc8000 x3f0ba2e9}\n       {x43ae0000 x43cc8000 1}\n       {x43aa4000 x43cc0000 x3f09e279}\n       {x43a6c000 x43cb8000 x3f07a1e8}\n       {x43a30000 x43cb8000 x3f0320c8}\n       {x43a0c000 x43cb8000 x3eff3fd0}\n       {x439fc000 x43cd4000 x3eee3b8f}\n       {x439fc000 x43cf8000 x3ed9b66e}\n       {x43a08000 x43d18000 x3ed7b5ed}\n       {x43a04000 x43d24000 x3ee338ce}\n       {x439e4000 x43d24000 x3ef3bcef}\n       {x439dc000 x43d24000 x3ef53d4f}\n       {x439c4000 x43d24000 x3efb3ed0}\n       {x439c0000 x43d2c000 x3efdbf70}\n       {x439c0000 x43d48000 x3efabeb0}\n       {x439d0000 x43d60000 x3ef8be30}\n       {x439fc000 x43d74000 x3ef8be30}\n       {x43a20000 x43d84000 x3ef8be30}\n       {x43a50000 x43d90000 x3efa3e90}\n       {x43a80000 x43d94000 x3efa3e90}\n       {x43ac0000 x43da0000 x3efabeb0}\n       {x43af4000 x43da8000 x3efa3e90}\n       {x43b1c000 x43db4000 x3ef5bd6f}\n       {x43b3c000 x43dc4000 x3ec2b0ac}\n       {x43b68000 x43dd4000 x3e693a4f}\n       {x43b78000 x43dd4000 0}}}\n     {tx 1 x43abdf16 x43d24750}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d54000 x43ae0000 1}\n       {x43d54000 x43aec000 x3e1f27ca}\n       {x43d54000 x43af4000 x3e1f27ca}\n       {x43d54000 x43b00000 x3e162589}\n       {x43d48000 x43b24000 x3e4330cc}\n       {x43d30000 x43b30000 x3e7f3fd0}\n       {x43d28000 x43b30000 0}}}\n     {tx 1 x43d46db7 x43b09b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43878000 x43924000 1}\n       {x43878000 x43930000 x3e9fa7ea}\n       {x4387c000 x43938000 x3ea3a8ea}\n       {x4388c000 x43944000 x3ea729ca}\n       {x438d0000 x4396c000 x3ea729ca}\n       {x43934000 x43998000 x3e9da76a}\n       {x4396c000 x439a8000 x3e9324c9}\n       {x43990000 x439ac000 x3e9324c9}\n       {x439ac000 x439a0000 x3eacab2b}\n       {x439fc000 x43998000 x3ebd2f4c}\n       {x43a64000 x4399c000 x3ec0300c}\n       {x43ab8000 x439a0000 x3ec0300c}\n       {x43afc000 x439ac000 x3ec0300c}\n       {x43b18000 x439b8000 x3ebfafec}\n       {x43b24000 x439c0000 x3ebdaf6c}\n       {x43b38000 x439d4000 x3eb6adab}\n       {x43b8c000 x439f8000 x3eb42d0b}\n       {x43be0000 x43a18000 x3ea92a4b}\n       {x43c04000 x43a28000 0}}}\n     {tx 1 x43a15af3 x4399ef28}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x432c8000 x43468000 1}\n       {x432b8000 x43470000 x3d48320d}\n       {x43278000 x43488000 x3d882209}\n       {x431e8000 x434b0000 x3e64390e}\n       {x43168000 x434d0000 x3e89a269}\n       {x430f0000 x43500000 x3e8da369}\n       {x430d8000 x43528000 x3e84a128}\n       {x43120000 x43570000 x3e733ccf}\n       {x43138000 x43578000 0}}}\n     {tx 1 x431b638e x434e1c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43964000 x43348000 1}\n       {x43954000 x43348000 x3eaf2bcb}\n       {x43948000 x43350000 x3eb12c4b}\n       {x4392c000 x43368000 x3ec2308c}\n       {x43904000 x43398000 x3ed0340d}\n       {x438e0000 x433b8000 x3ecd334d}\n       {x438bc000 x433e0000 x3ecc330d}\n       {x43898000 x43400000 x3ecd334d}\n       {x43870000 x43418000 x3ec2b0ac}\n       {x4383c000 x43438000 x3ebaaeac}\n       {x43818000 x43440000 x3ebe2f8c}\n       {x437e8000 x43440000 x3ecbb2ed}\n       {x437b0000 x43430000 x3ecdb36d}\n       {x43780000 x43420000 x3ed0340d}\n       {x43750000 x43420000 x3ed1b46d}\n       {x436f8000 x43440000 x3ed1b46d}\n       {x43690000 x43450000 x3ecab2ad}\n       {x435f8000 x43460000 x3eb3aceb}\n       {x43518000 x43470000 x3ea6a9aa}\n       {x43438000 x43468000 x3ea92a4b}\n       {x43408000 x43460000 x3eaa2a8b}\n       {x43378000 x43438000 x3eb5ad6b}\n       {x43310000 x43418000 x3eb7adeb}\n       {x43300000 x43418000 x3e93a4e9}\n       {x43300000 x43428000 0}}}\n     {tx 1 x43748a3d x434047ae}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x437e0000 x43260000 1}\n       {x43800000 x43260000 x3e49324d}\n       {x43810000 x43260000 x3e64390e}\n       {x4383c000 x43270000 x3e80a028}\n       {x4385c000 x43280000 x3e86a1a8}\n       {x43868000 x43280000 x3e8320c8}\n       {x43880000 x43278000 x3e842108}\n       {x43894000 x43270000 x3e86a1a8}\n       {x438a4000 x43258000 x3e8ca329}\n       {x438b4000 x43240000 x3e912449}\n       {x438c4000 x43220000 x3e96a5a9}\n       {x438c8000 x43208000 x3e99264a}\n       {x438c8000 x431e8000 x3ea2288a}\n       {x438d8000 x431c0000 x3ea92a4b}\n       {x438fc000 x431b0000 x3eaa2a8b}\n       {x4391c000 x431b0000 x3ea5a96a}\n       {x43930000 x431b0000 x3ea6298a}\n       {x43948000 x431a0000 x3eac2b0b}\n       {x43958000 x43198000 x3eb42d0b}\n       {x43964000 x43198000 x3ebeafac}\n       {x4397c000 x43190000 x3ec6b1ac}\n       {x43994000 x43178000 x3ece338d}\n       {x439ac000 x43160000 x3ede378e}\n       {x439c8000 x43158000 x3eedbb6f}\n       {x439f0000 x43158000 x3ef0bc2f}\n       {x43a00000 x43158000 x3ef23c8f}\n       {x43a14000 x43150000 x3ef43d0f}\n       {x43a3c000 x43140000 x3ef43d0f}\n       {x43a9c000 x43128000 x3ef3bcef}\n       {x43ae0000 x430f8000 x3ef1bc6f}\n       {x43b0c000 x430d0000 x3ee338ce}\n       {x43b24000 x430a0000 x3eceb3ad}\n       {x43b2c000 x43080000 x3ecab2ad}\n       {x43b40000 x43060000 x3ec0300c}\n       {x43b64000 x43048000 x3eb62d8b}\n       {x43ba4000 x43028000 x3eb82e0c}\n       {x43bdc000 x43008000 x3eb92e4c}\n       {x43c18000 x42fb0000 x3eb8ae2c}\n       {x43c4c000 x42fa0000 x3eb6adab}\n       {x43c8c000 x42fc0000 x3eb3aceb}\n       {x43cd4000 x42ff0000 x3eb1ac6b}\n       {x43cf8000 x43000000 x3ea729ca}\n       {x43d1c000 x43008000 x3ea328ca}\n       {x43d30000 x42ff0000 x3e91a469}\n       {x43d54000 x42fd0000 x3e46318c}\n       {x43d60000 x42fd0000 0}}}\n     {tx 1 x43a342c8 x4313d0b2}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x40200000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43bdc000 x42040000 x3e46318c}\n       {x43c08000 x42080000 x3e7a3e90}\n       {x43c38000 x42080000 x3e86a1a8}\n       {x43ca8000 x42080000 x3e902409}\n       {x43d30000 x420a0000 x3e95a569}\n       {x43da0000 x42100000 x3e8c2309}\n       {x43e04000 x42140000 x3e5f37ce}\n       {x43e38000 x42160000 x3e6338ce}\n       {x43e84000 x421a0000 x3e753d4f}\n       {x43ec4000 x42200000 x3e743d0f}\n       {x43efc000 x42280000 x3e6739ce}\n       {x43f3c000 x423a0000 x3e6d3b4f}\n       {x43f84000 x42500000 x3e713c4f}\n       {x43fe8000 x426c0000 x3e7d3f50}\n       {x44010000 x42830000 x3e84a128}\n       {x44022000 x42930000 x3e8c2309}\n       {x44026000 x429e0000 x3e93a4e9}\n       {x44026000 x42a50000 x3e95a569}\n       {x44026000 x42a70000 x3e89a269}\n       {x4402a000 x42a70000 0}}}\n     {tx 1 x43e9e000 x424d199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42ef0000 x42040000 1}\n       {x42e90000 x42080000 x3e5e378e}\n       {x42e40000 x420a0000 x3e5e378e}\n       {x42d90000 x42120000 x3e56358d}\n       {x42d00000 x421c0000 x3e8320c8}\n       {x42c00000 x42220000 x3eaf2bcb}\n       {x42b30000 x42240000 x3ebe2f8c}\n       {x42a20000 x421e0000 x3ec2b0ac}\n       {x42900000 x42160000 x3ec4310c}\n       {x426e0000 x42080000 x3ec6318c}\n       {x42460000 x41f80000 x3ec5314c}\n       {x421e0000 x41d80000 x3ec4310c}\n       {x41dc0000 x41ac0000 x3ec1b06c}\n       {x41800000 x418c0000 x3ec1b06c}\n       {x40600000 x41500000 x3eb5ad6b}\n       {xc0400000 x41080000 0}}}\n     {tx 1 x4288b000 x41f40000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42680000 x42b70000 1}\n       {x42760000 x42b50000 x3e6739ce}\n       {x428c0000 x42b60000 x3e8ca329}\n       {x42aa0000 x42ba0000 x3ea8aa2b}\n       {x42ce0000 x42bb0000 x3eb5ad6b}\n       {x42e20000 x42b60000 x3eb5ad6b}\n       {x42f10000 x42ac0000 x3eb5ad6b}\n       {x43000000 x429c0000 x3eb9ae6c}\n       {x43058000 x428d0000 x3ebaaeac}\n       {x43100000 x42780000 x3ebbaeec}\n       {x43198000 x42600000 x3ebcaf2c}\n       {x43260000 x42380000 x3ec2308c}\n       {x43310000 x421c0000 x3eccb32d}\n       {x43450000 x41fc0000 x3ed2348d}\n       {x43558000 x41c80000 x3ed0b42d}\n       {x43618000 x41900000 x3ecd334d}\n       {x43678000 x41100000 x3ec5314c}\n       {x43668000 x40000000 x3ecab2ad}\n       {x43650000 xc0400000 x3eda368e}\n       {x436b0000 xc0600000 x3ed4b52d}\n       {x437a8000 xc0000000 x3ec0b02c}\n       {x43838000 xc0400000 x3eb5ad6b}\n       {x4389c000 xc0b00000 x3eae2b8b}\n       {x438e8000 xc1000000 x3eaf2bcb}\n       {x43954000 xc1180000 x3eacab2b}\n       {x439fc000 xc1180000 x3e9a268a}\n       {x43a3c000 xc1100000 0}}}\n     {tx 1 x433caf68 x42172f68}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43db0000 x43a0c000 1}\n       {x43d9c000 x43a00000 x3e7f3fd0}\n       {x43d88000 x439f0000 x3e80a028}\n       {x43d60000 x439d8000 x3e82a0a8}\n       {x43ce8000 x4399c000 x3e9ba6ea}\n       {x43c58000 x43968000 x3ea4290a}\n       {x43b48000 x43924000 x3ec5314c}\n       {x43a84000 x43908000 x3ecdb36d}\n       {x43a18000 x43904000 x3ed2348d}\n       {x43a08000 x43904000 x3ed2b4ad}\n       {x439f4000 x43904000 x3eca328d}\n       {x439e8000 x438fc000 x3e91a469}\n       {x439e0000 x438f4000 x3e9324c9}\n       {x439c0000 x438d8000 x3e96a5a9}\n       {x43998000 x4389c000 x3e9f27ca}\n       {x43990000 x43870000 x3e9fa7ea}\n       {x43994000 x4383c000 0}}}\n     {tx 1 x43b270f1 x4392f0f1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d5c000 x43e6c000 1}\n       {x43d3c000 x43e68000 x3e862188}\n       {x43d1c000 x43e64000 x3e8b22c9}\n       {x43cd0000 x43e5c000 x3e9ea7aa}\n       {x43c14000 x43e44000 x3eb7adeb}\n       {x43b0c000 x43e14000 x3eb9ae6c}\n       {x43a48000 x43dec000 x3eb42d0b}\n       {x439b0000 x43dd4000 x3eb12c4b}\n       {x43938000 x43db8000 x3ea5294a}\n       {x43908000 x43dac000 x3e98a62a}\n       {x438f8000 x43da8000 x3e8ea3a9}\n       {x438cc000 x43d94000 x3e842108}\n       {x43874000 x43d60000 x3e882209}\n       {x4382c000 x43d34000 x3e8fa3e9}\n       {x4381c000 x43d24000 x3e8320c8}\n       {x43864000 x43d3c000 x3e64390e}\n       {x438bc000 x43d6c000 x3e703c0f}\n       {x438d4000 x43d78000 x3e7f3fd0}\n       {x43928000 x43da0000 x3ea5a96a}\n       {x439b8000 x43dd0000 x3ec2308c}\n       {x43a68000 x43dfc000 x3ec6318c}\n       {x43ac8000 x43df8000 x3eb9ae6c}\n       {x43ae0000 x43dcc000 x3eb4ad2b}\n       {x43aac000 x43d90000 x3eae2b8b}\n       {x43a38000 x43d38000 x3e9f27ca}\n       {x439d4000 x43cf8000 x3ea2a8aa}\n       {x43978000 x43cbc000 x3eb0ac2b}\n       {x43964000 x43c8c000 x3eb1ac6b}\n       {x439c4000 x43c84000 x3eaaaaab}\n       {x43a80000 x43c9c000 x3e9b26ca}\n       {x43b20000 x43cbc000 x3e8fa3e9}\n       {x43c18000 x43cf0000 x3e902409}\n       {x43cd0000 x43d10000 x3e6e3b8f}\n       {x43d6c000 x43d18000 x3e61384e}\n       {x43dcc000 x43d1c000 x3e753d4f}\n       {x43e10000 x43d1c000 x3e822088}\n       {x43e3c000 x43d10000 0}}}\n     {tx 1 x43aaa7c9 x43d79bad}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x4404c000 x43d40000 1}\n       {x44040000 x43d44000 x3e9ba6ea}\n       {x44020000 x43d48000 x3ea6a9aa}\n       {x44000000 x43d5c000 x3ed5354d}\n       {x43fdc000 x43d74000 x3ed6b5ad}\n       {x43fac000 x43d8c000 x3ed9364e}\n       {x43f58000 x43d8c000 x3ee739ce}\n       {x43efc000 x43d78000 x3ee8ba2f}\n       {x43ebc000 x43d74000 x3ee9ba6f}\n       {x43ea8000 x43d80000 x3ee1384e}\n       {x43e80000 x43dac000 x3ed9364e}\n       {x43e34000 x43dc8000 x3ed6b5ad}\n       {x43db0000 x43dc8000 x3edab6ae}\n       {x43d30000 x43da8000 x3ec1304c}\n       {x43cdc000 x43d90000 0}}}\n     {tx 1 x43f00889 x43d81555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43d9c000 x42f90000 1}\n       {x43d84000 x42f80000 x3ed0340d}\n       {x43d78000 x42f80000 x3ecc330d}\n       {x43d64000 x42f80000 x3eccb32d}\n       {x43d44000 x42f90000 x3ecc330d}\n       {x43d00000 x42fa0000 x3ec6318c}\n       {x43cb4000 x42f80000 x3ec4b12c}\n       {x43c84000 x42f80000 x3ebc2f0c}\n       {x43c58000 x42f80000 x3eb9ae6c}\n       {x43c28000 x42f90000 x3eb5ad6b}\n       {x43c08000 x42f90000 x3eb42d0b}\n       {x43bd0000 x42fa0000 x3eb02c0b}\n       {x43b98000 x42fd0000 x3eb02c0b}\n       {x43b50000 x43000000 x3eb02c0b}\n       {x43acc000 x43038000 x3eac2b0b}\n       {x43a28000 x43078000 x3ea8aa2b}\n       {x439ac000 x430b8000 x3eaa2a8b}\n       {x43950000 x43118000 x3eae2b8b}\n       {x43904000 x431b8000 x3eb1ac6b}\n       {x438d4000 x43230000 x3eb3aceb}\n       {x43888000 x432a8000 x3eb4ad2b}\n       {x43834000 x432e0000 x3eb5ad6b}\n       {x437d0000 x43308000 x3eb5ad6b}\n       {x43748000 x43338000 x3eb7adeb}\n       {x43718000 x43360000 x3eb82e0c}\n       {x43710000 x43370000 x3eb8ae2c}\n       {x43718000 x43348000 x3eb9ae6c}\n       {x43748000 x432d8000 x3ebaaeac}\n       {x437b0000 x43280000 x3ebc2f0c}\n       {x43858000 x43230000 x3ebcaf2c}\n       {x43910000 x43230000 x3ebc2f0c}\n       {x439d4000 x43230000 x3ebcaf2c}\n       {x43a9c000 x431e0000 x3e9b26ca}\n       {x43af0000 x43180000 x3e693a4f}\n       {x43b00000 x43168000 x3e6739ce}\n       {x43b5c000 x43118000 x3e65394e}\n       {x43bd8000 x430e0000 x3e4330cc}\n       {x43c6c000 x430b0000 x3e312c4b}\n       {x43cb8000 x43078000 x3e46318c}\n       {x43ce8000 x43038000 x3e6739ce}\n       {x43cf8000 x43018000 x3e5a368e}\n       {x43d10000 x43018000 x3e2c2b0b}\n       {x43d2c000 x43030000 x3cd0340d}\n       {x43d60000 x43050000 0}}}\n     {tx 1 x43ae0000 x4310c8ba}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x43240000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x41600000 x43c58000 1}\n       {x41600000 x43c60000 1}\n       {x41700000 x43c70000 x3e6739ce}\n       {x41840000 x43c70000 x3e80a028}\n       {x41940000 x43c70000 x3e8fa3e9}\n       {x41b00000 x43c70000 x3ea1a86a}\n       {x41f40000 x43c6c000 x3ea3a8ea}\n       {x42260000 x43c64000 x3ea4290a}\n       {x42380000 x43c50000 x3e9fa7ea}\n       {x42400000 x43c30000 x3e9e278a}\n       {x42480000 x43c14000 x3e9e278a}\n       {x424a0000 x43bfc000 x3e9e278a}\n       {x42500000 x43bdc000 x3e9e278a}\n       {x42500000 x43bc0000 x3e9ea7aa}\n       {x424a0000 x43b98000 x3ea1284a}\n       {x42380000 x43b74000 x3ea6298a}\n       {x42260000 x43b40000 x3ea92a4b}\n       {x421c0000 x43b18000 x3ea92a4b}\n       {x421a0000 x43aec000 x3ea6a9aa}\n       {x42220000 x43ad0000 x3ea2288a}\n       {x42320000 x43ac0000 x3e9aa6aa}\n       {x42440000 x43ab4000 x3e96a5a9}\n       {x42580000 x43ab4000 x3e9a268a}\n       {x42720000 x43ab4000 x3e9ba6ea}\n       {x42820000 x43ac4000 x3ea1284a}\n       {x42920000 x43adc000 x3ea92a4b}\n       {x42a50000 x43afc000 x3eaaaaab}\n       {x42c00000 x43b24000 x3eaa2a8b}\n       {x42d20000 x43b34000 x3ea2288a}\n       {x42e00000 x43b40000 x3e9e278a}\n       {x42f00000 x43b50000 x3e9e278a}\n       {x42fc0000 x43b60000 x3e9ea7aa}\n       {x43010000 x43b68000 x3e95a569}\n       {x43000000 x43b68000 x3ea1284a}\n       {x42fe0000 x43b68000 x3ea4290a}\n       {x42fa0000 x43b68000 x3ea92a4b}\n       {x42f00000 x43b64000 x3eac2b0b}\n       {x42d90000 x43b60000 x3eacab2b}\n       {x42bd0000 x43b64000 x3eacab2b}\n       {x42960000 x43b6c000 x3eadab6b}\n       {x424c0000 x43b80000 x3ead2b4b}\n       {x42000000 x43b98000 x3ead2b4b}\n       {x41b00000 x43bb4000 x3eacab2b}\n       {x41780000 x43bdc000 x3eaaaaab}\n       {x41180000 x43c04000 x3ea9aa6b}\n       {x40b00000 x43c28000 x3ea6a9aa}\n       {x40200000 x43c50000 x3ea3a8ea}\n       {x40000000 x43c70000 x3ea3a8ea}\n       {x40200000 x43ca0000 x3ea6298a}\n       {x40e00000 x43cd4000 x3ea92a4b}\n       {x40f00000 x43cec000 x3eaa2a8b}\n       {x40a00000 x43cfc000 x3ead2b4b}\n       {x40000000 x43d0c000 x3ea1a86a}\n       {xbf000000 x43d14000 0}}}\n     {tx 1 x424e425f x43bc071c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42540000 x43dfc000 1}\n       {x42540000 x43df4000 x3e91a469}\n       {x425a0000 x43ddc000 x3ea1a86a}\n       {x425c0000 x43dc8000 x3ea6298a}\n       {x425c0000 x43da4000 x3eab2acb}\n       {x42600000 x43d78000 x3eb02c0b}\n       {x42700000 x43d64000 x3ead2b4b}\n       {x42850000 x43d50000 x3ea3a8ea}\n       {x42910000 x43d44000 x3ea0280a}\n       {x42a50000 x43d34000 x3e952549}\n       {x42b50000 x43d30000 x3e8aa2a9}\n       {x42bf0000 x43d2c000 x3e882209}\n       {x42cb0000 x43d30000 x3e84a128}\n       {x42d60000 x43d40000 x3e842108}\n       {x42df0000 x43d50000 x3e842108}\n       {x42e40000 x43d58000 x3e85a168}\n       {x42e80000 x43d68000 x3e8e2389}\n       {x42eb0000 x43d7c000 x3e8fa3e9}\n       {x42ec0000 x43d8c000 x3e8e2389}\n       {x42ed0000 x43da8000 x3e8ca329}\n       {x42ef0000 x43dc8000 x3e87a1e8}\n       {x42ef0000 x43df4000 x3e693a4f}\n       {x42ef0000 x43e08000 x3e6338ce}\n       {x42ef0000 x43e28000 x3e65394e}\n       {x42f10000 x43e3c000 x3e65394e}\n       {x42f30000 x43e54000 x3e703c0f}\n       {x42f90000 x43e64000 x3e842108}\n       {x43030000 x43e7c000 x3e8aa2a9}\n       {x430b8000 x43e98000 x3e9324c9}\n       {x43150000 x43eac000 x3ea729ca}\n       {x431e0000 x43ebc000 x3ea7a9ea}\n       {x43240000 x43ec0000 x3ea6a9aa}\n       {x432c0000 x43ec0000 x3ea5a96a}\n       {x43328000 x43ec0000 x3ea2a8aa}\n       {x433a0000 x43ebc000 x3e98260a}\n       {x433d0000 x43eb8000 x3e8c2309}\n       {x433a8000 x43eb8000 x3e9aa6aa}\n       {x43380000 x43ebc000 x3ea1284a}\n       {x432e8000 x43ec0000 x3eae2b8b}\n       {x43250000 x43ec0000 x3eb02c0b}\n       {x431c0000 x43ec0000 x3eb0ac2b}\n       {x43110000 x43ec0000 x3eb12c4b}\n       {x43088000 x43ec4000 x3eb3aceb}\n       {x42fd0000 x43ec4000 x3eb4ad2b}\n       {x42f30000 x43ec8000 x3eb5ad6b}\n       {x42e90000 x43ecc000 x3eb5ad6b}\n       {x42e00000 x43ec4000 x3eb62d8b}\n       {x42d60000 x43eb4000 x3eb92e4c}\n       {x42cf0000 x43ea0000 x3eb9ae6c}\n       {x42c80000 x43e8c000 x3eba2e8c}\n       {x42c20000 x43e70000 x3eba2e8c}\n       {x42c10000 x43e54000 x3ebaaeac}\n       {x42c00000 x43e2c000 x3eb92e4c}\n       {x42bf0000 x43e0c000 x3eb7adeb}\n       {x42bf0000 x43dd8000 x3eb6adab}\n       {x42bc0000 x43db8000 x3eb1ac6b}\n       {x42b30000 x43d94000 x3eb1ac6b}\n       {x42a60000 x43d74000 x3eb12c4b}\n       {x42940000 x43d58000 x3eb12c4b}\n       {x428f0000 x43d50000 1}\n       {x427e0000 x43d3c000 x3eaf2bcb}\n       {x42600000 x43d28000 x3ea6298a}\n       {x42320000 x43d0c000 x3e9fa7ea}\n       {x42080000 x43ce4000 x3e703c0f}\n       {x41b40000 x43ca4000 0}}}\n     {tx 1 x42d92372 x43dff820}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42960000 x43458000 1}\n       {x42940000 x43450000 x3eb62d8b}}}\n     {tx 1 x42950000 x43454000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42980000 x43460000 1}\n       {x42960000 x43458000 x3ed0b42d}\n       {x42940000 x43458000 x3ed8360e}\n       {x42940000 x43468000 x3ec6318c}\n       {x42940000 x43478000 x3ec4b12c}\n       {x42940000 x43468000 x3ebeafac}\n       {x42940000 x43478000 x3ec9324d}\n       {x42920000 x43478000 x3ed0340d}\n       {x42920000 x43468000 x3edb36ce}\n       {x42920000 x43458000 x3edcb72e}\n       {x42920000 x43448000 x3edeb7ae}\n       {x42910000 x43458000 x3eddb76e}}}\n     {tx 1 x42939555 x43463555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x428b0000 x43430000 x3e052148}\n       {x428b0000 x43440000 x3e2d2b4b}}}\n     {tx 1 x428b0000 x43438000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42f10000 x43780000 1}\n       {x42ee0000 x43778000 x3d50340d}\n       {x42e70000 x43768000 x3cb02c0b}\n       {x42e10000 x43748000 x3db22c8b}\n       {x42db0000 x43728000 x3e152549}\n       {x42d70000 x436f0000 x3e0a2289}\n       {x42d30000 x436c0000 0}}}\n     {tx 1 x42e1b6db x43736db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x430f0000 x43768000 1}\n       {x43110000 x43760000 x3da4290a}\n       {x43188000 x43758000 x3da0280a}\n       {x43258000 x43770000 x3de0380e}\n       {x432e8000 x43788000 x3dfc3f10}\n       {x43350000 x43798000 x3dbc2f0c}\n       {x43378000 x43790000 x3dca328d}\n       {x433c0000 x43770000 x3df63d8f}\n       {x43420000 x43758000 x3e2a2a8b}\n       {x43498000 x43740000 x3e312c4b}\n       {x43548000 x43710000 x3e2f2bcb}\n       {x435e0000 x436e0000 x3e2f2bcb}\n       {x436c0000 x436a0000 x3d1c270a}}}\n     {tx 1 x433889d9 x4374bb14}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42cd0000 x4383c000 1}\n       {x42d30000 x43830000 x3d842108}}}\n     {tx 1 x42d00000 x43836000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42760000 x43924000 1}\n       {x42500000 x43928000 x3dd0340d}\n       {x42480000 x43928000 x3dd0340d}\n       {x423c0000 x43928000 x3e22288a}}}\n     {tx 1 x42528000 x43927000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x436e8000 x43b04000 1}\n       {x436d0000 x43afc000 x3e162589}\n       {x436c0000 x43af4000 x3e162589}\n       {x43690000 x43adc000 x3e2328ca}\n       {x43650000 x43ab4000 x3e40300c}\n       {x43618000 x43a98000 x3e5334cd}\n       {x435f0000 x43a7c000 x3e5735cd}\n       {x435d0000 x43a5c000 x3e58360e}\n       {x435a0000 x43a40000 x3e56358d}\n       {x43528000 x43a20000 x3e5e378e}\n       {x434a0000 x43a10000 x3e5c370e}\n       {x433f8000 x43a0c000 x3e46318c}\n       {x433d0000 x43a0c000 x3e49324d}\n       {x43360000 x43a18000 x3e46318c}\n       {x432f0000 x43a20000 x3e5334cd}\n       {x43290000 x43a1c000 x3e5f37ce}\n       {x43228000 x43a14000 x3e6739ce}\n       {x43198000 x43a10000 x3e723c8f}\n       {x43128000 x43a08000 x3e6739ce}\n       {x43088000 x439dc000 x3e5334cd}\n       {x43010000 x439ac000 x3e46318c}\n       {x42fc0000 x4398c000 x3e5735cd}\n       {x42fc0000 x43984000 x3e5a368e}\n       {x42fe0000 x4396c000 x3e4f33cd}\n       {x43078000 x43960000 x3e22288a}\n       {x43108000 x4395c000 x3dea3a8f}\n       {x43188000 x43954000 x3d042108}\n       {x431d0000 x4393c000 x3d50340d}\n       {x431b0000 x43914000 x3e0d2349}\n       {x43140000 x438e8000 x3e3a2e8c}\n       {x430f0000 x438cc000 x3e4b32cd}\n       {x430e0000 x438c4000 x3e3e2f8c}\n       {x430d0000 x438c4000 x3e2d2b4b}\n       {x430a8000 x438c4000 x3e51344d}\n       {x43038000 x438cc000 x3e6b3acf}\n       {x42ed0000 x438f0000 x3e64390e}\n       {x42da0000 x43904000 0}}}\n     {tx 1 x432a59f2 x439c9837}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43790000 x43c2c000 1}\n       {x43778000 x43c30000 x3d40300c}\n       {x43760000 x43c34000 x3da0280a}}}\n     {tx 1 x43778000 x43c30000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x437e8000 x43bf0000 1}\n       {x437d8000 x43c04000 x3d3c2f0c}\n       {x437d8000 x43c0c000 x3c802008}\n       {x437d0000 x43c18000 0}}}\n     {tx 1 x437da000 x43c06000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43210000 x43ac0000 1}\n       {x43220000 x43ac0000 x3e282a0b}\n       {x43230000 x43ac0000 x3e312c4b}\n       {x43240000 x43abc000 x3e40300c}\n       {x43288000 x43ab8000 x3e7f3fd0}\n       {x432f0000 x43ab0000 x3e8e2389}\n       {x43358000 x43aac000 x3e8fa3e9}\n       {x43370000 x43aac000 x3e8fa3e9}\n       {x433c8000 x43aa8000 x3e8d2349}\n       {x43420000 x43aa0000 x3e862188}\n       {x43480000 x43a94000 x3e822088}\n       {x434c8000 x43a8c000 x3e822088}\n       {x43528000 x43a84000 x3e7b3ed0}\n       {x43578000 x43a7c000 x3e713c4f}\n       {x435e0000 x43a74000 x3e6e3b8f}\n       {x43630000 x43a74000 x3e6d3b4f}\n       {x436a0000 x43a78000 x3e89a269}\n       {x436c0000 x43a7c000 x3e8a2289}\n       {x43748000 x43a8c000 x3e822088}\n       {x437b8000 x43aa0000 x3e51344d}\n       {x437d0000 x43aa8000 x3e392e4c}\n       {x43808000 x43ac0000 x3dc0300c}\n       {x43814000 x43adc000 x3c20280a}\n       {x4381c000 x43afc000 x3d64390e}\n       {x43820000 x43b04000 x3d703c0f}\n       {x43828000 x43b30000 x3d802008}\n       {x4382c000 x43b50000 0}}}\n     {tx 1 x4356af68 x43ab38e4}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x42d50000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42a60000 x43998000 1}\n       {x42a80000 x43998000 x3e1725c9}\n       {x42b50000 x439a0000 x3e4b32cd}\n       {x42db0000 x439d8000 x3e8a2289}\n       {x42f00000 x439ec000 x3e9ca72a}\n       {x42f50000 x439e0000 x3e9da76a}\n       {x42f50000 x439c0000 x3eb62d8b}\n       {x42f50000 x43994000 x3edcb72e}\n       {x42f80000 x43970000 x3eedbb6f}\n       {x43010000 x4394c000 x3eeebbaf}\n       {x43028000 x43944000 x3eef3bcf}\n       {x430a8000 x4391c000 x3eedbb6f}\n       {x43128000 x438f4000 x3eecbb2f}\n       {x431d0000 x438c8000 x3eed3b4f}\n       {x43270000 x438bc000 x3eeebbaf}\n       {x43300000 x438c0000 x3eedbb6f}\n       {x43320000 x438c4000 x3eed3b4f}\n       {x43388000 x438d4000 x3ed2b4ad}\n       {x433b0000 x438d4000 x3ec6318c}\n       {x433c8000 x438c4000 x3ed5354d}\n       {x43408000 x438b8000 x3ed6b5ad}\n       {x43420000 x438b4000 x3ed5b56d}\n       {x43468000 x438a0000 x3ed334cd}\n       {x434b0000 x43890000 x3ec8320d}\n       {x434c0000 x43890000 x3eb2acab}\n       {x434d8000 x4388c000 0}}}\n     {tx 1 x43184000 x4391db14}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x41300000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42d80000 x43ba4000 1}\n       {x42d60000 x43ba4000 x3e9a268a}\n       {x42d40000 x43ba4000 x3ea0280a}\n       {x42cb0000 x43b98000 x3ecc330d}\n       {x42b90000 x43b74000 x3ee338ce}\n       {x42a90000 x43b54000 x3ee5394e}\n       {x429e0000 x43b3c000 x3ee338ce}\n       {x429a0000 x43b30000 x3ee0b82e}\n       {x42970000 x43b2c000 x3ede378e}\n       {x42920000 x43b24000 x3edb36ce}\n       {x42860000 x43b08000 x3edb36ce}\n       {x42820000 x43b00000 x3edcb72e}\n       {x426c0000 x43ae4000 x3ee5394e}\n       {x42620000 x43ad8000 x3ee4b92e}\n       {x42620000 x43ae0000 x3eda368e}\n       {x42580000 x43ae4000 x3ee0b82e}\n       {x424c0000 x43aec000 x3ee4b92e}\n       {x424a0000 x43b08000 x3ee2b8ae}\n       {x425a0000 x43b40000 x3edb36ce}\n       {x427c0000 x43b80000 x3ed9364e}\n       {x42890000 x43bac000 x3ed7b5ed}\n       {x42850000 x43bb0000 x3edab6ae}\n       {x42740000 x43bb0000 x3ee0b82e}\n       {x42700000 x43bac000 x3ee2b8ae}\n       {x42620000 x43ba4000 x3ee3b8ee}\n       {x42620000 x43bb0000 x3ee0b82e}\n       {x42640000 x43bb8000 x3ee0b82e}\n       {x42640000 x43bcc000 x3ee1384e}\n       {x42640000 x43bdc000 x3ee2388e}\n       {x42640000 x43bec000 x3ee5394e}\n       {x42640000 x43c04000 x3ee739ce}\n       {x42620000 x43c18000 x3ee739ce}\n       {x42580000 x43c2c000 x3ee8ba2f}\n       {x42520000 x43c3c000 x3ee8ba2f}\n       {x424c0000 x43c54000 x3ee93a4f}\n       {x42420000 x43c64000 x3ee93a4f}\n       {x42360000 x43c74000 x3eecbb2f}\n       {x42320000 x43c78000 x3eee3b8f}\n       {x421a0000 x43c88000 x3ef23c8f}\n       {x41d80000 x43c98000 x3f00a028}\n       {x41bc0000 x43c9c000 x3f022088}\n       {x40e00000 x43cb0000 x3f0360d8}\n       {xc1280000 x43cc8000 x3f022088}\n       {xc1a40000 x43d00000 x3e1d274a}}}\n     {tx 1 x42680ba3 x43bba000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x41300000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x43368000 x43e20000 1}\n       {x43378000 x43e20000 x3e842108}\n       {x43398000 x43e24000 x3e912449}\n       {x43410000 x43e24000 x3eaa2a8b}\n       {x434d0000 x43e28000 x3eac2b0b}\n       {x434f8000 x43e28000 x3eab2acb}\n       {x43568000 x43e30000 x3ea92a4b}\n       {x43578000 x43e30000 x3ef03c0f}\n       {x43588000 x43e2c000 x3ef03c0f}\n       {x435b0000 x43e28000 x3ef03c0f}\n       {x435e8000 x43e10000 x3ee83a0f}\n       {x435c8000 x43df0000 x3ee4b92e}\n       {x43560000 x43dcc000 x3ef33ccf}\n       {x43550000 x43db8000 x3ef6bdaf}\n       {x43550000 x43da4000 x3eedbb6f}\n       {x43548000 x43d98000 x3eeb3acf}\n       {x43530000 x43d94000 x3ef33ccf}\n       {x43518000 x43d88000 x3ef4bd2f}\n       {x43500000 x43d7c000 x3ef2bcaf}\n       {x434f0000 x43d7c000 x3ef23c8f}\n       {x434a8000 x43d6c000 x3ef23c8f}\n       {x43438000 x43d5c000 x3ef2bcaf}\n       {x43418000 x43d58000 x3ef2bcaf}\n       {x433b0000 x43d50000 x3ef2bcaf}\n       {x43370000 x43d44000 x3ef23c8f}\n       {x43330000 x43d30000 x3ef03c0f}\n       {x43310000 x43d20000 x3eefbbef}\n       {x432f0000 x43d14000 x3eeebbaf}\n       {x432e8000 x43cf4000 x3eee3b8f}\n       {x432e8000 x43cdc000 x3eeabaaf}\n       {x432f8000 x43cd4000 x3ee8ba2f}\n       {x43328000 x43cc0000 x3ed7b5ed}\n       {x43378000 x43ca8000 x3ecd334d}\n       {x43390000 x43ca4000 x3ecd334d}\n       {x433d8000 x43c88000 x3ece338d}\n       {x43438000 x43c6c000 x3eceb3ad}\n       {x434c8000 x43c48000 x3ed9364e}\n       {x43580000 x43c38000 x3edfb7ee}\n       {x43680000 x43c34000 x3ee0b82e}\n       {x436c8000 x43c34000 x3ee0b82e}\n       {x437b8000 x43c2c000 x3ee0b82e}\n       {x43818000 x43c1c000 x3ede378e}\n       {x4381c000 x43c14000 x3edbb6ee}\n       {x4380c000 x43bf8000 x3edb36ce}\n       {x437d8000 x43be4000 x3ee0b82e}\n       {x437f8000 x43bd8000 x3ea4290a}\n       {x437f8000 x43bc8000 x3ea2288a}\n       {x437d0000 x43ba0000 x3ea6298a}\n       {x43798000 x43b74000 x3eb3aceb}\n       {x43790000 x43b68000 x3eb62d8b}\n       {x43768000 x43b38000 x3ebcaf2c}\n       {x43768000 x43b0c000 x3ebdaf6c}\n       {x43760000 x43af0000 x3ebe2f8c}\n       {x43758000 x43ae8000 x3ebeafac}\n       {x43758000 x43ae0000 x3ebfafec}\n       {x43740000 x43ac8000 x3ebfafec}\n       {x43708000 x43aac000 x3ecc330d}\n       {x436f0000 x43aa4000 x3ed1344d}\n       {x43698000 x43a88000 x3ee5394e}\n       {x43660000 x43a70000 x3ee83a0f}\n       {x43620000 x43a60000 x3ee739ce}\n       {x435f0000 x43a5c000 x3ee5394e}\n       {x43580000 x43a58000 x3eeebbaf}\n       {x434f8000 x43a5c000 x3ef8be30}\n       {x43448000 x43a6c000 x3efe3f90}\n       {x43420000 x43a70000 x3f006018}\n       {x43388000 x43a7c000 x3f042108}\n       {x43320000 x43a84000 x3f0360d8}\n       {x43310000 x43a88000 x3f02a0a8}\n       {x43300000 x43a94000 x3eccb32d}\n       {x432f0000 x43a98000 x3e98a62a}\n       {x432d0000 x43aa0000 0}}}\n     {tx 1 x4354338e x43c51d55}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x41300000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px 1\n       {x42640000 x43e44000 1}\n       {x42600000 x43e40000 x3df23c8f}\n       {x425c0000 x43e38000 x3e4731cc}\n       {x42520000 x43e24000 x3ea5a96a}\n       {x424c0000 x43e18000 x3eba2e8c}\n       {x42460000 x43e04000 x3eccb32d}\n       {x423e0000 x43df4000 x3edf37ce}\n       {x423e0000 x43de4000 x3ee2388e}\n       {x42400000 x43dd8000 x3ee2b8ae}\n       {x42460000 x43dc8000 x3ee3b8ee}\n       {x424a0000 x43db8000 x3ee5394e}\n       {x424e0000 x43dac000 x3ee5394e}\n       {x42560000 x43da4000 x3ee338ce}\n       {x425e0000 x43da0000 x3ee3b8ee}\n       {x42640000 x43d98000 x3ee4b92e}\n       {x42680000 x43d94000 x3ee5394e}\n       {x42700000 x43d94000 x3ee4b92e}\n       {x42780000 x43d94000 x3ee4b92e}\n       {x42800000 x43d8c000 x3ee5394e}\n       {x42830000 x43d88000 x3ee5b96e}\n       {x42860000 x43d80000 x3ee6398e}\n       {x42890000 x43d7c000 x3ee6398e}\n       {x428e0000 x43d78000 x3ee739ce}\n       {x42920000 x43d74000 x3ee739ce}\n       {x42960000 x43d70000 x3eea3a8f}\n       {x429b0000 x43d68000 x3ef23c8f}\n       {x42a10000 x43d60000 x3ef43d0f}\n       {x42a80000 x43d5c000 x3ef4bd2f}\n       {x42ae0000 x43d5c000 x3ef53d4f}\n       {x42b00000 x43d5c000 x3ef4bd2f}\n       {x42b60000 x43d60000 x3ef53d4f}\n       {x42bb0000 x43d68000 x3ef43d0f}\n       {x42c00000 x43d74000 x3ef43d0f}\n       {x42c40000 x43d80000 x3ef43d0f}\n       {x42c80000 x43d90000 x3ef33ccf}\n       {x42cc0000 x43da4000 x3ef03c0f}\n       {x42ce0000 x43db4000 x3ef0bc2f}\n       {x42d10000 x43dc4000 x3ef0bc2f}\n       {x42d30000 x43dd4000 x3ef1bc6f}\n       {x42d50000 x43de4000 x3ef1bc6f}\n       {x42d50000 x43dec000 x3ef53d4f}\n       {x42d50000 x43df8000 x3ef7bdef}\n       {x42d40000 x43e04000 x3efa3e90}\n       {x42ce0000 x43e10000 x3f042108}\n       {x42cc0000 x43e14000 x3f056158}\n       {x42c50000 x43e20000 x3f06a1a8}\n       {x42c00000 x43e34000 x3f06a1a8}\n       {x42bf0000 x43e44000 x3f066198}\n       {x42bf0000 x43e4c000 x3f066198}\n       {x42be0000 x43e5c000 x3f066198}\n       {x42be0000 x43e68000 x3f066198}\n       {x42bc0000 x43e70000 x3f06e1b8}\n       {x42b80000 x43e74000 x3f09a269}\n       {x42b60000 x43e78000 x3f0aa2a9}\n       {x42b40000 x43e7c000 x3f0aa2a9}\n       {x42b30000 x43e84000 x3f0aa2a9}\n       {x42b30000 x43e90000 x3f0ae2b9}\n       {x42b30000 x43e98000 x3f0aa2a9}\n       {x42b60000 x43ea4000 x3f0aa2a9}\n       {x42b90000 x43eac000 x3f0a6299}\n       {x42bd0000 x43eb8000 x3f09e279}\n       {x42c00000 x43ec0000 x3f09e279}\n       {x42c20000 x43ec4000 x3f09a269}\n       {x42c50000 x43ed0000 x3f09a269}\n       {x42c80000 x43edc000 x3f096259}\n       {x42cb0000 x43ee8000 x3f096259}\n       {x42ce0000 x43ef8000 x3f07e1f8}\n       {x42d50000 x43f08000 x3f01a068}\n       {x42dc0000 x43f14000 x3ef7bdef}\n       {x42e50000 x43f20000 x3ee5394e}\n       {x42f10000 x43f28000 x3ed6b5ad}\n       {x43010000 x43f30000 x3ed0b42d}\n       {x43038000 x43f30000 x3ed0340d}\n       {x430d8000 x43f38000 x3ed6b5ad}\n       {x43188000 x43f34000 x3ed6b5ad}\n       {x431b0000 x43f30000 x3ed6b5ad}\n       {x43250000 x43f24000 x3ec4310c}\n       {x43298000 x43f1c000 0}}}\n     {tx 1 x42b2a41a x43e26aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ca3d70a bs x41300000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}}}}}\n  toolbox {selectAll {\n  { selectAll opc 0.02 bs 173.5 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.02 bs 173.5 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_opacity 0.02\n  toolbar_brush_size 173.5\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {640 360}\n  colorOverlay {0 0 0 0}\n  opacity 0.01999999955\n  lifetime_type \"all frames\"\n  brush_size 2.5\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_black_outside true\n  name RotoPaint1\n  xpos 32\n  ypos 3082\n }\n FilterErode {\n  channels all\n  name FilterErode3\n  xpos 32\n  ypos 3108\n }\n Switch {\n  inputs 5\n  which {{parent.naturalNoisePicker}}\n  name Switch3\n  xpos 32\n  ypos 3278\n }\n Transform {\n  scale {{\"1 + parent.naturalNoiseSize\"}}\n  center {250 250}\n  name Transform8\n  xpos 32\n  ypos 3312\n }\n Grade {\n  white {{\"1 + parent.naturalNoiseGain\"}}\n  gamma {{\"1 + parent.naturalNoiseGamma\"}}\n  name Grade10\n  xpos 32\n  ypos 3349\n }\n Defocus {\n  defocus {{parent.naturalNoiseSoftness}}\n  name Defocus1\n  xpos 32\n  ypos 3387\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"root.width * parent.bokehQuality\"}}\n  box_height {{\"root.width * parent.bokehQuality\"}}\n  box_fixed true\n  name Reformat4\n  xpos 32\n  ypos 3441\n }\n Crop {\n  inputs 0\n  box {0 0 {\"root.width * parent.bokehQuality\"} {\"root.width * parent.bokehQuality\"}}\n  reformat true\n  crop false\n  name Crop4\n  xpos 309\n  ypos 2497\n }\nset N80336000 [stack 0]\n Noise {\n  size {{\"(parent.noiseSize ) *  parent.bokehQuality\"}}\n  center {640 360}\n  name Noise3\n  xpos 309\n  ypos 2541\n }\n Grade {\n  blackpoint 0.26\n  name Grade5\n  xpos 309\n  ypos 2580\n }\n Clamp {\n  name Clamp4\n  xpos 309\n  ypos 2620\n }\n Blur {\n  size 0.5\n  name Blur5\n  xpos 309\n  ypos 2678\n }\npush $N80336000\n Noise {\n  size {{\"parent.noiseSize * parent.bokehQuality\"}}\n  gain {{parent.noiseGain}}\n  gamma {{parent.noiseGamma}}\n  center {256 256}\n  name Noise1\n  xpos 33\n  ypos 2403\n }\n Clamp {\n  name Clamp3\n  xpos 33\n  ypos 2429\n }\npush $N78b12000\n Shuffle {\n  alpha white\n  name Shuffle1\n  xpos -78\n  ypos 1236\n }\n Dot {\n  name Dot5\n  xpos -44\n  ypos 1301\n }\nset N79bdbc00 [stack 0]\n Dot {\n  name Dot6\n  xpos -210\n  ypos 1301\n }\n Dot {\n  name Dot7\n  xpos -210\n  ypos 2202\n }\nset N79bdb400 [stack 0]\n Dot {\n  name Dot8\n  xpos -210\n  ypos 2251\n }\npush $N79bdb400\npush $N79bdbc00\n Dot {\n  name Dot10\n  xpos 166\n  ypos 1301\n }\n Dot {\n  name Dot9\n  xpos 166\n  ypos 1953\n }\npush $N79bdbc00\n Shuffle {\n  alpha red\n  name Shuffle2\n  xpos -78\n  ypos 1507\n }\nset N79bda400 [stack 0]\npush $N79bda400\n Transform {\n  scale {{\"1 - parent.ringsThickness\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform1\n  xpos 14\n  ypos 1534\n }\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge3\n  xpos -78\n  ypos 1572\n }\nset N79bd9c00 [stack 0]\npush $N79bd9c00\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 2)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform2\n  xpos 13\n  ypos 1603\n }\n Merge2 {\n  inputs 2\n  name Merge4\n  xpos -78\n  ypos 1634\n }\nset N79bd9400 [stack 0]\npush $N79bd9400\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 3)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform3\n  xpos 19\n  ypos 1647\n }\n Grade {\n  multiply 0.54\n  name Grade2\n  xpos 19\n  ypos 1673\n }\n Merge2 {\n  inputs 2\n  name Merge7\n  xpos -78\n  ypos 1690\n }\nset N79bd8800 [stack 0]\npush $N79bd8800\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 6)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform4\n  xpos 22\n  ypos 1703\n }\n Merge2 {\n  inputs 2\n  name Merge8\n  xpos -78\n  ypos 1735\n }\nset N79b83c00 [stack 0]\npush $N79b83c00\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 12)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform5\n  xpos 22\n  ypos 1746\n }\n Grade {\n  whitepoint 0.6\n  name Grade1\n  xpos 22\n  ypos 1772\n }\n Merge2 {\n  inputs 2\n  name Merge9\n  xpos -78\n  ypos 1778\n }\nset N79b83000 [stack 0]\npush $N79b83000\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 21)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform6\n  xpos 22\n  ypos 1829\n }\n Merge2 {\n  inputs 2\n  name Merge10\n  xpos -78\n  ypos 1861\n }\nset N79b82800 [stack 0]\npush $N79b82800\n Transform {\n  scale {{\"1 - (parent.ringsThickness * 32)\"}}\n  center {{\"root.width/2 * parent.bokehQuality\"} {\"root.width/2 * parent.bokehQuality\"}}\n  black_outside false\n  name Transform7\n  xpos 21\n  ypos 1861\n }\n Merge2 {\n  inputs 2\n  name Merge11\n  xpos -78\n  ypos 1898\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge12\n  xpos -78\n  ypos 1949\n }\n Blur {\n  size 7\n  name Blur2\n  xpos -78\n  ypos 1993\n }\n Merge2 {\n  inputs 2\n  mix {{\"1 - parent.ringsStrength\"}}\n  name Merge5\n  xpos -78\n  ypos 2198\n }\n Merge2 {\n  inputs 2\n  name Merge6\n  xpos -78\n  ypos 2247\n  disable {{parent.ringsEnable}}\n }\n Shuffle {\n  alpha red\n  name Shuffle3\n  xpos -78\n  ypos 2298\n }\n Dot {\n  name Dot3\n  xpos -44\n  ypos 2386\n }\n Merge2 {\n  inputs 2\n  operation from\n  mix {{parent.noiseMix}}\n  name Merge2\n  xpos -78\n  ypos 2467\n  disable {{!parent.noiseEnable}}\n }\nset N79b80400 [stack 0]\n Dot {\n  name Dot11\n  xpos 95\n  ypos 2534\n }\n Grade {\n  channels alpha\n  blackpoint -0.015\n  whitepoint 1.25\n  name Grade3\n  xpos 165\n  ypos 2524\n }\n Clamp {\n  name Clamp2\n  xpos 165\n  ypos 2562\n }\n Blur {\n  size 13\n  name Blur3\n  xpos 165\n  ypos 2600\n }\nset N79b13000 [stack 0]\n FilterErode {\n  channels alpha\n  size 3.5\n  name FilterErode1\n  xpos 165\n  ypos 2638\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos 165\n  ypos 2688\n }\n Grade {\n  channels alpha\n  blackpoint 0.88\n  white 1.3\n  name Grade4\n  xpos 165\n  ypos 2726\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge16\n  xpos 309\n  ypos 2732\n }\n Invert {\n  name Invert2\n  xpos 309\n  ypos 2810\n }\npush $N79b13000\npush $N79b80400\n Blur {\n  size 5.6\n  name Blur4\n  xpos -13\n  ypos 2545\n }\npush $N79b80400\n Merge2 {\n  inputs 2+1\n  name Merge15\n  xpos -78\n  ypos 2606\n }\n Merge2 {\n  inputs 2\n  operation mask\n  mix {{parent.noiseMix}}\n  name Merge14\n  xpos -78\n  ypos 2816\n  disable {{!parent.noiseEnable}}\n }\n Merge2 {\n  inputs 2\n  operation overlay\n  mix {{parent.naturalNoiseStrength}}\n  name Merge20\n  xpos -78\n  ypos 3479\n  disable {{!parent.naturalNoiseEnable}}\n }\n Dot {\n  name Dot13\n  xpos -44\n  ypos 3876\n }\nset N79b10800 [stack 0]\n Grade {\n  inputs 1+1\n  multiply {{parent.innerChromaTint.r} {parent.innerChromaTint.g} {parent.innerChromaTint.b} 1}\n  white_clamp true\n  mix {{parent.innerChromaStrength}}\n  name Grade6\n  xpos -78\n  ypos 3940\n  disable {{!parent.chromaEnable}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -78\n  ypos 4031\n }\nset N87c03c00 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle5\n  xpos 26\n  ypos 4090\n }\n FilterErode {\n  channels all\n  size 3.5\n  name FilterErode2\n  xpos 26\n  ypos 4131\n }\n Blur {\n  size 2.2\n  name Blur9\n  xpos 26\n  ypos 4169\n }\n Grade {\n  channels alpha\n  whitepoint 0.035\n  name Grade13\n  xpos 26\n  ypos 4207\n }\n Dot {\n  name Dot18\n  xpos 60\n  ypos 4263\n }\npush $N79b10800\n Blur {\n  size 10\n  name Blur7\n  xpos 160\n  ypos 3972\n  disable true\n }\n Grade {\n  multiply {{parent.outerChromaTint.r} {parent.outerChromaTint.g} {parent.outerChromaTint.b} 1}\n  multiply_panelDropped true\n  name Grade7\n  xpos 160\n  ypos 4017\n }\n Grade {\n  multiply 2.4\n  name Grade8\n  xpos 160\n  ypos 4091\n }\n Premult {\n  name Premult1\n  xpos 160\n  ypos 4127\n }\n Blur {\n  size {{parent.outerChromaSize}}\n  name Blur8\n  xpos 160\n  ypos 4185\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge17\n  xpos 160\n  ypos 4259\n }\n Dot {\n  name Dot17\n  xpos 194\n  ypos 4326\n }\n Clamp {\n  name Clamp6\n  xpos 57\n  ypos 4316\n }\npush $N87c03c00\n Clamp {\n  name Clamp7\n  xpos -78\n  ypos 4257\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.outerChromaStrength}}\n  name Merge13\n  xpos -78\n  ypos 4322\n  disable {{!parent.outerChromaEnable}}\n }\n Dot {\n  name Dot48\n  xpos -44\n  ypos 4441\n }\nset N87b8b800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos 84\n  ypos 4475\n }\npush $N87b8b800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy3\n  xpos -78\n  ypos 4520\n }\n Crop {\n  box {0 0 {\"root.width * parent.bokehQuality\"} {\"root.width * parent.bokehQuality\"}}\n  name Crop1\n  xpos -78\n  ypos 4587\n }\n Grade {\n  gamma {{\"1 - parent.bokehGamma\"}}\n  name Grade11\n  xpos -78\n  ypos 4636\n }\n Output {\n  name Output1\n  xpos -78\n  ypos 4691\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_C44Kernel.gizmo",
    "content": "Group {\n name C44Kernel\n help \"C44Kernel v1.0 by Adrian Pueyo\\n\\nMultiply the rgb or rgba colors by an arbitrary 4x4 Matrix. Useful for transforming a Position pass.\\n\\nYou can plug in an Axis or Camera node into the axis input, to also apply its transformations.\\n\\nadrianpueyo.com, 2017\"\n tile_color 0xe88543ff\n lock_connections true\n addUserKnob {20 C44Kernel}\n addUserKnob {41 channels T MergeIn.Achannels}\n addUserKnob {41 matrix T Axis1.matrix}\n addUserKnob {6 invert -STARTLINE}\n addUserKnob {6 alpha_masking l \"alpha masking\" t \"Apply only where rgba.alpha>0\" +STARTLINE}\n addUserKnob {20 advanced l Advanced n 1}\n advanced 0\n addUserKnob {6 transpose +STARTLINE}\n addUserKnob {6 w_divide +STARTLINE}\n addUserKnob {6 rgba_mode l \"apply on Vector4\" t \"Usually you'll want to apply the matrix on the RGB only, which uses a white alpha. Enable this to use the full Vector4 (RGBA).\" +STARTLINE}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {41 mix T MergeOut.mix}\n addUserKnob {26 version_author l \"\" t \"C44Kernel v1.0\\n23 June, 2018\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>C44Kernel v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2018</span>\"}\n addUserKnob {20 GPU_Settings l \"GPU Settings\"}\n}\n Input {\n  inputs 0\n  name Inputaxis\n  xpos 133\n  ypos -181\n  number 1\n }\n Axis2 {\n  useMatrix true\n  name Axis1\n  xpos 143\n  ypos -133\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -110\n  ypos -192\n }\nset N961d0400 [stack 0]\n Dot {\n  name Dot1\n  xpos -76\n  ypos -161\n }\nset N96501eb0 [stack 0]\n Expression {\n  expr3 a>0\n  name ExpressionA\n  xpos -220\n  ypos -164\n }\n Switch {\n  which {{!parent.alpha_masking}}\n  name SwitchMasking\n  xpos -220\n  ypos -112\n }\npush $N96501eb0\npush $N961d0400\n Remove {\n  name RemoveAll\n  xpos 34\n  ypos -196\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  name MergeIn\n  xpos 34\n  ypos -164\n }\n Shuffle {\n  alpha white\n  name ShuffleWhiteA\n  xpos 34\n  ypos -140\n  disable {{parent.rgba_mode}}\n }\n BlinkScript {\n  recompileCount 147\n  ProgramGroup 1\n  KernelDescription \"2 \\\"C44MatrixKernel\\\" iterate pixelWise 10f1841ce0aee43165aca4445fb9ce0126826eedd71da6339f12b8f8de8e52eb 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 4 \\\"m\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"invert\\\" Int 1 AAAAAA== \\\"transpose\\\" Int 1 AAAAAA== \\\"w_divide\\\" Int 1 AAAAAA== 4 \\\"m\\\" 16 1 \\\"invert\\\" 1 1 \\\"transpose\\\" 1 1 \\\"w_divide\\\" 1 1 0\"\n  kernelSource \"kernel C44MatrixKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float4x4 m;\\n    int invert;\\n    int transpose;\\n    int w_divide;\\n\\n  void process(int2 pos) \\{\\n    SampleType(src) p = src();\\n    float4 result = 1.0f;\\n    float4x4 mi = m;\\n    mi = invert?mi.invert():mi;\\n    mi = transpose?mi.transpose():mi;\\n    for(int c = 0; c<dst.kComps; c++)\\{\\n      result\\[c] = mi\\[c]\\[0]*p.x + mi\\[c]\\[1]*p.y + mi\\[c]\\[2]*p.z + mi\\[c]\\[3]*p.w;\\n    \\}\\n    dst() = w_divide?result/result.w:result;\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  C44MatrixKernel_m {\n      {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n      {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n      {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n      {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n    }\n  C44MatrixKernel_invert {{parent.invert}}\n  C44MatrixKernel_transpose {{parent.transpose}}\n  C44MatrixKernel_w_divide {{parent.w_divide}}\n  rebuild_finalise \"\"\n  name C44MatrixKernel\n  xpos 34\n  ypos -116\n }\npush $N96501eb0\n Merge2 {\n  inputs 2+1\n  operation copy\n  Bchannels {{{parent.MergeIn.Achannels}}}\n  output {{{parent.MergeIn.Achannels}}}\n  name MergeOut\n  xpos -110\n  ypos -112\n }\n Output {\n  name Output1\n  xpos -110\n  ypos -88\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CProject.gizmo",
    "content": "Group {\nname CProject\nhelp \"it is just cornerpin tracked\\nnothing fancy at all\\nhave fun!\"\nknobChanged \"nn = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"cropP\\\":\\n\\n    if nn\\['cropP'].value() in \\[\\\"Hard Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"Image is cropped to Input, Concatenation preserved.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"Adjustable Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(True)\\n        nn\\[\\\"text\\\"].setValue(\\\"Adjust your Bbox , Downward <b><font color='Dark Red'>Concatenation is broken<b>.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"No Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"No Crop applied, Concatenation preserved.\\\")\"\ntile_color 0x7a4389ff\nnote_font Verdana\nnote_font_size 14\nnote_font_color 0x28565eff\naddUserKnob {20 User l CProject}\naddUserKnob {6 FreezeInput l \"freeze input\" t \"freezing the input on the refrence frame, \\nsame as putting the framehold before the node\" +STARTLINE}\naddUserKnob {22 python_button l \"set current as reference frame\" T \"\\nn = nuke.thisNode()\\nfor one in range(1,5):\\n   n\\['from'+str(one)].setValue(n\\['to'+str(one)].value()) \\n\\nframe = nuke.frame()\\nn\\['refFrame'].setValue(frame)\\nn\\['label'].setValue(str(frame))\\n\\nnuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\\n\" +STARTLINE}\naddUserKnob {26 text_2 l \"\" -STARTLINE T or}\naddUserKnob {22 setRefFrame l \"set reference frame\" t \"setting the reference frame,\\nsame as the reference frame when you are doing projection with the camera on the card.\\nyou should expect that the input will be unchenged on this frame.\" -STARTLINE T \"\\nn = nuke.thisNode()\\nfor one in range(1,5):\\n   n\\['from'+str(one)].setValue(n\\['to'+str(one)].value()) \\n\\n\\nframe = int(n\\['refFrame'].value())\\nn\\['label'].setValue(str(frame))\\n\\nnuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\\n\\n\"}\naddUserKnob {3 refFrame l \"\" -STARTLINE}\nrefFrame 69\naddUserKnob {41 set_to_input l \"Set to input\" t \"this will distort the input texture with the corner pin, it is the same as applying the texture on the card \" T CornerPin2D2.set_to_input}\naddUserKnob {41 invert l stabilize t \"stabilize the input on the reference frame\" T CornerPin2D2.invert}\naddUserKnob {41 motionblur T CornerPin2D2.motionblur}\naddUserKnob {41 shutter T CornerPin2D2.shutter}\naddUserKnob {20 s l \"\" +STARTLINE n 1}\ns 0\naddUserKnob {41 shutteroffset l \"shutter offset\" -STARTLINE T CornerPin2D2.shutteroffset}\naddUserKnob {41 shuttercustomoffset -STARTLINE T CornerPin2D2.shuttercustomoffset}\naddUserKnob {41 clamp T CornerPin2D2.clamp}\naddUserKnob {41 black_outside l \"black outside\" -STARTLINE T CornerPin2D2.black_outside}\naddUserKnob {41 filter_1 l filter T Reformat1.filter}\naddUserKnob {26 add l \"\" +STARTLINE T \"source card, camera...\"}\naddUserKnob {26 camera l camera: T Camera2}\naddUserKnob {13 translate}\ntranslate {0.1914808601 -0.1767024994 0.4249224663}\naddUserKnob {13 rotation}\nrotation {-20.90365344 -156.0216134 0}\naddUserKnob {20 endGroup n -1}\naddUserKnob {26 \"\"}\naddUserKnob {4 cropP l crop M {\"Hard Crop\" \"Adjustable Crop\" \"No Crop\"}}\naddUserKnob {7 growBbox l \"grow Bbox\" -STARTLINE +HIDDEN R 0 200}\ngrowBbox 50\naddUserKnob {41 o l overscan +DISABLED +HIDDEN +INVISIBLE T Crop1.o}\naddUserKnob {26 text l tip T \"Image is cropped to Input, Concatenation preserved.\"}\naddUserKnob {26 \"\"}\naddUserKnob {26 element l element: T elem}\naddUserKnob {20 fromto l From/To}\naddUserKnob {41 from4 -STARTLINE T CornerPin2D2.from4}\naddUserKnob {41 from3 -STARTLINE T CornerPin2D2.from3}\naddUserKnob {41 from1 T CornerPin2D2.from1}\naddUserKnob {41 from2 -STARTLINE T CornerPin2D2.from2}\naddUserKnob {26 \"\"}\naddUserKnob {41 to4 T CornerPin2D2.to4}\naddUserKnob {41 to3 -STARTLINE T CornerPin2D2.to3}\naddUserKnob {41 to1 T CornerPin2D2.to1}\naddUserKnob {41 to2 -STARTLINE T CornerPin2D2.to2}\n}\nInput {\n inputs 0\n name Input1\n xpos 112\n ypos -259\n}\nFrameHold {\n first_frame 59\n name FHold\n xpos 112\n ypos -207\n disable {{!parent.FreezeInput}}\n}\nCornerPin2D {\n to1 {0 0}\n to2 {0 0}\n to3 {0 0}\n to4 {0 0}\n invert false\n shutteroffset centred\n from1 {0 0}\n from2 {0 0}\n from3 {0 0}\n from4 {0 0}\n name CornerPin2D2\n xpos 112\n ypos -171\n addUserKnob {20 User}\n addUserKnob {22 \"set reference frame\" -STARTLINE T cornerPinZero()}\n}\nset N26348700 [stack 0]\nDot {\n name Dot1\n xpos 14\n ypos -62\n}\npush $N26348700\nCrop {\n box {{curve-parent.growBbox} {curve-parent.growBbox} {width+parent.growBbox} {height+parent.growBbox}}\n name Crop1\n xpos 112\n ypos -62\n addUserKnob {20 User}\n addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\npush $N26348700\nReformat {\n type \"to box\"\n format \"4096 2160 0 0 4096 2160 1 4K_DCP\"\n box_width {{width}}\n box_height {{height}}\n box_pixel_aspect {{pixel_aspect}}\n resize none\n name Reformat1\n selected true\n xpos 223\n ypos -69\n}\nSwitch {\n inputs 3\n which {{parent.cropP x1000 0}}\n name Switch1\n label \"\\[value which]\"\n xpos 112\n ypos 10\n}\nOutput {\n name Output1\n xpos 112\n ypos 106\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CProject2.gizmo",
    "content": "Group {\n name CProject\n help \"it is just cornerpin tracked\\nnothing fancy at all\\nhave fun!\"\n knobChanged \"nn = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"cropP\\\":\\n\\n    if nn\\['cropP'].value() in \\[\\\"Hard Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"Image is cropped to Input, Concatenation preserved.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"Adjustable Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(True)\\n        nn\\[\\\"text\\\"].setValue(\\\"Adjust your Bbox , Downward <b><font color='Dark Red'>Concatenation is broken<b>.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"No Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"No Crop applied, Concatenation preserved.\\\")\"\n tile_color 0x7a4389ff\n label \"Matchmove\\n34\"\n note_font Verdana\n note_font_size 14\n note_font_color 0x28565eff\n addUserKnob {20 User l CProject}\n addUserKnob {26 card_to_track l \"\" +STARTLINE T \"card_to_track:cornerpin: box\"}\n addUserKnob {26 \"\"}\n addUserKnob {6 FreezeInput l \"freeze input\" t \"freezing the input on the refrence frame, \\nsame as putting the framehold before the node\" +STARTLINE}\n addUserKnob {22 mode_toggle l \"<h1 style = 'font-size:30'><b><font color=#9667D1>Matchmove\" t \"Toggle between Matchmove and Stabilize modes.\\nPay attention to the reference frame - on this frame no transformation will be applied. You can see it as a projection frame if compare to camera project\" T \"import nuke\\nntn = nuke.thisNode()\\nntk = nuke.thisKnob()\\nref_frame = str(int(ntn\\['refFrame'].value()))\\nlab = ntk.label()\\nmm = \\\"<h1 style = 'font-size:30'><b><font color=#9667D1>Matchmove\\\"\\nstab = \\\"<h1 style = 'font-size:30'><b><font color=#797BFF>Stabilize\\\"\\nif lab == mm:\\n    ntk.setLabel(stab)\\n    ntn\\['invert'].setValue(True)\\n    ntn\\['tile_color'].setValue(1834205695)\\n    if ntn\\['set_to_input_1'].label() == \\\"<h1 style = 'font-size:10'><b>Set To Input\\\":\\n        ntn\\['label'].setValue(\\\"Stabilize\\\\ninput\\\")\\n    else:\\n        ntn\\['label'].setValue(\\\"Stabilize\\\\n\\\"+ref_frame)\\nelif lab == stab:\\n    ntk.setLabel(mm)\\n    ntn\\['invert'].setValue(False)\\n    ntn\\['tile_color'].setValue(2051246591)\\n    if ntn\\['set_to_input_1'].label() == \\\"<h1 style = 'font-size:10'><b>Set To Input\\\":\\n        ntn\\['label'].setValue(\\\"Matchmove\\\\ninput\\\")\\n    else:\\n        ntn\\['label'].setValue(\\\"Matchmove\\\\n\\\"+ref_frame)\\n# auto toggle input/output aspect according to upstream CProject\\nstored = []\\ndef _recurse_up_select(node):\\n    global stored\\n    if node is not None and node not in stored:\\n        for i in range(node.inputs()):\\n            _recurse_up_select(node.input(i))\\n            stored.append(node.input(i))\\n    return stored\\nstored = []\\nupstream_nodes = _recurse_up_select(ntn.input(0))\\nfor one in upstream_nodes:\\n    if one and 'card_to_track' in one.knobs():\\n        image_aspect = one\\['image_aspect'].value()\\n        image_aspect_out = one\\['image_aspect_out'].value()\\n        if image_aspect_out:\\n            ntn\\['image_aspect'].setValue(True)\\n            ntn\\['image_aspect_out'].setValue(False)\\n            break\\n        elif image_aspect:\\n            ntn\\['image_aspect_out'].setValue(True)\\n            ntn\\['image_aspect'].setValue(False)\\n            break\\n        else:\\n            ntn\\['image_aspect_out'].setValue(False)\\n            ntn\\['image_aspect'].setValue(False)\\n            break\\n    else:\\n        ntn\\['image_aspect_out'].setValue(False)\\n        ntn\\['image_aspect'].setValue(False)\" +STARTLINE}\n addUserKnob {22 set_to_input_1 l \"Set to input\" t \"this will distort the input texture with the corner pin, it is the same as applying the texture on the card \" -STARTLINE T \"import nuke\\nntn = nuke.thisNode()\\nntk = ntn\\['set_to_input_1']\\nlab = ntk.label()\\ninput_set = \\\"<h1 style = 'font-size:10'><b>Set To Input\\\"\\nref_frame_set = \\\"Set To Input\\\"\\nif lab == input_set:\\n    ntk.setLabel(ref_frame_set)\\nelse:\\n    ntk.setLabel(input_set)\\nwith ntn:\\n    nuke.toNode(\\\"CornerPin2D2\\\")\\[\\\"set_to_input\\\"].execute()\\n    ntn\\['label'].setValue(ntn\\['mode_toggle'].label().rpartition(\\\"> \\\")[2]+\\\"\\\\ninput\\\")\"}\n addUserKnob {22 setCurrenrAsRefFrame l \"set current frame as reference frame\" t \"On this frame no transformation will be applied.\" T \"import nuke\\nntn = nuke.thisNode()\\nframe = int(nuke.frame())\\nntk = ntn\\['set_to_input_1']\\nntk.setLabel(\\\"Set To Input\\\")\\nfor one in range(1,5):\\n    ntn\\['from'+str(one)].setValue(ntn\\['to'+str(one)].valueAt(frame))\\nntn\\['label'].setValue(ntn\\['mode_toggle'].label().rpartition(\\\">\\\")[2]+\\\"\\\\n\\\"+str(frame))\\nntn\\['refFrame'].setValue(frame)\\nwith ntn:\\n    nuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\" +STARTLINE}\n addUserKnob {22 setRefFrame l \"set specific reference frame\" t \"Same as previous button except you can choose the reference frame manually\" T \"import nuke\\nntn = nuke.thisNode()\\nframe = int(nuke.thisNode()\\['refFrame'].value())\\nntk = ntn\\['set_to_input_1']\\nntk.setLabel(\\\"Set To Input\\\")\\nfor one in range(1,5):\\n    ntn\\['from'+str(one)].setValue(ntn\\['to'+str(one)].valueAt(frame))\\nntn\\['label'].setValue(ntn\\['mode_toggle'].label().rpartition(\\\">\\\")[2]+\\\"\\\\n\\\"+str(frame))\\nntn\\['refFrame'].setValue(frame)\\nwith ntn:\\n    nuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\" +STARTLINE}\n addUserKnob {3 refFrame l \"\" -STARTLINE}\n refFrame 34\n addUserKnob {6 image_aspect l \"preserve input image aspect\" t \"Preserve image aspect ratio. If disabled input aspect is set to square which is usefull when stabilize and unwrap texture.\" +STARTLINE}\n addUserKnob {6 image_aspect_out l \"preserve output image aspect\" +STARTLINE}\n addUserKnob {41 invert l stabilize t \"stabilize the input on the reference frame\" +INVISIBLE T CornerPin2D2.invert}\n addUserKnob {26 \"\"}\n addUserKnob {41 motionblur T CornerPin2D2.motionblur}\n addUserKnob {41 shutter T CornerPin2D2.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T CornerPin2D2.shutteroffset}\n addUserKnob {41 shuttercustomoffset -STARTLINE T CornerPin2D2.shuttercustomoffset}\n addUserKnob {41 filter_1 l filter T Reformat1.filter}\n addUserKnob {41 clamp -STARTLINE T CornerPin2D2.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T CornerPin2D2.black_outside}\n addUserKnob {26 \"\"}\n addUserKnob {4 cropP l crop M {\"Hard Crop\" \"Adjustable Crop\" \"No Crop\"}}\n addUserKnob {7 growBbox l \"grow Bbox\" -STARTLINE +HIDDEN R 0 200}\n growBbox 50\n addUserKnob {41 o l overscan +DISABLED +HIDDEN +INVISIBLE T Crop1.o}\n addUserKnob {26 text l tip T \"Image is cropped to Input, Concatenation preserved.\"}\n addUserKnob {26 \"\"}\n addUserKnob {6 use_output_format l use +STARTLINE}\n addUserKnob {41 format l \"output format\" -STARTLINE T Reformat2.format}\n addUserKnob {41 pbb l \"preserve bounding box\" T Reformat2.pbb}\n addUserKnob {41 black_outside_1 l \"black outside\" -STARTLINE T Reformat2.black_outside}\n addUserKnob {41 clamp_1 l clamp -STARTLINE T Reformat2.clamp}\n addUserKnob {20 fromto l From/To}\n addUserKnob {41 from4 -STARTLINE T CornerPin2D2.from4}\n addUserKnob {41 from3 -STARTLINE T CornerPin2D2.from3}\n addUserKnob {41 from1 T CornerPin2D2.from1}\n addUserKnob {41 from2 -STARTLINE T CornerPin2D2.from2}\n addUserKnob {26 \"\"}\n addUserKnob {41 to4 T CornerPin2D2.to4}\n addUserKnob {41 to3 -STARTLINE T CornerPin2D2.to3}\n addUserKnob {41 to1 T CornerPin2D2.to1}\n addUserKnob {41 to2 -STARTLINE T CornerPin2D2.to2}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 112\n  ypos -341\n }\n FrameHold {\n  name FHold\n  xpos 112\n  ypos -289\n  disable {{!parent.FreezeInput}}\n }\n Transform {\n  scale {1 {1/width*height}}\n  center {{width/2} {height/2}}\n  name Transform1\n  xpos 112\n  ypos -227\n  disable {{!parent.image_aspect}}\n }\n CornerPin2D {\n  to1 {0 0}\n  to2 {1920 0}\n  to3 {1920 1080}\n  to4 {0 1080}\n  invert false\n  shutteroffset centred\n  from1 {0 0}\n  from2 {1920 0}\n  from3 {1920 1080}\n  from4 {0 1080}\n  name CornerPin2D2\n  xpos 112\n  ypos -171\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T cornerPinZero()}\n }\nset Ne757db70 [stack 0]\n Dot {\n  name Dot1\n  xpos 14\n  ypos -62\n }\npush $Ne757db70\n Crop {\n  box {{curve-parent.growBbox} {curve-parent.growBbox} {width+parent.growBbox} {height+parent.growBbox}}\n  name Crop1\n  xpos 112\n  ypos -62\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\npush $Ne757db70\n Reformat {\n  type \"to box\"\n  format \"4096 2160 0 0 4096 2160 1 4K_DCP\"\n  box_width {{width}}\n  box_height {{height}}\n  box_pixel_aspect {{pixel_aspect}}\n  resize none\n  name Reformat1\n  xpos 223\n  ypos -69\n }\n Switch {\n  inputs 3\n  which {{parent.cropP x1000 0}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 112\n  ypos 10\n }\n Transform {\n  scale {1 {1/height*width}}\n  center {{width/2} {height/2}}\n  name Transform2\n  xpos 112\n  ypos 81\n  disable {{!parent.image_aspect_out}}\n }\n Reformat {\n  resize none\n  center false\n  pbb true\n  name Reformat2\n  xpos 112\n  ypos 151\n  disable {{!parent.use_output_format}}\n }\n Output {\n  name Output1\n  xpos 112\n  ypos 187\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CameraNormals.gizmo",
    "content": "add_layer {N N.red N.green N.blue N.alpha}\nadd_layer {P P.red P.green P.blue P.alpha}\nGroup {\n name CameraNormals\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"fix\\\":\\n    if int(k.value()) == False:\\n        n.knobs()\\['pworld'].setVisible(False)\\n    else:\\n        n.knobs()\\['pworld'].setVisible(True)\\n        \\nif k.name() == \\\"output_mask\\\":\\n    if int(k.value()) == False:\\n        n.knobs()\\['invert'].setVisible(False)\\n        n.knobs()\\['math'].setVisible(False)\\n        n.knobs()\\['bias'].setVisible(False)\\n    else:\\n        n.knobs()\\['invert'].setVisible(True)\\n        n.knobs()\\['math'].setVisible(True)\\n        if n.knobs()\\['math'].value() == \\\"Biased\\\":\\n            n.knobs()\\['bias'].setVisible(True)\\n        else:\\n            n.knobs()\\['bias'].setVisible(False)\\n            \\nif k.name() == \\\"math\\\":\\n    if n.knobs()\\['math'].value() == \\\"Biased\\\":\\n        n.knobs()\\['bias'].setVisible(True)\\n    else:\\n        n.knobs()\\['bias'].setVisible(False)\"\n tile_color 0x7f7f7fff\n selected true\n addUserKnob {20 User l CameraNormals}\n addUserKnob {41 nworld l \"N channels\" T Shuffle_N.in}\n addUserKnob {26 divider1 l \"\" +STARTLINE}\n addUserKnob {6 fix l \"Fix Camera Facing Normals\" t \"This will fix the blue component of your Normals, making it a perfect facing ratio mask for your CG\" +STARTLINE}\n fix true\n addUserKnob {41 pworld l \"P channels\" T Shuffle_P.in}\n addUserKnob {26 divider2 l \"\" +STARTLINE}\n addUserKnob {6 output_mask l \"Output Facing Ratio Mask\" t \"Instead of writing the new normals to your existing N channel, directly output_mask the Facing Ratio Mask in the RGBA\\n(Note: This operation requires an alpha channel on the input)\" +STARTLINE}\n output_mask true\n addUserKnob {6 invert l Invert? +STARTLINE}\n invert true\n addUserKnob {4 math l Math M {Simple Biased \"\" \"\" \"\" \"\"}}\n math Biased\n addUserKnob {26 spacer1 l \"\" -STARTLINE T \"   \"}\n addUserKnob {7 bias l Bias -STARTLINE R -1 1}\n addUserKnob {20 about l About}\n addUserKnob {26 description l \"\" +STARTLINE T \"This Gizmo converts your world-normals to camera-normals.\\n\\nCameraNormalsv1.0 by Nikolai Wüstemann (inspired by Eyal Shirazi)\\nDummyCamv1.1 by Adrian Pueyo\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 239\n  ypos -24\n }\n Dot {\n  name Dot1\n  xpos 273\n  ypos 146\n }\nset N114f6ff0 [stack 0]\n Dot {\n  name Dot2\n  xpos -128\n  ypos 146\n }\nset N11522990 [stack 0]\n Dot {\n  name Dot3\n  xpos -638\n  ypos 146\n }\n Shuffle {\n  in P\n  name Shuffle_P\n  xpos -672\n  ypos 229\n }\n Add {\n  value {{-DummyCam.world_matrix.3} {-DummyCam.world_matrix.7} {-DummyCam.world_matrix.11} {DummyCam.translate}}\n  name Add_ZeroCamPos\n  xpos -672\n  ypos 302\n }\n Expression {\n  temp_name0 t\n  temp_expr0 1/sqrt(r*r+g*g+b*b)\n  channel0 {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  expr0 r*t\n  expr1 g*t\n  expr2 b*t\n  name Expression1\n  xpos -672\n  ypos 381\n }\npush $N11522990\n Shuffle {\n  in N\n  name Shuffle_N\n  xpos -162\n  ypos 233\n }\n Dot {\n  name Dot6\n  xpos -128\n  ypos 375\n }\nset N11443fe0 [stack 0]\n MergeExpression {\n  inputs 2\n  channel0 rgb\n  expr0 -(Ar*Br+Ag*Bg+Ab*Bb)\n  name MergeExpression_DotProduct\n  xpos -422\n  ypos 517\n }\n Dot {\n  name Dot7\n  xpos -388\n  ypos 1016\n }\npush $N11443fe0\n ColorMatrix {\n  matrix {\n      {{DummyCam.world_matrix.0} {DummyCam.world_matrix.1} {DummyCam.world_matrix.2}}\n      {{DummyCam.world_matrix.4} {DummyCam.world_matrix.5} {DummyCam.world_matrix.6}}\n      {{DummyCam.world_matrix.8} {DummyCam.world_matrix.9} {DummyCam.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix_RotateNormals\n  xpos -162\n  ypos 729\n }\n Dot {\n  name Dot10\n  xpos -128\n  ypos 915\n }\nset N113c1420 [stack 0]\n Dot {\n  name Dot11\n  xpos -260\n  ypos 915\n }\n ShuffleCopy {\n  inputs 2\n  blue blue\n  alpha alpha2\n  name ShuffleCopy_FixFacingRatio\n  xpos -294\n  ypos 1013\n }\n Dot {\n  name Dot12\n  xpos -260\n  ypos 1134\n }\npush $N113c1420\n Switch {\n  inputs 2\n  which {{fix}}\n  name Switch_FixFacingRatio\n  label \"\\[value this.which]\"\n  xpos -162\n  ypos 1125\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove_KeepRGBA\n  xpos -162\n  ypos 1341\n }\n Dot {\n  name Dot4\n  xpos -128\n  ypos 1525\n }\nset N1144c690 [stack 0]\npush $N114f6ff0\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out2 {{{Shuffle_N.in}}}\n  name ShuffleCopy_CopyNormals\n  xpos 239\n  ypos 1522\n }\n Dot {\n  name Dot8\n  xpos 273\n  ypos 1921\n }\nset N114455d0 [stack 0]\npush $N1144c690\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle_UseBlueChannel\n  xpos -162\n  ypos 1655\n }\n Expression {\n  temp_name0 b\n  temp_expr0 bias/2+0.5\n  temp_name1 i\n  temp_expr1 invert\n  temp_name2 m\n  temp_expr2 math\n  temp_name3 v\n  temp_expr3 i==0?r:1-r\n  channel0 rgba\n  expr0 (m==0)?v:(b**10)**(1-v)\n  name Expression_FacingRatioMath\n  xpos -162\n  ypos 1779\n }\n Clamp {\n  name Clamp\n  xpos -162\n  ypos 1827\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge_MaskWithAlpha\n  xpos -162\n  ypos 1918\n }\n Dot {\n  name Dot5\n  xpos -128\n  ypos 2079\n }\npush $N114455d0\n Switch {\n  inputs 2\n  which {{output_mask}}\n  name Switch_Output\n  label \"\\[value this.which]\"\n  xpos 239\n  ypos 2070\n }\n Output {\n  name Output1\n  xpos 239\n  ypos 2192\n }\n Input {\n  inputs 0\n  name cam\n  xpos 421\n  ypos -32\n  number 1\n }\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {10000}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  xpos 431\n  ypos 36\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CardToTrack.gizmo",
    "content": "Group {\n name CardToTrack\n onCreate \"#nuke.thisNode()\\['picker'].setValue(\\[nuke.toNode(\\\"root\\\")\\['format'].value().width()/2,nuke.toNode(\\\"root\\\")\\['format'].value().height()/2])\"\n tile_color 0x5236ff\n gl_color 0xff0000ff\n note_font \"DejaVu Sans\"\n note_font_size 14\n note_font_color 0xff\n selected true\n addUserKnob {20 User l CardToTrack}\n addUserKnob {26 \"\"}\n addUserKnob {26 extras l \"\" t \"here you can choose the way you would like find your position\\n\\n1 I have a Camera and great Matchmove\\n   means you have only a tracked Camera - you will have to go normal way in finding position\\n\\n2  I have a Camera and Geometry\\n   see little input called \\\"Extra\\\"? this is your new friend, if you have by any chance a geometry of the Scene - can be a model, lidar scan or just a bunch Nuke objects, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n3  I have a Camera and Wpos pass\\n    if your nice 3D Artist rendered for you a Wpos pass, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n4  I have a Camera and Card\\n    Let say you have animated Card and you want to translate it's position to Screen space, connect the Card to the .... guess what and press \\\"GO\\\" button\\n    DONE!!!\\n5  Axis \\n    In Case you have card which animation is driven by one ore more Axises you can use this option. Just connect the Extra pipe to the lowest Axis in the chain. the script will consolidate transformations for you!\\n\\n\" +STARTLINE T \"I have a Camera and\"}\n addUserKnob {41 _1 l \" \" -STARTLINE T NoOp2.extraStuff}\n addUserKnob {41 extraHelper l \"\" -STARTLINE +INVISIBLE T NoOp2.extraHelper}\n addUserKnob {3 scene l \"      scene size\" t \"the tool does not know how big your scene is, if after adjusting \\\"Z\\\" slider you see that the card you generating is too big or too small - adjust the scene size.\\n\\nyou not going to see something changing till you will press \\\"Set\\\" button again\\n\\nif you do happy you can leave this knob alone there will be no need to touch it again\\n\\njust remember the value so you will be able to enter it when you will be work on the other shots from the same sequence\\n\\ncheers!\" -STARTLINE}\n scene 10\n addUserKnob {41 hue_rotation l \"hue grid\" -STARTLINE T HueShift1.hue_rotation}\n addUserKnob {7 op l \"     opacity grid\" -STARTLINE}\n op 1\n addUserKnob {26 \"\"}\n addUserKnob {20 setGroup l \"set Reference\" n 1}\n addUserKnob {26 ds l <b>1. t \"first step in finding desired position.\\n\\nplease find some feature on the screen, feature you can see on the other frames as well.\\nnot position the picker on this feature and press \\\"Set\\\" button\\n\\nthe reference frame is set, yo should see now the grid centering on the \\\"picker\\\"\\n\\nthere is a chance that \\\"grid\\\" will be very small or very big depends on the size of your scene, feel free to adjust it's size with the u_scale knob.\\n\\nnow you ready for the next step\" T \"Set reference frame.\"}\n addUserKnob {22 REF l Set t \"first step in finding desired position.\\n\\nplease find some feature on the screen, feature you can see on the other frames as well.\\nnot position the picker on this feature and press \\\"Set\\\" button\\n\\nthe reference frame is set, yo should see now the grid centering on the \\\"picker\\\"\\n\\nthere is a chance that \\\"grid\\\" will be very small or very big depends on the size of your scene, feel free to adjust it's size with the u_scale knob.\\n\\nnow you ready for the next step\" T \"import NST_cardToTrack\\nNST_cardToTrack.setRefFrame()\" +STARTLINE}\n addUserKnob {6 S l INVISIBLE -STARTLINE +INVISIBLE}\n addUserKnob {3 refFrame l \"   reference frame:\" -STARTLINE +INVISIBLE}\n refFrame 1001\n addUserKnob {41 picker l \"     \" -STARTLINE T NoOp1.picker}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 findZ l \"Find Z\" n 1}\n findZ 0\n addUserKnob {26 d l \"<b>2. \" t \"Second step help us to find exact position in 3d space\\n\\nstart advance few frames, you should see that a grid is not fixed anymore to your reference feature, from the moment you noticing it is happening adjust \\\"Z\\\" knob to bring the \\\"grid\\\" back to the place it was. already after first adjustment you will see that grid is sticking well to the feature. Now you can go to some other frame and refine the position again if needed\\n\\nTipp:\\nit is possible that already after one or two frames of advancement your grid will disappear it can happen because of the size of your scene. just play with \\\"Z\\\" slider till you will bring the \\\"grid\\\" back to the screen. it is possible that you will have to go to negative values as well.\" T \"go to some other frame and adjust Z. Use stabilize if needed.\"}\n addUserKnob {41 Stabilize -STARTLINE T NoOp2.Stabilize}\n addUserKnob {6 HighPass -STARTLINE +HIDDEN}\n addUserKnob {7 sharpen l \"\" -STARTLINE +HIDDEN R 1 10}\n sharpen 2\n addUserKnob {7 Zfind l Z t \"Second step help us to find exact position in 3d space\\n\\nstart advance few frames, you should see that a grid is not fixed anymore to your reference feature, from the moment you noticing it is happening adjust \\\"Z\\\" knob to bring the \\\"grid\\\" back to the place it was. already after first adjustment you will see that grid is sticking well to the feature. Now you can go to some other frame and refine the position again if needed.\\nonce you happy with the result\\npress \\\"Happy\\\" button!!!\\n\\nTipp:\\nit is possible that already after one or two frames of advancement your grid will disappear it can happen because of the size of your scene. just play with \\\"Z\\\" slider till you will bring the \\\"grid\\\" back to the screen. it is possible that you will have to go to negative values as well.\" R -100 100}\n addUserKnob {26 s l <b>3. t \"this will create an axis in exact 3D position you found\\nplease adjust (if needed)\\nrotation of the card to match exact perspective you want\\n\\nTipp :\\nadjusting \\\"scale\\\" and \\\"u_scale\\\":\\nbe carefull when scaling up the card!!! from the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. So as a good practice leave your \\\"grid\\\" not too big it will not matter for final calculation since it still will lay on the same plane.\\n\\n\" T \"Happy with Z? Press \\\"Happy\\\" button and adjust perspective.\"}\n addUserKnob {22 Adjust l Happy!!! t \"this will create an axis in exact 3D position you found\\nplease adjust (if needed)\\nrotation of the card to match exact perspective you want\\n\\nTipp :\\nadjusting \\\"scale\\\" and \\\"u_scale\\\":\\nbe carefull when scaling up the card!!! from the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. So as a good practice leave your \\\"grid\\\" not too big it will not matter for final calculation since it still will lay on the same plane.\\n\\n\" T \"import NST_cardToTrack\\nNST_cardToTrack.happy()\" +STARTLINE}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 happyGroup l \"Adjust TRS\" n 1}\n happyGroup 0\n addUserKnob {41 translate T Perspective.translate}\n addUserKnob {41 rotate l \"rotate    \" T Perspective.rotate}\n addUserKnob {41 scaling l \"scale     \" T Perspective.scaling}\n addUserKnob {41 uniform_scale l \"u_scale \" T Perspective.uniform_scale}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 goGroup l \"Create Nodes\" n 1}\n goGroup 0\n addUserKnob {26 r l <b>4. t \"this little fellow will create for you three nodes\\n\\n1. NST_CProject - basically it is a cornerPin node with steroids it allowes to you very easy set Reference point for your \\\"projection\\\", stabilize, crop. all in one\\n2. CornerPin with a transformation baked in the \\\"matrix\\\" knob - usually i am using it to copy to GridWarp or SplineWarp\\n3. Roto - the node i am using the most.\\nthe transformation is baked into the root matrix.\\nso just pick the frame create the rotoshape and enjoy!\" T \"Time to create our Nodes!\"}\n addUserKnob {22 C2T l <b>-----------------------GO!----------------------- t \"this little fellow will create for you three nodes\\n\\n1. NST_CProject - basically it is a cornerPin node with steroids it allowes to you very easy set Reference point for your \\\"projection\\\", stabilize, crop. all in one\\n2. CornerPin with a transformation baked in the \\\"matrix\\\" knob - usually i am using it to copy to GridWarp or SplineWarp\\n3. Roto - the node i am using the most.\\nthe transformation is baked into the root matrix.\\nso just pick the frame create the rotoshape and enjoy!\" T \"import NST_cardToTrack\\nNST_cardToTrack.go()\" +STARTLINE}\n addUserKnob {26 w l \"\" -STARTLINE T or}\n addUserKnob {22 Card l \"Create object only\" t \"create 3d object in extracted position\\nwithout animation\" -STARTLINE T \"import NST_cardToTrack\\nNST_cardToTrack.objectOnly()\"}\n addUserKnob {6 Card_1 l Card t \"Create a card based on 3D position\" +STARTLINE}\n Card_1 true\n addUserKnob {6 CornerPin l \"Corner Pin\" t \"Create a corner pin based on 3D position\" +STARTLINE}\n CornerPin true\n addUserKnob {6 Roto t \"Create a Roto node based on 3D position.\\nTracking of the Roto will be saved on the Root leves of the node.\" +STARTLINE}\n Roto true\n addUserKnob {6 Transform t \"Create a transform based on 3D position\" +STARTLINE}\n addUserKnob {6 Matrix t \"Create a Matrix representation of the transformatio in  3D space, can bre used later in various nodes such as RotoPaint, GridWarp, SplineWarp and so on.\\n\\nSide note - GridWarp is buggy when using matrix - better stabilize image with corner Pin, use grid warp and un- stabilize back with corner pin.\\n(use uv/stmap to reduce quality hits)\" +STARTLINE}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \" &copy;\" T \"Helge Stang & Alexey Kuchinski\"}\n addUserKnob {20 help_1 l Help}\n addUserKnob {26 hhelp l \"\" +STARTLINE T \"---------------------------------------------------\\nStep 1\\n\\nplease find some feature on the screen, feature you can see on the other frames as well.\\nnow position the picker on this feature and press \\\"Set\\\" button\\n\\nthe reference frame is set, yo should see now the grid centering on the \\\"picker\\\"\\n\\nthere is a chance that \\\"grid\\\" will be very small or very big depends on the size of your scene, feel free to adjust it's size with the u_scale knob.\\n\\nnow you ready for the next step\\n\\n---------------------------------------------------\\nStep 2\\n\\nLet's find exact position in 3d space\\n\\nstart advance few frames, you should see that a grid is not fixed anymore to your reference feature, from the moment you noticing it is happening adjust \\\"Z\\\" knob to bring the \\\"grid\\\" back to the place it was. already after first adjustment you will see that grid is sticking well to the feature. Now you can go to some other frame and refine the position again if needed\\n\\nTipp:\\nit is possible that already after one or two frames of advancement your grid will disappear it can happen because of the size of your scene. just play with \\\"Z\\\" slider till you will bring the \\\"grid\\\" back to the screen. it is possible that you will have to go to negative \\nvalues as well.\\n\\n---------------------------------------------------\\nStep 3\\n\\nthis will create an axis in exact 3D position you found\\nplease adjust (if needed)\\nrotation of the card to match exact perspective you want\\n\\nTipp :\\nadjusting \\\"scale\\\" and \\\"u_scale\\\":\\nbe carefull when scaling up the card!!! from the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. So as a good practice leave your \\\"grid\\\" not too big it will not matter for final calculation since it still will lay on the same plane.\\n\\n\\n---------------------------------------------------\\nStep 4\\n\\nButton \\\"Go\\\"  will create for you few nodes\\n\\n1. NST_CProject - basically it is a cornerPin node with steroids it allowes to you very easy set Reference point for your \\\"projection\\\", stabilize, crop. all in one\\n2. CornerPin with a transformation baked in the \\\"matrix\\\" knob - usually i am using it to copy to GridWarp or SplineWarp\\n3. Roto - the node i am using the most.\\nthe transformation is baked into the root matrix.\\nso just pick the frame create the rotoshape and enjoy!\\n\"}\n addUserKnob {26 credits l \"\" +STARTLINE T \"CardToTrack  v4.0  ||  by Alexey Kuchinski  |  lamakaha@gmail.com  |  7/2017\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x546b3d01\n  note_font \"Helvetica Bold\"\n  note_font_size 100\n  xpos -1719\n  ypos 977\n  bookmark false\n  bdwidth 287\n  bdheight 334\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xffffffff\n  label \"<b>Mark Joey Tang Deep2VP                .\"\n  note_font \"Helvetica Bold\"\n  note_font_size 20\n  xpos -1719\n  ypos 939\n }\n Input {\n  inputs 0\n  name Extra\n  xpos -1449\n  ypos -791\n  number 2\n }\n Dot {\n  name Dot11\n  xpos -1415\n  ypos 566\n }\nset Nd0813800 [stack 0]\n Dot {\n  name Dot12\n  xpos -1415\n  ypos 673\n }\nset Nd0813400 [stack 0]\n Dot {\n  name Dot7\n  xpos -1415\n  ypos 726\n }\nset Nd0813000 [stack 0]\n Dot {\n  name Dot31\n  xpos -1675\n  ypos 726\n }\n DeepExpression {\n  chans0 rgb\n  chans1 none\n  rgba.red \"( ( x/\\[value input.width] ) - 0.5 ) * \\[value hratio] * deep.front )\"\n  rgba.green \"( ( y/\\[value input.height] ) - 0.5 ) * ( ( \\[value hratio]*deep.front ) / ( \\[value input.width]/\\[value input.height] ) )\"\n  rgba.blue -deep.front\n  name DeepExpression6\n  label \"initial setup\"\n  xpos -1709\n  ypos 1086\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"\\[value cam_data.haperture] / \\[value cam_data.focal]\"}}\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"(r * \\[value cam_data.world_matrix.0] + g * \\[value cam_data.world_matrix.1] + b * \\[value cam_data.world_matrix.2]) + \\[value cam_data.world_matrix.3]\"\n  rgba.green \"(r * \\[value cam_data.world_matrix.4] + g * \\[value cam_data.world_matrix.5] + b * \\[value cam_data.world_matrix.6]) + \\[value cam_data.world_matrix.7]\"\n  rgba.blue \"(r * \\[value cam_data.world_matrix.8] + g * \\[value cam_data.world_matrix.9] + b * \\[value cam_data.world_matrix.10]) + \\[value cam_data.world_matrix.11]\"\n  name deepCT_00\n  label camera\n  xpos -1709\n  ypos 1172\n  addUserKnob {20 User}\n }\n DeepToImage {\n  name DeepToImage3\n  xpos -1709\n  ypos 1236\n }\n Dot {\n  name Dot26\n  xpos -1675\n  ypos 1840\n }\npush $Nd0813000\n Dot {\n  name Dot9\n  xpos -1415\n  ypos 1731\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -624\n  ypos 760\n  number 1\n }\nset Nd0810c00 [stack 0]\npush $Nd0813800\n Axis {\n  inputs 0\n  translate {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].translate.0]\\}]\" x1112 -519.8007202} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].translate.1]\\}]\" x1112 197.4966736} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].translate.2]\\}]\" x1112 -128.6857147}}\n  rotate {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].rotate.0]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].rotate.1]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].rotate.2]\\}]\"}}\n  name Axis1\n  xpos -805\n  ypos 40\n }\n ColorBars {\n  inputs 0\n  name ColorBars1\n  xpos -976\n  ypos -130\n }\n Card2 {\n  rows 4\n  columns 4\n  z 10\n  lens_in_focal {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].focal]\\}]\"}}\n  lens_in_haperture {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].haperture]\\}]\"}}\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card2\n  xpos -976\n  ypos -3\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo2\n  xpos -976\n  ypos 60\n }\n Switch {\n  inputs 2\n  which {{parent.extraHelper==1?1:0}}\n  name GeoInput\n  xpos -976\n  ypos 563\n }\n Input {\n  inputs 0\n  name BG\n  xpos 800\n  ypos -858\n }\n Dot {\n  name Dot4\n  xpos 834\n  ypos -788\n }\nset Nd07e3000 [stack 0]\n Dot {\n  name Dot5\n  xpos -1122\n  ypos -788\n }\n Dot {\n  name Dot6\n  xpos -1119\n  ypos 911\n }\n ScanlineRender {\n  inputs 3\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel rgb\n  name ScanlineRender2\n  xpos -976\n  ypos 907\n }\n Switch {\n  inputs 2\n  which {{parent.extraHelper==2?1:0}}\n  name WpasRender\n  xpos -976\n  ypos 1728\n }\n Switch {\n  inputs 2\n  which {{parent.extraHelper==5?1:0}}\n  name deepInput\n  note_font_size 14\n  xpos -976\n  ypos 1836\n }\n NoOp {\n  name NoOp1\n  tile_color 0xffff\n  gl_color 0xffff\n  xpos -976\n  ypos 2323\n  addUserKnob {20 User}\n  addUserKnob {22 pick T \"a=nuke.toNode(\\\"NoOp1\\\")\\nr=nuke.sample(a,\\\"red\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\ng=nuke.sample(a,\\\"green\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\nb=nuke.sample(a,\\\"blue\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\n#nuke.tprint(r)\\nnuke.toNode('look_at_Axis')\\['translate'].setValue(\\[r,g,b])\" +STARTLINE}\n  addUserKnob {12 picker}\n  picker {10 10}\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -125\n  ypos 2323\n }\npush $Nd0810c00\n FrameHold {\n  first_frame 1058\n  name StabFrameHold\n  xpos -624\n  ypos 1121\n  disable true\n }\nset Nd07a0800 [stack 0]\npush $Nd0810c00\n Axis {\n  name Axis3\n  xpos -500\n  ypos 817\n }\n Dot {\n  name Dot10\n  xpos -476\n  ypos 900\n }\n Card2 {\n  inputs 0\n  display wireframe\n  render_mode off\n  image_aspect false\n  rows 1\n  columns 1\n  uniform_scale 600\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card3\n  tile_color 0xff00ff\n  gl_color 0xff00ff\n  xpos -375\n  ypos 819\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo3\n  tile_color 0xff00ff\n  gl_color 0xff00ff\n  xpos -375\n  ypos 896\n }\n Dot {\n  name Dot20\n  xpos -341\n  ypos 983\n }\npush $Nd0813000\n Constant {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Constant2\n  tile_color 0xff\n  xpos -239\n  ypos -627\n  postage_stamp false\n }\nset Nd07e0400 [stack 0]\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {1 0 0 1}\n  name Wireframe4\n  xpos -642\n  ypos -416\n }\nset Nd073fc00 [stack 0]\n Card2 {\n  display wireframe\n  image_aspect false\n  rows 1\n  columns 1\n  translate {0.5 -0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card9\n  xpos -891\n  ypos -370\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot19\n  xpos -857\n  ypos -260\n }\npush $Nd073fc00\n Card2 {\n  display wireframe\n  image_aspect false\n  rows 1\n  columns 1\n  translate {0.5 0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card8\n  xpos -806\n  ypos -367\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot18\n  xpos -772\n  ypos -286\n }\npush $Nd073fc00\n Card2 {\n  display wireframe\n  image_aspect false\n  rows 1\n  columns 1\n  translate {-0.5 -0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card7\n  xpos -724\n  ypos -367\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot17\n  xpos -690\n  ypos -312\n }\npush $Nd073fc00\n Card2 {\n  display wireframe\n  image_aspect false\n  rows 1\n  columns 1\n  translate {-0.5 0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card6\n  xpos -642\n  ypos -373\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo5\n  xpos -642\n  ypos -316\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo6\n  xpos -642\n  ypos -290\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo7\n  xpos -642\n  ypos -264\n }\n Dot {\n  name Dot16\n  xpos -608\n  ypos -187\n }\npush $Nd07e0400\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {0 1 0 1}\n  name Wireframe5\n  xpos -495\n  ypos -441\n }\n Card2 {\n  display wireframe\n  cast_shadow false\n  receive_shadow false\n  image_aspect false\n  rows 2\n  columns 2\n  uniform_scale 100\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card5\n  xpos -495\n  ypos -371\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot15\n  xpos -461\n  ypos -307\n }\npush $Nd07e0400\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {1 0 1 1}\n  name Wireframe3\n  xpos -352\n  ypos -421\n }\n Card2 {\n  display wireframe\n  rows 2\n  columns 2\n  translate {0 0 -0.0001}\n  uniform_scale 0.1\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card4\n  xpos -352\n  ypos -379\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot14\n  xpos -318\n  ypos -333\n }\npush $Nd07e0400\n Wireframe {\n  operation \"see through\"\n  line_width 0.1\n  name Wireframe2\n  xpos -239\n  ypos -425\n }\n Card2 {\n  display wireframe\n  rows 4\n  columns 4\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card1\n  xpos -232\n  ypos -372\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo2\n  xpos -232\n  ypos -337\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo3\n  xpos -232\n  ypos -311\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo4\n  xpos -232\n  ypos -191\n }\nset Nb88de000 [stack 0]\n TransformGeo {\n  inputs 2\n  name TransformGeo5\n  xpos -715\n  ypos 722\n }\n Wireframe {\n  inputs 0\n  operation \"see through\"\n  line_width 2\n  name Wireframe1\n  xpos -713\n  ypos 433\n }\nset Nb88dd800 [stack 0]\npush $Nd0813400\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial2\n  xpos -585\n  ypos 669\n }\npush $Nb88dd800\npush $Nd0813400\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -808\n  ypos 519\n }\npush 0\n Switch {\n  inputs 2\n  which {{parent.extraHelper==1?1:0}}\n  name GeoInput1\n  xpos -470\n  ypos 640\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  scaling {0 0 0}\n  name Perspective\n  selected true\n  xpos -610\n  ypos 7\n }\n Axis {\n  inputs 0\n  translate {-23.31071663 15.68824577 -22.73529816}\n  rotate {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return degrees(atan((\\[topnode input1].translate.y(ref)-translate.y)/sqrt(pow2(sqrt(pow2(\\[topnode input1].translate.x(ref)-translate.x)+pow2(\\[topnode input1].translate.z(ref)-translate.z))))))\\}]        \"} {\"\\[topnode input1].translate.x(ref)-translate.x >= 0 ? 270-degrees(atan((\\[topnode input1].translate.z(ref)-translate.z)/(\\[topnode input1].translate.x(ref)-translate.x))): -degrees(atan((\\[topnode input1].translate.z(ref)-translate.z)/(\\[topnode input1].translate.x(ref)-translate.x)))-270\"} {\"curve  \"}}\n  name look_at_Axis\n  xpos -500\n  ypos -146\n  addUserKnob {20 User}\n  addUserKnob {3 ref}\n  ref {{parent.refFrame}}\n }\n Axis2 {\n  inputs 0\n  name Axis2\n  xpos -362\n  ypos -150\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1]\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -510\n  ypos -52\n }\n Axis {\n  display solid+wireframe\n  translate {0 0 {parent.Zfind}}\n  uniform_scale {{parent.Perspective.uniform_scale}}\n  name Z_finder\n  xpos -497\n  ypos 14\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch\n  label \"\\[value which]\"\n  xpos -507\n  ypos 126\n }\n Dot {\n  name Dot1\n  xpos -473\n  ypos 222\n }\nset Nb8847400 [stack 0]\npush $Nb88de000\npush 0\n Switch {\n  inputs 2\n  which 1\n  name Switch1\n  label \"\\[value which]\"\n  xpos -232\n  ypos 138\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo1\n  xpos -231\n  ypos 218\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo1\n  xpos -231\n  ypos 640\n }\n Switch {\n  inputs 3\n  which {{parent.extraHelper==3?1:parent.extraHelper==4?2:0}}\n  name AnimCard\n  xpos -231\n  ypos 722\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo8\n  xpos -231\n  ypos 979\n }\npush $Nd07a0800\npush $Nb8847400\n Dot {\n  name Dot8\n  xpos -470\n  ypos 583\n }\npush $Nd0810c00\npush $Nd07e3000\n Dot {\n  name Dot21\n  xpos 834\n  ypos 764\n }\nset Nb8846000 [stack 0]\n Project3D {\n  inputs 2\n  crop false\n  name Project3D1\n  xpos 550\n  ypos 760\n }\n Card2 {\n  display wireframe\n  rows 4\n  columns 4\n  uniform_scale 100000\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card10\n  xpos 554\n  ypos 950\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo4\n  xpos 554\n  ypos 993\n }\npush $Nb8846000\n Dot {\n  name Dot22\n  xpos 834\n  ypos 1035\n }\nset Nb8845000 [stack 0]\n Remove {\n  name Remove2\n  xpos 653\n  ypos 1025\n }\n ScanlineRender {\n  inputs 3\n  shutter 0\n  motion_vectors_type distance\n  name ScanlineRender3\n  xpos 554\n  ypos 1127\n }\npush $Nb8845000\n Switch {\n  inputs 2\n  which 1\n  name StabSwitch\n  label \"\\[value which]\"\n  xpos 800\n  ypos 1121\n  disable true\n }\n Dot {\n  name Dot2\n  xpos 834\n  ypos 1510\n }\n Dot {\n  name Dot3\n  xpos 834\n  ypos 1582\n }\nset Nb87bfc00 [stack 0]\n Remove {\n  name Remove1\n  xpos 154\n  ypos 1578\n }\n ScanlineRender {\n  inputs 3\n  shutter 0\n  motion_vectors_type distance\n  name ScanlineRender1\n  xpos -235\n  ypos 1584\n }\n HueShift {\n  name HueShift1\n  xpos -235\n  ypos 1702\n }\n Multiply {\n  channels rgba\n  value {{parent.op}}\n  name Multiply1\n  xpos -235\n  ypos 1728\n }\npush $Nb87bfc00\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos 113\n  ypos 1808\n  disable {{HighPass}}\n }\n Merge2 {\n  inputs 2\n  mix 0.001\n  name Merge1\n  xpos 113\n  ypos 2323\n }\n Dot {\n  name Dot29\n  xpos 144\n  ypos 2459\n }\nset Nb87be000 [stack 0]\n Dot {\n  name Dot13\n  xpos 21\n  ypos 2459\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  tile_color 0xffffffff\n  label \"White Alpha\"\n  xpos -13\n  ypos 2511\n }\n Dot {\n  name Dot23\n  xpos 21\n  ypos 2562\n }\nset Nb87bd400 [stack 0]\n Dot {\n  name Dot27\n  xpos -123\n  ypos 2562\n }\n Invert {\n  channels rgba\n  name Invert1\n  xpos -157\n  ypos 2593\n }\n FrameHold {\n  name StabRef\n  xpos -157\n  ypos 2631\n }\n Dot {\n  name Dot28\n  xpos -123\n  ypos 2698\n }\npush $Nb87bd400\n Merge2 {\n  inputs 2\n  bbox A\n  name Merge3\n  xpos -13\n  ypos 2694\n }\n Grade {\n  add -1\n  black_clamp false\n  name Grade1\n  xpos -13\n  ypos 2720\n  addUserKnob {20 User}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_1\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_2\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_3\" l \"keep luma\" -STARTLINE T keepLuma()}\n }\n Grade {\n  multiply {{parent.sharpen}}\n  add 0.5\n  name Grade2\n  xpos -13\n  ypos 2746\n  addUserKnob {20 User}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_1\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_2\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_3\" l \"keep luma\" -STARTLINE T keepLuma()}\n }\n Dot {\n  name Dot30\n  xpos 21\n  ypos 2825\n }\npush $Nb87be000\n Switch {\n  inputs 2\n  which {{HighPass}}\n  name HighPass\n  label \"\\[value which]\"\n  xpos 110\n  ypos 2815\n }\n Output {\n  name Output1\n  xpos 110\n  ypos 3021\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  xform_order {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].cam_xform_order]\\}]\"}}\n  rot_order {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].cam_rot_order]\\}]\"}}\n  useMatrix true\n  matrix {\n      {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.0]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.1]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.2]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.3]\\}]\"}}\n      {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.4]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.5]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.6]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.7]\\}]\"}}\n      {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.8]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.9]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.10]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.11]\\}]\"}}\n      {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.12]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.13]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.14]\\}]\"} {\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].world_matrix.15]\\}]\"}}\n    }\n  focal {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].focal]\\}]\"}}\n  haperture {{\"\\[if \\{\\[exists parent.input1] == 0\\} \\{return 0\\} else \\{return \\[value \\[topnode this.parent.input1].haperture]\\}]\"}}\n  name cam_data\n  xpos -1567\n  ypos 1072\n }\n NoOp {\n  inputs 0\n  name NoOp2\n  knobChanged \"nn = nuke.thisGroup()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"extraStuff\\\":\\n    if nn\\['extraHelper'].value() in \\[0,1,2,5]:\\n        nn\\[\\\"setGroup\\\"].clearFlag(1)\\n        nn\\['findZ'].setFlag(1)\\n        nn\\[\\\"happyGroup\\\"].setFlag(1)\\n        nn\\[\\\"goGroup\\\"].setFlag(1)\\n        nn\\[\\\"Zfind\\\"].setValue(0)\\n        nn\\['translate'].setValue(0)\\n        nn\\['rotate'].setValue(0)\\n        nn\\['scaling'].setValue(0)\\n    elif nn\\['extraHelper'].value() in \\[3,4]:\\n        nn\\[\\\"setGroup\\\"].setFlag(1)\\n        nn\\['findZ'].setFlag(1)\\n        nn\\[\\\"happyGroup\\\"].setFlag(1)\\n        nn\\[\\\"goGroup\\\"].clearFlag(1)\\n        nn\\[\\\"Zfind\\\"].setValue(0)\\nelif kn == \\\"Stabilize\\\":\\n    t = nn\\['S']\\n    if t.value() == 0:\\n        nn\\['HighPass'].setVisible(False)\\n        nn\\['sharpen'].setVisible(False)\\n    else:\\n        nn\\['HighPass'].setVisible(True)\\n        nn\\['sharpen'].setVisible(True)\\n    \"\n  xpos 479\n  ypos -605\n  addUserKnob {20 User}\n  addUserKnob {4 extraStuff t \"here you can choose the way you would like find your position\\n\\n1 I have a Camera and great Matchmove\\n   means you have only a tracked Camera - you will have to go normal way in finding position\\n\\n2  I have a Camera and Geometry\\n   see little input called \\\"Extra\\\"? this is your new friend, if you have by any chance a geometry of the Scene - can be a model, lidar scan or just a bunch Nuke objects, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n3  I have a Camera and Wpos pass\\n    if your nice 3D Artist rendered for you a Wpos pass, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n4  I have a Camera and Card\\n    Let say you have animated Card and you want to translate it's position to Screen space,\\n     connect the Card to the .... \\n    Adjust rotation/position/scaling  in the Card it self if needed\\n     and press \\\"GO\\\" button\\n    DONE!!!\\n\\n5 I have a Camera and an Axis\\n    In some cases you have to use multiple Axises to refine position of your card.\\n    This option will consolidate transformations stored in Axises.\\n    Adjust rotation/position/scaling  in the Axis it self if needed\\n    Connect the last (lowest) axis to Extra pipe and press GO button\\n\\n6 Use this one in case you have deep image.\" M {\"great match move!!!\" Geometry \"Wpos pass\" Card Axis Deep \"\"}}\n  addUserKnob {3 extraHelper}\n  extraHelper {{\"\\[numvalue extraStuff]\"}}\n  addUserKnob {22 Stabilize T \"import NST_cardToTrack\\nNST_cardToTrack.stabilize()\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CardToTrack2.gizmo",
    "content": "Group {\n name CardToTrack_v9_\n inputs 3\n help \"This group helps to find position of 3d point in space, extract this position back to screen space and create Cornerpin or roto that is tracked to this position.\"\n tile_color 0x5236ff\n gl_color 0xff0000ff\n note_font \"DejaVu Sans\"\n note_font_size 14\n note_font_color 0xff\n addUserKnob {20 card_to_track l \"Card To Track\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 extras l \"\" t \"tooltip is in next knob :)\" +STARTLINE T \"I have a Camera and\"}\n addUserKnob {41 _1 l \"\" t \"Here you can choose the way you would like to extract the positoin.\\n(do not forget to undistort your input)\\n\\n> I have a Camera and great Matchmove\\n   Means you have only a tracked Camera:\\n   - Set a reference frame - move the 'picker' to area you want to extract position from, \\n   - pres 'Set' Button\\n   - Move to different frame and move 'z' knob value till grid is moving back to same location you had in a Reference frame\\n   - Use Stabilize and Highpass function to be presize\\n   - Press 'Happy' button\\n   - Adjust the Rotation, Position and Scale of your card if needed\\n   - Press 'Go'\\n\\n>  I have a Camera and Geometry\\n    - connect geometry to the \\\"Extra\\\" input.\\n    - move the 'picker' to area you want to extract position from, pres 'Set'\\n    - Adjust the Rotation, Position and Scale of your card if needed\\n    - Press 'Go'\\n\\n>  I have a Camera and Wpos pass\\n    If nice 3D Artist rendered for you a World position pass, connect it to the \\\"Extra\\\" input (world position should be shuffled to RGB)\\n    - move the 'picker' to area you want to extract position from, pres 'Set'\\n    - Adjust the Rotation, Position and Scale of your card if needed\\n    - Press 'Go'\\n\\n>  I have a Camera ande a 3D Locator(card or axis)\\n    Let say you have animated Card, an Axis or an array of Axises\\n    - connect an Axis or Card to the \\\"Extra\\\" input.\\n    - Press 'Go'\\n    (you can add additional Axis between your animated Axis and card_to_track if you would like to refine your position or rotation)\\n\\n>  I have a Camera and Deep\\n    If you do have a Deep render, connect it to the \\\"Extra\\\" input.\\n    - move the 'picker' to area you want to extract position from, pres 'Set'\\n    - Adjust the Rotation, Position and Scale of your card if needed\\n    - Press 'Go'\\n    \\n    DONE!!!\" -STARTLINE T NoOp2.extraStuff}\n addUserKnob {41 extraHelper l \"\" -STARTLINE +INVISIBLE T NoOp2.extraHelper}\n addUserKnob {26 \"\"}\n addUserKnob {20 setGroup l \"set Reference\" n 1}\n addUserKnob {26 ds l <b>1. t \"first step in finding desired position.\\n\\nplease find some feature on the screen, feature you can see on the other frames as well.\\nnot position the picker on this feature and press \\\"Set\\\" button\\n\\nthe reference frame is set, yo should see now the grid centering on the \\\"picker\\\"\\n\\nthere is a chance that \\\"grid\\\" will be very small or very big depends on the size of your scene, feel free to adjust it's size with the u_scale knob.\\n\\nnow you ready for the next step\" T \"Set reference frame.\"}\n addUserKnob {22 REF l Set t \"- Please find some feature on the screen, feature you can see on the other frames as well.\\n- Move position the 'picker' to this feature and press \\\"Set\\\" button, \\n    you will see a grid is jumping to this location.\\n    We found 'XY' of the point, now lets find the 'Z' in a next step\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.set_ref_frame()\" +STARTLINE}\n addUserKnob {6 S l INVISIBLE -STARTLINE +INVISIBLE}\n addUserKnob {3 refFrame l \"   reference frame:\" -STARTLINE}\n refFrame 49\n addUserKnob {41 picker l \"     \" -STARTLINE T NoOp1.picker}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 findZ l \"Find Z\" n 1}\n findZ 0\n addUserKnob {26 d l \"<b>2. \" t \"Second step help us to find exact position in 3d space\\n\\n    - Start advance few frames, you should see that a grid is not fixed anymore to your reference feature \\n    - From the moment you noticing it is happening adjust \\\"Z\\\" knob to bring the \\\"grid\\\" back to the place it was. \\n    - Already after first adjustment you will see that grid is sticking well to the feature. \\n    - Now you can go to some other frame and refine the position again if needed\\n    - If camera move is a nodal pan - you will nail it from very beginning.\\n\\nTipp:\\nit is possible that already after one or two frames of advancement your grid will disappear it can happen because of the size of your scene. just play with \\\"Z\\\" slider till you will bring the \\\"grid\\\" back to the screen. it is possible that you will have to go to negative values as well.\" T \"go to some other frame and adjust Z. Use stabilize if needed.\"}\n addUserKnob {41 Stabilize -STARTLINE T NoOp2.Stabilize}\n addUserKnob {6 HighPass -STARTLINE +HIDDEN}\n addUserKnob {7 sharpen l \"\" -STARTLINE +HIDDEN R 1 10}\n sharpen 2\n addUserKnob {7 Zfind l Z t \"Second step help us to find exact position in 3d space\\n\\n    - Start advance few frames, you should see that a grid is not fixed anymore to your reference feature \\n    - From the moment you noticing it is happening adjust \\\"Z\\\" knob to bring the \\\"grid\\\" back to the place it was. \\n    - Already after first adjustment you will see that grid is sticking well to the feature. \\n    - Now you can go to some other frame and refine the position again if needed\\n    - If camera move is a nodal pan - you will nail it from very beginning.\\n\\nTipp:\\nit is possible that already after one or two frames of advancement your grid will disappear it can happen because of the size of your scene. just play with \\\"Z\\\" slider till you will bring the \\\"grid\\\" back to the screen. it is possible that you will have to go to negative values as well.\" R -100 100}\n Zfind -10.5\n addUserKnob {26 s l <b>3. t \"this will create an axis in exact 3D position you found\\nplease adjust (if needed)\\nrotation of the card to match exact perspective you want\\n\\nTipp :\\nadjusting \\\"scale\\\" and \\\"u_scale\\\":\\nbe carefull when scaling up the card!!! from the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. So as a good practice leave your \\\"grid\\\" not too big it will not matter for final calculation since it still will lay on the same plane.\\n\\n\" T \"Happy with Z? Press \\\"Happy\\\" button and adjust perspective.\"}\n addUserKnob {22 Adjust l Happy!!! t \"This will position a Grid in exact 3D position you found\\nplease adjust (if needed) Position, Scale and Rotation of the Grid to match exact perspective you want.\\n\\nTipp :\\nAdjusting \\\"scale\\\" and \\\"u_scale\\\":\\n    - Be carefull when scaling up the card!!! From the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. \\n        So as a good practice leave your \\\"grid\\\" not too big.\\n    - You do not want your grid to be too small neither as it will introduce polsition error.\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.happy()\" +STARTLINE}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 happyGroup l \"Adjust TRS\" t \"\\nPlease adjust (if needed) Position, Scale and Rotation of the Grid to match exact perspective you want.\\n\\nTipp :\\nAdjusting \\\"scale\\\" and \\\"u_scale\\\":\\n    - Be carefull when scaling up the card!!! From the moment one of the corners of the \\\"grid\\\" is passing the origin of the Camera the calculation will fail. \\n        So as a good practice leave your \\\"grid\\\" not too big.\\n    - You do not want your grid to be too small neither as it will introduce polsition error.\" n 1}\n happyGroup 0\n addUserKnob {41 translate T Perspective.translate}\n addUserKnob {41 Stabilize_1 l Stabilize -STARTLINE T NoOp2.Stabilize}\n addUserKnob {6 HighPass_1 l HighPass -STARTLINE +HIDDEN}\n addUserKnob {41 rotate l \"rotate    \" T Perspective.rotate}\n addUserKnob {22 show_axis l \"show axis\" t \"show grid Axis if it is gone\" -STARTLINE T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.show_grid_axis()\"}\n addUserKnob {41 scaling l \"scale     \" T Perspective.scaling}\n addUserKnob {41 uniform_scale l \"u_scale \" T Perspective.uniform_scale}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 goGroup l GO!!! n 1}\n goGroup 0\n addUserKnob {22 C2T l <b>-----------------------GO!----------------------- t \"This little fellow will create a new Tab with extracted information\\n    - panel will pop up prompting\\n        - name for extracted material\\n        - Reference Frame - will be a current frame by default, \\n            you easily can change it later on.\\n        - First and Last frame of the extraction. \\n            By default it will take first and last frame of Animation of Camera or animated Axis.\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.go()\" +STARTLINE}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 cameraExchange l \"Camera Recalculate and Update Nodes\" t \"Sometimes camera is getting updated after you already\\nextracted nodes and using them in the nodegraph.\\nThis workflow will help you to recalculate camera information\\nand update your nodes in the script.\\nOne more case to use recalculate camera option is when you have few shots \\nin the same matchmoved scene - you can set up a template for multiple\\nareas in the scene and in every new shot just recalculate position.\" n 1}\n cameraExchange 0\n addUserKnob {22 recalculate l \"Recalculate Camera\" t \"First connect updated Camera please.\\nPressing the button will update tracking information\\nin all Tabs of the card_to_track\\nNo baked nodes in the nodegraph will be updated.\\nAll Linked nodes will update their position.\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.recalculate_camera()\" +STARTLINE}\n addUserKnob {22 selectBaked l \"Select associated nodes\" t \"This will select all nodes associated with this card_to_track Gizmo.\\nIf you have few Card To Track Gizmos in the script - only nodes created by this gizmo will be selected. Be sure you do not change the name of this node.\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.select_associated_nodes()\\n\" +STARTLINE}\n addUserKnob {22 updateBaked l \"Updated Selected Nodes\" t \"This will update all selected baked nodes in nodegraph to get animation from new camera.\\n\\nIf you do want some of the nodes to not get updated - deselect them before Pressing the button.\" T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.update_baked()\" +STARTLINE}\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 scene_settings l \"grid settings\" n 1}\n scene_settings 0\n addUserKnob {3 scene l \"      scene size\" t \"the tool does not know how big your scene is, if after adjusting \\\"Z\\\" slider you see that the card you generating is too big or too small - adjust the scene size.\\n\\nyou not going to see something changing till you will press \\\"Set\\\" button again\\n\\nif you do happy you can leave this knob alone there will be no need to touch it again\\n\\njust remember the value so you will be able to enter it when you will be work on the other shots from the same sequence\\n\\ncheers!\"}\n scene 1\n addUserKnob {41 hue_rotation l hue T HueShift1.hue_rotation}\n addUserKnob {41 line_width l thikness T Wireframe2.line_width}\n addUserKnob {7 op l opacity}\n op 1\n addUserKnob {3 grid_sub l subdivisions}\n grid_sub 4\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 text l \"\" +STARTLINE T \" &copy; Alexey Kuchinski. 2025<span style=\\\\\\\"color:#666\\\\\\\"><br/><b>Card To Track v9.6</b> - <a href=\\\\\\\"https://youtu.be/xjzkxVZkvXM\\\\\\\" style=\\\\\\\"color:#666;text-decoration: none;\\\\\\\">Help Videos</a></span>\\n\"}\n}\n BackdropNode {\n  inputs 0\n  name Backdrop_Main_Setup\n  tile_color 0x595947ff\n  label \"Main Setup - using look at frosen on reference\\nframe in order to find 'z' position of the \\npoint in space\"\n  note_font_size 40\n  xpos -1237\n  ypos -623\n  bdwidth 945\n  bdheight 776\n  z_order -29\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x546b3d01\n  note_font \"Helvetica Bold\"\n  note_font_size 100\n  xpos -3303\n  ypos 724\n  bookmark false\n  bdwidth 287\n  bdheight 334\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_Card_or_Axis_visualisation\n  tile_color 0x59474dff\n  label \"Card or Axis visualisation\"\n  note_font_size 40\n  xpos 263\n  ypos -79\n  bdwidth 483\n  bdheight 699\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_High_pass_setup\n  tile_color 0x594753ff\n  label \"High pass setup\"\n  note_font_size 40\n  xpos 483\n  ypos 2776\n  bdwidth 447\n  bdheight 533\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_INPUTS\n  tile_color 0x59474aff\n  label INPUTS\n  note_font_size 40\n  xpos 1275\n  ypos -1329\n  bdwidth 677\n  bdheight 220\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_NoOp_controller\n  tile_color 0x475956ff\n  label \"NoOp controller\"\n  note_font_size 40\n  xpos 824\n  ypos -1329\n  bdwidth 340\n  bdheight 209\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_Stabilization_setup\n  tile_color 0x594750ff\n  label \"Stabilization setup\"\n  note_font_size 40\n  xpos 300\n  ypos 653\n  bdwidth 450\n  bdheight 566\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_World_Position_from_Card\n  tile_color 0x4a5947ff\n  label \"World Position from Card\\nor Geometry.\"\n  note_font_size 40\n  xpos -2697\n  ypos 253\n  bdwidth 481\n  bdheight 565\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_World_Position_from_Render\n  tile_color 0x475259ff\n  label \"World Position \\nfrom Render\"\n  note_font_size 40\n  xpos -2150\n  ypos 792\n  bdwidth 319\n  bdheight 219\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_main_GRID\n  tile_color 0x594b47ff\n  label \"main GRID\"\n  note_font_size 40\n  xpos -941\n  ypos -1613\n  bdwidth 839\n  bdheight 664\n  z_order 3\n }\n BackdropNode {\n  inputs 0\n  name Backdrop_prepare_to_reconsile\n  tile_color 0x594758ff\n  label \"this is a setup that serve as a base \\nfor our reconcile process. we do 'reconcile3d' \\nfrom four axices in bottom part\\nof the backdrop\"\n  note_font_size 40\n  xpos 2037\n  ypos -1352\n  bdwidth 671\n  bdheight 643\n  z_order 3\n }\n Input {\n  inputs 0\n  name Extra\n  xpos 1305\n  ypos -1230\n  number 2\n }\n NoOp {\n  name Anchor1\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0xffffff01\n  note_font_size 20\n  xpos 1305\n  ypos -1186\n  addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n  addUserKnob {1 title l Title}\n  title Extra\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Extra}\n }\nset N2deb95d0 [stack 0]\n NoOp {\n  name StampAboveDeep\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -3267\n  ypos 769\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Extra\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Extra}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor1\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n DeepExpression {\n  chans0 rgb\n  chans1 none\n  rgba.red \"( ( x/\\[value input.width] ) - 0.5 ) * \\[value hratio] * deep.front )\"\n  rgba.green \"( ( y/\\[value input.height] ) - 0.5 ) * ( ( \\[value hratio]*deep.front ) / ( \\[value input.width]/\\[value input.height] ) )\"\n  rgba.blue -deep.front\n  name DeepExpressionTopNode\n  label \"initial setup\"\n  xpos -3267\n  ypos 837\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"\\[value DummyCam.haperture] / \\[value DummyCam.focal]\"}}\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"(r * \\[value DummyCam.world_matrix.0] + g * \\[value DummyCam.world_matrix.1] + b * \\[value DummyCam.world_matrix.2]) + \\[value DummyCam.world_matrix.3]\"\n  rgba.green \"(r * \\[value DummyCam.world_matrix.4] + g * \\[value DummyCam.world_matrix.5] + b * \\[value DummyCam.world_matrix.6]) + \\[value DummyCam.world_matrix.7]\"\n  rgba.blue \"(r * \\[value DummyCam.world_matrix.8] + g * \\[value DummyCam.world_matrix.9] + b * \\[value DummyCam.world_matrix.10]) + \\[value DummyCam.world_matrix.11]\"\n  name deepCT_00\n  label camera\n  xpos -3267\n  ypos 923\n  addUserKnob {20 User}\n }\n DeepToImage {\n  name DeepToImage3\n  xpos -3267\n  ypos 987\n }\n Dot {\n  name Dot26\n  xpos -3233\n  ypos 1119\n }\npush $N2deb95d0\n NoOp {\n  name Stamp2\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -2059\n  ypos 920\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Extra\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Extra}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor1\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Dot {\n  name Dot4\n  xpos -2025\n  ypos 1119\n }\n Input {\n  inputs 0\n  name Camera\n  xpos 1542\n  ypos -1227\n  number 1\n }\nset N33cd6dc0 [stack 0]\n NoOp {\n  name Anchor3\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0xffffff01\n  note_font_size 20\n  xpos 1542\n  ypos -1181\n  addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n }\nset N33cfd4c0 [stack 0]\n NoOp {\n  name Stamp9\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -2364\n  ypos 731\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\npush $N2deb95d0\n NoOp {\n  name Stamp1\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -2647\n  ypos 655\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Extra\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Extra}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor1\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\npush $N33cfd4c0\n NoOp {\n  name Stamp10\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -2650\n  ypos 529\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Constant {\n  inputs 0\n  color 1\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Constant1\n  tile_color 0xff\n  xpos -2513\n  ypos 372\n  postage_stamp false\n }\n Card2 {\n  display off\n  selectable false\n  image_aspect false\n  rows 4\n  columns 4\n  z 10\n  lens_in_focal {{parent.DummyCam.focal}}\n  lens_in_haperture {{parent.DummyCam.haperture}}\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card2\n  xpos -2513\n  ypos 431\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -2513\n  ypos 534\n }\n Switch {\n  inputs 2\n  which {{parent.extraHelper==2?1:0}}\n  name GeoInput\n  label \"\\[value which]\\nswitch to pick up world\\nposition from the internal card\\nor from extra geometry if provided.\"\n  xpos -2513\n  ypos 636\n }\n Input {\n  inputs 0\n  name BG\n  xpos 1409\n  ypos -1231\n }\n NoOp {\n  name Anchor2\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0xffffff01\n  note_font_size 20\n  xpos 1409\n  ypos -1183\n  addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n  addUserKnob {1 title l Title}\n  title BG\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T BG}\n }\nset N33dafbb0 [stack 0]\n NoOp {\n  name Stamp4\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -2647\n  ypos 731\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title BG\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T BG}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor2\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n ScanlineRender {\n  inputs 3\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel rgb\n  name ScanlineRender2\n  xpos -2513\n  ypos 736\n }\n Switch {\n  inputs 3\n  which {{parent.extraHelper==3?1:parent.extraHelper==4?2:0}}\n  name WorldPositionSource\n  label \"\\[value which]\\nswitch is redirecting to pick up \\nposition values depending on the \\nchoicein the main dropdown\"\n  xpos -2513\n  ypos 1092\n }\n NoOp {\n  name NoOp1\n  tile_color 0xffff\n  gl_color 0xffff\n  label \"Picking World Position\"\n  note_font_size 16\n  xpos -2513\n  ypos 1268\n  addUserKnob {20 User}\n  addUserKnob {22 pick T \"a=nuke.toNode(\\\"NoOp1\\\")\\nr=nuke.sample(a,\\\"red\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\ng=nuke.sample(a,\\\"green\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\nb=nuke.sample(a,\\\"blue\\\",a\\['picker'].value(0),a\\['picker'].value(1),1,1)\\n#nuke.tprint(r)\\nnuke.toNode('look_at_Axis')\\['translate'].setValue(\\[r,g,b])\\n#nuke.toNode('Perspective')\\['translate'].setValue(\\[r,g,b])\" +STARTLINE}\n  addUserKnob {12 picker}\n  picker {928 500}\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -2513\n  ypos 1378\n }\n Dot {\n  name Dot5\n  xpos -2479\n  ypos 2406\n }\npush $N33cfd4c0\n NoOp {\n  name Stamp15\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 322\n  ypos 1082\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\nset N33ae9030 [stack 0]\npush $N33ae9030\n FrameHold {\n  firstFrame 49\n  name StabFrameHold\n  xpos 225\n  ypos 1138\n  disable true\n }\n set C33af12b0 [stack 0]\n Switch {\n  inputs 2\n  which {{parent.StabFrameHold.disable}}\n  name Switch4\n  xpos 361\n  ypos 1147\n }\n Axis {\n  inputs 0\n  translate {-4.458946705 10.26000023 -5.941508293}\n  uniform_scale 2\n  name Perspective\n  tile_color 0xff0000ff\n  label \"this is the center\\n of the Grid!!!\"\n  xpos -876\n  ypos -80\n }\npush $N33cfd4c0\n NoOp {\n  name Stamp12\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -707\n  ypos -411\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n FrameHold {\n  firstFrame {{parent.refFrame}}\n  name FrameHold2\n  xpos -707\n  ypos -360\n }\npush 0\n Axis2 {\n  inputs 2\n  display off\n  selectable false\n  translate {1.563220501 11.32060719 1.955564976}\n  name look_at_Axis\n  tile_color 0xff0000ff\n  xpos -697\n  ypos -268\n }\n Axis {\n  display off\n  selectable false\n  translate {0 0 {parent.Zfind}}\n  uniform_scale {{parent.Perspective.uniform_scale}}\n  name Z_finder\n  tile_color 0xff0000ff\n  xpos -697\n  ypos -177\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch\n  label \"\\[value which]\\nwill switch to Perspective Axis\\nafter 'Happy' button is pressed\"\n  xpos -708\n  ypos -77\n }\n NoOp {\n  name Anchor5\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0xffffff01\n  note_font_size 20\n  xpos -708\n  ypos 48\n  addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n  addUserKnob {1 title l Title}\n  title position_finder\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T position_finder}\n }\nset N33b628b0 [stack 0]\n NoOp {\n  name Stamp13\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 375\n  ypos 946\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title position_finder\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T position_finder}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor5\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Dot {\n  name Dot8\n  xpos 409\n  ypos 1038\n }\npush $N33cfd4c0\n NoOp {\n  name Stamp6\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 383\n  ypos 801\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\npush $N33dafbb0\n NoOp {\n  name Stamp5\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 502\n  ypos 751\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title BG\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T BG}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor2\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Project3D {\n  inputs 2\n  crop false\n  name Project3D1\n  xpos 502\n  ypos 812\n }\n Card2 {\n  display wireframe\n  selectable false\n  rows 4\n  columns 4\n  uniform_scale 100000\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card10\n  xpos 502\n  ypos 914\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo4\n  xpos 502\n  ypos 1035\n }\npush $N33dafbb0\n NoOp {\n  name Stamp16\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 620\n  ypos 1023\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title BG\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T BG}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor2\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Remove {\n  name Remove2\n  xpos 620\n  ypos 1069\n }\n ScanlineRender {\n  inputs 3\n  shutter 0\n  motion_vectors_type distance\n  name ScanlineRender3\n  xpos 502\n  ypos 1147\n }\n Dot {\n  name Dot1\n  xpos 536\n  ypos 1264\n }\npush $N33dafbb0\n NoOp {\n  name Stamp3\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 800\n  ypos 1150\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title BG\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T BG}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor2\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\n Switch {\n  inputs 2\n  which 1\n  name StabSwitch\n  label \"\\[value which]\"\n  xpos 800\n  ypos 1257\n  disable true\n }\n Dot {\n  name Dot3\n  xpos 834\n  ypos 1415\n }\nset N33c3c710 [stack 0]\npush $N33cfd4c0\n NoOp {\n  name Stamp7\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos -383\n  ypos 1317\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Camera\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Camera}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor3\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\nset N33c42d40 [stack 0]\npush $N33c42d40\nclone $C33af12b0 {\n  xpos -465\n  ypos 1372\n  selected false\n }\n Switch {\n  inputs 2\n  which {{parent.StabFrameHold.disable}}\n  name Switch3\n  xpos -383\n  ypos 1417\n }\npush $N33b628b0\n Constant {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Constant2\n  tile_color 0xff\n  xpos -235\n  ypos -1538\n  postage_stamp false\n }\n Dot {\n  name Dot9\n  xpos -201\n  ypos -1487\n }\nset N33c6cb60 [stack 0]\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {1 0 0 1}\n  name Wireframe4\n  xpos -642\n  ypos -1300\n }\nset N33e861f0 [stack 0]\n Card2 {\n  display wireframe\n  selectable false\n  image_aspect false\n  rows 1\n  columns 1\n  translate {0.5 -0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card9\n  xpos -891\n  ypos -1251\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot19\n  xpos -857\n  ypos -1140\n }\npush $N33e861f0\n Card2 {\n  display wireframe\n  selectable false\n  image_aspect false\n  rows 1\n  columns 1\n  translate {0.5 0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card8\n  xpos -806\n  ypos -1248\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot18\n  xpos -772\n  ypos -1166\n }\npush $N33e861f0\n Card2 {\n  display wireframe\n  selectable false\n  image_aspect false\n  rows 1\n  columns 1\n  translate {-0.5 -0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card7\n  xpos -724\n  ypos -1248\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot17\n  xpos -690\n  ypos -1192\n }\npush $N33e861f0\n Card2 {\n  display wireframe\n  selectable false\n  image_aspect false\n  rows 1\n  columns 1\n  translate {-0.5 0.5 0}\n  uniform_scale 0.03\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card6\n  xpos -642\n  ypos -1254\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo5\n  xpos -642\n  ypos -1196\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo6\n  xpos -642\n  ypos -1170\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo7\n  xpos -642\n  ypos -1144\n }\n Dot {\n  name Dot16\n  xpos -608\n  ypos -1067\n }\npush $N33c6cb60\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {0 1 0 1}\n  name Wireframe5\n  xpos -495\n  ypos -1305\n }\n Card2 {\n  display wireframe\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  image_aspect false\n  rows 2\n  columns 2\n  uniform_scale 100\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card5\n  xpos -495\n  ypos -1253\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot15\n  xpos -461\n  ypos -1187\n }\npush $N33c6cb60\n Wireframe {\n  operation \"see through\"\n  line_width 1\n  line_color {1 0 1 1}\n  name Wireframe3\n  xpos -352\n  ypos -1302\n }\n Card2 {\n  display wireframe\n  selectable false\n  image_aspect false\n  rows 2\n  columns 2\n  translate {0 0 -0.0001}\n  uniform_scale 0.1\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card4\n  xpos -352\n  ypos -1260\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n Dot {\n  name Dot14\n  xpos -318\n  ypos -1213\n }\npush $N33c6cb60\n Wireframe {\n  operation \"see through\"\n  line_width 0.1\n  name Wireframe2\n  xpos -235\n  ypos -1306\n }\n Card2 {\n  display wireframe\n  selectable false\n  rows {{parent.grid_sub}}\n  columns {{rows}}\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card1\n  xpos -232\n  ypos -1254\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo2\n  xpos -232\n  ypos -1217\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo3\n  xpos -232\n  ypos -1191\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo4\n  xpos -232\n  ypos -1070\n }\n Switch {\n  which {{parent.HighPass_1}}\n  name killGrid\n  label \"this switch will kill the visibility \\nof the grid when we are in \\nhighpass mode\"\n  xpos -232\n  ypos -531\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -231\n  ypos 52\n }\n Dot {\n  name Dot11\n  xpos -197\n  ypos 475\n }\nset N3413ed80 [stack 0]\n Dot {\n  name Dot12\n  xpos 100\n  ypos 473\n }\n Wireframe {\n  inputs 0\n  operation \"see through\"\n  line_width 1\n  line_color {1 0 1 1}\n  name Wireframe6\n  xpos 288\n  ypos 337\n }\npush $N2deb95d0\n NoOp {\n  name Stamp17\n  help \"Redone by Adrian Pueyo.\\nUpdated 29 Mar 2019\\n\\nFull original concept and \\\"Postage Stamps\\\" created by Alexey Kuchinski.\"\n  onCreate \"if nuke.GUI:\\n    try:\\n        nuke.thisNode().knob(\\\"toReconnect\\\").setValue(1)\\n    except:\\n        pass\\n\"\n  autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n  tile_color 0x1000001\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 20\n  xpos 503\n  ypos 3\n  hide_input true\n  addUserKnob {20 wired_tab l \"Wired Stamp\"}\n  addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n  addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n  toReconnect true\n  addUserKnob {1 title l Title}\n  title Extra\n  addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Extra}\n  addUserKnob {1 anchor l Anchor}\n  anchor Anchor1\n  addUserKnob {26 anchorLabel l \"Anchor Stamp\"}\n }\nset N34158510 [stack 0]\n Card2 {\n  inputs 0\n  image_aspect false\n  rows 4\n  columns 4\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card11\n  xpos 349\n  ypos 20\n  addUserKnob {20 User}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_1\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_1\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_1 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_2\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_2\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_2 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot_3\" l \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot_3\" l \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected_3 l snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n  addUserKnob {22 \"floor Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[0,0.5,0])\\nn\\['pivot'].setValue(\\[0,-0.5,0])\"}\n  addUserKnob {22 \"corner Pivot\" -STARTLINE T \"n=nuke.thisNode()\\nn\\['translate'].setValue(\\[-.5,.5,0])\\nn\\['pivot'].setValue(\\[.5,-.5,0])\"}\n  addUserKnob {22 snapToSelected -STARTLINE T \"b=nuke.selectedNode()\\['translate'].value()\\nn=nuke.thisNode()\\nn\\['translate'].setValue(b)\"}\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo6\n  label \"when we do use an axis as locator\\nthis will help us to \\nprevisualize the locator\"\n  xpos 349\n  ypos 94\n }\npush $N34158510\n Switch {\n  inputs 2\n  which {{\"\\[exists input2.world_matrix]?1:0\"}}\n  name SwitchCardAxis\n  label \"will switch depending if Card or \\nAxis is using as a locator.\"\n  xpos 503\n  ypos 188\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterialVisualisation\n  xpos 503\n  ypos 337\n }\n Dot {\n  name Dot2\n  xpos 537\n  ypos 558\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo9\n  label \"it will be enabled only when we are in \\ngeometry mode in order to give us\\ngrid overlay on top of geometry wireframe\"\n  xpos 66\n  ypos 537\n  disable {{parent.extraHelper==2?0:1}}\n }\npush $N3413ed80\n Switch {\n  inputs 2\n  which {{parent.extraHelper==1||parent.extraHelper==2?1:0}}\n  name AnimCard\n  label \"switch to 1 when we in \\nlocator mode or in geometry node.\\nit will give us visual on locator position and scale \\nor geometry wireframe\"\n  xpos -231\n  ypos 533\n }\npush $N33c3c710\n Remove {\n  name Remove1\n  xpos 154\n  ypos 1411\n }\n ScanlineRender {\n  inputs 3\n  shutter 0\n  motion_vectors_type distance\n  name ScanlineRender1\n  xpos -235\n  ypos 1417\n }\n HueShift {\n  name HueShift1\n  xpos -235\n  ypos 1537\n }\n Multiply {\n  channels rgba\n  value {{parent.op}}\n  name Multiply1\n  xpos -235\n  ypos 1563\n }\n Dot {\n  name Dot6\n  xpos -201\n  ypos 1891\n }\n Multiply {\n  channels rgba\n  value {{!HighPass}}\n  name Multiply2\n  label \"turn off grid when in highpass mode\"\n  note_font_size 14\n  xpos 605\n  ypos 1873\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge4\n  xpos 804\n  ypos 2002\n }\n Merge2 {\n  inputs 2\n  mix 0.001\n  name Merge1\n  xpos 800\n  ypos 2403\n }\n Dot {\n  name Dot29\n  xpos 834\n  ypos 2874\n }\nset N34282e70 [stack 0]\n Dot {\n  name Dot13\n  xpos 711\n  ypos 2874\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  tile_color 0xffffffff\n  label \"White Alpha\"\n  xpos 677\n  ypos 2915\n }\n Dot {\n  name Dot23\n  xpos 711\n  ypos 2977\n }\nset N342a4380 [stack 0]\n Dot {\n  name Dot27\n  xpos 567\n  ypos 2977\n }\n Invert {\n  channels rgba\n  name Invert1\n  xpos 533\n  ypos 3013\n }\n FrameHold {\n  firstFrame 49\n  name StabRef\n  xpos 533\n  ypos 3051\n }\n Dot {\n  name Dot28\n  xpos 567\n  ypos 3113\n }\npush $N342a4380\n Merge2 {\n  inputs 2\n  bbox A\n  name Merge3\n  xpos 677\n  ypos 3109\n }\n Grade {\n  add -1\n  black_clamp false\n  name Grade1\n  xpos 677\n  ypos 3135\n  addUserKnob {20 User}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_1\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_2\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_3\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n }\n Grade {\n  multiply {{parent.sharpen}}\n  add 0.5\n  name Grade2\n  xpos 677\n  ypos 3161\n  addUserKnob {20 User}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_1\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_2\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma_3\" l \"keep luma\" -STARTLINE T keepLuma()}\n  addUserKnob {22 \"keep luma\" -STARTLINE T keepLuma()}\n }\n Dot {\n  name Dot30\n  xpos 711\n  ypos 3240\n }\npush $N34282e70\n Switch {\n  inputs 2\n  which {{\"HighPass==1 || HighPass_1 ==1?1:0\"}}\n  name HighPass\n  label \"\\[value which]\"\n  xpos 800\n  ypos 3233\n }\n Output {\n  name Output1\n  xpos 800\n  ypos 3435\n }\n Axis2 {\n  inputs 0\n  rot_order XYZ\n  useMatrix true\n  matrix {\n\n       {{DummyCam.world_matrix.0} {DummyCam.world_matrix.4} {DummyCam.world_matrix.8} {\"-(matrix.0*DummyCam.world_matrix.3 + matrix.1*DummyCam.world_matrix.7 + matrix.2*DummyCam.world_matrix.11)\"}}\n       {{DummyCam.world_matrix.1} {DummyCam.world_matrix.5} {DummyCam.world_matrix.9} {\"-(matrix.4*DummyCam.world_matrix.3 + matrix.5*DummyCam.world_matrix.7 + matrix.6*DummyCam.world_matrix.11)\"}}\n       {{DummyCam.world_matrix.2} {DummyCam.world_matrix.6} {DummyCam.world_matrix.10} {\"-(matrix.8*DummyCam.world_matrix.3 + matrix.9*DummyCam.world_matrix.7 + matrix.10*DummyCam.world_matrix.11)\"}}\n       {0 0 0 1}\n  }\n  name Inverse1\n  label \"reverse camera tracking\"\n  xpos 2340\n  ypos -1076\n  addUserKnob {20 User}\n  addUserKnob {1 camera}\n  camera Camera10\n  addUserKnob {26 t l \"\" +STARTLINE T eshirazi}\n }\n Axis2 {\n  selectable false\n  translate {{parent.Perspective.translate} {parent.Perspective.translate} {parent.Perspective.translate}}\n  rotate {{parent.Perspective.rotate} {parent.Perspective.rotate} {parent.Perspective.rotate}}\n  name aM\n  gl_color 0xffff00ff\n  label \"main axis\"\n  xpos 2340\n  ypos -955\n }\nset N34347730 [stack 0]\n Axis2 {\n  selectable false\n  xform_order STR\n  translate {{-0.5*Perspective.uniform_scale*Perspective.scaling.x} {input0.pixel_aspect*0.5*Perspective.uniform_scale*Perspective.scaling.y} 0}\n  name a4\n  xpos 2598\n  ypos -819\n }\npush $N34347730\n Axis2 {\n  selectable false\n  xform_order STR\n  translate {{0.5*Perspective.uniform_scale*Perspective.scaling.x} {input0.pixel_aspect*0.5*Perspective.uniform_scale*Perspective.scaling.y} 0}\n  name a3\n  xpos 2445\n  ypos -819\n }\npush $N34347730\n Axis2 {\n  selectable false\n  xform_order STR\n  translate {{0.5*Perspective.uniform_scale*Perspective.scaling.x} {input0.pixel_aspect*-0.5*Perspective.uniform_scale*Perspective.scaling.y} 0}\n  name a2\n  xpos 2272\n  ypos -819\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xffffffff\n  label \"<b>Mark Joey Tang Deep2VP                .\\nDeep to World Position\"\n  note_font \"Helvetica Bold\"\n  note_font_size 20\n  xpos -3302\n  ypos 657\n }\n NoOp {\n  inputs 0\n  name NoOp2\n  knobChanged \"nn = nuke.thisGroup()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"extraStuff\\\":\\n    if nn\\['extraHelper'].value() in \\[0,2,5]:\\n        nn\\[\\\"setGroup\\\"].clearFlag(1)\\n        nn\\['findZ'].setFlag(1)\\n        nn\\[\\\"happyGroup\\\"].setFlag(1)\\n        nn\\[\\\"goGroup\\\"].setFlag(1)\\n        nn\\[\\\"Zfind\\\"].setValue(0)\\n        nn\\['translate'].setValue(0)\\n        nn\\['rotate'].setValue(0)\\n        nn\\['scaling'].setValue(0)\\n          \\n    elif nn\\['extraHelper'].value() in \\[1]:\\n        nn\\[\\\"setGroup\\\"].setFlag(1)\\n        nn\\['findZ'].setFlag(1)\\n        nn\\[\\\"happyGroup\\\"].setFlag(1)\\n        nn\\[\\\"goGroup\\\"].clearFlag(1)\\n        nn\\[\\\"Zfind\\\"].setValue(0)\\n        with nn:\\n            perspective_axis = nuke.toNode('Perspective')\\n            perspective_axis.setSelected(False)   \\n    with nn:\\n        nuke.toNode('ApplyMaterialVisualisation').setInput(0,nuke.toNode('SwitchCardAxis'))\\n        nuke.toNode('DeepExpressionTopNode').setInput(0,nuke.toNode('StampAboveDeep'))\\n          \\nelif kn == \\\"Stabilize\\\":\\n    t = nn\\['S']\\n    if t.value() == 0:\\n        nn\\['HighPass'].setVisible(False)\\n        nn\\['HighPass_1'].setVisible(False)\\n        nn\\['sharpen'].setVisible(False)\\n    else:\\n        nn\\['HighPass'].setVisible(True)\\n        nn\\['HighPass_1'].setVisible(True)\\n        nn\\['sharpen'].setVisible(True)\\n    \"\n  label \"this controler was created to eliminate\\nknobChanged callbacks in the main card_to_track \\ngroup.\"\n  xpos 951\n  ypos -1216\n  addUserKnob {20 User}\n  addUserKnob {4 extraStuff t \"here you can choose the way you would like find your position\\n\\n1 I have a Camera and great Matchmove\\n   means you have only a tracked Camera - you will have to go normal way in finding position\\n\\n2  I have a Camera and Geometry\\n   see little input called \\\"Extra\\\"? this is your new friend, if you have by any chance a geometry of the Scene - can be a model, lidar scan or just a bunch Nuke objects, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n3  I have a Camera and Wpos pass\\n    if your nice 3D Artist rendered for you a Wpos pass, connect it to the \\\"Extra\\\" input and press \\\"Set\\\" button, congrats you found your 3D position and ready sdjust your perspective(no need to bother with \\\"Z\\\" and \\\"Happy\\\" button\\n\\n4  I have a Camera and Card\\n    Let say you have animated Card and you want to translate it's position to Screen space,\\n     connect the Card to the .... \\n    Adjust rotation/position/scaling  in the Card it self if needed\\n     and press \\\"GO\\\" button\\n    DONE!!!\\n\\n5 I have a Camera and an Axis\\n    In some cases you have to use multiple Axises to refine position of your card.\\n    This option will consolidate transformations stored in Axises.\\n    Adjust rotation/position/scaling  in the Axis it self if needed\\n    Connect the last (lowest) axis to Extra pipe and press GO button\\n\\n6 Use this one in case you have deep image.\" M {\"great match move!!!\" \"3D Locator(card or axis)\" Geometry \"Wpos pass\" Deep \"\" \"\"}}\n  addUserKnob {3 extraHelper}\n  extraHelper {{\"\\[numvalue extraStuff]\"}}\n addUserKnob {22 Stabilize T \"import NST_cardToTrack_v9\\nNST_cardToTrack_v9.stabilize()\" +STARTLINE}\n }\npush $N33cd6dc0\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\" x1 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {{\"\\[expression \\[value the_cam]far(\\[value the_frame])]\"}}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label \"This is a Gizmo created by Adrian Pueyo.\\nIt finds the camera connected upstream \\nand collects all needed information from it.\"\n  xpos 1804\n  ypos -1248\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\npush $N34347730\n Axis2 {\n  selectable false\n  xform_order STR\n  translate {{-0.5*Perspective.uniform_scale*Perspective.scaling.x} {input0.pixel_aspect*-0.5*Perspective.uniform_scale*Perspective.scaling.y} 0}\n  name a1\n  xpos 2087\n  ypos -819\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CatsEyeDefocus.gizmo",
    "content": "Group {\n inputs 2\n name CatsEyeDefocus\n tile_color 0xb16f43ff\n addUserKnob {20 CtrlTab l \"Cat's Eye Defocus\"}\n addUserKnob {4 show l output M {result preview bokeh highlights \"\" \"\"}}\n addUserKnob {7 size R 1 100}\n size 50\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 catseyeeffect l \"@b;Cat's eye\"}\n addUserKnob {7 effectAmount l \"effect amount\"}\n effectAmount 0.5\n addUserKnob {7 edgeSoftness l \"edge softness\"}\n edgeSoftness 0.05\n addUserKnob {6 interpolate +STARTLINE}\n interpolate true\n addUserKnob {26 Shape l \"@b;Bokeh\"}\n addUserKnob {3 blades l \"blades count\"}\n blades 6\n addUserKnob {7 rounded}\n rounded 0.9\n addUserKnob {7 sharpness_1 l sharpness}\n sharpness_1 0.8\n addUserKnob {7 rotate R 0 360}\n rotate 12\n addUserKnob {26 hr l \"       \"}\n addUserKnob {7 innersize l \"inner size\"}\n innersize 0.8\n addUserKnob {7 innerfalloff l \"inner falloff\"}\n innerfalloff 0.6\n addUserKnob {7 innerBrightness l \"inner brightness\"}\n innerBrightness 0.5\n addUserKnob {6 useimage l \"use filter image\" +STARTLINE}\n addUserKnob {6 linksize l \"link size\" -STARTLINE}\n linksize true\n addUserKnob {26 highlightsHr l \"@b;Hightlights\"}\n addUserKnob {7 boostHighlights l boost R 0 10}\n boostHighlights 6\n addUserKnob {7 highlightsSaturation l saturation}\n highlightsSaturation 1\n addUserKnob {7 highlightsStart l \"range start\"}\n highlightsStart 0.5\n addUserKnob {7 highlightsEnd l \"range end\"}\n highlightsEnd 0.6\n addUserKnob {20 Help}\n addUserKnob {26 ver l \"\" +STARTLINE T \"CatsEyeDefocus is a manual convolution filter which simulates swirly bokeh.\\n\\n.kernel/gizmo ver 1.0/2.0\\n\\nAlexander Kulikov\\ncoolikov.com\\n\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label SRC\n  note_font_size 42\n  xpos -437\n  ypos -218\n  bdwidth 297\n  bdheight 357\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x71bec6ff\n  label \"Bokeh Setup\"\n  note_font_size 42\n  xpos 238\n  ypos -192\n  bdwidth 298\n  bdheight 328\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x7171c600\n  label \"Filter Image\"\n  note_font_size 42\n  xpos -68\n  ypos -69\n  bdwidth 237\n  bdheight 208\n }\n Input {\n  inputs 0\n  name src\n  xpos -337\n  ypos -139\n }\nset N39ddee20 [stack 0]\n Dot {\n  name Dot3\n  xpos -303\n  ypos -79\n }\nset N39ddf190 [stack 0]\n Dot {\n  name Dot4\n  xpos -208\n  ypos -79\n }\n Keyer {\n  operation \"luminance key\"\n  range {{parent.highlightsStart x232 0.06} {parent.highlightsEnd x232 0.7912925952} 1 1}\n  name Keyer3\n  xpos -242\n  ypos -10\n }\n Dot {\n  name Dot7\n  xpos -208\n  ypos 85\n }\nset N39ddfbe0 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Highlights\n  xpos -242\n  ypos 640\n }\n Input {\n  inputs 0\n  name filter\n  xpos 15\n  ypos -1\n  number 1\n }\n Shuffle {\n  green red\n  blue red\n  alpha black\n  name Shuffle1\n  xpos 15\n  ypos 38\n }\n Reformat {\n  type \"to box\"\n  box_width {{int(parent.size)}}\n  name Reformat2\n  xpos 15\n  ypos 91\n  disable {{!parent.linksize}}\n }\n Dot {\n  name Dot14\n  xpos 49\n  ypos 209\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"255 255 0 0 255 255 1 256x256\"\n  name Constant1\n  label \"512x512 Constant\"\n  xpos 276\n  ypos -97\n  postage_stamp false\n }\n Flare {\n  position {{(width+1)/2} {(height+1)/2}}\n  offset 3.55\n  radius {{(radius.2*0.96)*parent.innersize x60 0 x70 0 x71 108} 490 500}\n  size_mult {{width/radius.2/2}}\n  inner_color {{parent.innerBrightness}}\n  outer_falloff 2\n  inner_falloff {{parent.innerfalloff*10}}\n  vis_out 1\n  corners {{parent.blades}}\n  flattening {{clamp(1-parent.rounded)}}\n  sharpness {{parent.sharpness_1}}\n  corners_angle {{parent.rotate}}\n  asym_repeat 0\n  name Flare\n  selected true\n  xpos 276\n  ypos -35\n }\n Shuffle {\n  alpha black\n  name Shuffle3\n  xpos 276\n  ypos 19\n }\n Reformat {\n  type \"to box\"\n  box_width {{int(parent.size)}}\n  name Reformat1\n  xpos 276\n  ypos 83\n }\n Switch {\n  inputs 2\n  which {{parent.useimage}}\n  name SwitchFilter\n  xpos 276\n  ypos 206\n }\n Dot {\n  name Dot22\n  xpos 310\n  ypos 309\n }\nset N39f922d0 [stack 0]\n Transform {\n  translate {{\"src.width/2 - width/2\"} {\"src.height/2 - height/2\"}}\n  center {{width/2} {height/2}}\n  name Transform1\n  xpos -584\n  ypos 306\n }\n Dot {\n  name Dot21\n  xpos -550\n  ypos 403\n }\npush $N39ddee20\n Dot {\n  name Dot20\n  xpos -655\n  ypos -136\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle4\n  xpos -689\n  ypos 306\n }\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge5\n  xpos -689\n  ypos 400\n }\n Shuffle {\n  green red\n  blue red\n  name Bokeh\n  xpos -689\n  ypos 635\n }\n Dot {\n  name Dot9\n  xpos -655\n  ypos 787\n }\npush $N39f922d0\n Dot {\n  name Dot1\n  xpos 310\n  ypos 379\n }\nset N39f93e50 [stack 0]\n Dot {\n  name Dot15\n  xpos 310\n  ypos 444\n }\nset N39f941c0 [stack 0]\n Dot {\n  name Dot16\n  xpos 32\n  ypos 444\n }\npush $N39ddfbe0\npush $N39ddf190\n Dot {\n  name Dot5\n  xpos -393\n  ypos -79\n }\n Multiply {\n  channels rgb\n  value {{parent.boostHighlights<0?0:parent.boostHighlights}}\n  name Multiply1\n  xpos -427\n  ypos -18\n }\n Saturation {\n  saturation {{1+parent.highlightsSaturation*0.5}}\n  mode Average\n  name Saturation1\n  xpos -427\n  ypos 6\n }\n Dot {\n  name Dot6\n  xpos -393\n  ypos 85\n }\npush $N39ddf190\n Merge2 {\n  inputs 2+1\n  operation screen\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge2\n  xpos -337\n  ypos 82\n }\n Dot {\n  name Dot2\n  xpos -303\n  ypos 524\n }\n Dot {\n  name Dot17\n  xpos -75\n  ypos 524\n }\nset N3a047fa0 [stack 0]\n Dot {\n  name Dot18\n  xpos -75\n  ypos 611\n }\n Convolve2 {\n  inputs 2\n  channels rgba\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  filter_channel rgba.red\n  name Convolve1\n  xpos -2\n  ypos 608\n }\n Dot {\n  name Dot11\n  xpos 32\n  ypos 709\n }\npush $N39f93e50\n Radial {\n  replace true\n  area {0 0 {input.width} {input.height}}\n  softness {{parent.edgeSoftness}}\n  name LensEdge\n  xpos 390\n  ypos 376\n }\n Dot {\n  name Dot8\n  xpos 424\n  ypos 524\n }\npush $N39f941c0\npush $N3a047fa0\n BlinkScript {\n  inputs 3\n  ProgramGroup 1\n  KernelDescription \"1 \\\"CatsEyeConvolve\\\" iterate pixelWise d3f7f7268f50afeb0ffd385b019c65664a5775e0f4a8983e20044cb012fe17e8 4 \\\"src\\\" Read Ranged2D \\\"filter\\\" Read Random \\\"ext\\\" Read Random \\\"dst\\\" Write Point 3 \\\"Amount\\\" Float 1 AACAPw== \\\"Format\\\" Int 2 AAUAANACAAA= \\\"Interpolate\\\" Bool 1 AQ==\"\n  EncodedSource \"1 2904 +vduhx3Y8JBmLeiWCjYc02Q9Odx8FJ5dqBe/uX9TgyhEk6K88rIuF+cFmQD78ej6LXg8cuU82LdC7ZdSjjaCt7bMKxSafnhAwKeJiaKUcp/+LiX8yNxidGrQQxLQOP7mJxzynvhLiZBi6jQNXkFsWw9tupyAWMf2qSD10fk3qTUWlMD6XFM/zII9/AmE5qDC2FkhswV5WQTY84O+twxw3U7UMVt3oTZoOTgDFqtGWTVvsk146amMUbTFV1L5euCqLBLp3wqtLoJISJzHd2ZAoqe7Wp2fvMcStAcjK+rH2teU1DYAWu3wiYPfNt4G6DEKr6EhLxyzXbKygpUQGi/bRIBfVwNdNSQAGLJaeVS87Brbg3ya/OJOhIISEsTpTiDj19joP31EUPvdS22/WnBmaa66RIqmbPwnvDbVQCL0r+luwbvaA5LFpEHjh3DOog200fCwwdSuc8Fb7HVmKE7I+9DauBHYIu5cO7AcA4EoVPnAEs89gjGLY8FVUPHpnwERocJRxhgYIxAo3xPT5Djh29RpCA+dupA1bnSQ6BR+yLIvprsdWE9xicWBmfJFuFc/8NcWzaR+JZJy1skX3ZpJm8JQvG8daMu/p3x03cxh+8iwMTePxPr3l4HZrg4gxd5GXhhztiVQ+XqYa21vFChqNo7QofCpFZAjEjKxP/E+9tDko54qg+JeVWXUZgvUR6vr6bwkq5Cr7NRfo2uWCNldENhZz/US7gm2sh52+zzoHNCVuBKeFVTojP1Nk23GH7y0zvv9+fK9BIrp5rBp7cl+di31vaUBLrONMQ14NRx3u//vxY7Uywj6qGC7CUJVJTJ1cw3rnQ0MXhcHpRF6L0Rdn4ibV2logTMVbMoM34m/os0oED2CFnX2W85jab/utQRRQoSXz2VPRMi/XqwbKlsswzLyWbBgSnmKKCHwgQNpeTQyLMkGISozK/247JdCzHyXFDasHp9l4VaRoATHOmsihJIW/PnpNyvKsm2BCkXqN7DrzD13z1SAOeV82KE/QBrxWIyLRDGsdNS9PaS/FUjANfOvVUn92njVkuc2pv/WPL08Z9os37rSrEBByUk5Mqfa4HXJMMYqF7BpSuP5B1pqxiGoQI1N7uDOR5QjsHttqGcTnSa8oZdZHZkcOGFyFv7zsm8hx1LkCwMCIkO8pnSDynoZqe0z7GfWx80RA3eAfEV4ejq0Cdva61MfNddLq77oynH5rYGW/Gf/ylF0YySMf1HKe4akObXLlpbpZxgMsUHAaa6u4xbRZpsL/qlsh4Imaxd7mBYULfj6DbAzYc8fHTAWnJJh1Dt8jQLKg9ESMKWWNNpxZhfRbb8CCsrpIhR5WdLMNlu9dAtJSvnzSpF4WVICjQgKpCn5mW+dSIZIftWKd2tZyRWixvgeuMug4XUQkivl3K8tyzr+o78zDY4axqC5hdyWuYtpht08t5LCrgBFSXF9fdyGdxWxL/e9eixxwbtVr1bfccHnoZOeSImPh9MwE9fYPqitiqR61rNd8JCbYrK2spn9sgN1m7ILSEVupS6JRJiRwWF6HWobjwuzquSXkvZ/EOYzPdIfjb1M0ynQNu1ppjJjTcQksQ3NZZnPLc3HjK48YLB8nZtSX9scvTC9pTji5qSiiIHABqJxIxcED1NIB3wm9DTPoxp3e2mgWEga1N61qGr8QSQy7Rk/aRpFbb3u1x+Kwns/EUErYh4UId2IfxFdLR/5cTiNPIMclEPz4Voj/4AAWBwZLNq1zVVEZRkj2fHNh5VT3L0UtClp0IazpGARc4OtuDhdnz8p7jRE8bzKkIGn1X43Ba5hk7Y7xRUp8ow0zrLDgG3hxtE+7bh4nA4J5ysFiaIgHPXpVHtPMu1bYx+itEvoai8SgF11RjWxsupBlH5vjpisajl11qyYs2zS++3QmbONIxfhsgmEWMNu3uFyX7iMg9uz/pb2hWBCceNvQvPpxODqTaZzdJzRKS9ajlHRktzmJGLimWCGLfFfvDnOOC1Ou2sCPHZ4nF1esuL6jgXkNOfRshYHBYMd4tTNx0zKqTrNAmdZY2XMPyaqkVIqtPi/ygcVCivFsUXtq1D5icJiHLOQHHzdbJGEgoORWVx+x//KKgb+eTqN2ln8sIqcmpv9nqNf9ZWOr54ktg9fKvw0Jl+HTucpd2XBLv3frDDjz3C9pfIBo6GZBiNyvnnv6xUfwsaxT+WG8X3abo8oU3U3OjI8+dztaLyTg1fmKbqyX2iTj46PJO5P2HwBw2otFO0v4zHgnchKc8goMw2WIjjzUGEr/eJtWt+iAeIK1gt9mTKjeBwAxeBO6Vpcri9G4LElTzlSZWENpPBiBXi6o9qkMxL+C+ztrL2q9/ajja+NUGphU/v9ecnh7DqLjZWq0xMWqQ8/NrEs3ldwKCmWETYC3YnxBfL/bhQS5JH3Lv0th7fAKWWO8qxxdBf+EuFi0PVRifBqIOK5fqfYeO82q+dg0HLMrLKhLjuWyKq96SbIke7uvULYwTDwBowzHYC29B91QPurz3Ot7+/GrScjzYf4cA9Bby22TjL2gb7CHMmqRz8JxsPGLmBHd+daGsreA4u4Wv+cZtR3wMRsg3mayzTdQEkulKC8qUpsLSLFMchaZkkjiMhwZe/2u9D5uzuIaqIoZnKHAzinBAIW2JjjyrIXA+UGTytAdiGYC1S3wGax2HawBoPqLphpLGswKYp0k+Baa1iR0PfwElsS6j4h0+MskQpPhEgXCKhJi0wwXAn6oa+hDEMs1BlOPBdv3c7GRV2wrSQqtAujGkRtVW+8D1U9D6ZbpMmrrPA4uukb5Uv4nK9kls2xqBnQuZti8WpskSTYtEYIfn0lT9Yh/yX51ky+4NNcj83NiiQiD2fa7ODTgo8SQ5oRF94/zhjERAohre0OfM5JkTG0uvj+IXXMHIPMMjfwCCxjEDDTx45pEct+iaN3Y+x6GVmh+sI29ZfoWM8RN9PoOfGpXFwgE4ij0MwR89YNIJijazteqm+D2fTrtYaCT+u/sswUfjN06z5NpZF6mJS0cO420s1rKIJbYcNcxz13BCgBAnnfntaeGMQAirZm9LnNu9NbMd9iudakKkYJ6jSz4Q4Ws+UXkInrs63RO2fdkv209RQqNu7u1E53xdh0kNJOFVXM62sihT45JWbxMgn+1MHb6U52vR4/2G6tq73rG0bf0f//hGXwoKAnhWCzda6ctZ14wB9ynCzlZAZ103HVEQ6VcYABgxBF/W4traDQJHx0UvlRFUkMYRqVGbpPBV9fEPNaD5Ke1Auhl7z9gyPIrgJRKBVC0agpEgMuhB3RNP36wvogd4W2xm2FRvdhJ0Od+Ut6WojCNWc7Malpr0s7FcNJJ0Xr55cHKFhfGbK0qgNKkaa8kWhwpEY/mX2xp1fyoXDpUh8ZRcY0QdLqUHdY7qeaqE+0g+aFEemRA1YKuICancWSa+6zPz5BF5JUcAQli5k6f4VG5Ex82infyZnjrVPL2pe1uuEmqrcvdiDxAaHw7xMpeIioqmkdXd+ie7BEXCm8u44ePxx3Bjc65wz9mFPqMjBBqlEcjVffk2ea3/xCBx0VmDjsAhbx2DoOVnsh0kMgt6x8Z4Tk5GwIFftPE/6FgKUkeHsn6CQZtwan2bWJ57aLEKOg9mL/xxkp6n3btOw2bAa7V/gNK8D5BEVIqthFg1ngUDEi7wekIlho+w+Cqvc+nQCQMCEcCJMJDa6N0n6l/hwvl5Q/vPdjcZ26m+sQXt5sPst3Xfw6tkADD/1V/IAxe+/KpYw+vvbG7ipiSgN+N+peoBLrQ9VwwAcku6wK0zMJWWIVtEZS9tExGc29P4JIjo5UAnkqLcVgs97AWnSS2atilRITMnhaqaT+6a2R8WEyaVu39yf75gGeVuM=\"\n  vectorize false\n  rebuild \"\"\n  CatsEyeConvolve_Amount {{parent.effectAmount}}\n  CatsEyeConvolve_Format {{src.width} {src.height}}\n  CatsEyeConvolve_Interpolate {{parent.interpolate}}\n  protectKernelWhenPublishing true\n  name BlinkScript1\n  xpos 276\n  ypos 515\n }\n Dot {\n  name Dot10\n  label result\n  note_font_size 30\n  xpos 310\n  ypos 787\n }\n Switch {\n  inputs 4\n  which {{parent.show}}\n  name ShowSwitch\n  xpos -242\n  ypos 784\n }\n Output {\n  name Output1\n  xpos -242\n  ypos 902\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CellNoise.gizmo",
    "content": "Group {\nname CellNoise\nonCreate \"n = nuke.thisNode()\\nif n is not None:\\n    w = n.format().width()/2\\n    h = n.format().height()/2\\n    center = \\[w, h]\\n    center_knob = n.knob('center')\\n    create_knob = n.knob('create')\\n    if center_knob and (create_knob is None or not create_knob.value()):\\n        center_knob.setValue(center)\\n    if create_knob:\\n        create_knob.setValue(1)\"\nknobChanged \"\\nknob = nuke.thisKnob()\\nif knob.name() == 'skew_order':\\n    nuke.toNode('NoiseTransform')\\['rot_order'].setValue('Z' + knob.value())\\nif knob.name() == 'noise_type':\\n    if knob.value() in ['Voronoi', 'Manhattan', 'Chebyshev', 'Euclidian']:\\n        nuke.thisNode()['range'].clearFlag(0x00040000)\\n    else:\\n        nuke.thisNode()['range'].setFlag(0x00040000)\\n\"\ntile_color 0x5f5f5fff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected true\naddUserKnob {20 cellnoise l \"Cell Noise\"}\naddUserKnob {41 format T WorleyNoise.format}\naddUserKnob {4 noise_type l \"noise type\" M {Worley \"Worley Inverse\" Voronoi Manhattan Euclidian Chebyshev \"\"}}\naddUserKnob {6 use_gpu l \"use gpu\" t \"Faster calculations, may not work on all computers. Disable to switch to CPU.\" -STARTLINE}\nuse_gpu true\naddUserKnob {7 range t \"Changes how much of the noise effect applies.\\nOnly applies to Manhattan, Chebyshev, Euclidian and Voronoi.\" +HIDDEN R 0 10}\naddUserKnob {6 replace +STARTLINE}\naddUserKnob {26 \"\"}\naddUserKnob {7 size R 1 1000}\nsize 30\naddUserKnob {7 z t \"This knob must be animated if you want it to change over time.\"}\naddUserKnob {7 gain R 0 2}\ngain 1\naddUserKnob {7 gamma R 0 2}\ngamma 1\naddUserKnob {20 transform l Transform}\naddUserKnob {12 translate}\naddUserKnob {7 rotate R -180 180}\naddUserKnob {14 scale R 0 100}\nscale 1\naddUserKnob {7 skewX l \"skew X\" R -1 1}\naddUserKnob {7 skewY l \"skew Y\" R -1 1}\naddUserKnob {4 skew_order l \"skew order\" t \"Specifies which order the skew values should be applied in.\\n\" M {XY YX}}\naddUserKnob {12 center}\ncenter {1243 865}\naddUserKnob {22 setCenter l \"Set Center\" -STARTLINE T \"n = nuke.thisNode()\\nw= n.width()\\nh=n.height()\\nn['center'].setValue(\\[w/2,h/2])\"}\naddUserKnob {7 xrotate t \"Rotation about X axis in 3D noise space.\" R 0 90}\naddUserKnob {7 yrotate t \"Rotation about Y axis in 3D noise space.\" R 0 90}\naddUserKnob {20 colour l Colour}\naddUserKnob {19 colour0 l \"colour 0\"}\ncolour0 {0 0 0 0}\naddUserKnob {6 colour0_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour0_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour0_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour0_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {19 colour1 l \"colour 1\"}\ncolour1 1\naddUserKnob {6 colour1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour1_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour1_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 colour1_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\nAxis2 {\ninputs 0\nxform_order TRS\ntranslate {{parent.translate.x} {parent.translate.y} {parent.z}}\nrotate {{parent.xrotate} {parent.yrotate} {parent.rotate}}\nscaling {{parent.scale.w} {parent.scale.h} 1}\nuniform_scale {{parent.size}}\nskew {{\"parent.skewX * 45\"} {\"parent.skewY * 45\"} 0}\npivot {{parent.center.x} {parent.center.y} 0}\nname NoiseTransform\nxpos 651\nypos -75\naddUserKnob {20 \"Ppos Locator\"}\naddUserKnob {18 pointPosition l \"Point Position\"}\npointPosition {0 0 0}\naddUserKnob {6 pointPosition_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 pointPosition_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 pointPosition_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\naddUserKnob {6 pointPosition_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\nInput {\ninputs 0\nname Inputmask\nxpos 221\nypos 381\nnumber 1\n}\nset N55edd600 [stack 0]\nBlinkScript {\ninputs 0\nProgramGroup 1\nKernelDescription \"1 \\\"ChebyshevNoise\\\" iterate pixelWise a3199759b15669186cdda7e034095d513217f6595a3ec9e87bbc46847c6731f5 1 \\\"dst\\\" Write Point 6 \\\"Range\\\" Float 1 AABAQA== \\\"Gain\\\" Float 1 AACAPw== \\\"Gamma\\\" Float 1 AACAPw== \\\"Dark Colour\\\" Float 4 AAAAAAAAAAAAAAAAAACAPw== \\\"Light Colour\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"transform\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\nkernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11 - use #define to avoid global variables (Blink compatibility)\\n#define RAND_MULTIPLIER 48271\\n#define RAND_INCREMENT 0\\n#define RAND_MODULUS 2147483647\\n\\nstatic int lcgRandom(int seed)\\n{\\n  int v = (seed * RAND_MULTIPLIER + RAND_INCREMENT) % RAND_MODULUS;\\n  return (v < 0) ? -v : v;\\n}\\n\\n// FNV Hash\\n#define OFFSET_BASIS 2166136261u\\n#define FNV_PRIME 16777619u\\n\\nstatic uint hash(uint i, uint j, uint k)\\n{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n}\\n\\n// Poisson Distribution\\n#define POISSON_ONE   393325350u\\n#define POISSON_TWO   1022645910u\\n#define POISSON_THREE 1861739990u\\n#define POISSON_FOUR  2700834071u\\n#define POISSON_FIVE  3372109335u\\n#define POISSON_SIX   3819626178u\\n#define POISSON_SEVEN 4075350088u\\n#define POISSON_EIGHT 4203212043u\\n\\nstatic uint probLookup(uint value)\\n{\\n  if (value < POISSON_ONE) return 1;\\n  if (value < POISSON_TWO) return 2;\\n  if (value < POISSON_THREE) return 3;\\n  if (value < POISSON_FOUR) return 4;\\n  if (value < POISSON_FIVE) return 5;\\n  if (value < POISSON_SIX) return 6;\\n  if (value < POISSON_SEVEN) return 7;\\n  if (value < POISSON_EIGHT) return 8;\\n  return 9;\\n}\\n\\n// Distance Function\\nstatic float ChebyshevDistanceFunc(float3 p1, float3 p2)\\n{\\n  float3 diff = p1 - p2;\\n  return max(max(fabs(diff.x), fabs(diff.y)), fabs(diff.z));\\n}\\n\\n// Insertion Array\\nstatic void insert(float arr[], float value)\\n{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  {\\n    if (value > arr[i])\\n      break;\\n    temp = arr[i];\\n    arr[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    {\\n      arr[i + 1] = temp;\\n    }\\n  }\\n}\\n\\n\\n// Blink Kernel\\nkernel ChebyshevNoise : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n    float gain;\\n    float gamma;\\n    float4 dark_col;\\n    float4 light_col;\\n    float4x4 transform;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n    float4x4 transform_inv;\\n    float z;\\n\\n  void define()\\n  {\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n    defineParam(gain, \\\"Gain\\\", 1.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(dark_col, \\\"Dark Colour\\\", float4(0.0f, 0.0f, 0.0f, 1.0f));\\n    defineParam(light_col, \\\"Light Colour\\\", float4(1.0f, 1.0f, 1.0f, 1.0f));\\n  }\\n\\n  void init()\\n  {\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n    transform_inv = transform.invert();\\n    z = transform_inv[2][3];\\n  }\\n\\n  static float3 multVectMatrix(float3 vec, float4x4 M)\\n  {\\n    float3 out = float3(\\n      vec.x * M[0][0] + vec.y * M[0][1] + vec.z * M[0][2] + M[0][3],\\n      vec.x * M[1][0] + vec.y * M[1][1] + vec.z * M[1][2] + M[1][3],\\n      vec.x * M[2][0] + vec.y * M[2][1] + vec.z * M[2][2] + M[2][3]\\n    );\\n\\n    return out;\\n  }\\n\\n  float4 getColour(float a) {\\n    return dark_col * (1 - a) + light_col * a;\\n  }\\n\\n  void process(int2 pos)\\n  {\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray[i] = 6666;\\n\\n    float3 input = float3(float(pos.x), float(pos.y), z);\\n    input = multVectMatrix(input, transform_inv);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    {\\n      for (int j = -1; j < 2; ++j)\\n      {\\n        for (int k = -1; k < 2; ++k)\\n        {\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            {\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / RAND_MODULUS;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, ChebyshevDistanceFunc(input, featurePoint));\\n            }\\n        }\\n      }\\n    }\\n\\n    float color = (distanceArray[ iRange + 2 ] - distanceArray[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray[ iRange + 1] - distanceArray[0];\\n    color = pow( color * gain, gamma );\\n    dst() = getColour(clamp(color, 0.0f, 1.0f));\\n\\n  }\\n\\n};\"\nuseGPUIfAvailable {{parent.use_gpu}}\nrebuild \"\"\nChebyshevNoise_Range {{parent.range}}\nChebyshevNoise_Gain {{parent.gain}}\nChebyshevNoise_Gamma {{parent.gamma}}\n\"ChebyshevNoise_Dark Colour\" {{parent.colour0.r} {parent.colour0.g} {parent.colour0.b} {parent.colour0.a}}\n\"ChebyshevNoise_Light Colour\" {{parent.colour1.r} {parent.colour1.g} {parent.colour1.b} {parent.colour1.a}}\nChebyshevNoise_transform {\n    {{parent.NoiseTransform.world_matrix.0} {parent.NoiseTransform.world_matrix.1} {parent.NoiseTransform.world_matrix.2} {parent.NoiseTransform.world_matrix.3}}\n    {{parent.NoiseTransform.world_matrix.4} {parent.NoiseTransform.world_matrix.5} {parent.NoiseTransform.world_matrix.6} {parent.NoiseTransform.world_matrix.7}}\n    {{parent.NoiseTransform.world_matrix.8} {parent.NoiseTransform.world_matrix.9} {parent.NoiseTransform.world_matrix.10} {parent.NoiseTransform.world_matrix.11}}\n    {{parent.NoiseTransform.world_matrix.12} {parent.NoiseTransform.world_matrix.13} {parent.NoiseTransform.world_matrix.14} {parent.NoiseTransform.world_matrix.15}}\n  }\nformat {{{WorleyNoise.format}}}\nrebuild_finalise \"\"\nname ChebyShevNoise\nxpos 645\nypos 243\n}\nBlinkScript {\ninputs 0\nProgramGroup 1\nKernelDescription \"1 \\\"EuclidianNoise\\\" iterate pixelWise d1aadc298abbb75c06cdae49489c52619d77cd167b514ac77a000bdc98098443 1 \\\"dst\\\" Write Point 6 \\\"Range\\\" Float 1 AABAQA== \\\"Gain\\\" Float 1 AACAPw== \\\"Gamma\\\" Float 1 AACAPw== \\\"Dark Colour\\\" Float 4 AAAAAAAAAAAAAAAAAACAPw== \\\"Light Colour\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"transform\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\nkernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11 - use #define to avoid global variables (Blink compatibility)\\n#define RAND_MULTIPLIER 48271\\n#define RAND_INCREMENT 0\\n#define RAND_MODULUS 2147483647\\n\\nstatic int lcgRandom(int seed)\\n{\\n  int v = (seed * RAND_MULTIPLIER + RAND_INCREMENT) % RAND_MODULUS;\\n  return (v < 0) ? -v : v;\\n}\\n\\n// FNV Hash\\n#define OFFSET_BASIS 2166136261u\\n#define FNV_PRIME 16777619u\\n\\nstatic uint hash(uint i, uint j, uint k)\\n{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n}\\n\\n// Poisson Distribution\\n#define POISSON_ONE   393325350u\\n#define POISSON_TWO   1022645910u\\n#define POISSON_THREE 1861739990u\\n#define POISSON_FOUR  2700834071u\\n#define POISSON_FIVE  3372109335u\\n#define POISSON_SIX   3819626178u\\n#define POISSON_SEVEN 4075350088u\\n#define POISSON_EIGHT 4203212043u\\n\\nstatic uint probLookup(uint value)\\n{\\n  if (value < POISSON_ONE) return 1;\\n  if (value < POISSON_TWO) return 2;\\n  if (value < POISSON_THREE) return 3;\\n  if (value < POISSON_FOUR) return 4;\\n  if (value < POISSON_FIVE) return 5;\\n  if (value < POISSON_SIX) return 6;\\n  if (value < POISSON_SEVEN) return 7;\\n  if (value < POISSON_EIGHT) return 8;\\n  return 9;\\n}\\n\\n// Distance Functions\\nstatic float EuclidianDistanceFunc(float3 p1, float3 p2)\\n{\\n  return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z);\\n}\\n\\n\\n// Insertion Array\\nstatic void insert(float arr[], float value)\\n{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  {\\n    if (value > arr[i])\\n      break;\\n    temp = arr[i];\\n    arr[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    {\\n      arr[i + 1] = temp;\\n    }\\n  }\\n}\\n\\n\\n// Blink Kernel\\nkernel EuclidianNoise : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n    float gain;\\n    float gamma;\\n    float4 dark_col;\\n    float4 light_col;\\n    float4x4 transform;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n    float4x4 transform_inv;\\n    float z;\\n\\n  void define()\\n  {\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n    defineParam(gain, \\\"Gain\\\", 1.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(dark_col, \\\"Dark Colour\\\", float4(0.0f, 0.0f, 0.0f, 1.0f));\\n    defineParam(light_col, \\\"Light Colour\\\", float4(1.0f, 1.0f, 1.0f, 1.0f));\\n  }\\n\\n  void init()\\n  {\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n    transform_inv = transform.invert();\\n    z = transform_inv[2][3];\\n  }\\n\\n  static float3 multVectMatrix(float3 vec, float4x4 M)\\n  {\\n    float3 out = float3(\\n      vec.x * M[0][0] + vec.y * M[0][1] + vec.z * M[0][2] + M[0][3],\\n      vec.x * M[1][0] + vec.y * M[1][1] + vec.z * M[1][2] + M[1][3],\\n      vec.x * M[2][0] + vec.y * M[2][1] + vec.z * M[2][2] + M[2][3]\\n    );\\n\\n    return out;\\n  }\\n\\n  float4 getColour(float a) {\\n    return dark_col * (1 - a) + light_col * a;\\n  }\\n\\n  void process(int2 pos)\\n  {\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray[i] = 6666;\\n\\n    float3 input = float3(float(pos.x), float(pos.y), z);\\n    input = multVectMatrix(input, transform_inv);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    {\\n      for (int j = -1; j < 2; ++j)\\n      {\\n        for (int k = -1; k < 2; ++k)\\n        {\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            {\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / RAND_MODULUS;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, EuclidianDistanceFunc(input, featurePoint));\\n            }\\n        }\\n      }\\n    }\\n\\n\\n    float color = (distanceArray[ iRange + 2 ] - distanceArray[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray[ iRange + 1] - distanceArray[0];\\n    color = pow( color * gain, gamma );\\n    dst() = getColour(clamp(color, 0.0f, 1.0f));\\n\\n  }\\n\\n};\"\nuseGPUIfAvailable {{parent.use_gpu}}\nrebuild \"\"\nEuclidianNoise_Range {{parent.range}}\nEuclidianNoise_Gain {{parent.gain}}\nEuclidianNoise_Gamma {{parent.gamma}}\n\"EuclidianNoise_Dark Colour\" {{parent.colour0.r} {parent.colour0.g} {parent.colour0.b} {parent.colour0.a}}\n\"EuclidianNoise_Light Colour\" {{parent.colour1.r} {parent.colour1.g} {parent.colour1.b} {parent.colour1.a}}\nEuclidianNoise_transform {\n    {{parent.NoiseTransform.world_matrix.0} {parent.NoiseTransform.world_matrix.1} {parent.NoiseTransform.world_matrix.2} {parent.NoiseTransform.world_matrix.3}}\n    {{parent.NoiseTransform.world_matrix.4} {parent.NoiseTransform.world_matrix.5} {parent.NoiseTransform.world_matrix.6} {parent.NoiseTransform.world_matrix.7}}\n    {{parent.NoiseTransform.world_matrix.8} {parent.NoiseTransform.world_matrix.9} {parent.NoiseTransform.world_matrix.10} {parent.NoiseTransform.world_matrix.11}}\n    {{parent.NoiseTransform.world_matrix.12} {parent.NoiseTransform.world_matrix.13} {parent.NoiseTransform.world_matrix.14} {parent.NoiseTransform.world_matrix.15}}\n  }\nformat {{{WorleyNoise.format}}}\nrebuild_finalise \"\"\nname EuclidianNoise\nxpos 546\nypos 153\n}\nBlinkScript {\ninputs 0\nProgramGroup 1\nKernelDescription \"1 \\\"ManhattanNoise\\\" iterate pixelWise 1d35c614c0525bae7a8ffa70d6c29b98748325506ab7e1dd613b42fef2bd1443 1 \\\"dst\\\" Write Point 6 \\\"Range\\\" Float 1 AABAQA== \\\"Gain\\\" Float 1 AACAPw== \\\"Gamma\\\" Float 1 AACAPw== \\\"Dark Colour\\\" Float 4 AAAAAAAAAAAAAAAAAACAPw== \\\"Light Colour\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"transform\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\nkernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11 - use #define to avoid global variables (Blink compatibility)\\n#define RAND_MULTIPLIER 48271\\n#define RAND_INCREMENT 0\\n#define RAND_MODULUS 2147483647\\n\\nstatic int lcgRandom(int seed)\\n{\\n  int v = (seed * RAND_MULTIPLIER + RAND_INCREMENT) % RAND_MODULUS;\\n  return (v < 0) ? -v : v;\\n}\\n\\n// FNV Hash\\n#define OFFSET_BASIS 2166136261u\\n#define FNV_PRIME 16777619u\\n\\nstatic uint hash(uint i, uint j, uint k)\\n{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n}\\n\\n// Poisson Distribution\\n#define POISSON_ONE   393325350u\\n#define POISSON_TWO   1022645910u\\n#define POISSON_THREE 1861739990u\\n#define POISSON_FOUR  2700834071u\\n#define POISSON_FIVE  3372109335u\\n#define POISSON_SIX   3819626178u\\n#define POISSON_SEVEN 4075350088u\\n#define POISSON_EIGHT 4203212043u\\n\\nstatic uint probLookup(uint value)\\n{\\n  if (value < POISSON_ONE) return 1;\\n  if (value < POISSON_TWO) return 2;\\n  if (value < POISSON_THREE) return 3;\\n  if (value < POISSON_FOUR) return 4;\\n  if (value < POISSON_FIVE) return 5;\\n  if (value < POISSON_SIX) return 6;\\n  if (value < POISSON_SEVEN) return 7;\\n  if (value < POISSON_EIGHT) return 8;\\n  return 9;\\n}\\n\\n// Distance Function\\nstatic float ManhattanDistanceFunc(float3 p1, float3 p2)\\n{\\n  return fabs(p1.x - p2.x) + fabs(p1.y - p2.y) + fabs(p1.z - p2.z);\\n}\\n\\n// Insertion Array\\nstatic void insert(float arr[], float value)\\n{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  {\\n    if (value > arr[i])\\n      break;\\n    temp = arr[i];\\n    arr[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    {\\n      arr[i + 1] = temp;\\n    }\\n  }\\n}\\n\\n\\n// Blink Kernel\\nkernel ManhattanNoise : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n    float gain;\\n    float gamma;\\n    float4 dark_col;\\n    float4 light_col;\\n    float4x4 transform;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n    float4x4 transform_inv;\\n    float z;\\n\\n  void define()\\n  {\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n    defineParam(gain, \\\"Gain\\\", 1.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(dark_col, \\\"Dark Colour\\\", float4(0.0f, 0.0f, 0.0f, 1.0f));\\n    defineParam(light_col, \\\"Light Colour\\\", float4(1.0f, 1.0f, 1.0f, 1.0f));\\n  }\\n\\n  void init()\\n  {\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n    transform_inv = transform.invert();\\n    z = transform_inv[2][3];\\n  }\\n\\n  static float3 multVectMatrix(float3 vec, float4x4 M)\\n  {\\n    float3 out = float3(\\n      vec.x * M[0][0] + vec.y * M[0][1] + vec.z * M[0][2] + M[0][3],\\n      vec.x * M[1][0] + vec.y * M[1][1] + vec.z * M[1][2] + M[1][3],\\n      vec.x * M[2][0] + vec.y * M[2][1] + vec.z * M[2][2] + M[2][3]\\n    );\\n\\n    return out;\\n  }\\n\\n  float4 getColour(float a) {\\n    return dark_col * (1 - a) + light_col * a;\\n  }\\n\\n  void process(int2 pos)\\n  {\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray[i] = 6666;\\n\\n    float3 input = float3(float(pos.x), float(pos.y), z);\\n    input = multVectMatrix(input, transform_inv);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    {\\n      for (int j = -1; j < 2; ++j)\\n      {\\n        for (int k = -1; k < 2; ++k)\\n        {\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            {\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / RAND_MODULUS;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, ManhattanDistanceFunc(input, featurePoint));\\n            }\\n        }\\n      }\\n    }\\n\\n    float color = (distanceArray[ iRange + 2 ] - distanceArray[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray[ iRange + 1] - distanceArray[0];\\n    color = pow( color * gain, gamma );\\n    dst() = getColour(clamp(color, 0.0f, 1.0f));\\n\\n  }\\n\\n};\"\nuseGPUIfAvailable {{parent.use_gpu}}\nrebuild \"\"\nManhattanNoise_Range {{parent.range}}\nManhattanNoise_Gain {{parent.gain}}\nManhattanNoise_Gamma {{parent.gamma}}\n\"ManhattanNoise_Dark Colour\" {{parent.colour0.r} {parent.colour0.g} {parent.colour0.b} {parent.colour0.a}}\n\"ManhattanNoise_Light Colour\" {{parent.colour1.r} {parent.colour1.g} {parent.colour1.b} {parent.colour1.a}}\nManhattanNoise_transform {\n    {{parent.NoiseTransform.world_matrix.0} {parent.NoiseTransform.world_matrix.1} {parent.NoiseTransform.world_matrix.2} {parent.NoiseTransform.world_matrix.3}}\n    {{parent.NoiseTransform.world_matrix.4} {parent.NoiseTransform.world_matrix.5} {parent.NoiseTransform.world_matrix.6} {parent.NoiseTransform.world_matrix.7}}\n    {{parent.NoiseTransform.world_matrix.8} {parent.NoiseTransform.world_matrix.9} {parent.NoiseTransform.world_matrix.10} {parent.NoiseTransform.world_matrix.11}}\n    {{parent.NoiseTransform.world_matrix.12} {parent.NoiseTransform.world_matrix.13} {parent.NoiseTransform.world_matrix.14} {parent.NoiseTransform.world_matrix.15}}\n  }\nformat {{{WorleyNoise.format}}}\nrebuild_finalise \"\"\nname ManhattanNoise\nxpos 459\nypos 63\n}\nBlinkScript {\ninputs 0\nProgramGroup 1\nKernelDescription \"1 \\\"VoronoiNoise\\\" iterate pixelWise 1b53c166801ea17d0619d5f85ca955c827fd3c1e639128218c64fea2e471be9e 1 \\\"dst\\\" Write Point 6 \\\"Range\\\" Float 1 AABAQA== \\\"Gain\\\" Float 1 AACAPw== \\\"Gamma\\\" Float 1 AACAPw== \\\"Dark Colour\\\" Float 4 AAAAAAAAAAAAAAAAAACAPw== \\\"Light Colour\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"transform\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\nkernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11 - use #define to avoid global variables (Blink compatibility)\\n#define RAND_MULTIPLIER 48271\\n#define RAND_INCREMENT 0\\n#define RAND_MODULUS 2147483647\\n\\nstatic int lcgRandom(int seed)\\n{\\n  int v = (seed * RAND_MULTIPLIER + RAND_INCREMENT) % RAND_MODULUS;\\n  return (v < 0) ? -v : v;\\n}\\n\\n// FNV Hash\\n#define OFFSET_BASIS 2166136261u\\n#define FNV_PRIME 16777619u\\n\\nstatic uint hash(uint i, uint j, uint k)\\n{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n}\\n\\n// Poisson Distribution\\n#define POISSON_ONE   393325350u\\n#define POISSON_TWO   1022645910u\\n#define POISSON_THREE 1861739990u\\n#define POISSON_FOUR  2700834071u\\n#define POISSON_FIVE  3372109335u\\n#define POISSON_SIX   3819626178u\\n#define POISSON_SEVEN 4075350088u\\n#define POISSON_EIGHT 4203212043u\\n\\nstatic uint probLookup(uint value)\\n{\\n  if (value < POISSON_ONE) return 1;\\n  if (value < POISSON_TWO) return 2;\\n  if (value < POISSON_THREE) return 3;\\n  if (value < POISSON_FOUR) return 4;\\n  if (value < POISSON_FIVE) return 5;\\n  if (value < POISSON_SIX) return 6;\\n  if (value < POISSON_SEVEN) return 7;\\n  if (value < POISSON_EIGHT) return 8;\\n  return 9;\\n}\\n\\n// Insertion Array\\nstatic void insert(float arr[], int idArr[], float value, int id)\\n{\\n  float temp;\\n  int tempID;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  {\\n    if (value > arr[i])\\n      break;\\n    temp = arr[i];\\n    tempID = idArr[i];\\n    arr[i] = value;\\n    idArr[i] = id;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    {\\n      arr[i + 1] = temp;\\n      idArr[i + 1] = tempID;\\n    }\\n  }\\n}\\n\\n\\n// Blink Kernel\\nkernel VoronoiNoise : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n    float gain;\\n    float gamma;\\n    float4 dark_col;\\n    float4 light_col;\\n    float4x4 transform;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n    float4x4 transform_inv;\\n    float z;\\n\\n  void define()\\n  {\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n    defineParam(gain, \\\"Gain\\\", 1.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(dark_col, \\\"Dark Colour\\\", float4(0.0f, 0.0f, 0.0f, 1.0f));\\n    defineParam(light_col, \\\"Light Colour\\\", float4(1.0f, 1.0f, 1.0f, 1.0f));\\n  }\\n\\n  void init()\\n  {\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n    transform_inv = transform.invert();\\n    z = transform_inv[2][3];\\n  }\\n\\n  static float3 multVectMatrix(float3 vec, float4x4 M)\\n  {\\n    float3 out = float3(\\n      vec.x * M[0][0] + vec.y * M[0][1] + vec.z * M[0][2] + M[0][3],\\n      vec.x * M[1][0] + vec.y * M[1][1] + vec.z * M[1][2] + M[1][3],\\n      vec.x * M[2][0] + vec.y * M[2][1] + vec.z * M[2][2] + M[2][3]\\n    );\\n\\n    return out;\\n  }\\n\\n  float4 getColour(float a) {\\n    return dark_col * (1 - a) + light_col * a;\\n  }\\n\\n  void process(int2 pos)\\n  {\\n\\n    //Declare some values for later use\\n    int lastRandom, id, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray[MAX_DISTANCE_ARRAY];\\n    int idArray[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray[i] = 6666;\\n\\n    float3 input = float3(float(pos.x), float(pos.y), z);\\n    input = multVectMatrix(input, transform_inv);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    {\\n      for (int j = -1; j < 2; ++j)\\n      {\\n        for (int k = -1; k < 2; ++k)\\n        {\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            id = lastRandom;\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            {\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / RAND_MODULUS;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, idArray, length(input - featurePoint), id+l);\\n            }\\n        }\\n      }\\n    }\\n\\n    float3 col = float3(float(idArray[iRange]) / RAND_MODULUS, 0.0f, 0.0f);\\n    lastRandom = lcgRandom(idArray[iRange]);\\n    col.y = float(lastRandom) / RAND_MODULUS;\\n    lastRandom = lcgRandom(lastRandom);\\n    col.z = float(lastRandom) / RAND_MODULUS;\\n\\n    for(int component = 0; component < 3; component++)\\n      dst(component) = pow( col[component] * gain, gamma);\\n    dst(3) = 1.0f;\\n  }\\n\\n};\"\nuseGPUIfAvailable {{parent.use_gpu}}\nrebuild \"\"\nVoronoiNoise_Range {{parent.range}}\nVoronoiNoise_Gain {{parent.gain}}\nVoronoiNoise_Gamma {{parent.gamma}}\n\"VoronoiNoise_Dark Colour\" {{parent.colour0.r} {parent.colour0.g} {parent.colour0.b} {parent.colour0.a}}\n\"VoronoiNoise_Light Colour\" {{parent.colour1.r} {parent.colour1.g} {parent.colour1.b} {parent.colour1.a}}\nVoronoiNoise_transform {\n    {{parent.NoiseTransform.world_matrix.0} {parent.NoiseTransform.world_matrix.1} {parent.NoiseTransform.world_matrix.2} {parent.NoiseTransform.world_matrix.3}}\n    {{parent.NoiseTransform.world_matrix.4} {parent.NoiseTransform.world_matrix.5} {parent.NoiseTransform.world_matrix.6} {parent.NoiseTransform.world_matrix.7}}\n    {{parent.NoiseTransform.world_matrix.8} {parent.NoiseTransform.world_matrix.9} {parent.NoiseTransform.world_matrix.10} {parent.NoiseTransform.world_matrix.11}}\n    {{parent.NoiseTransform.world_matrix.12} {parent.NoiseTransform.world_matrix.13} {parent.NoiseTransform.world_matrix.14} {parent.NoiseTransform.world_matrix.15}}\n  }\nformat {{{WorleyNoise.format}}}\nrebuild_finalise \"\"\nname VoronoiNoise\nxpos 315\nypos -1\n}\nBlinkScript {\ninputs 0\nProgramGroup 1\nKernelDescription \"1 \\\"Worley\\\" iterate pixelWise 92b94530192011feae18a63400ce40dd1c828de463a428e45921ce9da3f88e94 1 \\\"dst\\\" Write Point 6 \\\"Invert\\\" Bool 1 AA== \\\"Gain\\\" Float 1 AACAPw== \\\"Gamma\\\" Float 1 AACAPw== \\\"Dark Colour\\\" Float 4 AAAAAAAAAAAAAAAAAACAPw== \\\"Light Colour\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"transform\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\nkernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n// C++11 - use #define to avoid global variables (Blink compatibility)\\n#define RAND_MULTIPLIER 48271\\n#define RAND_INCREMENT 0\\n#define RAND_MODULUS 2147483647\\n\\nstatic int lcgRandom(int seed)\\n{\\n  int v = (seed * RAND_MULTIPLIER + RAND_INCREMENT) % RAND_MODULUS;\\n  return (v < 0) ? -v : v;\\n}\\n\\n// FNV Hash\\n#define OFFSET_BASIS 2166136261u\\n#define FNV_PRIME 16777619u\\n\\nstatic uint hash(uint i, uint j, uint k)\\n{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n}\\n\\n// Poisson Distribution\\n#define POISSON_ONE   393325350u\\n#define POISSON_TWO   1022645910u\\n#define POISSON_THREE 1861739990u\\n#define POISSON_FOUR  2700834071u\\n#define POISSON_FIVE  3372109335u\\n#define POISSON_SIX   3819626178u\\n#define POISSON_SEVEN 4075350088u\\n#define POISSON_EIGHT 4203212043u\\n\\nstatic uint probLookup(uint value)\\n{\\n  if (value < POISSON_ONE) return 1;\\n  if (value < POISSON_TWO) return 2;\\n  if (value < POISSON_THREE) return 3;\\n  if (value < POISSON_FOUR) return 4;\\n  if (value < POISSON_FIVE) return 5;\\n  if (value < POISSON_SIX) return 6;\\n  if (value < POISSON_SEVEN) return 7;\\n  if (value < POISSON_EIGHT) return 8;\\n  return 9;\\n}\\n\\n// Distance Functions\\nstatic float EuclidianDistanceFunc(float3 p1, float3 p2)\\n{\\n  return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z);\\n}\\n\\nstatic float ManhattanDistanceFunc(float3 p1, float3 p2)\\n{\\n  return fabs(p1.x - p2.x) + fabs(p1.y - p2.y) + fabs(p1.z - p2.z);\\n}\\n\\nstatic float ChebyshevDistanceFunc(float3 p1, float3 p2)\\n{\\n  float3 diff = p1 - p2;\\n  return max(max(fabs(diff.x), fabs(diff.y)), fabs(diff.z));\\n}\\n\\n\\n// Blink Kernel\\nkernel Worley : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eWrite> dst;\\n\\n  param:\\n    bool invert;\\n    float gain;\\n    float gamma;\\n    float4 dark_col;\\n    float4 light_col;\\n    float4x4 transform;\\n\\n  local:\\n    float4x4 transform_inv;\\n    float z;\\n\\n  void define()\\n  {\\n    defineParam(invert, \\\"Invert\\\", false);\\n    defineParam(gain, \\\"Gain\\\", 1.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(dark_col, \\\"Dark Colour\\\", float4(0.0f, 0.0f, 0.0f, 1.0f));\\n    defineParam(light_col, \\\"Light Colour\\\", float4(1.0f, 1.0f, 1.0f, 1.0f));\\n  }\\n\\n  void init()\\n  {\\n    transform_inv = transform.invert();\\n    z = transform_inv[2][3];\\n  }\\n\\n  static float3 multVectMatrix(float3 vec, float4x4 M)\\n  {\\n    float3 out = float3(\\n      vec.x * M[0][0] + vec.y * M[0][1] + vec.z * M[0][2] + M[0][3],\\n      vec.x * M[1][0] + vec.y * M[1][1] + vec.z * M[1][2] + M[1][3],\\n      vec.x * M[2][0] + vec.y * M[2][1] + vec.z * M[2][2] + M[2][3]\\n    );\\n\\n    return out;\\n  }\\n\\n  float4 getColour(float a) {\\n    return dark_col * (1 - a) + light_col * a;\\n  }\\n\\n  void process(int2 pos)\\n  {\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float distance = 6666.0f;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float3 input = float3(float(pos.x), float(pos.y), z);\\n    input = multVectMatrix(input, transform_inv);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    {\\n      for (int j = -1; j < 2; ++j)\\n      {\\n        for (int k = -1; k < 2; ++k)\\n        {\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            {\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / RAND_MODULUS;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / RAND_MODULUS;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              distance = min(distance, dot(input - featurePoint, input - featurePoint));\\n            }\\n        }\\n      }\\n    }\\n\\n    distance = sqrt(distance);\\n    if (invert)\\n      distance = 1.0f - distance;\\n    distance = pow(distance * gain, gamma);\\n    dst() = getColour(clamp(distance, 0.0f, 1.0f));\\n\\n  }\\n\\n};\"\nuseGPUIfAvailable {{parent.use_gpu}}\nrebuild \"\"\nWorley_Invert {{\"parent.noise_type == 1\"}}\nWorley_Gain {{parent.gain}}\nWorley_Gamma {{parent.gamma}}\n\"Worley_Dark Colour\" {{parent.colour0.r} {parent.colour0.g} {parent.colour0.b} {parent.colour0.a}}\n\"Worley_Light Colour\" {{parent.colour1.r} {parent.colour1.g} {parent.colour1.b} {parent.colour1.a}}\nWorley_transform {\n    {{parent.NoiseTransform.world_matrix.0} {parent.NoiseTransform.world_matrix.1} {parent.NoiseTransform.world_matrix.2} {parent.NoiseTransform.world_matrix.3}}\n    {{parent.NoiseTransform.world_matrix.4} {parent.NoiseTransform.world_matrix.5} {parent.NoiseTransform.world_matrix.6} {parent.NoiseTransform.world_matrix.7}}\n    {{parent.NoiseTransform.world_matrix.8} {parent.NoiseTransform.world_matrix.9} {parent.NoiseTransform.world_matrix.10} {parent.NoiseTransform.world_matrix.11}}\n    {{parent.NoiseTransform.world_matrix.12} {parent.NoiseTransform.world_matrix.13} {parent.NoiseTransform.world_matrix.14} {parent.NoiseTransform.world_matrix.15}}\n  }\nrebuild_finalise \"\"\nname WorleyNoise\nselected true\nxpos 177\nypos -54\n}\nSwitch {\ninputs 5\nwhich {{\"max(parent.noise_type - 1,0)\"}}\nname Switch1\nxpos 177\nypos 249\n}\nDot {\nname Dot1\nnote_font_size 41\nxpos 211\nypos 314\n}\nset Nd287b900 [stack 0]\npush $N55edd600\npush $Nd287b900\nInput {\ninputs 0\nname Input\nxpos 10\nypos -78\n}\nMerge2 {\ninputs 2+1\nname Merge1\nlabel \"\\[ expr { [value mix] == 1 ? \\\" \\\" : \\[concat Mix: [value mix]] }]\"  \ndisable {{replace}}\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge2\nlabel \"\\[ expr { [value mix] == 1 ? \\\" \\\" : \\[concat Mix: [value mix]] }]\"  \ndisable {{!replace}}\n}\nOutput {\nname Output1\nxpos 10\nypos 533\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelCombiner.gizmo",
    "content": "Group {\n name ChannelCombiner\n tile_color 0x9e3c63ff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ChannelCombiner}\n addUserKnob {41 from0 l \"Channel 1\" T Cmask01.from0}\n addUserKnob {41 value T Mult_red.value}\n addUserKnob {41 operation_4 l Ch1-->Ch2 T MergeR_G.operation}\n addUserKnob {41 disable_1 l disable -STARTLINE T MergeR_G.disable}\n addUserKnob {41 from0_1 l \"Channel 2\" T Cmask02.from0}\n addUserKnob {41 value_1 l value T Mult_Green.value}\n addUserKnob {41 operation_1 l Ch2-->Ch3 T Merge_G_B.operation}\n addUserKnob {41 disable_2 l disable -STARTLINE T Merge_G_B.disable}\n addUserKnob {41 from0_2 l \"Channel 3\" T Cmask03.from0}\n addUserKnob {41 value_2 l value T Mult_blue1.value}\n addUserKnob {41 operation_2 l Ch3-->Ch4 T MergeB_A.operation}\n addUserKnob {41 disable_3 l disable -STARTLINE T MergeB_A.disable}\n addUserKnob {41 from0_3 l \"Channel 4\" T Cmask04.from0}\n addUserKnob {41 mix l value T Cmask04.mix}\n addUserKnob {26 \"\"}\n addUserKnob {6 clampCheck l \"Clamp Values?\" +STARTLINE}\n clampCheck true\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Choose channels and a mix of the channel, and the merge operation between the different channels.\\n\\nOption to clamp the output\" T ChannelCombiner}\n addUserKnob {26 ver l Version: T v07}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 83\n  ypos -657\n }\n Dot {\n  name Dot1\n  xpos 117\n  ypos -633\n }\nset N9968abc0 [stack 0]\npush $N9968abc0\npush $N9968abc0\npush $N9968abc0\npush $N9968abc0\n Remove {\n  name Remove1\n  xpos -371\n  ypos -643\n }\n Copy {\n  inputs 2\n  to0 rgba.red\n  name Cmask01\n  xpos -371\n  ypos -519\n }\n Copy {\n  inputs 2\n  to0 rgba.green\n  name Cmask02\n  xpos -203\n  ypos -519\n }\n Copy {\n  inputs 2\n  to0 rgba.blue\n  name Cmask03\n  xpos -65\n  ypos -519\n }\n Copy {\n  inputs 2\n  to0 rgba.alpha\n  name Cmask04\n  xpos 83\n  ypos -519\n }\n Shuffle {\n  name channel_selector\n  label \"\\[value in]\"\n  xpos 83\n  ypos -356\n }\nset N996b0460 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Alpha\n  xpos 83\n  ypos -193\n }\n Multiply {\n  name Mult_alpha\n  xpos 83\n  ypos -134\n }\npush $N996b0460\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Blue\n  xpos -65\n  ypos -192\n }\n Multiply {\n  name Mult_blue1\n  xpos -75\n  ypos -131\n }\npush $N996b0460\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Green\n  xpos -190\n  ypos -193\n }\n Multiply {\n  name Mult_Green\n  xpos -190\n  ypos -139\n }\npush $N996b0460\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Red\n  xpos -303\n  ypos -194\n }\n Multiply {\n  name Mult_red\n  xpos -303\n  ypos -139\n }\n Merge2 {\n  inputs 2\n  name MergeR_G\n  xpos -249\n  ypos -53\n }\n Merge2 {\n  inputs 2\n  name Merge_G_B\n  xpos -75\n  ypos -53\n }\n Merge2 {\n  inputs 2\n  name MergeB_A\n  xpos 83\n  ypos -53\n }\n Clamp {\n  name Clamp1\n  xpos 83\n  ypos 104\n  disable {{!parent.clampCheck}}\n }\n Shuffle {\n  red alpha\n  green black\n  blue black\n  name Shuffle20\n  label \"\\[value in]\"\n  xpos 83\n  ypos 232\n }\nset N9974e150 [stack 0]\n Output {\n  name Output2\n  xpos 83\n  ypos 398\n }\npush $N9974e150\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelControl.gizmo",
    "content": "Group {\n name ChannelControl\n help \"Mix the ratio of Red, Green, Blue, Alpha Channels and choose a Merge operation.\\nResult is a matte output to RGBA\"\n tile_color 0x9e3c63ff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ChannelControl}\n addUserKnob {41 channel l Channel T Shuffle6.in}\n addUserKnob {41 op l Operation T Merge1.operation}\n addUserKnob {6 clamp l \"Clamp Output\" -STARTLINE}\n clamp true\n addUserKnob {7 red l \"<b><font color=crimson>Red\"}\n red 1\n addUserKnob {7 green l \"<b><font color=limegreen>Green\"}\n green 1\n addUserKnob {7 blue l \"<b><font color=dodgerblue>Blue\"}\n blue 1\n addUserKnob {7 alpha l \"<b><font color=white>Alpha\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge4.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge4.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge4.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge4.fringe}\n addUserKnob {41 mix T Merge4.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<big> Tony Lyons\"}\n addUserKnob {26 desc l Description: T ChannelControl}\n addUserKnob {26 ver l Version: T v07}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 354\n  ypos 238\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 141\n  ypos -279\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 141\n  ypos -224\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 175\n  ypos -181\n }\nset N378a3fc0 [stack 0]\n Shuffle {\n  name Shuffle6\n  note_font_color 0xffffffff\n  xpos 258\n  ypos -188\n }\n Multiply {\n  channels rgba\n  value {{parent.red} {parent.green} {parent.blue} {parent.alpha}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 258\n  ypos -131\n }\nset N378884b0 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle5\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 545\n  ypos -22\n }\npush $N378884b0\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle4\n  tile_color 0x3d3f8e00\n  note_font_color 0xffffffff\n  xpos 447\n  ypos -23\n }\npush $N378884b0\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle2\n  tile_color 0x3f633800\n  note_font_color 0xffffffff\n  xpos 350\n  ypos -24\n }\npush $N378884b0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  tile_color 0x93000000\n  note_font_color 0xffffffff\n  xpos 258\n  ypos -23\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge1\n  xpos 258\n  ypos 28\n }\n Merge2 {\n  inputs 2\n  operation {{parent.Merge1.operation}}\n  name Merge2\n  xpos 258\n  ypos 77\n }\n Merge2 {\n  inputs 2\n  operation {{parent.Merge1.operation}}\n  name Merge3\n  xpos 258\n  ypos 128\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos 258\n  ypos 177\n  disable {{!parent.clamp}}\n }\npush $N378a3fc0\n Multiply {\n  channels rgba\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos 141\n  ypos -128\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge4\n  selected true\n  xpos 141\n  ypos 238\n }\n Output {\n  name Output1\n  xpos 141\n  ypos 296\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelCreator.gizmo",
    "content": "Group {\n name ChannelCreator\n tile_color 0x9e3c63ff\n label \"\\n\"\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 User l ChannelCreator}\n addUserKnob {41 in l input T Shuffle1.in}\n addUserKnob {22 pop_list l \"Populate List\" T \"channelName = nuke.thisNode()\\[\\\"in\\\"].value()\\n\\nnewRed = str(channelName) + \\\".red\\\"\\nnewGreen = str(channelName) + \\\".green\\\"\\nnewBlue = str(channelName) + \\\".blue\\\"\\nnewAlpha = str(channelName) + \\\".alpha\\\"\\n\\nnuke.thisNode()\\[\\\"in_red\\\"].setValue(newRed)\\nnuke.thisNode()\\[\\\"in_green\\\"].setValue(newGreen)\\nnuke.thisNode()\\[\\\"in_blue\\\"].setValue(newBlue)\\nnuke.thisNode()\\[\\\"in_alpha\\\"].setValue(newAlpha)\\n\" +STARTLINE}\n addUserKnob {1 in_red l Red}\n in_red rgba.red\n addUserKnob {1 channel1 l Channel1 -STARTLINE}\n addUserKnob {1 in_green l Green}\n in_green rgba.green\n addUserKnob {1 channel2 l Channel2 -STARTLINE}\n addUserKnob {1 in_blue l Blue}\n in_blue rgba.blue\n addUserKnob {1 channel3 l Channel3 -STARTLINE}\n addUserKnob {1 in_alpha l Alpha}\n in_alpha rgba.alpha\n addUserKnob {1 channel4 l Channel4 -STARTLINE}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {22 generateCopy l \"generate copy node\" T \"## Function Variables\\nchannelDict = \\{\\} ## Dictionary for all channel variables\\ncopyChannels = \\{\\} ## Dictionary for Copy node to place layer variable\\ntoList = \\['to0', 'to1', 'to2', 'to3'] ## List of Copy Node to variables\\ngroupLayerName = \\[ 'in_red', 'in_green', 'in_blue', 'in_alpha'] ## List of Channel knobs\\ncopyLayerNames = \\[ 'from0', 'from1', 'from2', 'from3'] ## List of Copy Node knobs\\n\\n## Grab group node name\\t\\ngroup = nuke.toNode('this')\\ngroup.end()\\n\\n## Deselect all nodes\\nnuke.selectAll()\\nnuke.invertSelection()\\n\\n## List for channel variables\\nchannelList = sorted (\\[ each for each in group.knobs().keys() if 'channel' in each.lower()])\\n\\n## Set up channel dictionary with values\\nfor each in channelList:\\n\\tvalue = group\\[each].getValue()\\n\\tchannelDict\\[each] = value\\n\\n## Creates new channel and sets up copyNode dictionary\\nfor each, copy in zip(sorted(channelDict.keys()), toList):\\n\\tif channelDict\\[each] == '':\\n\\t\\t## Store name in copy Dictionary\\n\\t\\tcopyChannels\\[copy] = 'none'\\n\\t\\n\\tif channelDict\\[each] != '':\\n\\t\\tif ' ' in channelDict\\[each]:\\n\\t\\t\\tchannelDict\\[each] = channelDict\\[each].replace( ' ', '_')\\n\\t\\t\\n\\t\\t## Construct channel name\\n\\t\\tvalue = channelDict\\[each]+'.red'\\n\\n\\t\\t## Store name in copy Dictionary\\n\\t\\tcopyChannels\\[copy] = value \\n\\t\\t\\n\\t\\t## Create layer from channel values\\n\\t\\tnuke.Layer( channelDict\\[each], \\[ value] )\\n\\n## Create Copy Node\\ncopyNode = nuke.createNode('Copy')\\n\\n## Grab layer names\\nfor each, x in zip( groupLayerName, copyLayerNames):\\n\\tvalue = group\\[each].getValue()\\n\\t\\n\\t## Set Copy node layer\\n\\tcopyNode\\[x].setValue( value)\\n\\n## Set Copy Node channel\\nfor key in sorted(copyChannels.keys()):\\n\\tcopyNode\\[ key].setValue( copyChannels\\[key])\\n\\n\\nfor num, channel in enumerate( sorted( copyChannels.keys())):\\n\\tprint copyChannels\\[ channel], channel\\n\\tif copyChannels\\[channel] == 'none':\\n\\t\\tcopyNode\\[ copyLayerNames\\[num]].setValue( 'none')\" +STARTLINE}\n addUserKnob {26 help_2 l \" \" T \"All new Channels will end in .red\\n<New_Channel_Name>.red\"}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Add layer name descriptions to Channels 1,2,3,4\\n\\nPopulate list enters rgba.red, rgba.green, rgba.blue, rgba.alpha into input side\\n\\nCreates a copy node, that copies red, green, blue, alpha channels over to newly created channels with layernames\\n\\nThis creates layer.red only to minimize channels, Does Not create layer.red, layer.green, layer.blue, etc\" T ChannelCreator}\n addUserKnob {26 ver l Version: T v02}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 170\n  ypos -177\n }\n Shuffle {\n  name Shuffle1\n  xpos 170\n  ypos -136\n }\n Output {\n  name Output1\n  xpos 170\n  ypos -36\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChromaSmear.gizmo",
    "content": "Group {\nname ChromaSmear\ntile_color 0xd26524ff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected true\naddUserKnob {20 ChromaSmear}\naddUserKnob {26 note l \"\" +STARTLINE T \"<b>Area input</b> = pre-mask (mult vectors)\"}\naddUserKnob {26 note3 l \"      \" -STARTLINE T \"<b>Vector input</b> = custom vectors\"}\naddUserKnob {26 note2 l \"\" +STARTLINE T \"<b>Mask input </b>= post-mask (keymix)\"}\naddUserKnob {26 \"\"}\naddUserKnob {7 abberation R -5 5}\nabberation 3\naddUserKnob {7 saturation}\nsaturation 1\naddUserKnob {7 offset R -1 1}\noffset 0.5\naddUserKnob {26 \"\"}\naddUserKnob {41 translate T Transform1.translate}\naddUserKnob {41 rotate T Transform1.rotate}\naddUserKnob {41 scale T Transform1.scale}\naddUserKnob {41 center T Transform1.center}\naddUserKnob {41 opacity l fade T Radial1.opacity}\naddUserKnob {26 \"\"}\naddUserKnob {7 overallAmount l \"Overall Amount\" R -2 3}\noverallAmount 1\naddUserKnob {7 Mask_softness l \"Radial Mask\"}\naddUserKnob {6 exportAPchroma l \"Export apChroma layer\" +STARTLINE}\nexportAPchroma true\naddUserKnob {26 \"\"}\naddUserKnob {26 \"\" l mask T \"\"}\naddUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge5.maskChannelInput}\naddUserKnob {41 inject -STARTLINE T Merge5.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T Merge5.invert_mask}\naddUserKnob {41 fringe -STARTLINE T Merge5.fringe}\naddUserKnob {41 mix T Merge5.mix}\naddUserKnob {26 \"\"}\naddUserKnob {26 credit l \"\" +STARTLINE T \"Luc Julien 2010 | edited by Tony Lyons 2024\"}\n}\nInput {\ninputs 0\nname InputMask\nxpos -31\nypos 1074\nnumber 1\n}\nInput {\ninputs 0\nname InputArea\nxpos 311\nypos 20\nnumber 2\n}\nAddChannels {\nchannels rgba\ncolor 1\nname AddChannels1\nxpos 311\nypos 58\n}\nInvert {\nname Invert2\nxpos 311\nypos 97\n}\nInput {\ninputs 0\nname Inputvectors\nlabel \"\\[value number]\"\nxpos 178\nypos 5\nnumber 3\n}\nRadial {\ninputs 0\ncliptype none\ninvert true\nopacity 0.25\narea {{curve i} {curve i} {input.width i} {input.height i}}\nsoftness {{parent.Mask_softness*-1+1+.5 i x1 0.585}}\nplinear true\nname Radial1\nxpos 145\nypos -108\n}\nInput {\ninputs 0\nname Inputimg\nxpos -210\nypos -402\n}\nDot {\nname Dot1\nnote_font_size 41\nxpos -176\nypos -312\n}\nset N1a4f5220 [stack 0]\nRemove {\nname Remove1\nxpos 31\nypos -322\n}\nAdjBBox {\nnumpixels {{width/4} {width/4}}\nname AdjBBox1\nxpos 31\nypos -237\n}\nExpression {\nexpr0 x\nexpr1 y\nname Expression1\nxpos 31\nypos -213\n}\nset N61e77b00 [stack 0]\nDot {\nname Dot2\nxpos -79\nypos -210\n}\nTransform {\nscale 1.1\ncenter {{input.width/2} {input.height/2}}\nblack_outside false\nname Transform1\nxpos -113\nypos -189\n}\npush $N61e77b00\nMerge2 {\ninputs 2\noperation minus\nname Merge1\nxpos 31\nypos -189\n}\nInvert {\nchannels rgba\nname Invert1\nxpos 31\nypos -165\n}\nMerge2 {\ninputs 2\noperation multiply\nname Merge2\nxpos 31\nypos -54\n}\nSwitch {\ninputs 2\nwhich {{\"\\[exists parent.input3]\"}}\nname Switch1\nxpos 31\nypos 17\n}\nMultiply {\ninputs 1+1\nvalue 0\nname Multiply1\nlabel \"\\[value value]\"\nxpos 31\nypos 91\n}\nMultiply {\nvalue {{parent.overallAmount}}\nname Multiply2\nlabel \"\\[value value]\"\nxpos 31\nypos 192\n}\nDot {\nname Dot5\nnote_font_size 41\nxpos 65\nypos 312\n}\npush $N1a4f5220\nCopy {\ninputs 2\nfrom0 rgba.red\nto0 forward.u\nfrom1 rgba.green\nto1 forward.v\nname Copy1\nxpos -210\nypos 296\n}\nset N1c2c5f10 [stack 0]\nShuffle {\nred black\ngreen black\nname Shuffle3\nxpos -119\nypos 374\n}\nVectorBlur {\nchannels {-rgba.red -rgba.green rgba.blue rgba.alpha}\nuv forward\nscale -1\noffset {{(-.5*abberation*.8)+parent.offset}}\nname VectorBlur3\nxpos -119\nypos 412\n}\nset N646404e0 [stack 0]\npush $N1c2c5f10\nShuffle {\nred black\nblue black\nname Shuffle2\nxpos -210\nypos 375\n}\nVectorBlur {\nchannels {-rgba.red rgba.green -rgba.blue rgba.alpha}\nuv forward\nscale -1\noffset {{(-.5*abberation*.6)+parent.offset}}\nname VectorBlur2\nxpos -210\nypos 413\n}\nset N1c2622c0 [stack 0]\npush $N1c2c5f10\nShuffle {\ngreen black\nblue black\nname Shuffle1\nxpos -297\nypos 375\n}\nVectorBlur {\nchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\nuv forward\nscale -1\noffset {{(-.5*abberation*.4)+parent.offset}}\nname VectorBlur1\nxpos -297\nypos 413\n}\nset N1ca3d980 [stack 0]\npush $N646404e0\nExpression {\nexpr3 a*0.114\nname Expression4\nxpos -119\nypos 466\n}\npush $N1c2622c0\nExpression {\nexpr3 a*0.587\nname Expression3\nxpos -210\nypos 468\n}\npush $N1ca3d980\nExpression {\nexpr3 a*0.299\nname Expression2\nxpos -297\nypos 467\n}\nMerge2 {\ninputs 2\noperation plus\nname Merge3\nxpos -248\nypos 509\n}\nMerge2 {\ninputs 2\noperation plus\nname Merge4\nxpos -182\nypos 553\n}\nadd_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.red\nname Copy2\nxpos -182\nypos 603\ndisable {{!parent.exportAPchroma}}\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.green\nname Copy3\nxpos -182\nypos 656\ndisable {{!parent.exportAPchroma}}\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.blue\nname Copy4\nxpos -182\nypos 710\ndisable {{!parent.exportAPchroma}}\n}\npush $N1c2c5f10\nVectorBlur {\nuv forward\nscale -1.6\nname VectorBlur4\nxpos 7\nypos 409\n}\nAddChannels {\nchannels rgba\nname AddChannels2\nxpos 7\nypos 447\n}\nset N66be8190 [stack 0]\npush $N66be8190\npush $N66be8190\npush $N66be8190\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.red\nname Copy7\nxpos 77\nypos 499\ndisable {{!parent.exportAPchroma}}\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.green\nname Copy8\nxpos 77\nypos 553\ndisable {{!parent.exportAPchroma}}\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 apChroma.blue\nname Copy9\nxpos 77\nypos 606\ndisable {{!parent.exportAPchroma}}\n}\nMerge2 {\ninputs 2\noperation copy\noutput rgb\nalso_merge apChroma\nmix {{parent.saturation}}\nname Merge6\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos -182\nypos 773\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nDot {\nname Dot29\nnote_font_size 41\nxpos -148\nypos 857\n}\nset Nb70ea430 [stack 0]\nShuffle {\nin apChroma\nname Shuffle4\nlabel \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat → \\[value out2]] \\}]\"\nxpos -58\nypos 841\n}\nSaturation {\nsaturation 0\nname Saturation1\nxpos -58\nypos 893\n}\nset N1c30b770 [stack 0]\npush $N1c30b770\npush $Nb70ea430\nCopy {\ninputs 2\nfrom0 rgba.red\nto0 rgba.alpha\nname Copy5\nxpos -182\nypos 887\n}\nCopy {\ninputs 2\nfrom0 rgba.red\nto0 apChroma.alpha\nname Copy6\nxpos -182\nypos 925\ndisable {{!parent.exportAPchroma}}\n}\nCrop {\nbox {{curve i} {curve i} {input.width i} {input.height i}}\nname Crop1\nxpos -182\nypos 1016\n}\npush $N1a4f5220\nDot {\nname Dot3\nnote_font_size 41\nxpos -424\nypos -312\n}\nDot {\nname Dot4\nnote_font_size 41\nxpos -424\nypos 1084\n}\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge apChroma\nname Merge5\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos -182\nypos 1080\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nOutput {\nname Output1\nxpos -182\nypos 1185\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Chromatik.gizmo",
    "content": "Group {\n name Chromatik\n help \"Chromatic aberration node using a real spectral gradient.\"\n addUserKnob {20 User l Chromatik}\n addUserKnob {41 center l \"Center Point\" T RadialVectorGenerator1.center}\n addUserKnob {41 ratio l \"Aspect Ratio\" T RadialVectorGenerator1.ratio}\n addUserKnob {26 \"\"}\n addUserKnob {41 Multiplier l Size T Vector_Chromatic.Multiplier}\n addUserKnob {26 \"\"}\n addUserKnob {41 protect l \"Protect Center\" T RadialVectorGenerator1.protect}\n addUserKnob {41 gamma l \"Falloff Hardness\" T RadialVectorGenerator1.gamma}\n addUserKnob {41 rotate l Swirl T RadialVectorGenerator1.rotate}\n addUserKnob {26 \"\"}\n addUserKnob {41 saturation l Saturation T Vector_Chromatic.saturation}\n addUserKnob {41 offset l Offset T Vector_Chromatic.offset}\n addUserKnob {26 \"\"}\n addUserKnob {41 min l \"Min Samples\" T Vector_Chromatic.min}\n addUserKnob {41 max l \"Max Samples\" -STARTLINE T Vector_Chromatic.max}\n addUserKnob {26 \"\"}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nChromatik\\nVersion 1.1\\n2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.1 - 2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 829\n  ypos -285\n }\n Dot {\n  name Dot52\n  tile_color 0xcccccc00\n  xpos 863\n  ypos -181\n }\nset Nbfccea0 [stack 0]\n Group {\n  name RadialVectorGenerator1\n  xpos 985\n  ypos -184\n  disable {{\"!\\[exists parent.input]\"}}\n  addUserKnob {20 genTab l Generator}\n  addUserKnob {12 center l \"Center Point\" t \"Center of the Radial vectors\"}\n  center {960 540}\n  addUserKnob {7 ratio l \"Aspect Ratio\" t \"Distort the circle to a different aspect ratio.\" R 0.5 2}\n  ratio 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 protect l \"Protect Center\" t \"Create an area around your center that won't be affected by vectors. (0,0 vectors)\\nOther vectors will be spread around that center so that there isn't a sharp transition.\\n\\nA value of 1 or above would protect the whole image, not producting any vectors.\"}\n  addUserKnob {7 gamma l Gamma t \"Gamma the magnitude of the vectors, to create a sharper or smoother transition between the center and the outskirt areas.\" R 0.1 2}\n  gamma 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 rotate l Rotate t \"Rotating the vectors can create either a zoom type of vectors (0, 180 rotation), a spin (90, 270 rotation) or a swirl for any value in between.\" R 0 360}\n  addUserKnob {7 multiply l Multiply t \"Multpilies the overall value/length of the vectors.\" R 0 10}\n  multiply 1\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -908\n   ypos 131\n  }\n  Expression {\n   expr0 x/width\n   expr1 y/height\n   expr2 0\n   name Expression1\n   xpos -908\n   ypos 182\n  }\n  BlinkScript {\n   recompileCount 28\n   ProgramGroup 1\n   KernelDescription \"2 \\\"RadialVectors\\\" iterate pixelWise 022dfefcb578cac450e99b3e9eaa966ae848c25352f9d35bd31e5f1e18b9e87e 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 7 \\\"Aspect Ratio\\\" Float 1 AACAPw== \\\"Center\\\" Float 2 AACAPwAAgD8= \\\"Protect Center\\\" Float 1 AAAAAA== \\\"Rotate Vectors\\\" Float 1 AAAAAA== \\\"Gamma\\\" Float 1 AACAPw== \\\"Multiply\\\" Float 1 AACAPw== \\\"size\\\" Float 2 AAAAAAAAAAA= 7 \\\"ratio\\\" 1 1 \\\"center\\\" 2 1 \\\"protect\\\" 1 1 \\\"rotate\\\" 1 1 \\\"gamma\\\" 1 1 \\\"multiply\\\" 1 1 \\\"size\\\" 2 1 1 \\\"_imgDiag\\\" Float 1 1 AAAAAA==\"\n   kernelSource \"kernel RadialVectors : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;  //the input image\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float ratio;  //This parameter is made available to the user.\\n    float2 center;\\n    float protect;\\n    float rotate;\\n    float gamma;\\n    float multiply;\\n    float2 size;\\n\\n  local:\\n\\n    float _imgDiag; //Image diagonal\\n\\n  //In define(), parameters can be given labels and default values.\\n  void define() \\{\\n    defineParam(ratio, \\\"Aspect Ratio\\\", 1.0f);\\n    defineParam(center, \\\"Center\\\", float2(1.0f,1.0f));\\n    defineParam(protect, \\\"Protect Center\\\", 0.0f);\\n    defineParam(rotate, \\\"Rotate Vectors\\\", 0.0f);\\n    defineParam(gamma, \\\"Gamma\\\", 1.0f);\\n    defineParam(multiply, \\\"Multiply\\\", 1.0f);\\n  \\}\\n\\n  //The init() function is run before any calls to kernel().\\n  void init() \\{\\n    _imgDiag = length(size);\\n  \\}\\n\\n  //The kernel function is run at every pixel to produce the output.\\n  void process(int2 pos) \\{\\n    //float2 posf = float2(pos.x, pos.y);\\n    float2 posf = float2(src(0)*size.x, src(1)*size.y);\\n    float2 v = posf-center;\\n    v = v/(_imgDiag/2.0f);\\n    \\n    // Edit vector magnitude: Blackpoint+clamp for protecting center\\n    if (protect < (1.0f))\\{ //If we protect the whole image then we don't need to output any vectors\\n      // Edit aspect Ratio\\n      v = float2(v.x, v.y * ratio);\\n      // Find vector Magnitude so that can be edited \\n      float magv = length(v);\\n\\n      magv = max((magv - protect) / (1-protect),0.0f);\\n      magv = pow(magv, 1/gamma);\\n      float2 normv;\\n      if (magv>0)\\{\\n        normv = normalize(v);\\n      \\}\\n      else \\{\\n        normv = float2(1.0f, 0.0f);\\n      \\}\\n      v = normv * magv;\\n      // Rotate Normals\\n      if (rotate != 0.0f)\\{\\n        float r = rotate * 3.141592653589793f / 180.0f;\\n        v = float2( v.x * cos(r) - v.y * sin(r), v.x * sin(r) + v.y * cos(r));\\n      \\}\\n      // Multiply Output\\n      //v = v * (_imgDiag/4) * multiply;\\n      v = v * multiply;\\n      dst() = float4(v.x, v.y, 0.0f, 0.0f);\\n      //dst() = float4(magv, magv, magv, 0.0f);\\n    \\}\\n    else\\{\\n      dst() = float4(0.0f);\\n    \\}\\n\\n   \\}\\n\\};\\n\\n\"\n   rebuild \"\"\n   \"RadialVectors_Aspect Ratio\" {{parent.ratio}}\n   RadialVectors_Center {{parent.center} {parent.center}}\n   \"RadialVectors_Protect Center\" {{parent.protect}}\n   \"RadialVectors_Rotate Vectors\" {{parent.rotate}}\n   RadialVectors_Gamma {{parent.gamma}}\n   RadialVectors_Multiply {{parent.multiply}}\n   RadialVectors_size {{width} {height}}\n   rebuild_finalise \"\"\n   name BlinkScript8\n   xpos -908\n   ypos 271\n  }\n  Output {\n   name Output1\n   xpos -908\n   ypos 340\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"We base the calculation on a modified STMAP instead of actual x/y because blinkscript doesn't handle proxy res very well\"\n   xpos -797\n   ypos 180\n  }\n end_group\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 1019\n  ypos -41\n }\npush $Nbfccea0\n Group {\n  inputs 2\n  name Vector_Chromatic\n  xpos 829\n  ypos -44\n  disable {{\"!\\[exists parent.input]\"}}\n  addUserKnob {20 Chromatik}\n  addUserKnob {26 title l \"Generate Gradient\"}\n  addUserKnob {41 lut l \"\" -STARTLINE T ColorLookup1.lut}\n  addUserKnob {6 clampg l \"Clamp Gradient\" +STARTLINE}\n  clampg true\n  addUserKnob {7 saturation l Saturation R 0 2}\n  saturation 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 Multiplier R 0 250}\n  Multiplier 50\n  addUserKnob {7 offset l Offset t \"Negate Vectors (-1)\\nCenter Vectors (0)\\nRegular Vectors (1)\" R -1 1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 min l \"Min Samples\" t \"How many times the operation will be run.\\nHigher Values = Smoother result = Slower render\"}\n  min 5\n  addUserKnob {3 max l \"Max Samples\" t \"How many times the operation will be run.\\nHigher Values = Smoother result = Slower render\" -STARTLINE}\n  max 150\n  addUserKnob {6 normalize l Normalize t \"Conserves original color better\" +STARTLINE}\n  normalize true\n  addUserKnob {6 XYZ_space t \"Process in XYZ space.\" -STARTLINE}\n  addUserKnob {6 bbox l \"BBox Union\" t \"Union the BBox of the image and the vectormap rather than using the image's bbox\" -STARTLINE}\n }\n  BackdropNode {\n   inputs 0\n   name BackdropNode1\n   tile_color 0x71c67100\n   label \"Gradient Generator\"\n   note_font_size 42\n   xpos 368\n   ypos -422\n   bdheight 293\n  }\n  Input {\n   inputs 0\n   name Img\n   xpos 206\n   ypos -530\n  }\n  Dot {\n   name Dot3\n   xpos 240\n   ypos -448\n  }\nset Nc02b6d0 [stack 0]\n  Input {\n   inputs 0\n   name Vector_Map\n   xpos 587\n   ypos -533\n   number 1\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 587\n   ypos -452\n   disable {{parent.bbox}}\n  }\n  Dot {\n   name Dot1\n   tile_color 0x9e3c6300\n   xpos 621\n   ypos 18\n  }\n  Reformat {\n   inputs 0\n   type \"to box\"\n   box_width 100\n   box_height 4\n   box_fixed true\n   name Reformat2\n   xpos 378\n   ypos -342\n  }\n  Ramp {\n   p0 {0 0}\n   p1 {99 0}\n   name Ramp1\n   xpos 378\n   ypos -316\n  }\n  ColorLookup {\n   lut {master {}\n     red {curve C x-0.05884177983 -0.004536509514 x0.01015070826 0 s0.1400000006 x0.1017729789 0.1076634228 x0.1737238914 0 x0.4376193285 0 x0.6908689141 0.9834897519 S x0.7745882273 0.8638155506 C x0.871829927 0.2472041845 S x1.006029606 0 C x1.015911102 0}\n     green {curve x0.0120717017 0 x0.1647586226 0 x0.2049030662 0 x0.5025014281 0.9204615951 x0.6684435606 0.3995269537 x0.7975517511 0 x0.905554533 0 x1.027772069 0 x1.02872479 0}\n     blue {curve x-0.06189316511 0 s0 x0.01178315841 0 x0.06641255319 0.1264923215 C x0.1299110055 0.6372379661 x0.3119857609 0.7685220838 S x0.360124141 0.3393670321 x0.5631426573 0 C x0.7848843336 0 S x0.9272136688 0 x1.066449285 0 x1.069784403 0}\n     alpha {}}\n   name ColorLookup1\n   xpos 378\n   ypos -290\n  }\n  Clamp {\n   minimum_enable {{parent.clampg}}\n   maximum_enable false\n   name Clamp4\n   xpos 378\n   ypos -264\n  }\n  Saturation {\n   saturation {{parent.saturation}}\n   name Saturation1\n   xpos 378\n   ypos -226\n  }\n  Expression {\n   expr3 clamp(.2126*r+.7152*g+0.0722*b)\n   name Luma_to_Alpha\n   xpos 378\n   ypos -159\n  }\n  Colorspace {\n   colorspace_out CIE-XYZ\n   name Colorspace2\n   label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n   xpos 378\n   ypos -91\n   disable {{1-parent.XYZ_space}}\n  }\npush $Nc02b6d0\n  Colorspace {\n   colorspace_out CIE-XYZ\n   name Colorspace1\n   label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n   xpos 206\n   ypos -90\n   disable {{1-parent.XYZ_space}}\n  }\n  Dot {\n   name Dot2\n   xpos 240\n   ypos 18\n  }\n  BlinkScript {\n   inputs 3\n   recompileCount 8\n   ProgramGroup 1\n   KernelDescription \"2 \\\"Chromatic\\\" iterate pixelWise 6f453a157371752868a37327fbdb66c1856663f8af8ccd497d5f5f6edc9785cd 4 \\\"src\\\" Read Random \\\"gradient\\\" Read Random \\\"vector\\\" Read Point \\\"dst\\\" Write Point 6 \\\"Multiply\\\" Float 1 AACAPw== \\\"Min Samples\\\" Int 1 BAAAAA== \\\"Max Samples\\\" Int 1 UAAAAA== \\\"Offset\\\" Float 1 AAAAAA== \\\"Normalize\\\" Bool 1 AQ== \\\"proxy\\\" Float 1 AAAAAA== 6 \\\"multiply\\\" 1 1 \\\"min_samples\\\" 1 1 \\\"max_samples\\\" 1 1 \\\"offset\\\" 1 1 \\\"normalize\\\" 1 1 \\\"proxy\\\" 1 1 0\"\n   kernelSource \"kernel Chromatic : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> gradient;  //color gradient\\n  Image<eRead, eAccessPoint, eEdgeClamped> vector;  //VectorMap\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float multiply;  //This parameter is made available to the user.\\n    int min_samples;\\n    int max_samples;\\n    float offset;\\n    bool normalize;\\n    float proxy;\\n\\n  local:\\n\\n\\n  //In define(), parameters can be given labels and default values.\\n  void define() \\{\\n    defineParam(multiply, \\\"Multiply\\\", 1.0f);\\n    defineParam(min_samples, \\\"Min Samples\\\", 4); \\n    defineParam(max_samples, \\\"Max Samples\\\", 80); \\n    defineParam(offset, \\\"Offset\\\", 0.0f);\\n    defineParam(normalize, \\\"Normalize\\\", true);\\n  \\}\\n\\n  //The kernel function is run at every pixel to produce the output.\\n  void process(int2 pos) \\{\\n    SampleType(src) valueSum(0);\\n    SampleType(src) curVal(0);\\n    float2 fpos = float2(pos.x,pos.y);  \\n    float nSample;\\n    int l;\\n\\n\\n    //Read Vector value\\n    float2 v = float2(vector(0), vector(1));\\n    // Take into account the proxy scale\\n    v = v*proxy;\\n    //Vector Length int\\n    l = int(floor(length(v)*fabs(multiply)+0.5));\\n    \\n\\n    //Define Adaptive Sampling\\n    int samples;\\n    if (l < min_samples)\\{samples = min_samples;\\}\\n    else if (l > max_samples)\\{samples = max_samples;\\}\\n    else \\{samples = l;\\}\\n\\n\\n    //Init value for normalization \\n    float4 normSum = float4(0.0f) ;\\n\\n    // Loop through Samples\\n    for( int a = 0; a < samples; a ++ )\\n    \\{\\n      // Define normalised index of this sample (0-1 range)\\n      nSample = float(a)/samples;\\n\\n      // Define the vector value for this pass (depending on offset)\\n      float2 Ofs = ((v*nSample)-(v*(offset/2.0f+0.5f)))*multiply+fpos;\\n\\n      curVal = bilinear(src,Ofs.x,Ofs.y); //This function does a bilinear sampling of the scr image\\n      int gIndex = int(99.0f*proxy*nSample+0.5f);\\n      float4 gradVal = gradient(gIndex,0);\\n      valueSum += curVal*gradVal;\\n      normSum += float4(gradVal);\\n    \\}\\n\\n    if (normalize)\\{\\n      dst() = (valueSum/float(samples))/(normSum/float(samples));\\n    \\}\\n    else \\{\\n      dst() = (valueSum/float(samples));\\n    \\}\\n  \\}\\n\\};\\n\\n\"\n   rebuild \"\"\n   Chromatic_Multiply {{parent.Multiplier}}\n   \"Chromatic_Min Samples\" {{parent.min}}\n   \"Chromatic_Max Samples\" {{parent.max}}\n   Chromatic_Offset {{parent.offset}}\n   Chromatic_Normalize {{parent.normalize x50 0}}\n   Chromatic_proxy {{\"proxy ? (proxy_type ? proxy_scale : \\[lindex \\[value proxy_format] 0] / \\[lindex \\[value format] 0]) : 1\"}}\n   rebuild_finalise \"\"\n   name BlinkScript10\n   xpos 378\n   ypos 8\n  }\n  Colorspace {\n   colorspace_in CIE-XYZ\n   name Colorspace3\n   label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n   xpos 378\n   ypos 116\n   disable {{1-parent.XYZ_space}}\n  }\n  Clamp {\n   maximum_enable false\n   name Clamp1\n   xpos 378\n   ypos 204\n  }\n  Output {\n   name Output1\n   xpos 378\n   ypos 272\n  }\n end_group\n Output {\n  name Output1\n  xpos 829\n  ypos 56\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorCopy.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name ColorCopy\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"output\\\":\\n    method = n.knob('output').value()\\n    if method == 'HSV' or method == 'HSL':\\n        n.knob('colorMix').setVisible(False)\\n        n.knob('lumaMix').setVisible(True)\\n        n.knob('hue').setVisible(True)\\n        n.knob('sat').setVisible(True)\\n        \\n    else:\\n        n.knob('colorMix').setVisible(True)\\n        n.knob('lumaMix').setVisible(True)\\n        n.knob('hue').setVisible(False)\\n        n.knob('sat').setVisible(False)\\n    \\n    if method == 'HSV':\\n        n.knob('lumaMix').setLabel('Value Mix')\\n        \\n    else:\\n        n.knob('lumaMix').setLabel('Luminance Mix')\\n\\n    \"\n tile_color 0x4c7bd1ff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ColorCopy}\n addUserKnob {41 channels T Merge5.also_merge}\n addUserKnob {4 output l method M {HSV HSL \"Rec 709\" \"Ccir 601\" Average Maximum \"\"}}\n addUserKnob {6 opInLog l \"Operations in Log\" -STARTLINE}\n addUserKnob {7 colorMix l \"Color Mix\" +HIDDEN}\n colorMix 1\n addUserKnob {7 hue l \"Hue Mix\"}\n hue 1\n addUserKnob {7 sat l \"Saturation Mix\"}\n sat 1\n addUserKnob {7 lumaMix l \"Value Mix\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge5.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge5.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge5.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge5.fringe}\n addUserKnob {41 mix T Merge5.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -12\n  ypos 1290\n  number 2\n }\n Input {\n  inputs 0\n  name InputA\n  xpos 327\n  ypos -107\n  number 1\n }\n Dot {\n  name Dot2\n  label A\n  note_font_size 41\n  xpos 361\n  ypos -41\n }\n Clamp {\n  maximum_enable false\n  name Clamp2\n  xpos 327\n  ypos 145\n  disable {{!parent.opInLog}}\n }\n Log2Lin {\n  channels all\n  operation lin2log\n  name Log2Lin1\n  xpos 327\n  ypos 208\n  disable {{!parent.opInLog}}\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 361\n  ypos 325\n }\nset N42f8f030 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 1439\n  ypos 325\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos 1439\n  ypos 376\n }\nset N42fa0000 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSL\n  name Colorspace5\n  xpos 1525\n  ypos 506\n }\npush $N42fa0000\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace2\n  xpos 1405\n  ypos 503\n }\n Switch {\n  inputs 2\n  which {{\"output == 1 ? 1 : 0\"}}\n  name Switch5\n  xpos 1405\n  ypos 587\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 1439\n  ypos 749\n }\nset N42fb3f10 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 1439\n  ypos 821\n }\nset N42f3de80 [stack 0]\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 1439\n  ypos 879\n }\n Multiply {\n  value {0 0 1 0}\n  name Multiply3\n  label \"\\[value value]\"\n  xpos 1274\n  ypos 867\n }\n Input {\n  inputs 0\n  name InputB\n  xpos -174\n  ypos -93\n }\n Dot {\n  name Dot1\n  label B\n  note_font_size 41\n  xpos -140\n  ypos -32\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -140\n  ypos 36\n }\nset N43400220 [stack 0]\n Clamp {\n  maximum_enable false\n  name Clamp1\n  xpos -174\n  ypos 157\n  disable {{!parent.opInLog}}\n }\n Log2Lin {\n  channels all\n  operation lin2log\n  name Log2Lin2\n  selected true\n  xpos -174\n  ypos 213\n  disable {{!parent.opInLog}}\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos -140\n  ypos 394\n }\nset N4340edf0 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 778\n  ypos 394\n }\nset N43412a20 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSL\n  name Colorspace4\n  xpos 862\n  ypos 504\n }\npush $N43412a20\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace1\n  xpos 744\n  ypos 508\n }\n Switch {\n  inputs 2\n  which {{\"output == 1 ? 1 : 0\"}}\n  name Switch2\n  xpos 744\n  ypos 564\n }\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 778\n  ypos 621\n }\nset N42fca4d0 [stack 0]\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 942\n  ypos 621\n }\nset N42fc8ee0 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 1052\n  ypos 621\n }\nset N42f03800 [stack 0]\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 1162\n  ypos 621\n }\n Multiply {\n  value {0 0 1 0}\n  name Multiply7\n  label \"\\[value value]\"\n  xpos 1128\n  ypos 676\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.lumaMix}}\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 1128\n  ypos 867\n }\npush $N42f3de80\n Multiply {\n  value {0 1 0 0}\n  name Multiply2\n  label \"\\[value value]\"\n  xpos 1279\n  ypos 809\n }\npush $N42f03800\n Multiply {\n  value {0 1 0 0}\n  name Multiply6\n  label \"\\[value value]\"\n  xpos 1018\n  ypos 676\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.sat}}\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 1018\n  ypos 814\n }\npush $N42fb3f10\n Multiply {\n  value {1 0 0 0}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 1276\n  ypos 737\n }\npush $N42fc8ee0\n Multiply {\n  value {1 0 0 0}\n  name Multiply4\n  label \"\\[value value]\"\n  xpos 908\n  ypos 676\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.hue}}\n  name Merge6\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 908\n  ypos 742\n }\npush $N42fca4d0\n Multiply {\n  value {0 0 0 1}\n  name Multiply5\n  label \"\\[value value]\"\n  xpos 744\n  ypos 672\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 744\n  ypos 742\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 744\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge11\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 744\n  ypos 872\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 778\n  ypos 937\n }\nset N43460e20 [stack 0]\n Colorspace {\n  channels all\n  colorspace_in HSL\n  name Colorspace6\n  xpos 857\n  ypos 985\n }\npush $N43460e20\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace3\n  xpos 744\n  ypos 983\n }\n Switch {\n  inputs 2\n  which {{\"output == 1 ? 1 : 0\"}}\n  name Switch3\n  xpos 744\n  ypos 1040\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 778\n  ypos 1088\n }\npush $N42f8f030\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 361\n  ypos 545\n }\nset N43492d80 [stack 0]\n Toe2 {\n  channels all\n  lift 0.0001\n  name Toe2\n  xpos 327\n  ypos 599\n }\npush $N43492d80\n Saturation {\n  channels all\n  saturation 0\n  mode {{\"output == 0 || output == 1 ? 0 : parent.output - 2\"}}\n  name Saturation3\n  xpos 485\n  ypos 538\n }\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos 519\n  ypos 753\n }\nset N434aae90 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 519\n  ypos 834\n }\n Merge2 {\n  inputs 2\n  operation divide\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 327\n  ypos 827\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 361\n  ypos 885\n }\npush $N4340edf0\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -140\n  ypos 542\n }\nset N434c40a0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 29\n  ypos 542\n }\n Toe2 {\n  channels all\n  lift 0.0001\n  name Toe1\n  xpos -5\n  ypos 596\n }\npush $N434c40a0\n Saturation {\n  channels all\n  saturation 0\n  mode {{\"output == 0 || output == 1 ? 0 : parent.output - 2\" x1 0}}\n  name Saturation2\n  xpos -174\n  ypos 666\n }\nset N434d5c10 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -5\n  ypos 666\n }\n Dissolve {\n  inputs 2\n  which {{parent.colorMix}}\n  name Dissolve1\n  xpos -5\n  ypos 878\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 29\n  ypos 957\n }\npush $N434aae90\npush $N434d5c10\n Dissolve {\n  inputs 2\n  which {{parent.lumaMix}}\n  name Dissolve2\n  xpos -174\n  ypos 750\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -174\n  ypos 950\n }\n Switch {\n  inputs 2\n  which {{\"output == 0 || output == 1 ? 1 : 0\"}}\n  name Switch1\n  xpos -174\n  ypos 1085\n }\n Log2Lin {\n  channels all\n  name Log2Lin4\n  xpos -174\n  ypos 1150\n  disable {{!parent.opInLog}}\n }\npush $N43400220\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -380\n  ypos 36\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -380\n  ypos 1293\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  maskChannelInput -rgba.alpha\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -174\n  ypos 1286\n }\n Output {\n  name Output1\n  xpos -174\n  ypos 1386\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorSampler.gizmo",
    "content": "Group {\n name apColorSampler\n help \"ColorSampler BETA v0.7 by Adrian Pueyo\\n\\nTool to calculate the average color of a target input (or the src image if there's no target input), weighted through the area input (or the whole frame if there's no area input). It can also calculate the maximum or minimum value over the area. Additionally, you can directly remove color flickering to an image, or apply it from a target.\\n\\nYou can think of ColorSampler as a live version of CurveTool with some additional features using the power of Blinkscript, where instead of being limited to a rectangle you can plug a roto to use for the sampling area... or a key... :)\\n\\nadrianpueyo.com, 2016-2018\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nom = n\\[\\\"out_mode\\\"].getValue()\\nn\\[\\\"max_min_math\\\"].setVisible(om==1 or om==2)\\nn\\[\\\"calculate_alpha\\\"].setVisible(om!=1 and om!=2)\\nn\\[\\\"reference_frame\\\"].setEnabled(om>2)\\nn\\[\\\"set_to_current\\\"].setEnabled(om>2)\\n\\nif k.name() == \\\"out_mode\\\":\\n    kv = int(k.getValue())\\n    kb = n.knob(\\\"use_baked\\\")\\n    if kv == 1:\\n        ctname = \\\"CurveToolMax\\\"\\n    elif kv == 2:\\n        ctname = \\\"CurveToolMin\\\"\\n    else:\\n        ctname = \\\"CurveToolAvg\\\"\\n    if not nuke.toNode(ctname).knob(\\\"intensitydata\\\").isAnimated():\\n        kb.setValue(False)\\n        kb.setEnabled(False)\\n    else:\\n        kb.setEnabled(True)\"\n tile_color 0x8b8b8bff\n selected true\n addUserKnob {20 ColorSampler}\n addUserKnob {4 out_mode l mode t \"Note 1: \\\"target\\\" input will be sampled if there's something plugged. Otherwise, src will be sampled.\\n\\nNote 2: If there is an area input, the sampling will be limited and weighted to that area. If there is nothing plugged in, the whole frame will be sampled.\\n\\nNote 3: For max and min calculations, any value above 0 on the area input will be sampled.\" M {Average Maximum Minimum \"Deflicker src (mult)\" \"Flicker src (mult)\" \"Deflicker src (add)\" \"Flicker src (add)\"}}\n addUserKnob {6 calculate_alpha l \"calculate alpha\" t \"Also apply the tool to the alpha channel. If disabled outputs the original alpha.\" -STARTLINE}\n addUserKnob {4 max_min_math l math +HIDDEN M {\"Rec 709\" \"Ccir 601\" Average Max/Min Per-Channel \"\" \"\" \"\" \"\"}}\n addUserKnob {3 reference_frame l \"ref frame\" t \"Please specify the frame that will have no effect on the color match or stabilization.\" +DISABLED}\n reference_frame 1001\n addUserKnob {22 set_to_current l \"set to current frame\" -STARTLINE +DISABLED T \"nuke.thisNode()\\[\\\"reference_frame\\\"].setValue(nuke.frame())\"}\n addUserKnob {26 space l \"\" +STARTLINE T \" \"}\n addUserKnob {26 bake_title l \"<b>Bake \"}\n addUserKnob {22 bake l Bake T \"n = nuke.thisNode()\\nnmode = int(n.knob(\\\"out_mode\\\").getValue())\\ntry:\\n    if nmode == 1:\\n        nuke.toNode(\\\"CurveToolMax\\\").knob(\\\"go\\\").execute()\\n    elif nmode == 2:\\n        nuke.toNode(\\\"CurveToolMin\\\").knob(\\\"go\\\").execute()\\n    else:\\n        nuke.toNode(\\\"CurveToolAvg\\\").knob(\\\"go\\\").execute()\\n    n.knob(\\\"use_baked\\\").setValue(1)\\n    n.knob(\\\"use_baked\\\").setEnabled(True)\\nexcept:\\n    nuke.message(\\\"Error sampling.\\\")\" +STARTLINE}\n addUserKnob {22 resetBakes l \" Reset Bakes \" -STARTLINE T \"n = nuke.thisNode()\\nfor ctn in \\[\\\"CurveToolAvg\\\",\\\"CurveToolMin\\\",\\\"CurveToolMax\\\"]:\\n    ck = nuke.toNode(ctn).knob(\\\"intensitydata\\\")\\n    ck.clearAnimated()\\n    ck.setValue(0)\\nn.knob(\\\"use_baked\\\").setValue(0)\\nn.knob(\\\"use_baked\\\").setEnabled(False)\"}\n addUserKnob {26 h_sep l \"\" -STARTLINE T \" \"}\n addUserKnob {6 use_baked l \"use baked\" -STARTLINE}\n addUserKnob {26 export_title l \"<b>Export \"}\n addUserKnob {4 exportOptions l \" \" M {Average Maximum Minimum \"Deflicker src (mult) (Current frame)\" \"Deflicker src (mult) (Ref frame)\" \"Flicker src (mult) (Current frame)\" \"Flicker src (mult) (Ref frame)\" \"Deflicker src (add) (Current frame)\" \"Deflicker src (add) (Ref frame)\" \"Flicker src (add) (Current frame)\" \"Flicker src (add) (Ref frame)\"}}\n addUserKnob {6 linked -STARTLINE}\n addUserKnob {22 createGrade l \"create grade\" T \"n = nuke.thisNode()\\nnm = n.name()\\no = int(n.knob(\\\"exportOptions\\\").getValue())\\nl = n.knob(\\\"linked\\\").value()\\nif o in \\[3,5,7,9]:\\n    t = nuke.frame()\\nelse:\\n    t = int(n.knob(\\\"reference_frame\\\").value())\\n\\n# Check if baked\\nif o == 1:\\n    ctname = \\\"CurveToolMax\\\"\\n    ctk = \\\"go_max\\\"\\nelif o == 2:\\n    ctname = \\\"CurveToolMin\\\"\\n    ctk = \\\"go_min\\\"\\nelse:\\n    ctname = \\\"CurveToolAvg\\\"\\n    ctk = \\\"go_avg\\\"\\nabortExport = False\\nif not nuke.toNode(ctname).knob(\\\"intensitydata\\\").isAnimated():\\n    if nuke.ask(\\\"Looks like the you need to analyze it first. Proceed?\\\"):\\n        nuke.knob(ctk).execute()\\n    else:\\n        if not nuke.ask(\\\"But still you want to export it???\\\\nWon't have any animation.\\\"):\\n            abortExport = True\\n\\nif not abortExport:\\n    multVal = \\[0,0,0,0]\\n    offsetVal = \\[0,0,0,0]\\n    multExp = \\\"\\\"\\n    offsetExp = \\\"\\\"\\n    reverse = 0\\n    label = \\\"\\\"\\n    \\n    pasteOn = \\\"\\\"\\n    copied = \\\"\\\"\\n    \\n    if o==0: # Average\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Average\\\"\\n    elif o==1: # Max\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolMax.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolMax\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Maximum\\\"\\n    elif o==2: # Min\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolMin.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolMin\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Minimum\\\"\\n    elif o in \\[3,4,5,6]: # Mult de/flicker\\n        offsetVal = 0\\n        if l:\\n            multExp = nm + \\\".CurveToolAvg.intensitydata(\\\" + str(t) + \\\")/\\\"+nm+\\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"multiply\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            if not l or o in \\[3,5,7,9]:\\n                multExp = \\\"curve(\\\" + str(t) + \\\")/curve\\\"\\n            else:\\n                multExp = \\\"curve(\\\" + nm + \\\".reference_frame)/curve\\\"\\n        if o in \\[3,4]:\\n            label = \\\"Deflicker \\\"\\n        else:\\n            label = \\\"Flicker \\\"\\n        if not l or o in \\[3,5,7,9]:\\n            label += \\\"(mult)(\\\"+str(t)+\\\")\\\"\\n        else:\\n            label += \\\"(mult)(\\[value \\\"+ nm + \\\".reference_frame])\\\"\\n    elif o in \\[7,8,9,10]: # Add de/flicker\\n        multVal = 1\\n        if l:\\n            offsetExp = nm + \\\".CurveToolAvg.intensitydata(\\\" + str(t) + \\\")/\\\"+nm+\\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"multiply\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            if not l or o in \\[3,5,7,9]:\\n                offsetExp = \\\"curve(\\\" + str(t) + \\\")/curve\\\"\\n            else:\\n                offsetExp = \\\"curve(\\\" + nm + \\\".reference_frame)/curve\\\"\\n        if o in \\[7,8]:\\n            label = \\\"Deflicker \\\"\\n        else:\\n            label = \\\"Flicker \\\"\\n        if not l or o in \\[3,5,7,9]:\\n            label += \\\"(add)(\\\"+str(t)+\\\")\\\"\\n        else:\\n            label += \\\"(add)(\\[value \\\"+ nm + \\\".reference_frame])\\\"\\n    \\n    if o in \\[5,6,9,10]:\\n        reverse = 1\\n        \\n    with nuke.Root():\\n        gn = nuke.nodes.Grade()\\n        gn.setXYpos(n.xpos()+150,n.ypos()+50)\\n        gn\\[\\\"multiply\\\"].setValue(multVal)\\n        gn\\[\\\"add\\\"].setValue(offsetVal)\\n        if multExp != \\\"\\\":\\n            if not l:\\n                gn\\[\\\"multiply\\\"].fromScript(copied)\\n            gn\\[\\\"multiply\\\"].setExpression(multExp)\\n                \\n        if offsetExp != \\\"\\\":\\n            if not l:\\n                gn\\[\\\"add\\\"].fromScript(copied)\\n            gn\\[\\\"add\\\"].setExpression(offsetExp)\\n        gn\\[\\\"reverse\\\"].setValue(reverse)\\n        gn\\[\\\"label\\\"].setValue(label)\\n        gn\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n        for i in \\[\\\"black_clamp\\\",\\\"white_clamp\\\"]:\\n            gn\\[i].setValue(False)\\n    om = n.knob(\\\"exportOptions\\\")\\n    omv = int(om.getValue())\\n    if o==omv==1 or o==omv==2 or (o not in \\[1,2] and omv not in \\[1,2]):\\n        n.knob(\\\"use_baked\\\").setEnabled(True)\\n        \" +STARTLINE}\n addUserKnob {22 createConstant l \"create constant\" -STARTLINE T \"n = nuke.thisNode()\\nnm = n.name()\\no = int(n.knob(\\\"exportOptions\\\").getValue())\\nl = n.knob(\\\"linked\\\").value()\\nif o in \\[3,5,7,9]:\\n    t = nuke.frame()\\nelse:\\n    t = int(n.knob(\\\"reference_frame\\\").value())\\n\\n# Check if baked\\nif o == 1:\\n    ctname = \\\"CurveToolMax\\\"\\n    ctk = \\\"go_max\\\"\\nelif o == 2:\\n    ctname = \\\"CurveToolMin\\\"\\n    ctk = \\\"go_min\\\"\\nelse:\\n    ctname = \\\"CurveToolAvg\\\"\\n    ctk = \\\"go_avg\\\"\\nabortExport = False\\nif not nuke.toNode(ctname).knob(\\\"intensitydata\\\").isAnimated():\\n    if nuke.ask(\\\"Looks like the you need to analyze it first. Proceed?\\\"):\\n        nuke.knob(ctk).execute()\\n    else:\\n        if not nuke.ask(\\\"But still you want to export it???\\\\nWon't have any animation.\\\"):\\n            abortExport = True\\n\\nif not abortExport:\\n    multVal = \\[0,0,0,0]\\n    offsetVal = \\[0,0,0,0]\\n    multExp = \\\"\\\"\\n    offsetExp = \\\"\\\"\\n    reverse = 0\\n    label = \\\"\\\"\\n    \\n    pasteOn = \\\"\\\"\\n    copied = \\\"\\\"\\n    \\n    if o==0: # Average\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Average\\\"\\n    elif o==1: # Max\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolMax.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolMax\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Maximum\\\"\\n    elif o==2: # Min\\n        multVal = 0\\n        if l:\\n            offsetExp = nm + \\\".CurveToolMin.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"add\\\"\\n            copied = nuke.toNode(\\\"CurveToolMin\\\")\\[\\\"intensitydata\\\"].toScript()\\n            offsetExp = \\\"curve\\\"\\n        label = \\\"Minimum\\\"\\n    elif o in \\[3,4,5,6]: # Mult de/flicker\\n        offsetVal = 0\\n        if l:\\n            multExp = nm + \\\".CurveToolAvg.intensitydata(\\\" + str(t) + \\\")/\\\"+nm+\\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"multiply\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            if not l or o in \\[3,5,7,9]:\\n                multExp = \\\"curve(\\\" + str(t) + \\\")/curve\\\"\\n            else:\\n                multExp = \\\"curve(\\\" + nm + \\\".reference_frame)/curve\\\"\\n        if o in \\[3,4]:\\n            label = \\\"Deflicker \\\"\\n        else:\\n            label = \\\"Flicker \\\"\\n        if not l or o in \\[3,5,7,9]:\\n            label += \\\"(mult)(\\\"+str(t)+\\\")\\\"\\n        else:\\n            label += \\\"(mult)(\\[value \\\"+ nm + \\\".reference_frame])\\\"\\n    elif o in \\[7,8,9,10]: # Add de/flicker\\n        multVal = 1\\n        if l:\\n            offsetExp = nm + \\\".CurveToolAvg.intensitydata(\\\" + str(t) + \\\")/\\\"+nm+\\\".CurveToolAvg.intensitydata\\\"\\n        else:\\n            pasteOn = \\\"multiply\\\"\\n            copied = nuke.toNode(\\\"CurveToolAvg\\\")\\[\\\"intensitydata\\\"].toScript()\\n            if not l or o in \\[3,5,7,9]:\\n                offsetExp = \\\"curve(\\\" + str(t) + \\\")/curve\\\"\\n            else:\\n                offsetExp = \\\"curve(\\\" + nm + \\\".reference_frame)/curve\\\"\\n        if o in \\[7,8]:\\n            label = \\\"Deflicker \\\"\\n        else:\\n            label = \\\"Flicker \\\"\\n        if not l or o in \\[3,5,7,9]:\\n            label += \\\"(add)(\\\"+str(t)+\\\")\\\"\\n        else:\\n            label += \\\"(add)(\\[value \\\"+ nm + \\\".reference_frame])\\\"\\n    \\n    if o in \\[5,6,9,10]:\\n        reverse = 1\\n        \\n    with nuke.Root():\\n        gn = nuke.nodes.Constant()\\n        gn.setXYpos(n.xpos()+150,n.ypos()+50)\\n        gn\\[\\\"color\\\"].setValue(offsetVal)\\n\\n        if offsetExp != \\\"\\\":\\n            if not l:\\n                gn\\[\\\"color\\\"].fromScript(copied)\\n            gn\\[\\\"color\\\"].setExpression(offsetExp)\\n        #gn\\[\\\"reverse\\\"].setValue(reverse)\\n        gn\\[\\\"label\\\"].setValue(label)\\n        gn\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n        gn\\[\\\"color\\\"].clearAnimated(3)\\n        gn\\[\\\"color\\\"].setValue(1,3)\\n    om = n.knob(\\\"exportOptions\\\")\\n    omv = int(om.getValue())\\n    if o==omv==1 or o==omv==2 or (o not in \\[1,2] and omv not in \\[1,2]):\\n        n.knob(\\\"use_baked\\\").setEnabled(True)\\n        \"}\n addUserKnob {26 \"\"}\n addUserKnob {41 areaChannelMask l \"area \" -STARTLINE T ExpressionMask.maskChannelMask}\n addUserKnob {41 inject_area l inject -STARTLINE T ExpressionMask.inject}\n addUserKnob {41 invert_area l invert -STARTLINE T ExpressionMask.invert_mask}\n addUserKnob {41 area_fringe l fringe -STARTLINE T ExpressionMask.fringe}\n addUserKnob {41 maskChannelMask l mask T Merge.maskChannelMask}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \" \" t \"ColorSampler BETA v0.7\\n2016-2019\" T \"<span style=\\\"color:#666\\\"><br/><b>ColorSampler BETA v0.7</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2016-2019</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -230\n  ypos 705\n  number 3\n }\n Input {\n  inputs 0\n  name Inputarea\n  xpos 656\n  ypos 70\n  number 1\n }\n Shuffle {\n  name ShuffleAreaRGBA\n  xpos 656\n  ypos 94\n }\nset Na14b6b00 [stack 0]\n Input {\n  inputs 0\n  name Inputsrc\n  xpos -103\n  ypos 2\n }\nset Na14b6400 [stack 0]\n Dot {\n  name Dot6\n  xpos -69\n  ypos 28\n }\nset Na14b5d00 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  mix 0\n  name CopyAreaUI\n  xpos -103\n  ypos 91\n }\n Dot {\n  name Dot2\n  xpos -69\n  ypos 173\n }\nset Na14b4f00 [stack 0]\n Dot {\n  name Dot7\n  xpos 178\n  ypos 173\n }\nset Na14b4800 [stack 0]\n Dot {\n  name Dot9\n  xpos 732\n  ypos 173\n }\n Grade {\n  multiply 0\n  add {{CurveToolAvg.intensitydata} {CurveToolAvg.intensitydata} {CurveToolAvg.intensitydata} {CurveToolAvg.intensitydata}}\n  black_clamp false\n  name GradeBakedAvg\n  xpos 698\n  ypos 462\n  disable {{parent.out_mode>=3}}\n }\n Grade {\n  multiply {{(parent.out_mode==3||parent.out_mode==4)?CurveToolAvg.intensitydata(parent.reference_frame)/CurveToolAvg.intensitydata:1} {(parent.out_mode==3||parent.out_mode==4)?CurveToolAvg.intensitydata(parent.reference_frame)/CurveToolAvg.intensitydata:1} {(parent.out_mode==3||parent.out_mode==4)?CurveToolAvg.intensitydata(parent.reference_frame)/CurveToolAvg.intensitydata:1} {(parent.out_mode==3||parent.out_mode==4)?CurveToolAvg.intensitydata(parent.reference_frame)/CurveToolAvg.intensitydata:1}}\n  add {{(parent.out_mode==5||parent.out_mode==6)?CurveToolAvg.intensitydata(parent.reference_frame)-CurveToolAvg.intensitydata:0} {(parent.out_mode==5||parent.out_mode==6)?CurveToolAvg.intensitydata(parent.reference_frame)-CurveToolAvg.intensitydata:0} {(parent.out_mode==5||parent.out_mode==6)?CurveToolAvg.intensitydata(parent.reference_frame)-CurveToolAvg.intensitydata:0} {(parent.out_mode==5||parent.out_mode==6)?CurveToolAvg.intensitydata(parent.reference_frame)-CurveToolAvg.intensitydata:0}}\n  reverse {{parent.out_mode==4||parent.out_mode==6}}\n  black_clamp false\n  name GradeBakedMult\n  xpos 698\n  ypos 488\n  disable {{!(parent.out_mode>=3)}}\n }\n Grade {\n  multiply 0\n  add {{CurveToolMax.intensitydata} {CurveToolMax.intensitydata} {CurveToolMax.intensitydata} {CurveToolMax.intensitydata}}\n  black_clamp false\n  name GradeBakedMax\n  xpos 698\n  ypos 514\n  disable {{parent.out_mode!=1}}\n }\n Grade {\n  multiply 0\n  add {{CurveToolMin.intensitydata} {CurveToolMin.intensitydata} {CurveToolMin.intensitydata} {CurveToolMin.intensitydata}}\n  black_clamp false\n  name GradeBakedMin\n  xpos 698\n  ypos 540\n  disable {{parent.out_mode!=2}}\n }\n Dot {\n  name Dot11\n  label \" Baked\"\n  note_font \"Bitstream Vera Sans Bold\"\n  xpos 732\n  ypos 622\n }\npush $Na14b6b00\n Dot {\n  name Dot1\n  xpos 690\n  ypos 121\n }\n Input {\n  inputs 0\n  name Inputtarget\n  xpos 294\n  ypos -21\n  number 2\n }\npush $Na14b5d00\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input2]\"}}\n  name SwitchTarget\n  xpos 294\n  ypos 23\n }\nset Na79d4100 [stack 0]\n Remove {\n  name RemoveAll\n  xpos 504\n  ypos 17\n }\n Expression {\n  inputs 1+1\n  channel0 rgba\n  expr0 1\n  name ExpressionMask\n  xpos 504\n  ypos 118\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name ShuffleWhite\n  xpos 504\n  ypos 229\n  disable {{\"\\[exists parent.input1]\"}}\n }\nset Na21deb00 [stack 0]\n Dot {\n  name Dot4\n  xpos 538\n  ypos 327\n }\npush $Na79d4100\n Shuffle {\n  name ShuffleImgRGBA\n  xpos 294\n  ypos 71\n }\nset Na21ddd00 [stack 0]\n Dot {\n  name Dot3\n  xpos 435\n  ypos 74\n }\n BlinkScript {\n  inputs 2\n  recompileCount 19\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apMaxMinKernel\\\" iterate pixelWise 7e64c00f3b124d2af614668b30d0f630f4c316e304755f67345f11bb557d5feb 3 \\\"img\\\" Read Random \\\"area\\\" Read Random \\\"dst\\\" Write Point 2 \\\"useArea\\\" Int 1 AAAAAA== \\\"math\\\" Int 1 AAAAAA== 2 \\\"useArea\\\" 1 1 \\\"math\\\" 1 1 0\"\n  kernelSource \"//---------------------------------------------------------\\n// apMaxMinKernel v0.1 by Adrian Pueyo\\n//\\n// Calculates the maximum and minimum value of an input img,\\n// through the positive values of an area.\\n//\\n// adrianpueyo.com, 2017\\n// ---------------------------------------------------------\\n\\nstatic inline float y_convert_ccir601(const float4 in)\\{\\n  return in.x * 0.299f + in.y * 0.587f + in.z * 0.114f;\\n\\}\\nstatic inline float y_convert_rec709(const float4 in)\\{\\n  return in.x * 0.2125f + in.y * 0.7154f + in.z * 0.0721f;\\n\\}\\nstatic inline float y_convert_avg(const float4 in)\\{\\n  return (in.x + in.y + in.z)/3.0f;\\n\\}\\nstatic inline float y_convert_max(const float4 in)\\{\\n  return max(max(in.x,in.y),in.z);\\n\\}\\nstatic inline float y_convert_min(const float4 in)\\{\\n  return min(min(in.x,in.y),in.z);\\n\\}\\n\\nkernel apMaxMinKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> img;\\n  Image<eRead, eAccessRandom, eEdgeClamped> area;\\n  Image<eWrite> dst;\\n\\n  param:\\n    int useArea;\\n    int math; //0=Rec709,1=Ccir601,2=Avg,3=MaxMin,4=PerChannel\\n\\n  void process(int2 pos) \\{\\n    float4 theMax=-1000000000.0f, theMin=1000000000.0f;\\n    for(int j=img.bounds.y1; j<img.bounds.y2; j++)\\{\\n      for(int i=img.bounds.x1; i<img.bounds.x2; i++)\\{\\n        if(useArea==0 || area(i,j,0)>0.0f)\\{\\n          if(math==0)\\{ //Rec709\\n            if(pos.x==0)\\{ //Max\\n              if(y_convert_rec709(img(i,j))>y_convert_rec709(theMax))\\{\\n                theMax = img(i,j);\\n              \\}\\n            \\}else\\{//Min\\n              if(y_convert_rec709(img(i,j))<y_convert_rec709(theMin))\\{\\n                theMin = img(i,j);\\n              \\}\\n            \\}\\n          \\}else if(math==1)\\{ //Ccir601\\n            if(pos.x==0)\\{ //Max\\n              if(y_convert_ccir601(img(i,j))>y_convert_ccir601(theMax))\\{\\n                theMax = img(i,j);\\n              \\}\\n            \\}else\\{//Min\\n              if(y_convert_ccir601(img(i,j))<y_convert_ccir601(theMin))\\{\\n                theMin = img(i,j);\\n              \\}\\n            \\}\\n          \\}else if(math==2)\\{ //Avg\\n            if(pos.x==0)\\{ //Max\\n              if(y_convert_avg(img(i,j))>y_convert_avg(theMax))\\{\\n                theMax = img(i,j);\\n              \\}\\n            \\}else\\{//Min\\n              if(y_convert_avg(img(i,j))<y_convert_avg(theMin))\\{\\n                theMin = img(i,j);\\n              \\}\\n            \\}\\n          \\}else if(math==3)\\{ //MaxMin\\n            if(pos.x==0)\\{ //Max\\n              if(y_convert_max(img(i,j))>y_convert_max(theMax))\\{\\n                theMax = img(i,j);\\n              \\}\\n            \\}else\\{//Min\\n              if(y_convert_min(img(i,j))<y_convert_min(theMin))\\{\\n                theMin = img(i,j);\\n              \\}\\n            \\}\\n          \\}else if(math==4)\\{ //PerChannel\\n            if(pos.x==0)\\{ //Max\\n              for (int ch = 0; ch < dst.kComps; ch++)\\{\\n                if(img(i,j,ch)>theMax\\[ch])\\n                  theMax\\[ch] = img(i,j,ch);\\n              \\}\\n            \\}else\\{//Min\\n              for (int ch = 0; ch < dst.kComps; ch++)\\{\\n                if(img(i,j,ch)<theMin\\[ch])\\n                  theMin\\[ch] = img(i,j,ch);\\n              \\}\\n            \\}\\n          \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    if(pos.x==0)\\{ //Max\\n      dst() = theMax;\\n    \\}else\\{ //Min\\n      dst() = theMin;\\n    \\}\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  apMaxMinKernel_useArea {{\"\\[exists parent.input1]\"}}\n  apMaxMinKernel_math {{parent.max_min_math}}\n  format \"2 1 0 0 2 1 1 TwoPixels\"\n  specifiedFormat true\n  rebuild_finalise \"\"\n  name apMaxMinKernel\n  xpos 401\n  ypos 317\n }\nset Na21dcf00 [stack 0]\npush $Na21deb00\npush $Na21ddd00\n BlinkScript {\n  inputs 2\n  recompileCount 11\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apWeightedAvgKernel\\\" iterate componentWise 0c211582dc38cbfc25d707d178ea6319b43a475a57d08b6c8f98b11596f90a7f 3 \\\"img\\\" Read Random \\\"area\\\" Read Random \\\"dst\\\" Write Point 1 \\\"useArea\\\" Int 1 AAAAAA== 1 \\\"useArea\\\" 1 1 0\"\n  kernelSource \"//---------------------------------------------------------\\n// apWeightedAvg v0.3 by Adrian Pueyo\\n//\\n// Calculates the per-channel average color of an input img,\\n// weighted through a second rgba input (area).\\n//\\n// adrianpueyo.com, 2017\\n// ---------------------------------------------------------\\n\\nkernel apWeightedAvgKernel : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> img;\\n  Image<eRead, eAccessRandom, eEdgeClamped> area;\\n  Image<eWrite> dst;\\n\\n  param:\\n    int useArea;\\n\\n  void process(int2 pos) \\{\\n    float vSum=0.0f, fSum=0.0f;\\n    for(int j=img.bounds.y1; j<img.bounds.y2; j++)\\{\\n      for(int i=img.bounds.x1; i<img.bounds.x2; i++)\\{\\n        if(useArea==0)\\{\\n          vSum += img(i,j);\\n          fSum += 1.0f;\\n        \\}else\\{\\n          vSum += img(i,j)*area(i,j);\\n          fSum += area(i,j);\\n        \\}\\n      \\}\\n    \\}\\n    dst() = vSum==0.0f?0.0f:vSum/fSum;\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  apWeightedAvgKernel_useArea {{\"\\[exists parent.input1]\"}}\n  format \"1 1 0 0 1 1 1 One_pixel\"\n  specifiedFormat true\n  rebuild_finalise \"\"\n  name apWeightedAvg\n  xpos 294\n  ypos 223\n }\n Remove {\n  operation keep\n  channels rgba\n  name KeepRGBA\n  xpos 294\n  ypos 261\n }\nset N9f3e3200 [stack 0]\n FrameHold {\n  first_frame {{parent.reference_frame}}\n  name FrameHoldRef\n  xpos 294\n  ypos 285\n }\npush $N9f3e3200\npush $Na14b4800\n MergeExpression {\n  inputs 2\n  expr0 parent.out_mode==0?Ar:parent.out_mode==3?Br/Ar(0,0):parent.out_mode==4?Br*Ar(0,0):parent.out_mode==5?Br-Ar(0,0):Br+Ar(0,0)\n  expr1 parent.out_mode==0?Ag:parent.out_mode==3?Bg/Ag(0,0):parent.out_mode==4?Bg*Ag(0,0):parent.out_mode==5?Bg-Ag(0,0):Bg+Ag(0,0)\n  expr2 parent.out_mode==0?Ab:parent.out_mode==3?Bb/Ab(0,0):parent.out_mode==4?Bb*Ab(0,0):parent.out_mode==5?Bb-Ab(0,0):Bb+Ab(0,0)\n  expr3 parent.calculate_alpha==0?Ba:parent.out_mode==0?Aa:parent.out_mode==3?Ba/Aa(0,0):parent.out_mode==4?Ba*Aa(0,0):parent.out_mode==5?Ba-Aa(0,0):Ba+Aa(0,0)\n  name MergeExpressionIn\n  xpos 144\n  ypos 261\n }\n MergeExpression {\n  inputs 2\n  expr0 parent.out_mode==0?Ar:parent.out_mode==3?Br*Ar(0,0):parent.out_mode==4?Br/Ar(0,0):parent.out_mode==5?Br+Ar(0,0):Br-Ar(0,0)\n  expr1 parent.out_mode==0?Ag:parent.out_mode==3?Bg*Ag(0,0):parent.out_mode==4?Bg/Ag(0,0):parent.out_mode==5?Bg+Ag(0,0):Bg-Ag(0,0)\n  expr2 parent.out_mode==0?Ab:parent.out_mode==3?Bb*Ab(0,0):parent.out_mode==4?Bb/Ab(0,0):parent.out_mode==5?Bb+Ab(0,0):Bb-Ab(0,0)\n  expr3 parent.calculate_alpha==0?Ba:parent.out_mode==0?Aa:parent.out_mode==3?Ba*Aa(0,0):parent.out_mode==4?Ba/Aa(0,0):parent.out_mode==5?Ba+Aa(0,0):Ba-Aa(0,0)\n  name MergeExpressionOut\n  xpos 144\n  ypos 291\n  disable {{parent.out_mode==0}}\n }\n MergeExpression {\n  inputs 2\n  expr0 (parent.out_mode==1)?Ar(0,0):(parent.out_mode==2)?Ar(1,0):Br\n  expr1 (parent.out_mode==1)?Ag(0,0):(parent.out_mode==2)?Ag(1,0):Bg\n  expr2 (parent.out_mode==1)?Ab(0,0):(parent.out_mode==2)?Ab(1,0):Bb\n  name MergeExpression1\n  label MaxMin\n  xpos 144\n  ypos 317\n }\n Dot {\n  name Dot10\n  label \" Non baked\"\n  note_font \"Bitstream Vera Sans Bold\"\n  xpos 178\n  ypos 379\n }\n Switch {\n  inputs 2\n  which 1\n  name SwitchBaked\n  label \"\\[value which]\"\n  xpos 144\n  ypos 612\n  disable {{!parent.use_baked}}\n }\n Dot {\n  name Dot8\n  xpos 178\n  ypos 711\n }\npush $Na14b4f00\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  name Merge\n  xpos -103\n  ypos 707\n }\n Output {\n  name Output\n  xpos -103\n  ypos 805\n }\npush $Na21dcf00\n Dot {\n  name Dot13\n  xpos 435\n  ypos 388\n }\nset Na18eab00 [stack 0]\n Dot {\n  name Dot15\n  xpos 435\n  ypos 423\n }\npush $N9f3e3200\n Dot {\n  name Dot14\n  xpos 891\n  ypos 265\n }\nset Na18e9d00 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Ar(1,0)\n  expr1 Ag(1,0)\n  expr2 Ab(1,0)\n  expr3 Aa(1,0)\n  name MergeExpressionIn3\n  label min\n  xpos 857\n  ypos 413\n }\n CurveTool {\n  ROI {0 0 64 64}\n  autocropdata {64 64 192 192}\n  name CurveToolMin\n  xpos 857\n  ypos 451\n }\npush $Na18eab00\npush $Na18e9d00\n Dot {\n  name Dot12\n  xpos 1046\n  ypos 265\n }\nset Na750eb00 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Ar(0,0)\n  expr1 Ag(0,0)\n  expr2 Ab(0,0)\n  expr3 Aa(0,0)\n  name MergeExpressionIn2\n  label max\n  xpos 1012\n  ypos 378\n }\n CurveTool {\n  ROI {0 0 64 64}\n  autocropdata {64 64 192 192}\n  name CurveToolMax\n  xpos 1012\n  ypos 416\n }\npush $Na750eb00\npush $Na14b6400\n Dot {\n  name Dot5\n  xpos 1186\n  ypos 5\n }\n Remove {\n  name RemoveAll1\n  xpos 1152\n  ypos 23\n }\n Reformat {\n  format \"64 64 0 0 64 64 1 square_64\"\n  resize none\n  center false\n  name Reformat1\n  xpos 1152\n  ypos 61\n }\n MergeExpression {\n  inputs 2\n  expr0 Ar(0,0)\n  expr1 Ag(0,0)\n  expr2 Ab(0,0)\n  expr3 Aa(0,0)\n  name MergeExpressionIn1\n  label avg\n  xpos 1152\n  ypos 255\n }\n CurveTool {\n  ROI {0 0 64 64}\n  autocropdata {64 64 192 192}\n  name CurveToolAvg\n  xpos 1152\n  ypos 293\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorSmear.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name ColorSmear\n note_font Verdana\n selected true\n addUserKnob {20 User}\n addUserKnob {26 smearing l Smearing T \"\"}\n addUserKnob {6 already_premulted l \"Input is premultiplied?\" t \"Click checkbox \\\"on\\\" if image is already premulted\" +STARTLINE}\n already_premulted true\n addUserKnob {7 pre_choke l Pre-choke R 0 30}\n pre_choke 2.5\n addUserKnob {7 pre_contrast l \"Pre Contrast\" R 0 0.5}\n pre_contrast 0.084\n addUserKnob {7 pre_blur l Pre-blur R 0 100}\n pre_blur 8.5\n addUserKnob {7 post_blur l \"Post Blur\" R 0 100}\n post_blur 5.5\n addUserKnob {26 \"\"}\n addUserKnob {26 Masking}\n addUserKnob {6 xor_edge_detect l \"Use XOR edge detect method?\" t \"XOR edge detect will isolate edge mask to areas that are blurred. Regular edge detect method will apply smear evenly all the way around.\" +STARTLINE}\n addUserKnob {7 dilate_mask l \"Dilate Mask\" R 0 30}\n dilate_mask 2.8\n addUserKnob {7 blur_mask l \"Blur Mask\" R 0 100}\n blur_mask 3.5\n addUserKnob {6 output_premulted l \"Premultiply output\" +STARTLINE}\n output_premulted true\n addUserKnob {26 \"\"}\n addUserKnob {6 outputmask l \"Output smear mask?\" +STARTLINE}\n outputmask true\n addUserKnob {26 smearmask_description l \" (uses 'smearmask.a' channel - handy for regraining later)\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 RestoreDetail l \"Restore Detail\"}\n addUserKnob {7 sharpness l Sharpness R 0 10}\n sharpness 10\n addUserKnob {7 amount l Amount}\n amount 0.1\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"Colour Smear v2.1 by Richard Frazer - www.richardfrazer.com\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7171c600\n  label \"Restore detail\"\n  note_font Verdana\n  note_font_size 42\n  xpos -833\n  ypos 14\n  bdwidth 546\n  bdheight 976\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode18\n  tile_color 0x7171c600\n  label \"unpremult / blur trick\"\n  note_font Verdana\n  note_font_size 42\n  xpos 653\n  ypos 25\n  bdwidth 856\n  bdheight 999\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode19\n  tile_color 0x7171c600\n  label \"mask to smear back over shot\"\n  note_font Verdana\n  note_font_size 42\n  xpos -239\n  ypos 27\n  bdwidth 649\n  bdheight 976\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode20\n  tile_color 0x7171c600\n  label \"colour smear\\n<-- in here goes plate with alpha (unpremulted) \"\n  note_font Verdana\n  note_font_size 42\n  xpos -1098\n  ypos -281\n  bdwidth 2603\n  bdheight 277\n }\n StickyNote {\n  inputs 0\n  name StickyNote20\n  label \"bigger blur will smear\\ncolour out further\\nbut may cause\\nbleed\\nin areas of high contrast\"\n  note_font Verdana\n  note_font_size 31\n  xpos 1122\n  ypos 405\n }\n StickyNote {\n  inputs 0\n  name StickyNote23\n  label \"xor way \\nisolates areas\\nwith highest\\namounts of blur\\n(i.e\\nmotion blur)\"\n  note_font Verdana\n  note_font_size 31\n  xpos -338\n  ypos 288\n }\n StickyNote {\n  inputs 0\n  name StickyNote25\n  label \"tweak the \\ndilate and \\nblur to make\\nnice\"\n  note_font Verdana\n  xpos -1\n  ypos 581\n }\n StickyNote {\n  inputs 0\n  name StickyNote24\n  label \"choose which works best\"\n  note_font Verdana\n  note_font_size 31\n  xpos -115\n  ypos 774\n }\n StickyNote {\n  inputs 0\n  name StickyNote22\n  label \"this way \\nsmears evenly\\naround all\\nedges\"\n  note_font Verdana\n  note_font_size 31\n  xpos 211\n  ypos 235\n }\n StickyNote {\n  inputs 0\n  name StickyNote27\n  label \"shuffle original alpha back in\"\n  note_font Verdana\n  note_font_size 31\n  xpos -1369\n  ypos 1645\n }\n StickyNote {\n  inputs 0\n  name StickyNote26\n  label \"smear back over edges\"\n  note_font Verdana\n  note_font_size 31\n  xpos -1057\n  ypos 1295\n }\n StickyNote {\n  inputs 0\n  name StickyNote19\n  label \"choke back alpha first\\nso that no background\\ncolour is bought in\"\n  note_font Verdana\n  note_font_size 31\n  xpos 1131\n  ypos 229\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"mask input - \\nareas with solid matte\\nwill be excluded from \\nbeing effected\"\n  note_font Verdana\n  note_font_size 31\n  xpos 1716\n  ypos -149\n }\n StickyNote {\n  inputs 0\n  name StickyNote21\n  label \"just to soften areas\\nwith hard edges\"\n  note_font Verdana\n  note_font_size 31\n  xpos 682\n  ypos 670\n }\n Input {\n  inputs 0\n  name IMG\n  label \"Your main image input\"\n  note_font Verdana\n  xpos -1238\n  ypos -298\n }\nset N902c3fe0 [stack 0]\n Dot {\n  name Dot29\n  note_font Verdana\n  xpos -1204\n  ypos -109\n }\nset N90229a10 [stack 0]\n Dot {\n  name Dot7\n  xpos -1204\n  ypos 1270\n }\n Dot {\n  name Dot18\n  note_font Verdana\n  xpos -1204\n  ypos 1564\n }\nset N905bc670 [stack 0]\npush $N90229a10\n Unpremult {\n  name Unpremult2\n  note_font Verdana\n  xpos -1073\n  ypos -108\n }\npush $N90229a10\n Switch {\n  inputs 2\n  which {{\"\\[value parent.already_premulted]\" i}}\n  name Switch1\n  note_font Verdana\n  xpos -1073\n  ypos -56\n }\n Dot {\n  name Dot30\n  note_font Verdana\n  xpos -901\n  ypos -52\n }\nset N90022dc0 [stack 0]\n Dot {\n  name Dot5\n  xpos -562\n  ypos -52\n }\nset N90428e90 [stack 0]\n Dot {\n  name Dot17\n  note_font Verdana\n  xpos 42\n  ypos -52\n }\nset N900befa0 [stack 0]\n Dot {\n  name Dot38\n  note_font Verdana\n  xpos 42\n  ypos 122\n }\nset N900c27b0 [stack 0]\n Dot {\n  name Dot145\n  note_font Verdana\n  xpos -39\n  ypos 122\n }\nset N904833c0 [stack 0]\n Dot {\n  name Dot138\n  note_font Verdana\n  xpos -92\n  ypos 185\n }\npush $N904833c0\n Dot {\n  name Dot39\n  note_font Verdana\n  xpos 4\n  ypos 193\n }\n Merge2 {\n  inputs 2\n  operation xor\n  name Merge14\n  note_font Verdana\n  xpos -71\n  ypos 243\n }\n Dilate {\n  channels alpha\n  size {{\"\\[value parent.dilate_mask]\" i}}\n  name Dilate2\n  note_font Verdana\n  xpos -71\n  ypos 319\n }\n Grade {\n  channels alpha\n  gamma 2\n  black_clamp false\n  name Grade16\n  note_font Verdana\n  xpos -71\n  ypos 394\n }\n Clamp {\n  name Clamp2\n  note_font Verdana\n  xpos -71\n  ypos 432\n }\n Blur {\n  size {{\"\\[value parent.blur_mask]\" i}}\n  name Blur13\n  note_font Verdana\n  xpos -71\n  ypos 516\n }\n Dot {\n  name Dot156\n  note_font Verdana\n  xpos -37\n  ypos 659\n }\npush $N900c27b0\n Dot {\n  name Dot20\n  note_font Verdana\n  xpos 119\n  ypos 122\n }\n Dilate {\n  channels alpha\n  size {{\"-\\[value parent.dilate_mask]\" i}}\n  name Dilate4\n  note_font Verdana\n  xpos 85\n  ypos 271\n }\n Grade {\n  channels alpha\n  blackpoint 0.022\n  whitepoint 0.69\n  gamma 0.94\n  black_clamp false\n  name Grade18\n  note_font Verdana\n  xpos 85\n  ypos 344\n }\n Invert {\n  channels alpha\n  name Invert4\n  note_font Verdana\n  xpos 85\n  ypos 392\n }\n Clamp {\n  name Clamp8\n  note_font Verdana\n  xpos 85\n  ypos 430\n }\n Blur {\n  size {{\"\\[value parent.blur_mask]\" i}}\n  name Blur17\n  note_font Verdana\n  xpos 85\n  ypos 510\n }\n Dot {\n  name Dot147\n  note_font Verdana\n  xpos 119\n  ypos 670\n }\n Switch {\n  inputs 2\n  which {{\"\\[value parent.xor_edge_detect]\" i}}\n  name Switch3\n  note_font Verdana\n  xpos 7\n  ypos 747\n }\npush $N900befa0\n Dot {\n  name Dot71\n  note_font Verdana\n  xpos 1045\n  ypos -52\n }\n Dot {\n  name Dot1\n  note_font Verdana\n  xpos 1045\n  ypos 100\n }\nset N90501f40 [stack 0]\npush $N90501f40\n Input {\n  inputs 0\n  name OMIT\n  label \"The area to omit from being affected\"\n  note_font Verdana\n  xpos 1582\n  ypos -260\n  number 1\n }\n Dot {\n  name Dot2\n  note_font Verdana\n  xpos 1616\n  ypos 50\n }\nset N902a8b10 [stack 0]\n Merge2 {\n  inputs 2\n  operation out\n  name Merge1\n  note_font Verdana\n  xpos 1088\n  ypos 147\n }\n Switch {\n  inputs 2\n  name Switch4\n  note_font Verdana\n  xpos 1011\n  ypos 209\n }\n FilterErode {\n  channels alpha\n  size {{\"\\[value parent.pre_choke]\" i}}\n  name FilterErode2\n  note_font Verdana\n  xpos 1011\n  ypos 280\n }\n Grade {\n  channels alpha\n  blackpoint {{\"\\[value parent.pre_contrast]\"}}\n  whitepoint {{\"1-\\[value parent.pre_contrast]\"}}\n  black_clamp false\n  name Grade19\n  note_font Verdana\n  xpos 1011\n  ypos 341\n }\n Clamp {\n  channels alpha\n  name Clamp4\n  note_font Verdana\n  xpos 1011\n  ypos 390\n }\n Premult {\n  name Premult3\n  note_font Verdana\n  xpos 1011\n  ypos 471\n }\n Blur {\n  size {{\"\\[value parent.pre_blur]\" i}}\n  name Blur8\n  note_font Verdana\n  xpos 1011\n  ypos 560\n }\n Unpremult {\n  name Unpremult1\n  note_font Verdana\n  xpos 1011\n  ypos 643\n }\n Blur {\n  size {{\"\\[value parent.post_blur]\" i}}\n  name Blur20\n  note_font Verdana\n  xpos 1011\n  ypos 704\n }\n Dot {\n  name Dot61\n  note_font Verdana\n  xpos 1045\n  ypos 795\n }\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy1\n  note_font Verdana\n  xpos 7\n  ypos 901\n }\n Premult {\n  name Premult4\n  note_font Verdana\n  xpos 7\n  ypos 1045\n }\n Dot {\n  name Dot4\n  note_font Verdana\n  xpos 41\n  ypos 1122\n }\nset N9080dde0 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge5\n  xpos -498\n  ypos 1611\n }\npush $N905bc670\npush $N90428e90\n Dot {\n  name Dot6\n  xpos -562\n  ypos 162\n }\nset N903ec410 [stack 0]\npush $N903ec410\n Blur {\n  size {{\"\\[value parent.sharpness]\" i}}\n  name Blur1\n  xpos -728\n  ypos 211\n }\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge3\n  xpos -596\n  ypos 283\n }\n ColorCorrect {\n  saturation 0\n  name ColorCorrect1\n  xpos -596\n  ypos 375\n }\n Dot {\n  name Dot8\n  xpos -554\n  ypos 1268\n }\npush $N9080dde0\npush $N9080dde0\npush $N902a8b10\n Dot {\n  name Dot3\n  note_font Verdana\n  xpos 1616\n  ypos 967\n }\n Merge2 {\n  inputs 2\n  operation out\n  name Merge2\n  note_font Verdana\n  xpos 76\n  ypos 1192\n }\n Switch {\n  inputs 2\n  name Switch5\n  note_font Verdana\n  xpos 7\n  ypos 1253\n }\n Unpremult {\n  name Unpremult3\n  xpos -471\n  ypos 1330\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix {{\"\\[value parent.amount]\"}}\n  name Merge4\n  xpos -588\n  ypos 1352\n }\n Premult {\n  name Premult1\n  xpos -588\n  ypos 1393\n }\npush $N90022dc0\n Merge2 {\n  inputs 2\n  name Merge13\n  note_font Verdana\n  xpos -935\n  ypos 1393\n }\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy2\n  note_font Verdana\n  xpos -1238\n  ypos 1725\n }\nset N9049be20 [stack 0]\n Premult {\n  name Premult10\n  note_font Verdana\n  xpos -1130\n  ypos 1789\n }\npush $N9049be20\n Switch {\n  inputs 2\n  which {{\"\\[value parent.output_premulted]\" i}}\n  name Switch2\n  note_font Verdana\n  xpos -1238\n  ypos 1878\n }\n Dot {\n  name Dot9\n  xpos -1204\n  ypos 1996\n }\nset N8ff7fde0 [stack 0]\nadd_layer {smearmask smearmask.red}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 smearmask\n  name ShuffleCopy3\n  note_font Verdana\n  xpos -1140\n  ypos 2066\n }\npush $N8ff7fde0\n Switch {\n  inputs 2\n  which {{\"\\[value parent.outputmask]\"}}\n  name Switch6\n  note_font Verdana\n  selected true\n  xpos -1238\n  ypos 2141\n }\nset N902ae100 [stack 0]\n Dot {\n  name Dot19\n  note_font Verdana\n  xpos -1204\n  ypos 2343\n }\n Output {\n  name Output1\n  note_font Verdana\n  xpos -1238\n  ypos 2422\n }\npush $N8ff7fde0\npush 0\npush 0\npush 0\npush 0\npush $N902c3fe0\npush $N902ae100\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConstantPro.gizmo",
    "content": "Group {\n name ConstantPro\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() in \\[\\\"hue\\\", \\\"saturation\\\", \\\"brightness\\\", \\\"color\\\"]:\\n    import colorsys\\n    \\n    def lin2srgb(lin):\\n        if lin > 0.0031308:\\n            s = 1.055 * (pow(lin, (1.0 / 2.4))) - 0.055\\n        else:\\n            s = 12.92 * lin\\n        return s\\n    \\n    if k.name() in \\[\\\"hue\\\", \\\"saturation\\\", \\\"brightness\\\"]:\\n        alpha = n\\[\\\"color\\\"].getValue(3)\\n        h = ((n\\[\\\"hue\\\"].value())%360)/360\\n        r,g,b = colorsys.hsv_to_rgb(h,n\\[\\\"saturation\\\"].value(),n\\[\\\"brightness\\\"].value())\\n        rgb_color = \\[r,g,b,alpha]\\n        n\\[\\\"color\\\"].setValue(rgb_color)\\n        if r==0 and g==0 and b==0:\\n            n\\[\\\"tile_color\\\"].setValue(255)\\n        else:\\n            rs,gs,bs = lin2srgb(r),lin2srgb(g),lin2srgb(b)\\n            n\\[\\\"tile_color\\\"].setValue(int('%02x%02x%02x%02x' % (rs*255,gs*255,bs*255,1),16))\\n        \\n    if k.name() in \\[\\\"color\\\"]:\\n        r,g,b = n.knob('color').getValue(0),n.knob('color').getValue(1),n.knob('color').getValue(2)\\n        h,s,v = colorsys.rgb_to_hsv(r,g,b)\\n        n\\[\\\"hue\\\"].setValue(int(h*360))\\n        n\\[\\\"saturation\\\"].setValue(s)\\n        n\\[\\\"brightness\\\"].setValue(v)\\n        if r==0 and g==0 and b==0:\\n            n\\[\\\"tile_color\\\"].setValue(255)\\n        else:\\n            rs,gs,bs = lin2srgb(r),lin2srgb(g),lin2srgb(b)\\n        n\\[\\\"tile_color\\\"].setValue(int('%02x%02x%02x%02x' % (rs*255,gs*255,bs*255,1),16))\"\n tile_color 0xff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_size 12\n selected true\n addUserKnob {20 ConstantPro}\n addUserKnob {41 channels T Constant2.channels}\n addUserKnob {41 format T Constant2.format}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_1 l <b>RGB T \" \"}\n addUserKnob {22 white l \"<font style=background-color:white> <font color=white>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[1,1,1,a])\\n\\nn\\['tile_color'].setValue(4294967040)\\n\"}\n addUserKnob {22 red l \"<font style=background-color:red> <font color=red>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[1,0,0,a])\\n\\nn\\['tile_color'].setValue(4278190335)\\n\"}\n addUserKnob {22 yellow l \"<font style=background-color:yellow> <font color=yellow>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[1,1,0,a])\\n\\nn\\['tile_color'].setValue(4294902015)\\n\"}\n addUserKnob {22 green l \"<font style=background-color:limegreen> <font color=limegreen>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[0,1,0,a])\\n\\nn\\['tile_color'].setValue(16711935)\\n\"}\n addUserKnob {22 gray l \"<font style=background-color:gray> <font color=gray>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[.5,.5,.5,a])\\n\\nn\\['tile_color'].setValue(2139062271)\\n\"}\n addUserKnob {22 cyan l \"<font style=background-color:cyan> <font color=cyan>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[0,1,1,a])\\n\\nn\\['tile_color'].setValue(16777215)\\n\"}\n addUserKnob {22 blue l \"<font style=background-color:blue> <font color=blue>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[0,0,1,a])\\n\\nn\\['tile_color'].setValue(65535)\\n\"}\n addUserKnob {22 magenta l \"<font style=background-color:magenta> <font color=Magenta>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[1,0,1,a])\\n\\nn\\['tile_color'].setValue(4278255615)\\n\"}\n addUserKnob {22 greyEighteenPercent l \"<font style=background-color:#2E2E2E> <font color=#2E2E2E>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[.18,.18,.18,a])\\n\\nn\\['tile_color'].setValue(774778623)\"}\n addUserKnob {22 black l \"<font style=background-color:black> <font color=black>< font size=4>...\" -STARTLINE T \"n = nuke.thisNode()\\na = n\\['color'].getValue()\\[3]\\nn\\['color'].setValue(\\[0,0,0,a])\\n\\nn\\['tile_color'].setValue(255)\\n\"}\n addUserKnob {22 randomColor l \"<img src = \\\"ColorBars.png\\\">\" -STARTLINE T \"import random\\nn = nuke.thisNode()\\nrand = int(random.random()*360)\\nn\\[\\\"hue\\\"].setValue(rand)\"}\n addUserKnob {26 text l <b>Alpha: T \" \"}\n addUserKnob {22 whiteAlpha l \"<font style=background-color:white> <font color=white>< font size=4>...\" -STARTLINE T nuke.thisNode().knob('color').setValue(1,3)}\n addUserKnob {22 grayAlpha l \"<font style=background-color:gray> <font color=gray>< font size=4>...\" -STARTLINE T \"nuke.thisNode()\\['color'].setValue(0.5,3)\"}\n addUserKnob {22 blackAlpha l \"<font style=background-color:black> <font color=black>< font size=4>...\" -STARTLINE T \"nuke.thisNode()\\['color'].setValue(0, 3)\"}\n addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n color_rgba_panelDropped true\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {19 color l Color}\n color {0 0 0 0}\n addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 hue l Hue R 0 360}\n addUserKnob {7 saturation l Saturation}\n addUserKnob {7 brightness l Value}\n addUserKnob {26 \"\"}\n addUserKnob {20 moreSettings l \"More Settings\" n 1}\n moreSettings 0\n addUserKnob {41 first l \"frame range\" T Constant2.first}\n addUserKnob {41 last l \"\" -STARTLINE T Constant2.last}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {6 fillBBox l \"Fill BBox\" +STARTLINE}\n fillBBox true\n addUserKnob {6 combineBBox l \"Combine with Input BBox\" -STARTLINE}\n combineBBox true\n addUserKnob {41 overscanPercent l \"Overscan Percent\" T BBoxToFormat.overscanPercent}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T fillColor.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T fillColor.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T fillColor.invert_mask}\n addUserKnob {41 fringe -STARTLINE T fillColor.fringe}\n addUserKnob {41 mix_1 l mix T fillColor.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -403\n  ypos -17\n  number 1\n }\n Constant {\n  inputs 0\n  name Constant2\n  tile_color 0xff\n  xpos -545\n  ypos -332\n  postage_stamp false\n }\n Input {\n  inputs 0\n  name Input\n  xpos -407\n  ypos -227\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name SwitchDefault\n  xpos -545\n  ypos -227\n }\nset N47dbc800 [stack 0]\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos -545\n  ypos -179\n  disable {{!parent.fillBBox}}\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType Percentage\n  addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent 1\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  inputBbox 0\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N764b7200 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N764b6b00 [stack 0]\npush $N764b7200\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N764b6400 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N764b5d00 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $N764b5d00\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N764b6b00\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N764b6400\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N67b4c100 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N67b4c100\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\nset N47dbc100 [stack 0]\npush $N47dbc800\n Merge2 {\n  inputs 2\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -695\n  ypos -102\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"\\nntn = nuke.thisNode()\\nall = nuke.allNodes()\\na = ntn.input(1)\\nx = int(ntn\\['xpos'].value())\\nb = ntn.input(0)\\ny = int(ntn\\['ypos'].value())\\nwith nuke.Root():\\n    ma = nuke.nodes.NST_MergeAll()\\n    ma.setXYpos(x,y)\\n    # copy all values\\n    ak = ntn.knobs()\\n    for knoB in ma.knobs():\\n      try:\\n        if knoB not in \\[\\\"name\\\",\\\"tile_color\\\", \\\"also_merge\\\"]:\\n          ma\\[knoB].setValue(ntn\\[knoB].value())\\n          with ma:\\n            newMerge = nuke.toNode(\\\"MergeAllChannels\\\")\\n            if ntn\\[\\\"mix\\\"].isAnimated():\\n                newMerge\\[\\\"mix\\\"].copyAnimations(ntn\\[\\\"mix\\\"].animations())\\n            else:\\n                newMerge\\['mix'].setValue(ntn\\['mix'].value())\\n            newMerge.knob('also_merge').setValue('all')\\n\\n      except:\\n        pass\\n  \\n    # try to reconnect\\n    try:\\n        ma.setInput(0,b);ma.setInput(1,a)\\n        for one in all:\\n            for i in range(one.inputs()):\\n                if one.input(i) == ntn:\\n                    one.setInput(i,ma)\\n    except:\\n        pass\\n    nuke.delete(ntn)\\n\"}\n }\npush $N47dbc100\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -545\n  ypos -102\n  disable {{!parent.combineBBox}}\n }\n Fill {\n  inputs 1+1\n  output {{{parent.Constant2.channels}}}\n  color {{parent.color} {parent.color} {parent.color} {parent.color}}\n  name fillColor\n  xpos -545\n  ypos -17\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -545\n  ypos 33\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos -545\n  ypos 94\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ContactSheetAuto.gizmo",
    "content": "ContactSheet {\nwidth {{input.width*columns*resMult}}\nheight {{input.height*rows*resMult}}\nrows {{\"\\[expr \\{int( (sqrt( \\[numvalue inputs] ) ) )\\} ] * \\[expr \\{int( ceil ( (\\[numvalue inputs] /(sqrt( \\[numvalue inputs] ) ) )) )\\} ] < \\[numvalue inputs]   ? \\[expr \\{int( (sqrt( \\[numvalue inputs] ) ) )\\} ] +1 : \\[expr \\{int( (sqrt( \\[numvalue inputs] ) ) )\\} ]\"}}\ncolumns {{\"\\[expr \\{int( ceil ( (\\[numvalue inputs] /(sqrt( \\[numvalue inputs] )) )) )\\} ]\"}}\ncenter true\nroworder TopBottom\nname ContactSheetAuto\ntile_color 0xff69f7ff\nselected true\naddUserKnob {20 Settings}\naddUserKnob {7 resMult l \"Resolution Multiplier\" R 0.1 2}\nresMult 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Contrast.gizmo",
    "content": "Group {\n name Contrast\n tile_color 0x6a93ddff\n note_font \"DejaVu LGC Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 Contrast}\n addUserKnob {6 unpremult1 l \"unpremult input\" +STARTLINE}\n addUserKnob {41 Amount l HighContrast T Multiply1.value}\n addUserKnob {41 lowContrast l \"Low Contrast\" T Multiply2.value}\n addUserKnob {41 overallContrast l \"Overall Contrast\" T Multiply3.value}\n addUserKnob {41 whitepoint l pivot T Grade12.whitepoint}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge2.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge2.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge2.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge2.fringe}\n addUserKnob {41 mix T Merge2.mix}\n}\n Input {\n  inputs 0\n  name InputMask\n  xpos -246\n  ypos 60\n  number 1\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -399\n  ypos -523\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -365\n  ypos -452\n }\nset N936a4a60 [stack 0]\n Unpremult {\n  name Unpremult2\n  xpos -399\n  ypos -393\n  disable {{!unpremult1}}\n }\n Grade {\n  whitepoint 0.18\n  black_clamp false\n  name Grade12\n  xpos -399\n  ypos -367\n }\n Add {\n  channels rgb\n  value -1\n  name Add1\n  xpos -399\n  ypos -341\n }\nset N936af620 [stack 0]\n Grade {\n  multiply -1\n  black_clamp false\n  name Grade1\n  xpos -289\n  ypos -312\n }\n Clamp {\n  channels rgb\n  maximum_enable false\n  name Clamp2\n  xpos -289\n  ypos -286\n }\n Multiply {\n  channels rgb\n  name Multiply2\n  xpos -289\n  ypos -260\n }\n Grade {\n  multiply -1\n  black_clamp false\n  name Grade2\n  xpos -289\n  ypos -222\n }\npush $N936af620\n Clamp {\n  channels rgb\n  maximum_enable false\n  name Clamp1\n  xpos -399\n  ypos -289\n }\n Multiply {\n  channels rgb\n  name Multiply1\n  xpos -399\n  ypos -263\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge1\n  xpos -399\n  ypos -222\n }\n Multiply {\n  channels rgb\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -399\n  ypos -183\n }\n Add {\n  channels rgb\n  value 1\n  name Add2\n  xpos -399\n  ypos -134\n }\n Grade {\n  whitepoint {{parent.Grade12.whitepoint} {parent.Grade12.whitepoint} {parent.Grade12.whitepoint} {parent.Grade12.whitepoint}}\n  reverse true\n  black_clamp false\n  name Grade15\n  xpos -399\n  ypos -108\n }\n Premult {\n  name Premult3\n  xpos -399\n  ypos -82\n  disable {{!unpremult1}}\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -365\n  ypos -21\n }\npush $N936a4a60\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -509\n  ypos -452\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos -509\n  ypos 63\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge2\n  xpos -399\n  ypos 60\n }\n Output {\n  name Output1\n  xpos -399\n  ypos 152\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConvertPNZ.gizmo",
    "content": "Group {\n name ConvertPNZ\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x7f0072ff\n addUserKnob {20 general l General}\n addUserKnob {41 data l \"input data\" T menu1.data}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {6 invert_depth l \"invert depth (1/z)\" +HIDDEN +STARTLINE}\n invert_depth true\n addUserKnob {4 in_space l <b>INPUT</b> M {\"world space\" \"camera space\" \"\" \"\" \"\" \"\"}}\n addUserKnob {4 out_position l <b>OUTPUT</b> M {\"world space\" \"camera space\" \"\" \"\" \"\"}}\n out_position \"camera space\"\n addUserKnob {4 out_normal l <b>OUTPUT</b> +HIDDEN M {\"world space\" \"camera space\" fresnel \"\"}}\n out_normal \"camera space\"\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {20 CamTabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_cam_setup l \"Camera Setup\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Deep data is related to camera. So when convert deep data to anything, it required the camera data.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture and world matrix from selected camera to generate world space position data.\\n\\nYou can find the world space position pass store under <b>'deepPosition'</b> channel after this node. The pass support volumatric deep data. If want to bring the position data to 2D in downstream. Please only use <b>DVPToImage</b> which comes along with this toolset.\\n\\nAdditional note:\\nThis node will also create another channel called <b>'deepRawColor'</b> . This channel stored the original of deep data from input for any dev purposes in downstream. User not necessary to use this channel but better to keep it if this toolset occur in downstream.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll',\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data. So the position data still works if input doesn't contain any camera movement.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 CamTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {2 font}\n font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n addUserKnob {6 disable_error l \"disable onscreen message\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;a&nbsp;package&nbsp;convert&nbsp;3D&nbsp;tech&nbsp;passes<br>&nbsp;&nbsp;included<br>&nbsp;&nbsp;*&nbsp;P2Z&nbsp;(&nbsp;Position&nbsp;To&nbsp;Depth&nbsp;)<br>&nbsp;&nbsp;*&nbsp;P2N&nbsp;(&nbsp;Position&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2P&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Position&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2N&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;ConvertPNZ&nbsp;(&nbsp;self&nbsp;convertion&nbsp;)<br>-&nbsp;fixed&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;issue<br><br>1.2<br>-&nbsp;changed&nbsp;camera&nbsp;input&nbsp;to&nbsp;expression&nbsp;link<br>-&nbsp;fix&nbsp;alpha&nbsp;check<br>-&nbsp;added&nbsp;support&nbsp;camera&nbsp;window&nbsp;roll<br><br>1.0<br>-&nbsp;Convert&nbsp;Position&nbsp;data&nbsp;to&nbsp;Normal\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -158\n  ypos -449\n  bdwidth 274\n  bdheight 144\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label bin\n  note_font_size 42\n  xpos -153\n  ypos -270\n  bdwidth 272\n  bdheight 503\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  name Reformat1\n  xpos 755\n  ypos 1004\n }\n Text {\n  message \"missing \\[value parent.data] pass\"\n  font \"\\[value parent.font]\"\n  size {{global.res.x/15}}\n  xjustify center\n  yjustify center\n  Transform 1\n  box {0 0 {global.res.x} {global.res.y}}\n  center {640 360}\n  name Text1\n  xpos 755\n  ypos 1086\n  disable {{parent.disable_error}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  black_outside true\n  name Reformat2\n  xpos 755\n  ypos 1168\n }\n Dot {\n  name Dot5\n  xpos 789\n  ypos 1250\n }\n Input {\n  inputs 0\n  name position\n  xpos 404\n  ypos -536\n }\n Expression {\n  temp_name0 detectA\n  temp_expr0 \"red == 0 && green == 0 && blue == 0 ? 0 : 1\"\n  expr3 detectA\n  name Expression3\n  label \"non-filtered alpha\"\n  xpos 404\n  ypos -405\n }\n Dot {\n  name Dot1\n  xpos 438\n  ypos -173\n }\nset Nc9f69000 [stack 0]\n Dot {\n  name Dot4\n  xpos 594\n  ypos -173\n }\nset Nc9f68c00 [stack 0]\n Dot {\n  name Dot2\n  xpos 740\n  ypos -173\n }\nset Nc9f68800 [stack 0]\n Dot {\n  name Dot8\n  xpos 1043\n  ypos -173\n }\nset Nc9f68400 [stack 0]\n Dot {\n  name Dot20\n  xpos 1165\n  ypos -173\n }\nset Nc9f68000 [stack 0]\n Dot {\n  name Dot9\n  xpos 1310\n  ypos -173\n }\nset Nc9f83c00 [stack 0]\n Dot {\n  name Dot14\n  xpos 1611\n  ypos -173\n }\nset Nc9f83800 [stack 0]\n Dot {\n  name Dot17\n  xpos 1904\n  ypos -173\n }\nset Nc9f83400 [stack 0]\n Dot {\n  name Dot18\n  xpos 2075\n  ypos -173\n }\n Expression {\n  expr0 \"1 / red\"\n  expr1 \"1 / red\"\n  expr2 \"1 / red\"\n  name Expression2\n  xpos 2041\n  ypos -99\n }\n Expression {\n  expr0 \"isnan(red) || isinf(red) ? 0 : red\"\n  expr1 \"isnan(green) || isinf(green) ? 0 : green\"\n  expr2 \"isnan(blue) || isinf(blue) ? 0 : blue\"\n  name Expression5\n  label \"remove nan&inf\"\n  xpos 2041\n  ypos -17\n }\n Dot {\n  name Dot19\n  xpos 2075\n  ypos 367\n }\npush $Nc9f83400\n Switch {\n  inputs 2\n  which {{invert_depth}}\n  name Switch5\n  xpos 1870\n  ypos 449\n }\n Dot {\n  name Dot16\n  xpos 1904\n  ypos 531\n }\npush $Nc9f83800\n Shuffle {\n  red blue\n  green blue\n  name Shuffle2\n  xpos 1577\n  ypos 38\n }\n Invert {\n  channels rgb\n  name Invert2\n  xpos 1577\n  ypos 120\n }\n Premult {\n  name Premult2\n  xpos 1577\n  ypos 202\n }\n Dot {\n  name Dot15\n  xpos 1611\n  ypos 342\n }\npush $Nc9f83c00\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix2\n  label \"invert deformation\"\n  selected true\n  xpos 1276\n  ypos -99\n }\n Dot {\n  name Dot12\n  xpos 1310\n  ypos -5\n }\nset Nc9fa4400 [stack 0]\n Dot {\n  name Dot11\n  xpos 1461\n  ypos -5\n }\n Shuffle {\n  red blue\n  green blue\n  name Shuffle1\n  xpos 1427\n  ypos 93\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 1427\n  ypos 175\n }\n Premult {\n  name Premult1\n  xpos 1427\n  ypos 257\n }\n Dot {\n  name Dot13\n  xpos 1461\n  ypos 339\n }\npush $Nc9fa4400\n Dot {\n  name Dot10\n  xpos 1310\n  ypos 337\n }\npush $Nc9f68000\n ColorMatrix {\n  matrix {\n      {{parent.cam_data.world_matrix.0} {parent.cam_data.world_matrix.1} {parent.cam_data.world_matrix.2}}\n      {{parent.cam_data.world_matrix.4} {parent.cam_data.world_matrix.5} {parent.cam_data.world_matrix.6}}\n      {{parent.cam_data.world_matrix.8} {parent.cam_data.world_matrix.9} {parent.cam_data.world_matrix.10}}\n    }\n  name ColorMatrix4\n  label transformation\n  xpos 1131\n  ypos -99\n }\n Dot {\n  name Dot21\n  xpos 1165\n  ypos 337\n }\npush $Nc9f68400\n Switch {\n  inputs 5\n  which {{\"in_space == out_normal ? 0 : \\nin_space == 0 && out_normal == 1 ? 2 : \\nin_space == 1 && out_normal == 0 ? 1 : \\nin_space == 0 && out_normal == 2 ? 3 : \\n4\"}}\n  name Switch4\n  xpos 1009\n  ypos 460\n }\n Dot {\n  name Dot7\n  xpos 1043\n  ypos 542\n }\npush $Nc9f68800\n Expression {\n  expr2 -blue\n  name Expression6\n  label \"invert z\"\n  xpos 706\n  ypos -99\n }\n ColorMatrix {\n  matrix {\n      {{parent.cam_data.world_matrix.0} {parent.cam_data.world_matrix.1} {parent.cam_data.world_matrix.2}}\n      {{parent.cam_data.world_matrix.4} {parent.cam_data.world_matrix.5} {parent.cam_data.world_matrix.6}}\n      {{parent.cam_data.world_matrix.8} {parent.cam_data.world_matrix.9} {parent.cam_data.world_matrix.10}}\n    }\n  name ColorMatrix3\n  label deformation\n  xpos 706\n  ypos -5\n }\n Add {\n  channels rgb\n  value {{parent.cam_data.world_matrix.3} {parent.cam_data.world_matrix.7} {parent.cam_data.world_matrix.11} {curve}}\n  maskChannelInput rgba.alpha\n  name Add3\n  label \"invert translation\"\n  xpos 706\n  ypos 101\n  bookmark true\n }\n Dot {\n  name Dot3\n  xpos 740\n  ypos 321\n }\npush $Nc9f68c00\n Add {\n  channels rgb\n  value {{-parent.cam_data.world_matrix.3} {-parent.cam_data.world_matrix.7} {-parent.cam_data.world_matrix.11} {curve}}\n  name Add1\n  label \"invert translation\"\n  xpos 560\n  ypos -99\n  bookmark true\n }\n ColorMatrix {\n  matrix {\n      {{parent.cam_data.world_matrix.0} {parent.cam_data.world_matrix.1} {parent.cam_data.world_matrix.2}}\n      {{parent.cam_data.world_matrix.4} {parent.cam_data.world_matrix.5} {parent.cam_data.world_matrix.6}}\n      {{parent.cam_data.world_matrix.8} {parent.cam_data.world_matrix.9} {parent.cam_data.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  label \"invert deformation\"\n  xpos 560\n  ypos -5\n }\n Expression {\n  expr2 -blue\n  name Expression1\n  label \"invert z\"\n  xpos 560\n  ypos 101\n }\n Dot {\n  name Dot6\n  xpos 594\n  ypos 317\n }\npush $Nc9f69000\n Switch {\n  inputs 3\n  which {{\"in_space == out_position ? 0 : ( in_space == 0 && out_position == 1 ? 1 : 2 )\"}}\n  name Switch2\n  xpos 404\n  ypos 453\n }\n Switch {\n  inputs 3\n  which {{parent.data}}\n  name Switch1\n  xpos 404\n  ypos 806\n }\n Expression {\n  expr0 \"red * alpha\"\n  expr1 \"green * alpha\"\n  expr2 \"blue * alpha\"\n  expr3 0\n  name Expression4\n  label \"premult and cleanup\"\n  xpos 404\n  ypos 929\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name Switch3\n  xpos 404\n  ypos 1340\n }\n Output {\n  name Output1\n  xpos 404\n  ypos 1467\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -111\n  ypos 68\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path fb_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {parent.cam_winroll}}\n  name fb_data\n  xpos -97\n  ypos -47\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name cam_data\n  xpos 6\n  ypos -48\n }\n NoOp {\n  inputs 0\n  name global\n  xpos -114\n  ypos -148\n  addUserKnob {20 User}\n  addUserKnob {12 res}\n  res {{\"\\[exists parent.input0] ? parent.input0.width : width\"} {\"\\[exists parent.input0] ? parent.input0.height : height\"}}\n  addUserKnob {7 pxa}\n  pxa {{\"\\[exists parent.input0] ? parent.input0.pixel_aspect : pixel_aspect\"}}\n  addUserKnob {7 hratio}\n  hratio {{\"parent.cam_haperture / parent.cam_focal\"}}\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\ncamKnobs = \\['set_link','remove_link','bake_link','copy_data','cam_data_grp','cam_winroll','world_matrix','endGroup_1']\\nif thisGRP\\['data'].value() == 'depth' :\\n    thisGRP\\['in_space'].setVisible(False)\\n    thisGRP\\['out_position'].setVisible(False)\\n    thisGRP\\['out_normal'].setVisible(False)\\n    thisGRP\\['invert_depth'].setVisible(True)\\n    for knob in camKnobs :\\n        thisGRP\\[knob].setEnabled(False)\\nelse :\\n    thisGRP\\['in_space'].setVisible(True)\\n    if thisGRP\\['data'].value() == 'position' :\\n        thisGRP\\['out_position'].setVisible(True)\\n        thisGRP\\['out_normal'].setVisible(False)\\n    else :\\n        thisGRP\\['out_position'].setVisible(False)\\n        thisGRP\\['out_normal'].setVisible(True)\\n    thisGRP\\['invert_depth'].setVisible(False)\\n    for knob in camKnobs :\\n        thisGRP\\[knob].setEnabled(True)\\nwith thisGRP:\\n    for node in nuke.allNodes() :\\n        if node.Class() == 'Input' :\\n            node\\['name'].setValue( thisGRP\\['data'].value() )\\n\"\n  xpos -61\n  ypos -352\n  addUserKnob {20 User}\n  addUserKnob {83 data l \"input data\" M {position normal depth}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConvolutionMatrix.gizmo",
    "content": "Group {\n name ConvolutionMatrix\n inputs 2\n autolabel \"nuke.thisNode().name() + \\\"\\\\n\\\" + '(' + str(nuke.thisNode()\\['matrix_selection'].value()) + ')' \"\n tile_color 0xfff600ff\n note_font \"Verdana Bold\"\n note_font_size 14\n addUserKnob {20 matrix l Matrix}\n addUserKnob {26 message01 l \"\" +STARTLINE T \"Select a matrix and see the result:\"}\n addUserKnob {4 matrix_selection l \"\" +STARTLINE M {\"01 - Identity\" \"02 - Smoothing - 3x3 convolution kernel\" \"03 - Gaussian Blur\" \"04 - Blur\" \"05 - Motion Blur\" \"06 - Average/Mean filter\" \"07 - Antialiasing filter (1)\" \"08 - Antialiasing filter (2)\" \"09 - Sharpen\" \"10 - Intensified sharpen\" \"11 - Edge detect\" \"12 - Edge enhance\" \"13 - Emboss\" \"14 - Outline\" \"15 - Top sobel\" \"16 - Bottom sobel\" \"17 - Right sobel\" \"18 - Left sobel\" \"19 - Roberts Cross Right Bottom\" \"20 - Roberts Cross Left Bottom\" \"21 - Roberts Cross Left Top\" \"22 - Roberts Cross Right Top\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {41 matrix_1 l matrix T MatrixSUPER.matrix}\n addUserKnob {6 normalize t \"When enabled, the matrix is divided by a constant so that it’s sum is 1 (where possible). This causes the output image to have the same brightness as the source image\" -STARTLINE}\n normalize true\n addUserKnob {6 cineon l Lin/Log t \"Turn on to get this operation in Log space\\nIf the checkbox if off, then the operation will be done in the classic Lin space\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannel l \"mask channel\" T Keymix1.maskChannel}\n addUserKnob {41 invertMask l invert -STARTLINE T Keymix1.invertMask}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 message02 l \"\" +STARTLINE T \"<b><font color=yellow>Convolution Matrix v3.5</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n}\n Dot {\n  inputs 0\n  name Dot1\n  xpos -1665\n  ypos -76\n }\nset N816802e0 [stack 0]\n Dot {\n  name Dot16\n  xpos -1555\n  ypos -76\n }\nset N81682740 [stack 0]\n Dot {\n  name Dot15\n  xpos -1445\n  ypos -76\n }\nset N81684ba0 [stack 0]\n Dot {\n  name Dot14\n  xpos -1335\n  ypos -76\n }\nset N81687000 [stack 0]\n Dot {\n  name Dot13\n  xpos -1225\n  ypos -76\n }\nset N81689460 [stack 0]\n Dot {\n  name Dot12\n  xpos -1115\n  ypos -76\n }\nset N8168b8c0 [stack 0]\n Dot {\n  name Dot11\n  xpos -1005\n  ypos -76\n }\nset N8168dd20 [stack 0]\n Dot {\n  name Dot10\n  xpos -895\n  ypos -76\n }\nset N81690180 [stack 0]\n Dot {\n  name Dot9\n  xpos -785\n  ypos -76\n }\nset N816925e0 [stack 0]\n Dot {\n  name Dot19\n  xpos -656\n  ypos -76\n }\nset N81694a40 [stack 0]\n Dot {\n  name Dot21\n  xpos -546\n  ypos -76\n }\nset N81696ea0 [stack 0]\n Dot {\n  name Dot20\n  xpos -420\n  ypos -76\n }\nset N81699300 [stack 0]\n Dot {\n  name Dot22\n  xpos -293\n  ypos -76\n }\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 0 -1}\n      {0 1 0}\n    }\n  name Matrix21\n  label \"Robert Cross Right Top\"\n  xpos -327\n  ypos 33\n }\npush $N81699300\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 -1 0}\n      {0 0 1}\n    }\n  name Matrix20\n  label \"Robert Cross Left Top\"\n  xpos -454\n  ypos 30\n }\npush $N81696ea0\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 0 1}\n      {0 -1 0}\n    }\n  name Matrix19\n  label \"Robert Cross Left Down\"\n  xpos -580\n  ypos 29\n }\npush $N81694a40\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 1 0}\n      {0 0 -1}\n    }\n  name Matrix18\n  label \"Robert Cross Right Down\"\n  xpos -690\n  ypos 30\n }\npush $N816925e0\n Matrix {\n  channels rgba\n  matrix {\n      {-1 0 1}\n      {-2 0 2}\n      {-1 0 1}\n    }\n  name Matrix17\n  label \"Right Sobel\"\n  xpos -819\n  ypos 30\n }\npush $N81690180\n Matrix {\n  channels rgba\n  matrix {\n      {1 0 -1}\n      {2 0 -2}\n      {1 0 -1}\n    }\n  name Matrix16\n  label \"Left Sobel\"\n  xpos -929\n  ypos 28\n }\npush $N8168dd20\n Matrix {\n  channels rgba\n  matrix {\n      {-1 -2 -1}\n      {0 0 0}\n      {1 2 1}\n    }\n  name Matrix15\n  label \"Bottom Sobel\"\n  xpos -1039\n  ypos 28\n }\npush $N8168b8c0\n Matrix {\n  channels rgba\n  matrix {\n      {1 2 1}\n      {0 0 0}\n      {-1 -2 -1}\n    }\n  name Matrix14\n  label \"Top Sobel\"\n  xpos -1149\n  ypos 28\n }\npush $N81689460\n Matrix {\n  channels rgba\n  matrix {\n      {-1 -1 -1}\n      {-1 8 -1}\n      {-1 -1 -1}\n    }\n  name Matrix13\n  label Outline\n  xpos -1259\n  ypos 28\n }\npush $N81687000\n Matrix {\n  channels rgba\n  matrix {\n      {-2 -1 0}\n      {-1 1 1}\n      {0 1 2}\n    }\n  name Matrix12\n  label Emboss\n  xpos -1369\n  ypos 28\n }\npush $N81684ba0\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {-1 1 0}\n      {0 0 0}\n    }\n  name Matrix11\n  label \"Edge Enhance\"\n  xpos -1479\n  ypos 31\n }\npush $N81682740\n Matrix {\n  channels rgba\n  matrix {\n      {0 1 0}\n      {1 -4 1}\n      {0 1 0}\n    }\n  name Matrix10\n  label \"Edge detect\"\n  xpos -1589\n  ypos 28\n }\npush $N816802e0\n Matrix {\n  channels rgba\n  matrix {\n      {-1 -1 -1}\n      {-1 9 -1}\n      {-1 -1 -1}\n    }\n  name Matrix9\n  label \"Intensified sharpen\"\n  xpos -1699\n  ypos 28\n }\npush $N816802e0\n Dot {\n  name Dot8\n  xpos -1759\n  ypos -76\n }\nset N816f6230 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {0 -1 0}\n      {-1 5 -1}\n      {0 -1 0}\n    }\n  normalize true\n  name Matrix8\n  label Sharpen\n  xpos -1793\n  ypos 28\n }\npush $N816f6230\n Dot {\n  name Dot6\n  xpos -1854\n  ypos -76\n }\nset N817024e0 [stack 0]\n Matrix {\n  channels rgb\n  matrix {\n      {1 2 1}\n      {2 4 2}\n      {1 2 1}\n    }\n  normalize true\n  name Matrix7\n  label \"Antialiasing filter\\nsize 2\"\n  xpos -1888\n  ypos 24\n }\npush $N817024e0\n Dot {\n  name Dot5\n  xpos -1964\n  ypos -76\n }\nset N8170a510 [stack 0]\n Matrix {\n  channels rgb\n  matrix {\n      {0 1 0}\n      {1 2 1}\n      {0 1 0}\n    }\n  normalize true\n  name Matrix6\n  label \"Antialiasing filter\\nsize 1\"\n  xpos -1998\n  ypos 28\n }\npush $N8170a510\n Dot {\n  name Dot17\n  xpos -2082\n  ypos -76\n }\nset N81712540 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {0.1111111111 0.11111111 0.11111111}\n      {0.11111111 0.11111111 0.11111111}\n      {0.11111111 0.11111111 0.11111111}\n    }\n  normalize true\n  name Matrix5\n  label \"Average filter\"\n  xpos -2116\n  ypos 28\n }\npush $N81712540\n Dot {\n  name Dot18\n  xpos -2207\n  ypos -76\n }\nset N8171a570 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {1 0 0}\n      {0 1 0}\n      {0 0 1}\n    }\n  normalize true\n  name Matrix4\n  label \"Motion Blur\"\n  xpos -2241\n  ypos 31\n }\npush $N8171a570\n Dot {\n  name Dot7\n  xpos -2318\n  ypos -76\n }\nset N817225a0 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {0.0625 0.125 0.0625}\n      {0.125 0.25 0.125}\n      {0.0625 0.125 0.0625}\n    }\n  normalize true\n  name Matrix3\n  label Blur\n  xpos -2352\n  ypos 30\n }\npush $N817225a0\n Dot {\n  name Dot4\n  xpos -2413\n  ypos -76\n }\nset N8172a5d0 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {0 1 0}\n      {1 4 1}\n      {0 1 0}\n    }\n  normalize true\n  name Matrix2\n  label \"Gaussian Blur\"\n  xpos -2447\n  ypos 28\n }\npush $N8172a5d0\n Dot {\n  name Dot3\n  xpos -2530\n  ypos -76\n }\nset N81732690 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {1 1 1}\n      {1 1 1}\n      {1 1 1}\n    }\n  normalize true\n  name Matrix1\n  label \"Smoothing\\n3x3 convolution kernel\"\n  xpos -2564\n  ypos 27\n }\npush $N81732690\n Dot {\n  name Dot2\n  xpos -2645\n  ypos -76\n }\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {0 1 0}\n      {0 0 0}\n    }\n  normalize {{parent.normalize}}\n  name Matrix0\n  label Identity\n  xpos -2679\n  ypos 29\n }\n Switch {\n  inputs 22\n  which {{parent.matrix_selection}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -1634\n  ypos 420\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 10\n  box_height 10\n  box_fixed true\n  name Reformat1\n  xpos 762\n  ypos 229\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  xpos 762\n  ypos 309\n }\n Input {\n  inputs 0\n  name mask\n  xpos 610\n  ypos 82\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos 610\n  ypos 309\n }\n Dot {\n  name Dot23\n  xpos 643\n  ypos 701\n }\n Input {\n  inputs 0\n  name src\n  selected true\n  xpos -580\n  ypos 235\n }\nset N81633080 [stack 0]\n Colorspace {\n  colorspace_out Cineon\n  name Colorspace1\n  xpos -580\n  ypos 301\n  disable {{!parent.cineon}}\n }\n Matrix {\n  channels rgba\n  matrix {\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,0)\\\\n]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,2)]\"}}\n    }\n  normalize {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('normalize').value()\\\\n]\"}}\n  name MatrixSUPER\n  xpos -580\n  ypos 370\n }\n Colorspace {\n  colorspace_in Cineon\n  name Colorspace2\n  xpos -580\n  ypos 455\n  disable {{!parent.cineon}}\n }\n Dot {\n  name Dot24\n  xpos -547\n  ypos 701\n }\npush $N81633080\n Dot {\n  name Dot25\n  xpos 321\n  ypos 237\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 288\n  ypos 695\n }\n Output {\n  name Output1\n  xpos 288\n  ypos 841\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CornerPin2D_Matrix.gizmo",
    "content": "Group {\n name CornerPin2D_Matrix\n tile_color 0xa57aaa00\n selected true\n addUserKnob {20 CornerPin2D}\n addUserKnob {26 \"\"}\n addUserKnob {41 to1 T CornerPin2D1.to1}\n addUserKnob {41 enable1 -STARTLINE T CornerPin2D1.enable1}\n addUserKnob {41 to2 T CornerPin2D1.to2}\n addUserKnob {41 enable2 -STARTLINE T CornerPin2D1.enable2}\n addUserKnob {41 to3 T CornerPin2D1.to3}\n addUserKnob {41 enable3 -STARTLINE T CornerPin2D1.enable3}\n addUserKnob {41 to4 T CornerPin2D1.to4}\n addUserKnob {41 enable4 -STARTLINE T CornerPin2D1.enable4}\n addUserKnob {22 copy_from l \"Copy 'from'\" T \"n = nuke.thisNode()\\nknob_from1 = n\\['from1'].getValue()\\nknob_from2 = n\\['from2'].getValue()\\nknob_from3 = n\\['from3'].getValue()\\nknob_from4 = n\\['from4'].getValue()\\n\\n\\nn\\['to1'].setValue(knob_from1)\\nn\\['to2'].setValue(knob_from2)\\nn\\['to3'].setValue(knob_from3)\\nn\\['to4'].setValue(knob_from4)\" +STARTLINE}\n addUserKnob {20 \"extra matrix\" n 2}\n addUserKnob {41 transform_matrix l \"\" -STARTLINE T CornerPin2D1.transform_matrix}\n addUserKnob {20 \"\" n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 message l \"\" +STARTLINE T \"<i>This is just a visualization. Can't modify directly this matrix\"}\n addUserKnob {41 matrix T Matrix1.matrix}\n addUserKnob {41 inverse -STARTLINE T CornerPin2D1.inverse}\n addUserKnob {20 from l From}\n addUserKnob {41 from1 T CornerPin2D1.from1}\n addUserKnob {41 from2 T CornerPin2D1.from2}\n addUserKnob {41 from3 T CornerPin2D1.from3}\n addUserKnob {41 from4 T CornerPin2D1.from4}\n addUserKnob {41 set_to_input l \"Set to input\" T CornerPin2D1.set_to_input}\n addUserKnob {41 copy_from_to l \"Copy 'to'\" -STARTLINE T CornerPin2D1.copy_from_to}\n addUserKnob {20 email l @}\n addUserKnob {22 tutorial l Tutorial t http://www.andreageremia.it/tutorial_matrix_transform.html T \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial_matrix_transform.html')\\n\" +STARTLINE}\n addUserKnob {26 tool l \"\" +STARTLINE T \"Tool created by Andrea Geremia\\n\\nandrea.geremia89@gmail.com\\nwww.andreageremia.it\\n\\nFrom the Julik's code: https://gist.github.com/julik/1164618\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 269\n  ypos -141\n }\n CornerPin2D {\n  to1 {0 0}\n  to2 {2048 0}\n  to3 {2048 1556}\n  to4 {0 1556}\n  invert false\n  motionblur 1\n  from1 {0 0}\n  from2 {2048 0}\n  from3 {2048 1556}\n  from4 {0 1556}\n  name CornerPin2D1\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\n\\ndef getTheCornerpinAsMatrix():\\n    projectionMatrixTo = nuke.math.Matrix4()\\n    projectionMatrixFrom = nuke.math.Matrix4()\\n    \\n    theCornerpinNode = n\\n    imageWidth = float(theCornerpinNode.width())\\n    imageHeight = float(theCornerpinNode.height())\\n    \\n    \\n    to1x, to1y = theCornerpinNode\\['to1'].value()\\n    to2x, to2y = theCornerpinNode\\['to2'].value()\\n    to3x, to3y = theCornerpinNode\\['to3'].value()\\n    to4x, to4y = theCornerpinNode\\['to4'].value()\\n    \\n    from1x, from1y = theCornerpinNode\\['from1'].value()\\n    from2x, from2y = theCornerpinNode\\['from2'].value()\\n    from3x, from3y = theCornerpinNode\\['from3'].value()\\n    from4x, from4y = theCornerpinNode\\['from4'].value()\\n    \\n    \\n    projectionMatrixTo.mapUnitSquareToQuad(to1x,to1y,to2x,to2y,to3x,to3y,to4x,to4y)\\n    projectionMatrixFrom.mapUnitSquareToQuad(from1x,from1y,from2x,from2y,from3x,from3y,from4x,from4y)\\n    \\n\\n    theCornerpinAsMatrix = projectionMatrixTo*projectionMatrixFrom.inverse()\\n    \\n    theCornerpinAsMatrix.transpose()\\n    \\n        \\n    if(n\\['inverse'].getValue()==1):\\n        inv = theCornerpinAsMatrix.inverse()\\n        theCornerpinAsMatrix = inv\\n\\n    \\n    return theCornerpinAsMatrix\\n\\nmatrix = getTheCornerpinAsMatrix()\\n\\nnuke.toNode(\\\"Matrix1\\\")\\['matrix'].setValue(matrix)\"\n  selected true\n  xpos 269\n  ypos -66\n  addUserKnob {20 User}\n  addUserKnob {6 inverse +STARTLINE}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T cornerPinZero()}\n }\n Output {\n  name Output1\n  xpos 269\n  ypos -1\n }\n Matrix {\n  inputs 0\n  matrix {\n      {1 0 0 0}\n      {0 1 0 0}\n      {0 0 1 0}\n      {0 0 0 1}\n    }\n  name Matrix1\n  xpos 442\n  ypos -93\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CrossProductVector2.gizmo",
    "content": "Group {\n name CrossProductVector2_\n help \"Calculates the cross product of 2 Vector2 inputs.\"\n addUserKnob {20 main_tab l \"Cross Product Vector2\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorA\n  xpos 457\n  ypos -6\n  number 1\n }\n Shuffle {\n  name vector_layer1\n  xpos 457\n  ypos 103\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 457\n  ypos 129\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 491\n  ypos 210\n }\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N71872f0 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n MergeExpression {\n  inputs 2\n  channel0 rgb\n  expr0 \"Br*Ag - Bg*Ar\"\n  name MergeExpression2\n  xpos 140\n  ypos 206\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N71872f0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CrossProductVector3.gizmo",
    "content": "Group {\n name CrossProductVector3_\n help \"Calculates the cross product of 2 Vector3 inputs.\"\n addUserKnob {20 main_tab l \"Cross Product Vector3\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorA\n  xpos 457\n  ypos -6\n  number 1\n }\n Shuffle {\n  name vector_layer1\n  xpos 457\n  ypos 103\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 457\n  ypos 129\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 491\n  ypos 210\n }\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N762f800 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n MergeExpression {\n  inputs 2\n  expr0 \"Ag*Bb - Ab*Bg\"\n  expr1 \"Ab*Br - Ar*Bb\"\n  expr2 \"Ar*Bg - Ag*Br\"\n  name MergeExpression2\n  xpos 140\n  ypos 206\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N762f800\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPColorCorrect.gizmo",
    "content": "Group {\n name DVPColorCorrect\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\nfor knob in thisGRP.knobs() :\\n    if thisGRP\\[knob].Class() == 'Color_Knob' :\\n        if thisGRP\\[knob].getValue() == \\[0,0,0] :\\n            if not thisGRP\\[knob].isAnimated() :\\n                thisGRP\\[knob].setSingleValue(True)\\n\"\n tile_color 0x5182ccff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {4 channels M {rgb deepPosition deepNormal}}\n addUserKnob {6 red -STARTLINE}\n red true\n addUserKnob {6 green -STARTLINE}\n green true\n addUserKnob {6 blue -STARTLINE}\n blue true\n addUserKnob {20 title_master l master n 1}\n addUserKnob {18 saturation R 0 4}\n saturation {1}\n addUserKnob {18 contrast R 0 4}\n contrast {1}\n addUserKnob {18 gamma R 0.2 5}\n gamma {1}\n addUserKnob {18 gain R 0 4}\n gain {1}\n addUserKnob {18 offset R -1 1}\n offset {0}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 title_shadows l shadows n 1}\n title_shadows 0\n addUserKnob {18 shadows_saturation l saturation R 0 4}\n shadows_saturation {1}\n addUserKnob {18 shadows_contrast l contrast R 0 4}\n shadows_contrast {1}\n addUserKnob {18 shadows_gamma l gamma R 0.2 5}\n shadows_gamma {1}\n addUserKnob {18 shadows_gain l gain R 0 4}\n shadows_gain {1}\n addUserKnob {18 shadows_offset l offset R -1 1}\n shadows_offset {0}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 title_midtones l midtones n 1}\n title_midtones 0\n addUserKnob {18 midtones_saturation l saturation R 0 4}\n midtones_saturation {1}\n addUserKnob {18 midtones_contrast l contrast R 0 4}\n midtones_contrast {1}\n addUserKnob {18 midtones_gamma l gamma R 0.2 5}\n midtones_gamma {1}\n addUserKnob {18 midtones_gain l gain R 0 4}\n midtones_gain {1}\n addUserKnob {18 midtones_offset l offset R -1 1}\n midtones_offset {0}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 title_highlights l highlights n 1}\n title_highlights 0\n addUserKnob {18 highlights_saturation l saturation R 0 4}\n highlights_saturation {1}\n addUserKnob {18 highlights_contrast l contrast R 0 4}\n highlights_contrast {1}\n addUserKnob {18 highlights_gamma l gamma R 0.2 5}\n highlights_gamma {1}\n addUserKnob {18 highlights_gain l gain R 0 4}\n highlights_gain {1}\n addUserKnob {18 highlights_offset l offset R -1 1}\n highlights_offset {0}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {20 tab_masking l Masking}\n addUserKnob {41 mix T DeepCC.mix}\n addUserKnob {26 \"\" l \" \"}\n addUserKnob {41 zmap T DeepCC.zmap}\n addUserKnob {41 limit_z -STARTLINE T DeepCC.limit_z}\n addUserKnob {20 tab_ranges l Ranges}\n addUserKnob {4 test M {none \"test on full image\" \"test with matte\" \"\"}}\n addUserKnob {41 lookup l \"\" +STARTLINE T DeepCC.lookup}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Input {\n  inputs 0\n  name deep\n  xpos -40\n  ypos 134\n }\n DeepExpression {\n  chans1 deep\n  name spacer\n  xpos -40\n  ypos 214\n }\n Dot {\n  name Dot3\n  xpos -6\n  ypos 294\n }\nset N4c8e7c00 [stack 0]\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  chans1 none\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  name DeepExpression5\n  label \"get color from upstream\"\n  xpos 90\n  ypos 371\n }\npush $N4c8e7c00\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPmatte]+0==2 ? 1 : 0\"}}\n  name Switch2\n  label \"check from upstream\"\n  xpos -40\n  ypos 448\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"\\[value selChan] == 0 ? deepRawColor.red : \\[value parent.channels].red\"\n  rgba.green \"\\[value selChan] == 0 ? deepRawColor.green : \\[value parent.channels].green\"\n  rgba.blue \"\\[value selChan] == 0 ? deepRawColor.blue : \\[value parent.channels].blue\"\n  name DeepExpression1\n  label \"shuffle deepRawColor\"\n  xpos -40\n  ypos 545\n  addUserKnob {20 User}\n  addUserKnob {3 selChan}\n  selChan {{parent.channels}}\n }\n DeepColorCorrect2 {\n  saturation {{parent.saturation.r} {parent.saturation.g} {parent.saturation.b} 0}\n  contrast {{parent.contrast.r} {parent.contrast.g} {parent.contrast.b} 0}\n  gamma {{parent.gamma.r} {parent.gamma.g} {parent.gamma.b} 0}\n  gain {{parent.gain.r} {parent.gain.g} {parent.gain.b} 0}\n  offset {{parent.offset.r} {parent.offset.g} {parent.offset.b} 0}\n  shadows.saturation {{parent.shadows_saturation.r} {parent.shadows_saturation.g} {parent.shadows_saturation.b} 0}\n  shadows.contrast {{parent.shadows_contrast.r} {parent.shadows_contrast.g} {parent.shadows_contrast.b} 0}\n  shadows.gamma {{parent.shadows_gamma.r} {parent.shadows_gamma.g} {parent.shadows_gamma.b} 0}\n  shadows.gain {{parent.shadows_gain.r} {parent.shadows_gain.g} {parent.shadows_gain.b} 0}\n  shadows.offset {{parent.shadows_offset.r} {parent.shadows_offset.g} {parent.shadows_offset.b} 0}\n  midtones.saturation {{parent.midtones_saturation.r} {parent.midtones_saturation.g} {parent.midtones_saturation.b} 0}\n  midtones.contrast {{parent.midtones_contrast.r} {parent.midtones_contrast.g} {parent.midtones_contrast.b} 0}\n  midtones.gamma {{parent.midtones_gamma.r} {parent.midtones_gamma.g} {parent.midtones_gamma.b} 0}\n  midtones.gain {{parent.midtones_gain.r} {parent.midtones_gain.g} {parent.midtones_gain.b} 0}\n  midtones.offset {{parent.midtones_offset.r} {parent.midtones_offset.g} {parent.midtones_offset.b} 0}\n  highlights.saturation {{parent.highlights_saturation.r} {parent.highlights_saturation.g} {parent.highlights_saturation.b} 0}\n  highlights.contrast {{parent.highlights_contrast.r} {parent.highlights_contrast.g} {parent.highlights_contrast.b} 0}\n  highlights.gamma {{parent.highlights_gamma.r} {parent.highlights_gamma.g} {parent.highlights_gamma.b} 0}\n  highlights.gain {{parent.highlights_gain.r} {parent.highlights_gain.g} {parent.highlights_gain.b} 0}\n  highlights.offset {{parent.highlights_offset.r} {parent.highlights_offset.g} {parent.highlights_offset.b} 0}\n  mix {1}\n  zmap {0 1 1 1}\n  test {{parent.test}}\n  name DeepCC\n  xpos -40\n  ypos 637\n }\n Dot {\n  name Dot1\n  xpos -6\n  ypos 693\n }\nset N4c8e6800 [stack 0]\n Dot {\n  name Dot4\n  xpos 291\n  ypos 693\n }\n Dot {\n  name Dot5\n  xpos 291\n  ypos 1013\n }\npush $N4c8e6800\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n DeepExpression {\n  chans0 rgb\n  chans1 {deepNormal.red deepNormal.green deepNormal.blue none}\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  deepNormal.red \"\\[value cr] ? deepNormal.red * (1-deepRawColor.alpha) + red * deepRawColor.alpha : deepNormal.red\"\n  deepNormal.green \"\\[value cg] ? deepNormal.green * (1-deepRawColor.alpha) + green * deepRawColor.alpha : deepNormal.green\"\n  deepNormal.blue \"\\[value cb] ? deepNormal.blue * (1-deepRawColor.alpha) + blue * deepRawColor.alpha : deepNormal.blue\"\n  name DeepExpression2\n  label \"apply matte\\ndeepNormal\"\n  xpos 81\n  ypos 790\n  addUserKnob {20 User}\n  addUserKnob {3 cr}\n  cr {{parent.red}}\n  addUserKnob {3 cg}\n  cg {{parent.green}}\n  addUserKnob {3 cb}\n  cb {{parent.blue}}\n }\npush $N4c8e6800\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\n DeepExpression {\n  chans0 rgb\n  chans1 {deepPosition.red deepPosition.green deepPosition.blue none}\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  deepPosition.red \"\\[value cr] ? deepPosition.red * (1-deepRawColor.alpha) + red * deepRawColor.alpha : deepPosition.red\"\n  deepPosition.green \"\\[value cg] ? deepPosition.green * (1-deepRawColor.alpha) + green * deepRawColor.alpha : deepPosition.green\"\n  deepPosition.blue \"\\[value cb] ? deepPosition.blue * (1-deepRawColor.alpha) + blue * deepRawColor.alpha : deepPosition.blue\"\n  name DeepExpression4\n  label \"apply matte\\ndeepPosition\"\n  xpos -40\n  ypos 788\n  addUserKnob {20 User}\n  addUserKnob {3 cr}\n  cr {{parent.red}}\n  addUserKnob {3 cg}\n  cg {{parent.green}}\n  addUserKnob {3 cb}\n  cb {{parent.blue}}\n }\npush $N4c8e6800\n DeepExpression {\n  chans0 rgb\n  chans1 none\n  rgba.red \"\\[value cr] ? deepRawColor.red * (1-deepRawColor.alpha) + red * deepRawColor.alpha : deepRawColor.red\"\n  rgba.green \"\\[value cg] ? deepRawColor.green * (1-deepRawColor.alpha) + green * deepRawColor.alpha : deepRawColor.green\"\n  rgba.blue \"\\[value cb] ? deepRawColor.blue * (1-deepRawColor.alpha) + blue * deepRawColor.alpha : deepRawColor.blue\"\n  name DeepExpression3\n  label \"apply matte\\nRGB\"\n  xpos -168\n  ypos 789\n  addUserKnob {20 User}\n  addUserKnob {3 cr}\n  cr {{parent.red}}\n  addUserKnob {3 cg}\n  cg {{parent.green}}\n  addUserKnob {3 cb}\n  cb {{parent.blue}}\n }\n Switch {\n  inputs 3\n  which {{parent.channels}}\n  name Switch1\n  xpos -40\n  ypos 924\n }\n Switch {\n  inputs 2\n  which {{\"parent.test == 1 ? 1 : 0\"}}\n  name Switch3\n  label \"test selection\"\n  xpos -40\n  ypos 1004\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 2}\n  }\n  name DVPmd\n  xpos -40\n  ypos 1090\n }\n Output {\n  name Output1\n  xpos -40\n  ypos 1170\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPToImage.gizmo",
    "content": "Group {\n name DVPToImage\n onCreate \"\\nnver = nuke.NUKE_VERSION_MAJOR\\nthisGRP = nuke.thisGroup()\\nif nver >= 11 :\\n    thisGRP\\['nuke_version'].setValue(1)\\nelse :\\n    thisGRP\\['nuke_version'].setValue(0)\\n\"\n tile_color 0x2866ff\n label \"<font color=cyan>2D image Output</font>\"\n addUserKnob {20 t_general l General}\n addUserKnob {4 nuke_version l \"\" +STARTLINE +INVISIBLE M {10 11 \"\" \"\"}}\n nuke_version 11\n addUserKnob {6 keep_deepPosition l \"keep deepPosition\" t \"keep 'deepPosition' channel to downstream.\" +STARTLINE}\n keep_deepPosition true\n addUserKnob {6 keep_deepNormal l \"keep deepNormal\" t \"keep 'deepNormal' channel to downstream.\" +STARTLINE}\n keep_deepNormal true\n addUserKnob {26 spacer l \"\" +STARTLINE}\n addUserKnob {26 description l \"description :\" T \"This node converts <b>'deepPosition'</b> & <b>'deepNormal'</b> data<br>generated by <b>Deep2VP</b> to 2D image in downstream.\"}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Input {\n  inputs 0\n  name deep\n  xpos 508\n  ypos -123\n }\n DeepExpression {\n  chans1 deep\n  name spacer\n  xpos 508\n  ypos -43\n }\n ModifyMetaData {\n  metadata {\n   {remove DVPmatte \"\"}\n   {remove DVPcamMTX \"\"}\n   {remove DVPcamAspect \"\"}\n   {remove DVPcamWin \"\"}\n  }\n  name DVPmd\n  label \"kill metadata\"\n  xpos 508\n  ypos 37\n }\n Dot {\n  name Dot5\n  xpos 542\n  ypos 117\n }\nset Nff515c00 [stack 0]\n Dot {\n  name Dot2\n  xpos 704\n  ypos 117\n }\nset Nff515800 [stack 0]\n Dot {\n  name Dot1\n  xpos 973\n  ypos 117\n }\nset Nff515400 [stack 0]\n DeepExpression {\n  chans1 none\n  rgba.red deepNormal.red\n  rgba.green deepNormal.green\n  rgba.blue deepNormal.blue\n  rgba.alpha \"alpha <= 0 ? 0 : 1\"\n  name DeepExpression2\n  xpos 1051\n  ypos 189\n }\npush $Nff515400\n DeepExpression {\n  chans1 none\n  rgba.red deepNormal.red\n  rgba.green deepNormal.green\n  rgba.blue deepNormal.blue\n  rgba.alpha \"alpha <= 0 ? 1 : 0\"\n  name DeepExpression3\n  xpos 939\n  ypos 191\n }\n Switch {\n  inputs 2\n  which {{parent.nuke_version}}\n  name Switch2\n  label nuke_ver_switch\n  xpos 939\n  ypos 273\n }\n DeepToImage {\n  name DeepToImage3\n  xpos 939\n  ypos 367\n }\n Dot {\n  name Dot3\n  xpos 973\n  ypos 531\n }\npush $Nff515800\n DeepExpression {\n  chans1 none\n  rgba.red deepPosition.red\n  rgba.green deepPosition.green\n  rgba.blue deepPosition.blue\n  rgba.alpha \"alpha <= 0 ? 0 : 1\"\n  name DeepExpression1\n  xpos 774\n  ypos 190\n }\npush $Nff515800\n DeepExpression {\n  chans1 none\n  rgba.red deepPosition.red\n  rgba.green deepPosition.green\n  rgba.blue deepPosition.blue\n  rgba.alpha \"alpha <= 0 ? 1 : 0\"\n  name DeepExpression15\n  xpos 670\n  ypos 191\n }\n Switch {\n  inputs 2\n  which {{parent.nuke_version}}\n  name Switch1\n  label nuke_ver_switch\n  xpos 670\n  ypos 273\n }\n DeepToImage {\n  name DeepToImage2\n  xpos 670\n  ypos 367\n }\n Dot {\n  name Dot6\n  xpos 704\n  ypos 449\n }\npush $Nff515c00\n DeepToImage {\n  name DeepToImage1\n  xpos 508\n  ypos 191\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n Remove {\n  channels deepPosition\n  channels2 deepNormal\n  channels3 deepRawColor\n  name Remove1\n  xpos 508\n  ypos 351\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha black\n  out deepPosition\n  name ShuffleCopy1\n  xpos 508\n  ypos 445\n  disable {{!parent.keep_deepPosition}}\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha black\n  out deepNormal\n  name ShuffleCopy2\n  xpos 508\n  ypos 527\n  disable {{!parent.keep_deepNormal}}\n }\n Output {\n  name Output1\n  xpos 508\n  ypos 607\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVP_Shader.gizmo",
    "content": "Group {\n inputs 0\n name DVP_Shader\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x2333ff\n addUserKnob {20 tab_general l General}\n addUserKnob {18 diffuse}\n diffuse 0.18\n addUserKnob {7 specular t \"Define the intensity of specular.\"}\n specular 0.5\n addUserKnob {7 glossiness t \"Define the area of glossiness.\"}\n glossiness 0.1\n addUserKnob {26 \"\"}\n addUserKnob {26 title_preview l \"\" +STARTLINE T <b>Preview</b>}\n addUserKnob {12 posXY l \"light position\"}\n posXY {360 360}\n addUserKnob {18 bgcolor l \"bg color\"}\n bgcolor {0.05 0.1 0.2}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n CheckerBoard2 {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name CheckerBoard2\n  xpos 202\n  ypos 687\n }\n Grade {\n  white {{parent.bgcolor} {parent.bgcolor} {parent.bgcolor} {curve}}\n  add 0.001\n  white_clamp true\n  name bgcolor\n  xpos 202\n  ypos 815\n }\n Camera2 {\n  inputs 0\n  display off\n  selectable false\n  translate {0 0 6}\n  haperture 22\n  vaperture 22\n  name cam\n  xpos -147\n  ypos -132\n }\n Constant {\n  inputs 0\n  color {0.18 0.18 0.18 1}\n  name Constant1\n  xpos -25\n  ypos -354\n }\n Sphere {\n  display off\n  selectable false\n  name Sphere1\n  xpos -25\n  ypos -226\n }\n Reformat {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name res\n  xpos 133\n  ypos -117\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing low\n  stochastic_samples 3\n  motion_vectors_type distance\n  MB_channel none\n  output_shader_vectors true\n  P_channel deepPosition\n  N_channel deepNormal\n  name ScanlineRender1\n  xpos -25\n  ypos -111\n }\n ModifyMetaData {\n  metadata {\n   {set DVPshader 1}\n   {set sDiffuse \"\\[value diffuseRGB]\"}\n   {set sSpecular \"\\[value parent.specular]\"}\n   {set sGlossiness \"\\[value parent.glossiness]\"}\n  }\n  name stShaderData\n  xpos -25\n  ypos -11\n  addUserKnob {20 User}\n  addUserKnob {13 diffuseRGB}\n  diffuseRGB {{parent.diffuse.r} {parent.diffuse.g} {parent.diffuse.b}}\n }\n Unpremult {\n  name Unpremult1\n  xpos -25\n  ypos 105\n }\nset N4e993000 [stack 0]\n Dot {\n  name Dot2\n  xpos 138\n  ypos 108\n }\n Dot {\n  name Dot1\n  xpos 138\n  ypos 656\n }\npush $N4e993000\n Dot {\n  name Dot5\n  xpos -230\n  ypos 108\n }\n Shuffle {\n  in deepNormal\n  in2 alpha\n  alpha red2\n  name Shuffle1\n  xpos -264\n  ypos 182\n }\n Dot {\n  name Dot4\n  xpos -230\n  ypos 253\n }\nset N4e991c00 [stack 0]\n Dot {\n  name Dot3\n  xpos -394\n  ypos 253\n }\n Expression {\n  temp_name0 u\n  temp_expr0 \"r*invMTXSpec.invMatrix.0 + g*invMTXSpec.invMatrix.1 + b*invMTXSpec.invMatrix.2\"\n  temp_name1 v\n  temp_expr1 \"r*invMTXSpec.invMatrix.3 + g*invMTXSpec.invMatrix.4 + b*invMTXSpec.invMatrix.5\"\n  expr0 0\n  expr1 0\n  expr2 \"clamp( 1-sqrt( pow2(u*1/blend.x) + pow2(v*1/blend.y) ) )\"\n  name Expression2\n  xpos -428\n  ypos 327\n  addUserKnob {20 User}\n  addUserKnob {12 blend}\n  blend {{\"invMTXSpec.invMatrix.1<1 && invMTXSpec.invMatrix.1>-1 ? 1 : abs( invMTXSpec.invMatrix.1 )\"} {\"invMTXSpec.invMatrix.3<1 && invMTXSpec.invMatrix.3>-1 ? 1 : abs( invMTXSpec.invMatrix.3 )\"}}\n }\n Expression {\n  expr2 \"( ( cos( (1-b) * (pi/2) ) ** (1/\\[value gloss]) * 2 ) ** (1/(1-\\[value spec])) ) * (1/2) * spec\"\n  name Expression14\n  xpos -428\n  ypos 407\n  addUserKnob {20 User}\n  addUserKnob {7 spec}\n  spec {{\"clamp(\\[metadata sSpecular]) * 0.99\"}}\n  addUserKnob {7 gloss}\n  gloss {{\"clamp(\\[metadata sGlossiness])\"}}\n }\n Shuffle {\n  in2 alpha\n  red blue\n  green blue\n  alpha red2\n  name Shuffle4\n  xpos -428\n  ypos 487\n }\n Premult {\n  name Premult4\n  xpos -428\n  ypos 567\n }\npush $N4e991c00\n ColorMatrix {\n  matrix {\n      {{ax.world_matrix.0} {ax.world_matrix.1} {ax.world_matrix.2}}\n      {{ax.world_matrix.4} {ax.world_matrix.5} {ax.world_matrix.6}}\n      {{ax.world_matrix.8} {ax.world_matrix.9} {ax.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos -264\n  ypos 327\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle2\n  xpos -264\n  ypos 407\n }\n Expression {\n  expr0 \"r * \\[value parent.diffuse.r]\"\n  expr1 \"g * \\[value parent.diffuse.g]\"\n  expr2 \"b * \\[value parent.diffuse.b]\"\n  expr3 1\n  name Expression1\n  xpos -264\n  ypos 487\n }\npush $N4e993000\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge1\n  xpos -25\n  ypos 487\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge5\n  xpos -25\n  ypos 567\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -25\n  ypos 647\n }\n Premult {\n  name Premult1\n  xpos -25\n  ypos 739\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge2\n  xpos -25\n  ypos 815\n }\n Crop {\n  box {0 0 {res.width} {res.height}}\n  name Crop1\n  xpos -25\n  ypos 895\n }\n Output {\n  name Output1\n  xpos -25\n  ypos 975\n }\n ColorMatrix {\n  inputs 0\n  matrix {\n      {{(1+ax.world_matrix.0)/2} {ax.world_matrix.1/2} {ax.world_matrix.2/2}}\n      {{ax.world_matrix.4/2} {(1+ax.world_matrix.5)/2} {ax.world_matrix.6/2}}\n      {{ax.world_matrix.8/2} {ax.world_matrix.9/2} {(1+ax.world_matrix.10)/2}}\n    }\n  name vecA\n  xpos -426\n  ypos -188\n }\n ColorMatrix {\n  inputs 0\n  matrix {\n      {{vecA.matrix.0/vecS.x} {vecA.matrix.1/vecS.y} {vecA.matrix.2/vecS.z}}\n      {{vecA.matrix.3/vecS.x} {vecA.matrix.4/vecS.y} {vecA.matrix.5/vecS.z}}\n      {{vecA.matrix.6/vecS.x} {vecA.matrix.7/vecS.y} {vecA.matrix.8/vecS.z}}\n    }\n  name vecR\n  xpos -428\n  ypos -136\n  addUserKnob {20 User}\n  addUserKnob {13 vecS}\n  vecS {{\"sqrt( pow2(vecA.matrix.0) + pow2(vecA.matrix.3) + pow2(vecA.matrix.6) )\"} {\"sqrt( pow2(vecA.matrix.1) + pow2(vecA.matrix.4) + pow2(vecA.matrix.7) )\"} {\"sqrt( pow2(vecA.matrix.2) + pow2(vecA.matrix.5) + pow2(vecA.matrix.8) )\"}}\n }\n Group {\n  inputs 0\n  name invMTXSpec\n  tile_color 0x337f4cff\n  xpos -427\n  ypos -83\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path vecR.matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {3 4 5}\n       {6 7 8}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {{\"clamp(parent.posXY.y/res.height) * -180 + 90\"} {\"clamp(parent.posXY.x/res.width) * 180 - 90\"} 0}\n  name ax\n  xpos -419\n  ypos -304\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVP_ToonShader.gizmo",
    "content": "Group {\n inputs 0\n name DVP_ToonShader\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x2333ff\n addUserKnob {20 tab_general l General}\n addUserKnob {20 title_global l Global n 1}\n addUserKnob {7 tone_sharpness l \"tone sharpness\" t \"This control the sharpness of the tone shading and specular defination.\"}\n tone_sharpness 0.99\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 grp_diffuse l Diffuse n 1}\n addUserKnob {18 diffuse}\n diffuse 1\n addUserKnob {4 toon_style l style t \"The style setting will only apply on the interaction of 2 or more lights.\" M {average \"color burn\" \"linear burn\" difference exclusion geometric \"soft light\" \"hard light\" \"vivid light\" \"pin light\" max min multiply overlay plus screen color}}\n toon_style max\n addUserKnob {3 tone_shading l \"tone shading\" t \"Tone shading numbers, which is how many shading layers project from the light.\"}\n tone_shading 2\n addUserKnob {7 tone_ratio l \"tone ratio\" t \"Adjust the ratio of the illuminate area and shading.\" R 0.1 10}\n tone_ratio 1\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 title_spec l Specular n 1}\n addUserKnob {7 specular t \"The opacity of the specular projected on the surface.\"}\n addUserKnob {7 glossiness t \"The size of specular area.\"}\n addUserKnob {41 replace_specColor l \"replace specular color\" t \"Specular color is from the light by default. This checkbox provide user to define the custom specular color.\" T menu01.replace_specColor}\n addUserKnob {18 specular_color l \"specular color\" +DISABLED}\n specular_color 1\n addUserKnob {20 grp_contour l Contour n 1}\n addUserKnob {7 contour_size l size t \"Contour size. 0 is none, 1 is the max (fully cover the object).\"}\n contour_size 0.2\n addUserKnob {18 contour_color l color}\n contour_color {0 0 0}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 title_preview l \"\" +STARTLINE T <b>Preview</b>}\n addUserKnob {12 posXY l \"light position\"}\n posXY {360 360}\n addUserKnob {18 bgcolor l \"bg color\"}\n bgcolor {0.05 0.1 0.2}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -845\n  ypos 13\n  bdwidth 244\n  bdheight 123\n }\n CheckerBoard2 {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name CheckerBoard2\n  xpos 202\n  ypos 983\n }\n Grade {\n  white {{parent.bgcolor} {parent.bgcolor} {parent.bgcolor} {curve}}\n  add 0.001\n  white_clamp true\n  name bgcolor\n  xpos 202\n  ypos 1111\n }\n Camera2 {\n  inputs 0\n  display off\n  selectable false\n  translate {0 0 6}\n  haperture 22\n  vaperture 22\n  name cam\n  xpos -147\n  ypos 49\n }\n Constant {\n  inputs 0\n  color {0.18 0.18 0.18 1}\n  name Constant1\n  xpos -25\n  ypos -173\n }\n Sphere {\n  display off\n  selectable false\n  name Sphere1\n  xpos -25\n  ypos -45\n }\n Reformat {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name res\n  xpos 185\n  ypos 64\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing low\n  motion_vectors_type distance\n  MB_channel none\n  output_shader_vectors true\n  P_channel deepPosition\n  N_channel deepNormal\n  name ScanlineRender1\n  xpos -25\n  ypos 70\n }\n ModifyMetaData {\n  metadata {\n   {set DVPshader 2}\n   {set sLayers \"\\[value parent.tone_shading]\"}\n   {set sSharpness \"\\[value parent.tone_sharpness]\"}\n   {set sRatio \"\\[value parent.tone_ratio]\"}\n   {set sStyle \"\\[value style]\"}\n   {set sStatus 0}\n   {set sDiffuse \"\\[value diffuseRGB]\"}\n   {set sGlossiness \"\\[value parent.glossiness]\"}\n   {set sSpecular \"\\[value parent.specular]\"}\n   {set sSpecReplace \"\\[value reSColor]\"}\n   {set sSpecColor \"\\[value specRGB]\"}\n   {set sContourSize \"\\[value parent.contour_size]\"}\n   {set sContourColor \"\\[value contourRGB]\"}\n  }\n  name stShaderData\n  xpos -25\n  ypos 170\n  addUserKnob {20 User}\n  addUserKnob {3 style}\n  style {{parent.toon_style}}\n  addUserKnob {13 diffuseRGB}\n  diffuseRGB {{parent.diffuse.r} {parent.diffuse.g} {parent.diffuse.b}}\n  addUserKnob {3 reSColor}\n  reSColor {{parent.replace_specColor}}\n  addUserKnob {13 specRGB}\n  specRGB {{parent.specular_color.r} {parent.specular_color.g} {parent.specular_color.b}}\n  addUserKnob {13 contourRGB}\n  contourRGB {{parent.contour_color.r} {parent.contour_color.g} {parent.contour_color.b}}\n }\n Unpremult {\n  name Unpremult1\n  xpos -25\n  ypos 250\n }\nset N4ead8800 [stack 0]\n Dot {\n  name Dot2\n  xpos 138\n  ypos 253\n }\n Dot {\n  name Dot1\n  xpos 138\n  ypos 952\n }\npush $N4ead8800\n Shuffle {\n  in deepNormal\n  in2 alpha\n  alpha red2\n  name Shuffle1\n  xpos -135\n  ypos 250\n }\n Dot {\n  name Dot6\n  xpos -230\n  ypos 253\n }\nset N4ea63400 [stack 0]\n Dot {\n  name Dot5\n  xpos -619\n  ypos 253\n }\n Expression {\n  temp_name0 contourSize\n  temp_expr0 \"b < clamp(\\[metadata sContourSize]+0) ? 1 : 1-clamp( (b-clamp(\\[metadata sContourSize]+0)) * (1/0.01) )\"\n  expr0 \"contourColor.x*contourSize * alpha\"\n  expr1 \"contourColor.y*contourSize * alpha\"\n  expr2 \"contourColor.z*contourSize * alpha\"\n  expr3 contourSize\n  name Expression5\n  xpos -653\n  ypos 511\n  addUserKnob {20 User}\n  addUserKnob {13 contourColor}\n  contourColor {{\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 2 2]+0\"}}\n }\n Dot {\n  name Dot7\n  xpos -619\n  ypos 831\n }\npush $N4ea63400\n ColorMatrix {\n  matrix {\n      {{ax.world_matrix.0} {ax.world_matrix.1} {ax.world_matrix.2}}\n      {{ax.world_matrix.4} {ax.world_matrix.5} {ax.world_matrix.6}}\n      {{ax.world_matrix.8} {ax.world_matrix.9} {ax.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos -264\n  ypos 330\n }\n Dot {\n  name Dot3\n  xpos -230\n  ypos 433\n }\nset N4ea62000 [stack 0]\n Dot {\n  name Dot4\n  xpos -423\n  ypos 433\n }\n Expression {\n  temp_name0 u\n  temp_expr0 \"r * blend.x\"\n  temp_name1 v\n  temp_expr1 \"g * blend.y\"\n  expr0 0\n  expr1 0\n  expr2 \"clamp( ( 1 - sqrt( pow2(u) + pow2(v) ) ) * b )\"\n  name Expression3\n  xpos -457\n  ypos 507\n  addUserKnob {20 User}\n  addUserKnob {12 blend}\n  blend {{\"( (90-abs( ax.rotate.x ) ) / 90 )\"} {\"( (90-abs( ax.rotate.y ) ) / 90)\"}}\n }\n Expression {\n  temp_name0 s01\n  temp_expr0 \"( cos((1-b)*(pi/2)) ** (1/\\[value gloss]) ) * 2\"\n  temp_name1 lgt\n  temp_expr1 \"int(s01) * clamp( (s01%1) * (1/(1-clamp(\\[metadata sSharpness]))) ) * \\[value spec]\"\n  expr0 \"\\[metadata sSpecReplace] ? lgt * \\[value specColor.x] : lgt\"\n  expr1 \"\\[metadata sSpecReplace] ? lgt * \\[value specColor.y] : lgt\"\n  expr2 \"\\[metadata sSpecReplace] ? lgt * \\[value specColor.z] : lgt\"\n  name Expression2\n  xpos -457\n  ypos 587\n  addUserKnob {20 User}\n  addUserKnob {7 spec}\n  spec {{\"clamp(\\[metadata sSpecular])\"}}\n  addUserKnob {7 gloss}\n  gloss {{\"clamp(\\[metadata sGlossiness])\"}}\n  addUserKnob {13 specColor}\n  specColor {{\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor] \\\" \\\"] 0 0]+0 : 1\"} {\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor] \\\" \\\"] 1 1]+0 : 1\"} {\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor] \\\" \\\"] 2 2]+0 : 1\"}}\n }\n Premult {\n  name Premult4\n  xpos -457\n  ypos 714\n }\npush $N4ea62000\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle2\n  xpos -264\n  ypos 525\n }\n Expression {\n  temp_name0 celShade\n  temp_expr0 \"clamp(red) ** \\[metadata sRatio] * (\\[value toonLayers]+1)\"\n  temp_name1 lgt\n  temp_expr1 \"( (int(celShade)-1)/\\[value toonLayers]) + (clamp( (celShade%1) * (1/(1-clamp(\\[metadata sSharpness]))) ) * (1/\\[value toonLayers]) )\"\n  expr0 \"lgt * \\[value parent.diffuse.r]\"\n  expr1 \"lgt * \\[value parent.diffuse.g]\"\n  expr2 \"lgt * \\[value parent.diffuse.b]\"\n  name Expression1\n  xpos -264\n  ypos 605\n  addUserKnob {20 User}\n  addUserKnob {3 toonLayers}\n  toonLayers {{\"\\[metadata sLayers] <= 1 ? 1 : \\[metadata sLayers]\"}}\n }\npush $N4ead8800\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge1\n  xpos -25\n  ypos 605\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -25\n  ypos 714\n }\n Merge2 {\n  inputs 2\n  name Merge3\n  xpos -25\n  ypos 828\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -25\n  ypos 943\n }\n Premult {\n  name Premult1\n  xpos -25\n  ypos 1035\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge2\n  xpos -25\n  ypos 1111\n }\n Crop {\n  box {0 0 {res.width} {res.height}}\n  name Crop1\n  xpos -25\n  ypos 1191\n }\n Output {\n  name Output1\n  xpos -25\n  ypos 1331\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {{\"clamp(parent.posXY.y/res.height) * -180 + 90\"} {\"clamp(parent.posXY.x/res.width) * 180 - 90\"} 0}\n  name ax\n  xpos -452\n  ypos 52\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nnuke.thisGroup()\\['specular_color'].setEnabled(nuke.thisGroup()\\['replace_specColor'].value())\\n\"\n  xpos -762\n  ypos 95\n  addUserKnob {20 User}\n  addUserKnob {6 replace_specColor l \"replace specular color\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPattern.gizmo",
    "content": "Group {\n name DVPattern\n tile_color 0x597fff\n label \"node type : \\[value node_type]\\noperation : \\[value matte_op]\\n<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {26 title_matte l \"<b><font color=#5077FF>matte</font></b>\"}\n addUserKnob {41 pattern_type l \"pattern type\" t \"Select parttern type on world space position.\\n\\nfBm : octaves, lacunarity, gain, gamma setting available.\\nturbulence : octaves, lacunarity, gain, gamma setting available.\\nnoise : gain, gamma setting available.\\nrandom : gain, gamma setting available.\\nstripes : xyz can be enable separate. gain, gamma setting available.\\nripple : gain, gamma setting available.\\nrays : gain, gamma, number of rays setting available.\" T menu01.pattern_type}\n addUserKnob {6 invert_pattern l \"invert pattern\" t \"Invert the matte pattern.\" -STARTLINE}\n addUserKnob {41 node_type l \"node type\" t \"<b>final matte</b>\\nPremult all the mattes in the <b>DVPmatte</b> and <b>DVPattern</b> stack to get the final matte.\\n\\n<b>open matte</b>\\nKeep the matte and pass along to downstream for multi mattes and <b>DVPColorCorrect</b> purpose. It will only premult RGB for 2D preview.\" T menu02.node_type}\n addUserKnob {6 show_color l \"show color\" -STARTLINE +HIDDEN}\n show_color true\n addUserKnob {26 remarks l * T \"first matte node should use 'union' operation.\"}\n addUserKnob {4 matte_op l operation t \"a : this matte\\nb : input matte\\n\\ndivide\\ta/b\\nfrom\\tb-a\\nin\\tab\\nmax\\tmax(a,b)\\nmin\\tmin(a,b)\\nminus\\ta-b\\nmultiply\\ta*b\\nout\\ta(1-b)\\nplus\\ta+b\\nstencil\\tb(1-a)\\nunion\\ta+b-ab\\nxor\\ta+b-2ab\" M {divide from in max min minus multiply out plus stencil union xor \"\" \"\" \"\" \"\" \"\" \"\"}}\n matte_op union\n addUserKnob {26 title_transform l \"<b><font color=#5077FF>transform</font></b>\"}\n addUserKnob {41 pat_translate l translate T ax.translate}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T ax.snap_menu}\n addUserKnob {41 pat_rotate l rotate T ax.rotate}\n addUserKnob {41 pat_scaling l scale T ax.scaling}\n addUserKnob {41 pat_uniform_scale l \"uniform scale\" T ax.uniform_scale}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {6 stripes_x l x +HIDDEN +STARTLINE}\n stripes_x true\n addUserKnob {6 stripes_y l y -STARTLINE +HIDDEN}\n stripes_y true\n addUserKnob {6 stripes_z l z -STARTLINE +HIDDEN}\n stripes_z true\n addUserKnob {3 octaves}\n octaves 4\n addUserKnob {7 lacunarity R 1 10}\n lacunarity 2\n addUserKnob {7 gain R 0.1 2}\n gain 1\n addUserKnob {7 gamma R 0 2}\n gamma 1\n addUserKnob {3 rays l \"numbers of rays\" +HIDDEN}\n rays 10\n addUserKnob {26 \"\"}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with pattern applied</b>\\nThis can show the instant result of the pattern. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with pattern applied\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" T deepPositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" T deepPositionToPoints.pointSize}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"Dont touch\"\n  note_font_size 42\n  xpos -1637\n  ypos -208\n  bdwidth 368\n  bdheight 186\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  xpos -1636\n  ypos 2\n  bdwidth 368\n  bdheight 248\n }\n Input {\n  inputs 0\n  name deep\n  xpos -784\n  ypos -189\n }\n Dot {\n  name Dot4\n  xpos -750\n  ypos -109\n }\nset N5d268c00 [stack 0]\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  chans1 none\n  deepRawColor.red \"deepRawColor.red * (1/alpha)\"\n  deepRawColor.green \"deepRawColor.green * (1/alpha)\"\n  deepRawColor.blue \"deepRawColor.blue * (1/alpha)\"\n  name DeepExpression27\n  label \"unpremult exisiting deepRawColor\"\n  xpos -590\n  ypos -35\n }\npush $N5d268c00\n DeepExpression {\n  chans0 deepRawColor\n  chans1 none\n  deepRawColor.red \"red * (1/alpha)\"\n  deepRawColor.green \"green * (1/alpha)\"\n  deepRawColor.blue \"blue * (1/alpha)\"\n  deepRawColor.alpha 0\n  name DeepExpression21\n  label \"shuffle unpremult RGB to deepRawColor\"\n  xpos -784\n  ypos -35\n }\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPmatte]+0==0 || \\[metadata DVPmatte]+0==2 ? 0 : 1\"}}\n  name Switch5\n  label \"if upstream cc or open matte\"\n  xpos -784\n  ypos 44\n }\n Dot {\n  name Dot5\n  xpos -750\n  ypos 226\n }\nset N5d17f800 [stack 0]\n DeepExpression {\n  chans1 none\n  rgba.red alpha\n  rgba.green 0\n  rgba.blue 0\n  rgba.alpha 1\n  name DeepExpression29\n  label \"shuffle alpha to red channel\\nand unpremult the data with alpha 1\"\n  xpos -784\n  ypos 310\n }\n Dot {\n  name Dot2\n  xpos -750\n  ypos 435\n }\nset N5d17f000 [stack 0]\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( ( ( sin( atan(\\[value globalTCL.px], \\[value globalTCL.pz]) * \\[value parent.rays] + atan(\\[value globalTCL.px], \\[value globalTCL.py]) * \\[value parent.rays] + atan(\\[value globalTCL.py], \\[value globalTCL.pz]) * \\[value parent.rays] ) +1) /2 ) * \\[value gain])\"\n  name DeepExpression12\n  label rays\n  xpos -417\n  ypos 514\n }\npush $N5d17f000\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp ( ( ( sin( sqrt( pow2(\\[value globalTCL.px]) + pow2(\\[value globalTCL.py]) + pow2(\\[value globalTCL.pz]) ) ) +1) /2 ) * \\[value gain] )\"\n  name DeepExpression11\n  label ripple\n  xpos -540\n  ypos 520\n }\npush $N5d17f000\n DeepExpression {\n  temp_name0 pnx\n  temp_expr0 \"\\[value status_x] == 0 ? 0 : ( sin( \\[value globalTCL.px] ) + 1 ) / 2\"\n  temp_name1 pny\n  temp_expr1 \"\\[value status_y] == 0 ? 0 : ( sin( \\[value globalTCL.py] ) + 1 ) / 2\"\n  temp_name2 pnz\n  temp_expr2 \"\\[value status_z] == 0 ? 0 : ( sin( \\[value globalTCL.pz] ) + 1 ) / 2\"\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"max( clamp( pnx * \\[value gain] ), clamp( pny * \\[value gain] ), clamp( pnz * \\[value gain] ) )\"\n  name DeepExpression9\n  label strip\n  xpos -662\n  ypos 517\n  addUserKnob {20 User}\n  addUserKnob {7 status_x}\n  status_x {{parent.stripes_x}}\n  addUserKnob {7 status_y}\n  status_y {{parent.stripes_y}}\n  addUserKnob {7 status_z}\n  status_z {{parent.stripes_z}}\n }\npush $N5d17f000\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( random(\\[value globalTCL.px], \\[value globalTCL.py], \\[value globalTCL.pz]) * \\[value gain] )\"\n  name DeepExpression1\n  label random\n  xpos -784\n  ypos 521\n }\npush $N5d17f000\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( (noise(\\[value globalTCL.px], \\[value globalTCL.py], \\[value globalTCL.pz])+0.5) * \\[value gain] )\"\n  name DeepExpression2\n  label noise\n  xpos -902\n  ypos 524\n }\npush $N5d17f000\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( turbulence(\\[value globalTCL.px], \\[value globalTCL.py], \\[value globalTCL.pz], \\[value octaves], \\[value lacunarity], \\[value gain]/2) )\"\n  name DeepExpression6\n  label turbulence\n  xpos -1026\n  ypos 522\n }\npush $N5d17f000\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( fBm(\\[value globalTCL.px], \\[value globalTCL.py], \\[value globalTCL.pz], \\[value octaves], \\[value lacunarity], \\[value gain]/2) )\"\n  name DeepExpression8\n  label fBm\n  xpos -1176\n  ypos 523\n }\n Switch {\n  inputs 7\n  which {{pattern_type}}\n  name Switch1\n  xpos -784\n  ypos 636\n }\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"1 - deepPosition.alpha\"\n  name DeepExpression5\n  label invert\n  xpos -784\n  ypos 716\n  disable {{!parent.invert_pattern}}\n }\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"pow( deepPosition.alpha , 1 / \\[value parent.gamma] )\"\n  name DeepExpression13\n  label gamma\n  xpos -784\n  ypos 808\n }\n Dot {\n  name Dot7\n  xpos -750\n  ypos 976\n }\nset N5d17c400 [stack 0]\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a + b - 2 * a * b\"\n  name DeepExpression16\n  label xor\n  xpos -179\n  ypos 1111\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"\\[value mdChk] ? a + b - a * b : a\"\n  name DeepExpression15\n  label union\n  xpos -309\n  ypos 1115\n  addUserKnob {20 User}\n  addUserKnob {3 mdChk}\n  mdChk {{\"\\[metadata DVPmatte]+0\"}}\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"b * ( 1 - a )\"\n  name DeepExpression4\n  label stencil\n  xpos -438\n  ypos 1115\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a + b\"\n  name DeepExpression7\n  label plus\n  xpos -551\n  ypos 1113\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * ( 1 - b )\"\n  name DeepExpression17\n  label out\n  xpos -668\n  ypos 1118\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * b\"\n  name DeepExpression18\n  label multiply\n  xpos -784\n  ypos 1120\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a - b\"\n  name DeepExpression19\n  label minus\n  xpos -895\n  ypos 1121\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"min( a , b )\"\n  name DeepExpression20\n  label min\n  xpos -1010\n  ypos 1124\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"max( a , b )\"\n  name DeepExpression22\n  label max\n  xpos -1107\n  ypos 1127\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * b\"\n  name DeepExpression23\n  label in\n  xpos -1202\n  ypos 1124\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"b - a\"\n  name DeepExpression24\n  label from\n  xpos -1298\n  ypos 1126\n }\npush $N5d17c400\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a / b\"\n  name DeepExpression25\n  label divide\n  xpos -1399\n  ypos 1125\n }\n Switch {\n  inputs 12\n  which {{parent.matte_op}}\n  name Switch2\n  label \"select operations\"\n  xpos -784\n  ypos 1331\n }\n DeepExpression {\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"clamp( deepRawColor.alpha)\"\n  name DeepExpression30\n  label \"clamp the final matte\"\n  xpos -784\n  ypos 1423\n }\n Dot {\n  name Dot35\n  xpos -750\n  ypos 1565\n }\nset N59544400 [stack 0]\n Dot {\n  name Dot37\n  xpos -587\n  ypos 1565\n }\n DeepExpression {\n  chans1 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  rgba.red \"\\[value show_color] ? deepRawColor.red * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.green \"\\[value show_color] ? deepRawColor.green * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.blue \"\\[value show_color] ? deepRawColor.blue * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.alpha red\n  deepRawColor.red \"deepRawColor.red * red\"\n  deepRawColor.green \"deepRawColor.green * red\"\n  deepRawColor.blue \"deepRawColor.blue * red\"\n  name DeepExpression26\n  label \"show matte or color\\nnot alpha\"\n  xpos -621\n  ypos 1726\n  addUserKnob {20 User}\n  addUserKnob {3 show_color}\n  show_color {{parent.show_color}}\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 1}\n  }\n  name DVPmatteMD02\n  label open\n  xpos -621\n  ypos 2013\n }\n Dot {\n  name Dot36\n  xpos -587\n  ypos 2142\n }\npush $N59544400\n DeepExpression {\n  chans1 deepRawColor\n  rgba.red \"deepRawColor.red * deepRawColor.alpha * red\"\n  rgba.green \"deepRawColor.green * deepRawColor.alpha * red\"\n  rgba.blue \"deepRawColor.blue * deepRawColor.alpha * red\"\n  rgba.alpha \"deepRawColor.alpha * red\"\n  deepRawColor.red \"deepRawColor.red * deepRawColor.alpha * red\"\n  deepRawColor.green \"deepRawColor.green * deepRawColor.alpha * red\"\n  deepRawColor.blue \"deepRawColor.blue * deepRawColor.alpha * red\"\n  deepRawColor.alpha \"deepRawColor.alpha * red\"\n  name DeepExpression28\n  label \"premult color\\nand alpha\"\n  xpos -784\n  ypos 1733\n }\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front \"deepRawColor.alpha <= 0 ? -1 : deep.front\"\n  deep.back \"deepRawColor.alpha <= 0 ? -1 : deep.back\"\n  name DeepExpression41\n  label \"alpha check\"\n  xpos -784\n  ypos 1831\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {0 0 1 1}\n  use_bbox false\n  name DeepCrop3\n  label \"sample cleanup\"\n  xpos -784\n  ypos 1923\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 0}\n  }\n  name DVPmatteMD01\n  label close\n  xpos -784\n  ypos 2015\n }\n Switch {\n  inputs 2\n  which {{parent.node_type}}\n  name Switch14\n  label \"node type\"\n  xpos -784\n  ypos 2240\n }\n Dot {\n  name Dot1\n  xpos -750\n  ypos 2482\n }\nset N5f015800 [stack 0]\npush $N5d17f800\n Dot {\n  name Dot3\n  xpos 250\n  ypos 226\n }\n Switch {\n  inputs 2\n  which {{\"parent.display_ptc_type == 1 ? 0 : parent.display_ptc_type == 2 ? 1 : 0\"}}\n  name Switch8\n  xpos 216\n  ypos 2479\n }\n Group {\n  name DeepPositionToImage3\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 216\n  ypos 2561\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N5f014800 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N5f014800\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 265\n  }\n end_group\n PositionToPoints2 {\n  display textured\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  P_channel deepPosition\n  detail 0.1\n  name deepPositionToPoints\n  xpos 216\n  ypos 2657\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\npush $N5f015800\n Output {\n  name Output1\n  xpos -784\n  ypos 2733\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['pattern_type'].getValue() == 0 or thisGRP\\['pattern_type'].getValue() == 1  :\\n    thisGRP\\['octaves'].setVisible(True)\\n    thisGRP\\['lacunarity'].setVisible(True)\\nelse :\\n    thisGRP\\['octaves'].setVisible(False)\\n    thisGRP\\['lacunarity'].setVisible(False)\\n\\nif thisGRP\\['pattern_type'].getValue() == 4 :\\n    thisGRP\\['stripes_x'].setVisible(True)\\n    thisGRP\\['stripes_y'].setVisible(True)\\n    thisGRP\\['stripes_z'].setVisible(True)\\nelse :\\n    thisGRP\\['stripes_x'].setVisible(False)\\n    thisGRP\\['stripes_y'].setVisible(False)\\n    thisGRP\\['stripes_z'].setVisible(False)\\n\\nif thisGRP\\['pattern_type'].getValue() == 6 :\\n    thisGRP\\['rays'].setVisible(True)\\nelse :\\n    thisGRP\\['rays'].setVisible(False)\\n\"\n  xpos -1556\n  ypos -107\n  addUserKnob {20 User}\n  addUserKnob {4 pattern_type l \"pattern type\" M {fBm turbulence noise random stripes ripple rays \"\" \"\" \"\"}}\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"open matte\"\n  xpos -622\n  ypos 1662\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"final matte\"\n  xpos -787\n  ypos 1661\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['node_type'].getValue() :\\n    thisGRP\\['show_color'].setVisible( True )\\nelse :\\n    thisGRP\\['show_color'].setVisible( False )\\n\"\n  xpos -1439\n  ypos -108\n  addUserKnob {20 User}\n  addUserKnob {4 node_type l \"node type\" M {\"final matte\" \"open/cc matte\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -1438\n  ypos 98\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path ax.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n NoOp {\n  inputs 0\n  name globalTCL\n  xpos -1434\n  ypos 161\n  addUserKnob {20 User}\n  addUserKnob {1 px}\n  px \"( deepPosition.red-ax.world_matrix.3) * inverseMatrix.invMatrix.0 + (deepPosition.green-ax.world_matrix.7) * inverseMatrix.invMatrix.1 + (deepPosition.blue-ax.world_matrix.11) * inverseMatrix.invMatrix.2\"\n  addUserKnob {1 py}\n  py \"( deepPosition.red-ax.world_matrix.3) * inverseMatrix.invMatrix.3 + (deepPosition.green-ax.world_matrix.7) * inverseMatrix.invMatrix.4 + (deepPosition.blue-ax.world_matrix.11) *inverseMatrix.invMatrix.5\"\n  addUserKnob {1 pz}\n  pz \"( deepPosition.red-ax.world_matrix.3) * inverseMatrix.invMatrix.6 + (deepPosition.green-ax.world_matrix.7) * inverseMatrix.invMatrix.7 + (deepPosition.blue-ax.world_matrix.11) * inverseMatrix.invMatrix.8\"\n }\n Axis {\n  inputs 0\n  display off\n  name ax\n  xpos -1571\n  ypos 94\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPfresnel.gizmo",
    "content": "Group {\n name DVPfresnel\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x7f65ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {41 multiply T menu01.multiply}\n addUserKnob {7 exp_in l \"exponential in\" t \"Ease out falloff from the core by exponential math.\" R 0.1 10}\n exp_in 1\n addUserKnob {7 exp_out l out t \"Ease in falloff from the edge by exponential math.\" -STARTLINE R 0.1 10}\n exp_out 1\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -608\n  ypos -200\n  bdwidth 411\n  bdheight 282\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -611\n  ypos -435\n  bdwidth 416\n  bdheight 199\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisN = nuke.thisNode()\\nfor knob in thisN.knobs() :\\n    try :\\n        if knob.split('_')\\[1] == 'panelDropped' :\\n            thisN.removeKnob( thisN\\[knob] )\\n    except :\\n        pass\\n\"\n  xpos -524\n  ypos -342\n  addUserKnob {20 User}\n  addUserKnob {18 multiply t \"Constant to multiply result by\" R 0 4}\n  multiply 1\n  addUserKnob {6 multiply_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Group {\n  inputs 0\n  name inverseMatrix_cam\n  tile_color 0x337f4cff\n  xpos -540\n  ypos 9\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rot_order XYZ\n  useMatrix true\n  matrix {\n      {{getCam.cmr01.x} {getCam.cmr01.y} {getCam.cmr01.z} 0}\n      {{getCam.cmr02.x} {getCam.cmr02.y} {getCam.cmr02.z} 0}\n      {{getCam.cmr03.x} {getCam.cmr03.y} {getCam.cmr03.z} 0}\n      {0 0 0 1}\n    }\n  name cam_data\n  xpos -529\n  ypos -97\n }\n Input {\n  inputs 0\n  name deep\n  xpos -4\n  ypos -235\n }\n DeepExpression {\n  chans1 deep\n  name spacer\n  xpos -4\n  ypos -155\n }\n Dot {\n  name Dot2\n  xpos 30\n  ypos -75\n }\nset N4e88c00 [stack 0]\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n DeepExpression {\n  temp_name0 uMult\n  temp_expr0 \"abs( (x+0.5)/input.width-0.5 ) *2\"\n  temp_name1 vMult\n  temp_expr1 \"abs( (y+0.5)/input.height-0.5 ) *2\"\n  temp_name2 hHalfAOV\n  temp_expr2 \"degrees( atan( ( ( \\[value getCam.aspect] ) * abs( deep.front ) /2 ) / abs( deep.front ) ) )\"\n  temp_name3 vHalfAOV\n  temp_expr3 \"degrees( atan( ( ( \\[value getCam.aspect] ) * (input.height/input.width) * abs( deep.front ) /2 ) / abs( deep.front ) ) )\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"clamp( x<input.width/2 && y<input.height/2 ? \\[value cx]*-cos(radians(vHalfAOV*vMult))*sin(radians(-hHalfAOV*uMult)) + \\[value cy]*sin(radians(vHalfAOV*vMult)) + \\[value cz]*cos(radians(vHalfAOV*vMult))*cos(radians(-hHalfAOV*uMult)) : x>input.width/2 && y>input.height/2 ? \\[value cx]*-cos(radians(-vHalfAOV*vMult))*sin(radians(hHalfAOV*uMult)) + \\[value cy]*sin(radians(-vHalfAOV*vMult)) + \\[value cz]*cos(radians(-vHalfAOV*vMult))*cos(radians(hHalfAOV*uMult)) : x<input.width/2 && y>input.height/2 ? \\[value cx]*-cos(radians(-vHalfAOV*vMult))*sin(radians(-hHalfAOV*uMult)) + \\[value cy]*sin(radians(-vHalfAOV*vMult)) + \\[value cz]*cos(radians(-vHalfAOV*vMult))*cos(radians(-hHalfAOV*uMult)) : \\[value cx]*-cos(radians(vHalfAOV*vMult))*sin(radians(hHalfAOV*uMult)) + \\[value cy]*sin(radians(vHalfAOV*vMult)) + \\[value cz]*cos(radians(vHalfAOV*vMult))*cos(radians(hHalfAOV*uMult)) )\"\n  name DeepExpression3\n  label \"screen space\"\n  xpos -4\n  ypos -1\n  addUserKnob {20 User}\n  addUserKnob {1 cx}\n  cx \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.0] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.1] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.2])\"\n  addUserKnob {1 cy}\n  cy \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.3] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.4] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.5])\"\n  addUserKnob {1 cz}\n  cz \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.6] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.7] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.8])\"\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"1- deepNormal.alpha\"\n  name DeepExpression7\n  label invert\n  xpos -4\n  ypos 79\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"pow( 1 - pow( 1 - deepNormal.alpha , \\[value parent.exp_in] ) , \\[value parent.exp_out] ) )\"\n  name DeepExpression1\n  label exponential\n  xpos -4\n  ypos 159\n }\n Dot {\n  name Dot1\n  xpos 30\n  ypos 301\n }\nset Na337800 [stack 0]\n DeepExpression {\n  temp_name0 celShade\n  temp_expr0 \"clamp(deepNormal.alpha) ** \\[value toonRatio] * (\\[value toonLayers]+1)\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"( (int(celShade)-1)/\\[value toonLayers]) + (clamp( (celShade%1) * (1/(1-clamp(\\[value toonSharpness]))) ) * (1/\\[value toonLayers]) )\"\n  name DeepExpression40\n  label \"toon shade\"\n  xpos 128\n  ypos 360\n  addUserKnob {20 User}\n  addUserKnob {3 toonLayers}\n  toonLayers {{\"\\[metadata sLayers]+0 <= 1 ? 1 : \\[metadata sLayers]+0\"}}\n  addUserKnob {7 toonSharpness}\n  toonSharpness {{\"\\[metadata sSharpness]+0\"}}\n  addUserKnob {7 toonRatio}\n  toonRatio {{\"\\[metadata sRatio]+0\"}}\n }\npush $Na337800\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPshader]+0==2 ? 1 : 0\"}}\n  name Switch1\n  xpos -4\n  ypos 417\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  rgba.red \"red + deepNormal.alpha * \\[value parent.multiply.r]\"\n  rgba.green \"green + deepNormal.alpha * \\[value parent.multiply.g]\"\n  rgba.blue \"blue + deepNormal.alpha * \\[value parent.multiply.b]\"\n  deepNormal.alpha 0\n  name DeepExpression2\n  label \"apply color\"\n  xpos -4\n  ypos 497\n }\n Output {\n  name Output1\n  xpos -4\n  ypos 577\n }\npush $N4e88c00\n NoOp {\n  name getCam\n  xpos -374\n  ypos -78\n  addUserKnob {20 User}\n  addUserKnob {13 cmr01}\n  cmr01 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 2 2]+0\"}}\n  addUserKnob {13 cmr02}\n  cmr02 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 4 4]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 5 5]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 6 6]+0\"}}\n  addUserKnob {13 cmr03}\n  cmr03 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 8 8]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 9 9]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 10 10]+0\"}}\n  addUserKnob {7 aspect}\n  aspect {{\"\\[metadata DVPcamAspect]+0\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPmatte.gizmo",
    "content": "Group {\n name DVPmatte\n tile_color 0x597fff\n label \"node type : \\[value node_type]\\noperation : \\[value matte_op]\\n<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {3 mode +INVISIBLE}\n addUserKnob {41 geo_select T geoCTRL.geo_select}\n addUserKnob {41 transform_1 l transform T geoCTRL.transform}\n addUserKnob {26 title_matte l \"<b><font color=#5077FF>matte</font></b>\"}\n addUserKnob {41 mat_shape l shape t \"Select the 3D shape of the matte. 3D shape can be preview under 3D view when the panel of this node is active.\\n\\nSphere : only support uniform falloff.\\nCube : support separate 3-axis falloff.\\nCylinder : only support uniform falloff.\" T menu01.mat_shape}\n addUserKnob {6 invert_matte l \"invert matte\" t \"Invert the matte of the shape. Same as deepHoldout but with falloff support (soften matte).\" -STARTLINE}\n addUserKnob {41 node_type l \"node type\" t \"<b>final matte</b>\\nPremult all the mattes in the <b>DVPmatte</b> and <b>DVPattern</b> stack to get the final matte.\\n\\n<b>open/cc matte</b>\\nKeep the matte and pass along to downstream for multi mattes and <b>DVPColorCorrect</b> purpose. It will only premult RGB for 2D preview.\" T menu02.node_type}\n addUserKnob {6 show_color l \"show color\" -STARTLINE +HIDDEN}\n show_color true\n addUserKnob {26 remarks l * T \"first matte node should use 'union' operation.\"}\n addUserKnob {4 matte_op l operation t \"a : this matte\\nb : input matte\\n\\ndivide\\ta/b\\nfrom\\tb-a\\nin\\tab\\nmax\\tmax(a,b)\\nmin\\tmin(a,b)\\nminus\\ta-b\\nmultiply\\ta*b\\nout\\ta(1-b)\\nplus\\ta+b\\nstencil\\tb(1-a)\\nunion\\ta+b-ab\\nxor\\ta+b-2ab\" M {divide from in max min minus multiply out plus stencil union xor \"\" \"\" \"\" \"\" \"\" \"\"}}\n matte_op union\n addUserKnob {26 title_transform l \"<b><font color=#5077FF>transform</font></b>\"}\n addUserKnob {22 toggle_2d_mode l \"toggle 2D sample\" t \"When toggle to 2d mode, you can see the point named 'sample_point' in viewer. Move it to the spot for sampling and output the matte.\" T \"thisGRP = nuke.thisGroup()\\n\\ndef cpmode() :\\n\\tthisGRP\\['mode'].setValue(1)\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['sample_2d_status'].setValue('<font color=cyan>\\[ ON ]</font>')\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\n\\nif thisGRP\\['mode'].getValue() == 1 :\\n\\tthisGRP\\['mode'].setValue(0)\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['sample_2d_status'].setValue('<font color=red>\\[ OFF ]</font>')\\n\\tthisGRP\\['updateUI'].setValue('')\\nelse :\\n\\tif thisGRP\\['mat_translate'].isAnimated() :\\n\\t\\tif nuke.ask('Translate on this node has <font color=orange>expression/animated</font>.\\\\n\\\\nIf switch to colorpicker mode, animation or expression will be clear but keep the current value.\\\\n\\\\nDo you want to process?') :\\n\\t\\t\\tthisGRP\\['remove_link'].execute()\\n\\t\\t\\tcpmode()\\n\\telse :\\n\\t\\tcpmode()\" +STARTLINE}\n addUserKnob {26 sample_2d_status l \"\" -STARTLINE T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Select the matte spot in 2D space.\" +DISABLED}\n addUserKnob {41 mat_translate l translate T geoCTRL.translate}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T geoCTRL.snap_menu}\n addUserKnob {41 mat_rot_order l \"rotation order\" T geoCTRL.rot_order}\n addUserKnob {41 mat_rotate l rotate T geoCTRL.rotate}\n addUserKnob {41 mat_scaling l scale T geoCTRL.scaling}\n addUserKnob {41 mat_uniform_scale l \"uniform scale\" T geoCTRL.uniform_scale}\n addUserKnob {41 mat_skew l skew T geoCTRL.skew}\n addUserKnob {41 mat_pivot l pivot T geoCTRL.pivot}\n addUserKnob {22 set_link l \"link to selected axis/geo\" t \"Select any 3D nodes and link the node with this button. It gives you a control in 3D for transformation.\" T \"def getLevel() :\\n    ### level define ###\\n    if len(nuke.thisNode().fullName().split('.')) == 1 :\\n          ggLevel = nuke.root()\\n    else :\\n          nodePath = nuke.thisNode().fullName().split('.')\\n          nodePath.pop()\\n          ggLevel = nuke.toNode('.'.join(nodePath))\\n    return ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\nmainKnobs = \\['mat_rot_order','mat_translate','mat_rotate','mat_scaling','mat_uniform_scale','mat_skew','mat_pivot']\\n\\naxWhiteList = \\['Axis','Axis2','Cube','Sphere','Cylinder','Card','Card2','ReadGeo','ReadGeo2','TransformGeo']\\n\\ntry :\\n    with root :\\n        selNode = nuke.selectedNode()\\n    \\n    with thisGRP :\\n        if axWhiteList.count(selNode.Class()) != 0 :\\n            for knob in mainKnobs :\\n                thisGRP\\[knob].clearAnimated()\\n            thisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.rot_order'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.translate'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.rotate'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.scaling'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.uniform_scale'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.skew'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[6]].setExpression( '\\{0\\}.pivot'.format(selNode.name()) )\\n        else :\\n            nuke.message('No support node selected.')\\nexcept :\\n    nuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the expression link but won't reset any data. So the transformation data still works if input doesn't contain any movement.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['mat_rot_order','mat_translate','mat_rotate','mat_scaling','mat_uniform_scale','mat_skew','mat_pivot']\\n\\nfor i in range (0, len(mainKnobs), 1) :\\n    thisGRP\\[mainKnobs\\[i]].clearAnimated()\"}\n addUserKnob {26 title_falloff l \"<b><font color=#5077FF>fall off</font></b>\"}\n addUserKnob {13 cube3d_falloff l \"cube3D falloff\" +DISABLED}\n cube3d_falloff {1 1 1}\n addUserKnob {7 uniform_falloff l \"uniform falloff\" t \"This is a globel falloff value. Support for any shape of matte.\" R 0.001 1}\n uniform_falloff 0.5\n addUserKnob {7 exp_in l \"falloff in\" t \"Ease out falloff from the core by exponential math.\" R 0.1 10}\n exp_in 1\n addUserKnob {7 exp_out l out t \"Ease in falloff from the edge by exponential math.\" -STARTLINE R 0.1 10}\n exp_out 1\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with matte applied</b>\\nThis can show the instant result of the projection. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with matte applied\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the density of the pointcloud.\" T deepPositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the point size of the pointcloud.\" T deepPositionToPoints.pointSize}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  gl_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -454\n  ypos -583\n  bdwidth 270\n  bdheight 167\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x8e8e8eff\n  label bin\n  note_font_size 42\n  xpos -453\n  ypos -399\n  bdwidth 272\n  bdheight 292\n }\n Cylinder {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  rows 1\n  columns 10\n  name Cylinder1\n  xpos 1968\n  ypos 2362\n }\n Cube {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 1\n  columns 1\n  separate_faces false\n  uniform_scale 2\n  name Cube1\n  xpos 1845\n  ypos 2368\n }\n Sphere {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 8\n  columns 8\n  name Sphere1\n  xpos 1725\n  ypos 2365\n }\n Switch {\n  inputs 3\n  which {{mat_shape}}\n  name Switch4\n  xpos 1845\n  ypos 2438\n }\n TransformGeo {\n  name geoCTRL\n  xpos 1845\n  ypos 2518\n }\n Scene {\n  name Scene1\n  xpos 1855\n  ypos 2598\n }\npush 0\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 1845\n  ypos 2816\n }\n Input {\n  inputs 0\n  name deep\n  xpos 188\n  ypos -608\n }\n Dot {\n  name Dot1\n  xpos 222\n  ypos -448\n }\nset N595bd400 [stack 0]\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  chans1 none\n  deepRawColor.red \"deepRawColor.red * (1/alpha)\"\n  deepRawColor.green \"deepRawColor.green * (1/alpha)\"\n  deepRawColor.blue \"deepRawColor.blue * (1/alpha)\"\n  name DeepExpression27\n  label \"unpremult exisiting deepRawColor\"\n  xpos 369\n  ypos -374\n }\npush $N595bd400\n DeepExpression {\n  chans0 deepRawColor\n  chans1 none\n  deepRawColor.red \"red * (1/alpha)\"\n  deepRawColor.green \"green * (1/alpha)\"\n  deepRawColor.blue \"blue * (1/alpha)\"\n  deepRawColor.alpha 0\n  name DeepExpression21\n  label \"shuffle unpremult RGB to deepRawColor\"\n  xpos 188\n  ypos -374\n }\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPmatte]+0==0 || \\[metadata DVPmatte]+0==2 ? 0 : 1\"}}\n  name Switch5\n  label \"if upstream cc or open matte\"\n  xpos 188\n  ypos -295\n }\n Dot {\n  name Dot19\n  xpos 222\n  ypos -172\n }\nset N595bc400 [stack 0]\n DeepExpression {\n  chans1 none\n  rgba.red alpha\n  rgba.green 0\n  rgba.blue 0\n  rgba.alpha 1\n  name DeepExpression29\n  label \"shuffle alpha to red channel\\nand unpremult the data with alpha 1\"\n  xpos 188\n  ypos -34\n }\n Dot {\n  name Dot9\n  xpos 222\n  ypos 70\n }\nset N5d223800 [stack 0]\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\n DeepExpression {\n  temp_name0 circle\n  temp_expr0 \"sqrt( pow2( \\[value store.dx] ) + pow2( \\[value store.dz] ) )\"\n  temp_name1 height\n  temp_expr1 \"abs( \\[value store.dy] )\"\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( max( circle , height ) )\"\n  name DeepExpression20\n  label \"cylinder matte\"\n  xpos 323\n  ypos 150\n }\npush $N5d223800\n DeepExpression {\n  temp_name0 newR\n  temp_expr0 \"abs( \\[value store.dx] ) > 1 ? 1 : clamp( sqrt( pow2( abs( \\[value store.dx] ) * \\[value parent.cube3d_falloff.x]) ) )\"\n  temp_name1 newG\n  temp_expr1 \"abs( \\[value store.dy] ) > 1 ? 1 : clamp( sqrt( pow2( abs( \\[value store.dy] ) * \\[value parent.cube3d_falloff.y]) ) )\"\n  temp_name2 newB\n  temp_expr2 \"abs( \\[value store.dz] ) > 1 ? 1 : clamp( sqrt( pow2( abs( \\[value store.dz] ) * \\[value parent.cube3d_falloff.z]) ) )\"\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha clamp(max(abs(newR),abs(newG),abs(newB)))\n  name DeepExpression18\n  label \"cube matte\"\n  xpos 188\n  ypos 154\n }\npush $N5d223800\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( sqrt( pow2( \\[value store.dx] )+pow2( \\[value store.dy] )+pow2( \\[value store.dz] ) ) )\"\n  name DeepExpression19\n  label \"sphere matte\"\n  xpos 43\n  ypos 151\n }\n Switch {\n  inputs 3\n  which {{parent.mat_shape}}\n  name Switch3\n  label \"shape selection\"\n  xpos 188\n  ypos 246\n }\n Dot {\n  name Dot12\n  xpos 222\n  ypos 353\n }\nset N5d222400 [stack 0]\n Dot {\n  name Dot16\n  xpos 307\n  ypos 438\n }\n DeepExpression {\n  temp_name0 invfalloff\n  temp_expr0 \"\\[value parent.uniform_falloff] == 0 ? 1- ( (1 - deepPosition.alpha)*(1/0.00001) ) : 1- ( (1 - deepPosition.alpha)*(1/\\[value parent.uniform_falloff]) )\"\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( invfalloff )\"\n  name DeepExpression22\n  label \"global falloff (invert)\"\n  xpos 273\n  ypos 512\n }\npush $N5d222400\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"1 - deepPosition.alpha\"\n  name DeepExpression17\n  label invert\n  xpos 102\n  ypos 426\n }\n DeepExpression {\n  temp_name0 falloff\n  temp_expr0 \"\\[value parent.uniform_falloff] == 0 ? deepPosition.alpha*(1/0.00001) : deepPosition.alpha * (1/\\[value parent.uniform_falloff])\"\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"clamp( falloff )\"\n  name DeepExpression11\n  label \"global falloff\"\n  xpos 102\n  ypos 511\n }\n Switch {\n  inputs 2\n  which {{invert_matte}}\n  name Switch6\n  xpos 188\n  ypos 612\n }\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha \"pow( 1 - pow( 1 - deepPosition.alpha , \\[value parent.exp_in] ) , \\[value parent.exp_out] ) * alpha\"\n  name DeepExpression23\n  label exponential\n  xpos 188\n  ypos 692\n }\n Dot {\n  name Dot7\n  xpos 222\n  ypos 784\n }\nset N5d220800 [stack 0]\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a + b - 2 * a * b\"\n  name DeepExpression16\n  label xor\n  xpos 793\n  ypos 919\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"\\[value mdChk] ? a + b - a * b : a\"\n  name DeepExpression15\n  label union\n  xpos 663\n  ypos 923\n  addUserKnob {20 User}\n  addUserKnob {3 mdChk}\n  mdChk {{\"\\[metadata DVPmatte]+0\"}}\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"b * ( 1 - a )\"\n  name DeepExpression14\n  label stencil\n  xpos 534\n  ypos 923\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a + b\"\n  name DeepExpression13\n  label plus\n  xpos 421\n  ypos 921\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * ( 1 - b )\"\n  name DeepExpression12\n  label out\n  xpos 304\n  ypos 926\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * b\"\n  name DeepExpression10\n  label multiply\n  xpos 188\n  ypos 928\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a - b\"\n  name DeepExpression9\n  label minus\n  xpos 77\n  ypos 929\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"min( a , b )\"\n  name DeepExpression8\n  label min\n  xpos -38\n  ypos 932\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"max( a , b )\"\n  name DeepExpression7\n  label max\n  xpos -135\n  ypos 935\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a * b\"\n  name DeepExpression6\n  label in\n  xpos -230\n  ypos 932\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"b - a\"\n  name DeepExpression5\n  label from\n  xpos -326\n  ypos 934\n }\npush $N5d220800\n DeepExpression {\n  temp_name0 a\n  temp_expr0 deepPosition.alpha\n  temp_name1 b\n  temp_expr1 deepRawColor.alpha\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"a / b\"\n  name DeepExpression4\n  label divide\n  xpos -427\n  ypos 933\n }\n Switch {\n  inputs 12\n  which {{parent.matte_op}}\n  name Switch2\n  label \"select operations\"\n  xpos 188\n  ypos 1110\n }\n DeepExpression {\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha \"clamp( deepRawColor.alpha)\"\n  name DeepExpression30\n  label \"clamp the final matte\"\n  xpos 188\n  ypos 1196\n }\n Dot {\n  name Dot35\n  xpos 222\n  ypos 1294\n }\nset N5d1c4800 [stack 0]\n Dot {\n  name Dot2\n  xpos 374\n  ypos 1294\n }\n DeepExpression {\n  chans1 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  rgba.red \"\\[value show_color] ? deepRawColor.red * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.green \"\\[value show_color] ? deepRawColor.green * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.blue \"\\[value show_color] ? deepRawColor.blue * red * deepRawColor.alpha : red * deepRawColor.alpha\"\n  rgba.alpha red\n  deepRawColor.red \"deepRawColor.red * red\"\n  deepRawColor.green \"deepRawColor.green * red\"\n  deepRawColor.blue \"deepRawColor.blue * red\"\n  name DeepExpression1\n  label \"show matte or color\\nnot alpha\"\n  xpos 340\n  ypos 1425\n  addUserKnob {20 User}\n  addUserKnob {3 show_color}\n  show_color {{parent.show_color}}\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 1}\n  }\n  name DVPmatteMD02\n  label open\n  xpos 340\n  ypos 1779\n }\npush $N5d1c4800\n DeepExpression {\n  chans1 deepRawColor\n  rgba.red \"deepRawColor.red * deepRawColor.alpha * red\"\n  rgba.green \"deepRawColor.green * deepRawColor.alpha * red\"\n  rgba.blue \"deepRawColor.blue * deepRawColor.alpha * red\"\n  rgba.alpha \"deepRawColor.alpha * red\"\n  deepRawColor.red \"deepRawColor.red * deepRawColor.alpha * red\"\n  deepRawColor.green \"deepRawColor.green * deepRawColor.alpha * red\"\n  deepRawColor.blue \"deepRawColor.blue * deepRawColor.alpha * red\"\n  deepRawColor.alpha \"deepRawColor.alpha * red\"\n  name DeepExpression24\n  label \"premult color\\nand alpha\"\n  xpos 188\n  ypos 1432\n }\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front \"deepRawColor.alpha <= 0 ? -1 : deep.front\"\n  deep.back \"deepRawColor.alpha <= 0 ? -1 : deep.back\"\n  name DeepExpression41\n  label \"alpha check\"\n  xpos 188\n  ypos 1530\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {0 0 1 1}\n  use_bbox false\n  name DeepCrop3\n  label \"sample cleanup\"\n  xpos 188\n  ypos 1622\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 0}\n  }\n  name DVPmatteMD01\n  label close\n  xpos 188\n  ypos 1780\n }\n Switch {\n  inputs 2\n  which {{parent.node_type}}\n  name Switch14\n  label \"node type\"\n  xpos 188\n  ypos 1969\n }\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 none\n  deepPosition.alpha 0\n  name DeepExpression32\n  label reset\n  xpos 188\n  ypos 2136\n }\n Dot {\n  name Dot11\n  xpos 222\n  ypos 2256\n }\nset N5e7f1c00 [stack 0]\n Switch {\n  inputs 2\n  name preview_3D\n  xpos 188\n  ypos 2816\n }\n Output {\n  name Output1\n  xpos 188\n  ypos 2941\n }\npush $N5e7f1c00\npush $N595bc400\n Dot {\n  name Dot10\n  xpos 1530\n  ypos -172\n }\nset N5e7f1000 [stack 0]\n Switch {\n  inputs 2\n  which {{\"parent.display_ptc_type == 1 ? 0 : parent.display_ptc_type == 2 ? 1 : 0\"}}\n  name Switch8\n  xpos 1496\n  ypos 2253\n }\n Group {\n  name DeepPositionToImage3\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 1496\n  ypos 2333\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N5e7f0400 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N5e7f0400\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Remove {\n   channels deepRawColor\n   name Remove1\n   xpos 508\n   ypos 265\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 353\n  }\n end_group\n PositionToPoints2 {\n  display textured\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  P_channel deepPosition\n  detail 0.1\n  name deepPositionToPoints\n  xpos 1496\n  ypos 2431\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\npush $N5e7f1000\n Dot {\n  name Dot8\n  xpos 1722\n  ypos -172\n }\n Group {\n  name DeepPositionToImage1\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 1688\n  ypos -93\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N5e7a9800 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N5e7a9800\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Remove {\n   channels deepRawColor\n   name Remove1\n   xpos 508\n   ypos 265\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 353\n  }\n end_group\n Shuffle {\n  in deepPosition\n  alpha white\n  name sample_node\n  xpos 1688\n  ypos 5\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -291\n  ypos -215\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path ax_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"open matte\"\n  xpos 339\n  ypos 1362\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['mat_shape'].getValue() == 1 :\\n    thisGRP\\['cube3d_falloff'].setEnabled(True)\\nelse :\\n    thisGRP\\['cube3d_falloff'].setEnabled(False)\\n\"\n  xpos -412\n  ypos -483\n  addUserKnob {20 User}\n  addUserKnob {4 mat_shape l shape M {Sphere Cube Cylinder \"\"}}\n }\n Axis {\n  inputs 0\n  display off\n  rot_order {{parent.mat_rot_order}}\n  translate {{parent.mat_translate} {parent.mat_translate} {parent.mat_translate}}\n  rotate {{parent.mat_rotate} {parent.mat_rotate} {parent.mat_rotate}}\n  scaling {{parent.mat_scaling} {parent.mat_scaling} {parent.mat_scaling}}\n  uniform_scale {{parent.mat_uniform_scale}}\n  skew {{parent.mat_skew} {parent.mat_skew} {parent.mat_skew}}\n  pivot {{parent.mat_pivot} {parent.mat_pivot} {parent.mat_pivot}}\n  name ax_data\n  xpos -282\n  ypos -310\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"final matte\"\n  xpos 185\n  ypos 1360\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -418\n  ypos -213\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['mode'].getValue() == 1 :\\n\\t\\tsampt = thisGRP\\['sample_point'].getValue()\\n\\t\\tsamNode = nuke.toNode('sample_node')\\n\\t\\tdata = \\[samNode.sample('red', sampt\\[0], sampt\\[1]), samNode.sample('green', sampt\\[0], sampt\\[1]), samNode.sample('blue', sampt\\[0], sampt\\[1])]\\n\\t\\tthisGRP\\['mat_translate'].setValue(data)\" +STARTLINE}\n  addUserKnob {1 dx}\n  dx \"( deepPosition.red - \\[value ax_data.world_matrix.3] ) * \\[value inverseMatrix.invMatrix.0] + ( deepPosition.green - \\[value ax_data.world_matrix.7] ) * \\[value inverseMatrix.invMatrix.1] + ( deepPosition.blue - \\[value ax_data.world_matrix.11] ) * \\[value inverseMatrix.invMatrix.2]\"\n  addUserKnob {1 dy}\n  dy \"( deepPosition.red - \\[value ax_data.world_matrix.3] ) * \\[value inverseMatrix.invMatrix.3] + ( deepPosition.green - \\[value ax_data.world_matrix.7] ) * \\[value inverseMatrix.invMatrix.4] + ( deepPosition.blue - \\[value ax_data.world_matrix.11] ) * \\[value inverseMatrix.invMatrix.5]\"\n  addUserKnob {1 dz}\n  dz \"( deepPosition.red - \\[value ax_data.world_matrix.3] ) * \\[value inverseMatrix.invMatrix.6] + ( deepPosition.green - \\[value ax_data.world_matrix.7] ) * \\[value inverseMatrix.invMatrix.7] + ( deepPosition.blue - \\[value ax_data.world_matrix.11] ) * \\[value inverseMatrix.invMatrix.8]\"\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['node_type'].getValue() :\\n    thisGRP\\['show_color'].setVisible( True )\\nelse :\\n    thisGRP\\['show_color'].setVisible( False )\\n\"\n  xpos -303\n  ypos -483\n  addUserKnob {20 User}\n  addUserKnob {4 node_type l \"node type\" M {\"final matte\" \"open/cc matte\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPortal.gizmo",
    "content": "Group {\n name DVPortal\n tile_color 0x4d00ccff\n label \"<img src='Camera.png'> info\"\n note_font \"MS Shell Dlg 2\"\n addUserKnob {20 tab_general l General}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {4 xform_order l \"transform order\" +DISABLED M {SRT STR RST RTS TSR TRS}}\n xform_order {{\"\\[exists input] ? input.xform_order : 0\"}}\n addUserKnob {4 rot_order l \"rotation order\" +DISABLED M {XYZ XZY YXZ YZX ZXY ZYX}}\n rot_order {{\"\\[exists input] ? input.rot_order : 0\"}}\n addUserKnob {13 translate +DISABLED}\n translate {{\"\\[exists input] ? input.translate : 0\"} {\"\\[exists input] ? input.translate : 0\"} {\"\\[exists input] ? input.translate : 0\"}}\n addUserKnob {13 rotate +DISABLED}\n rotate {{\"\\[exists input] ? input.rotate : 0\"} {\"\\[exists input] ? input.rotate : 0\"} {\"\\[exists input] ? input.rotate : 0\"}}\n addUserKnob {13 scaling l scale +DISABLED}\n scaling {{\"\\[exists input] ? input.scaling : 0\"} {\"\\[exists input] ? input.scaling : 0\"} {\"\\[exists input] ? input.scaling : 0\"}}\n addUserKnob {7 uniform_scale l \"uniform scale\" +DISABLED R 0.01 10}\n uniform_scale {{\"\\[exists input] ? input.uniform_scale : 0\"}}\n addUserKnob {13 skew +DISABLED}\n skew {{\"\\[exists input] ? input.skew : 0\"} {\"\\[exists input] ? input.skew : 0\"} {\"\\[exists input] ? input.skew : 0\"}}\n addUserKnob {13 pivot +DISABLED}\n pivot {{\"\\[exists input] ? input.pivot : 0\"} {\"\\[exists input] ? input.pivot : 0\"} {\"\\[exists input] ? input.pivot : 0\"}}\n addUserKnob {41 world_matrix l \"world matrix\" T camhub.world_matrix}\n addUserKnob {7 focal +DISABLED R 5 100}\n focal {{\"\\[exists input] ? input.focal : 0\"}}\n addUserKnob {7 haperture l \"horiz aperture\" +DISABLED R 0.1 50}\n haperture {{\"\\[exists input] ? input.haperture : 0\"}}\n addUserKnob {7 near +DISABLED R 0.1 10}\n near {{\"\\[exists input] ? input.near : 0\"}}\n addUserKnob {7 far +DISABLED R 11 10000}\n far {{\"\\[exists input] ? input.far : 0\"}}\n addUserKnob {30 win_translate l \"window translate\" +DISABLED}\n win_translate {{\"\\[exists input] ? input.win_translate : 0\"} {\"\\[exists input] ? input.win_translate : 0\"}}\n addUserKnob {30 win_scale l \"window scale\" +DISABLED}\n win_scale {{\"\\[exists input] ? input.win_scale : 0\"} {\"\\[exists input] ? input.win_scale : 0\"}}\n addUserKnob {7 winroll l \"window roll\" +DISABLED R -45 45}\n winroll {{\"\\[exists input] ? input.winroll : 0\"}}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 42\n  xpos -405\n  ypos -576\n  bdheight 110\n }\n Input {\n  inputs 0\n  name cam\n  xpos -197\n  ypos -591\n }\n Camera {\n  display off\n  selectable false\n  rot_order XYZ\n  focal {{parent.focal}}\n  haperture {{parent.haperture}}\n  near {{parent.near}}\n  far {{parent.far}}\n  win_translate {{parent.win_translate} {parent.win_translate}}\n  win_scale {{parent.win_scale} {parent.win_scale}}\n  winroll {{parent.winroll}}\n  name camhub\n  xpos -187\n  ypos -538\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -396\n  ypos -496\n  addUserKnob {20 User}\n  addUserKnob {22 dev T \"thisGRP = nuke.thisGroup()\\nallKnobs = \\['xform_order','rot_order','translate','rotate','scaling','uniform_scale','skew','pivot','world_matrix','focal','haperture','near','far','win_translate','win_scale','winroll']\\nfor knob in thisGRP.knobs() :\\n    if knob in allKnobs :\\n        thisGRP\\[knob].setEnabled( False )\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPrelight.gizmo",
    "content": "Group {\n name DVPrelight\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x7f65ff\n label \"\\[value light_type]\\n<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {26 title_light l \"<b><font color=#05B590>light</font></b>\"}\n addUserKnob {41 light_type l \"light type\" T menu01.light_type}\n addUserKnob {18 color t \"This control the color and brightness of the light, but not the lighting area.\\n\\nSo use this value to balance with color's brightness to get a proper result.\"}\n color {1 1 1}\n addUserKnob {7 intensity t \"This control the lighting area and brightness.\\n\\nSo use this value to balance with color's brightness to get a proper result.\" R 0 50}\n intensity 1\n addUserKnob {4 world_unit l \"world unit\" t \"This unit will only effective on the lighting area by intensity value. If the scene has larger scale, you can choose higher unit. It all reflect to real unit convert.\\n\\n1km == 1000m\\n1m == 10dm\\n1dm == 10cm\\n1cm == 10mm\" +HIDDEN M {\"millimeter (mm)\" \"centimeter (cm)\" \"decimeter (dm)\" \"meter (m)\" \"kilometer (km)\" \"\" \"\" \"\"}}\n world_unit \"centimeter (cm)\"\n addUserKnob {7 cone_angle l \"cone angle\" t \"Spot light cone angle adjusted the spread of the light. Valid angles are from 0 to 180 degrees.\" +HIDDEN R 0 180}\n cone_angle 40\n addUserKnob {7 cone_penumbra_angle l \"cone penumbra angle\" t \"Spot light penumbra cone angle controls the softness along the edge of the area of illumination. A negative value will fade inward from the circle's edge. A positive value will fade outward from the circle's edge. The cone falloff should be set to zero or a low amount in order to see the softness. This feature is only visible in the rendered objects and not in the 3D ogl viewer.\" +HIDDEN R -60 60}\n addUserKnob {7 cone_falloff l \"cone falloff\" +INVISIBLE R 0 1000}\n addUserKnob {7 exp_in l \"falloff in\" t \"Ease out falloff from the core by exponential math.\" +HIDDEN R 0.01 10}\n exp_in 1\n addUserKnob {7 exp_out l out t \"Ease in falloff from the edge by exponential math.\" -STARTLINE +HIDDEN R 0.01 10}\n exp_out 1\n addUserKnob {26 title_transform l \"<b><font color=#05B590>transform</font></b>\"}\n addUserKnob {4 display_light l display M {off \"show light control\" \"\" \"\"}}\n display_light \"show light control\"\n addUserKnob {4 display_spot l display +HIDDEN M {off \"cone angle\" \"cone penumbra angle\" \"cone angle + cone penumbra angle\"}}\n display_spot \"cone angle + cone penumbra angle\"\n addUserKnob {41 file_menu l @FolderIcon T LGT.file_menu}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T LGT.snap_menu}\n addUserKnob {41 transform T showupTG.transform}\n addUserKnob {41 xform_order l \"transform order\" T LGT.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T LGT.rot_order}\n addUserKnob {41 translate T LGT.translate}\n addUserKnob {41 rotate T LGT.rotate}\n addUserKnob {7 uniform_scale l \"uniform scale\" R 0.01 10}\n uniform_scale 1\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with light applied</b>\\nThis can show the instant result of the light. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with light applied (slow)\" \"\" \"\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" T deepPositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" T deepPositionToPoints.pointSize}\n addUserKnob {20 endGroup_1_1 l endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -1200\n  ypos -630\n  bdwidth 688\n  bdheight 1506\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x191919ff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1080\n  ypos -864\n  bdwidth 391\n  bdheight 187\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x4c4c4cff\n  label \"lighting matte\"\n  note_font_size 42\n  xpos -298\n  ypos -555\n  bdwidth 366\n  bdheight 20\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x4c4c4cff\n  label \"specular matte\"\n  note_font_size 42\n  xpos -303\n  ypos 794\n  bdwidth 366\n  bdheight 20\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x4c4c4cff\n  label \"assign color and luma\"\n  note_font_size 42\n  xpos -289\n  ypos 1281\n  bdwidth 366\n  bdheight 20\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x716240ff\n  label \"spec\\naverge vector of light and camera.\\nextract rotation only.\"\n  note_font_size 24\n  xpos -1193\n  ypos 518\n  bdwidth 420\n  bdheight 228\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode7\n  tile_color 0x716240ff\n  label \"spec\\nblend value for toonShade\"\n  note_font_size 24\n  xpos -1191\n  ypos 82\n  bdwidth 416\n  bdheight 410\n }\n Input {\n  inputs 0\n  name deep\n  xpos -268\n  ypos -825\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\nadd_layer {DVPshader DVPshader.red DVPshader.green DVPshader.blue DVPshader.alpha}\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 deepPosition\n  chans1 deepNormal\n  chans2 DVPshader\n  chans3 deepRawColor\n  name spacer1\n  xpos -268\n  ypos -747\n }\n Dot {\n  name Dot12\n  xpos -234\n  ypos -463\n }\nset N52112400 [stack 0]\n Dot {\n  name Dot3\n  xpos 15\n  ypos -463\n }\nset N52112000 [stack 0]\n DeepExpression {\n  temp_name0 circle\n  temp_expr0 \"sqrt( pow2( \\[value globalTCL.lgtPX] ) + pow2( \\[value globalTCL.lgtPY] ) ) * 2\"\n  temp_name1 ocone\n  temp_expr1 \"1 / ( tan( radians( \\[value oradius] ) ) * abs( \\[value globalTCL.lgtPZ] ) * 2 * smoothstep( 0, 1, ( 1 / ( \\[value parent.cone_falloff] * 0.004 + 1 ) ) ) )\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"clamp( ( \\[value globalTCL.lgtPZ] <= 0 ? 1 - circle * ocone : 0 ) * \\[value mult] )\"\n  name DeepExpression9\n  label \"normal cone\"\n  xpos -19\n  ypos -389\n  addUserKnob {20 User}\n  addUserKnob {7 mult}\n  mult {{\"max( 1, clamp(parent.cone_angle , 0.1, 180) / abs( parent.cone_penumbra_angle ) )\"}}\n  addUserKnob {7 oradius R 0 180}\n  oradius {{\"parent.cone_penumbra_angle <= 0 ? parent.cone_angle / 2 : clamp( ( parent.cone_angle + parent.cone_penumbra_angle ) / 2, 0 ,90 )\"}}\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"clamp( deepNormal.alpha * (1 / abs( \\[value globalTCL.lgtPZ]) * \\[value parent.intensity] * \\[value globalTCL.unit] ) )\"\n  name DeepExpression5\n  label linear\n  xpos -19\n  ypos -297\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"1- pow( 1-pow( deepNormal.alpha , \\[value expO] ) , \\[value expI] )\"\n  name DeepExpression12\n  label exponential\n  xpos -19\n  ypos -205\n  addUserKnob {20 User}\n  addUserKnob {7 expI}\n  expI {{\"parent.exp_in < 0.01 ? 0.01 : parent.exp_in\"}}\n  addUserKnob {7 expO}\n  expO {{\"parent.exp_out < 0.01 ? 0.01 : parent.exp_out\"}}\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"deepNormal.alpha * clamp( deepNormal.red * \\[value LGT_inv.world_matrix.8] + deepNormal.green * \\[value LGT_inv.world_matrix.9] + deepNormal.blue * \\[value LGT_inv.world_matrix.10] )\"\n  name DeepExpression10\n  label \"remove backface\"\n  xpos -19\n  ypos -113\n }\n DeepExpression {\n  temp_name0 pivot\n  temp_expr0 0.5\n  temp_name1 lift\n  temp_expr1 \"(1/\\[value globalTCL.unit])\"\n  temp_name2 soft\n  temp_expr2 1\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"( ( deepNormal.alpha < pivot ? deepNormal.alpha + ( lift * ( pow( ( 1 - ( deepNormal.alpha / pivot ) ) , ( ( ( ( pivot / lift ) - 1 ) * soft ) + 1 ) ) ) ) : deepNormal.alpha ) - lift ) * 1 / ( 1 - lift )\"\n  name DeepExpression11\n  label \"ease out\"\n  xpos -19\n  ypos -21\n }\n Dot {\n  name Dot5\n  xpos 15\n  ypos 96\n }\npush $N52112400\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"\\[value globalTCL.lgtNZ]\"\n  name DeepExpression3\n  label \"directional light\"\n  xpos -268\n  ypos -389\n }\n Switch {\n  inputs 2\n  which {{parent.light_type}}\n  name Switch1\n  xpos -268\n  ypos 249\n }\n Dot {\n  name Dot2\n  xpos -234\n  ypos 896\n }\nset N520cb800 [stack 0]\n DeepExpression {\n  temp_name0 lgtR\n  temp_expr0 \"( deepNormal.red * LGT_inv.world_matrix.0 + deepNormal.green * LGT_inv.world_matrix.1 + deepNormal.blue * LGT_inv.world_matrix.2 ) * blend.x\"\n  temp_name1 lgtG\n  temp_expr1 \"( deepNormal.red * LGT_inv.world_matrix.4 + deepNormal.green * LGT_inv.world_matrix.5 + deepNormal.blue * LGT_inv.world_matrix.6 ) * blend.y\"\n  temp_name2 lgtB\n  temp_expr2 \"deepNormal.red * LGT_inv.world_matrix.8 + deepNormal.green * LGT_inv.world_matrix.9 + deepNormal.blue * LGT_inv.world_matrix.10\"\n  chans0 {-DVPshader.red -DVPshader.green -DVPshader.blue DVPshader.alpha}\n  chans1 none\n  DVPshader.alpha \"( 1-sqrt( pow2( lgtR ) + pow2( lgtG ) ) ) * lgtB\"\n  name DeepExpression7\n  label \"DVP_ToonShader spec\"\n  xpos -32\n  ypos 996\n  addUserKnob {20 User}\n  addUserKnob {12 blend}\n  blend {{\"(pi-abs(asin(vecRT.matrix.7))) / pi\"} {\"(pi-abs(asin((vecRT.matrix.6)/-cos(asin(vecRT.matrix.7))))) / pi\"}}\n }\npush $N520cb800\n DeepExpression {\n  temp_name0 u\n  temp_expr0 \"(deepNormal.red*invMTXSpec.invMatrix.0 + deepNormal.green*invMTXSpec.invMatrix.1 + deepNormal.blue*invMTXSpec.invMatrix.2) * (1/\\[value blend.x])\"\n  temp_name1 v\n  temp_expr1 \"(deepNormal.red*invMTXSpec.invMatrix.3 + deepNormal.green*invMTXSpec.invMatrix.4 + deepNormal.blue*invMTXSpec.invMatrix.5) * (1/\\[value blend.y])\"\n  chans0 {-DVPshader.red -DVPshader.green -DVPshader.blue DVPshader.alpha}\n  chans1 none\n  DVPshader.alpha \"clamp( 1-sqrt( pow2(u*1/blend.x) + pow2(v*1/blend.y) ) )\"\n  name DeepExpression63\n  label \"DVP_Shader spec\"\n  xpos -165\n  ypos 995\n  addUserKnob {20 User}\n  addUserKnob {12 blend}\n  blend {{\"invMTXSpec.invMatrix.1<1 && invMTXSpec.invMatrix.1>-1 ? 1 : abs( invMTXSpec.invMatrix.1 )\"} {\"invMTXSpec.invMatrix.3<1 && invMTXSpec.invMatrix.3>-1 ? 1 : abs( invMTXSpec.invMatrix.3 )\"}}\n }\npush $N520cb800\n Switch {\n  inputs 3\n  which {{\"\\[metadata DVPshader]+0\"}}\n  name Switch6\n  xpos -268\n  ypos 1096\n }\n Dot {\n  name Dot4\n  xpos -234\n  ypos 1390\n }\nset N520ca800 [stack 0]\n Dot {\n  name Dot8\n  xpos 343\n  ypos 1390\n }\n DeepExpression {\n  temp_name0 celShade\n  temp_expr0 \"clamp(deepNormal.alpha) ** \\[value toonRatio] * (\\[value toonLayers]+1)\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"( (int(celShade)-1)/\\[value toonLayers]) + (clamp( (celShade%1) * (1/(1-clamp(\\[value toonSharpness]))) ) * (1/\\[value toonLayers]) )\"\n  name DeepExpression40\n  xpos 309\n  ypos 1526\n  addUserKnob {20 User}\n  addUserKnob {3 toonLayers}\n  toonLayers {{\"\\[metadata sLayers]+0 <= 1 ? 1 : \\[metadata sLayers]+0\"}}\n  addUserKnob {7 toonSharpness}\n  toonSharpness {{\"\\[metadata sSharpness]+0\"}}\n  addUserKnob {7 toonRatio}\n  toonRatio {{\"\\[metadata sRatio]+0\"}}\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha clamp(deepNormal.alpha)\n  name DeepExpression49\n  label clamp\n  xpos 309\n  ypos 1652\n }\n Dot {\n  name Dot10\n  xpos 343\n  ypos 1783\n }\nset N520c9800 [stack 0]\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r * cs.matrix.0 + g * cs.matrix.1 + b * cs.matrix.2\"\n  rgba.green \"lr * cs.matrix.3 + lg * cs.matrix.4 + lb * cs.matrix.5\"\n  rgba.blue \"lr * cs.matrix.6 + lg * cs.matrix.7 + lb * cs.matrix.8\"\n  name DeepExpression59\n  label color\n  xpos 2194\n  ypos 2099\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r * cs_inv.matrix.0 + g * cs_inv.matrix.1 + b * cs_inv.matrix.2\"\n  rgba.green \"r * cs_inv.matrix.3 + g * cs_inv.matrix.4 + b * cs_inv.matrix.5\"\n  rgba.blue \"r * cs_inv.matrix.6 + g * cs_inv.matrix.7 + b * cs_inv.matrix.8\"\n  name DeepExpression60\n  xpos 2194\n  ypos 2191\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression53\n  label screen\n  xpos 2058\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red r+lr\n  rgba.green g+lg\n  rgba.blue b+lb\n  name DeepExpression61\n  label plus\n  xpos 1913\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r<0.5 ? r*lr : lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"g<0.5 ? g*lg : lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"b<0.5 ? b*lb : lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression52\n  label overlay\n  xpos 1785\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red r*lr\n  rgba.green g*lg\n  rgba.blue b*lb\n  name DeepExpression51\n  label multiply\n  xpos 1647\n  ypos 2103\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"min( r, lr )\"\n  rgba.green \"min( g, lg )\"\n  rgba.blue \"min( b, lb )\"\n  name DeepExpression37\n  label min\n  xpos 1511\n  ypos 2102\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max( r, lr )\"\n  rgba.green \"max( g, lg )\"\n  rgba.blue \"max( b, lb )\"\n  name DeepExpression29\n  label max\n  xpos 1402\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? ( r<(2*lr) ? r : (2*lr) ) : ( r>(2*(lr-0.5)) ? r : (2*(lr-0.5)) )\\n\"\n  rgba.green \"lg<0.5 ? ( g<(2*lg) ? g : (2*lg) ) : ( g>(2*(lg-0.5)) ? g : (2*(lg-0.5)) )\"\n  rgba.blue \"lb<0.5 ? ( b<(2*lb) ? b : (2*lb) ) : ( b>(2*(lb-0.5)) ? b : (2*(lb-0.5)) )\"\n  name DeepExpression56\n  label \"pin light\"\n  xpos 1301\n  ypos 2102\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? ( (2*lr)==0 ? (2*lr) : (1-(1-r)/(2*lr))>0 ? (1-(1-r)/(2*lr)) : 0 ) : ( (2*(lr-0.5))==1 ? (2*(lr-0.5)) : (r/(1-(2*(lr-0.5))))<1 ? (r/(1-(2*(lr-0.5)))) : 1 )\"\n  rgba.green \"lg<0.5 ? ( (2*lg)==0 ? (2*lg) : (1-(1-g)/(2*lg))>0 ? (1-(1-g)/(2*lg)) : 0 ) : ( (2*(lg-0.5))==1 ? (2*(lg-0.5)) : (g/(1-(2*(lg-0.5))))<1 ? (g/(1-(2*(lg-0.5)))) : 1 )\"\n  rgba.blue \"lb<0.5 ? ( (2*lb)==0 ? (2*lb) : (1-(1-b)/(2*lb))>0 ? (1-(1-b)/(2*lb)) : 0 ) : ( (2*(lb-0.5))==1 ? (2*(lb-0.5)) : (b/(1-(2*(lb-0.5))))<1 ? (b/(1-(2*(lb-0.5)))) : 1 )\"\n  name DeepExpression55\n  label \"vivid light\"\n  xpos 1206\n  ypos 2106\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? r*lr : lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"lg<0.5 ? g*lg : lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"lb<0.5 ? b*lb : lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression36\n  label \"hard light\"\n  xpos 1085\n  ypos 2103\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r*lr<1 ? r*(2*lr+(r*(1-2*lr*r))) : r*(2*lr+(r*(1-lr*r)))\"\n  rgba.green \"g*lg<1 ? g*(2*lg+(g*(1-2*lg*g))) : g*(2*lg+(g*(1-lg*g)))\"\n  rgba.blue \"b*lb<1 ? b*(2*lb+(b*(1-2*lb*b))) : b*(2*lb+(b*(1-lb*b)))\"\n  name DeepExpression54\n  label \"soft light\"\n  xpos 978\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"(r+lr) <=0 ? 0 : (2*r*lr)/(r+lr)\"\n  rgba.green \"(g+lg) <=0 ? 0 : (2*g*lg)/(g+lg)\"\n  rgba.blue \"(b+lb) <=0 ? 0 : (2*b*lb)/(b+lb)\"\n  name DeepExpression34\n  label geometric\n  xpos 870\n  ypos 2101\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red lr+r-(2*lr*r)\n  rgba.green lg+g-(2*lg*g)\n  rgba.blue lb+b-(2*lb*b)\n  name DeepExpression41\n  label exclusion\n  xpos 773\n  ypos 2108\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red abs(lr-r)\n  rgba.green abs(lg-g)\n  rgba.blue abs(lb-b)\n  name DeepExpression28\n  label difference\n  xpos 673\n  ypos 2104\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max(r+lr-1, 0)\"\n  rgba.green \"max(g+lg-1, 0)\"\n  rgba.blue \"max(b+lb-1, 0)\"\n  name DeepExpression39\n  label \"linear burn\"\n  xpos 549\n  ypos 2108\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max( 0 , 1-(1-r+1)/(lr+1) )\"\n  rgba.green \"max( 0 , 1-(1-g+1)/(lg+1) )\"\n  rgba.blue \"max( 0 , 1-(1-b+1)/(lb+1) )\"\n  name DeepExpression50\n  label \"color burn\"\n  xpos 437\n  ypos 2106\n }\npush $N520c9800\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red (r+lr)/2\n  rgba.green (g+lg)/2\n  rgba.blue (b+lb)/2\n  name DeepExpression38\n  label average\n  xpos 309\n  ypos 2108\n }\n Switch {\n  inputs 17\n  which {{\"\\[metadata sStatus]+0 ? \\[metadata sStyle]+0 : 10\"}}\n  name Switch4\n  xpos 309\n  ypos 2344\n }\n DeepExpression {\n  temp_name0 spec\n  temp_expr0 \"int(( ( cos((1-DVPshader.alpha)*(pi/2)) ** (1/\\[value gloss]) ) * 2 )) * clamp( (( ( cos((1-DVPshader.alpha)*(pi/2)) ** (1/\\[value gloss]) ) * 2 )%1) * (1/(1-\\[value sharpness])) ) * \\[value spec]\"\n  temp_name1 lightMat\n  temp_expr1 \"deepNormal.alpha > 0.25 ? 1 : 0\"\n  chans0 {DVPshader.red DVPshader.green DVPshader.blue none}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue none}\n  DVPshader.red \"max( DVPshader.red , ( spec * \\[value specColor.x] * \\[value parent.intensity] * lightMat * alpha ) )\"\n  DVPshader.green \"max( DVPshader.green , ( spec * \\[value specColor.y] * \\[value parent.intensity] * lightMat * alpha ) )\"\n  DVPshader.blue \"max( DVPshader.blue , ( spec * \\[value specColor.z] * \\[value parent.intensity] * lightMat * alpha ) )\"\n  name DeepExpression4\n  label \"toon spec color n luma\"\n  xpos 309\n  ypos 2567\n  addUserKnob {20 User}\n  addUserKnob {7 spec}\n  spec {{\"clamp(\\[metadata sSpecular]+0)\"}}\n  addUserKnob {7 gloss}\n  gloss {{\"clamp(\\[metadata sGlossiness]+0)\"}}\n  addUserKnob {7 sharpness}\n  sharpness {{\"clamp(\\[metadata sSharpness]+0)\"}}\n  addUserKnob {13 specColor}\n  specColor {{\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor] \\\" \\\"] 0 0]+0 : \\[value parent.color.r]\"} {\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor] \\\" \\\"] 1 1]+0 : \\[value parent.color.g]\"} {\"\\[metadata sSpecReplace]+0 ? \\[lrange \\[split \\[metadata sSpecColor]+0 \\\" \\\"] 2 2]+0 : \\[value parent.color.b]\"}}\n }\n Dot {\n  name Dot6\n  xpos 343\n  ypos 2772\n }\npush $N520ca800\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue none}\n  rgba.red \"red + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.r] )\"\n  rgba.green \"green + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.g] )\"\n  rgba.blue \"blue + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.b] )\"\n  name DeepExpression31\n  xpos -268\n  ypos 1535\n }\n Dot {\n  name Dot9\n  xpos -234\n  ypos 2560\n }\nset N5200f400 [stack 0]\n DeepExpression {\n  temp_name0 spec\n  temp_expr0 \"( ( ( clamp( cos( (1-DVPshader.alpha) * (pi/2) ) ) ** (1/\\[value gloss]) * 2 ) ** (1/(1-\\[value spec])) ) * (1/2) * \\[value spec] )\"\n  chans0 {DVPshader.red DVPshader.green DVPshader.blue none}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue none}\n  DVPshader.red \"DVPshader.red + ( spec * \\[value parent.color.r] * deepNormal.alpha * alpha )\"\n  DVPshader.green \"DVPshader.green + ( spec * \\[value parent.color.g] * deepNormal.alpha * alpha )\"\n  DVPshader.blue \"DVPshader.blue + ( spec * \\[value parent.color.b] * deepNormal.alpha * alpha )\"\n  name DeepExpression62\n  label \"DVP_Shader color n luma\"\n  xpos -39\n  ypos 2551\n  addUserKnob {20 User}\n  addUserKnob {7 spec}\n  spec {{\"clamp(\\[metadata sSpecular]+0) * 0.99\"}}\n  addUserKnob {7 gloss}\n  gloss {{\"clamp(\\[metadata sGlossiness]+0)\"}}\n }\npush $N5200f400\n Switch {\n  inputs 3\n  which {{\"\\[metadata DVPshader]+0\"}}\n  name Switch5\n  xpos -268\n  ypos 2829\n }\n ModifyMetaData {\n  metadata {\n   {set sStatus 1}\n  }\n  name chShader\n  xpos -268\n  ypos 2909\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 {-DVPshader.red -DVPshader.green -DVPshader.blue DVPshader.alpha}\n  deepNormal.alpha 0\n  DVPshader.alpha 0\n  name DeepExpression33\n  xpos -268\n  ypos 2989\n }\n Dot {\n  name Dot13\n  xpos -234\n  ypos 3350\n }\nset N5200e000 [stack 0]\n Output {\n  name Output1\n  xpos -268\n  ypos 3653\n }\npush $N5200e000\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"deepRawColor.red * red + DVPshader.red\"\n  rgba.green \"deepRawColor.green * green + DVPshader.green\"\n  rgba.blue \"deepRawColor.blue * blue + DVPshader.blue\"\n  name DeepExpression32\n  xpos 2779\n  ypos 3347\n }\npush $N52112000\n Dot {\n  name Dot1\n  xpos 2967\n  ypos -463\n }\n DeepExpression {\n  chans1 none\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  name DeepExpression1\n  xpos 2933\n  ypos 3129\n }\n Switch {\n  inputs 2\n  which {{\"parent.display_ptc_type == 1 ? 0 : parent.display_ptc_type == 2 ? 1 : 0\"}}\n  name Switch3\n  xpos 2933\n  ypos 3347\n }\n Group {\n  name DeepPositionToImage3\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 2933\n  ypos 3427\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N5200c400 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   selected true\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N5200c400\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 265\n  }\n end_group\n PositionToPoints2 {\n  display textured\n  selectable false\n  render_mode textured\n  cast_shadow false\n  receive_shadow false\n  P_channel deepPosition\n  detail 0.1\n  name deepPositionToPoints\n  xpos 2933\n  ypos 3533\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\n Axis {\n  inputs 0\n  name LGT\n  xpos -994\n  ypos -176\n }\nset N51fca400 [stack 0]\n Group {\n  inputs 0\n  name spot\n  xpos -744\n  ypos -316\n }\n  Cylinder {\n   inputs 0\n   display wireframe\n   selectable false\n   render_mode off\n   cast_shadow false\n   receive_shadow false\n   rows 1\n   columns 8\n   close_bottom true\n   translate {0 1 0}\n   rotate {-90 0 0}\n   pivot {0 -1 0}\n   name Cylinder1\n   xpos 215\n   ypos 295\n  }\n  EditGeo {\n   selectable false\n   render_mode off\n   keys {{0 1 2 3 4 5 6 7 8}\n     }\n   values {{0.001 0.001 -0.001 0.001 -0.9988563061 0.001 -0.7062979937 -0.7062979937 0.001 -0.9988563657 8.035581089e-08 -0.001 -0.7062979937 0.7062980533 -0.001 0.001 0.9988564253 -0.001 0.7062981725 0.7062979341 -0.001 0.9988564253 0.001 -0.001 0.7062978148 -0.7062982321 0.001}\n     }\n   scaling {0 0 0}\n   name EditGeo2\n   xpos 215\n   ypos 375\n  }\n  Dot {\n   name Dot1\n   xpos 249\n   ypos 430\n  }\nset N51fc9800 [stack 0]\n  TransformGeo {\n   display wireframe\n   selectable false\n   render_mode off\n   scaling {{\"radians( parent.parent.cone_angle + parent.parent.cone_penumbra_angle )\"} {scaling.x} 1}\n   name TransformGeo1\n   xpos 332\n   ypos 491\n  }\nset N51fc9400 [stack 0]\npush $N51fc9800\n  TransformGeo {\n   display wireframe\n   selectable false\n   render_mode off\n   scaling {{\"radians( parent.parent.cone_angle )\"} {scaling.x} 1}\n   name TransformGeo2\n   xpos 215\n   ypos 489\n  }\nset N51fc9000 [stack 0]\n  MergeGeo {\n   inputs 2\n   name MergeGeo1\n   xpos 332\n   ypos 571\n  }\npush $N51fc9400\npush $N51fc9000\n  Dot {\n   inputs 0\n   name Dot2\n   xpos 172\n   ypos 570\n  }\n  Switch {\n   inputs 4\n   which {{\"parent.parent.display_spot == 0 ? 0 : parent.parent.display_spot == 1 ? 1 : parent.parent.display_spot == 2 ? 2 : 3\"}}\n   name Switch1\n   xpos 215\n   ypos 642\n  }\n  Output {\n   name Output1\n   xpos 215\n   ypos 722\n  }\n end_group\n Group {\n  inputs 0\n  name directional\n  xpos -848\n  ypos -315\n }\n  Cylinder {\n   inputs 0\n   selectable false\n   rows 1\n   columns 4\n   translate {0 1 0}\n   rotate {-90 0 0}\n   scaling {0.03 1 0.03}\n   uniform_scale 0.5\n   pivot {0 -1 0}\n   name Cylinder2\n   xpos 215\n   ypos 418\n  }\nset N51f57800 [stack 0]\n  TransformGeo {\n   selectable false\n   translate {0.05 0.05 0}\n   name TransformGeo4\n   xpos 537\n   ypos 534\n  }\npush $N51f57800\n  TransformGeo {\n   selectable false\n   translate {-0.05 0.05 0}\n   name TransformGeo3\n   xpos 430\n   ypos 535\n  }\npush $N51f57800\n  TransformGeo {\n   selectable false\n   translate {-0.05 -0.05 0}\n   name TransformGeo2\n   xpos 325\n   ypos 536\n  }\npush $N51f57800\n  TransformGeo {\n   selectable false\n   translate {0.05 -0.05 0}\n   name TransformGeo1\n   xpos 215\n   ypos 538\n  }\n  MergeGeo {\n   inputs 4\n   display wireframe\n   selectable false\n   name MergeGeo1\n   xpos 215\n   ypos 618\n  }\n  Dot {\n   inputs 0\n   name Dot1\n   xpos 166\n   ypos 647\n  }\n  Switch {\n   inputs 2\n   which {{\"parent.parent.display_light == 0 ? 0 : 1\"}}\n   name Switch1\n   xpos 215\n   ypos 698\n  }\n  Output {\n   name Output1\n   xpos 215\n   ypos 806\n  }\n end_group\n Switch {\n  inputs 2\n  which {{parent.light_type}}\n  name Switch2\n  xpos -848\n  ypos -235\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  uniform_scale {{parent.uniform_scale}}\n  name showupTG\n  gl_color 0x7f7f7fff\n  xpos -848\n  ypos -155\n }\n ColorMatrix {\n  inputs 0\n  channels none\n  matrix {\n      {{vecAS.matrix.0/vecS.x} {vecAS.matrix.1/vecS.y} {vecAS.matrix.2/vecS.z}}\n      {{vecAS.matrix.3/vecS.x} {vecAS.matrix.4/vecS.y} {vecAS.matrix.5/vecS.z}}\n      {{vecAS.matrix.6/vecS.x} {vecAS.matrix.7/vecS.y} {vecAS.matrix.8/vecS.z}}\n    }\n  name vecRS\n  xpos -924\n  ypos 672\n  addUserKnob {20 User}\n  addUserKnob {13 vecS}\n  vecS {{\"sqrt( pow2(vecAS.matrix.0) + pow2(vecAS.matrix.3) + pow2(vecAS.matrix.6) )\"} {\"sqrt( pow2(vecAS.matrix.1) + pow2(vecAS.matrix.4) + pow2(vecAS.matrix.7) )\"} {\"sqrt( pow2(vecAS.matrix.2) + pow2(vecAS.matrix.5) + pow2(vecAS.matrix.8) )\"}}\n }\n ColorMatrix {\n  inputs 0\n  channels none\n  matrix {\n      {{(getCam.cmr01.x+LGT.world_matrix.0)/2} {(getCam.cmr01.y+LGT.world_matrix.1)/2} {(getCam.cmr01.z+LGT.world_matrix.2)/2}}\n      {{(getCam.cmr02.x+LGT.world_matrix.4)/2} {(getCam.cmr02.y+LGT.world_matrix.5)/2} {(getCam.cmr02.z+LGT.world_matrix.6)/2}}\n      {{(getCam.cmr03.x+LGT.world_matrix.8)/2} {(getCam.cmr03.y+LGT.world_matrix.9)/2} {(getCam.cmr03.z+LGT.world_matrix.10)/2}}\n    }\n  name vecAS\n  xpos -1036\n  ypos 671\n }\npush $N51fca400\n Axis {\n  useMatrix true\n  matrix {\n      {{getCam.cmr01.x} {getCam.cmr01.y} {getCam.cmr01.z} 0}\n      {{getCam.cmr02.x} {getCam.cmr02.y} {getCam.cmr02.z} 0}\n      {{getCam.cmr03.x} {getCam.cmr03.y} {getCam.cmr03.z} 0}\n      {0 0 0 1}\n    }\n  name CAM\n  xpos -994\n  ypos 207\n }\n Axis {\n  useMatrix true\n  matrix {\n      {{invMTXCam.invMatrix.0} {invMTXCam.invMatrix.1} {invMTXCam.invMatrix.2} 0}\n      {{invMTXCam.invMatrix.3} {invMTXCam.invMatrix.4} {invMTXCam.invMatrix.5} 0}\n      {{invMTXCam.invMatrix.6} {invMTXCam.invMatrix.7} {invMTXCam.invMatrix.8} 0}\n      {0 0 0 1}\n    }\n  name CAM_inv\n  xpos -994\n  ypos 298\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{-parent.rotate} {-parent.rotate} {-parent.rotate}}\n  name LGT_inv\n  xpos -1089\n  ypos -173\n }\n Group {\n  inputs 0\n  name invMTX\n  tile_color 0x337f4cff\n  xpos -1108\n  ypos 406\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path CAM_inv.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n Group {\n  inputs 0\n  name invMTXSpec\n  tile_color 0x337f4cff\n  xpos -1144\n  ypos 678\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path vecRS.matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {3 4 5}\n       {6 7 8}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n Matrix {\n  inputs 0\n  matrix {\n      {3.08022809 -1.537308455 -0.5429191589}\n      {-0.9212164879 1.875966549 0.04525000602}\n      {0.05288143829 -0.2040073872 1.151125908}\n    }\n  name cs_inv\n  xpos 2318\n  ypos 2187\n }\n Matrix {\n  inputs 0\n  matrix {\n      {0.4339115 0.37622687 0.1898616}\n      {0.21264936 0.71516907 0.07218152}\n      {0.01775321 0.10946182 0.87278491}\n    }\n  name cs\n  xpos 2317\n  ypos 2099\n }\n Group {\n  inputs 0\n  name invMTXCam\n  tile_color 0x337f4cff\n  xpos -1108\n  ypos 320\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path CAM.matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n ColorMatrix {\n  inputs 0\n  channels none\n  matrix {\n      {{\"invMTX.invMatrix.0 / vecS.x\"} {\"invMTX.invMatrix.1 / vecS.y\"} {\"invMTX.invMatrix.2 / vecS.z\"}}\n      {{\"invMTX.invMatrix.3 / vecS.x\"} {\"invMTX.invMatrix.4 / vecS.y\"} {\"invMTX.invMatrix.5 / vecS.z\"}}\n      {{\"invMTX.invMatrix.6 / vecS.x\"} {\"invMTX.invMatrix.7 / vecS.y\"} {\"invMTX.invMatrix.8 / vecS.z\"}}\n    }\n  name vecRT\n  xpos -1000\n  ypos 400\n  addUserKnob {20 User}\n  addUserKnob {13 vecS}\n  vecS {{\"sqrt( pow2(invMTX.invMatrix.0) + pow2(invMTX.invMatrix.3) + pow2(invMTX.invMatrix.6) )\"} {\"sqrt( pow2(invMTX.invMatrix.1) + pow2(invMTX.invMatrix.4) + pow2(invMTX.invMatrix.7) )\"} {\"sqrt( pow2(invMTX.invMatrix.2) + pow2(invMTX.invMatrix.5) + pow2(invMTX.invMatrix.8) )\"}}\n }\npush $N52112400\n NoOp {\n  name getCam\n  xpos -850\n  ypos -466\n  addUserKnob {20 User}\n  addUserKnob {13 cmr01}\n  cmr01 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 2 2]+0\"}}\n  addUserKnob {13 cmr02}\n  cmr02 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 4 4]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 5 5]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 6 6]+0\"}}\n  addUserKnob {13 cmr03}\n  cmr03 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 8 8]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 9 9]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 10 10]+0\"}}\n }\n NoOp {\n  inputs 0\n  name globalTCL\n  xpos -850\n  ypos -398\n  addUserKnob {20 User}\n  addUserKnob {1 nodeNameLGT}\n  nodeNameLGT LGT_inv.world_matrix\n  addUserKnob {1 lgtPX}\n  lgtPX \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].0 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].1 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].2\"\n  addUserKnob {1 lgtPY}\n  lgtPY \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].4 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].5 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].6\"\n  addUserKnob {1 lgtPZ}\n  lgtPZ \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].8 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].9 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].10\"\n  addUserKnob {1 lgtNZ}\n  lgtNZ \"deepNormal.red*\\[value nodeNameLGT].8 + deepNormal.green*\\[value nodeNameLGT].9 + deepNormal.blue*\\[value nodeNameLGT].10\"\n  addUserKnob {26 \"\"}\n  addUserKnob {7 unit}\n  unit {{\"parent.world_unit==4? 1000000 : pow( 10 , parent.world_unit )\"}}\n  addUserKnob {7 ptSize}\n  ptSize {{1/(parent.intensity*unit)}}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 iBias}\n  iBias 5\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nshareKnobs = \\['exp_in','exp_out','world_unit']\\nspKnobs = \\['cone_angle','cone_penumbra_angle']\\n\\nif thisGRP\\['light_type'].value() == 'directional' :\\n    for knob in shareKnobs :\\n        thisGRP\\[knob].setVisible(False)\\n    for knob in spKnobs :\\n        thisGRP\\[knob].setVisible(False)\\n    thisGRP\\['display_spot'].setVisible(False)\\n    thisGRP\\['display_light'].setVisible(True)\\n\\nelif thisGRP\\['light_type'].value() == 'spot' :\\n    for knob in shareKnobs :\\n        thisGRP\\[knob].setVisible(True)\\n    for knob in spKnobs :\\n        thisGRP\\[knob].setVisible(True)\\n    thisGRP\\['display_spot'].setVisible(True)\\n    thisGRP\\['display_light'].setVisible(False)\\n\"\n  xpos -986\n  ypos -758\n  addUserKnob {20 User}\n  addUserKnob {4 light_type l \"light type\" M {directional spot \"\" \"\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPrelightPT.gizmo",
    "content": "Group {\n name DVPrelightPT\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x7f65ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {26 remarks l * T \"specular doesn't work on this node.\"}\n addUserKnob {26 title_light l \"<b><font color=#05B590>light</font></b>\"}\n addUserKnob {18 color t \"This control the color and brightness of the light, but not the lighting area.\\n\\nSo use this value to balance with color's brightness to get a proper result.\"}\n color {1 1 1}\n addUserKnob {7 intensity t \"This control the lighting area and brightness.\\n\\nSo use this value to balance with color's brightness to get a proper result.\" R 0 50}\n intensity 1\n addUserKnob {4 world_unit l \"world unit\" t \"This unit will only effective on the lighting area by intensity value. If the scene has larger scale, you can choose higher unit. It all reflect to real unit convert.\\n\\n1km == 1000m\\n1m == 10dm\\n1dm == 10cm\\n1cm == 10mm\" M {\"millimeter (mm)\" \"centimeter (cm)\" \"decimeter (dm)\" \"meter (m)\" \"kilometer (km)\" \"\"}}\n world_unit \"centimeter (cm)\"\n addUserKnob {7 exp_in l \"falloff in\" t \"Ease out falloff from the core by exponential math.\" R 0.01 10}\n exp_in 1\n addUserKnob {7 exp_out l out t \"Ease in falloff from the edge by exponential math.\" -STARTLINE R 0.01 10}\n exp_out 1\n addUserKnob {26 title_transform l \"<b><font color=#05B590>transform</font></b>\"}\n addUserKnob {4 display_light l display M {off \"show light control\" \"\" \"\"}}\n display_light \"show light control\"\n addUserKnob {41 file_menu l @FolderIcon T LGT.file_menu}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T LGT.snap_menu}\n addUserKnob {41 transform T showupTG.transform}\n addUserKnob {41 xform_order l \"transform order\" T LGT.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T LGT.rot_order}\n addUserKnob {41 translate T LGT.translate}\n addUserKnob {41 rotate T LGT.rotate}\n addUserKnob {7 uniform_scale l \"uniform scale\" R 0.01 10}\n uniform_scale 1\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with light applied (slow)\" \"\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" T deepPositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" T deepPositionToPoints.pointSize}\n addUserKnob {20 endGroup_1_1 l endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -6798\n  ypos -553\n  bdwidth 3294\n  bdheight 1937\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x191919ff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -6802\n  ypos -864\n  bdwidth 2912\n  bdheight 192\n }\n Input {\n  inputs 0\n  name deep\n  xpos -268\n  ypos -862\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\nadd_layer {DVPshader DVPshader.red DVPshader.green DVPshader.blue DVPshader.alpha}\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 deepPosition\n  chans1 deepNormal\n  chans2 DVPshader\n  chans3 deepRawColor\n  name spacer1\n  selected true\n  xpos -268\n  ypos -782\n }\n Dot {\n  name Dot11\n  xpos -234\n  ypos -463\n }\nset N4c88ec00 [stack 0]\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"\\[value globalTCL.pt_nstack]\"\n  name DeepExpression42\n  xpos -268\n  ypos -232\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_n\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression65\n  xpos -268\n  ypos -152\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_nw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression66\n  xpos -268\n  ypos -72\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_w\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression67\n  xpos -268\n  ypos 8\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_sw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression68\n  xpos -268\n  ypos 88\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_s\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression69\n  xpos -268\n  ypos 168\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_se\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression70\n  xpos -268\n  ypos 248\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_e\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression71\n  xpos -268\n  ypos 328\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_ne\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression72\n  xpos -268\n  ypos 584\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_n\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression73\n  xpos -268\n  ypos 664\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_nw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression74\n  xpos -268\n  ypos 744\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_w\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression75\n  xpos -268\n  ypos 824\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_sw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression76\n  xpos -268\n  ypos 904\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_s\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression77\n  xpos -268\n  ypos 984\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_se\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression78\n  xpos -268\n  ypos 1064\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_e\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression79\n  xpos -268\n  ypos 1144\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t_ne\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression80\n  xpos -268\n  ypos 1384\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_n\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression81\n  xpos -268\n  ypos 1464\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_nw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression82\n  xpos -268\n  ypos 1544\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_w\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression83\n  xpos -268\n  ypos 1624\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_sw\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression84\n  xpos -268\n  ypos 1704\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_s\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression85\n  xpos -268\n  ypos 1784\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_se\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression86\n  xpos -268\n  ypos 1864\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_e\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression87\n  xpos -268\n  ypos 1944\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d_ne\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression88\n  xpos -268\n  ypos 2206\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_d\n }\n DeepExpression {\n  temp_name0 zpos\n  temp_expr0 \"( deepPosition.red - \\[value \\[value nname].world_matrix.3] ) * \\[value \\[value nname]_inv.world_matrix.8] + ( deepPosition.green - \\[value \\[value nname].world_matrix.7] ) * \\[value \\[value nname]_inv.world_matrix.9] + ( deepPosition.blue - \\[value \\[value nname].world_matrix.11] ) * \\[value \\[value nname]_inv.world_matrix.10]\"\n  temp_name1 znor\n  temp_expr1 \"deepNormal.red * \\[value \\[value nname]_inv.world_matrix.8] + deepNormal.green * \\[value \\[value nname]_inv.world_matrix.9] + deepNormal.blue * \\[value \\[value nname]_inv.world_matrix.10]\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"max( deepNormal.alpha, \\[value globalTCL.pt_nstack] )\"\n  name DeepExpression89\n  xpos -268\n  ypos 2286\n  addUserKnob {20 User}\n  addUserKnob {1 nname}\n  nname pt_t\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"clamp( (1-deepNormal.alpha) * \\[value globalTCL.sphereLinear] )\"\n  name DeepExpression30\n  label linear\n  xpos -268\n  ypos 2863\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"1- pow( 1-pow( deepNormal.alpha , \\[value expO] ) , \\[value expI] )\"\n  name DeepExpression35\n  label exponential\n  xpos -268\n  ypos 3006\n  addUserKnob {20 User}\n  addUserKnob {7 expI}\n  expI {{\"parent.exp_in < 0.01 ? 0.01 : parent.exp_in\"}}\n  addUserKnob {7 expO}\n  expO {{\"parent.exp_out < 0.01 ? 0.01 : parent.exp_out\"}}\n }\n Dot {\n  name Dot4\n  xpos -234\n  ypos 3344\n }\nset N514cb000 [stack 0]\n Dot {\n  name Dot8\n  xpos 343\n  ypos 3344\n }\n DeepExpression {\n  temp_name0 celShade\n  temp_expr0 \"clamp(deepNormal.alpha) ** \\[value toonRatio] * (\\[value toonLayers]+1)\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"( (int(celShade)-1)/\\[value toonLayers]) + (clamp( (celShade%1) * (1/(1-clamp(\\[value toonSharpness]))) ) * (1/\\[value toonLayers]) )\"\n  name DeepExpression40\n  xpos 309\n  ypos 3517\n  addUserKnob {20 User}\n  addUserKnob {3 toonLayers}\n  toonLayers {{\"\\[metadata sLayers]+0 <= 1 ? 1 : \\[metadata sLayers]+0\"}}\n  addUserKnob {7 toonSharpness}\n  toonSharpness {{\"\\[metadata sSharpness]+0\"}}\n  addUserKnob {7 toonRatio}\n  toonRatio {{\"\\[metadata sRatio]+0\"}}\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha clamp(deepNormal.alpha)\n  name DeepExpression49\n  label clamp\n  xpos 309\n  ypos 3642\n }\n Dot {\n  name Dot10\n  xpos 343\n  ypos 3909\n }\nset N514ca000 [stack 0]\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r * cs.matrix.0 + g * cs.matrix.1 + b * cs.matrix.2\"\n  rgba.green \"lr * cs.matrix.3 + lg * cs.matrix.4 + lb * cs.matrix.5\"\n  rgba.blue \"lr * cs.matrix.6 + lg * cs.matrix.7 + lb * cs.matrix.8\"\n  name DeepExpression59\n  label color\n  xpos 2193\n  ypos 4218\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r * cs_inv.matrix.0 + g * cs_inv.matrix.1 + b * cs_inv.matrix.2\"\n  rgba.green \"r * cs_inv.matrix.3 + g * cs_inv.matrix.4 + b * cs_inv.matrix.5\"\n  rgba.blue \"r * cs_inv.matrix.6 + g * cs_inv.matrix.7 + b * cs_inv.matrix.8\"\n  name DeepExpression60\n  xpos 2193\n  ypos 4310\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression53\n  label screen\n  xpos 2058\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red r+lr\n  rgba.green g+lg\n  rgba.blue b+lb\n  name DeepExpression61\n  label plus\n  xpos 1913\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r<0.5 ? r*lr : lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"g<0.5 ? g*lg : lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"b<0.5 ? b*lb : lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression52\n  label overlay\n  xpos 1785\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red r*lr\n  rgba.green g*lg\n  rgba.blue b*lb\n  name DeepExpression51\n  label multiply\n  xpos 1647\n  ypos 4229\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"min( r, lr )\"\n  rgba.green \"min( g, lg )\"\n  rgba.blue \"min( b, lb )\"\n  name DeepExpression37\n  label min\n  xpos 1511\n  ypos 4228\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max( r, lr )\"\n  rgba.green \"max( g, lg )\"\n  rgba.blue \"max( b, lb )\"\n  name DeepExpression29\n  label max\n  xpos 1402\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? ( r<(2*lr) ? r : (2*lr) ) : ( r>(2*(lr-0.5)) ? r : (2*(lr-0.5)) )\\n\"\n  rgba.green \"lg<0.5 ? ( g<(2*lg) ? g : (2*lg) ) : ( g>(2*(lg-0.5)) ? g : (2*(lg-0.5)) )\"\n  rgba.blue \"lb<0.5 ? ( b<(2*lb) ? b : (2*lb) ) : ( b>(2*(lb-0.5)) ? b : (2*(lb-0.5)) )\"\n  name DeepExpression56\n  label \"pin light\"\n  xpos 1301\n  ypos 4228\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? ( (2*lr)==0 ? (2*lr) : (1-(1-r)/(2*lr))>0 ? (1-(1-r)/(2*lr)) : 0 ) : ( (2*(lr-0.5))==1 ? (2*(lr-0.5)) : (r/(1-(2*(lr-0.5))))<1 ? (r/(1-(2*(lr-0.5)))) : 1 )\"\n  rgba.green \"lg<0.5 ? ( (2*lg)==0 ? (2*lg) : (1-(1-g)/(2*lg))>0 ? (1-(1-g)/(2*lg)) : 0 ) : ( (2*(lg-0.5))==1 ? (2*(lg-0.5)) : (g/(1-(2*(lg-0.5))))<1 ? (g/(1-(2*(lg-0.5)))) : 1 )\"\n  rgba.blue \"lb<0.5 ? ( (2*lb)==0 ? (2*lb) : (1-(1-b)/(2*lb))>0 ? (1-(1-b)/(2*lb)) : 0 ) : ( (2*(lb-0.5))==1 ? (2*(lb-0.5)) : (b/(1-(2*(lb-0.5))))<1 ? (b/(1-(2*(lb-0.5)))) : 1 )\"\n  name DeepExpression55\n  label \"vivid light\"\n  xpos 1206\n  ypos 4232\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"lr<0.5 ? r*lr : lr<1 && r<1 ? (r+lr-r*lr) : lr<r ? r : lr\"\n  rgba.green \"lg<0.5 ? g*lg : lg<1 && g<1 ? (g+lg-g*lg) : lg<g ? g : lg\"\n  rgba.blue \"lb<0.5 ? b*lb : lb<1 && b<1 ? (b+lb-b*lb) : lb<b ? b : lb\"\n  name DeepExpression36\n  label \"hard light\"\n  xpos 1085\n  ypos 4229\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r*lr<1 ? r*(2*lr+(r*(1-2*lr*r))) : r*(2*lr+(r*(1-lr*r)))\"\n  rgba.green \"g*lg<1 ? g*(2*lg+(g*(1-2*lg*g))) : g*(2*lg+(g*(1-lg*g)))\"\n  rgba.blue \"b*lb<1 ? b*(2*lb+(b*(1-2*lb*b))) : b*(2*lb+(b*(1-lb*b)))\"\n  name DeepExpression54\n  label \"soft light\"\n  xpos 978\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"(r+lr) <=0 ? 0 : (2*r*lr)/(r+lr)\"\n  rgba.green \"(g+lg) <=0 ? 0 : (2*g*lg)/(g+lg)\"\n  rgba.blue \"(b+lb) <=0 ? 0 : (2*b*lb)/(b+lb)\"\n  name DeepExpression34\n  label geometric\n  xpos 870\n  ypos 4227\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red lr+r-(2*lr*r)\n  rgba.green lg+g-(2*lg*g)\n  rgba.blue lb+b-(2*lb*b)\n  name DeepExpression41\n  label exclusion\n  xpos 773\n  ypos 4234\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red abs(lr-r)\n  rgba.green abs(lg-g)\n  rgba.blue abs(lb-b)\n  name DeepExpression28\n  label difference\n  xpos 673\n  ypos 4230\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max(r+lr-1, 0)\"\n  rgba.green \"max(g+lg-1, 0)\"\n  rgba.blue \"max(b+lb-1, 0)\"\n  name DeepExpression39\n  label \"linear burn\"\n  xpos 549\n  ypos 4234\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max( 0 , 1-(1-r+1)/(lr+1) )\"\n  rgba.green \"max( 0 , 1-(1-g+1)/(lg+1) )\"\n  rgba.blue \"max( 0 , 1-(1-b+1)/(lb+1) )\"\n  name DeepExpression50\n  label \"color burn\"\n  xpos 437\n  ypos 4232\n }\npush $N514ca000\n DeepExpression {\n  temp_name0 lr\n  temp_expr0 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.r]\"\n  temp_name1 lg\n  temp_expr1 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.g]\"\n  temp_name2 lb\n  temp_expr2 \"deepNormal.alpha * \\[value parent.intensity] * \\[value parent.color.b]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red (r+lr)/2\n  rgba.green (g+lg)/2\n  rgba.blue (b+lb)/2\n  name DeepExpression38\n  label average\n  xpos 309\n  ypos 4234\n }\n Switch {\n  inputs 17\n  which {{\"\\[metadata sStatus]+0 ? \\[metadata sStyle]+0 : 10\"}}\n  name Switch4\n  xpos 309\n  ypos 4472\n }\npush $N514cb000\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue none}\n  rgba.red \"red + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.r] )\"\n  rgba.green \"green + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.g] )\"\n  rgba.blue \"blue + clamp( deepNormal.alpha ) * ( \\[value parent.intensity] * \\[value globalTCL.iBias] ) * \\[value parent.color.b] )\"\n  name DeepExpression31\n  xpos -268\n  ypos 3593\n }\n Dot {\n  name Dot9\n  xpos -234\n  ypos 4365\n }\nset N2ce58800 [stack 0]\n Dot {\n  name Dot3\n  xpos 6\n  ypos 4365\n }\npush $N2ce58800\n Switch {\n  inputs 3\n  which {{\"\\[metadata DVPshader]+0\"}}\n  name Switch5\n  xpos -268\n  ypos 4576\n }\n ModifyMetaData {\n  metadata {\n   {set sStatus 1}\n  }\n  name chShader\n  xpos -268\n  ypos 4656\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 {-DVPshader.red -DVPshader.green -DVPshader.blue DVPshader.alpha}\n  deepNormal.alpha 0\n  DVPshader.alpha 0\n  name DeepExpression33\n  xpos -268\n  ypos 4736\n }\n Dot {\n  name Dot13\n  xpos -234\n  ypos 5097\n }\nset N2cdf7000 [stack 0]\n Output {\n  name Output1\n  xpos -268\n  ypos 5400\n }\npush $N2cdf7000\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"deepRawColor.red * red + DVPshader.red\"\n  rgba.green \"deepRawColor.green * green + DVPshader.green\"\n  rgba.blue \"deepRawColor.blue * blue + DVPshader.blue\"\n  name DeepExpression32\n  xpos 2889\n  ypos 5094\n }\npush $N4c88ec00\n Dot {\n  name Dot1\n  xpos 3077\n  ypos -463\n }\n DeepExpression {\n  chans1 none\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  name DeepExpression1\n  xpos 3043\n  ypos 4875\n }\n Switch {\n  inputs 2\n  which {{\"parent.display_ptc_type == 1 ? 0 : parent.display_ptc_type == 2 ? 1 : 0\"}}\n  name Switch3\n  xpos 3043\n  ypos 5094\n }\n Group {\n  name DeepPositionToImage3\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 3043\n  ypos 5174\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N2cdf5400 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N2cdf5400\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 265\n  }\n end_group\n PositionToPoints2 {\n  display textured\n  selectable false\n  render_mode textured\n  cast_shadow false\n  receive_shadow false\n  P_channel deepPosition\n  detail 0.1\n  name deepPositionToPoints\n  xpos 3043\n  ypos 5280\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{parent.translate} {parent.translate} {parent.translate}}\n  name translateOnly\n  xpos -6689\n  ypos -53\n }\n Dot {\n  name Dot2\n  xpos -6665\n  ypos 93\n }\nset N2cdaf000 [stack 0]\n Axis {\n  display off\n  selectable false\n  rotate {0 180 0}\n  name pt_s\n  xpos -6209\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 135 0}\n  name pt_sw\n  xpos -6329\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 -45 0}\n  name pt_ne\n  xpos -5849\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 90 0}\n  name pt_t_w\n  xpos -5489\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 135 0}\n  name pt_t_sw\n  xpos -5369\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 180 0}\n  name pt_t_s\n  xpos -5249\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 -135 0}\n  name pt_t_se\n  xpos -5129\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 -90 0}\n  name pt_t_e\n  xpos -5009\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 -45 0}\n  name pt_t_ne\n  xpos -4889\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 45 0}\n  name pt_d_nw\n  xpos -4649\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 90 0}\n  name pt_d_w\n  xpos -4529\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 135 0}\n  name pt_d_sw\n  xpos -4409\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 -135 0}\n  name pt_d_se\n  xpos -4169\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 -90 0}\n  name pt_d_e\n  xpos -4049\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {90 0 0}\n  name pt_t\n  xpos -3689\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 45 0}\n  name pt_t_nw\n  xpos -5609\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 180 0}\n  name pt_d_s\n  xpos -4289\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 90 0}\n  name pt_w\n  xpos -6449\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 -135 0}\n  name pt_se\n  xpos -6089\n  ypos 1050\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_w_inv\n  xpos -6449\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_w\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_nw_inv\n  xpos -6569\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_nw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_s_inv\n  xpos -6209\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_s\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_se_inv\n  xpos -6089\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_se\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_e_inv\n  xpos -5969\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_e\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_ne_inv\n  xpos -5849\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_ne\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_n_inv\n  xpos -5729\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_n\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_w_inv\n  xpos -5489\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_w\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_se_inv\n  xpos -5129\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_se\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_ne_inv\n  xpos -4889\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_ne\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_n_inv\n  xpos -4769\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_n\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_nw_inv\n  xpos -4649\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_nw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_w_inv\n  xpos -4529\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_w\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_sw_inv\n  xpos -4409\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_sw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_s_inv\n  xpos -4289\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_s\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_se_inv\n  xpos -4169\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_se\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_ne_inv\n  xpos -3929\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_ne\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_inv\n  xpos -3809\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-90 0 0}\n  name pt_d\n  xpos -3809\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 -45 0}\n  name pt_d_ne\n  xpos -3929\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {45 0 0}\n  name pt_t_n\n  xpos -5729\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {-45 0 0}\n  name pt_d_n\n  xpos -4769\n  ypos 1050\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nshareKnobs = \\['exp_in','exp_out','world_unit']\\nspKnobs = \\['cone_angle','cone_penumbra_angle']\\n\\nif thisGRP\\['light_type'].value() == 'point' :\\n    for knob in shareKnobs :\\n        thisGRP\\[knob].setVisible(True)\\n    for knob in spKnobs :\\n        thisGRP\\[knob].setVisible(False)\\n    thisGRP\\['display_spot'].setVisible(False)\\n    thisGRP\\['display_light'].setVisible(True)\\n\\nelif thisGRP\\['light_type'].value() == 'directional' :\\n    for knob in shareKnobs :\\n        thisGRP\\[knob].setVisible(False)\\n    for knob in spKnobs :\\n        thisGRP\\[knob].setVisible(False)\\n    thisGRP\\['display_spot'].setVisible(False)\\n    thisGRP\\['display_light'].setVisible(True)\\n\\nelif thisGRP\\['light_type'].value() == 'spot' :\\n    for knob in shareKnobs :\\n        thisGRP\\[knob].setVisible(True)\\n    for knob in spKnobs :\\n        thisGRP\\[knob].setVisible(True)\\n    thisGRP\\['display_spot'].setVisible(True)\\n    thisGRP\\['display_light'].setVisible(False)\\n\"\n  xpos -6708\n  ypos -757\n  addUserKnob {20 User}\n  addUserKnob {4 light_type l \"light type\" M {point directional spot \"\"}}\n }\n Matrix {\n  inputs 0\n  matrix {\n      {0.4339115 0.37622687 0.1898616}\n      {0.21264936 0.71516907 0.07218152}\n      {0.01775321 0.10946182 0.87278491}\n    }\n  name cs\n  xpos 2315\n  ypos 4213\n }\n Matrix {\n  inputs 0\n  matrix {\n      {3.08022809 -1.537308455 -0.5429191589}\n      {-0.9212164879 1.875966549 0.04525000602}\n      {0.05288143829 -0.2040073872 1.151125908}\n    }\n  name cs_inv\n  xpos 2318\n  ypos 4300\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{-parent.rotate} {-parent.rotate} {-parent.rotate}}\n  name LGT_inv\n  xpos -6730\n  ypos -391\n }\n Axis {\n  inputs 0\n  name LGT\n  xpos -6633\n  ypos -391\n }\n Group {\n  inputs 0\n  name point\n  xpos -6499\n  ypos -464\n }\n  Sphere {\n   inputs 0\n   display wireframe\n   render_mode off\n   cast_shadow false\n   receive_shadow false\n   rows 10\n   columns 10\n   uniform_scale 0.1\n   name Sphere24\n   xpos -497\n   ypos -420\n  }\n  Output {\n   name Output1\n   xpos -497\n   ypos -320\n  }\n end_group\n TransformGeo {\n  inputs 2\n  selectable false\n  uniform_scale {{parent.uniform_scale}}\n  name showupTG\n  gl_color 0x7f7f7fff\n  xpos -6499\n  ypos -370\n }\npush $N4c88ec00\n NoOp {\n  name getCam\n  xpos -6271\n  ypos -466\n  addUserKnob {20 User}\n  addUserKnob {13 cmr01}\n  cmr01 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 2 2]+0\"}}\n  addUserKnob {13 cmr02}\n  cmr02 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 4 4]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 5 5]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 6 6]+0\"}}\n  addUserKnob {13 cmr03}\n  cmr03 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 8 8]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 9 9]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 10 10]+0\"}}\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_sw_inv\n  xpos -6329\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_sw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_nw_inv\n  xpos -5609\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_nw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_sw_inv\n  xpos -5369\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_sw\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_s_inv\n  xpos -5249\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_s\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_e_inv\n  xpos -5009\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t_e\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_d_e_inv\n  xpos -4049\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_d_e\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_t_inv\n  xpos -3689\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_t\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  name pt_n\n  xpos -6689\n  ypos 1050\n }\n Axis {\n  inputs 0\n  rot_order YXZ\n  rotate {{\"-\\[value mother].rotate.x\"} {\"-\\[value mother].rotate.y\"} 0}\n  name pt_n_inv\n  xpos -6689\n  ypos 1200\n  addUserKnob {20 User}\n  addUserKnob {1 mother}\n  mother pt_n\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 45 0}\n  name pt_nw\n  xpos -6569\n  ypos 1050\n }\npush $N2cdaf000\n Axis {\n  display off\n  selectable false\n  rotate {0 -90 0}\n  name pt_e\n  xpos -5969\n  ypos 1050\n }\n NoOp {\n  inputs 0\n  name globalTCL\n  xpos -6271\n  ypos -351\n  addUserKnob {20 User}\n  addUserKnob {1 nodeNameLGT}\n  nodeNameLGT LGT_inv.world_matrix\n  addUserKnob {1 lgtPX}\n  lgtPX \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].0 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].1 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].2\"\n  addUserKnob {1 lgtPY}\n  lgtPY \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].4 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].5 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].6\"\n  addUserKnob {1 lgtPZ}\n  lgtPZ \"(deepPosition.red-\\[value LGT.world_matrix.3])*\\[value nodeNameLGT].8 + (deepPosition.green-\\[value LGT.world_matrix.7])*\\[value nodeNameLGT].9 + (deepPosition.blue-\\[value LGT.world_matrix.11])*\\[value nodeNameLGT].10\"\n  addUserKnob {26 \"\"}\n  addUserKnob {1 sphereLinear}\n  sphereLinear \"1-clamp( sqrt( pow2(\\[value globalTCL.lgtPX]) + pow2(\\[value globalTCL.lgtPY]) + pow2(\\[value globalTCL.lgtPZ]) ) * \\[value globalTCL.ptSize] )\"\n  addUserKnob {26 \"\"}\n  addUserKnob {7 unit}\n  unit {{\"parent.world_unit==4? 1000000 : pow( 10 , parent.world_unit )\"}}\n  addUserKnob {7 ptSize}\n  ptSize {{1/(parent.intensity*unit)}}\n  addUserKnob {1 pt_nstack}\n  pt_nstack \"clamp( (1-znor) * -zpos * \\[value globalTCL.ptSize] )\"\n  addUserKnob {26 \"\"}\n  addUserKnob {7 iBias}\n  iBias 5\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisN = nuke.thisNode()\\nfor knob in thisN.knobs() :\\n    try :\\n        if knob.split('_')\\[1] == 'panelDropped' :\\n            thisN.removeKnob( thisN\\[knob] )\\n    except :\\n        pass\\n\"\n  xpos -6585\n  ypos -756\n  addUserKnob {20 User}\n  addUserKnob {18 color}\n  color {1 1 1}\n  addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVProjection.gizmo",
    "content": "Group {\n name DVProjection\n tile_color 0x597fff\n label \"<font color=cyan>2D image Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {41 transform_1 l transform T projCam.transform}\n addUserKnob {26 title_projcam l \"<b><font color=#5077FF>projection camera</font></b>\"}\n addUserKnob {41 freeze_frame l \"freeze frame\" t \"Check this box to enable framehold function for animated camera\" T menu01.freeze_frame}\n addUserKnob {3 proj_framehold l framehold t \"Input the frame number and freeze the projection camera's animation\" +DISABLED}\n proj_framehold 1001\n addUserKnob {22 setframe l \"set current frame\" t \"Automatically set frame frame into framehold knob.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['proj_framehold'].setValue( nuke.frame() )\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 proj_rot_order l \"rotation order\" t \"Rotate order of the projection camera\" T projCam.rot_order}\n addUserKnob {41 proj_translate l translate t \"Translation of the projection camera\" T projCam.translate}\n addUserKnob {41 proj_rotate l rotate t \"Rotation of the projection camera\" T projCam.rotate}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Selected any Camera nodes and this button will link the position to the projection camera.\" T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('globalTCL')\\ngoStore\\['fn'].execute()\\nroot = getLevel()\\nmainKnobs = \\['proj_world_matrix','proj_focal','proj_haperture','proj_win_translate','proj_win_scale','proj_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\trefreshCamUI( 'link' , thisGRP )\\n\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\['proj_useMatrix'].setValue(True)\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.world_matrix'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.focal'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.haperture'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.win_translate'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.win_scale'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.winroll'.format(CAMnode) )\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\['proj_useMatrix'].setValue(True)\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['winroll']) )\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('globalTCL')\\ngoStore\\['fn'].execute()\\nrefreshCamUI( 'remove' , thisGRP )\"}\n addUserKnob {20 grp_cam_settting l \"Camera setting\" n 1}\n grp_cam_settting 0\n addUserKnob {41 proj_focal l \"focal length\" T projCam.focal}\n addUserKnob {41 proj_haperture l \"horiz aperture\" T projCam.haperture}\n addUserKnob {41 proj_win_translate l \"window translate\" T projCam.win_translate}\n addUserKnob {41 proj_win_scale l \"window scale\" T projCam.win_scale}\n addUserKnob {41 proj_winroll l \"window roll\" T projCam.winroll}\n addUserKnob {41 proj_useMatrix l useMatrix +INVISIBLE T projCam.useMatrix}\n addUserKnob {41 proj_world_matrix l \"world matrix\" T projCam.matrix}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {78 proj_zrange l \"project z range\" t \"Projection falloff on the range of depth.\" n 4}\n proj_zrange {0 1 999999 1000000}\n addUserKnob {26 title_output l \"<b><font color=#5077FF>output settting</font></b>\"}\n addUserKnob {4 output t \"wrapped texture + source\\nwhich is a projected texture composite with the input.\\n\\nwrapped texture\\nwhich is only projected texture\\n\\nuv\\nwhich is a uv map, can use this with STMap in downstream.\" M {\"wrapped texture + source\" \"wrapped texture\" uv \"\" \"\"}}\n addUserKnob {20 grp_stmap l \"STMap setting\" n 1}\n grp_stmap 0\n addUserKnob {41 channels l \"apply channels\" t \"Select channel to apply this projected texture.\" T DeepVP_STMap.channels}\n addUserKnob {41 filter t \"pixel filter of projected texture.\" T DeepVP_STMap.filter}\n addUserKnob {6 black_outside l \"black outside\" +STARTLINE}\n black_outside true\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with project image</b>\\nThis can show the instant result of the projection. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with project image (slow)\" \"\" \"\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the density of the pointcloud.\" T deepPositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the point size of the pointcloud.\" T deepPositionToPoints.pointSize}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {41 keep_deepPosition l \"keep deepPosition\" T DVPToImage.keep_deepPosition}\n addUserKnob {41 keep_deepNormal l \"keep deepNormal\" T DVPToImage.keep_deepNormal}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 4.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 42\n  xpos -356\n  ypos -364\n  bdwidth 390\n  bdheight 201\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4f4f4fff\n  label bin\n  note_font_size 42\n  xpos -352\n  ypos -67\n  bdwidth 385\n  bdheight 274\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x35454cff\n  label DeepPositionToImage\n  note_font_size 42\n  xpos 34\n  ypos 688\n  bdwidth 1453\n  bdheight 350\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['freeze_frame'].getValue() == 1 :\\n    thisGRP\\['proj_framehold'].setEnabled(True)\\n    thisGRP\\['setframe'].setEnabled(True)\\nelse :\\n    thisGRP\\['proj_framehold'].setEnabled(False)\\n    thisGRP\\['setframe'].setEnabled(False)\\n\"\n  xpos -322\n  ypos -289\n  addUserKnob {20 User}\n  addUserKnob {6 freeze_frame l \"freeze frame\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  name projCam\n  gl_color 0xb2ffff\n  xpos 1813\n  ypos 2430\n }\n FrameHold {\n  first_frame {{parent.proj_framehold}}\n  name FrameHold\n  xpos 1803\n  ypos 2552\n  disable {{!parent.freeze_frame}}\n }\n Scene {\n  name Scene1\n  xpos 1813\n  ypos 2644\n }\npush 0\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 1803\n  ypos 2766\n }\n Input {\n  inputs 0\n  name deep\n  xpos 494\n  ypos -427\n }\n Dot {\n  name Dot1\n  xpos 528\n  ypos -154\n }\nset N54d80c00 [stack 0]\n Dot {\n  name Dot18\n  xpos 1340\n  ypos -154\n }\n Group {\n  name DVPToImage\n  tile_color 0x3d99ff\n  label \"<font color=cyan>2D image Output</font>\"\n  selected true\n  xpos 1306\n  ypos 835\n  addUserKnob {20 t_general l General}\n  addUserKnob {4 nuke_version l \"\" +STARTLINE +INVISIBLE M {10 11 \"\" \"\"}}\n  nuke_version 11\n  addUserKnob {6 keep_deepPosition l \"keep deepPosition\" +STARTLINE}\n  keep_deepPosition true\n  addUserKnob {6 keep_deepNormal l \"keep deepNormal\" +STARTLINE}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2020-12-13}\n  addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"for internal use\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  ModifyMetaData {\n   metadata {\n    {remove DVPmatte \"\"}\n   }\n   name DVPmatteMD\n   xpos 508\n   ypos 35\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 117\n  }\nset N54d27800 [stack 0]\n  Dot {\n   name Dot2\n   xpos 704\n   ypos 117\n  }\nset N54d27400 [stack 0]\n  Dot {\n   name Dot1\n   xpos 973\n   ypos 117\n  }\n  DeepExpression {\n   chans1 none\n   rgba.red deepNormal.red\n   rgba.green deepNormal.green\n   rgba.blue deepNormal.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression2\n   selected true\n   xpos 947\n   ypos 190\n  }\n  DeepToImage {\n   name DeepToImage3\n   xpos 939\n   ypos 367\n  }\n  Dot {\n   name Dot3\n   xpos 973\n   ypos 531\n  }\npush $N54d27400\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression1\n   selected true\n   xpos 670\n   ypos 191\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 670\n   ypos 367\n  }\n  Dot {\n   name Dot6\n   xpos 704\n   ypos 449\n  }\npush $N54d27800\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 191\n  }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n  Remove {\n   channels deepPosition\n   channels2 deepNormal\n   channels3 deepRawColor\n   name Remove1\n   xpos 508\n   ypos 351\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 445\n   disable {{!parent.keep_deepPosition}}\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepNormal\n   name ShuffleCopy2\n   xpos 508\n   ypos 527\n   disable {{!parent.keep_deepNormal}}\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 607\n  }\n end_group\n Dot {\n  name Dot20\n  xpos 1339\n  ypos 1827\n }\nset N54cdfc00 [stack 0]\n Dot {\n  name Dot5\n  xpos 1588\n  ypos 1827\n }\nset N54cdf800 [stack 0]\n Shuffle {\n  in deepPosition\n  name Shuffle2\n  xpos 1554\n  ypos 2645\n }\npush $N54d80c00\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"( deepPosition.red - \\[value projCam_data.world_matrix.3] ) * \\[value inverseMatrix_cam.invMatrix.0] + ( deepPosition.green - \\[value projCam_data.world_matrix.7] ) * \\[value inverseMatrix_cam.invMatrix.1] + ( deepPosition.blue - \\[value projCam_data.world_matrix.11] ) * \\[value inverseMatrix_cam.invMatrix.2]\"\n  rgba.green \"( ( deepPosition.red - \\[value projCam_data.world_matrix.3] ) * \\[value inverseMatrix_cam.invMatrix.3] + ( deepPosition.green - \\[value projCam_data.world_matrix.7] ) * \\[value inverseMatrix_cam.invMatrix.4] + ( deepPosition.blue - \\[value projCam_data.world_matrix.11] ) * \\[value inverseMatrix_cam.invMatrix.5] ) * \\[value root.format.pixel_aspect]\"\n  rgba.blue \"( deepPosition.red - \\[value projCam_data.world_matrix.3] ) * \\[value inverseMatrix_cam.invMatrix.6] + ( deepPosition.green - \\[value projCam_data.world_matrix.7] ) * \\[value inverseMatrix_cam.invMatrix.7] + ( deepPosition.blue - \\[value projCam_data.world_matrix.11] ) * \\[value inverseMatrix_cam.invMatrix.8]\"\n  name DeepExpression9\n  label \"proj cam origin\"\n  xpos 494\n  ypos 45\n }\n DeepExpression {\n  temp_name0 newR\n  temp_expr0 \"( red - ( \\[value globalTCL.camAspect] * abs( blue ) * \\[value projCWin_data.win_translate.u] / 2 ) ) * 1 / \\[value projCWin_data.win_scale.u]\"\n  temp_name1 newG\n  temp_expr1 \"( green - ( \\[value globalTCL.camAspect] * abs( blue ) * \\[value projCWin_data.win_translate.v] / 2 ) ) * 1 / \\[value projCWin_data.win_scale.v]\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"newR * \\[value projCWin_data.world_matrix.0] + newG *\\n\\[value projCWin_data.world_matrix.1]\"\n  rgba.green \"newR * \\[value projCWin_data.world_matrix.4] + newG *\\n\\[value projCWin_data.world_matrix.5]\"\n  name DeepExpression6\n  label \"revert cam window\"\n  xpos 494\n  ypos 132\n }\n Dot {\n  name Dot6\n  xpos 528\n  ypos 339\n }\nset N54cde800 [stack 0]\n DeepExpression {\n  chans0 alpha\n  chans1 none\n  rgba.alpha 1\n  name DeepExpression3\n  label \"soild alpha\"\n  xpos 494\n  ypos 497\n }\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"( r / ( abs(b) * \\[value globalTCL.camAspect] ) ) + 0.5\"\n  rgba.green \"( g / ( ( abs(b) * \\[value globalTCL.camAspect] ) / ( \\[value tex_dot.width] / \\[value tex_dot.height] ) ) ) + 0.5\"\n  rgba.blue 0\n  name DeepExpression10\n  label \"create uv\"\n  xpos 494\n  ypos 576\n }\n Group {\n  name DVPToImage1\n  tile_color 0x3d99ff\n  label \"<font color=cyan>2D image Output</font>\"\n  selected true\n  xpos 494\n  ypos 842\n  addUserKnob {20 t_general l General}\n  addUserKnob {4 nuke_version l \"\" +STARTLINE +INVISIBLE M {10 11 \"\" \"\"}}\n  nuke_version 11\n  addUserKnob {6 keep_deepPosition l \"keep deepPosition\" +STARTLINE}\n  keep_deepPosition {{parent.keep_deepPosition}}\n  addUserKnob {6 keep_deepNormal l \"keep deepNormal\" +STARTLINE}\n  keep_deepNormal {{parent.keep_deepNormal}}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2020-12-13}\n  addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"for internal use\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  ModifyMetaData {\n   metadata {\n    {remove DVPmatte \"\"}\n   }\n   name DVPmatteMD\n   xpos 508\n   ypos 35\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 117\n  }\nset N54cdd400 [stack 0]\n  Dot {\n   name Dot2\n   xpos 704\n   ypos 117\n  }\nset N54cdd000 [stack 0]\n  Dot {\n   name Dot1\n   xpos 973\n   ypos 117\n  }\n  DeepExpression {\n   chans1 none\n   rgba.red deepNormal.red\n   rgba.green deepNormal.green\n   rgba.blue deepNormal.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression2\n   xpos 939\n   ypos 191\n  }\n  DeepToImage {\n   name DeepToImage3\n   xpos 939\n   ypos 367\n  }\n  Dot {\n   name Dot3\n   xpos 973\n   ypos 531\n  }\npush $N54cdd000\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression1\n   xpos 670\n   ypos 191\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 670\n   ypos 367\n  }\n  Dot {\n   name Dot6\n   xpos 704\n   ypos 449\n  }\npush $N54cdd400\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 191\n  }\n  Remove {\n   channels deepPosition\n   channels2 deepNormal\n   channels3 deepRawColor\n   name Remove1\n   xpos 508\n   ypos 351\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 445\n   disable {{!parent.keep_deepPosition}}\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepNormal\n   name ShuffleCopy2\n   xpos 508\n   ypos 527\n   disable {{!parent.keep_deepNormal}}\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 607\n  }\n end_group\n Dot {\n  name Dot2\n  xpos 528\n  ypos 1359\n }\nset N54c91800 [stack 0]\n Dot {\n  name Dot3\n  xpos 808\n  ypos 1359\n }\nset N54c91400 [stack 0]\n Dot {\n  name Dot4\n  xpos 808\n  ypos 2237\n }\npush $N54cde800\n Dot {\n  name Dot7\n  xpos 123\n  ypos 339\n }\n DeepExpression {\n  temp_name0 posb\n  temp_expr0 \"abs( blue )\"\n  chans0 {rgba.red rgba.green rgba.blue -rgba.alpha}\n  chans1 none\n  rgba.red \"posb < \\[value parent.proj_zrange.0] || posb > \\[value parent.proj_zrange.3] ? 0 : posb < \\[value parent.proj_zrange.1] ? clamp( ( posb - \\[value parent.proj_zrange.0] ) / ( \\[value parent.proj_zrange.1] - \\[value parent.proj_zrange.0] ) ) * alpha : posb > \\[value parent.proj_zrange.2] ? clamp( 1 - ( posb - \\[value parent.proj_zrange.2] ) / ( \\[value parent.proj_zrange.3] - \\[value parent.proj_zrange.2] ) ) * alpha : alpha\"\n  rgba.green 0\n  rgba.blue 0\n  name DeepExpression5\n  label zfalloff\n  xpos 89\n  ypos 493\n }\n Group {\n  name DVPToImage2\n  tile_color 0x3d99ff\n  label \"<font color=cyan>2D image Output</font>\"\n  selected true\n  xpos 89\n  ypos 837\n  addUserKnob {20 t_general l General}\n  addUserKnob {4 nuke_version l \"\" +STARTLINE +INVISIBLE M {10 11 \"\" \"\"}}\n  nuke_version 11\n  addUserKnob {6 keep_deepPosition l \"keep deepPosition\" +STARTLINE}\n  keep_deepPosition {{parent.keep_deepPosition}}\n  addUserKnob {6 keep_deepNormal l \"keep deepNormal\" +STARTLINE}\n  keep_deepNormal {{parent.keep_deepNormal}}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2020-12-13}\n  addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"for internal use\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  ModifyMetaData {\n   metadata {\n    {remove DVPmatte \"\"}\n   }\n   name DVPmatteMD\n   xpos 508\n   ypos 35\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 117\n  }\nset N54c53800 [stack 0]\n  Dot {\n   name Dot2\n   xpos 704\n   ypos 117\n  }\nset N54c53400 [stack 0]\n  Dot {\n   name Dot1\n   xpos 973\n   ypos 117\n  }\n  DeepExpression {\n   chans1 none\n   rgba.red deepNormal.red\n   rgba.green deepNormal.green\n   rgba.blue deepNormal.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression2\n   selected true\n   xpos 939\n   ypos 191\n  }\n  DeepToImage {\n   name DeepToImage3\n   xpos 939\n   ypos 367\n  }\n  Dot {\n   name Dot3\n   xpos 973\n   ypos 531\n  }\npush $N54c53400\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha <= 0 ? 0 : 1\"\n   name DeepExpression1\n   xpos 670\n   ypos 191\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 670\n   ypos 367\n  }\n  Dot {\n   name Dot6\n   xpos 704\n   ypos 449\n  }\npush $N54c53800\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 191\n  }\n  Remove {\n   channels deepPosition\n   channels2 deepNormal\n   channels3 deepRawColor\n   name Remove1\n   xpos 508\n   ypos 351\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 445\n   disable {{!parent.keep_deepPosition}}\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepNormal\n   name ShuffleCopy2\n   xpos 508\n   ypos 527\n   disable {{!parent.keep_deepNormal}}\n  }\n  Output {\n   name Output1\n   xpos 508\n   ypos 607\n  }\n end_group\n Remove {\n  operation keep\n  channels {rgba.red -rgba.green -rgba.blue none}\n  name Remove4\n  xpos 89\n  ypos 1121\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  xpos 89\n  ypos 1220\n }\n Dot {\n  name Dot8\n  xpos 123\n  ypos 1477\n }\npush $N54c91800\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge1\n  xpos 494\n  ypos 1474\n }\npush $N54c91400\n Input {\n  inputs 0\n  name tex\n  xpos 1039\n  ypos -421\n  number 1\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop {{parent.black_outside}}\n  name Crop1\n  xpos 1039\n  ypos -306\n }\n Dot {\n  name tex_dot\n  xpos 1073\n  ypos -226\n }\n STMap {\n  inputs 2\n  channels rgba\n  uv rgba\n  maskChannel rgba.alpha\n  name DeepVP_STMap\n  xpos 1039\n  ypos 1356\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 1039\n  ypos 1474\n }\n Dot {\n  name Dot24\n  xpos 1073\n  ypos 1697\n }\nset N54c09800 [stack 0]\n Dot {\n  name Dot19\n  xpos 1073\n  ypos 2225\n }\nset N54c09400 [stack 0]\npush $N54c09400\npush $N54cdfc00\n Merge2 {\n  inputs 2\n  name Merge3\n  xpos 1305\n  ypos 2222\n }\n Switch {\n  inputs 3\n  which {{output}}\n  name Switch2\n  label \"output selection\"\n  xpos 1305\n  ypos 2563\n }\n ShuffleCopy {\n  inputs 2\n  in deepPosition\n  in2 none\n  red red\n  green green\n  blue blue\n  alpha black\n  out deepPosition\n  name ShuffleCopy1\n  xpos 1305\n  ypos 2645\n }\n Switch {\n  inputs 2\n  name Switch1\n  label \"cam preview\"\n  xpos 1305\n  ypos 2760\n }\n ModifyMetaData {\n  metadata {\n   {remove DVPmatte \"\"}\n   {remove DVPcamMTX \"\"}\n   {remove DVPcamAspect \"\"}\n   {remove DVPcamWin \"\"}\n  }\n  name DVPmd\n  xpos 1305\n  ypos 2864\n }\n Output {\n  name Output1\n  xpos 1305\n  ypos 3000\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['proj_zrange'].isAnimated() :\\n    thisGRP\\['proj_zrange_buffer'].clearAnimated()\\n    thisGRP\\['proj_zrange_buffer'].setValue( thisGRP\\['proj_zrange'].getValue() )\\nelse :\\n    thisGRP\\['proj_zrange_buffer'].setAnimated()\\n    anizrange0 = thisGRP\\['proj_zrange'].animation( 0 )\\n    anizrange1 = thisGRP\\['proj_zrange'].animation( 1 )\\n    anizrange2 = thisGRP\\['proj_zrange'].animation( 2 )\\n    anizrange3 = thisGRP\\['proj_zrange'].animation( 3 )\\n    for key in anizrange0.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 0 )\\n    for key in anizrange1.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 1 )\\n    for key in anizrange2.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 2 )\\n    for key in anizrange3.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 3 )\\n\"\n  xpos -196\n  ypos -290\n  addUserKnob {20 User}\n  addUserKnob {78 proj_zrange l \"distance range\" n 4}\n }\n Camera {\n  inputs 0\n  rot_order {{parent.proj_rot_order}}\n  translate {{\"parent.freeze_frame ? parent.proj_translate( parent.proj_framehold ) : parent.proj_translate\"} {\"parent.freeze_frame ? parent.proj_translate( parent.proj_framehold ) : parent.proj_translate\"} {\"parent.freeze_frame ? parent.proj_translate( parent.proj_framehold ) : parent.proj_translate\"}}\n  rotate {{\"parent.freeze_frame == 0 ? parent.proj_rotate : parent.proj_rotate( parent.proj_framehold )\"} {\"parent.freeze_frame == 0 ? parent.proj_rotate : parent.proj_rotate( parent.proj_framehold )\"} {\"parent.freeze_frame == 0 ? parent.proj_rotate : parent.proj_rotate( parent.proj_framehold )\"}}\n  useMatrix {{parent.proj_useMatrix}}\n  matrix {\n      {{\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix(parent.proj_framehold) : parent.proj_world_matrix\"}}\n    }\n  focal {{parent.proj_focal}}\n  haperture {{parent.proj_haperture}}\n  name projCam_data\n  xpos -174\n  ypos 19\n }\npush $N54c09800\n Dot {\n  name Dot25\n  xpos 1854\n  ypos 1697\n }\npush $N54cdf800\n Merge2 {\n  inputs 2\n  name Merge5\n  xpos 1820\n  ypos 1824\n  disable {{\"parent.display_ptc_type == 1 ? 1 : parent.display_ptc_type == 2 ? 0 : 1\"}}\n }\n PositionToPoints2 {\n  display textured\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  P_channel deepPosition\n  detail 0.1\n  name deepPositionToPoints\n  xpos 1820\n  ypos 1887\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"wrapped texture + source\"\n  xpos 1283\n  ypos 2145\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"wrapped texture\"\n  xpos 1040\n  ypos 2147\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label uv\n  xpos 771\n  ypos 2149\n }\n Camera {\n  inputs 0\n  rotate {0 0 {\"parent.freeze_frame == 0 ? parent.proj_winroll :\\nparent.proj_winroll( parent.proj_framehold )\"}}\n  win_translate {{\"parent.freeze_frame == 0 ?\\nparent.proj_win_translate : parent.proj_win_translate(\\nparent.proj_framehold )\"} {\"parent.freeze_frame == 0 ?\\nparent.proj_win_translate : parent.proj_win_translate(\\nparent.proj_framehold )\"}}\n  win_scale {{\"parent.freeze_frame == 0 ? parent.proj_win_scale :\\nparent.proj_win_scale( parent.proj_framehold )\"} {\"parent.freeze_frame\\n== 0 ? parent.proj_win_scale : parent.proj_win_scale(\\nparent.proj_framehold )\"}}\n  name projCWin_data\n  xpos -308\n  ypos 17\n }\n Group {\n  inputs 0\n  name inverseMatrix_cam\n  tile_color 0x337f4cff\n  xpos -187\n  ypos 135\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path projCam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n NoOp {\n  inputs 0\n  name globalTCL\n  xpos -316\n  ypos 133\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"import math\\n\\ndef getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n##########\\n\\ndef refreshCamUI( _met , _thisGRP ) :\\n\\tfh = nuke.toNode('FrameHold')\\n\\tpcam = nuke.toNode('projCam')\\n\\tif _thisGRP\\['freeze_frame'].value() :\\n\\t\\tgetFrame = int( _thisGRP\\['proj_framehold'].getValue() )\\n\\telse :\\n\\t\\tgetFrame = nuke.frame()\\n\\n\\tpcamSetting = \\[ pcam.name() , \\n\\t\\t\\t\\t\\tpcam\\['gl_color'].getValue() , \\n\\t\\t\\t\\t\\tpcam\\['focal'].getValueAt(getFrame) , \\n\\t\\t\\t\\t\\tpcam\\['haperture'].getValueAt(getFrame) , \\n\\t\\t\\t\\t\\tpcam\\['win_translate'].getValueAt(getFrame) , \\n\\t\\t\\t\\t\\tpcam\\['win_scale'].getValueAt(getFrame) , \\n\\t\\t\\t\\t\\tpcam\\['winroll'].getValueAt(getFrame)\\n\\t\\t\\t\\t\\t]\\n\\n\\tif _met == 'link' :\\n\\t\\tnuke.delete( pcam )\\n\\t\\tnewpcam = nuke.nodes.Camera( name=pcamSetting\\[0] , gl_color=pcamSetting\\[1] , focal=pcamSetting\\[2] , haperture=pcamSetting\\[3] , winroll=pcamSetting\\[6] )\\n\\t\\tnewpcam\\['win_translate'].setValue( pcamSetting \\[4] )\\n\\t\\tnewpcam\\['win_scale'].setValue( pcamSetting \\[5] )\\n\\n\\tif _met == 'remove' :\\n\\t\\tpcamMTX = nuke.math.Matrix4()\\n\\t\\tfor i in range(0,16):\\n\\t\\t\\tpcamMTX\\[i] = pcam\\['world_matrix'].getValueAt(getFrame)\\[i]\\n\\n\\t\\tnuke.delete( pcam )\\n\\t\\tnewpcam = nuke.nodes.Camera( name=pcamSetting\\[0] , gl_color=pcamSetting\\[1] , focal=pcamSetting\\[2] , haperture=pcamSetting\\[3] , winroll=pcamSetting\\[6] )\\n\\t\\tnewpcam\\['win_translate'].setValue( pcamSetting \\[4] )\\n\\t\\tnewpcam\\['win_scale'].setValue( pcamSetting \\[5] )\\n\\n\\t\\tpcamMTX.transpose()\\n\\t\\tmTranslate = nuke.math.Matrix4(pcamMTX)\\n\\t\\tmTranslate.translationOnly()\\n\\t\\tmRotate = nuke.math.Matrix4(pcamMTX)\\n\\t\\tmRotate.rotationOnly()\\n\\n\\t\\tnewpcam\\['translate'].setValue( (mTranslate\\[12], mTranslate\\[13], mTranslate\\[14]) )\\n\\t\\trotateRad = mRotate.rotationsZXY()\\n\\t\\tnewpcam\\['rotate'].setValue( (math.degrees(rotateRad\\[0]), math.degrees(rotateRad\\[1]), math.degrees(rotateRad\\[2])) )\\n\\n\\tfh.setInput(0, newpcam)\" +STARTLINE}\n  addUserKnob {7 camAspect}\n  camAspect {{\"parent.freeze_frame == 0 ? parent.proj_haperture/parent.proj_focal : parent.proj_haperture( parent.proj_framehold )/parent.proj_focal( parent.proj_framehold )\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPscene.gizmo",
    "content": "Group {\n name DVPscene\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n            thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0x597fff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {4 output t \"composite\\nWhich is a beauty of the render.\\n\\nrawlight pass\\nA pass with only illuminated by light. Using multiply math.\\n\\nshader pass\\nA pass with shader attribute. Using additive math.\\n\\nextra pass\\nDepends on other features on the shader provided.\" M {composite \"rawlight pass\" \"shader pass\" \"extra pass\"}}\n addUserKnob {18 light_shading l \"light shading\" t \"Combine the original color in diffuse.\"}\n light_shading 0.1\n addUserKnob {41 ambient T menu01.ambient}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 42\n  xpos -592\n  ypos -35\n  bdwidth 474\n  bdheight 385\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1027\n  ypos -21\n  bdwidth 316\n  bdheight 274\n }\n Input {\n  inputs 0\n  name deep\n  xpos 62\n  ypos -70\n }\n DeepExpression {\n  chans1 deep\n  name spacer\n  xpos 62\n  ypos 10\n }\n Dot {\n  name Dot1\n  xpos 96\n  ypos 90\n }\nset N51ae9c00 [stack 0]\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n DeepExpression {\n  chans0 {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  chans1 none\n  deepRawColor.red \"( deepRawColor.red * \\[value diffuse.x] ) + \\[value parent.ambient.r]\"\n  deepRawColor.green \"( deepRawColor.green * \\[value diffuse.y] ) + \\[value parent.ambient.g]\"\n  deepRawColor.blue \"( deepRawColor.blue * \\[value diffuse.z] ) + \\[value parent.ambient.b]\"\n  name DeepExpression4\n  xpos 62\n  ypos 164\n  addUserKnob {20 User}\n  addUserKnob {13 diffuse}\n  diffuse {{\"\\[lrange \\[split \\[metadata sDiffuse] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata sDiffuse] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata sDiffuse] \\\" \\\"] 2 2]+0\"}}\n }\n Dot {\n  name Dot6\n  xpos 96\n  ypos 363\n }\nset N51ae9400 [stack 0]\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"max( deepRawColor.red * red , DVPshader.red ) + deepRawColor.red * clamp( \\[value parent.light_shading.r] )\"\n  rgba.green \"max( deepRawColor.green * green , DVPshader.green ) + deepRawColor.green * clamp( \\[value parent.light_shading.g] )\"\n  rgba.blue \"max( deepRawColor.blue * blue , DVPshader.blue ) + deepRawColor.blue * clamp( \\[value parent.light_shading.b] ) )\"\n  name DeepExpression1\n  xpos 218\n  ypos 360\n }\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n DeepExpression {\n  temp_name0 uMult\n  temp_expr0 \"abs( (x+0.5)/input.width-0.5 ) *2\"\n  temp_name1 vMult\n  temp_expr1 \"abs( (y+0.5)/input.height-0.5 ) *2\"\n  temp_name2 hHalfAOV\n  temp_expr2 \"degrees( atan( ( ( \\[value getCam.aspect] ) * abs( deep.front ) /2 ) / abs( deep.front ) ) )\"\n  temp_name3 vHalfAOV\n  temp_expr3 \"degrees( atan( ( ( \\[value getCam.aspect] ) * (input.height/input.width) * abs( deep.front ) /2 ) / abs( deep.front ) ) )\"\n  chans0 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans1 none\n  deepNormal.alpha \"clamp( x<input.width/2 && y<input.height/2 ? \\[value cx]*-cos(radians(vHalfAOV*vMult))*sin(radians(-hHalfAOV*uMult)) + \\[value cy]*sin(radians(vHalfAOV*vMult)) + \\[value cz]*cos(radians(vHalfAOV*vMult))*cos(radians(-hHalfAOV*uMult)) : x>input.width/2 && y>input.height/2 ? \\[value cx]*-cos(radians(-vHalfAOV*vMult))*sin(radians(hHalfAOV*uMult)) + \\[value cy]*sin(radians(-vHalfAOV*vMult)) + \\[value cz]*cos(radians(-vHalfAOV*vMult))*cos(radians(hHalfAOV*uMult)) : x<input.width/2 && y>input.height/2 ? \\[value cx]*-cos(radians(-vHalfAOV*vMult))*sin(radians(-hHalfAOV*uMult)) + \\[value cy]*sin(radians(-vHalfAOV*vMult)) + \\[value cz]*cos(radians(-vHalfAOV*vMult))*cos(radians(-hHalfAOV*uMult)) : \\[value cx]*-cos(radians(vHalfAOV*vMult))*sin(radians(hHalfAOV*uMult)) + \\[value cy]*sin(radians(vHalfAOV*vMult)) + \\[value cz]*cos(radians(vHalfAOV*vMult))*cos(radians(hHalfAOV*uMult)) )\"\n  name DeepExpression6\n  xpos 218\n  ypos 430\n  addUserKnob {20 User}\n  addUserKnob {1 cx}\n  cx \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.0] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.1] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.2])\"\n  addUserKnob {1 cy}\n  cy \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.3] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.4] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.5])\"\n  addUserKnob {1 cz}\n  cz \"(deepNormal.red*\\[value inverseMatrix_cam.invMatrix.6] + deepNormal.green*\\[value inverseMatrix_cam.invMatrix.7] + deepNormal.blue*\\[value inverseMatrix_cam.invMatrix.8])\"\n }\n Dot {\n  name Dot9\n  xpos 252\n  ypos 510\n }\nset N51ae8800 [stack 0]\n Dot {\n  name Dot10\n  xpos 887\n  ypos 510\n }\nset N51ae8400 [stack 0]\n Dot {\n  name Dot11\n  xpos 1081\n  ypos 510\n }\n DeepExpression {\n  temp_name0 contourSize\n  temp_expr0 \"deepNormal.alpha < clamp(\\[metadata sContourSize]+0) ? 1 : 1-clamp( (deepNormal.alpha-clamp(\\[metadata sContourSize]+0)) * (1/0.01) )\"\n  chans1 none\n  rgba.red \"contourColor.x*contourSize * alpha\"\n  rgba.green \"contourColor.y*contourSize * alpha\"\n  rgba.blue \"contourColor.z*contourSize * alpha\"\n  rgba.alpha \"contourSize * alpha\"\n  name DeepExpression8\n  xpos 1047\n  ypos 621\n  addUserKnob {20 User}\n  addUserKnob {13 contourColor}\n  contourColor {{\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 2 2]+0\"}}\n }\n DeepExpression {\n  chans0 deep\n  chans1 none\n  deep.front \"alpha<=0 ? -1 : deep.front\"\n  deep.back \"alpha<=0 ? -1 : deep.back\"\n  name DeepExpression9\n  label \"alpha check\"\n  xpos 1047\n  ypos 701\n }\n DeepCrop {\n  use_znear false\n  zfar 1\n  outside_zrange true\n  bbox {0 0 1 1}\n  use_bbox false\n  name DeepCrop1\n  label \"sample cleanup\"\n  xpos 1047\n  ypos 793\n }\npush $N51ae8400\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red 0\n  rgba.green 0\n  rgba.blue 0\n  name DeepExpression10\n  xpos 853\n  ypos 755\n }\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPshader]+0 == 2 ? 1 : 0\"}}\n  name Switch3\n  xpos 853\n  ypos 894\n }\n Dot {\n  name Dot8\n  xpos 887\n  ypos 1030\n }\npush $N51ae9c00\n Dot {\n  name Dot2\n  xpos 493\n  ypos 90\n }\nset N51a96000 [stack 0]\n Dot {\n  name Dot3\n  xpos 643\n  ypos 90\n }\n DeepExpression {\n  chans0 rgb\n  chans1 none\n  rgba.red DVPshader.red\n  rgba.green DVPshader.green\n  rgba.blue DVPshader.blue\n  name DeepExpression3\n  xpos 609\n  ypos 352\n }\n Dot {\n  name Dot4\n  xpos 643\n  ypos 1017\n }\npush $N51a96000\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"red * alpha\"\n  rgba.green \"green * alpha\"\n  rgba.blue \"blue * alpha\"\n  name DeepExpression2\n  xpos 459\n  ypos 355\n }\n Dot {\n  name Dot5\n  xpos 493\n  ypos 1012\n }\npush $N51ae8800\n DeepExpression {\n  temp_name0 contourSize\n  temp_expr0 \"deepNormal.alpha < clamp(\\[metadata sContourSize]+0) ? 1 : 1-clamp( (deepNormal.alpha-clamp(\\[metadata sContourSize]+0)) * (1/0.01) )\"\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"r * (1-contourSize) + (contourColor.x*contourSize)\"\n  rgba.green \"g * (1-contourSize) + (contourColor.y*contourSize)\"\n  rgba.blue \"b * (1-contourSize) + (contourColor.z*contourSize)\"\n  name DeepExpression13\n  xpos 218\n  ypos 576\n  addUserKnob {20 User}\n  addUserKnob {13 contourColor}\n  contourColor {{\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata sContourColor] \\\" \\\"] 2 2]+0\"}}\n }\n Dot {\n  name Dot12\n  xpos 252\n  ypos 868\n }\npush $N51ae9400\n DeepExpression {\n  chans0 {rgba.red rgba.green rgba.blue none}\n  chans1 none\n  rgba.red \"( deepRawColor.red * red + DVPshader.red ) + deepRawColor.red * clamp( \\[value parent.light_shading.r] )\"\n  rgba.green \"( deepRawColor.green * green + DVPshader.green ) + deepRawColor.green * clamp( \\[value parent.light_shading.g] )\"\n  rgba.blue \"( deepRawColor.blue * blue + DVPshader.blue ) + deepRawColor.blue * clamp( \\[value parent.light_shading.b] )\"\n  name DeepExpression5\n  xpos 62\n  ypos 435\n }\n Switch {\n  inputs 2\n  which {{\"\\[metadata DVPshader]+0 == 2 ? 1 : 0\"}}\n  name Switch2\n  xpos 62\n  ypos 924\n }\n Switch {\n  inputs 4\n  which {{parent.output}}\n  name Switch1\n  xpos 62\n  ypos 1181\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\nadd_layer {DVPshader DVPshader.red DVPshader.green DVPshader.blue DVPshader.alpha}\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans2 DVPshader\n  deepPosition.alpha 0\n  deepNormal.alpha 0\n  DVPshader.red 0\n  DVPshader.green 0\n  DVPshader.blue 0\n  DVPshader.alpha 0\n  name DeepExpression7\n  label \"reset all working channels\"\n  xpos 62\n  ypos 1261\n }\n ModifyMetaData {\n  metadata {\n   {remove DVPshader \"\"}\n   {remove sStatus \"\"}\n   {remove sDiffuse \"\"}\n   {remove sSpecular \"\"}\n   {remove sGlossiness \"\"}\n   {remove sStyle \"\"}\n   {remove sLayers \"\"}\n   {remove sSharpness \"\"}\n   {remove sRatio \"\"}\n   {remove sSpecReplace \"\"}\n   {remove sSpecColor \"\"}\n   {remove sContourSize \"\"}\n   {remove sContourColor \"\"}\n  }\n  name rmShaderData\n  xpos 62\n  ypos 1383\n }\n Output {\n  name Output1\n  xpos 62\n  ypos 1471\n }\n Group {\n  inputs 0\n  name inverseMatrix_cam\n  tile_color 0x337f4cff\n  xpos -566\n  ypos 265\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\npush $N51ae9c00\n Dot {\n  name Dot7\n  xpos -366\n  ypos 90\n }\n NoOp {\n  name getCam\n  xpos -400\n  ypos 180\n  addUserKnob {20 User}\n  addUserKnob {13 cmr01}\n  cmr01 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 0 0]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 1 1]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 2 2]+0\"}}\n  addUserKnob {13 cmr02}\n  cmr02 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 4 4]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 5 5]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 6 6]+0\"}}\n  addUserKnob {13 cmr03}\n  cmr03 {{\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 8 8]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 9 9]+0\"} {\"\\[lrange \\[split \\[metadata DVPcamMTX] \\\" \\\"] 10 10]+0\"}}\n  addUserKnob {7 aspect}\n  aspect {{\"\\[metadata DVPcamAspect]+0\"}}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rot_order XYZ\n  useMatrix true\n  matrix {\n      {{getCam.cmr01.x} {getCam.cmr01.y} {getCam.cmr01.z} 0}\n      {{getCam.cmr02.x} {getCam.cmr02.y} {getCam.cmr02.z} 0}\n      {{getCam.cmr03.x} {getCam.cmr03.y} {getCam.cmr03.z} 0}\n      {0 0 0 1}\n    }\n  name cam_data\n  xpos -555\n  ypos 159\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisN = nuke.thisNode()\\nfor knob in thisN.knobs() :\\n    try :\\n        if knob.split('_')\\[1] == 'panelDropped' :\\n            thisN.removeKnob( thisN\\[knob] )\\n    except :\\n        pass\\n\"\n  xpos -991\n  ypos 165\n  addUserKnob {20 User}\n  addUserKnob {18 ambient}\n  ambient {0 0 0}\n  addUserKnob {6 ambient_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label DVP_shader\n  xpos 56\n  ypos 294\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"shader pass\"\n  xpos 609\n  ypos 293\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"rawlight pass\"\n  xpos 456\n  ypos 293\n }\n StickyNote {\n  inputs 0\n  name StickyNote5\n  label \"extra pass\"\n  xpos 852\n  ypos 291\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label DVP_ToonShader\n  xpos 219\n  ypos 296\n }\n StickyNote {\n  inputs 0\n  name StickyNote6\n  label \"DVP_ToonShader\\ncontour\"\n  xpos 1043\n  ypos 548\n }\n StickyNote {\n  inputs 0\n  name StickyNote7\n  label nothing\n  xpos 852\n  ypos 549\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPsetLight.gizmo",
    "content": "Group {\n name DVPsetLight\n tile_color 0x597fff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Input {\n  inputs 0\n  name shader\n  xpos -162\n  ypos 164\n  number 1\n }\nadd_layer {DVPshader DVPshader.red DVPshader.green DVPshader.blue DVPshader.alpha}\n AddChannels {\n  inputs 0\n  channels DVPshader\n  name AddChannels4\n  xpos -153\n  ypos -24\n }\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n AddChannels {\n  inputs 0\n  channels deepRawColor\n  name AddChannels2\n  xpos -154\n  ypos -208\n }\n Input {\n  inputs 0\n  name deep\n  xpos 0\n  ypos -290\n }\n DeepRecolor {\n  inputs 2\n  channels {{{parent.AddChannels2.channels}}}\n  name DeepRecolor4\n  xpos 0\n  ypos -208\n }\n DeepExpression {\n  chans0 deepRawColor\n  chans1 rgb\n  rgba.red 0\n  rgba.green 0\n  rgba.blue 0\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  deepRawColor.alpha alpha\n  name DeepExpression6\n  label \"store original color data\"\n  xpos 0\n  ypos -116\n }\n DeepRecolor {\n  inputs 2\n  channels {{{AddChannels4.channels}}}\n  name DeepRecolor7\n  xpos 0\n  ypos -24\n }\n ModifyMetaData {\n  metadata {\n   {set DVPshader 0}\n   {set sStatus 0}\n   {set sDiffuse \"\\[value diffuseRGB]\"}\n  }\n  name stShaderData\n  xpos 0\n  ypos 84\n  addUserKnob {20 User}\n  addUserKnob {13 diffuseRGB}\n  diffuseRGB {0.18 0.18 0.18}\n }\n CopyMetaData {\n  inputs 2\n  name CopyMetaData1\n  xpos 0\n  ypos 164\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 244\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DasGrain.gizmo",
    "content": "Group {\n name DasGrain\n help \"DasGrain makes regraining as simple as clicking a few buttons.\\n\\nFollow the steps in the Help tab and you'll have a perfect regrain in no time!\"\n onCreate \"import random\\n\\ntestimonials = \\[\\n    \\\"Such an elegant solution, love it!\\\",\\n    \\\"Your gizmo is beyond expectation\\\",\\n    \\\"Totally awesome!\\\",\\n    \\\"DasGrain is officially the best thing ever\\\",\\n    \\\"It's really working!\\\",\\n    \\\"Das bringt Tr&auml;nen in meine Augen\\\",\\n    \\\"DasGrain is the salvation we waited for\\\",\\n    \\\"I save a lot of time, and definitely my nerves :)\\\",\\n    \\\"It's alright\\\",\\n    \\\"My new favourite node, thanks!<br>Having said that, ...\\\"\\n    ]\\n\\nnode = nuke.thisNode()\\nnode\\['testimonial'].setValue('<br><br><br><i>&laquo;%s&raquo;</i><br>&mdash; anonymous<br><br>' % random.choice(testimonials))\\nnode\\['box'].setFlag(nuke.NO_ANIMATION)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'box':\\n    this_frame = nuke.frame()\\n    n\\['sample_frame'].setValue(this_frame)\\n\\nif k.name() == 'scatter':\\n    n\\['divider04'].setVisible(k.value() == False)\\n    n\\['divider05'].setVisible(k.value() == True)\"\n tile_color 0x7f7f7fff\n selected true\n addUserKnob {20 DasGrain_tab l DasGrain}\n addUserKnob {41 output t \"<strong>regrained comp</strong> it is what it sais\\n<strong>plate grain</strong> plate minus degrained plate\\n<strong>normalised grain</strong> check if the normalization worked. It should be as even as possible. This is what you want to output if you want to prerender a grain plate. Later you can plug it into the <i>external grain</i> input of another DasGrain\\n<strong>adapted grain</strong> check if the adaptation worked. Output this if you want to further manipulate the grain (who knows what the sup is gonna come up with...). After, simply plus it to your comp (at that point the comp has to be in the <i>camera</i> colorspace, as set in the <i>Analyze</i> tab).\\n<strong>grain QC</strong> check if voronoi seams are visible (&#8594; edgeblend), or the scattered grain looks different to the original plate grain (&#8594; maybe bad sample area or wrong luminance degrain amount)\" T Output.output}\n addUserKnob {4 meta l \"metadata from\" t \"Chances are you want to use the metadata from the plate, but who am I to assume :)\" M {COMP PLATE}}\n addUserKnob {26 spacer01_1 l \" \" T \" \"}\n addUserKnob {20 GrainGroupBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 Analyze_tab l Analyze}\n addUserKnob {26 text l <strong>Colorspace}\n addUserKnob {41 project_colorspace l project t \"set this to the project color space\" T OCIOColorSpace1.in_colorspace}\n addUserKnob {22 python_button l \"What's this all about?\" -STARTLINE T \"nuke.message(\\\"Regraining in other color spaces than the camera native linear space can lead to unexpected behaviour.\\\\n\\\\nFor example converting Alexa plates to ACEScg might introduce negative values due to ACEScg's smaller gamut. In that case converting back to ARRI Linear ALEXA Wide Gamut will probably help.\\\\nJust set <i>project</i> to ACEScg and <i>camera</i> to ARRI Linear ALEXA Wide Gamut.\\\\n\\\\nThis might be transferable to other cameras, but I've only tested with Alexas.\\\\n---------\\\\nBypass by setting both knobs to the same value.\\\")\"}\n addUserKnob {41 camera_colorspace l camera t \"set this to the camera native linear space\" T OCIOColorSpace1.out_colorspace}\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {26 level l \"<strong>Degrain amount\"}\n addUserKnob {78 luminance t \"Leave this at 1 if you're working on a completely degrained plate.\\n\\nIn case you decided to leave some luminance grain in the degrained plate (use the DegrainHelper node for this!), set this to the same value as in the DegrainHelper in order to compensate.\\n\\nIf the luminance degrain amount was set to 0.8, this needs to be set to 0.8 as well.\\n\\nYou need to select a mask of all elements that cover the plate, otherwise the grain of whole comp will be too strong \" n 1}\n luminance 1\n addUserKnob {26 divider01 l \" \"}\n addUserKnob {41 degrain_amount_mask l \"degrain amount mask\" t \"Use this channel from the mask input to specify in what area of the comp the missing luminance grain needs to be compensated.\" T Multiply1.maskChannelMask}\n addUserKnob {41 invert_mask l invert -STARTLINE T Multiply1.invert_mask}\n addUserKnob {26 spacer02 l \" \" T \" \"}\n addUserKnob {26 divider02 l <strong>Analyze}\n addUserKnob {3 number_of_frames l \"number of frames\" t \"Set the number of sample frames to be spread across the input range.\\n\\nMore frames lead to higher accuracy.\\n\\nIf there are particularly bright or dark frames, set them manually in the knob below to make sure they are part of the analysis.\\n\\nIf you want to set all sample frames manually, set this to 0 and add the frames in the knob below.\"}\n number_of_frames 10\n addUserKnob {1 additional_frames l \"additional frames\" t \"Set additional frames like this:\\n\\n1001,1020,1053 (single frames)\\n1020-1040 (frame ranges)\\n1020-1040x4 (frame ranges with step)\"}\n addUserKnob {3 sample_count l \"sample count\" t \"The samples are spread across the sample range (which gets calculated automatically) based on the AlexaV3LogC curve. This results in more samples in the dark areas and less samples in the brights.\\n\\nMore samples lead to a more detailed response curve (while the accuracy is limited by the quality of the degrain).\"}\n sample_count 20\n addUserKnob {22 analyze l Analyze t \"this is where the magic happens\" T \"import base64\\nthis = nuke.thisNode()\\n\\n\\ndef _sample_count(this):\\n    \\\"\\\"\\\"returns the sample count\\\"\\\"\\\"\\n\\n    sample_count = int(this\\['sample_count'].value())\\n\\n    if sample_count <= 0:\\n        raise RuntimeError('Enter a sample count greater than 0')\\n\\n    else:\\n        return sample_count\\n\\n\\ndef _generate_frame_list(this):\\n    \\\"\\\"\\\"converts the frames submitted by the user into a list\\\"\\\"\\\"\\n\\n    frame_list = \\[]\\n    number_of_frames = int(this\\['number_of_frames'].value())\\n    additional_frames = this\\['additional_frames'].value()\\n\\n    if number_of_frames < 1 and additional_frames is '':\\n        raise RuntimeError('Either set the number of frames > 0\\\\nor define additional frames')\\n\\n    first_frame = max(this.input(1).firstFrame(), this.input(2).firstFrame())\\n    last_frame = min(this.input(1).lastFrame(), this.input(2).lastFrame())\\n\\n    if number_of_frames > 0:\\n        distance = (last_frame - first_frame) / (number_of_frames)\\n        frame = first_frame + distance / 2\\n\\n        for x in range(number_of_frames):\\n            int_frame = int(round(frame))\\n            if int_frame not in frame_list:\\n                frame_list.append(int_frame)\\n\\n            frame += distance\\n\\n    frange = nuke.FrameRanges(additional_frames.split(','))\\n\\n    for r in frange:\\n        for f in r:\\n            if f >= first_frame and f <= last_frame:\\n                if f not in frame_list:\\n                    frame_list.append(f)\\n\\n    frame_list.sort()\\n\\n    return frame_list\\n\\n\\ndef _setup_for_multiframe(frame_list):\\n    \\\"\\\"\\\" arranges all sample frames next to each other, starting at frame 0\\n    and sets the frame number knob of the FrameBlend node\\\"\\\"\\\"\\n\\n    time_warp = nuke.toNode('TimeWarp1')\\n    time_warp\\['lookup'].clearAnimated()\\n    time_warp\\['lookup'].setAnimated()\\n    anim_list = \\[]\\n\\n    for n, frame in enumerate(frame_list):\\n        anim_list.append(nuke.AnimationKey(n, frame))\\n\\n    anim = time_warp\\['lookup'].animation(0)\\n    anim.addKey(anim_list)\\n\\n    frame_blend = nuke.toNode('FrameBlend1')\\n    frame_blend\\['endframe'].setValue(len(frame_list)-1)\\n\\n\\ndef _generate_sample_list(sample_count, sample_range, sample_radius):\\n    \\\"\\\"\\\"generate a list of sample values spread equally between the\\n    min and max values of the sample range\\\"\\\"\\\"\\n\\n    sample_list = \\[]\\n\\n    for item in range(0, sample_count):\\n        sample_list.append(float(item) / sample_count * (sample_range\\[1] - sample_range\\[0]) + sample_range\\[0] + sample_radius)\\n\\n    return sample_list\\n\\n\\ndef _get_sample_range(channel, channel_list, frame_list):\\n    \\\"\\\"\\\" samples the minimum and maximum values of the given frame range and\\n    sets the sample range to those values\\\"\\\"\\\"\\n\\n    curve_tool = nuke.toNode('CurveTool_Range')\\n    min_knob = curve_tool\\['minlumapixvalue']\\n    max_knob = curve_tool\\['maxlumapixvalue']\\n\\n    min_knob.setAnimated()\\n    max_knob.setAnimated()\\n\\n    curve_tool\\['channels'].setValue(channel)\\n\\n    nuke.execute(curve_tool, nuke.FrameRanges(frame_list))\\n\\n    index = channel_list.index(channel)\\n    min_list = \\[key.y for key in min_knob.animation(index).keys()]\\n    max_list = \\[key.y for key in max_knob.animation(index).keys()]\\n\\n    min_value = min(min_list)\\n    max_value = max(max_list)\\n\\n    min_knob.clearAnimated()\\n    max_knob.clearAnimated()\\n    curve_tool\\['minlumapixdata'].clearAnimated()\\n    curve_tool\\['maxlumapixdata'].clearAnimated()\\n\\n    return \\[min_value, max_value]\\n\\n\\ndef _sample_it(keyer, curve_tool, sample, sample_radius):\\n    \\\"\\\"\\\"analyze the grain level per channel and sample value in the sample range\\\"\\\"\\\"\\n\\n    keyer\\['temp_expr0'].setValue(str(sample - sample_radius))\\n    keyer\\['temp_expr1'].setValue(str(sample + sample_radius))\\n\\n    intensity_knob = curve_tool\\['intensitydata']\\n    intensity_knob.clearAnimated()\\n    intensity_knob.setAnimated()\\n\\n    nuke.execute(curve_tool, nuke.frame(), nuke.frame())\\n    sample_values = intensity_knob.value()\\n    intensity_knob.clearAnimated()\\n\\n    return sample_values\\n\\n\\ndef check_inputs(this):\\n    if this.input(1) is None:\\n        raise RuntimeError('no plate connected')\\n\\n    if this.input(2) is None:\\n        raise RuntimeError('no degrained plate connected')\\n\\n    def format_tuple(node):\\n        return node.format().width(), node.format().height(), node.format().pixelAspect()\\n\\n    if format_tuple(this.input(1)) != format_tuple(this.input(2)):\\n        raise RuntimeError(\\\"Format missmatch: Make sure the formats of plate and degrained plate match.\\\")\\n\\n\\ndef start(this):\\n    \\\"\\\"\\\"let's do this!\\\"\\\"\\\"\\n\\n    check_inputs(this)\\n\\n    with this:\\n        frame_list = _generate_frame_list(this)\\n        _setup_for_multiframe(frame_list)\\n        sample_count = _sample_count(this)\\n\\n        blank = base64.b64decode('cmVkIHtjdXJ2ZX0KZ3JlZW4ge2N1cnZlfQpibHVlIHtjdXJ2ZX0=').decode('ascii')\\n\\n        lut = nuke.toNode('Sampler1')\\['lut']\\n        lut.fromScript(blank)\\n\\n        channel_list = \\['red', 'green', 'blue']\\n\\n        keyer = nuke.toNode('Expression2')\\n        copy = nuke.toNode('Copy2')\\n\\n        curve_tool = nuke.toNode('CurveTool')\\n        pixel = curve_tool\\['ROI'].value()\\[2] * curve_tool\\['ROI'].value()\\[3]\\n\\n        task = nuke.ProgressTask('Analysing...')\\n        step = 100.0 / 3 / sample_count\\n        progress = step\\n\\n        time_warp = nuke.toNode('TimeWarp1')\\n        frame_blend = nuke.toNode('FrameBlend1')\\n\\n        time_warp\\['disable'].setValue(False)\\n        frame_blend\\['disable'].setValue(False)\\n\\n        for channel in channel_list:\\n            task.setMessage('\\{\\} range'.format(channel))\\n\\n            copy\\['from0'].setValue('rgba.\\{\\}'.format(channel))\\n\\n            sample_range = _get_sample_range(channel, channel_list, frame_list)\\n            sample_radius = (sample_range\\[1] - sample_range\\[0]) / sample_count / 2\\n            sample_list = _generate_sample_list(sample_count, sample_range, sample_radius)\\n\\n            for sample in sample_list:\\n                if task.isCancelled():\\n                    return\\n\\n                task.setProgress(int(progress))\\n\\n                sample_values = _sample_it(keyer, curve_tool, sample, sample_radius)\\n\\n                task.setMessage('\\{\\} channel at \\{\\}'.format(channel, round(sample, 2)))\\n\\n                if sample_values\\[3] * pixel >= 10:\\n                    lut.setValueAt(sample_values\\[0] / sample_values\\[3], sample_values\\[1] / sample_values\\[3], channel_list.index(channel))\\n\\n                progress += step\\n\\n        time_warp\\['lookup'].clearAnimated()\\n        time_warp\\['disable'].setValue(True)  # hopefully prevents slowing down the comp\\n        frame_blend\\['disable'].setValue(True)  # hopefully prevents slowing down the comp\\n\\n    del task\\n\\n\\nstart(this)\\n\" +STARTLINE}\n addUserKnob {26 divider03 l \" \"}\n addUserKnob {41 analysis_mask l \"analysis mask\" t \"Use this channel from the mask input to control what area of the plate will be analyzed.\\n\\nUsefull if the degrain is obviously bad in some areas.\" T ChannelMerge1.A}\n addUserKnob {6 invert_1 l invert -STARTLINE}\n addUserKnob {20 Adjust_tab l Adjust}\n addUserKnob {22 whatsthis l \"What am I looking at?\" T \"nuke.message(\\\"After the analysis you'll see the sampled grain response curves here. On the x-axis is the brightness of the image and on the y-axis the grain intensity. Grain increases with brightness, so <strong>the slope of the curves should always be positive</strong> (they should always go up &#8599;).<br><br>The quality of the curves depends entirely on the quality of the degrain. If the curves look wrong (for example they go up and down), try to improve the degrain first. If they still look wrong and the resulting regrain doesn't work well enough, you can try to improve the curves here by deleting/correcting all points that don't follow an upwards trend.<br><br>You can also extend the curves (again: with an upwards trend) if the comp has values that don't exist in the plate.<br><br>Note: The curve is used for both the normalization as well as the adaptation of the grain, so it doesn't give direct control of the grain intensity.\\\")\" +STARTLINE}\n addUserKnob {41 lut l \"\" +STARTLINE T Sampler1.lut}\n addUserKnob {20 Replace_tab l Replace}\n addUserKnob {6 external_grain l \"use external grain\" t \"Use external grain from a second DasGrain, with the output set to 'normalised grain', to replace masked area.\\nConnect it to the 'external grain' input of this DasGrain (it's a bit hidden on the left side of the node).\" +STARTLINE}\n addUserKnob {26 divider04 l <strong>Scatter}\n addUserKnob {26 divider05 l <strong>Scatter +HIDDEN T \"<span style=\\\"color:red\\\">Make sure you're sampling an area without any plate detail.</a>\"}\n addUserKnob {6 scatter l activate t \"Activates the scatter function. It generates a new grain based on the plate grain in the sample box using a Voronoi noise.\" +STARTLINE}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" -STARTLINE T VoronoiScatter.useGPUIfAvailable}\n addUserKnob {15 box l \"sample box\" t \"Define an area that is used as a source for the scatter function. The plate grain in this area should be as even as possible, without any visible detail.\"}\n box {100 100 500 300}\n addUserKnob {3 sample_frame l \"sample frame\" t \"The frame at which the grain is being sampled. Is set automatically once the sample box is changed.\" +DISABLED}\n sample_frame 1\n addUserKnob {4 stereo l \"stereo behaviour\" t \"randomize offset per view: same voronoy pattern for all views, but different offset\\n\\nrandomize pattern per view: different voronoy pattern for every view\" M {none \"randomize offset per view\" \"randomize pattern per view\" \"\"}}\n addUserKnob {26 spacer06 l \"\" +STARTLINE T \" \"}\n addUserKnob {6 overlay l \"overlay cell pattern\" t \"Overlay the cell pattern of the voronoy noise. Useful to check where the seams are and if distortion or blending is necessary.\" +STARTLINE}\n addUserKnob {7 cell_size l \"cell size\" t \"Cell size of the scatter. Shoudn't be too small, as lower grain frequencies might break.\\nCan't be too big either, to prevent it from breaking the border of the samplebox (will error if it does).\" R 5 100}\n cell_size 40\n addUserKnob {26 spacer07 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 concealer l \"edge concealer\" n 1}\n concealer 0\n addUserKnob {26 concealer_help l \" \" T \"If you can see the voronoi pattern in the grain QC output,\\nincrease the edge blend size.\"}\n addUserKnob {3 edge_blend_size l \"edge blend size\" t \"Set the output to grain QC. If you see the cell seams, increase the edge blend size to conceal them.\\n\\nThis is a bit hacky and slow.\"}\n addUserKnob {26 tip l \"\" -STARTLINE T \"sloooow - keep this below 3 if possible\"}\n addUserKnob {26 distortion_help l \" \" T \"\\nDistortion might help as well, if somehow the straight\\nseams are visible (you might want to toggle the overlay\\nwhile adjusting).\"}\n addUserKnob {7 amplitude R 0 50}\n addUserKnob {7 frequency R 0 50}\n frequency 15\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 divider06 l \"\" +STARTLINE}\n addUserKnob {41 replace_mask l \"replace mask\" t \"Use this channel from the mask input to specify where you want to use scattered grain instead of the adapted plate grain.\" -STARTLINE T Merge9.maskChannelMask}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T Merge9.invert_mask}\n addUserKnob {20 GrainGroupEnd l \"\" +STARTLINE n -3}\n addUserKnob {20 Help_tab l Help}\n addUserKnob {26 basic_setup l \"\" +STARTLINE T \"<font size=\\\"5\\\">Basic setup</font>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 explanation l \"\" +STARTLINE T \"<strong>Bold</strong> steps are always necessary\"}\n addUserKnob {26 steps l \"\" +STARTLINE T \"<br><strong>1. This should be the only regrain node in your comp.<br>2. Connect <i>plate</i>, <i>degrained plate</i> and <i>comp</i>.<br>&nbsp;&nbsp;&nbsp;&nbsp;The comp should be done on the degrained plate!</strong><br>3. Set the <i>luminance degrain amount</i>.<br><strong>4. Press the <i>Analyze</i> button.</strong><br>5. Correct the response curves in the <i>Adjust</i> tab.<br>6. Move the <i>sample box</i> to an area without any plate detail and activate <i>scatter</i>.<br>7. If necessary, activate <i>edge blend</i> and/or <i>distortion</i> to conceal seams.\"}\n addUserKnob {26 in_depth l \"\" +STARTLINE T \"<br>For an in depth explanation of the steps, read the tooltips and check out this video:<br><a href=\\\"https://vimeo.com/284820390/\\\"><span style=\\\"color:#C8C8C8;\\\">https://vimeo.com/284820390</a>\"}\n addUserKnob {26 pushthebutton l \"\" +STARTLINE T \"<br><br>If the result is not as expected and you don't know why, push this button:\"}\n addUserKnob {22 troubleshoot l Troubleshoot t HEEEEEEELP T \"import base64\\n\\nmessages = \\[]\\n\\nthis = nuke.thisNode()\\n\\n#########################\\n\\nif this.input(0) is None or this.input(1) is None or this.input(2) is None:\\n    messages.append(\\\"<font color='red'><strong>ERROR</strong></font> Plate, degrained plate and comp need to be connected to the appropriate inputs.\\\")\\n\\n#########################\\n\\nelse:\\n\\n    def format_to_tuple(g):\\n        \\\"\\\"\\\"returns (1024, 786, 2.0)\\n        \\\"\\\"\\\"\\n        return (g.format().width(), g.format().height(), g.format().pixelAspect())\\n\\n    format_set = set(\\[\\n        format_to_tuple(this.input(0)),\\n        format_to_tuple(this.input(1)),\\n        format_to_tuple(this.input(2)),\\n        ])\\n    if len(format_set) != 1:\\n        messages.append(\\\"<font color='orange'><strong>WARNING</strong></font> Format missmatch: Make sure formats of plate, degrained plate and comp match.\\\")\\n\\n    if (this.input(1).firstFrame() != this.input(2).firstFrame()) or (this.input(1).lastFrame() != this.input(2).lastFrame()):\\n        messages.append(\\\"<font color='orange'><strong>WARNING</strong></font> The frame ranges of plate and degrained plate don't match. Double check that they belong together.\\\")\\n\\n#########################\\n\\nmessages.append(\\\"Double check that plate and degrained plate haven't been modified in any way (paint, despill, etc).\\\")\\n\\n#########################\\n\\nif this\\['luminance'].getValue() == 1:\\n    messages.append(\\\"Are you working on a completely degrained plate? If not, you might have to set the luminance degrain amount.\\\")\\n\\n#########################\\n\\nblank = base64.b64decode('cmVkIHtjdXJ2ZX0KZ3JlZW4ge2N1cnZlfQpibHVlIHtjdXJ2ZX0=').decode('ascii')\\n\\nwith this:\\n    Sampler = nuke.toNode('Sampler1')     \\n    if Sampler\\['lut'].toScript() == blank:\\n        messages.append(\\\"<font color='red'><strong>ERROR</strong></font> You haven't pressed the Analyze button yet!\\\")\\n\\n#########################\\n\\nclass BadThings(Exception): pass\\n\\ndef thingy():\\n    with this:\\n        Sampler = nuke.toNode('Sampler1')\\n        list = this\\['lut'].toScript().replace('\\}','').split('\\\\n')\\n        for item in list:\\n            sample_value = 0\\n            for value in item.split(' '):\\n                try:\\n                    value == float(value)\\n                    if value < sample_value:\\n                        raise BadThings(\\\"<font color='orange'><strong>WARNING</strong></font> Check and fix the response curves. Their slopes should always be positive (the curves should always go up &#8599;).\\\")\\n                        \\n                    else:\\n                        sample_value = value\\n                except ValueError:\\n                    # Ignore non-numeric things like x-values of \\\"x5.46\\\" and channel names like \\\"red\\{\\\" etc\\n                    pass\\ntry:\\n    thingy()\\nexcept BadThings as e:\\n    messages.append(str(e))\\n    \\n#########################\\n\\nif this\\['scatter'].value() == True:\\n    if this\\['box'].getValue() == \\[100.0, 100.0, 500.0, 300.0]:\\n        messages.append(\\\"<font color='orange'><strong>WARNING</strong></font> Scatter has been activated, but the sample box is still in its default position. Are you sure that's a good area to sample?\\\")\\n\\n#########################\\n\\nmessages.append(\\\"Did you copy/paste DasGrain from another script? Make sure to reanalyze and to reset the sample area if you are using scatter.\\\")\\n\\n#########################\\n\\nif len(messages) > 0:\\n    nuke.message(\\\"<font size=\\\\\\\"5\\\\\\\">Things worth checking</font><br><br>\\\"\\n                               \\\"%s<br><br><br>If any of this doesn't make sense to you, it might be worth checking out the video on vimeo.\\\" % (\\n                                  \\\"<hr>\\\".join(\\\"%s: %s\\\" % (i+1, m) for i, m in enumerate(messages))))\\n\" +STARTLINE}\n addUserKnob {26 dont_despair l \"\" +STARTLINE T \"<br>If it still doesn't work and you're about to flip the table, send me a <a href=\\\"mailto:holtzf+nuke@gmail.com?subject=Help with DasGrain v1.7.8\\\"><span style=\\\"color:#C8C8C8;\\\">mail</a>.<br>I'm happy to help! :)\"}\n addUserKnob {20 Info_tab l Info}\n addUserKnob {26 dasname l \"\" +STARTLINE T \"<font size='5'>DasGrain</font> v1.8<br>\"}\n addUserKnob {26 text_1 l \"\" +STARTLINE T \"DasGrain makes regraining as simple as clicking a few buttons.<br>Follow the steps in the <i>Help</i> tab and you'll have a perfect\\nregrain<br>in no time!\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 info l \"\" +STARTLINE T \"Last change: 2021-03-07\\n\\n\"}\n addUserKnob {26 name_1 l \"\" +STARTLINE T \"Fabian Holtz\"}\n addUserKnob {26 mail l \"\" +STARTLINE T \"<a href=\\\"mailto:holtzf+nuke@gmail.com?subject=Help with DasGrain v1.7.8\\\"><span style=\\\"color:#C8C8C8;\\\">holtzf+nuke@gmail.com</a>\"}\n addUserKnob {26 testimonial l \"\" +STARTLINE T \"<br><br><br><i>&laquo;Such an elegant solution, love it!&raquo;</i><br>&mdash; anonymous<br><br>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"<br>VoronoiScatter based on <a href=\\\"http://www.nukepedia.com/blink/image/voronoi/\\\"><span style=\\\"color:#C8C8C8;\\\">Ivan Busquets' implementation</a> of<br> libNoise's\\nVoronoi generator\"}\n addUserKnob {26 thanks l \"\" +STARTLINE T \"<br>Special thanks to Ben Dickson for bearing with my questions and<br>problems and RSP comp for the valuable feedback.\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label \"normalise grain\"\n  note_font_size 30\n  xpos 170\n  ypos 1662\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode11\n  tile_color 0x7f7f7fff\n  label \"add grain\"\n  note_font_size 30\n  xpos 830\n  ypos 2766\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode13\n  tile_color 0x7f7f7fff\n  label scatter\n  note_font_size 30\n  xpos -50\n  ypos 2022\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode14\n  tile_color 0x7f7f7fff\n  label \"analyze grain\"\n  note_font_size 30\n  xpos -159\n  ypos 606\n  bdwidth 319\n  bdheight 877\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x7f7f7fff\n  label \"grain response curve\"\n  note_font_size 30\n  xpos 610\n  ypos 2574\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x7f7f7fff\n  label QC\n  note_font_size 30\n  xpos 1050\n  ypos 3222\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x7f7f7fff\n  label \"grain response curve\"\n  note_font_size 30\n  xpos 610\n  ypos 1422\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x7f7f7fff\n  label \"adapt grain\"\n  note_font_size 30\n  xpos 170\n  ypos 2574\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x7f7f7fff\n  label \"sample range\"\n  note_font_size 30\n  xpos -490\n  ypos 606\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode7\n  tile_color 0x7f7f7fff\n  label \"luminance level\"\n  note_font_size 30\n  xpos 280\n  ypos -282\n  bdwidth 760\n  bdheight 685\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode8\n  tile_color 0x7f7f7fff\n  label \"plate grain\"\n  note_font_size 30\n  xpos 170\n  ypos 606\n  bdwidth 320\n  bdheight 110\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode9\n  tile_color 0x7f7f7fff\n  label replace\n  note_font_size 30\n  xpos 60\n  ypos 2191\n  bdwidth 540\n  bdheight 226\n }\n Input {\n  inputs 0\n  name DEGRAINED_PLATE\n  label \"\\[value number]\"\n  note_font_size 30\n  xpos 730\n  ypos -896\n  number 2\n }\n OCIOColorSpace {\n  in_colorspace {{OCIOColorSpace1.in_colorspace}}\n  out_colorspace {{OCIOColorSpace1.out_colorspace}}\n  name OCIOColorSpace2\n  xpos 730\n  ypos -490\n }\n Dot {\n  name Dot9\n  xpos 764\n  ypos -390\n }\nset N99766400 [stack 0]\n Dot {\n  name Dot28\n  xpos 764\n  ypos -198\n }\nset N99766000 [stack 0]\n Dot {\n  name Dot32\n  xpos 764\n  ypos 234\n }\nset N99765c00 [stack 0]\npush $N99766000\n Dot {\n  name Dot27\n  xpos 624\n  ypos -198\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace1\n  xpos 590\n  ypos -130\n }\n Dot {\n  name Dot7\n  xpos 624\n  ypos -54\n }\nset N99765000 [stack 0]\n Input {\n  inputs 0\n  name PLATE\n  label \"\\[value number]\"\n  note_font_size 30\n  xpos 290\n  ypos -892\n  number 1\n }\n Dot {\n  name Dot50\n  xpos 324\n  ypos -726\n }\nset N99764800 [stack 0]\n OCIOColorSpace {\n  in_colorspace scene_linear\n  out_colorspace scene_linear\n  name OCIOColorSpace1\n  xpos 290\n  ypos -490\n }\n Dot {\n  name Dot29\n  xpos 324\n  ypos -198\n }\nset Ne5d2fc00 [stack 0]\n Dot {\n  name Dot6\n  xpos 464\n  ypos -198\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace2\n  xpos 430\n  ypos -130\n }\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge4\n  xpos 430\n  ypos -58\n }\n Multiply {\n  channels rgb\n  value {{\"1 / parent.luminance - 1\"} 0 0 0}\n  name Multiply6\n  xpos 430\n  ypos 14\n }\n Dot {\n  name Dot31\n  xpos 464\n  ypos 90\n }\npush $N99765000\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge5\n  xpos 590\n  ypos 86\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace3\n  xpos 590\n  ypos 158\n }\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge6\n  xpos 590\n  ypos 230\n }\n Dot {\n  name Dot35\n  xpos 624\n  ypos 306\n }\nset Ne5d2d800 [stack 0]\npush $N99765c00\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge7\n  xpos 730\n  ypos 302\n  disable {{\"Multiply6.value.r == 0\"}}\n }\n Dot {\n  name Dot2\n  xpos 764\n  ypos 522\n }\nset Ne5d2d000 [stack 0]\n Dot {\n  name Dot30\n  xpos 764\n  ypos 690\n }\nset Ne5d2cc00 [stack 0]\n Dot {\n  name Dot55\n  xpos 764\n  ypos 1170\n }\nset Ne5d2c800 [stack 0]\n Input {\n  inputs 0\n  name mask\n  label \"\\[value number]\"\n  note_font_size 30\n  xpos 1170\n  ypos -896\n  number 3\n }\n Dot {\n  name Dot39\n  xpos 1204\n  ypos 258\n }\nset N751abc00 [stack 0]\n Dot {\n  name Dot26\n  xpos 1204\n  ypos 1074\n }\nset N751ab800 [stack 0]\n Invert {\n  name Invert2\n  xpos 180\n  ypos 1064\n  disable {{!parent.invert_1}}\n }\npush $Ne5d2cc00\npush $Ne5d2fc00\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge27\n  xpos 290\n  ypos 686\n }\n Dot {\n  name Dot3\n  xpos 324\n  ypos 786\n }\nset N751aac00 [stack 0]\n Dot {\n  name Dot5\n  xpos 104\n  ypos 786\n }\nset N751aa800 [stack 0]\npush $N751aa800\n Copy {\n  inputs 2\n  from0 {{{parent.Copy2.from0}}}\n  to0 rgba.red\n  name Copy3\n  xpos 70\n  ypos 848\n }\n Expression {\n  expr0 abs(r)\n  channel1 {none none none rgba.alpha}\n  expr1 \"r == 0\"\n  channel2 none\n  channel3 none\n  name Expression4\n  xpos 70\n  ypos 926\n }\nset N751aa000 [stack 0]\npush $Ne5d2d000\n Colorspace {\n  colorspace_out AlexaV3LogC\n  name Colorspace5\n  xpos 70\n  ypos 518\n }\n Clamp {\n  maximum_enable false\n  name Clamp2\n  xpos -40\n  ypos 512\n }\n Dot {\n  name Dot1\n  xpos -116\n  ypos 522\n }\nset N751a9400 [stack 0]\n Dot {\n  name Dot48\n  xpos -116\n  ypos 786\n }\nset N751a9000 [stack 0]\npush $N751a9000\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.red\n  name Copy2\n  xpos -150\n  ypos 848\n }\n Expression {\n  temp_name0 min\n  temp_name1 max\n  channel0 {none none none rgba.alpha}\n  expr0 \"r >= min && r <= max\"\n  channel1 none\n  channel2 none\n  channel3 none\n  name Expression2\n  xpos -150\n  ypos 926\n }\n Dot {\n  name Dot4\n  xpos -116\n  ypos 1002\n }\n ChannelMerge {\n  inputs 2\n  operation stencil\n  name ChannelMerge2\n  xpos -40\n  ypos 985\n }\npush $N751aa000\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 70\n  ypos 992\n }\n ChannelMerge {\n  inputs 2\n  A -rgba.green\n  operation multiply\n  name ChannelMerge1\n  xpos 70\n  ypos 1057\n  disable {{!A}}\n }\n Copy {\n  inputs 2\n  from0 {{{parent.Copy2.from0}}}\n  to0 rgba.green\n  name Copy4\n  xpos 70\n  ypos 1160\n }\n Premult {\n  channels {rgba.red rgba.green -rgba.blue none}\n  name Premult1\n  xpos 70\n  ypos 1238\n }\n TimeWarp {\n  lookup 1081\n  time \"\"\n  filter nearest\n  name TimeWarp1\n  xpos 70\n  ypos 1286\n  disable true\n }\n FrameBlend {\n  channels {rgba.red rgba.green -rgba.blue rgba.alpha}\n  startframe 0\n  endframe 9\n  userange true\n  name FrameBlend1\n  xpos 70\n  ypos 1352\n  disable true\n }\n CurveTool {\n  avgframes 0\n  channels {rgba.red rgba.green -rgba.blue rgba.alpha}\n  ROI {0 0 {width} {height}}\n  name CurveTool\n  xpos 70\n  ypos 1424\n }\npush $N751a9400\n Dot {\n  name Dot16\n  xpos -336\n  ypos 522\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  channels {-rgba.red -rgba.green rgba.blue none}\n  ROI {0 0 {width} {height}}\n  name CurveTool_Range\n  xpos -370\n  ypos 680\n }\n Sampler {\n  inputs 0\n  lut {red {curve}\n    green {curve}\n    blue {curve}}\n  name Sampler1\n  onCreate \"n = nuke.thisNode()\\nn\\['sampler'].setEnabled(False)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\np = nuke.thisParent()\\n\\nif k.name() == 'lut':\\n    with p:\\n        for c in \\['ColorLookup1','ColorLookup2']:\\n           nuke.toNode(c)\\['lut'].fromScript(k.toScript())\"\n  xpos 840\n  ypos 1502\n }\npush $N99764800\n Dot {\n  name Dot51\n  xpos 115\n  ypos -726\n }\n Input {\n  inputs 0\n  name COMP\n  label \"\\[value number]\"\n  note_font_size 30\n  xpos 950\n  ypos -896\n }\n Dot {\n  name Dot49\n  xpos 984\n  ypos -605\n }\nset N748d4800 [stack 0]\n Switch {\n  inputs 2\n  which {{parent.meta}}\n  name Switch1\n  xpos 81\n  ypos -609\n }\n Dot {\n  name Dot54\n  xpos 115\n  ypos -486\n }\n Dot {\n  name Dot52\n  xpos -685\n  ypos -486\n }\n Dot {\n  name Dot53\n  xpos -685\n  ypos 3762\n }\npush $N751abc00\n Dot {\n  name Dot40\n  xpos 874\n  ypos 258\n }\npush $Ne5d2d800\n Dot {\n  name Dot34\n  xpos 624\n  ypos 378\n }\n Multiply {\n  inputs 1+1\n  channels rgb\n  value 0\n  maskChannelMask -rgba.red\n  name Multiply1\n  xpos 840\n  ypos 374\n }\npush $N748d4800\n OCIOColorSpace {\n  in_colorspace {{OCIOColorSpace1.in_colorspace}}\n  out_colorspace {{OCIOColorSpace1.out_colorspace}}\n  name OCIOColorSpace3\n  xpos 950\n  ypos -490\n }\n Dot {\n  name Dot44\n  xpos 984\n  ypos -390\n }\nset N7487e400 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge8\n  xpos 950\n  ypos 374\n  disable {{\"Multiply6.value.r == 0\"}}\n }\n Dot {\n  name Dot18\n  xpos 984\n  ypos 2658\n }\nset N7487dc00 [stack 0]\n ColorLookup {\n  lut {master {}\n    red {curve}\n    green {curve}\n    blue {curve}\n    alpha {}}\n  name ColorLookup2\n  xpos 730\n  ypos 2654\n }\npush $N751ab800\n Dot {\n  name Dot38\n  xpos 1204\n  ypos 1842\n }\n Dot {\n  name Dot37\n  xpos 544\n  ypos 1842\n }\n Dot {\n  name Dot22\n  xpos 544\n  ypos 2271\n }\nset N7487cc00 [stack 0]\n Dot {\n  name Dot20\n  xpos 544\n  ypos 2391\n }\npush $N7487cc00\n Dot {\n  name Dot17\n  xpos 434\n  ypos 2271\n }\nset N7487c400 [stack 0]\n Dot {\n  name Dot13\n  xpos 214\n  ypos 2271\n }\n Input {\n  inputs 0\n  name external_grain\n  label \"\\[value number]\"\n  note_font_size 30\n  xpos -150\n  ypos 1716\n  number 4\n }\n Dot {\n  name Dot21\n  xpos -116\n  ypos 1938\n }\npush $Ne5d2c800\n ColorLookup {\n  channels rgb\n  lut {master {}\n    red {curve}\n    green {curve}\n    blue {curve}\n    alpha {}}\n  name ColorLookup1\n  xpos 730\n  ypos 1502\n }\n Dot {\n  name Dot24\n  xpos 764\n  ypos 1746\n }\npush $N751aac00\n Dot {\n  name Dot33\n  xpos 324\n  ypos 1386\n }\n MergeExpression {\n  inputs 2\n  temp_name0 target\n  temp_expr0 .01\n  expr0 \"Br * (target / Ar)\"\n  expr1 \"Bg * (target / Ag)\"\n  expr2 \"Bb * (target / Ab)\"\n  channel3 none\n  name MergeExpression1\n  xpos 290\n  ypos 1742\n }\n Dot {\n  name Dot15\n  xpos 324\n  ypos 1842\n }\nset N7c8be000 [stack 0]\n Dot {\n  name Dot25\n  xpos 104\n  ypos 1842\n }\n Switch {\n  inputs 2\n  which {{parent.external_grain}}\n  name Switch2\n  xpos 70\n  ypos 1934\n }\n Group {\n  name VoronoiScatter\n  xpos 70\n  ypos 2102\n  disable {{!parent.scatter}}\n  addUserKnob {20 User}\n  addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T VoroNoise.useGPUIfAvailable}\n  addUserKnob {41 vectorize l \"Vectorize on CPU\" -STARTLINE T VoroNoise.vectorize}\n  addUserKnob {15 box}\n  box {{parent.box x1004 0 x1036 -75} {parent.box x1004 100 x1036 120} {parent.box x1004 496 x1036 325} {parent.box x1004 916 x1036 320}}\n  addUserKnob {3 sample_frame l \"sample frame\"}\n  sample_frame {{parent.sample_frame}}\n  addUserKnob {7 cell_size l \"cell size\" R 0 100}\n  cell_size {{parent.cell_size}}\n  addUserKnob {6 overlay_pattern l \"overlay pattern\" -STARTLINE}\n  overlay_pattern {{parent.overlay}}\n  addUserKnob {3 edge_blend_size l \"edge blend size\"}\n  edge_blend_size {{parent.edge_blend_size}}\n  addUserKnob {7 amplitude R 0 100}\n  amplitude {{parent.amplitude}}\n  addUserKnob {7 frequency R 0 100}\n  frequency {{parent.frequency}}\n  addUserKnob {41 VoroNoise_Seed l Seed T VoroNoise.VoroNoise_Seed}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 180\n   ypos -879\n  }\n  Dot {\n   name Dot14\n   xpos 214\n   ypos -750\n  }\nset N7c8bd400 [stack 0]\n  Dot {\n   name Dot16\n   xpos 434\n   ypos -750\n  }\n  Remove {\n   name Remove1\n   xpos 400\n   ypos -687\n  }\n  Dot {\n   name Dot6\n   xpos 434\n   ypos -606\n  }\nset N7c8bc800 [stack 0]\n  Dot {\n   name Dot15\n   xpos 654\n   ypos -606\n  }\nset N7c8bc400 [stack 0]\n  Dot {\n   name Dot7\n   xpos 874\n   ypos -606\n  }\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue none}\n   replace true\n   size {{parent.frequency} {\"parent.frequency * pixel_aspect\"}}\n   zoffset {{\"x + 1000\"}}\n   gamma 1\n   name Noise1\n   xpos 840\n   ypos -514\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue none}\n   replace true\n   size {{parent.Noise1.size} {parent.Noise1.size}}\n   zoffset {{x}}\n   gamma 1\n   name Noise2\n   xpos 840\n   ypos -466\n  }\n  Clamp {\n   name Clamp1\n   xpos 840\n   ypos -424\n  }\n  Dot {\n   name Dot11\n   xpos 874\n   ypos -366\n  }\npush $N7c8bc400\n  BlinkScript {\n   ProgramGroup 1\n   KernelDescription \"2 \\\"VoroNoise\\\" iterate pixelWise c117be128a07c11b6d82fd34148d66b3bcac41976ec9c2082affe38e890c2c0f 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 6 \\\"Frequency\\\" Float 1 AABIQg== \\\"Seed\\\" Int 1 AAAAAA== \\\"aspect ratio\\\" Float 1 AACAPw== \\\"width\\\" Int 1 AAAAAA== \\\"height\\\" Int 1 AAAAAA== \\\"Randomness\\\" Float 1 AAAAPw== 6 \\\"frequency\\\" 1 1 \\\"seed\\\" 1 1 \\\"aspect_ratio\\\" 1 1 \\\"width\\\" 1 1 \\\"height\\\" 1 1 \\\"randomness\\\" 1 1 0\"\n   kernelSource \"// Voronoi.blink\\n// A test implementation of libNoise's Voronoi generator using Blink\\n// Ivan Busquets - August 2013\\n// Modified for DasGrain by Fabian Holtz - April 2019\\n\\n#define X_NOISE_GEN  1619\\n#define Y_NOISE_GEN  31337\\n#define Z_NOISE_GEN  6971\\n#define SEED_NOISE_GEN  1013\\n#define SQRT_3 1.73205081\\n\\ninline int IntValueNoise3D (int x, int y, int z, int seed)\\n\\{\\n  // All constants are primes and must remain prime in order for this noise\\n  // function to work correctly.\\n  int n = (\\n      X_NOISE_GEN    * x\\n    + Y_NOISE_GEN    * y\\n    + Z_NOISE_GEN    * z\\n    + SEED_NOISE_GEN * seed)\\n    & 0x7fffffff;\\n  n = (n >> 13) ^ n;\\n  return (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff;\\n\\}\\n\\ninline float ValueNoise3D (int x, int y, int z, int seed)\\n\\{\\n  return 1.0 - ((float)IntValueNoise3D (x, y, z, seed) / 1073741824.0);\\n\\}\\n\\nkernel VoroNoise : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead> src;\\n  Image<eWrite, eAccessPoint> dst;\\n\\nparam:\\n  float frequency;\\n  int seed;\\n  float aspect_ratio;\\n  int width;\\n  int height;\\n  float randomness;\\n\\n\\n  void define() \\{\\n    defineParam(frequency, \\\"Frequency\\\", 50.0f);\\n    defineParam(aspect_ratio, \\\"aspect ratio\\\", 1.0f);\\n    defineParam(seed, \\\"Seed\\\", 0);\\n    defineParam(randomness, \\\"Randomness\\\", 0.5f);\\n  \\}\\n\\n\\n\\n\\n  void process(int2 pos) \\{\\n   float x = pos.x * aspect_ratio * frequency / width;\\n   float y = pos.y * frequency / width;\\n   int xInt = (x > 0.0) ? x : x - 1;\\n   int yInt = (y > 0.0) ? y : y - 1;\\n\\n\\n    float minDist = 2147483647.0;\\n    float xCandidate = 0;\\n    float yCandidate = 0;\\n\\n    float dist;\\n\\nfor (int yCur = yInt - 2; yCur <= yInt + 2; yCur++) \\{\\n      for (int xCur = xInt - 2; xCur <= xInt + 2; xCur++) \\{\\n\\n        // Calculate the position and distance to the seed point inside of\\n        // this unit cube. Limited by the randomness value\\n        float xPos = xCur + (ValueNoise3D (xCur, yCur, 0, seed    ) + 1 ) * randomness + (1-randomness) - 1;\\n        float yPos = yCur + (ValueNoise3D (xCur, yCur, 0, seed + 1) + 1 ) * randomness + (1-randomness) - 1;\\n\\n        float xDist = xPos - x;\\n        float yDist = yPos - y;\\n\\n        dist = pow(xDist, 2) + pow(yDist, 2);\\n        if (dist < minDist) \\{\\n          // This seed point is closer to any others found so far, so record\\n          // this seed point.\\n          minDist = dist;\\n          xCandidate = xPos;\\n          yCandidate = yPos;\\n\\t\\}\\n    \\}\\n\\}\\n\\n    SampleType(dst) sample(0.0f);\\n\\n    sample.x = xCandidate / aspect_ratio / frequency;\\n    sample.y = yCandidate / height * width / frequency;\\n    sample.z = 0;\\n\\n    dst() = sample;\\n\\}\\n\\};\"\n   rebuild \"\"\n   VoroNoise_Frequency {{\"width / parent.cell_size\"}}\n   VoroNoise_Seed {{\"(x + (parent.parent.stereo == 2 ? \\[lsearch \\[value root.views] \\[view]] / 2 : 0)) * 5\"}}\n   \"VoroNoise_aspect ratio\" {{pixel_aspect}}\n   VoroNoise_width {{width}}\n   VoroNoise_height {{height}}\n   rebuild_finalise \"\"\n   name VoroNoise\n   xpos 620\n   ypos -520\n  }\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 forward.u\n   from1 rgba.green\n   to1 forward.v\n   name Copy1\n   xpos 620\n   ypos -382\n   disable {{\"parent.amplitude == 0\"}}\n  }\n  IDistort {\n   uv forward\n   uv_offset 0.5\n   uv_scale {{parent.amplitude} {\"uv_scale.w * pixel_aspect\"}}\n   filter impulse\n   name IDistort1\n   xpos 620\n   ypos -280\n   disable {{\"parent.amplitude == 0\"}}\n  }\n  Dot {\n   name Dot5\n   xpos 654\n   ypos -246\n  }\n  NoTimeBlur {\n   rounding floor\n   name NoTimeBlur3\n   xpos 620\n   ypos -154\n  }\n  Transform {\n   translate {{\"floor((x * size) % 1 * (size)) - int(size / 2)\"} {\"floor(x % 1 * (size)) - int(size/2)\"}}\n   filter impulse\n   black_outside false\n   name Transform1\n   xpos 620\n   ypos -58\n   disable {{\"parent.edge_blend_size < 1\"}}\n   addUserKnob {20 User}\n   addUserKnob {3 size}\n   size {{\"parent.edge_blend_size + 1\"}}\n  }\n  Dot {\n   name Dot9\n   xpos 654\n   ypos 42\n  }\nset N7c875000 [stack 0]\npush $N7c8bc800\n  Expression {\n   expr0 \"(x + .5) / width\"\n   expr1 \"(y + .5) / height\"\n   expr2 0\n   name STMapGenerator\n   xpos 400\n   ypos -514\n  }\n  NoTimeBlur {\n   rounding floor\n   name NoTimeBlur2\n   xpos 400\n   ypos -154\n  }\n  Merge2 {\n   inputs 2\n   operation from\n   Achannels {rgba.red rgba.green -rgba.blue none}\n   Bchannels {rgba.red rgba.green -rgba.blue none}\n   output {rgba.red rgba.green -rgba.blue none}\n   name Merge2\n   xpos 400\n   ypos 38\n  }\n  Dot {\n   name Dot10\n   xpos 434\n   ypos 210\n  }\npush $N7c875000\n  Expression {\n   temp_name0 view_index\n   temp_expr0 \"parent.parent.stereo == 1 ? \\[lsearch \\[value root.views] \\[view]] / 2 : 0\"\n   expr0 \"random((r + view_index) * 1000000, 0) * (maxx - minx) + minx\"\n   expr1 \"random((g + view_index) * 1000000, 0) * (maxy - miny) + miny\"\n   channel2 none\n   channel3 none\n   name Expression3\n   xpos 620\n   ypos 110\n   addUserKnob {20 User}\n   addUserKnob {7 frequency R 0 100}\n   frequency {{parent.parent.cell_size}}\n   addUserKnob {7 multiplier R 0 3}\n   multiplier 0.5\n   addUserKnob {15 shrink}\n   shrink {{\"frequency * multiplier + ceil(parent.edge_blend_size / 2) + IDistort1.uv_scale.w / 2\"} {\"frequency * multiplier + ceil(parent.edge_blend_size / 2) + IDistort1.uv_scale.h / 2\"} {\"frequency * multiplier + floor(parent.edge_blend_size / 2) + IDistort1.uv_scale.w / 2\"} {\"frequency * multiplier + floor(parent.edge_blend_size / 2) + IDistort1.uv_scale.h / 2\"}}\n   addUserKnob {26 \"\"}\n   addUserKnob {7 minx}\n   minx {{\"(parent.box.x + shrink.x + .5) / width\"}}\n   addUserKnob {7 maxx}\n   maxx {{\"(parent.box.r - shrink.r - .5) / width\"}}\n   addUserKnob {7 miny}\n   miny {{\"(parent.box.y + shrink.y + .5) / height\"}}\n   addUserKnob {7 maxy}\n   maxy {{\"(parent.box.t - shrink.t - .5) / height\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   Achannels {rgba.red rgba.green -rgba.blue none}\n   Bchannels {rgba.red rgba.green -rgba.blue none}\n   output {rgba.red rgba.green -rgba.blue none}\n   name Merge3\n   xpos 620\n   ypos 206\n  }\n  Expression {\n   expr0 \"(r + (maxx - minx) - minx) % (maxx - minx) + minx\"\n   expr1 \"(g + (maxy - miny) - miny) % (maxy - miny) + miny\"\n   channel2 none\n   channel3 none\n   name Expression7\n   xpos 620\n   ypos 278\n   addUserKnob {20 User}\n   addUserKnob {7 minx}\n   minx {{\"(parent.box.x + rint(x % 1 * parent.edge_blend_size) + .5) / width\"}}\n   addUserKnob {7 maxx}\n   maxx {{\"(parent.box.r + rint(x % 1 * parent.edge_blend_size) - .5) / width\"}}\n   addUserKnob {7 miny}\n   miny {{\"(parent.box.y + rint(x % 1 * parent.edge_blend_size) + .5) / height\"}}\n   addUserKnob {7 maxy}\n   maxy {{\"(parent.box.t + rint(x % 1 * parent.edge_blend_size) - .5) / height\"}}\n  }\n  Dot {\n   name Dot3\n   xpos 654\n   ypos 354\n  }\nset N7b8a2c00 [stack 0]\n  Dot {\n   name Dot13\n   xpos 654\n   ypos 546\n  }\npush $N7b8a2c00\n  Dot {\n   name Dot8\n   xpos 874\n   ypos 354\n  }\n  Blur {\n   channels rgb\n   size {{pixel_aspect} 1}\n   name Blur1\n   label \"\\[value size]\"\n   xpos 840\n   ypos 440\n  }\n  Difference {\n   inputs 2\n   name Difference2\n   xpos 840\n   ypos 536\n  }\n  Expression {\n   channel0 {none none none rgba.alpha}\n   expr0 \"a > 1e-9\"\n   channel1 none\n   channel2 none\n   channel3 none\n   name Expression2\n   xpos 840\n   ypos 614\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle1\n   label \"\\[value in]:\\[value out]\"\n   xpos 840\n   ypos 680\n  }\n  Dot {\n   name Dot4\n   xpos 874\n   ypos 762\n  }\npush $N7b8a2c00\npush $N7c8bd400\n  FrameHold {\n   first_frame {{parent.sample_frame}}\n   name FrameHold1\n   xpos 180\n   ypos -256\n  }\n  NoTimeBlur {\n   rounding floor\n   name NoTimeBlur1\n   xpos 180\n   ypos -154\n  }\n  STMap {\n   inputs 2\n   channels rgb\n   uv rgb\n   filter impulse\n   name STMap1\n   xpos 180\n   ypos 350\n  }\nset N7b8a0800 [stack 0]\n  TimeBlur {\n   divisions {{\"max(Transform1.size == 1 ? 2 : pow2(Transform1.size), 1)\"}}\n   shutter 1\n   shuttercustomoffset {{\"1 / divisions / 2\"}}\n   name TimeBlur1\n   xpos 180\n   ypos 446\n   disable {{\"parent.edge_blend_size < 1\"}}\n  }\nset N7b8a0400 [stack 0]\npush $N7b8a0800\n  Dot {\n   name Dot1\n   xpos -6\n   ypos 354\n  }\n  Difference {\n   inputs 2\n   name Difference1\n   xpos -40\n   ypos 440\n  }\n  Expression {\n   channel0 {none none none rgba.alpha}\n   expr0 \"a > 1e-10\"\n   channel1 none\n   channel2 none\n   channel3 none\n   name Expression1\n   xpos -40\n   ypos 494\n  }\n  Blur {\n   channels alpha\n   size {{parent.parent.edge_blend_size}}\n   name Blur2\n   xpos -40\n   ypos 536\n  }\n  Grade {\n   channels alpha\n   blackpoint 0.5\n   white_clamp true\n   name Grade2\n   xpos -40\n   ypos 584\n  }\n  Dot {\n   name Dot2\n   xpos -6\n   ypos 666\n  }\npush $N7b8a0400\n  Grade {\n   inputs 1+1\n   white 1.4\n   black_clamp false\n   name Grade1\n   xpos 180\n   ypos 662\n   disable {{\"parent.edge_blend_size < 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   Achannels rgb\n   Bchannels rgb\n   output rgb\n   name Merge1\n   xpos 180\n   ypos 758\n   disable {{!parent.overlay_pattern}}\n  }\n  Assert {\n   expression {{\"Expression3.maxx > Expression3.minx && Expression3.maxy > Expression3.miny\"}}\n   message \"increase sample box size or decrease cell size\"\n   name error\n   xpos 180\n   ypos 854\n  }\n  Output {\n   name Output1\n   xpos 180\n   ypos 950\n  }\n end_group\n Multiply {\n  inputs 1+1\n  channels rgb\n  value 1.8\n  maskChannelMask {{{parent.Merge9.maskChannelMask}}}\n  invert_mask {{!Merge9.invert_mask}}\n  name Multiply7\n  xpos 70\n  ypos 2315\n  disable {{\"!maskChannelMask || !\\[exists parent.input3.name]\"}}\n }\n Dot {\n  name Dot23\n  xpos 104\n  ypos 2391\n }\npush $N7487c400\npush $N7c8be000\n Multiply {\n  inputs 1+1\n  channels rgb\n  value 1.8\n  maskChannelMask {{{parent.Merge9.maskChannelMask}}}\n  invert_mask {{parent.Merge9.invert_mask}}\n  name Multiply2\n  xpos 290\n  ypos 2315\n  disable {{\"!maskChannelMask || (!parent.scatter && !parent.external_grain)\"}}\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  maskChannelMask -rgba.alpha\n  name Merge9\n  xpos 290\n  ypos 2387\n  disable {{\"!(parent.scatter || parent.external_grain)\"}}\n }\n Dot {\n  name Dot11\n  xpos 324\n  ypos 2490\n }\nset N7b9d0400 [stack 0]\n MergeExpression {\n  inputs 2\n  temp_name0 reverse\n  temp_expr0 \"1 / MergeExpression1.temp_expr0\"\n  expr0 \"Br * Ar * reverse\"\n  expr1 \"Bg * Ag * reverse\"\n  expr2 \"Bb * Ab * reverse\"\n  name MergeExpression2\n  xpos 290\n  ypos 2654\n }\n Dot {\n  name Dot8\n  xpos 324\n  ypos 2850\n }\npush $N7487dc00\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge3\n  xpos 950\n  ypos 2846\n }\n Dot {\n  name Dot42\n  xpos 984\n  ypos 3018\n }\nset N7b96f000 [stack 0]\n OCIOColorSpace {\n  in_colorspace {{OCIOColorSpace1.out_colorspace}}\n  out_colorspace {{OCIOColorSpace1.in_colorspace}}\n  name OCIOColorSpace4\n  xpos 950\n  ypos 3086\n }\n Dot {\n  name Dot19\n  xpos 984\n  ypos 3162\n }\nset N7b96e800 [stack 0]\n Dot {\n  name Dot41\n  xpos 1204\n  ypos 3162\n }\nset N7b96e400 [stack 0]\n Dot {\n  name Dot36\n  xpos 1314\n  ypos 3162\n }\n Blur {\n  channels rgb\n  size 1\n  name Blur1\n  xpos 1280\n  ypos 3254\n }\npush $N7b96e400\n Merge2 {\n  inputs 2\n  operation difference\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge10\n  xpos 1170\n  ypos 3254\n }\n Multiply {\n  channels rgb\n  value 50\n  name Multiply3\n  xpos 1170\n  ypos 3302\n }\n Dot {\n  name Dot43\n  xpos 1204\n  ypos 3402\n }\npush $N7487e400\n Dot {\n  name Dot45\n  xpos 1424\n  ypos -390\n }\npush $N7b96f000\n Merge2 {\n  inputs 2\n  operation from\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge11\n  xpos 1390\n  ypos 3014\n }\n Dot {\n  name Dot46\n  xpos 1424\n  ypos 3522\n }\npush $N7b9d0400\n Dot {\n  name Dot14\n  xpos 104\n  ypos 2490\n }\n Dot {\n  name Dot12\n  xpos 104\n  ypos 3402\n }\npush $N99766400\n Dot {\n  name Dot47\n  xpos -556\n  ypos -390\n }\npush $Ne5d2fc00\n Merge2 {\n  inputs 2\n  operation from\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge12\n  xpos -590\n  ypos -202\n }\n Dot {\n  name Dot10\n  xpos -556\n  ypos 3522\n }\npush $N7b96e800\n Switch {\n  inputs 5\n  which {{output}}\n  name Output\n  xpos 950\n  ypos 3656\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"regrained comp\" \"plate grain\" \"normalised grain\" \"adapted grain\" \"grain QC\"}}\n }\n CopyMetaData {\n  inputs 2\n  mergeMode \"Meta only\"\n  name CopyMetaData1\n  xpos 950\n  ypos 3758\n }\n Output {\n  name Output1\n  xpos 950\n  ypos 3854\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Deep2VP.gizmo",
    "content": "Group {\n name Deep2VP\n tile_color 0x2866ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {26 title_camera_link l \"\" +STARTLINE T \"<b><font color=#5077FF>camera link (toolset required)</font></b>\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Deep data is related to camera. So when convert deep data to any datas, it required the camera data.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture and world matrix from selected camera and it will generate world space position data.\\n\\nYou can find the world space position pass store under <b>'deepPosition'</b> channel. The pass support volumatric deep data. If want to bring the position data to 2D in downstream. Please only use <b>DVPToImage</b> which comes along with this toolset.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data. So the position data still works if the camera is not animated.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_deepNormal l \"\" +STARTLINE T \"<b><font color=#5077FF>deepNormal (relight required)</font></b>\"}\n addUserKnob {41 normal_data l \"output normal data\" t \"Choose which normal data to use for DVP lighting system.\\n\\n<b>generated normal</b>\\nThis will generate world space normal from deepPosition data. It is imperfect, will get artifacts on object's edge, it works fine on object's core. Give user an option without normal data. Deep data from scanlineRender will missing tesselation process. Increase subdivision of the geo will get better result.\\n\\n<b>input 2D normal (world space)</b>\\nUse 2D normal from normal 2D input.\\n\\n<b>input 2D normal (camera space)</b>\\nUse 2D normal from normal 2D input.\\n\\n<b>input deep normal (camera space)</b>\\nIf deep contained normal data, type in the channel name and the tool will shuffle it for this tool.\" T menu01.normal_data}\n addUserKnob {6 useGPUIfAvailable l \"use GPU if available\" +HIDDEN +STARTLINE}\n useGPUIfAvailable true\n addUserKnob {7 deep_threshold l \"Deep Threshold\" t \"Adjust this value for better edge result.\\n\\ndefault value is 0.1\"}\n deep_threshold 0.5\n addUserKnob {1 DN_channel l \"input deep normal channel\" +HIDDEN}\n DN_channel deepNormal\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 4.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2021-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"Deep2VPosition&nbsp;(Deep2VP)<br>-&nbsp;added&nbsp;camera&nbsp;setting&nbsp;to&nbsp;metadata<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;rename&nbsp;to&nbsp;Deep2VP<br>-&nbsp;generate/select/import&nbsp;deepNormal&nbsp;in&nbsp;this&nbsp;node<br>-&nbsp;added&nbsp;generate&nbsp;normal&nbsp;in&nbsp;deep,&nbsp;still&nbsp;keep&nbsp;the&nbsp;previous&nbsp;one.<br><br>DVPort&nbsp;(DVPortal)<br>-&nbsp;renamed&nbsp;to&nbsp;DVPortal<br><br>DVPmatte<br>-&nbsp;removed&nbsp;'option'&nbsp;knob,&nbsp;2D&nbsp;matte&nbsp;can&nbsp;use&nbsp;'open&nbsp;matte'&nbsp;instead<br>-&nbsp;open&nbsp;matte&nbsp;can&nbsp;choose&nbsp;show&nbsp;matte&nbsp;or&nbsp;color<br><br>DVPattern<br>-&nbsp;internal&nbsp;setup&nbsp;same&nbsp;as&nbsp;DVPmatte<br>-&nbsp;added&nbsp;rotation&nbsp;knob<br>-&nbsp;support&nbsp;'open&nbsp;matte'<br><br>DVProjection<br>-&nbsp;remove&nbsp;bake&nbsp;and&nbsp;copy&nbsp;buttons<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br><br>DVPsetLight<br>-&nbsp;added&nbsp;shader&nbsp;setting&nbsp;and&nbsp;input&nbsp;shader<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;removed&nbsp;deepNormal&nbsp;setup,&nbsp;moved&nbsp;to&nbsp;Deep2VP&nbsp;node<br><br>DVPscene<br>-&nbsp;added&nbsp;multiple&nbsp;output&nbsp;options<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;DVP's&nbsp;lighting&nbsp;system<br><br>DVPrelight<br>-&nbsp;added&nbsp;specular&nbsp;setup<br>-&nbsp;added&nbsp;toon&nbsp;shade&nbsp;setup<br>-&nbsp;fix&nbsp;pointcloud&nbsp;preview&nbsp;with&nbsp;effects<br><br>DVPrelightPT<br>-&nbsp;split&nbsp;up&nbsp;point&nbsp;light&nbsp;from&nbsp;DVPrelight<br>-&nbsp;fix&nbsp;point&nbsp;light&nbsp;duplicated&nbsp;algorithm<br><br>DVPfresnel<br>-&nbsp;not&nbsp;required&nbsp;link&nbsp;camera&nbsp;anymore<br>-&nbsp;fix&nbsp;unpremult&nbsp;process,&nbsp;the&nbsp;result&nbsp;was&nbsp;too&nbsp;dark<br><br>DVPToImage<br>-&nbsp;remove&nbsp;all&nbsp;metadata&nbsp;created&nbsp;from&nbsp;Deep2VP<br>-&nbsp;same&nbsp;as&nbsp;Deep2VP&nbsp;node&nbsp;color<br><br>new&nbsp;nodes&nbsp;:<br>DVPColorCorrect<br><br>added&nbsp;shaders&nbsp;:<br>DVP&nbsp;Shader<br>DVP&nbsp;Toon&nbsp;Shader\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -764\n  ypos -11\n  bdwidth 249\n  bdheight 324\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -767\n  ypos -330\n  bdwidth 252\n  bdheight 261\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x8e388e00\n  label \"create deepPosition\"\n  note_font_size 42\n  xpos -143\n  ypos 67\n  bdwidth 368\n  bdheight 242\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x388e8e00\n  label \"create deepNormal (deep)\"\n  note_font_size 42\n  xpos -147\n  ypos 541\n  bdwidth 1524\n  bdheight 2788\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x388e8e00\n  label \"create deepNormal (2D)\"\n  note_font_size 42\n  xpos 1498\n  ypos 546\n  bdwidth 964\n  bdheight 2778\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x4c3535ff\n  label \"Another option, but I think not good as the previous hack result.\\nYou can try it.\"\n  note_font_size 12\n  xpos 130\n  ypos 2537\n  bdwidth 445\n  bdheight 155\n  z_order 1\n }\n Group {\n  inputs 0\n  name inverseMatrix_cam\n  tile_color 0x337f4cff\n  xpos -712\n  ypos 212\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rot_order XYZ\n  useMatrix true\n  focal {{parent.cam_focal}}\n  haperture {{parent.cam_haperture}}\n  name cam_data\n  xpos -704\n  ypos 112\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name cwin_data\n  xpos -604\n  ypos 110\n }\nadd_layer {deepNormal deepNormal.red deepNormal.green deepNormal.blue deepNormal.alpha}\n AddChannels {\n  inputs 0\n  channels {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  name addDNAC\n  xpos 3571\n  ypos 2150\n }\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n AddChannels {\n  inputs 0\n  channels deepRawColor\n  name addDRC\n  xpos -138\n  ypos -181\n }\n AddChannels {\n  inputs 0\n  channels deepNormal\n  name addDNC\n  xpos -143\n  ypos -289\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\n AddChannels {\n  inputs 0\n  channels deepPosition\n  name addDPC\n  xpos -135\n  ypos -404\n }\n Input {\n  inputs 0\n  name deep\n  xpos 0\n  ypos -553\n }\n DeepRecolor {\n  inputs 2\n  channels {{{addDPC.channels}}}\n  name DeepRecolor8\n  xpos 0\n  ypos -404\n }\n DeepRecolor {\n  inputs 2\n  channels {{{addDNC.channels}}}\n  name DeepRecolor10\n  xpos 0\n  ypos -289\n  disable {{\"parent.normal_data==3 && \\[string match \\[value parent.DN_channel] \\\"deepNormal\\\"] ? 1 : 0\"}}\n }\n DeepRecolor {\n  inputs 2\n  channels {{{addDRC.channels}}}\n  name DeepRecolor9\n  xpos 0\n  ypos -181\n }\n ModifyMetaData {\n  metadata {\n   {set DVPmatte 0}\n   {set DVPcamMTX \"\\[string range \\[string map \\{\\\"\\\\\\{\\\" \\\"\\\" \\\"\\\\\\}\\\" \\\"\\\"\\} \\[value parent.world_matrix]] 1 end-0]\"}\n   {set DVPcamAspect \"\\[value camAspect]\"}\n   {set DVPcamWin \"\\[value cam_win_translate] \\[value cam_win_scale] \\[value cam_winroll]\"}\n  }\n  name DVPmd\n  label \"setup metadata\"\n  xpos 0\n  ypos -89\n  addUserKnob {20 User}\n  addUserKnob {7 camAspect}\n  camAspect {{parent.cam_haperture/parent.cam_focal}}\n }\n DeepExpression {\n  chans1 deep\n  name spacer\n  xpos 0\n  ypos 3\n }\n DeepExpression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x/\\[value input.width] ) - 0.5 ) * \\[value camAspect] * deep.front )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y/\\[value input.height] ) - 0.5 ) * ( ( \\[value camAspect]*deep.front ) / ( \\[value input.width]/\\[value input.height] ) ) * 1 / \\[value root.format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 -deep.front\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"( xpos * \\[value cwin_data.world_matrix.0] + ypos * \\[value cwin_data.world_matrix.1] ) * \\[value cwin_data.win_scale.u] + ( \\[value camAspect] * deep.front * \\[value cwin_data.win_translate.u] / 2 )\"\n  deepPosition.green \"( xpos * \\[value cwin_data.world_matrix.4] + ypos * \\[value cwin_data.world_matrix.5] ) * \\[value cwin_data.win_scale.v] + ( \\[value camAspect] * deep.front * \\[value cwin_data.win_translate.v] / 2 )\"\n  deepPosition.blue zpos\n  name DeepExpression1\n  label \"apply cam window\"\n  xpos 0\n  ypos 175\n  addUserKnob {20 User}\n  addUserKnob {7 camAspect}\n  camAspect {{\"\\[metadata DVPcamAspect]+0\"}}\n }\n Dot {\n  name Dot3\n  xpos 34\n  ypos 404\n }\nset N82ee3800 [stack 0]\n Dot {\n  name Dot12\n  xpos 215\n  ypos 404\n }\nset N82ee3400 [stack 0]\n Dot {\n  name Dot33\n  xpos 1868\n  ypos 404\n }\nset N82ee3000 [stack 0]\n Dot {\n  name Dot14\n  xpos 2742\n  ypos 404\n }\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"(deepPosition.red * \\[value parent.world_matrix.0] + deepPosition.green * \\[value parent.world_matrix.1] + deepPosition.blue * \\[value parent.world_matrix.2]) + \\[value parent.world_matrix.3]\"\n  deepPosition.green \"(deepPosition.red * \\[value parent.world_matrix.4] + deepPosition.green * \\[value parent.world_matrix.5] + deepPosition.blue * \\[value parent.world_matrix.6]) + \\[value parent.world_matrix.7]\"\n  deepPosition.blue \"(deepPosition.red * \\[value parent.world_matrix.8] + deepPosition.green * \\[value parent.world_matrix.9] + deepPosition.blue * \\[value parent.world_matrix.10]) + \\[value parent.world_matrix.11]\"\n  name DeepExpression3\n  label \"world space position\"\n  xpos 2708\n  ypos 1539\n }\n Dot {\n  name Dot27\n  xpos 2742\n  ypos 1777\n }\nset N82ee2400 [stack 0]\n Dot {\n  name Dot28\n  xpos 3150\n  ypos 1777\n }\nset N82ee2000 [stack 0]\n Dot {\n  name Dot13\n  xpos 3732\n  ypos 1777\n }\n DeepRecolor {\n  inputs 2\n  channels {{{addDNAC.channels}}}\n  name DeepRecolor1\n  xpos 3698\n  ypos 2150\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"\\[value parent.DN_channel].red\"\n  deepNormal.green \"\\[value parent.DN_channel].green\"\n  deepNormal.blue \"\\[value parent.DN_channel].blue\"\n  name DeepExpression2\n  label \"shuffle input deep normal channel\"\n  xpos 3698\n  ypos 2242\n }\n Dot {\n  name Dot2\n  xpos 3732\n  ypos 3317\n }\n Input {\n  inputs 0\n  name normal2D\n  xpos 3306\n  ypos -189\n  number 1\n }\n Dot {\n  name Dot25\n  xpos 3340\n  ypos 1989\n }\nset N82ee0800 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 3306\n  ypos 2084\n }\n Shuffle {\n  alpha black\n  out deepNormal\n  name Shuffle4\n  xpos 3306\n  ypos 2158\n }\npush $N82ee2000\n DeepRecolor {\n  inputs 2\n  channels {deepNormal.red deepNormal.green deepNormal.blue none}\n  name DeepRecolor5\n  xpos 3116\n  ypos 2152\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"deepNormal.red * (1/alpha)\"\n  deepNormal.green \"deepNormal.green * (1/alpha)\"\n  deepNormal.blue \"deepNormal.blue * (1/alpha)\"\n  name DeepExpression4\n  label \"deep normal should unpremult normal by samples\"\n  xpos 3116\n  ypos 2244\n }\n Dot {\n  name Dot1\n  xpos 3150\n  ypos 3330\n }\npush $N82ee0800\n Remove {\n  operation keep\n  channels rgb\n  name Remove3\n  xpos 2888\n  ypos 1986\n }\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  name ColorMatrix1\n  label \"convert camera space to world space\"\n  xpos 2888\n  ypos 2068\n }\n Shuffle {\n  alpha black\n  out deepNormal\n  name Shuffle5\n  xpos 2888\n  ypos 2144\n }\npush $N82ee2400\n DeepRecolor {\n  inputs 2\n  channels {deepNormal.red deepNormal.green deepNormal.blue none}\n  name DeepRecolor6\n  xpos 2708\n  ypos 2138\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"deepNormal.red * (1/alpha)\"\n  deepNormal.green \"deepNormal.green * (1/alpha)\"\n  deepNormal.blue \"deepNormal.blue * (1/alpha)\"\n  name DeepExpression7\n  label \"deep normal should unpremult normal by samples\"\n  xpos 2708\n  ypos 2230\n }\n Dot {\n  name Dot31\n  xpos 2742\n  ypos 3338\n }\npush $N82ee3000\n Dot {\n  name Dot22\n  xpos 1868\n  ypos 1064\n }\nset N82ea5400 [stack 0]\n Group {\n  name DeepPositionToImage1\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 2181\n  ypos 1050\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N82ea4c00 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N82ea4c00\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Output {\n   name Output1\n   selected true\n   xpos 508\n   ypos 265\n  }\n end_group\n Shuffle {\n  in deepPosition\n  in2 alpha\n  alpha red2\n  name Shuffle12\n  xpos 2181\n  ypos 1154\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 2181\n  ypos 1236\n }\n Dot {\n  name Dot29\n  xpos 2215\n  ypos 1316\n }\nset N8325e800 [stack 0]\n Dot {\n  name Dot32\n  xpos 2080\n  ypos 1316\n }\n Dot {\n  name Dot30\n  xpos 2080\n  ypos 1670\n }\npush $N8325e800\n BlinkScript {\n  recompileCount 382\n  ProgramGroup 1\n  KernelDescription \"2 \\\"PosToNor\\\" iterate pixelWise cefc15fca60ad2728a271bbc156cbd773381d51a0d034d9c392d6485e9b47f03 2 \\\"src\\\" Read Random \\\"dst\\\" Write Point 1 \\\"deep threshold\\\" Float 1 zczMPQ== 1 \\\"dThreshold\\\" 1 1 0\"\n  kernelSource \"//----- General function start\\n\\ninline float dCheck(float shiftD, float origD, float dt)\\n\\{\\n    return fabs(shiftD-origD) > dt ;\\n\\}\\n\\ninline float nCalXY(float nxya, float nxyb, float sxya, float sxyb)\\n\\{\\n    return atan( (sxyb-nxyb) / -(sxya-nxya) ) / (PI/2) ;\\n\\}\\n\\ninline float nCalZ( float nza ,float nzb , float nzc , float sza , float szb , float szc )\\n\\{\\n    float temp = (PI/2) - atan( sqrt( pow(sza-nza, 2) + pow(szb-nzb, 2) ) / -(szc-nzc) ) ;\\n    if ( temp > (PI/2) ) \\{\\n      return 1 ;\\n    \\}\\n      return 1 - temp / (PI/2) ;\\n\\}\\n\\n//----- General function end\\n\\nkernel PosToNor : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eWrite, eAccessPoint> dst;\\n\\n  param:\\n  float dThreshold;\\n\\n  local:\\n\\n  void define() \\{\\n    defineParam( dThreshold , \\\"deep threshold\\\", 0.1f) ;\\n  \\}\\n\\n  void init() \\{\\n  \\}\\n\\n  void process(int2 pos) \\{\\n\\n    // neighbor pixel\\n    float xM = float(pos.x-1) ;\\n    float yM = float(pos.y-1) ;\\n    float xP = float(pos.x+1) ;\\n    float yP = float(pos.y+1) ;\\n\\n    // position setup\\n    SampleType(src) pN = src( pos.x , pos.y );\\n\\n    SampleType(src) pDE = src(xP, pos.y) ;\\n    SampleType(src) pDS = src(pos.x, yM) ;\\n    SampleType(src) pDW = src(xM, pos.y) ;\\n    SampleType(src) pDN = src(pos.x, yP) ;\\n\\n    SampleType(src) pDNE = src(xP, yP) ;\\n    SampleType(src) pDSE = src(xP, yM) ;\\n    SampleType(src) pDSW = src(xM, yM) ;\\n    SampleType(src) pDNW = src(xM, yP) ;\\n\\n    // normal\\n\\n    float norPX;\\n    float norPY;\\n    float norPZ;\\n\\n    // X\\n    if ( dCheck(pDW.z, pN.z, dThreshold) ) \\{\\n      norPX = nCalXY(pN.x, pN.z, pDE.x, pDE.z) ;\\n    \\}\\n    else \\{\\n      norPX = nCalXY(pN.x, pN.z, pDW.x, pDW.z) ;\\n    \\}\\n\\n    // Y\\n    if ( dCheck(pDS.z, pN.z, dThreshold) ) \\{\\n      norPY = nCalXY(pN.y, pN.z, pDN.y, pDN.z) ;\\n    \\}\\n    else \\{\\n      norPY = nCalXY(pN.y, pN.z, pDS.y, pDS.z) ;\\n    \\}\\n\\n    // Z\\n    norPZ = min( 1-fabs(norPX) , 1-fabs(norPY) ) ;\\n\\n    if ( dCheck(pDSW.z, pN.z, dThreshold) ) \\{\\n      norPZ = min( norPZ, nCalZ(pN.x, pN.y, pN.z, pDNE.x, pDNE.y, pDNE.z) ) ;\\n    \\}\\n    else \\{\\n      norPZ = min( norPZ, nCalZ(pN.x, pN.y, pN.z, pDSW.x, pDSW.y, pDSW.z) ) ;\\n    \\}\\n\\n    if ( dCheck(pDSE.z, pN.z, dThreshold) ) \\{\\n      norPZ = min( norPZ, nCalZ(pN.x, pN.y, pN.z, pDNW.x, pDNW.y, pDNW.z) ) ;\\n    \\}\\n    else \\{\\n      norPZ = min( norPZ, nCalZ(pN.x, pN.y, pN.z, pDSE.x, pDSE.y, pDSE.z) ) ;\\n    \\}\\n\\n//----- write out\\n    dst() = float4( norPX , norPY , norPZ , 0 ) ;\\n  \\}\\n\\};\"\n  useGPUIfAvailable {{parent.useGPUIfAvailable}}\n  rebuild \"\"\n  \"PosToNor_deep threshold\" {{parent.deep_threshold}}\n  protectKernelWhenPublishing true\n  rebuild_finalise \"\"\n  name BlinkScript5\n  xpos 2181\n  ypos 1423\n }\n Expression {\n  expr0 \"atan( atan(red) ) * 1.5\"\n  expr2 \"smoothstep( 0, 1, blue )\"\n  name Expression2\n  xpos 2181\n  ypos 1544\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos 2181\n  ypos 1661\n }\n Premult {\n  name Premult2\n  xpos 2181\n  ypos 1754\n }\n Unpremult {\n  name Unpremult2\n  xpos 2181\n  ypos 1834\n }\n Shuffle {\n  in rgb\n  alpha black\n  out deepNormal\n  name Shuffle13\n  xpos 2181\n  ypos 1914\n }\n Dot {\n  name Dot23\n  xpos 2215\n  ypos 2276\n }\npush $N82ea5400\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"(deepPosition.red * \\[value parent.world_matrix.0] + deepPosition.green * \\[value parent.world_matrix.1] + deepPosition.blue * \\[value parent.world_matrix.2]) + \\[value parent.world_matrix.3]\"\n  deepPosition.green \"(deepPosition.red * \\[value parent.world_matrix.4] + deepPosition.green * \\[value parent.world_matrix.5] + deepPosition.blue * \\[value parent.world_matrix.6]) + \\[value parent.world_matrix.7]\"\n  deepPosition.blue \"(deepPosition.red * \\[value parent.world_matrix.8] + deepPosition.green * \\[value parent.world_matrix.9] + deepPosition.blue * \\[value parent.world_matrix.10]) + \\[value parent.world_matrix.11]\"\n  name DeepExpression19\n  label \"world space position\"\n  xpos 1834\n  ypos 1892\n }\n DeepRecolor {\n  inputs 2\n  channels {deepNormal.red deepNormal.green deepNormal.blue none}\n  name DeepRecolor15\n  xpos 1834\n  ypos 2266\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"deepNormal.red * (1/alpha)\"\n  deepNormal.green \"deepNormal.green * (1/alpha)\"\n  deepNormal.blue \"deepNormal.blue * (1/alpha)\"\n  name DeepExpression21\n  label \"deep normal should unpremult normal by samples\"\n  xpos 1834\n  ypos 2358\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"\\[value dx]\"\n  deepNormal.green \"\\[value dy]\"\n  deepNormal.blue \"\\[value dz]\"\n  name DeepExpression22\n  label \"world space normal\"\n  xpos 1834\n  ypos 2450\n  addUserKnob {20 User}\n  addUserKnob {1 dx}\n  dx \"deepNormal.red * \\[value parent.world_matrix.0] + deepNormal.green * \\[value parent.world_matrix.1] + deepNormal.blue * \\[value parent.world_matrix.2]\"\n  addUserKnob {1 dy}\n  dy \"deepNormal.red * \\[value parent.world_matrix.4] + deepNormal.green * \\[value parent.world_matrix.5] + deepNormal.blue * \\[value parent.world_matrix.6]\"\n  addUserKnob {1 dz}\n  dz \"deepNormal.red * \\[value parent.world_matrix.8] + deepNormal.green * \\[value parent.world_matrix.9] + deepNormal.blue * \\[value parent.world_matrix.10]\"\n }\n Dot {\n  name Dot26\n  xpos 1868\n  ypos 3354\n }\npush $N82ee3400\n Group {\n  name DeepPositionToImage2\n  tile_color 0x3d99ff\n  label \"<font color=cyan>Image Output</font>\"\n  xpos 181\n  ypos 639\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l <b>Version</b> T n/a}\n  addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-05-23}\n  addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"for internal use\"}\n  addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Input {\n   inputs 0\n   name deep\n   xpos 508\n   ypos -26\n  }\n  Dot {\n   name Dot5\n   xpos 542\n   ypos 31\n  }\nset N83212400 [stack 0]\n  DeepExpression {\n   chans1 none\n   rgba.red deepPosition.red\n   rgba.green deepPosition.green\n   rgba.blue deepPosition.blue\n   rgba.alpha \"alpha == 0 ? 0 : 1\"\n   name DeepExpression15\n   xpos 656\n   ypos 28\n  }\n  DeepToImage {\n   name DeepToImage2\n   xpos 656\n   ypos 185\n  }\npush $N83212400\n  DeepToImage {\n   name DeepToImage1\n   xpos 508\n   ypos 80\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   blue blue\n   alpha black\n   out deepPosition\n   name ShuffleCopy1\n   xpos 508\n   ypos 185\n  }\n  Output {\n   name Output1\n   selected true\n   xpos 508\n   ypos 265\n  }\n end_group\n Shuffle {\n  in deepPosition\n  alpha black\n  name Shuffle3\n  xpos 181\n  ypos 770\n }\n Dot {\n  name Dot4\n  xpos 215\n  ypos 850\n }\nset N83210800 [stack 0]\n Dot {\n  name Dot5\n  xpos 342\n  ypos 850\n }\nset N83210400 [stack 0]\n Dot {\n  name Dot7\n  xpos 465\n  ypos 850\n }\nset N831bfc00 [stack 0]\n Dot {\n  name Dot8\n  xpos 592\n  ypos 850\n }\nset N831bf800 [stack 0]\n Dot {\n  name Dot11\n  xpos 722\n  ypos 850\n }\nset N831bf400 [stack 0]\n Dot {\n  name Dot16\n  xpos 848\n  ypos 850\n }\nset N831bf000 [stack 0]\n Dot {\n  name Dot18\n  xpos 994\n  ypos 850\n }\nset N831bec00 [stack 0]\n Dot {\n  name Dot20\n  xpos 1120\n  ypos 850\n }\n Transform {\n  translate {-1 1}\n  name Transform8\n  label nw\n  xpos 1086\n  ypos 924\n }\n Shuffle {\n  alpha black\n  out rgb\n  name Shuffle11\n  xpos 1086\n  ypos 1189\n }\n Dot {\n  name Dot21\n  xpos 1120\n  ypos 2404\n }\npush $N831bec00\n Transform {\n  translate {-1 1}\n  name Transform7\n  label se\n  xpos 960\n  ypos 924\n }\n Shuffle {\n  alpha black\n  out deepRawColor\n  name Shuffle7\n  xpos 960\n  ypos 1189\n }\n Dot {\n  name Dot19\n  xpos 994\n  ypos 2318\n }\npush $N831bf000\n Transform {\n  translate {1 1}\n  name Transform6\n  label ne\n  xpos 814\n  ypos 924\n }\n Shuffle {\n  alpha black\n  out rgb\n  name Shuffle6\n  xpos 814\n  ypos 1189\n }\n Dot {\n  name Dot17\n  xpos 848\n  ypos 2140\n }\npush $N831bf400\n Transform {\n  translate {-1 -1}\n  name Transform5\n  label sw\n  xpos 688\n  ypos 924\n }\n Shuffle {\n  alpha black\n  out deepRawColor\n  name Shuffle1\n  xpos 688\n  ypos 1189\n }\n Dot {\n  name Dot15\n  xpos 722\n  ypos 2054\n }\npush $N831bf800\n Transform {\n  translate {0 -1}\n  name Transform3\n  label s\n  xpos 558\n  ypos 924\n }\n Shuffle {\n  red black\n  green black\n  blue green\n  alpha blue\n  out deepRawColor\n  name Shuffle9\n  xpos 558\n  ypos 1189\n }\n Dot {\n  name Dot10\n  xpos 592\n  ypos 1686\n }\npush $N831bfc00\n Transform {\n  translate {0 1}\n  name Transform4\n  label n\n  xpos 431\n  ypos 924\n }\n Shuffle {\n  red green\n  green blue\n  blue black\n  alpha black\n  out deepRawColor\n  name Shuffle10\n  xpos 431\n  ypos 1189\n }\n Dot {\n  name Dot9\n  xpos 465\n  ypos 1573\n }\npush $N83210400\n Transform {\n  translate {-1 0}\n  name Transform2\n  label w\n  xpos 308\n  ypos 924\n }\n Shuffle {\n  red black\n  green black\n  blue red\n  alpha blue\n  out deepRawColor\n  name Shuffle8\n  xpos 308\n  ypos 1189\n }\n Dot {\n  name Dot6\n  xpos 342\n  ypos 1382\n }\npush $N83210800\n Transform {\n  translate {1 0}\n  name Transform1\n  label e\n  xpos 181\n  ypos 924\n }\n Shuffle {\n  green blue\n  blue black\n  alpha black\n  out deepRawColor\n  name Shuffle2\n  xpos 181\n  ypos 1189\n }\n Dot {\n  name Dot24\n  xpos 215\n  ypos 1269\n }\npush $N82ee3800\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"deepPosition.red * alpha\"\n  deepPosition.green \"deepPosition.green * alpha\"\n  deepPosition.blue \"deepPosition.blue * alpha\"\n  name DeepExpression15\n  label \"premult position\"\n  xpos 0\n  ypos 886\n }\n DeepRecolor {\n  inputs 2\n  channels {deepRawColor.red deepRawColor.green -deepRawColor.blue none}\n  name DeepRecolor2\n  xpos 0\n  ypos 1260\n }\n DeepRecolor {\n  inputs 2\n  channels {-deepRawColor.red -deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n  name DeepRecolor4\n  xpos 0\n  ypos 1373\n }\n DeepExpression {\n  temp_expr0 \"atan( (deepRawColor.green-deepPosition.blue)/-(deepRawColor.red-deepPosition.red) ) / (pi/2)\"\n  temp_expr1 (deepRawColor.green-deepPosition.blue)\n  temp_expr2 \"atan( (deepRawColor.alpha-deepPosition.blue)/-(deepRawColor.blue-deepPosition.red) ) / (pi/2)\"\n  chans0 {deepNormal.red -deepNormal.green -deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"(deepRawColor.green-deepPosition.blue)<\\[value dt] ? atan( (deepRawColor.green-deepPosition.blue)/-(deepRawColor.red-deepPosition.red) ) / (pi/2) : atan( (deepRawColor.alpha-deepPosition.blue)/-(deepRawColor.blue-deepPosition.red) ) / (pi/2)\"\n  name DeepExpression14\n  tile_color 0xff0000ff\n  label \"find normal.red\"\n  xpos 0\n  ypos 1472\n  addUserKnob {20 User}\n  addUserKnob {7 dt}\n  dt {{deep_threshold}}\n }\n DeepRecolor {\n  inputs 2\n  channels {deepRawColor.red deepRawColor.green -deepRawColor.blue none}\n  name DeepRecolor7\n  xpos 0\n  ypos 1564\n }\n DeepRecolor {\n  inputs 2\n  channels {-deepRawColor.red -deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n  name DeepRecolor11\n  xpos 0\n  ypos 1677\n }\n DeepExpression {\n  temp_expr0 \"atan( (deepRawColor.green-deepPosition.blue)/-(deepRawColor.red-deepPosition.green) ) / (pi/2)\"\n  temp_expr1 (deepRawColor.green-deepPosition.blue)\n  temp_expr2 \"atan( (deepRawColor.alpha-deepPosition.blue)/-(deepRawColor.blue-deepPosition.green) ) / (pi/2)\"\n  chans0 {-deepNormal.red deepNormal.green -deepNormal.blue none}\n  chans1 none\n  deepNormal.green \"(deepRawColor.green-deepPosition.blue)<\\[value dt] ? atan( (deepRawColor.green-deepPosition.blue)/-(deepRawColor.red-deepPosition.green) ) / (pi/2) : atan( (deepRawColor.alpha-deepPosition.blue)/-(deepRawColor.blue-deepPosition.green) ) / (pi/2)\"\n  name DeepExpression5\n  tile_color 0xff00ff\n  label \"find normal.green\"\n  xpos 0\n  ypos 1769\n  addUserKnob {20 User}\n  addUserKnob {7 dt}\n  dt {{deep_threshold}}\n }\n DeepExpression {\n  chans0 {-deepPosition.red -deepPosition.green -deepPosition.blue deepPosition.alpha}\n  chans1 {-deepNormal.red -deepNormal.green -deepNormal.blue deepNormal.alpha}\n  chans2 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  deepPosition.alpha red\n  deepNormal.alpha green\n  deepRawColor.alpha blue\n  name DeepExpression17\n  label \"shuffle channels for math\"\n  xpos 0\n  ypos 1861\n }\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.blue \"min( 1-abs(deepNormal.red) , 1-abs(deepNormal.green) )\"\n  name DeepExpression6\n  tile_color 0xffff\n  label \"get normal.blue step1\"\n  xpos 0\n  ypos 1953\n }\n DeepRecolor {\n  inputs 2\n  channels {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  name DeepRecolor3\n  xpos 0\n  ypos 2045\n }\n DeepRecolor {\n  inputs 2\n  name DeepRecolor12\n  xpos 0\n  ypos 2137\n }\n DeepExpression {\n  temp_name0 dir1\n  temp_expr0 \"\\[value tempA]>(pi/2) ? 1 : 1-(\\[value tempA])/(pi/2) )\"\n  temp_name1 dir2\n  temp_expr1 \"\\[value tempB]>(pi/2) ? 1 : 1-(\\[value tempB])/(pi/2) )\"\n  chans0 {-deepNormal.red -deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.blue \"(deepRawColor.blue-deepPosition.blue)>\\[value dt] ? (deepNormal.blue<dir1 ? deepNormal.blue : dir1) : (deepNormal.blue<dir2 ? deepNormal.blue : dir2)\"\n  name DeepExpression10\n  tile_color 0xffff\n  label \"get normal.blue step2\"\n  xpos 0\n  ypos 2217\n  addUserKnob {20 User}\n  addUserKnob {7 dt}\n  dt {{deep_threshold}}\n  addUserKnob {1 tempA}\n  tempA \"(pi/2) - atan( sqrt( pow2(deepRawColor.red-deepPosition.red) + pow2(deepRawColor.green-deepPosition.green) ) / -(deepRawColor.blue-deepPosition.blue) )\"\n  addUserKnob {1 tempB}\n  tempB \"(pi/2) - atan( sqrt( pow2(red-deepPosition.red) + pow2(green-deepPosition.green) ) / -(blue-deepPosition.blue) )\"\n }\n DeepRecolor {\n  inputs 2\n  channels {deepRawColor.red deepRawColor.green deepRawColor.blue none}\n  name DeepRecolor13\n  xpos 0\n  ypos 2309\n }\n DeepRecolor {\n  inputs 2\n  name DeepRecolor14\n  xpos 0\n  ypos 2401\n }\n DeepExpression {\n  temp_name0 dir1\n  temp_expr0 \"\\[value tempA]>(pi/2) ? 1 : 1-(\\[value tempA])/(pi/2) )\"\n  temp_name1 dir2\n  temp_expr1 \"\\[value tempB]>(pi/2) ? 1 : 1-(\\[value tempB])/(pi/2) )\"\n  chans0 {-deepNormal.red -deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.blue \"(deepRawColor.blue-deepPosition.blue)>\\[value dt] ? (deepNormal.blue<dir1 ? deepNormal.blue : dir1) : (deepNormal.blue<dir2 ? deepNormal.blue : dir2)\"\n  name DeepExpression16\n  tile_color 0xffff\n  label \"get normal.blue step3\"\n  xpos 0\n  ypos 2481\n  addUserKnob {20 User}\n  addUserKnob {7 dt}\n  dt {{deep_threshold}}\n  addUserKnob {1 tempA}\n  tempA \"(pi/2) - atan( sqrt( pow2(deepRawColor.red-deepPosition.red) + pow2(deepRawColor.green-deepPosition.green) ) / -(deepRawColor.blue-deepPosition.blue) )\"\n  addUserKnob {1 tempB}\n  tempB \"(pi/2) - atan( sqrt( pow2(red-deepPosition.red) + pow2(green-deepPosition.green) ) / -(blue-deepPosition.blue) )\"\n }\nset N83514400 [stack 0]\n DeepExpression {\n  chans0 {deepNormal.red -deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"atan( atan(deepNormal.red) ) * 1.5\"\n  deepNormal.blue \"smoothstep( 0, 1, deepNormal.blue )\"\n  name DeepExpression13\n  label \"final adjustment\\n(hacked)\"\n  xpos 0\n  ypos 2609\n }\n DeepExpression {\n  chans0 rgb\n  chans1 none\n  rgba.red deepPosition.alpha\n  rgba.green deepNormal.alpha\n  rgba.blue deepRawColor.alpha\n  name DeepExpression18\n  label \"revert RGB\"\n  xpos 0\n  ypos 2828\n }\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"deepPosition.red * (1/alpha)\"\n  deepPosition.green \"deepPosition.green * (1/alpha)\"\n  deepPosition.blue \"deepPosition.blue * (1/alpha)\"\n  name DeepExpression8\n  label \"unpremult position\"\n  xpos 0\n  ypos 2920\n }\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"(deepPosition.red * \\[value parent.world_matrix.0] + deepPosition.green * \\[value parent.world_matrix.1] + deepPosition.blue * \\[value parent.world_matrix.2]) + \\[value parent.world_matrix.3]\"\n  deepPosition.green \"(deepPosition.red * \\[value parent.world_matrix.4] + deepPosition.green * \\[value parent.world_matrix.5] + deepPosition.blue * \\[value parent.world_matrix.6]) + \\[value parent.world_matrix.7]\"\n  deepPosition.blue \"(deepPosition.red * \\[value parent.world_matrix.8] + deepPosition.green * \\[value parent.world_matrix.9] + deepPosition.blue * \\[value parent.world_matrix.10]) + \\[value parent.world_matrix.11]\"\n  name DeepExpression11\n  label \"world space position\"\n  xpos 0\n  ypos 3012\n }\n DeepExpression {\n  chans0 {deepNormal.red deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.red \"\\[value dx]\"\n  deepNormal.green \"\\[value dy]\"\n  deepNormal.blue \"\\[value dz]\"\n  name DeepExpression9\n  label \"world space normal\"\n  xpos 0\n  ypos 3104\n  addUserKnob {20 User}\n  addUserKnob {1 dx}\n  dx \"deepNormal.red * \\[value parent.world_matrix.0] + deepNormal.green * \\[value parent.world_matrix.1] + deepNormal.blue * \\[value parent.world_matrix.2]\"\n  addUserKnob {1 dy}\n  dy \"deepNormal.red * \\[value parent.world_matrix.4] + deepNormal.green * \\[value parent.world_matrix.5] + deepNormal.blue * \\[value parent.world_matrix.6]\"\n  addUserKnob {1 dz}\n  dz \"deepNormal.red * \\[value parent.world_matrix.8] + deepNormal.green * \\[value parent.world_matrix.9] + deepNormal.blue * \\[value parent.world_matrix.10]\"\n }\n Switch {\n  inputs 5\n  which {{parent.normal_data}}\n  name Switch1\n  xpos 0\n  ypos 4187\n }\n DeepExpression {\n  chans0 deepRawColor\n  chans1 none\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  deepRawColor.alpha alpha\n  name DeepExpression12\n  label \"keep input color\"\n  xpos 0\n  ypos 4327\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 4510\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['normal_data'].getValue() <= 1 :\\n    thisGRP\\['deep_threshold'].setVisible(True)\\nelse :\\n    thisGRP\\['deep_threshold'].setVisible(False)\\n\\nif thisGRP\\['normal_data'].getValue() == 1 :\\n    thisGRP\\['useGPUIfAvailable'].setVisible(True)\\nelse :\\n    thisGRP\\['useGPUIfAvailable'].setVisible(False)\\n\\nif thisGRP\\['normal_data'].getValue() == 4 :\\n    thisGRP\\['DN_channel'].setVisible(True)\\nelse :\\n    thisGRP\\['DN_channel'].setVisible(False)\\n\"\n  xpos -710\n  ypos -188\n  addUserKnob {20 User}\n  addUserKnob {4 normal_data l \"output normal data\" M {\"generated deep normal (est from position) \" \"generated 2D normal (est from position) \" \"input 2D normal (camera space) \" \"input 2D normal (world space) \" \"shuffle input deep normal (world space)\" \"\"}}\n }\npush $N83514400\n DeepExpression {\n  chans0 {-deepNormal.red -deepNormal.green deepNormal.blue none}\n  chans1 none\n  deepNormal.blue \"sin( deepNormal.blue * (pi/2) )\"\n  name DeepExpression20\n  tile_color 0xffff\n  label \"finalize normal.blue\"\n  xpos 172\n  ypos 2619\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Deep2VPosition.gizmo",
    "content": "Group {\n name Deep2VPosition\n tile_color 0x2866ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Deep data is related to camera. So when convert deep data to anything, it required the camera data.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture and world matrix from selected camera to generate world space position data.\\n\\nYou can find the world space position pass store under <b>'deepPosition'</b> channel after this node. The pass support volumatric deep data. If want to bring the position data to 2D in downstream. Please only use <b>DVPToImage</b> which comes along with this toolset.\\n\\nAdditional note:\\nThis node will also create another channel called <b>'deepRawColor'</b> . This channel stored the original of deep data from input for any dev purposes in downstream. User not necessary to use this channel but better to keep it if this toolset occur in downstream.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data. So the position data still works if input doesn't contain any camera movement.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 3.8}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2020-02-13}\n addUserKnob {22 btn_CHANGELOG l <b>Changlelog</b> T \"log = \\\"3.8<br>'DVPMatte'<br>&nbsp;&nbsp;-&nbsp;fixed&nbsp;cube&nbsp;matte&nbsp;shape&nbsp;result&nbsp;when&nbsp;pivot&nbsp;changed.&nbsp;Sphere&nbsp;and&nbsp;Cylinder&nbsp;were&nbsp;fine&nbsp;in&nbsp;the&nbsp;past&nbsp;versions.<br>'DVProjection'<br>&nbsp;&nbsp;-&nbsp;link&nbsp;camera&nbsp;replaced&nbsp;transformation&nbsp;by&nbsp;world&nbsp;matrix,&nbsp;so&nbsp;it&nbsp;works&nbsp;with&nbsp;camera&nbsp;stack&nbsp;with&nbsp;axis.<br>&nbsp;&nbsp;-&nbsp;removed&nbsp;preview&nbsp;projection&nbsp;camera&nbsp;in&nbsp;3D&nbsp;view.<br><br>3.7<br>Toolset&nbsp;update&nbsp;:<br>&nbsp;&nbsp;'DVPort'<br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;added&nbsp;'near'&nbsp;&&nbsp;'far&nbsp;knobs<br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;capable&nbsp;with&nbsp;'DeepBoolean'&nbsp;v1.4<br>&nbsp;&nbsp;'DVPmatte'<br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;fixed&nbsp;missing&nbsp;premult&nbsp;original&nbsp;alpha&nbsp;process<br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;capable&nbsp;with&nbsp;'DeepBoolean'&nbsp;v1.4<br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;revert&nbsp;uniform_scale&nbsp;default&nbsp;value&nbsp;back&nbsp;to&nbsp;1.0<br><br>3.6<br>'DVPsetLight'<br>-&nbsp;improved&nbsp;'generated&nbsp;normal&nbsp;(estimate&nbsp;from&nbsp;position)'&nbsp;and&nbsp;changed&nbsp;to&nbsp;blink&nbsp;script.&nbsp;Get&nbsp;better&nbsp;edges&nbsp;on&nbsp;deepNormal.\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -770\n  ypos -291\n  bdwidth 528\n  bdheight 265\n }\n Group {\n  inputs 0\n  name inverseMatrix_cam\n  tile_color 0x337f4cff\n  xpos -712\n  ypos -149\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -546\n  ypos -169\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rot_order XYZ\n  useMatrix true\n  focal {{parent.cam_focal}}\n  haperture {{parent.cam_haperture}}\n  name cam_data\n  xpos -412\n  ypos -170\n }\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n AddChannels {\n  inputs 0\n  channels deepRawColor\n  name AddChannels2\n  xpos -138\n  ypos -15\n }\nadd_layer {deepPosition deepPosition.red deepPosition.green deepPosition.blue deepPosition.alpha}\n AddChannels {\n  inputs 0\n  channels deepPosition\n  name AddChannels3\n  xpos -137\n  ypos -291\n }\n Input {\n  inputs 0\n  name deep\n  xpos 0\n  ypos -373\n }\n DeepRecolor {\n  inputs 2\n  channels {{{parent.AddChannels3.channels}}}\n  name DeepRecolor2\n  xpos 0\n  ypos -291\n }\n DeepExpression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x/\\[value input.width] ) - 0.5 ) * \\[value hratio] * deep.front )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y/\\[value input.height] ) - 0.5 ) * ( ( \\[value hratio]*deep.front ) / ( \\[value input.width]/\\[value input.height] ) ) * 1 / \\[value root.format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 -deep.front\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value hratio] * deep.front * \\[value fb_data.win_translate.u] / 2 )\"\n  deepPosition.green \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value hratio] * deep.front * \\[value fb_data.win_translate.v] / 2 )\"\n  deepPosition.blue zpos\n  name DeepExpression3\n  label \"apply cam window\"\n  xpos 0\n  ypos -197\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"\\[value cam_data.haperture] / \\[value cam_data.focal]\"}}\n }\n DeepExpression {\n  chans0 {deepPosition.red deepPosition.green deepPosition.blue none}\n  chans1 none\n  deepPosition.red \"(deepPosition.red * \\[value cam_data.world_matrix.0] + deepPosition.green * \\[value cam_data.world_matrix.1] + deepPosition.blue * \\[value cam_data.world_matrix.2]) + \\[value cam_data.world_matrix.3]\"\n  deepPosition.green \"(deepPosition.red * \\[value cam_data.world_matrix.4] + deepPosition.green * \\[value cam_data.world_matrix.5] + deepPosition.blue * \\[value cam_data.world_matrix.6]) + \\[value cam_data.world_matrix.7]\"\n  deepPosition.blue \"(deepPosition.red * \\[value cam_data.world_matrix.8] + deepPosition.green * \\[value cam_data.world_matrix.9] + deepPosition.blue * \\[value cam_data.world_matrix.10]) + \\[value cam_data.world_matrix.11]\"\n  name DeepExpression5\n  label \"back to camera position\"\n  xpos 0\n  ypos -103\n }\n DeepRecolor {\n  inputs 2\n  channels {{{parent.AddChannels2.channels}}}\n  name DeepRecolor4\n  xpos 0\n  ypos -15\n }\n DeepExpression {\n  chans0 {deepRawColor.red deepRawColor.green deepRawColor.blue deepPosition.alpha}\n  chans1 none\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  deepPosition.alpha alpha\n  name DeepExpression1\n  label \"keep input color\"\n  xpos 0\n  ypos 79\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 173\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepBoolean.gizmo",
    "content": "Group {\n name DeepBoolean\n tile_color 0x597fff\n label \"mode : \\[value mode]\\n<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Deep data is all related to camera, so the tool required camera data as well. Select the camera and click this button, the tool will gather all the information that it needs from camera node.\\n\\nIt is fine if the camera connected some axis with transformation on it's upstream. It is because this button will collect world matrix for transformation.\\n\\nRequired data can be find under 'Camera Data'\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_near','cam_far','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'near' : 'near',\\n\\t\\t\\t'far' : 'far',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.near'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.far'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[6]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[7]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['near']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['far']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[6]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[7]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the camera expression with this button. It will remain the current camera data in this node but not with animation.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_near','cam_far','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_near','cam_far','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" t \"focal length of the camera\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" t \"horiz aperture of the camera\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {7 cam_near l near t \"near clip value of the camera\" R 0.1 10}\n cam_near 0.1\n addUserKnob {7 cam_far l far t \"far clip value of the camera\" R 11 10000}\n cam_far 10000\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" t \"world matrix of the camera\" T cam_data.matrix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 title_geomatte l \"<b>GEO MATTE</a>\"}\n addUserKnob {4 mode t \"<b>intersect</b>\\nkeep the data overlap with the geo matte.\\n\\n<b>subtract</b>\\nremove the data overlap with the geo matte.\\n\\nRemarks:\\nsubtract is alike deepholdout function but support with geo matte extrude/erode in z and falloff.\" M {intersect subtract}}\n addUserKnob {6 uv_fix l \"create new UV for holdout geo\" t \"If the geo has no UV, extrude the holdout will break the setup. This option to fix a geo without UV.\" +STARTLINE}\n addUserKnob {7 extrude t \"extrude the geo faces by normal\" R -4 4}\n addUserKnob {78 erode_front l \"deep erode front\" t \"erode the deep data clipped by geo matte in front data (closer from the camera)\" n 1}\n addUserKnob {78 erode_back l back t \"erode the deep data clipped by geo matte in back data (further from the camera)\" -STARTLINE n 1}\n addUserKnob {7 falloff t \"create a linear falloff matte from the geo.\"}\n addUserKnob {7 falloff_scale l \"falloff scale\" R 0.01 1000}\n falloff_scale 100\n addUserKnob {78 bias t \"This value for dev purposes. default value is 1.0\" +INVISIBLE n 1}\n bias 1\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-09}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;support&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;(re-rack)<br>-&nbsp;removed&nbsp;vert&nbsp;aperture&nbsp;(unnecessary)<br>-&nbsp;linked/bake/copy&nbsp;camera&nbsp;data&nbsp;has&nbsp;the&nbsp;same&nbsp;function&nbsp;as&nbsp;Deep2VP<br>&nbsp;&nbsp;support&nbsp;non&nbsp;'Camera'/'Camera2'&nbsp;node&nbsp;class<br>-&nbsp;capable&nbsp;with&nbsp;Deep2VP&nbsp;3.7+&nbsp;(able&nbsp;to&nbsp;combine&nbsp;with&nbsp;DVPmatte)<br><br>1.3<br>-&nbsp;download&nbsp;tool&nbsp;with&nbsp;demo&nbsp;script<br>-&nbsp;change&nbsp;label&nbsp;of&nbsp;the&nbsp;knob&nbsp;to<br>&nbsp;&nbsp;'deep&nbsp;erode&nbsp;front/back'<br>&nbsp;&nbsp;(&nbsp;function&nbsp;&&nbsp;knob&nbsp;name&nbsp;doesn't&nbsp;change&nbsp;)<br><br>1.2<br>-&nbsp;optimize&nbsp;the&nbsp;setup,&nbsp;get&nbsp;less<br>&nbsp;&nbsp;calculation<br>-&nbsp;added&nbsp;falloff&nbsp;scale\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  focal {{parent.cam_focal}}\n  haperture {{parent.cam_haperture}}\n  near {{parent.cam_near}}\n  far {{parent.cam_far}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  winroll {{parent.cam_winroll}}\n  name cam_data\n  xpos -140\n  ypos -350\n }\n Dot {\n  name Dot13\n  xpos -6\n  ypos -326\n }\nset Nb8eb800 [stack 0]\n Dot {\n  name Dot14\n  xpos -6\n  ypos -166\n }\npush $Nb8eb800\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1\n  box_height 1\n  box_fixed true\n  resize none\n  filter Impulse\n  name Reformat1\n  xpos -40\n  ypos -569\n }\n Expression {\n  expr0 1\n  channel1 none\n  channel2 none\n  channel3 none\n  name Expression1\n  xpos -40\n  ypos -489\n }\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 180\n  ypos -673\n }\n Multiply {\n  channels alpha\n  value 0.5\n  name tranparency\n  xpos 180\n  ypos -573\n }\n Displacement {\n  inputs 2\n  displacement_channel red\n  scale {{parent.extrude}}\n  filter_size 0\n  filter Impulse\n  displacement_max_tessellation 0\n  displacement_mode uniform\n  name Displacement1\n  xpos 180\n  ypos -489\n }\n Input {\n  inputs 0\n  name geoMat\n  xpos 290\n  ypos -809\n }\n Dot {\n  name Dot1\n  xpos 324\n  ypos -406\n }\n ApplyMaterial {\n  inputs 2\n  display off\n  name ApplyMaterial1\n  xpos 180\n  ypos -409\n }\n UVProject {\n  inputs 2\n  selectable false\n  projection planar\n  name UVProject1\n  label \"save the geo without uv\"\n  xpos 180\n  ypos -333\n  disable {{!parent.uv_fix}}\n }\n Input {\n  inputs 0\n  name deep\n  xpos 840\n  ypos -809\n  number 1\n }\n Dot {\n  name Dot4\n  xpos 874\n  ypos -246\n }\nset N2008b000 [stack 0]\n DeepToImage {\n  name DeepToImage2\n  xpos 290\n  ypos -249\n }\n Remove {\n  name Remove1\n  xpos 290\n  ypos -173\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  filter Impulse\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  N_channel rgba\n  name ScanlineRender1\n  xpos 180\n  ypos -169\n }\n DeepExpression {\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"alpha * 1/0.5\"\n  name DeepExpression1\n  label \"revert alpha\"\n  xpos 180\n  ypos -98\n }\n DeepExpression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  chans0 rgb\n  chans1 none\n  rgba.red 0\n  rgba.green 0\n  rgba.blue \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name DeepExpression3\n  label \"cam normal z\"\n  xpos 180\n  ypos 67\n }\n Dot {\n  name Dot12\n  xpos 214\n  ypos 154\n }\nset N200bd800 [stack 0]\n Dot {\n  name Dot3\n  xpos 214\n  ypos 314\n }\nset N200bd400 [stack 0]\n Dot {\n  name Dot8\n  xpos -6\n  ypos 314\n }\nset N200bd000 [stack 0]\n Dot {\n  name Dot10\n  xpos -163\n  ypos 314\n }\n DeepToImage {\n  name DeepToImage6\n  xpos -197\n  ypos 764\n }\n Dot {\n  name Dot11\n  xpos -163\n  ypos 1274\n }\npush $N200bd000\n DeepExpression {\n  chans0 {-rgba.red rgba.green -rgba.blue none}\n  chans1 none\n  rgba.green \"blue < \\[value bias] ? deep.front : 0\"\n  name DeepExpression6\n  label farD\n  xpos -40\n  ypos 387\n }\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front \"green == 0 ? -1 : deep.front\"\n  deep.back \"green == 0 ? -1 : deep.back\"\n  name DeepExpression7\n  label \"throw data\"\n  xpos -40\n  ypos 481\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {0 0 {input.width} {input.height}}\n  name DeepCrop2\n  label \"clean trash\"\n  xpos -40\n  ypos 575\n }\n DeepExpression {\n  chans1 deep\n  deep.front -deep.front\n  deep.back -deep.back\n  name DeepExpression14\n  label \"swap the furthest deep value\"\n  xpos -40\n  ypos 669\n }\n DeepToImage {\n  name DeepToImage4\n  xpos -40\n  ypos 763\n }\n Add {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  value {{parent.erode_back}}\n  name Add1\n  label \"back erode\"\n  xpos -40\n  ypos 881\n }\n Dot {\n  name Dot7\n  xpos -6\n  ypos 1149\n }\npush $N200bd400\n DeepExpression {\n  chans0 {rgba.red -rgba.green -rgba.blue none}\n  chans1 none\n  rgba.red \"blue > -\\[value parent.bias] ? deep.front : 0\"\n  name DeepExpression4\n  label nearD\n  xpos 180\n  ypos 388\n }\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front \"red == 0 ? -1 : deep.front\"\n  deep.back \"red == 0 ? -1 : deep.back\"\n  name DeepExpression5\n  label \"throw data\"\n  xpos 180\n  ypos 482\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {0 0 {input.width} {input.height}}\n  name DeepCrop1\n  label \"clean trash\"\n  xpos 180\n  ypos 562\n }\n DeepToImage {\n  name DeepToImage3\n  xpos 180\n  ypos 763\n }\n Add {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  value {{-parent.erode_front}}\n  name Add2\n  label \"front erode\"\n  xpos 180\n  ypos 882\n }\n Dot {\n  name Dot6\n  xpos 214\n  ypos 1034\n }\npush $N200bd800\n DeepExpression {\n  chans1 none\n  rgba.red 0\n  rgba.green 0\n  rgba.blue 0\n  rgba.alpha 0\n  name DeepExpression13\n  xpos 400\n  ypos 151\n }\npush $N2008b000\n DeepMerge {\n  inputs 2\n  name DeepMerge1\n  xpos 840\n  ypos 151\n }\n Dot {\n  name Dot5\n  xpos 874\n  ypos 554\n }\nset N20102400 [stack 0]\n Dot {\n  name Dot17\n  xpos 434\n  ypos 554\n }\n DeepToImage {\n  name DeepToImage5\n  xpos 400\n  ypos 769\n }\n Remove {\n  name Remove2\n  xpos 400\n  ypos 885\n }\nadd_layer {deepGeoMat deepGeoMat.red deepGeoMat.green deepGeoMat.blue deepGeoMat.alpha}\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green black\n  blue black\n  alpha alpha2\n  out deepGeoMat\n  name ShuffleCopy2\n  label \"copy red\"\n  xpos 400\n  ypos 1027\n }\n ShuffleCopy {\n  inputs 2\n  in2 deepGeoMat\n  green green\n  blue black\n  alpha black\n  out deepGeoMat\n  name ShuffleCopy3\n  label \"copy green\"\n  xpos 400\n  ypos 1142\n }\n ShuffleCopy {\n  inputs 2\n  in2 deepGeoMat\n  blue blue\n  alpha black\n  out deepGeoMat\n  name ShuffleCopy1\n  label \"copy blue\"\n  xpos 400\n  ypos 1267\n }\n Dot {\n  name Dot9\n  xpos 434\n  ypos 1354\n }\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n AddChannels {\n  inputs 0\n  channels deepRawColor\n  name AddChannels1\n  xpos 697\n  ypos 707\n }\npush $N20102400\n DeepRecolor {\n  inputs 2\n  channels {{{parent.AddChannels1.channels}}}\n  name DeepRecolor1\n  xpos 840\n  ypos 707\n }\n DeepExpression {\n  chans0 deepRawColor\n  chans1 none\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  deepRawColor.alpha alpha\n  name DeepExpression2\n  label \"store color to deepRawColor\"\n  xpos 840\n  ypos 867\n }\n DeepExpression {\n  chans0 alpha\n  chans1 none\n  rgba.alpha 1\n  name DeepExpression11\n  label \"solid the alpha for data pass calculation\"\n  xpos 840\n  ypos 947\n }\n DeepRecolor {\n  inputs 2\n  channels deepGeoMat\n  name DeepRecolor2\n  xpos 840\n  ypos 1347\n }\n DeepExpression {\n  chans0 {-deepGeoMat.red -deepGeoMat.green -deepGeoMat.blue deepGeoMat.alpha}\n  chans1 none\n  deepGeoMat.alpha \"deep.front - deepGeoMat.red < \\[value globalValue.falloff] ? clamp( ( deep.front - deepGeoMat.red ) / \\[value globalValue.falloff] ) : 1\"\n  name DeepExpression9\n  label \"front falloff\"\n  xpos 840\n  ypos 1435\n }\n DeepExpression {\n  chans0 {-deepGeoMat.red -deepGeoMat.green -deepGeoMat.blue deepGeoMat.alpha}\n  chans1 none\n  deepGeoMat.alpha \"( deep.front - ( deepGeoMat.green - \\[value globalValue.falloff] ) ) < \\[value globalValue.falloff] ? ( 1 - clamp( ( deep.front - ( deepGeoMat.green - \\[value globalValue.falloff] ) ) / \\[value globalValue.falloff] ) ) * deepGeoMat.alpha : 0\"\n  name DeepExpression16\n  label \"back falloff\"\n  xpos 840\n  ypos 1523\n }\n DeepExpression {\n  temp_name0 norSide\n  temp_expr0 \"1- clamp( ( 1- clamp( deepGeoMat.blue ) ) * ( \\[value globalValue.falloff] / 100 ) )\"\n  chans0 {-deepGeoMat.red -deepGeoMat.green -deepGeoMat.blue deepGeoMat.alpha}\n  chans1 none\n  deepGeoMat.alpha \"deepGeoMat.alpha * norSide\"\n  name DeepExpression12\n  label \"facing ratio\"\n  xpos 840\n  ypos 1611\n }\n DeepExpression {\n  chans1 none\n  rgba.red \"deepGeoMat.alpha * deepRawColor.red\"\n  rgba.green \"deepGeoMat.alpha * deepRawColor.green\"\n  rgba.blue \"deepGeoMat.alpha * deepRawColor.blue\"\n  rgba.alpha \"deepGeoMat.alpha * deepRawColor.alpha\"\n  name DeepExpression15\n  label \"premult color\"\n  xpos 840\n  ypos 1699\n }\n Dot {\n  name Dot16\n  xpos 874\n  ypos 1774\n }\nset N201f4000 [stack 0]\n DeepExpression {\n  chans1 none\n  rgba.red \"deepRawColor.red - red\"\n  rgba.green \"deepRawColor.green - green\"\n  rgba.blue \"deepRawColor.blue - blue\"\n  rgba.alpha \"deepRawColor.alpha - alpha\"\n  name DeepExpression23\n  label subtract\n  xpos 950\n  ypos 1844\n }\npush $N201f4000\n Switch {\n  inputs 2\n  which {{parent.mode}}\n  name Switch1\n  xpos 840\n  ypos 1848\n }\n DeepExpression {\n  chans0 {-deepRawColor.red -deepRawColor.green -deepRawColor.blue deepRawColor.alpha}\n  chans1 none\n  deepRawColor.alpha 0\n  name DeepExpression8\n  xpos 840\n  ypos 1954\n }\n DeepExpression {\n  chans0 deep\n  chans1 none\n  deep.front \"alpha <= 0 ? -1 : deep.front\"\n  deep.back \"alpha <= 0 ? -1 : deep.back\"\n  name DeepExpression10\n  label \"throw data from alpha\"\n  xpos 840\n  ypos 2036\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {0 0 {input.width} {input.height}}\n  name DeepCrop3\n  label \"clean trash data\"\n  xpos 840\n  ypos 2116\n }\n Output {\n  name Output1\n  xpos 840\n  ypos 2201\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -81\n  ypos 67\n  addUserKnob {20 User}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   selected true\n   xpos 186\n   ypos 33\n  }\n end_group\n NoOp {\n  inputs 0\n  name globalValue\n  xpos 561\n  ypos 1493\n  addUserKnob {20 User}\n  addUserKnob {7 falloff}\n  falloff {{\"parent.falloff * parent.falloff_scale\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepCopyBBox.gizmo",
    "content": "Group {\n name DeepCopyBBox\n tile_color 0x5fff\n addUserKnob {20 D_DeepCopyBBox}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"D_DeepCopyBBox v1.0 - (c) 2013 - Denis Scolan\"}\n}\n Input {\n  inputs 0\n  name Ext_BBox\n  xpos -630\n  ypos 402\n  number 1\n }\n Input {\n  inputs 0\n  name deep\n  xpos -821\n  ypos 403\n }\n DeepCrop {\n  use_znear false\n  use_zfar false\n  bbox {{input1.bbox.x} {input1.bbox.y} {input1.bbox.r} {input1.bbox.t}}\n  name DeepBbox\n  xpos -821\n  ypos 506\n }\n Output {\n  name Output1\n  xpos -821\n  ypos 623\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepCropSoft.gizmo",
    "content": "Group {\n name DeepCropSoft\n tile_color 0x6000\n selected true\n addUserKnob {20 deepCropSoftTab l DeepCropSoft}\n addUserKnob {41 use_znear l znear T Controller1.use_znear}\n addUserKnob {7 znear l \"\" -STARTLINE R 0 200}\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {7 falloffNear l \" falloff\" -STARTLINE R 0 10}\n addUserKnob {41 use_zfar l zfar T Controller1.use_zfar}\n addUserKnob {7 zfar l \"\" -STARTLINE R 0 200}\n zfar 1\n addUserKnob {26 text_1 l \" \" T \" \"}\n addUserKnob {7 falloffFar l \" falloff\" -STARTLINE R 0 10}\n addUserKnob {6 outsideRange l \"keep outside zrange\" +STARTLINE}\n addUserKnob {1 output l INVISIBLE +INVISIBLE}\n output \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n addUserKnob {26 WouterGilsing l \"\" +STARTLINE +INVISIBLE}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x3cff\n  label near\n  note_font_size 42\n  xpos -1157\n  ypos -509\n  bdwidth 701\n  bdheight 733\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x3cff\n  label far\n  note_font_size 42\n  xpos -1156\n  ypos 397\n  bdwidth 714\n  bdheight 748\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x3cff\n  label near\n  note_font_size 42\n  xpos 864\n  ypos -502\n  bdwidth 729\n  bdheight 733\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x3cff\n  label far\n  note_font_size 42\n  xpos 36\n  ypos -501\n  bdwidth 701\n  bdheight 733\n }\n Input {\n  inputs 0\n  name Input\n  label \"\\[value number]\"\n  xpos -588\n  ypos -1763\n }\n Dot {\n  name Dot29\n  xpos -554\n  ypos -895\n }\nset Nc19076c0 [stack 0]\n Dot {\n  name Dot30\n  xpos 1407\n  ypos -895\n }\nset Nc1909c30 [stack 0]\n Dot {\n  name Dot16\n  xpos 1407\n  ypos -382\n }\nset Nc190c2e0 [stack 0]\n Dot {\n  name Dot18\n  xpos 1059\n  ypos -382\n }\nset Nc190e990 [stack 0]\n Dot {\n  name Dot11\n  xpos 576\n  ypos -382\n }\nset Nc19110f0 [stack 0]\n Dot {\n  name Dot25\n  xpos 182\n  ypos -382\n }\n DeepCrop {\n  znear {{parent.zfar}}\n  zfar {{\"parent.zfar + parent.falloffFar\"}}\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop10\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos 148\n  ypos -305\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red / rgba.alpha\"\n  rgba.green \"rgba.green / rgba.alpha\"\n  rgba.blue \"rgba.blue / rgba.alpha\"\n  name DeepUnpremult4\n  xpos 148\n  ypos -197\n }\n DeepExpression {\n  temp_name0 near\n  temp_expr0 \"\\[value parent.zfar]\"\n  temp_name1 far\n  temp_expr1 \"\\[value parent.zfar] + \\[value parent.falloffFar]\"\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"alpha *  ((deep.front - near) / (far - near))\"\n  name DeepExpression4\n  xpos 148\n  ypos -158\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red * rgba.alpha\"\n  rgba.green \"rgba.green * rgba.alpha\"\n  rgba.blue \"rgba.blue * rgba.alpha\"\n  name DeepPremult4\n  xpos 148\n  ypos -114\n }\n Dot {\n  name Dot26\n  xpos 182\n  ypos 28\n }\npush $Nc19110f0\n DeepCrop {\n  znear {{\"parent.zfar + parent.falloffFar\"}}\n  zfar 1\n  use_zfar false\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop3\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos 542\n  ypos -293\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge4\n  xpos 542\n  ypos 24\n  disable {{\"parent.falloffFar == 0\"}}\n }\n Dot {\n  name Dot23\n  xpos 576\n  ypos 417\n }\nset Nc181fe90 [stack 0]\n Dot {\n  name Dot17\n  xpos 576\n  ypos 713\n }\npush $Nc181fe90\n Dot {\n  name Dot22\n  xpos 1059\n  ypos 417\n }\n Dot {\n  name Dot27\n  xpos 1059\n  ypos 510\n }\npush $Nc190e990\n DeepCrop {\n  znear {{\"parent.znear - parent.falloffNear\"}}\n  zfar {{parent.znear}}\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop7\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos 1025\n  ypos -305\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red / rgba.alpha\"\n  rgba.green \"rgba.green / rgba.alpha\"\n  rgba.blue \"rgba.blue / rgba.alpha\"\n  name DeepUnpremult3\n  xpos 1025\n  ypos -174\n }\n DeepExpression {\n  temp_name0 near\n  temp_expr0 \"\\[value parent.znear] - \\[value parent.falloffNear]\"\n  temp_name1 far\n  temp_expr1 \"\\[value parent.znear]\"\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"alpha * (1 - ((deep.front - near) / (far - near)))\"\n  name DeepExpression3\n  xpos 1025\n  ypos -133\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red * rgba.alpha\"\n  rgba.green \"rgba.green * rgba.alpha\"\n  rgba.blue \"rgba.blue * rgba.alpha\"\n  name DeepPremult3\n  xpos 1025\n  ypos -90\n }\n Dot {\n  name Dot19\n  xpos 1059\n  ypos 31\n }\npush $Nc190c2e0\n DeepCrop {\n  znear 0\n  use_znear false\n  zfar {{\"parent.znear - parent.falloffNear\"}}\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop9\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos 1373\n  ypos -306\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge3\n  xpos 1373\n  ypos 27\n  disable {{\"parent.falloffNear == 0\"}}\n }\n Dot {\n  name Dot15\n  xpos 1407\n  ypos 417\n }\nset Nc1863f70 [stack 0]\n Dot {\n  name Dot13\n  xpos 1219\n  ypos 417\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge5\n  xpos 1185\n  ypos 506\n }\n Dot {\n  name Dot21\n  xpos 1219\n  ypos 608\n }\npush $Nc1863f70\n Switch {\n  inputs 2\n  which {{parent.use_zfar}}\n  name Switch3\n  label \"\\[value which]\"\n  xpos 1373\n  ypos 598\n }\n Switch {\n  inputs 2\n  which {{!parent.use_znear}}\n  name Switch6\n  label \"\\[value which]\"\n  xpos 1373\n  ypos 703\n }\npush $Nc1909c30\n Dot {\n  name Dot20\n  xpos 1995\n  ypos -895\n }\n Dot {\n  name Dot4\n  xpos 1995\n  ypos 835\n }\n Switch {\n  inputs 2\n  which {{\"clamp(parent.use_znear + parent.use_zfar)\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos 1373\n  ypos 825\n }\n Dot {\n  name Dot31\n  xpos 1407\n  ypos 1359\n }\npush $Nc19076c0\n Dot {\n  name Dot9\n  xpos -554\n  ypos -389\n }\nset Nc19181e0 [stack 0]\n Dot {\n  name Dot8\n  xpos -727.6666667\n  ypos -389\n }\nset Nc191bc90 [stack 0]\n Dot {\n  name Dot2\n  xpos -1075\n  ypos -389\n }\n DeepCrop {\n  znear {{\"parent.znear - parent.falloffNear\"}}\n  zfar {{parent.znear}}\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop2\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos -1109\n  ypos -311\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red / rgba.alpha\"\n  rgba.green \"rgba.green / rgba.alpha\"\n  rgba.blue \"rgba.blue / rgba.alpha\"\n  name DeepUnpremult2\n  xpos -1109\n  ypos -181\n }\n DeepExpression {\n  temp_name0 near\n  temp_expr0 \"\\[value parent.znear] - \\[value parent.falloffNear]\"\n  temp_name1 far\n  temp_expr1 \"\\[value parent.znear]\"\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"alpha * ((deep.front - near) / (far - near))\"\n  name DeepExpression1\n  xpos -1109\n  ypos -140\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red * rgba.alpha\"\n  rgba.green \"rgba.green * rgba.alpha\"\n  rgba.blue \"rgba.blue * rgba.alpha\"\n  name DeepPremult1\n  xpos -1109\n  ypos -97\n }\n Dot {\n  name Dot1\n  xpos -1075\n  ypos -13\n }\npush $Nc191bc90\n DeepCrop {\n  znear {{parent.znear}}\n  zfar 200\n  use_zfar false\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop5\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos -761\n  ypos -310\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge1\n  xpos -761\n  ypos -17\n  disable {{\"parent.falloffNear == 0\"}}\n }\n Dot {\n  name Dot7\n  xpos -727.6666667\n  ypos 152\n }\npush $Nc19181e0\n Switch {\n  inputs 2\n  which {{parent.use_znear}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -588\n  ypos 142\n }\n Dot {\n  name Dot3\n  xpos -554\n  ypos 517\n }\nset Nc19655b0 [stack 0]\n Dot {\n  name Dot5\n  xpos -727\n  ypos 517\n }\nset Nc19694f0 [stack 0]\n Dot {\n  name Dot6\n  xpos -1075\n  ypos 517\n }\n DeepCrop {\n  znear {{parent.zfar}}\n  zfar {{\"parent.zfar + parent.falloffFar\"}}\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop1\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos -1109\n  ypos 594\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red / rgba.alpha\"\n  rgba.green \"rgba.green / rgba.alpha\"\n  rgba.blue \"rgba.blue / rgba.alpha\"\n  name DeepUnpremult1\n  xpos -1109\n  ypos 702\n }\n DeepExpression {\n  temp_name0 near\n  temp_expr0 \"\\[value parent.zfar]\"\n  temp_name1 far\n  temp_expr1 \"\\[value parent.zfar] + \\[value parent.falloffFar]\"\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"alpha * (1 - ((deep.front - near) / (far - near)))\"\n  name DeepExpression2\n  xpos -1109\n  ypos 742\n }\n DeepExpression {\n  chans1 rgba\n  rgba.red \"rgba.red * rgba.alpha\"\n  rgba.green \"rgba.green * rgba.alpha\"\n  rgba.blue \"rgba.blue * rgba.alpha\"\n  name DeepPremult2\n  xpos -1109\n  ypos 785\n }\n Dot {\n  name Dot12\n  xpos -1075\n  ypos 893\n }\npush $Nc19694f0\n DeepCrop {\n  znear {{parent.zfar}}\n  zfar 0\n  use_zfar false\n  outside_zrange true\n  bbox {431.6000061 242.8000031 1726.400024 971.2000122}\n  use_bbox false\n  name DeepCrop4\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos -761\n  ypos 593\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge2\n  xpos -761\n  ypos 889\n  disable {{\"parent.falloffFar == 0\"}}\n }\n Dot {\n  name Dot14\n  xpos -727\n  ypos 1058\n }\npush $Nc19655b0\n Switch {\n  inputs 2\n  which {{parent.use_zfar}}\n  name Switch4\n  label \"\\[value which]\"\n  xpos -588\n  ypos 1048\n }\n Switch {\n  inputs 2\n  which {{parent.outsideRange}}\n  name Switch9\n  label \"\\[value which]\"\n  xpos -588\n  ypos 1349\n }\n Output {\n  name Output1\n  xpos -588\n  ypos 2052\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0x3cff\n  label \"   INVERSE   \"\n  note_font_size 100\n  xpos 549\n  ypos -700\n }\n NoOp {\n  inputs 0\n  name Controller1\n  onCreate \"node = nuke.thisGroup()\\nfor mode in \\['near', 'far']:\\n    state = node.knob('use_z\\{\\}'.format(mode)).value()\\n    for knobName in \\['falloff\\{\\}'.format(mode.title()), 'z\\{\\}'.format(mode)]:\\n        node.knob(knobName).setEnabled(state)\\n    node.knob('z\\{\\}'.format(mode)).setRange(0,200)\"\n  knobChanged \"node = nuke.thisGroup()\\nfor mode in \\['near', 'far']:\\n    state = node.knob('use_z\\{\\}'.format(mode)).value()\\n    for knobName in \\['falloff\\{\\}'.format(mode.title()), 'z\\{\\}'.format(mode)]:\\n        node.knob(knobName).setEnabled(state)\"\n  label \"\\[ expr \\{ \\[value use_znear] ?  \\[value znear]: \\\"\\\" \\}] \\[ expr \\{ \\[value use_znear] ?  \\\"-\\\": \\\"\\\" \\}] \\[ expr \\{ \\[value use_zfar] ?  \\[value zfar]: \\\"\\\" \\}]\"\n  xpos -431\n  ypos -1098\n  addUserKnob {20 User}\n  addUserKnob {6 use_znear l use +STARTLINE}\n  use_znear true\n  addUserKnob {6 use_zfar l use +STARTLINE}\n  use_zfar true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepFromDepth.gizmo",
    "content": "Group {\n name DeepFromDepth\n tile_color 0x66ff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 in l z T Shuffle21.in}\n addUserKnob {41 in2 l alpha T Shuffle21.in2}\n addUserKnob {41 premult l premultiplied T DeepFromImage2.premult}\n addUserKnob {1 FS_PROPERTY +HIDDEN}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -896\n  ypos 390\n }\n Shuffle {\n  in depth\n  in2 alpha\n  red blue\n  green blue\n  alpha alpha2\n  name Shuffle21\n  xpos -896\n  ypos 439\n }\n Shuffle {\n  red blue\n  green blue\n  out deep\n  name Shuffle28\n  xpos -896\n  ypos 499\n }\n DeepFromImage {\n  premult true\n  name DeepFromImage2\n  xpos -896\n  ypos 583\n }\n DeepExpression {\n  chans1 deep\n  rgba.alpha a\n  deep.front r==0?inf:r\n  deep.back g==0?inf:g\n  name DeepExpression1\n  selected true\n  xpos -896\n  ypos 643\n }\n Output {\n  name Output1\n  xpos -896\n  ypos 718\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepFromPosition.gizmo",
    "content": "Group {\n name DeepFromPosition\n tile_color 0x145bff\n label \"<font color=cyan>Deep Output</font>\"\n selected true\n addUserKnob {20 tab_general l General}\n addUserKnob {41 position l \"position channel\" T Shuffle_pos.in}\n addUserKnob {4 space -STARTLINE M {world camera \"\"}}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-12-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.0<br>-&nbsp;convert&nbsp;position&nbsp;to&nbsp;deep\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Input {\n  inputs 0\n  name img\n  xpos 0\n  ypos 169\n }\n Dot {\n  name Dot2\n  xpos 34\n  ypos 251\n }\nset N8630940 [stack 0]\n Dot {\n  name Dot4\n  xpos 134\n  ypos 251\n }\nset N8634570 [stack 0]\n Dot {\n  name Dot3\n  xpos 134\n  ypos 661\n }\npush $N8634570\n Dot {\n  name Dot1\n  xpos 235\n  ypos 251\n }\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos 201\n  ypos 341\n }\n Shuffle {\n  in rgb\n  in2 alpha\n  alpha red2\n  name Shuffle_pos\n  xpos 201\n  ypos 421\n }\n Add {\n  channels {rgba.red rgba.green rgba.blue none}\n  value {{\"\\[exists parent.input1] == 0 ? 0 : -parent.input1.world_matrix.3\"} {\"\\[exists parent.input1] == 0 ? 0 : -parent.input1.world_matrix.7\"} {\"\\[exists parent.input1] == 0 ? 0 : -parent.input1.world_matrix.11\"} 0}\n  name Add1\n  xpos 201\n  ypos 503\n }\n ColorMatrix {\n  matrix {\n      {{\"\\[exists parent.input1] == 0 ? 1 : parent.input1.world_matrix.0\"} {\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.1\"} {\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.2\"}}\n      {{\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.4\"} {\"\\[exists parent.input1] == 0 ? 1 : parent.input1.world_matrix.5\"} {\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.6\"}}\n      {{\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.8\"} {\"\\[exists parent.input1] == 0 ? 0 : parent.input1.world_matrix.9\"} {\"\\[exists parent.input1] == 0 ? 1 : parent.input1.world_matrix.10\"}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos 201\n  ypos 585\n }\n Expression {\n  expr2 \"alpha <= 0 ? 0 : 1 / -blue\"\n  name Expression1\n  xpos 201\n  ypos 667\n }\n Switch {\n  inputs 2\n  which {{space}}\n  name Switch1\n  selected true\n  xpos 201\n  ypos 749\n }\npush $N8630940\n ShuffleCopy {\n  inputs 2\n  red blue\n  out depth\n  name ShuffleCopy1\n  xpos 0\n  ypos 749\n }\n DeepFromImage {\n  name DeepFromImage1\n  xpos 0\n  ypos 831\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 913\n }\n Input {\n  inputs 0\n  name cam\n  xpos 377\n  ypos 172\n  number 1\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepHoldoutSmoother.gizmo",
    "content": "Group {\n name DeepHoldoutSmoother\n help \"DeepAntialias creates an antialiased Deep edge by adding adjacent slices of the object to the original Deep image. You control the number of samples to incress softness (click Update any time you change this value) and the spread of those samples. The opacity knob makes the samples more or less transparent. Depth offset slides the overall slice in z.\"\n tile_color 0x5fff\n addUserKnob {20 User l D_DeepHoldoutSmoother}\n addUserKnob {3 samples l \"number of samples\" t \"Number of samples, the more, the softer it gets but longer to render. Click Update any time you change this value.\"}\n samples 6\n addUserKnob {22 btUpdate l \"  Update  \" -STARTLINE T \"n = nuke.thisNode()\\n\\nwith n:\\n    samples = n\\['samples'].getValue()\\n    opacity = n\\['opacity'].getValue()\\n    depth_spread = n\\['depth_spread'].getValue()\\n\\n    deepOpacityNode = nuke.toNode('DeepExpressionOpacity')\\n    deepMergeImageNode = nuke.toNode('DeepMergeImage')\\n    inputDeepNode = nuke.toNode('deep')\\n    deepExpressionHVNode = nuke.toNode('DeepExpressionHV')\\n    deepExpressionDiagNode = nuke.toNode('DeepExpressionDiag')\\n    deepHoldoutHVNode = nuke.toNode('DeepHoldoutDiag')\\n    deepHoldoutDiagNode = nuke.toNode('DeepHoldoutHV')\\n    deepMergeAllSamplesNode = nuke.toNode('DeepMergeAllSamples')\\n\\n    for i in nuke.allNodes():\\n        if i.name().startswith('_Deep'):\\n            nuke.delete(i)\\n\\n    deepMergeGlobalNode = nuke.nodes.DeepMerge()\\n    deepMergeGlobalNode\\['name'].setValue('_DeepMergeGlobal')\\n    deepMergeGlobalNode\\['operation'].setValue(0)\\n    deepExpressionHVNode.setInput(0, deepOpacityNode)\\n    deepExpressionDiagNode.setInput(0, deepOpacityNode)\\n    deepHoldoutHVNode.setInput(0, deepMergeGlobalNode)\\n    deepHoldoutDiagNode.setInput(0, deepMergeGlobalNode)\\n    deepHoldoutDiagNode.setInput(0, deepMergeGlobalNode)\\n    deepMergeAllSamplesNode.setInput(1, deepMergeGlobalNode)\\n\\n    for i in range(int(samples)):\\n        index = i+1\\n\\n        deepTransformNode = nuke.nodes.DeepTransform()\\n        deepTransformNode\\['name'].setValue('_DeepTransform'+str(index))\\n        if index == 1:\\n            connectTo = inputDeepNode\\n        else:\\n            connectTo = nuke.toNode('_DeepTransform'+str(index-1))\\n        deepTransformNode.setInput(0, connectTo)\\n        deepTransformNode\\['translate'].setExpression('-parent.depth_spread/parent.samples', 2)\\n\\n        deepHoldoutNode = nuke.nodes.DeepMerge()\\n        deepHoldoutNode\\['name'].setValue('_DeepHoldout'+str(index))\\n        deepHoldoutNode\\['operation'].setValue(1)\\n        deepHoldoutNode.setInput(0, deepTransformNode)\\n        deepHoldoutNode.setInput(1, deepOpacityNode)\\n\\n        deepMergeGlobalNode.setInput(i, deepHoldoutNode)\"}\n addUserKnob {7 depth_spread l \"depth spread\" t \"Spread of the samples. All samples will fit into this z distance.\"}\n depth_spread 1\n addUserKnob {7 opacity t \"Opacity of the samples.\"}\n opacity 0.5\n addUserKnob {7 depth_offset l \"depth offset\" t \"Use this to move the origin of the samples and get more or less of the original object.\" R 0 10}\n depth_offset -1\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"D_DeepHoldoutSmoother v1.0 - (c) 2013 - Denis Scolan/Jesús Diez-Pérez\"}\n}\n Input {\n  inputs 0\n  name deep\n  xpos 527\n  ypos -2360\n }\nset N154ed6a0 [stack 0]\n Input {\n  inputs 0\n  name bbox\n  xpos 1090\n  ypos -2379\n  number 1\n }\n Dot {\n  name Dot1\n  xpos 1124\n  ypos -2257\n }\n Constant {\n  inputs 0\n  color 1\n  format \"2048 932 0 0 2048 932 1 wwd\"\n  name Constant7\n  xpos 1580\n  ypos -2392\n }\n Reformat {\n  format \"2088 932 0 0 2088 932 1 wwd_Overscan\"\n  resize none\n  pbb true\n  name Reformat5\n  xpos 1580\n  ypos -2302\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 1580\n  ypos -2261\n }\n DeepFromImage {\n  set_z true\n  name DeepFromImage\n  xpos 1756\n  ypos -2220\n }\n DeepExpression {\n  temp_name0 FirstOpacity\n  chans1 deep\n  rgba.alpha \"1-\\[value parent.opacity]\"\n  name DeepExpressionOpacity\n  xpos 1756\n  ypos -2167\n }\nset N154e6830 [stack 0]\npush $N154ed6a0\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform1\n  xpos 738\n  ypos -2130\n }\nset N1ae0dd30 [stack 0]\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform2\n  xpos 738\n  ypos -2104\n }\nset N1ae16130 [stack 0]\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform3\n  xpos 738\n  ypos -2078\n }\nset N1ae1c180 [stack 0]\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform4\n  xpos 738\n  ypos -2052\n }\nset N1ae228b0 [stack 0]\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform5\n  xpos 738\n  ypos -2026\n }\nset N1ae29030 [stack 0]\n DeepTransform {\n  translate {0 0 {-parent.depth_spread/parent.samples}}\n  name _DeepTransform6\n  xpos 738\n  ypos -2000\n }\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout6\n  xpos 1580\n  ypos -2000\n }\npush $N154e6830\npush $N1ae29030\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout5\n  xpos 1580\n  ypos -2026\n }\npush $N154e6830\npush $N1ae228b0\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout4\n  xpos 1580\n  ypos -2052\n }\npush $N154e6830\npush $N1ae1c180\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout3\n  xpos 1580\n  ypos -2078\n }\npush $N154e6830\npush $N1ae16130\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout2\n  xpos 1580\n  ypos -2104\n }\npush $N154e6830\npush $N1ae0dd30\n DeepMerge {\n  inputs 2\n  operation holdout\n  name _DeepHoldout1\n  xpos 1580\n  ypos -2130\n }\n DeepMerge {\n  inputs 6\n  name _DeepMergeGlobal\n  xpos 1861\n  ypos -1861\n }\nset N154a72a0 [stack 0]\npush $N154e6830\n DeepExpression {\n  chans1 deep\n  rgba.alpha 0.75\n  name DeepExpressionDiag\n  xpos 2953\n  ypos -1955\n }\npush $N154a72a0\n DeepMerge {\n  inputs 2\n  operation holdout\n  name DeepHoldoutDiag\n  xpos 2953\n  ypos -1720\n }\nset N154a0240 [stack 0]\n DeepTransform {\n  translate {1 -1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform14\n  xpos 3080\n  ypos -1568\n }\npush $N154a0240\n DeepTransform {\n  translate {1 1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform1\n  xpos 2986\n  ypos -1567\n }\npush $N154a0240\n DeepTransform {\n  translate {-1 -1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform13\n  xpos 2891\n  ypos -1568\n }\npush $N154a0240\n DeepTransform {\n  translate {-1 1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform10\n  xpos 2790\n  ypos -1567\n }\n DeepMerge {\n  inputs 4\n  name DeepMergeDiag\n  xpos 2943\n  ypos -1440\n }\npush $N154e6830\n DeepExpression {\n  chans1 deep\n  rgba.alpha 0.5\n  name DeepExpressionHV\n  xpos 2367\n  ypos -1970\n }\npush $N154a72a0\n DeepMerge {\n  inputs 2\n  operation holdout\n  name DeepHoldoutHV\n  xpos 2367\n  ypos -1730\n }\nset N15459590 [stack 0]\n DeepTransform {\n  translate {1 0 0}\n  mask_channel -rgba.alpha\n  name DeepTransform12\n  xpos 2500\n  ypos -1576\n }\npush $N15459590\n DeepTransform {\n  translate {0 -1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform15\n  xpos 2408\n  ypos -1575\n }\npush $N15459590\n DeepTransform {\n  translate {0 1 0}\n  mask_channel -rgba.alpha\n  name DeepTransform9\n  xpos 2315\n  ypos -1574\n }\npush $N15459590\n DeepTransform {\n  translate {-1 0 0}\n  mask_channel -rgba.alpha\n  name DeepTransform11\n  xpos 2224\n  ypos -1572\n }\n DeepMerge {\n  inputs 4\n  name DeepMergeHV\n  xpos 2365\n  ypos -1434\n }\n DeepMerge {\n  inputs 2\n  name DeepMergeAll\n  xpos 2642\n  ypos -1267\n }\n DeepMerge {\n  inputs 2\n  name DeepMergeAllSamples\n  xpos 2642\n  ypos -1042\n }\n DeepTransform {\n  translate {0 0 {-parent.depth_offset}}\n  name DeepTransform2\n  xpos 2642\n  ypos -899\n }\n DeepMerge {\n  inputs 2\n  name DeepMergeAll2\n  xpos 738\n  ypos -899\n }\n Output {\n  name Output1\n  xpos 738\n  ypos -381\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepKeyMix.gizmo",
    "content": "Group {\n inputs 2\n name DeepKeyMix\n tile_color 0x59ff\n addUserKnob {20 User l DeepKeyMix}\n addUserKnob {26 \"\"}\n addUserKnob {41 matte_channel l matte T Controller.matte_channel}\n addUserKnob {41 Invert_Mask l invert T Controller.Invert_Mask}\n addUserKnob {26 \"\"}\n addUserKnob {26 text l \"\" -STARTLINE T \"               DeepKeyMix 1.00     ©    \"}\n addUserKnob {22 Luc_Julien l \"Luc Julien\" -STARTLINE T \"import os\\nimport sys\\n\\ntry:\\n    import subprocess\\n    def _run(cmd, shell, wait):\\n        opener = subprocess.Popen(cmd, shell=shell)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\nexcept ImportError:\\n    import popen2\\n    def _run(cmd, shell, wait):\\n        opener = popen2.Popen3(cmd)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\n\\ndef _open(url, wait=0):\\n    if sys.platform == \\\"darwin\\\":\\n        cmd = \\[\\\"open\\\", url]\\n    elif hasattr(os, \\\"startfile\\\"):\\n        return os.startfile(url)\\n    elif \\\"KDE_FULL_SESSION\\\" in os.environ or \\\"KDE_MULTIHEAD\\\" in os.environ or \\\\\\n        \\\"GNOME_DESKTOP_SESSION_ID\\\" in os.environ or \\\"GNOME_KEYRING_SOCKET\\\" in os.environ:\\n        cmd = \\[\\\"xdg-open\\\", url]\\n    else:\\n        raise OSError(\\\"Desktop not supported.\\\")\\n\\n    return _run(cmd, 0, wait)\\n\\n_open('http://www.linkedin.com/in/lucjulien')\"}\n}\n NoOp {\n  inputs 0\n  name Controller\n  xpos 728\n  ypos 164\n  addUserKnob {20 User}\n  addUserKnob {4 matte_channel l matte M {alpha luma}}\n  addUserKnob {6 Invert_Mask l invert +STARTLINE}\n }\n Input {\n  inputs 0\n  name mask\n  xpos 553\n  ypos -43\n  number 2\n }\nset Ndc1eca0 [stack 0]\n Keyer {\n  operation \"max keyer\"\n  name Keyer1\n  xpos 499\n  ypos 93\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle4\n  xpos 499\n  ypos 127\n }\npush $Ndc1eca0\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  xpos 602\n  ypos 102\n }\n Switch {\n  inputs 2\n  which {{parent.Controller.matte_channel}}\n  name Switch1\n  xpos 549\n  ypos 187\n }\n Invert {\n  channels alpha\n  clamp true\n  name Invert2\n  xpos 549\n  ypos 262\n  disable {{parent.Controller.Invert_Mask*-1+1}}\n }\n Dot {\n  name Dot3\n  xpos 583\n  ypos 355\n }\nset Ndea6440 [stack 0]\n Shuffle {\n  red alpha\n  black white\n  out depth\n  out2 alpha\n  name Shuffle1\n  xpos 549\n  ypos 631\n }\nset Ndeb8ed0 [stack 0]\n DeepFromImage {\n  z 1\n  name DeepFromImage3\n  xpos 549\n  ypos 738\n }\n Input {\n  inputs 0\n  name B\n  xpos 1104\n  ypos 130\n }\n Dot {\n  name Dot4\n  xpos 1138\n  ypos 172\n }\nset Ndf4ad70 [stack 0]\n DeepMerge {\n  inputs 2\n  operation holdout\n  name DeepMerge2\n  xpos 1104\n  ypos 738\n }\npush $Ndeb8ed0\n Invert {\n  channels depth\n  clamp true\n  name Invert1\n  xpos 644\n  ypos 626\n }\n DeepFromImage {\n  z 1\n  name DeepFromImage4\n  xpos 644\n  ypos 681\n }\n Input {\n  inputs 0\n  name A\n  xpos 1197\n  ypos 131\n  number 1\n }\n Dot {\n  name Dot1\n  xpos 1231\n  ypos 219\n }\nset Ndf12880 [stack 0]\n DeepMerge {\n  inputs 2\n  operation holdout\n  name DeepMerge3\n  xpos 1197\n  ypos 681\n }\n DeepMerge {\n  inputs 2\n  drop_hidden true\n  name DeepMerge4\n  xpos 1197\n  ypos 792\n }\npush $Ndea6440\n Dot {\n  name Dot2\n  xpos 782\n  ypos 355\n }\nset Ndf4ea90 [stack 0]\npush $Ndf4ea90\n Merge2 {\n  inputs 2\n  operation xor\n  name Merge2\n  xpos 748\n  ypos 408\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  xpos 748\n  ypos 432\n }\n Grade {\n  channels all\n  whitepoint 0.13\n  black_clamp false\n  name Grade2\n  xpos 748\n  ypos 456\n }\npush $Ndf4ea90\npush $Ndf12880\n Dot {\n  name Dot6\n  xpos 1008\n  ypos 219\n }\n DeepToImage {\n  name DeepToImage2\n  xpos 974\n  ypos 273\n }\npush $Ndf4ad70\n Dot {\n  name Dot5\n  xpos 884\n  ypos 172\n }\n DeepToImage {\n  name DeepToImage1\n  xpos 850\n  ypos 277\n }\n Keymix {\n  inputs 3\n  channels rgba\n  name Keymix2\n  xpos 909\n  ypos 352\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge1\n  xpos 909\n  ypos 461\n }\n DeepFromImage {\n  premult true\n  name DeepFromImage5\n  xpos 909\n  ypos 491\n }\n DeepMerge {\n  inputs 2\n  drop_hidden true\n  name DeepMerge5\n  xpos 909\n  ypos 792\n }\n Output {\n  name Output1\n  xpos 909\n  ypos 860\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepMerge_Advanced.gizmo",
    "content": "Group {\n name DeepMergeAdvanced\n help \"- Merges all channels from A and B in deep. - Fixes issue with DeepMerge's holdout operation which exists in Nuke 11.\"\n tile_color 0x60ff\n selected true\n addUserKnob {20 DeepMerge_Advanced}\n addUserKnob {26 \"\"}\n addUserKnob {4 operation M {combine holdout \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {7 blurAmt l Blur R 0 100}\n blurAmt 1\n addUserKnob {26 \"\"}\n addUserKnob {4 output_data l \"Output Data\" M {Deep 2D \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {20 Info}\n addUserKnob {26 version_info l \"\" +STARTLINE T \"\\nCreated by Ben McEwan\\nwww.benmcewan.com\\n\\nVersion 0.2.0\\nLast Updated: September 10th, 2019\\n\"}\n addUserKnob {1 Scriplet_Info +DISABLED +INVISIBLE}\n Scriplet_Info central\n}\n Input {\n  inputs 0\n  name A\n  xpos 242\n  ypos -499\n  number 1\n }\n DeepExpression {\n  temp_name0 blur\n  temp_expr0 \"\\[value blurAmt]/2\"\n  chans1 deep\n  rgba.alpha \"alpha * 0.999999\"\n  deep.back \"deep.back + blur\"\n  name DeepExpression2\n  xpos 393\n  ypos -499\n }\nset N4282660 [stack 0]\n Dot {\n  name Dot1\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 427\n  ypos -434\n }\n Input {\n  inputs 0\n  name B\n  xpos 551\n  ypos -654\n }\n DeepExpression {\n  temp_name0 blur\n  temp_expr0 \"\\[value blurAmt]/2\"\n  chans1 deep\n  rgba.alpha \"alpha * 0.999999\"\n  deep.back \"deep.back + blur\"\n  name DeepExpression1\n  xpos 551\n  ypos -585\n }\nset N5a8fac0 [stack 0]\n Dot {\n  name Dot2\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 788\n  ypos -581\n }\nset N4ce1390 [stack 0]\n DeepHoldout2 {\n  inputs 2\n  name DeepHoldout2\n  xpos 754\n  ypos -438\n }\npush $N4ce1390\n Dot {\n  name Dot3\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 895\n  ypos -532\n }\n Dot {\n  name Dot4\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 895\n  ypos -395\n }\n DeepRecolor {\n  inputs 2\n  channels all\n  targetInputAlpha true\n  name DeepRecolor2\n  xpos 754\n  ypos -361\n }\npush $N4282660\npush $N5a8fac0\n DeepMerge {\n  inputs 2\n  drop_hidden true\n  name DeepMerge2\n  xpos 551\n  ypos -499\n }\n Switch {\n  inputs 2\n  which {{operation}}\n  name Switch1\n  xpos 551\n  ypos -356\n }\n DeepToImage {\n  name DeepToImage1\n  selected true\n  xpos 551\n  ypos -279\n  disable {{!output_data}}\n }\n Output {\n  name Output1\n  xpos 551\n  ypos -199\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepRecolorMatte.gizmo",
    "content": "Group {\n inputs 2\n name DeepRecolorMatte\n help \"this node creates a new single channel\\n<NewChannelName>.red and injects it into the stream before a deep recolor.\\n\\nThis workflow is to create single channel mattes for your elements in your deep combine tree.  which you can later pull out with a shuffle node after you have pre-rendered.\\n\\nThe benifit: you know what your elements look like deep combined, as a sanity check reference, and the pre-render itself has all the matte channels needed to recreate the deep render.\\n\\nWhen replacing your alpha, remember to unpremult(all), copy the holdout alpha, and premult(all)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'addPrefix':\\n    if n.knob('addPrefix').value() == 1:\\n        n.knob('prefix').setVisible(True)\\n    else:\\n        n.knob('prefix').setVisible(False)\\n\\nif k.name() == 'addPostfix':\\n    if n.knob('addPostfix').value() == 1:\\n        n.knob('postfix').setVisible(True)\\n    else:\\n        n.knob('postfix').setVisible(False)\"\n tile_color 0x60ff\n note_font_color 0xffffffff\n selected true\n xpos 23\n ypos -130\n addUserKnob {20 DeepRecolorMatte}\n addUserKnob {26 text_1 l \" \" T \" \"}\n addUserKnob {41 channels T Remove41.channels}\n addUserKnob {22 grabTitle l \"<b><font color = lightskyblue>Grab Title</font color = lightskyblue></b>\" t \"grabs title from either a stamp or a read node from the 'color' stream and fills in the 'new channel name' field\" T \"from stamps_config import defaultTitle\\n\\nn = nuke.thisNode()\\nncn = n.knob('newChannelName')\\n\\niNode = nuke.thisNode()\\n\\ndef upstream(iNode):\\n    found = False\\n    name = ''\\n    while found == False:\\n        \\n        if iNode.input(0) != None:\\n\\n            if iNode.input(0).Class() in \\['Read']:\\n                found = True\\n                name  = defaultTitle(iNode.input(0))\\n                \\n    \\n            elif iNode.input(0).Class() in \\['NoOp']:   \\n                \\n                try: \\n                    found = True \\n                    name = iNode.input(0)\\['title'].value()           \\n                    \\n                except:\\n                    iNode = iNode.input(0)\\n            \\n                            \\n            else:\\n                iNode = iNode.input(0)\\n        else:\\n            nuke.message('please connect a read node or a stamp')\\n            found = True\\n            \\n    return name\\n      \\nname = upstream(iNode)\\nncn.setValue(name)\" +STARTLINE}\n addUserKnob {22 injectNewChannel l \"<b><font color = salmon>Inject New Channel</font color = salmon></b>\" t \"Copies the alpha from the color stream into a new channel <newChannel>.red into the stream to that it exists in your deep tree to be used as a holdout matte when pulled out later.\" -STARTLINE T \"n = nuke.thisNode()\\nncn = n.knob('newChannelName').getValue()\\ncd = n.knob('channelDisplay')\\n\\nif n.knob('addPrefix').value() == 1 and n.knob('prefix').getValue() != '':\\n    prefix = n.knob('prefix').value() + '_'\\nelse:\\n    prefix = ''\\n    \\nif n.knob('addPostfix').value() == 1 and n.knob('postfix').getValue() != '':\\n    postfix = '_' + n.knob('postfix').value()\\nelse:\\n    postfix = ''\\n\\nchannelName = prefix+ncn+postfix\\n\\nwith n:\\n    nodeName = n.name()\\n    copy = nuke.toNode('CopyInjector')\\n    if channelName != '':\\n        channelName = ''.join(channelName.split('.'))\\n        channelName = '_'.join(channelName.split(' '))\\n        fullChannelName = channelName + '.red'\\n        nuke.Layer('\\{\\}'.format(channelName), \\[fullChannelName])\\n        copy.knob('to0').setValue(fullChannelName)\\n        copy.knob('tile_color').setValue(437918463)\\n        copy.knob('note_font_color').setValue(4280090879)\\n        \\ncd.setValue(fullChannelName)\\ncd.setVisible(True)\\nn.knob('note_font_color').setValue(4280090879)\\nn.knob('label').setValue('--> \\[value channelDisplay]')\"}\n addUserKnob {22 reset l \"<b><font color = limegreen>Reset</font color = limegreen></b>\" t \"resets the node to default values\" -STARTLINE T \"n = nuke.thisNode()\\nncn = n.knob('newChannelName')\\ncd = n.knob('channelDisplay')\\n\\nwith n:\\n    copy = nuke.toNode('CopyInjector')\\n    copy.knob('to0').setValue('rgba.alpha')\\n    copy.knob('tile_color').setValue(2654757632)\\n    copy.knob('note_font_color').setValue(235802367)\\ncd.setValue('')\\ncd.setVisible(False)\\nncn.setValue('')\\nn.knob('note_font_color').setValue(4294967295)\\nn.knob('label').setValue('')\\nn.knob('addPrefix').setValue(0)\\nn.knob('addPostfix').setValue(0)\\nn.knob('prefix').setValue('ID')\\nn.knob('postfix').setValue('')\"}\n addUserKnob {1 newChannelName l \"New Channel Name\"}\n addUserKnob {41 bbox l \"set bbox to \" T DeepRecolor22.bbox}\n addUserKnob {41 targetInputAlpha l \"target input alpha\" -STARTLINE T DeepRecolor22.targetInputAlpha}\n addUserKnob {6 addPrefix l \"Add Prefix\" +STARTLINE}\n addUserKnob {6 addPostfix l \"Add Postfix\" -STARTLINE}\n addUserKnob {1 channelDisplay l ---> +HIDDEN +INVISIBLE}\n addUserKnob {1 prefix +HIDDEN}\n prefix ID\n addUserKnob {1 postfix +HIDDEN}\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {26 info l \" \" t \"DeepRecolorMatte v3.1\\nTony Lyons\" T \"<span style=\\\"color:#666\\\"><b>DeepRecolorMatte v3.1</b> | <a style=\\\"color:#666;text-decoration: none;\\\">Tony Lyons</a> 2020</span>\"}\n}\n Input {\n  inputs 0\n  name Inputcolor\n  xpos 378\n  ypos 255\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 378\n  ypos 304\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove41\n  xpos 378\n  ypos 345\n }\nset N481a6b00 [stack 0]\npush $N481a6b00\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyInjector\n  tile_color 0x9e3c6300\n  note_font_color 0xe0e0eff\n  xpos 378\n  ypos 371\n }\nset N481a6400 [stack 0]\npush $N481a6400\n Input {\n  inputs 0\n  name Inputdeep\n  xpos 115\n  ypos 456\n  number 1\n }\n DeepRecolor {\n  inputs 2\n  name DeepRecolor1\n  xpos 250\n  ypos 456\n }\n DeepRecolor {\n  inputs 2\n  channels all\n  bbox intersection\n  name DeepRecolor22\n  selected true\n  xpos 378\n  ypos 450\n }\n Output {\n  name Output1\n  xpos 378\n  ypos 641\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepSampleCount.gizmo",
    "content": "Group {\n name DeepSampleCount\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    if knob\\[0:6] == 'sCount' :\\n        if int(knob.split('sCount')\\[1]) %3 == 1 :\\n            thisGRP\\[knob].setFlag(0x0000000000001000)\\n\"\n tile_color 0x2866ff\n label \"<font color=cyan>2D image Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {41 max_count l \"max count\" T menu1.max_count}\n addUserKnob {6 show_colormap l \"show colormap\" +STARTLINE}\n show_colormap true\n addUserKnob {20 grp_count_colormap l \"samples count colormap\" n 1}\n grp_count_colormap 0\n addUserKnob {40 sCount1 l \"1 sample\"}\n sCount1 0x7f2626ff\n addUserKnob {40 sCount2 l \"2 samples\" -STARTLINE}\n sCount2 0x7f4126ff\n addUserKnob {40 sCount3 l \"3 samples\" -STARTLINE}\n sCount3 0x7f5b26ff\n addUserKnob {40 sCount4 l \"4 samples\"}\n sCount4 0x7f7626ff\n addUserKnob {40 sCount5 l \"5 samples\" -STARTLINE}\n sCount5 0x6d7f26ff\n addUserKnob {40 sCount6 l \"6 samples\" -STARTLINE}\n sCount6 0x527f26ff\n addUserKnob {40 sCount7 l \"7 samples\"}\n sCount7 0x377f26ff\n addUserKnob {40 sCount8 l \"8 samples\" -STARTLINE}\n sCount8 0x267f2eff\n addUserKnob {40 sCount9 l \"9 samples\" -STARTLINE}\n sCount9 0x267f49ff\n addUserKnob {40 sCount10 l \"10 samples\"}\n sCount10 0x267f64ff\n addUserKnob {40 sCount11 l \"11 samples\" -STARTLINE}\n sCount11 0x267f7fff\n addUserKnob {40 sCount12 l \"12 samples\" -STARTLINE}\n sCount12 0x26647fff\n addUserKnob {40 sCount13 l \"13 samples\"}\n sCount13 0x26497fff\n addUserKnob {40 sCount14 l \"14 samples\" -STARTLINE}\n sCount14 0x262e7fff\n addUserKnob {40 sCount15 l \"15 samples\" -STARTLINE}\n sCount15 0x37267fff\n addUserKnob {40 sCount16 l \"16 samples\"}\n sCount16 0x52267fff\n addUserKnob {40 sCount17 l \"17 samples\" -STARTLINE}\n sCount17 0x6d267fff\n addUserKnob {40 sCount18 l \"18 samples\" -STARTLINE}\n sCount18 0x7f2676ff\n addUserKnob {40 sCount19 l \"19 samples\"}\n sCount19 0x7f265bff\n addUserKnob {40 sCount20 l \"20 samples\" -STARTLINE}\n sCount20 0x7f2640ff\n addUserKnob {40 sCount21 l \"21 samples\" -STARTLINE +HIDDEN}\n sCount21 0xff0000ff\n addUserKnob {40 sCount22 l \"22 samples\" +HIDDEN}\n sCount22 0xff4c00ff\n addUserKnob {40 sCount23 l \"23 samples\" -STARTLINE +HIDDEN}\n sCount23 0xff9900ff\n addUserKnob {40 sCount24 l \"24 samples\" -STARTLINE +HIDDEN}\n sCount24 0xffe500ff\n addUserKnob {40 sCount25 l \"25 samples\" +HIDDEN}\n sCount25 0xcbff00ff\n addUserKnob {40 sCount26 l \"26 samples\" -STARTLINE +HIDDEN}\n sCount26 0x7fff00ff\n addUserKnob {40 sCount27 l \"27 samples\" -STARTLINE +HIDDEN}\n sCount27 0x32ff00ff\n addUserKnob {40 sCount28 l \"28 samples\" +HIDDEN}\n sCount28 0xff19ff\n addUserKnob {40 sCount29 l \"29 samples\" -STARTLINE +HIDDEN}\n sCount29 0xff66ff\n addUserKnob {40 sCount30 l \"30 samples\" -STARTLINE +HIDDEN}\n sCount30 0xffb2ff\n addUserKnob {40 sCount31 l \"31 samples\" +HIDDEN}\n sCount31 0xffffff\n addUserKnob {40 sCount32 l \"32 samples\" -STARTLINE +HIDDEN}\n sCount32 0xb2ffff\n addUserKnob {40 sCount33 l \"33 samples\" -STARTLINE +HIDDEN}\n sCount33 0x65ffff\n addUserKnob {40 sCount34 l \"34 samples\" +HIDDEN}\n sCount34 0x19ffff\n addUserKnob {40 sCount35 l \"35 samples\" -STARTLINE +HIDDEN}\n sCount35 0x3200ffff\n addUserKnob {40 sCount36 l \"36 samples\" -STARTLINE +HIDDEN}\n sCount36 0x7f00ffff\n addUserKnob {40 sCount37 l \"37 samples\" +HIDDEN}\n sCount37 0xcc00ffff\n addUserKnob {40 sCount38 l \"38 samples\" -STARTLINE +HIDDEN}\n sCount38 0xff00e5ff\n addUserKnob {40 sCount39 l \"39 samples\" -STARTLINE +HIDDEN}\n sCount39 0xff0099ff\n addUserKnob {40 sCount40 l \"40 samples\" +HIDDEN}\n sCount40 0xff004cff\n addUserKnob {40 sCount41 l \"41 samples\" -STARTLINE +HIDDEN}\n sCount41 0x191919ff\n addUserKnob {40 sCount42 l \"42 samples\" -STARTLINE +HIDDEN}\n sCount42 0x191919ff\n addUserKnob {40 sCount43 l \"43 samples\" +HIDDEN}\n sCount43 0x333333ff\n addUserKnob {40 sCount44 l \"44 samples\" -STARTLINE +HIDDEN}\n sCount44 0x4c4c4cff\n addUserKnob {40 sCount45 l \"45 samples\" -STARTLINE +HIDDEN}\n sCount45 0x666666ff\n addUserKnob {40 sCount46 l \"46 samples\" +HIDDEN}\n sCount46 0x7f7f7fff\n addUserKnob {40 sCount47 l \"47 samples\" -STARTLINE +HIDDEN}\n sCount47 0x999999ff\n addUserKnob {40 sCount48 l \"48 + samples\" -STARTLINE +HIDDEN}\n sCount48 0xb2b2b2ff\n addUserKnob {20 endGroup n -1}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 42\n  xpos -640\n  ypos -438\n  bdwidth 223\n  bdheight 210\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xaaaaaa00\n  note_font_size 42\n  xpos -133\n  ypos 18\n  bdwidth 574\n  bdheight 4283\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x666666ff\n  label bin\n  note_font_size 42\n  xpos -638\n  ypos -189\n  bdwidth 218\n  bdheight 227\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  label \"Version\\n1.3\\n\\nDate Modified\\n2019-09-14\\n\\nChangelog\\n1.3\\n- clear UI\\n- '48 samples' change label to '48+ samples'\\n- set default 'max count' to 20\\n\\n1.2\\n- fix algorithm, break the 24 samples limit.\\n  The tool support 48 samples now.\\n\\n1.1\\n- change max count to pulldown menu\\n- set max limited to 23 samples, if more than 23 samples will assigned '24+ samples colormap'\\n- no more remove knobs, the color setting will be keep\\n\\n1.0\\n- using math + TCL to create deepSamplesCount colormap\\n\\nDeveloped by\\nMark Joey Tang\\nhttps://facebook.com/MJTLab\"\n  xpos -1148\n  ypos -437\n  bdwidth 474\n  bdheight 475\n }\n Input {\n  inputs 0\n  name deep\n  xpos 116\n  ypos -508\n }\n Dot {\n  name Dot2\n  xpos 150\n  ypos -428\n }\nset N7984e730 [stack 0]\n Dot {\n  name Dot3\n  xpos 915\n  ypos -428\n }\n DeepToImage {\n  name DeepToImage2\n  xpos 881\n  ypos 4557\n }\npush $N7984e730\n DeepExpression {\n  chans0 alpha\n  chans1 none\n  rgba.alpha \"\\[value globalm.base]\"\n  name DeepExpression1\n  xpos 116\n  ypos -330\n }\n DeepToImage {\n  name DeepToImage1\n  xpos 116\n  ypos -250\n }\nadd_layer {deepSample deepSample.count}\n AddChannels {\n  channels deepSample\n  name AddChannels2\n  xpos 116\n  ypos -170\n }\n Dot {\n  name start_count\n  tile_color 0xff7f00ff\n  xpos 150\n  ypos 53\n  addUserKnob {20 User}\n  addUserKnob {7 sum}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression1\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 1\n  addUserKnob {78 sum n 1}\n  sum {{globalm.base}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount1] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount1] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount1] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression2\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 2\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount2] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount2] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount2] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression3\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 3\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount3] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount3] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount3] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression4\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 4\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount4] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount4] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount4] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression5\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 5\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount5] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount5] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount5] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression6\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 6\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount6] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount6] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount6] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression7\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 7\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount7] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount7] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount7] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression8\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 8\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount8] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount8] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount8] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression9\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 9\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount9] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount9] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount9] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression10\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 10\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount10] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount10] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount10] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression11\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 11\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount11] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount11] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount11] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression12\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 12\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount12] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount12] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount12] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression13\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 13\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount13] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount13] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount13] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression14\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 14\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount14] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount14] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount14] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression15\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 15\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount15] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount15] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount15] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression16\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 16\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount16] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount16] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount16] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression17\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 17\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount17] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount17] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount17] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression18\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 18\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount18] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount18] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount18] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression19\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 19\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount19] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount19] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount19] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Expression {\n  channel3 deepSample\n  expr3 \"\\[value globalm.eCount]\"\n  name Expression20\n  addUserKnob {20 User}\n  addUserKnob {78 id n 1}\n  id 20\n  addUserKnob {78 sum n 1}\n  sum {{\"input.sum + globalm.base - input.sum * globalm.base\"}}\n  addUserKnob {18 assignColor}\n  assignColor {{\"\\[expr 0x\\[string range \\[value parent.sCount20] 2 3]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount20] 4 5]] / 255\"} {\"\\[expr 0x\\[string range \\[value parent.sCount20] 6 7]] / 255\"}}\n  addUserKnob {6 assignColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Dot {\n  name end_count\n  tile_color 0xff7f00ff\n  xpos 148\n  ypos 4113\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  name ShuffleCopy2\n  xpos 114\n  ypos 4557\n }\n Dot {\n  name Dot1\n  xpos 148\n  ypos 4833\n }\nset N798bc250 [stack 0]\n Dot {\n  name start_colormap\n  tile_color 0xffffff\n  xpos 349\n  ypos 4833\n }\n Expression {\n  expr0 \"deepSample.count == 1 ? Expression1.assignColor.r : deepSample.count == 2 ? Expression2.assignColor.r : deepSample.count == 3 ? Expression3.assignColor.r : deepSample.count == 4 ? Expression4.assignColor.r : deepSample.count == 5 ? Expression5.assignColor.r : deepSample.count == 6 ? Expression6.assignColor.r : deepSample.count == 7 ? Expression7.assignColor.r : deepSample.count == 8 ? Expression8.assignColor.r : deepSample.count == 9 ? Expression9.assignColor.r : deepSample.count == 10 ? Expression10.assignColor.r : deepSample.count == 11 ? Expression11.assignColor.r : deepSample.count == 12 ? Expression12.assignColor.r : deepSample.count == 13 ? Expression13.assignColor.r : deepSample.count == 14 ? Expression14.assignColor.r : deepSample.count == 15 ? Expression15.assignColor.r : deepSample.count == 16 ? Expression16.assignColor.r : deepSample.count == 17 ? Expression17.assignColor.r : deepSample.count == 18 ? Expression18.assignColor.r : deepSample.count == 19 ? Expression19.assignColor.r : deepSample.count == 20 ? Expression20.assignColor.r : 0\"\n  expr1 \"deepSample.count == 1 ? Expression1.assignColor.g : deepSample.count == 2 ? Expression2.assignColor.g : deepSample.count == 3 ? Expression3.assignColor.g : deepSample.count == 4 ? Expression4.assignColor.g : deepSample.count == 5 ? Expression5.assignColor.g : deepSample.count == 6 ? Expression6.assignColor.g : deepSample.count == 7 ? Expression7.assignColor.g : deepSample.count == 8 ? Expression8.assignColor.g : deepSample.count == 9 ? Expression9.assignColor.g : deepSample.count == 10 ? Expression10.assignColor.g : deepSample.count == 11 ? Expression11.assignColor.g : deepSample.count == 12 ? Expression12.assignColor.g : deepSample.count == 13 ? Expression13.assignColor.g : deepSample.count == 14 ? Expression14.assignColor.g : deepSample.count == 15 ? Expression15.assignColor.g : deepSample.count == 16 ? Expression16.assignColor.g : deepSample.count == 17 ? Expression17.assignColor.g : deepSample.count == 18 ? Expression18.assignColor.g : deepSample.count == 19 ? Expression19.assignColor.g : deepSample.count == 20 ? Expression20.assignColor.g : 0\"\n  expr2 \"deepSample.count == 1 ? Expression1.assignColor.b : deepSample.count == 2 ? Expression2.assignColor.b : deepSample.count == 3 ? Expression3.assignColor.b : deepSample.count == 4 ? Expression4.assignColor.b : deepSample.count == 5 ? Expression5.assignColor.b : deepSample.count == 6 ? Expression6.assignColor.b : deepSample.count == 7 ? Expression7.assignColor.b : deepSample.count == 8 ? Expression8.assignColor.b : deepSample.count == 9 ? Expression9.assignColor.b : deepSample.count == 10 ? Expression10.assignColor.b : deepSample.count == 11 ? Expression11.assignColor.b : deepSample.count == 12 ? Expression12.assignColor.b : deepSample.count == 13 ? Expression13.assignColor.b : deepSample.count == 14 ? Expression14.assignColor.b : deepSample.count == 15 ? Expression15.assignColor.b : deepSample.count == 16 ? Expression16.assignColor.b : deepSample.count == 17 ? Expression17.assignColor.b : deepSample.count == 18 ? Expression18.assignColor.b : deepSample.count == 19 ? Expression19.assignColor.b : deepSample.count == 20 ? Expression20.assignColor.b : 0\"\n  name Expression21\n }\n Dot {\n  name end_colormap\n  tile_color 0xffffff\n  xpos 349\n  ypos 5136\n }\npush $N798bc250\n Switch {\n  inputs 2\n  which {{parent.show_colormap}}\n  name Switch1\n  xpos 114\n  ypos 5300\n }\n Output {\n  name Output1\n  xpos 114\n  ypos 5405\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nstCount = nuke.toNode('start_count')\\nenCount = nuke.toNode('end_count')\\nstColormap = nuke.toNode('start_colormap')\\nenColormap = nuke.toNode('end_colormap')\\n\\nfor node in nuke.allNodes() :\\n    if node.Class() == 'Expression' :\\n        if not node.name()\\[0:7] == 'filter_' :\\n            nuke.delete( node )\\n\\nfor knob in thisGRP.knobs() :\\n    if knob\\[0:6] == 'sCount' :\\n        thisGRP\\[knob].setVisible(False)\\n        try :\\n            if knob.split('_')\\[1] == 'panelDropped' :\\n                thisGRP.removeKnob( thisGRP\\[knob] )\\n        except :\\n            pass\\n\\nlastNode = stCount\\ncolormapString = \\[]\\n\\nfor i in range( int( thisGRP\\['max_count'].value() ) ) :\\n    n = nuke.nodes.Expression()\\n    idKnob = nuke.Array_Knob( 'id', 'id' )\\n    sumKnob = nuke.Array_Knob( 'sum', 'sum' )\\n    colorKnob = nuke.Color_Knob( 'assignColor', 'assignColor')\\n    n.addKnob( idKnob )\\n    n.addKnob( sumKnob )\\n    n.addKnob( colorKnob )\\n    n\\['id'].setValue( i+1 )\\n    if i == 0 :\\n        n\\['sum'].setExpression( 'globalm.base' )\\n    else :\\n        n\\['sum'].setExpression( 'input.sum + globalm.base - input.sum * globalm.base' )\\n    n\\['assignColor'].setExpression( '\\[expr 0x\\[string range \\[value parent.sCount\\{0\\}] 2 3]] / 255'.format(i+1) , 0 )\\n    n\\['assignColor'].setExpression( '\\[expr 0x\\[string range \\[value parent.sCount\\{0\\}] 4 5]] / 255'.format(i+1) , 1 )\\n    n\\['assignColor'].setExpression( '\\[expr 0x\\[string range \\[value parent.sCount\\{0\\}] 6 7]] / 255'.format(i+1) , 2 )\\n    n\\['channel3'].setValue( 'deepSample.count' )\\n    if i < 47 :\\n        n\\['expr3'].setValue( '\\[value globalm.eCount]' )\\n    else :\\n        n\\['expr3'].setValue( '\\[value globalm.overCount]' )\\n\\n    n.setInput( 0, lastNode )\\n    lastNode = n\\n\\n    thisGRP\\['sCount' + str( i+1 ) ].setVisible(True)\\n\\n    colormapString.append( 'deepSample.count == \\{0\\} ? \\{1\\}.assignColor.'.format(i+1, n.name()) )\\n\\nenCount.setInput( 0, lastNode )\\n\\nn = nuke.nodes.Expression()\\nn\\['channel0'].setValue( 'rgb.red' )\\nn\\['channel1'].setValue( 'rgb.green' )\\nn\\['channel2'].setValue( 'rgb.blue' )\\nn\\['expr0'].setValue( 'r : '.join( colormapString ) + 'r : 0' )\\nn\\['expr1'].setValue( 'g : '.join( colormapString ) + 'g : 0' )\\nn\\['expr2'].setValue( 'b : '.join( colormapString ) + 'b : 0' )\\nn.setInput(0, stColormap)\\nenColormap.setInput(0, n)\\n\"\n  xpos -568\n  ypos -302\n  addUserKnob {20 User}\n  addUserKnob {4 max_count l \"max count\" M {5 10 15 20 25 30 35 40 45 48 \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n  max_count 20\n }\n NoOp {\n  inputs 0\n  name globalm\n  xpos -566\n  ypos -65\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base 0.1\n  addUserKnob {7 bias}\n  bias 1e-07\n  addUserKnob {1 channel}\n  channel alpha\n  addUserKnob {1 eCount}\n  eCount \"\\[value globalm.channel] > sum - \\[value globalm.bias] && \\[value globalm.channel] < sum + \\[value globalm.bias] ? id : deepSample.count\"\n  addUserKnob {1 overCount}\n  overCount \"\\[value globalm.channel] > sum - \\[value globalm.bias] ? id : deepSample.count\"\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepSer.gizmo",
    "content": "Group {\n name DeepSer\n onCreate \"\\nnver = nuke.NUKE_VERSION_MAJOR\\nthisGRP = nuke.thisGroup()\\nif nver >= 11 :\\n\\t thisGRP\\['nuke_version'].setValue(1)\\nelse :\\n\\t thisGRP\\['nuke_version'].setValue(0)\\n\"\n tile_color 0x2866ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {4 nuke_version l INVISIBLE +INVISIBLE M {10 11 \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n nuke_version 11\n addUserKnob {6 remove_invalid l \"remove samples with nan/inf value (Required Nuke 11+)\" +STARTLINE}\n addUserKnob {41 remove_alpha_filter l \"remove samples when alpha under :\" T menu02.remove_alpha_filter}\n addUserKnob {7 alpha_value l \"\" -STARTLINE +DISABLED}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {20 FSL_TabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_force_sample_layers l \"force sample layers\"}\n addUserKnob {41 selection l \"\" +STARTLINE T menu01.selection}\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {7 filter +HIDDEN R 0.0001 1}\n filter 1\n addUserKnob {22 remove_10_layers l -10 +HIDDEN T \"thisGRP = nuke.thisGroup()\\ncurrentCount = thisGRP\\['keep_layers'].value()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nstep = 10\\n\\nif not currentCount == 'not set' :\\n\\tif int(currentCount) - step < 1 :\\n\\t\\tprocCount = 'not set'\\n\\t\\treset()\\n\\t\\tthisGRP\\['keep_layers'].setValue( str(procCount) )\\n\\telse :\\n\\t\\tprocCount = int( currentCount ) - step\\n\\t\\treset()\\n\\t\\tgenlayer( procCount )\\n\\t\\tthisGRP\\['keep_layers'].setValue( str(procCount) )\" +STARTLINE}\n addUserKnob {22 remove_1_layer l - -STARTLINE +HIDDEN T \"thisGRP = nuke.thisGroup()\\ncurrentCount = thisGRP\\['keep_layers'].value()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nstep = 1\\n\\nif not currentCount == 'not set' :\\n\\tif int(currentCount) - step < 1 :\\n\\t\\tprocCount = 'not set'\\n\\t\\treset()\\n\\t\\tthisGRP\\['keep_layers'].setValue( str(procCount) )\\n\\telse :\\n\\t\\tprocCount = int( currentCount ) - step\\n\\t\\treset()\\n\\t\\tgenlayer( procCount )\\n\\t\\tthisGRP\\['keep_layers'].setValue( str(procCount) )\"}\n addUserKnob {26 spacer l \"\" -STARTLINE +HIDDEN T \" \\t\"}\n addUserKnob {26 keep_layers l \"\" -STARTLINE +HIDDEN T \"not set\"}\n addUserKnob {26 spacer_1 l \"\" -STARTLINE +HIDDEN T \" \\t\"}\n addUserKnob {22 add_1_layer l + -STARTLINE +HIDDEN T \"thisGRP = nuke.thisGroup()\\ncurrentCount = thisGRP\\['keep_layers'].value()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nstep = 1\\n\\nif currentCount == 'not set' :\\n\\tprocCount = step\\nelse :\\n\\tprocCount = int( currentCount ) + step\\n\\nreset()\\ngenlayer( procCount )\\n\\nthisGRP\\['keep_layers'].setValue( str(procCount) )\"}\n addUserKnob {22 add_10_layers l +10 -STARTLINE +HIDDEN T \"thisGRP = nuke.thisGroup()\\ncurrentCount = thisGRP\\['keep_layers'].value()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nstep = 10\\n\\nif currentCount == 'not set' :\\n\\tprocCount = step\\nelse :\\n\\tprocCount = int( currentCount ) + step\\n\\nreset()\\ngenlayer( procCount )\\n\\nthisGRP\\['keep_layers'].setValue( str(procCount) )\"}\n addUserKnob {6 drop_hidden l \"drop hidden samples\" +HIDDEN +STARTLINE}\n addUserKnob {20 FSL_TabEnd l \"\" +STARTLINE n -3}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-09-21}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.0\\n- create various setup to\\n  manage deep sample\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"Dont touch\"\n  note_font_size 42\n  xpos 211\n  ypos -649\n  bdwidth 250\n  bdheight 429\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos 216\n  ypos -172\n  bdwidth 243\n  bdheight 902\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x5669ff\n  label \"start loop\"\n  note_font_size 24\n  xpos 1382\n  ypos 484\n  bdwidth 382\n  bdheight 616\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x5669ff\n  label \"end loop\"\n  note_font_size 24\n  xpos 2489\n  ypos 3530\n  bdwidth 429\n  bdheight 620\n }\n Input {\n  inputs 0\n  name deep\n  xpos 1062\n  ypos -579\n }\n Dot {\n  name Dot3\n  xpos 1096\n  ypos -413\n }\nset Ndda96d20 [stack 0]\n Dot {\n  name Dot6\n  xpos 1270\n  ypos -413\n }\nset Nddd16350 [stack 0]\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front \"isnan(r) || isnan(g) || isnan(b) || isnan(a) || isnan(deep.front) || isnan(deep.back) || isinf(r) || isinf(g) || isinf(b) || isinf(a) || isinf(deep.front) || isinf(deep.back) ? -1 : deep.front\"\n  deep.back \"isnan(r) || isnan(g) || isnan(b) || isnan(a) || isnan(deep.front) || isnan(deep.back) || isinf(r) || isinf(g) || isinf(b) || isinf(a) || isinf(deep.front) || isinf(deep.back) ? -1 : deep.back\"\n  name DeepExpression4\n  xpos 1349\n  ypos -365\n }\npush $Nddd16350\n Switch {\n  inputs 2\n  which {{parent.nuke_version}}\n  name Switch4\n  label \"nuke version switch\"\n  xpos 1236\n  ypos -302\n }\npush $Ndda96d20\n Switch {\n  inputs 2\n  which {{parent.remove_invalid}}\n  name Switch3\n  xpos 1062\n  ypos -296\n }\n Dot {\n  name Dot1\n  xpos 1096\n  ypos -129\n }\nset Nddd25dd0 [stack 0]\n Dot {\n  name Dot4\n  xpos 1264\n  ypos -129\n }\nset Nddd28290 [stack 0]\n DeepExpression {\n  temp_name0 avalue\n  temp_expr0 \"\\[value parent.alpha_value]\"\n  chans0 deep\n  chans1 none\n  deep.front \"alpha <= avalue ? -1 : deep.front\"\n  deep.back \"alpha <= avalue ? -1 : deep.back\"\n  name DeepExpression2\n  xpos 1299\n  ypos -67\n }\npush $Nddd28290\n DeepExpression {\n  temp_name0 avalue\n  temp_expr0 \"\\[value parent.alpha_value]\"\n  chans0 deep\n  chans1 none\n  deep.front \"alpha <= avalue ? deep.front : -1\"\n  deep.back \"alpha <= avalue ? deep.back : -1\"\n  name DeepExpression5\n  xpos 1154\n  ypos -64\n }\n Switch {\n  inputs 2\n  which {{parent.nuke_version}}\n  name Switch2\n  label \"nuke version switch\"\n  xpos 1231\n  ypos 6\n }\npush $Nddd25dd0\n Switch {\n  inputs 2\n  which {{parent.remove_alpha_filter}}\n  name Switch1\n  xpos 1062\n  ypos 12\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {204.6000061 107.8000031 818.4000244 431.2000122}\n  use_bbox false\n  name DeepCrop2\n  xpos 1062\n  ypos 158\n }\n Dot {\n  name Dot10\n  xpos 1096\n  ypos 346\n }\nset Ndda9bd10 [stack 0]\n Dot {\n  name Dot11\n  xpos 1658\n  ypos 346\n }\n Dot {\n  name Dot2\n  xpos 1658\n  ypos 661\n }\nset Nddaa0550 [stack 0]\n DeepToImage {\n  name DeepToImage1\n  xpos 1442\n  ypos 658\n }\nadd_layer {deepRawColor deepRawColor.red deepRawColor.green deepRawColor.blue deepRawColor.alpha}\n AddChannels {\n  channels deepRawColor\n  name AddChannels1\n  xpos 1442\n  ypos 738\n }\npush $Nddaa0550\n DeepRecolor {\n  inputs 2\n  channels {{{parent.AddChannels1.channels}}}\n  name DeepRecolor1\n  xpos 1624\n  ypos 738\n }\n DeepExpression {\n  chans0 deepRawColor\n  chans1 none\n  deepRawColor.red red\n  deepRawColor.green green\n  deepRawColor.blue blue\n  deepRawColor.alpha alpha\n  name DeepExpression8\n  label \"store original color\"\n  xpos 1624\n  ypos 851\n }\n Dot {\n  name Dot8\n  xpos 1658\n  ypos 1230\n }\nset Nd5fad910 [stack 0]\n Dot {\n  name Dot9\n  xpos 2771\n  ypos 1230\n }\n DeepExpression {\n  chans0 alpha\n  chans1 none\n  rgba.alpha 1\n  name DeepExpression3\n  label \"store original color\"\n  xpos 2737\n  ypos 1329\n }\n Dot {\n  name start_loop\n  tile_color 0xff9900ff\n  xpos 2771\n  ypos 1417\n }\n DeepExpression {\n  chans1 deep\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  rgba.alpha deepRawColor.alpha\n  name DSM_reset\n  xpos 2737\n  ypos 1491\n }\n DeepMerge {\n  drop_hidden {{parent.drop_hidden}}\n  name final_merge\n  xpos 2737\n  ypos 3869\n }\npush $Nd5fad910\n DeepExpression {\n  chans0 {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  chans1 none\n  rgba.red \"alpha > \\[value store.achk] || alpha == \\[value store.achk] ? 1 : 0\"\n  rgba.alpha 1\n  name DeepExpression1\n  xpos 1408\n  ypos 1227\n }\n DeepToImage {\n  name DeepToImage3\n  xpos 1408\n  ypos 1307\n }\n Shuffle {\n  green black\n  blue black\n  alpha white\n  name Shuffle1\n  xpos 1408\n  ypos 1387\n }\npush $Nd5fad910\n DeepRecolor {\n  inputs 2\n  name DeepRecolor2\n  xpos 1624\n  ypos 1387\n }\n Dot {\n  name Dot12\n  xpos 1658\n  ypos 1443\n }\nset Nd5fd9740 [stack 0]\n Dot {\n  name Dot13\n  xpos 1832\n  ypos 1443\n }\n DeepExpression {\n  chans1 deep\n  deep.front \"red > 1 - \\[value parent.filter] + \\[value store.bias] ? -1 : deep.front\"\n  deep.back \"red > 1 - \\[value parent.filter] + \\[value store.bias] ? -1 : deep.back\"\n  name DeepExpression9\n  xpos 1798\n  ypos 1517\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {204.6000061 107.8000031 818.4000244 431.2000122}\n  use_bbox false\n  name DeepCrop3\n  xpos 1798\n  ypos 1597\n }\n DeepExpression {\n  chans1 none\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  rgba.alpha deepRawColor.alpha\n  name DeepExpression10\n  xpos 1798\n  ypos 1677\n }\n Dot {\n  name Dot14\n  xpos 1832\n  ypos 2080\n }\npush $Nd5fd9740\n DeepExpression {\n  chans0 deep\n  chans1 none\n  deep.front \"red > \\[value parent.filter] - \\[value store.bias] ? deep.front : -1\"\n  deep.back \"red > \\[value parent.filter] - \\[value store.bias] ? deep.back : -1\"\n  name DeepExpression6\n  selected true\n  xpos 1624\n  ypos 1517\n }\n DeepCrop {\n  use_znear false\n  zfar 0\n  outside_zrange true\n  bbox {204.6000061 107.8000031 818.4000244 431.2000122}\n  use_bbox false\n  name DeepCrop1\n  xpos 1624\n  ypos 1597\n }\n DeepToImage {\n  name DeepToImage4\n  xpos 1624\n  ypos 1672\n }\n Shuffle {\n  in deep\n  green black\n  blue black\n  alpha black\n  out rgb\n  name Shuffle2\n  xpos 1624\n  ypos 1752\n }\n DeepFromImage {\n  name DeepFromImage1\n  xpos 1624\n  ypos 1832\n }\n DeepExpression {\n  chans0 none\n  chans1 deep\n  deep.front red\n  deep.back red\n  name DeepExpression11\n  xpos 1624\n  ypos 1892\n }\n DeepExpression {\n  chans1 none\n  rgba.red deepRawColor.red\n  rgba.green deepRawColor.green\n  rgba.blue deepRawColor.blue\n  rgba.alpha deepRawColor.alpha\n  name DeepExpression7\n  xpos 1624\n  ypos 1960\n }\n DeepMerge {\n  inputs 2\n  name DeepMerge2\n  xpos 1624\n  ypos 2077\n }\n Dot {\n  name Dot5\n  xpos 1658\n  ypos 3920\n }\npush $Ndda9bd10\n Switch {\n  inputs 3\n  which {{parent.selection}}\n  name Switch5\n  xpos 1062\n  ypos 4551\n }\n Output {\n  name Output1\n  xpos 1062\n  ypos 4725\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['remove_alpha_filter'].getValue() == 1 :\\n\\t thisGRP\\['alpha_value'].setEnabled(True)\\nelse :\\n\\t thisGRP\\['alpha_value'].setEnabled(False)\\n\"\n  xpos 295\n  ypos -445\n  addUserKnob {20 User}\n  addUserKnob {6 remove_alpha_filter l \"remove samples when alpha under :\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nadvknobs = \\['remove_10_layers','remove_1_layer','spacer','keep_layers','spacer_1','add_1_layer','add_10_layers','drop_hidden']\\nif thisGRP\\['selection'].getValue() == 0 :\\n    thisGRP\\['filter'].setVisible(False)\\n    for knob in advknobs :\\n        thisGRP\\[knob].setVisible(False)\\nelif thisGRP\\['selection'].getValue() == 1 :\\n    thisGRP\\['filter'].setVisible(True)\\n    for knob in advknobs :\\n        thisGRP\\[knob].setVisible(False)\\nelse :\\n    thisGRP\\['filter'].setVisible(False)\\n    for knob in advknobs :\\n        thisGRP\\[knob].setVisible(True)\\n\"\n  xpos 295\n  ypos -539\n  addUserKnob {20 User}\n  addUserKnob {83 selection l \"\" +STARTLINE M {none \"balance (quick)\" \"advance (slow)\"}}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos 295\n  ypos -81\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def reset() :\\n\\tstartloop = nuke.toNode('start_loop')\\n\\tfor node in nuke.allNodes() :\\n\\t\\tif node.name()\\[0:4] == 'DSM_' :\\n\\t\\t\\tnuke.delete( node )\\n\\n\\tstartloop = nuke.toNode('start_loop')\\n\\tfmerge = nuke.toNode('final_merge')\\n\\tfor i in range( fmerge.inputs() ) :\\n\\t\\tfmerge.setInput(i, None)\\n\\tdreset = nuke.nodes.DeepExpression( name='DSM_reset' )\\n\\tdreset\\['rgba.red'].setValue('deepRawColor.red')\\n\\tdreset\\['rgba.green'].setValue('deepRawColor.green')\\n\\tdreset\\['rgba.blue'].setValue('deepRawColor.blue')\\n\\tdreset\\['rgba.alpha'].setValue('deepRawColor.alpha')\\n\\tdreset.setInput(0, startloop)\\n\\n\\tfmerge.setInput(0, dreset)\\n\\n################################\\n\\ndef genlayer(currentcount) :\\n\\tstartloop = nuke.toNode('start_loop')\\n\\tfmerge = nuke.toNode('final_merge')\\n\\n\\tacheck = nuke.nodes.DeepExpression( name='DSM_acheck' , chans0='rgba.blue' , chans1='none' , inputs=\\[startloop] )\\n\\tacheck\\['rgba.blue'].setValue( '\\[value parent.nuke_version] == 0 ? ( deepRawColor.alpha <= \\[value store.achk] ? 1 : 0 ) : (deepRawColor.alpha <= \\[value store.achk] ? 0 : 1 )' )\\n\\n\\tlastnode = acheck\\n\\n\\tfor i in range( currentcount ) :\\n\\t\\tlayerid = i + 1\\n\\n\\t\\tstartdot = nuke.nodes.Dot( name='DSM_start_'+str(layerid) , inputs=\\[lastnode] )\\n\\n\\t\\td2img = nuke.nodes.DeepToImage( name='DSM_d2img_'+str(layerid) )\\n\\n\\t\\tif layerid == 1 :\\n\\t\\t\\td2r = nuke.nodes.DeepExpression( name='DSM_d2r_'+str(layerid) , chans0='rgba.red' , chans1='none' , inputs=\\[startdot] )\\n\\t\\t\\td2r\\['rgba.red'].setValue( 'deep.front' )\\n\\n\\t\\t\\td2img.setInput(0, d2r)\\n\\t\\t\\t\\n\\t\\t\\tr2all = nuke.nodes.DeepRecolor( name='DSM_r2all_'+str(layerid) , channels='rgb.red' , inputs=\\[startdot, d2img] )\\n\\t\\t\\t\\n\\t\\t\\tlastnode = r2all\\n\\t\\telse :\\n\\t\\t\\tdmvb4 = nuke.nodes.DeepExpression( name='DSM_dmvb4_'+str(layerid) , chans0='rgba.red' , chans1='deep' , inputs=\\[startdot] )\\n\\t\\t\\tdmvb4\\['rgba.red'].setValue( 'deep.front' )\\n\\t\\t\\tdmvb4\\['deep.front'].setValue( 'deep.front == red || deep.front < red ? -1 : deep.front' )\\n\\t\\t\\tdmvb4\\['deep.back'].setValue( 'deep.back == red || deep.back < red? -1 : deep.back' )\\n\\n\\t\\t\\tdrmb4 = nuke.nodes.DeepCrop( name='DSM_drmb4_'+str(layerid) , inputs=\\[dmvb4] )\\n\\t\\t\\tdrmb4\\['use_znear'].setValue(0)\\n\\t\\t\\tdrmb4\\['zfar'].setValue(0)\\n\\t\\t\\tdrmb4\\['use_zfar'].setValue(1)\\n\\t\\t\\tdrmb4\\['outside_zrange'].setValue(1)\\n\\t\\t\\tdrmb4\\['use_bbox'].setValue(0)\\n\\t\\t\\t\\n\\t\\t\\td2img.setInput(0, drmb4)\\n\\n\\t\\t\\tr2all = nuke.nodes.DeepRecolor( name='DSM_r2all_'+str(layerid) , channels='rgb.red' , inputs=\\[startdot, d2img] )\\n\\n\\t\\t\\tetypx = nuke.nodes.DeepExpression( name='DSM_etypx_'+str(layerid) , chans0='none' , inputs=\\[r2all] )\\n\\t\\t\\tetypx\\['deep.front'].setValue( 'red == 0 || red < 0 ? -1 : deep.front' )\\n\\t\\t\\tetypx\\['deep.back'].setValue( 'red == 0 || red < 0 ? -1 : deep.back' )\\n\\n\\t\\t\\takeepb4 = nuke.nodes.DeepExpression( name='DSM_akeepb4_'+str(layerid) , inputs=\\[startdot] )\\n\\t\\t\\takeepb4\\['rgba.green'].setValue( 'blue' )\\n\\t\\t\\takeepb4\\['rgba.alpha'].setValue( 'blue' )\\n\\t\\t\\takeepb4\\['deep.front'].setValue( '\\[value parent.nuke_version] == 0 ? ( deep.front >= red ? deep.front : -1 ) : ( deep.front > red ? -1 : deep.front )' )\\n\\t\\t\\takeepb4\\['deep.back'].setValue( '\\[value parent.nuke_version] == 0 ? ( deep.back >= red ? deep.back : -1 ) : ( deep.back > red ? -1 : deep.back )' )\\n\\n\\t\\t\\tarmb4 = nuke.nodes.DeepCrop( name='DSM_armb4_'+str(layerid) , inputs=\\[akeepb4] )\\n\\t\\t\\tarmb4\\['use_znear'].setValue(0)\\n\\t\\t\\tarmb4\\['zfar'].setValue(0)\\n\\t\\t\\tarmb4\\['use_zfar'].setValue(1)\\n\\t\\t\\tarmb4\\['outside_zrange'].setValue(1)\\n\\t\\t\\tarmb4\\['use_bbox'].setValue(0)\\n\\n\\t\\t\\tad2img = nuke.nodes.DeepToImage( name='DSM_ad2img_'+str(layerid) , inputs=\\[armb4] )\\n\\n\\t\\t\\tg2all = nuke.nodes.DeepRecolor( name='DSM_g2all_'+str(layerid) , channels='rgb.green' , inputs=\\[etypx, ad2img] )\\n\\n\\t\\t\\tlastnode = g2all\\n\\n\\t\\tdfilter = nuke.nodes.DeepExpression( name='DSM_dfilter_'+str(layerid) , chans0='none' )\\n\\t\\tif layerid == 1 :\\n\\t\\t\\tdfilter\\['deep.front'].setValue( 'deep.front != red ? -1 : deep.front')\\n\\t\\t\\tdfilter\\['deep.back'].setValue( 'deep.back != red ? -1 : deep.back')\\n\\t\\t\\tdfilter.setInput(0, r2all)\\n\\t\\telse :\\n\\t\\t\\tdfilter\\['deep.front'].setValue( 'deep.front != red || green == 1 ? -1 : deep.front')\\n\\t\\t\\tdfilter\\['deep.back'].setValue( 'deep.back != red || green == 1 ? -1 : deep.back')\\n\\t\\t\\tdfilter.setInput(0, g2all)\\n\\n\\t\\tdthrow = nuke.nodes.DeepCrop( name='DSM_throw_'+str(layerid) , inputs=\\[dfilter] )\\n\\t\\tdthrow\\['use_znear'].setValue(0)\\n\\t\\tdthrow\\['zfar'].setValue(0)\\n\\t\\tdthrow\\['use_zfar'].setValue(1)\\n\\t\\tdthrow\\['outside_zrange'].setValue(1)\\n\\t\\tdthrow\\['use_bbox'].setValue(0)\\n\\n\\t\\tdrevert = nuke.nodes.DeepExpression( name='DSM_revert_'+str(layerid) , chans1='none' , inputs=\\[dthrow] )\\n\\t\\tdrevert\\['rgba.red'].setValue('deepRawColor.red')\\n\\t\\tdrevert\\['rgba.green'].setValue('deepRawColor.green')\\n\\t\\tdrevert\\['rgba.blue'].setValue('deepRawColor.blue')\\n\\t\\tdrevert\\['rgba.alpha'].setValue('deepRawColor.alpha')\\n\\n\\t\\tfmerge.setInput(i, drevert)\" +STARTLINE}\n  addUserKnob {7 bias}\n  bias 1e-05\n  addUserKnob {7 achk}\n  achk 0.9999\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeflickerVelocity.gizmo",
    "content": "Group {\n name DeflickerVelocity\n tile_color 0x7f00ffff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 User l Controls}\n addUserKnob {4 velocity_type l \"Velocity Type\" M {\" 0 > 1  -  3DS Max \" \"-1 > 1  -  Maya\\\\Nuke \" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 noVelocity l \"No Velocity\" t \"Wether or not the node should try to realign the footage based on vector information\" -STARTLINE}\n addUserKnob {6 protect_alpha l \"Protect Alpha\" -STARTLINE}\n protect_alpha true\n addUserKnob {7 velocity_multiplier l \"Velocity Multiplier\" t \"How much the Velocity will be multiplied o align the previous and next frame  to the middle frame. Based on Vray Velocity Pass \\\"max velocity\\\" parameter.\" R 0 100}\n velocity_multiplier 1\n addUserKnob {26 \"\"}\n addUserKnob {6 Maskbyvelocity l \"Mask by Velocity\" +STARTLINE}\n addUserKnob {7 MaskVelocityThreshold l Threshold R 0 100}\n MaskVelocityThreshold 0.1\n addUserKnob {7 MaskVelocitySoftness l Softness R 0 10}\n MaskVelocitySoftness 0.1\n addUserKnob {7 ConservativeMasking l Conservative}\n ConservativeMasking 1\n addUserKnob {7 VelocityBlurMask l Blur R 0 200}\n VelocityBlurMask 1\n addUserKnob {7 VelocityErodeMask l Erode R -20 20}\n addUserKnob {26 \"\"}\n addUserKnob {6 Difference_mask l \"Mask by Difference\" +STARTLINE}\n addUserKnob {7 difference_mask_preblur l \"Pre Blur\" R 0 200}\n difference_mask_preblur 5\n addUserKnob {7 difference_mask_threshold l Threshold}\n difference_mask_threshold 0.1\n addUserKnob {7 difference_mask_softness l Softness}\n difference_mask_softness 0.1\n addUserKnob {7 difference_mask_blur l \"Post Blur\" R 0 200}\n difference_mask_blur 5\n addUserKnob {7 difference_mask_erode l Erode R -20 20}\n difference_mask_erode 1\n addUserKnob {26 \"\"}\n addUserKnob {6 input_mask l \"Mask by Input   \" -STARTLINE}\n addUserKnob {4 input_mask_channel l \"   Channel \" -STARTLINE M {rgba.red rgba.green rgba.blue rgba.alpha}}\n input_mask_channel rgba.alpha\n addUserKnob {6 input_mask_invert l Invert -STARTLINE}\n addUserKnob {7 input_mask_conservative l Conservative}\n input_mask_conservative 1\n addUserKnob {7 Input_mask_blur l Blur R 0 200}\n Input_mask_blur 5\n addUserKnob {7 Input_mask_erode l Erode R -20 20}\n addUserKnob {26 \"\"}\n addUserKnob {6 CheckMask l \"Display Masks\" +STARTLINE}\n addUserKnob {7 Opacity}\n Opacity 1\n addUserKnob {26 \"\"}\n addUserKnob {26 Info l \"\" +STARTLINE T \"Velocity Deflicker 1.1 by Ju / the Post Bangkok\\nwww.juvano.com\\nwww.the-post-bangkok.com\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x8e8e3800\n  label \"Velocity Shift\\n\"\n  note_font_size 42\n  xpos -330\n  ypos -651\n  bdwidth 317\n  bdheight 450\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x8e8e3800\n  label \"Velocity\\nConversion\"\n  note_font_size 42\n  xpos 185\n  ypos -1205\n  bdwidth 245\n  bdheight 204\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x7171c600\n  label \"MASK VELOCITY\"\n  note_font_size 42\n  xpos 69\n  ypos -946\n  bdwidth 375\n  bdheight 813\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x7171c600\n  label \"MASK INPUT\"\n  note_font_size 42\n  xpos 544\n  ypos -1017\n  bdwidth 404\n  bdheight 1156\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x7171c600\n  label \"MASK\\nDIFFERENCE\"\n  note_font_size 42\n  xpos -897\n  ypos -1102\n  bdwidth 341\n  bdheight 1019\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x7171c600\n  label WARNINGS\n  note_font_size 42\n  xpos -89\n  ypos 367\n  bdwidth 639\n  bdheight 332\n }\n Blur {\n  inputs 0\n  name Blur2\n  xpos -680\n  ypos -796\n }\n Dilate {\n  inputs 0\n  size -1\n  name Dilate4\n  xpos -884\n  ypos -469\n  disable true\n }\n Dilate {\n  size 2\n  name Dilate5\n  xpos -884\n  ypos -433\n  disable true\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0.5 0.5 0.5 1}\n  name Constant1\n  xpos 366\n  ypos -1383\n }\n Reformat {\n  type \"to box\"\n  box_width {{img.width i}}\n  box_height {{img.height i}}\n  box_fixed true\n  filter impulse\n  name Reformat1\n  xpos 366\n  ypos -1301\n }\nset Nfc13700 [stack 0]\n Input {\n  inputs 0\n  name velocity\n  xpos 621\n  ypos -1347\n  number 1\n }\npush $Nfc13700\n Switch {\n  inputs 2\n  which {{\"\\[python -execlocal ret\\\\ =\\\\ min\\\\ (\\\\ len(nuke.toNode(\\\\\\\"velocity\\\\\\\").channels())\\\\ ,\\\\ 1\\\\ )]\" i}}\n  name Switch_MissingVelocity\n  xpos 547\n  ypos -1251\n }\n Switch {\n  inputs 2\n  which {{parent.noVelocity i}}\n  name Switch_NoVelocity\n  xpos 547\n  ypos -1198\n }\n Grade {\n  multiply {1 1 0 1}\n  black_clamp false\n  name REMOVE_BLUE\n  xpos 547\n  ypos -1047\n  disable true\n }\n Grade {\n  multiply 2\n  add -1\n  black_clamp false\n  name Max_2_Maya_Conv\n  xpos 253\n  ypos -1047\n  disable {{parent.velocity_type i}}\n }\nset Nfe3a800 [stack 0]\n Input {\n  inputs 0\n  name img\n  xpos -41\n  ypos -1377\n }\n Constant {\n  inputs 0\n  name Constant4\n  xpos 110\n  ypos -1402\n }\n Switch {\n  inputs 2\n  which {{\"\\[python -execlocal ret\\\\ =\\\\ min\\\\ (\\\\ len(nuke.toNode(\\\\\\\"img\\\\\\\").channels())\\\\ ,\\\\ 1\\\\ )]\" i}}\n  name Switch_MissingImage\n  xpos -41\n  ypos -1276\n }\nset Ndc53de00 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.green\n  to1 forward.v\n  name Velocity\n  xpos -41\n  ypos -1059\n }\n Dot {\n  name Dot6\n  xpos 3\n  ypos -990\n }\nset Nfe3e800 [stack 0]\n Dot {\n  name Dot5\n  xpos -166\n  ypos -990\n }\nset Nfe3ed00 [stack 0]\n Dot {\n  name Dot9\n  xpos -231\n  ypos -990\n }\n Dot {\n  name Dot15\n  xpos -231\n  ypos -571\n }\nset Nfe3f700 [stack 0]\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset2\n  xpos -319\n  ypos -510\n }\n set Cf7725c00 [stack 0]\n Crop {\n  box {0 0 {img.width i} {img.height i}}\n  crop false\n  name Crop2\n  xpos -319\n  ypos -486\n }\n set Cfe4c000 [stack 0]\n IDistort {\n  uv forward\n  uv_scale {{parent.velocity_multiplier i}}\n  maskChannel rgba.alpha\n  name IDistort1\n  xpos -319\n  ypos -462\n  disable {{parent.noVelocity i}}\n }\nset Nfe4c500 [stack 0]\n Dot {\n  name Dot22\n  xpos -526\n  ypos -453\n }\n Dot {\n  name Dot19\n  xpos -526\n  ypos -924\n }\n Blur {\n  size {{parent.difference_mask_preblur i}}\n  name Blur4\n  xpos -863\n  ypos -933\n }\n set Cfe4d400 [stack 0]\npush $Ndc53de00\n Dot {\n  name Dot4\n  xpos -397\n  ypos -1273\n }\nset Nfe4d900 [stack 0]\n Dot {\n  name Dot11\n  xpos -464\n  ypos -1273\n }\n Dot {\n  name Dot24\n  xpos -464\n  ypos -962\n }\nset Nfe4e300 [stack 0]\n Crop {\n  box {0 0 {img.width i} {img.height i}}\n  name Crop1\n  xpos -665\n  ypos -965\n }\nclone $Cfe4d400 {\n  xpos -775\n  ypos -971\n  selected false\n }\n Dot {\n  name Dot12\n  xpos -731\n  ypos -861\n }\nset Nfe4f200 [stack 0]\n Merge2 {\n  inputs 2\n  operation difference\n  name Merge13\n  xpos -863\n  ypos -544\n }\npush $Nfe3f700\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset3\n  xpos -320\n  ypos -351\n }\n set Cf7725500 [stack 0]\nclone $Cfe4c000 {\n  xpos -320\n  ypos -327\n  selected false\n }\n IDistort {\n  uv forward\n  uv_scale {{-parent.velocity_multiplier i}}\n  maskChannel rgba.alpha\n  name IDistort2\n  xpos -320\n  ypos -303\n  disable {{parent.noVelocity i}}\n }\nset Nfe6c500 [stack 0]\n Dot {\n  name Dot21\n  xpos -539\n  ypos -294\n }\n Dot {\n  name Dot20\n  xpos -539\n  ypos -886\n }\nclone $Cfe4d400 {\n  xpos -886\n  ypos -895\n  selected false\n }\npush $Nfe4f200\n Merge2 {\n  inputs 2\n  operation difference\n  name Merge3\n  xpos -886\n  ypos -687\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge14\n  xpos -750\n  ypos -626\n }\n Grade {\n  blackpoint {{\"clamp(parent.difference_mask_threshold - parent.difference_mask_softness)\" i}}\n  whitepoint {{\"clamp(parent.difference_mask_threshold + parent.difference_mask_softness)\" i}}\n  white_clamp true\n  name Grade14\n  xpos -750\n  ypos -391\n }\n Invert {\n  name Invert2\n  xpos -750\n  ypos -367\n  disable true\n }\n HueShift {\n  saturation 0\n  name HueShift1\n  xpos -750\n  ypos -331\n }\n Shuffle {\n  alpha red\n  name Shuffle2\n  xpos -750\n  ypos -307\n }\n Blur {\n  size {{parent.difference_mask_blur i}}\n  name Blur3\n  xpos -750\n  ypos -242\n }\n Dilate {\n  size {{parent.difference_mask_erode i}}\n  name Dilate6\n  xpos -750\n  ypos -206\n }\n Dot {\n  name Dot27\n  xpos -706\n  ypos -120\n }\npush $Nfe3a800\n Dot {\n  name Dot18\n  xpos 297\n  ypos -997\n }\nset Nfe90000 [stack 0]\n Grade {\n  multiply -1\n  black_clamp false\n  name FLIP_plus1_to_min1\n  xpos 190\n  ypos -866\n }\n Grade {\n  name CLAMP_BLACK1\n  xpos 190\n  ypos -759\n }\npush $Nfe90000\n Grade {\n  name CLAMP_BLACK2\n  xpos 330\n  ypos -797\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name ADD\n  xpos 330\n  ypos -759\n }\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos 330\n  ypos -735\n }\n Grade {\n  blackpoint {{clamp(parent.MaskVelocityThreshold-parent.MaskVelocitySoftness,0,100000000) i}}\n  whitepoint {{clamp(parent.MaskVelocityThreshold+parent.MaskVelocitySoftness,0,10000000000) i}}\n  name Grade1\n  xpos 330\n  ypos -711\n }\n Shuffle {\n  alpha red\n  name Shuffle1\n  xpos 330\n  ypos -687\n }\n Dot {\n  name Dot17\n  xpos 374\n  ypos -650\n }\nset Nfeac000 [stack 0]\npush $Nfeac000\nclone $Cf7725500 {\n  xpos 86\n  ypos -426\n  selected false\n }\npush $Nfeac000\nclone $Cf7725c00 {\n  xpos 79\n  ypos -579\n  selected false\n }\npush $Nfeac000\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge4\n  xpos 222\n  ypos -512\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade12\n  xpos 222\n  ypos -488\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge10\n  xpos 222\n  ypos -378\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade13\n  xpos 222\n  ypos -354\n }\n Dilate {\n  size 1\n  name Dilate2\n  xpos 222\n  ypos -325\n }\n Merge2 {\n  inputs 2\n  operation copy\n  mix {{abs(parent.ConservativeMasking-1) i}}\n  name Merge11\n  xpos 330\n  ypos -267\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade8\n  xpos 330\n  ypos -243\n }\n Blur {\n  size {{parent.VelocityBlurMask i}}\n  name Blur5\n  xpos 330\n  ypos -219\n }\n Dilate {\n  size {{parent.VelocityErodeMask i}}\n  name Dilate7\n  xpos 330\n  ypos -183\n }\n Constant {\n  inputs 0\n  name Constant3\n  xpos 604\n  ypos -744\n }\n Reformat {\n  type \"to box\"\n  box_width {{img.width i}}\n  box_height {{img.height i}}\n  box_fixed true\n  filter impulse\n  name Reformat2\n  xpos 604\n  ypos -662\n }\n Invert {\n  name Invert3\n  xpos 604\n  ypos -623\n  disable {{parent.input_mask_invert i}}\n }\n set Cfecf200 [stack 0]\n Input {\n  inputs 0\n  name mask\n  xpos 792\n  ypos -929\n  number 2\n }\nset Nfecf700 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle6\n  xpos 837\n  ypos -841\n }\npush $Nfecf700\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle5\n  xpos 769\n  ypos -816\n }\npush $Nfecf700\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle4\n  xpos 691\n  ypos -844\n }\npush $Nfecf700\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  xpos 579\n  ypos -829\n }\n Switch {\n  inputs 4\n  which {{parent.input_mask_channel i}}\n  name Switch3\n  xpos 792\n  ypos -757\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade5\n  xpos 792\n  ypos -641\n }\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge9\n  xpos 792\n  ypos -617\n  disable {{parent.input_mask i}}\n }\n Dot {\n  name Dot14\n  xpos 836\n  ypos -565\n }\nset Nfef0500 [stack 0]\npush $Nfef0500\nclone $Cf7725500 {\n  xpos 561\n  ypos -459\n  selected false\n }\npush $Nfef0500\nclone $Cf7725c00 {\n  xpos 562\n  ypos -568\n  selected false\n }\npush $Nfef0500\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge1\n  xpos 697\n  ypos -500\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade10\n  xpos 697\n  ypos -476\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos 697\n  ypos -430\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade11\n  xpos 697\n  ypos -406\n }\n Dilate {\n  size 1\n  name Dilate1\n  xpos 697\n  ypos -375\n }\n Merge2 {\n  inputs 2\n  operation copy\n  mix {{abs(parent.input_mask_conservative-1)}}\n  name Merge8\n  xpos 792\n  ypos -318\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade9\n  xpos 792\n  ypos -294\n }\nclone $Cfecf200 {\n  xpos 792\n  ypos -265\n  selected false\n }\n Blur {\n  size {{parent.Input_mask_blur i}}\n  name Blur1\n  xpos 792\n  ypos -229\n }\n Dilate {\n  size {{parent.Input_mask_erode i}}\n  name Dilate3\n  xpos 792\n  ypos -193\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name MASK_VEL\n  xpos 792\n  ypos -157\n  disable {{abs(parent.Maskbyvelocity-1) i}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name MASK_DIFF\n  xpos 792\n  ypos -123\n  disable {{abs(parent.Difference_mask-1) i}}\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade6\n  xpos 792\n  ypos -92\n }\n Grade {\n  channels rgba\n  white_clamp true\n  name Grade7\n  xpos 792\n  ypos -58\n }\n Dot {\n  name Dot16\n  xpos 836\n  ypos 59\n }\n Dot {\n  name Dot7\n  xpos 726\n  ypos 59\n }\nset Nff31400 [stack 0]\n Invert {\n  name Invert1\n  xpos 165\n  ypos 284\n }\npush $Nfe4e300\n Dot {\n  name Dot13\n  xpos -464\n  ypos 193\n }\npush $Nff31400\npush $Nfe4d900\n Dot {\n  name Dot10\n  xpos -397\n  ypos 59\n }\npush $Nfe3e800\n Dot {\n  name Dot2\n  xpos 3\n  ypos -460\n }\nset Nff32800 [stack 0]\n Constant {\n  inputs 0\n  color 1\n  name Constant2\n  xpos -119\n  ypos -548\n }\n Reformat {\n  type \"to box\"\n  box_width {{img.width i}}\n  box_height {{img.height i}}\n  box_fixed true\n  filter impulse\n  name Reformat3\n  xpos -119\n  ypos -466\n }\npush $Nff32800\n Switch {\n  inputs 2\n  which {{abs(parent.protect_alpha-1) i}}\n  name Switch2\n  xpos -119\n  ypos -431\n }\nset Ndc4f5200 [stack 0]\npush $Nfe6c500\n Dot {\n  name Dot3\n  xpos -210\n  ypos -308\n }\npush $Ndc4f5200\npush $Nfe4c500\n Dot {\n  name Dot1\n  xpos -221\n  ypos -466\n }\npush $Nfe3ed00\n Merge2 {\n  inputs 2+1\n  operation copy\n  maskChannelInput -rgba.alpha\n  mix 0.5\n  name Merge5\n  xpos -210\n  ypos -500\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  maskChannelInput -rgba.alpha\n  mix {{1/3 i}}\n  name Merge6\n  xpos -210\n  ypos -352\n }\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy1\n  xpos -79\n  ypos -289\n  disable {{abs(parent.protect_alpha-1) i}}\n }\n Dot {\n  name Dot8\n  xpos -35\n  ypos -223\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge7\n  xpos -79\n  ypos 56\n }\n Merge2 {\n  inputs 2\n  operation copy\n  maskChannelMask rgba.green\n  mix {{abs(parent.Opacity-1) i}}\n  name Mix1\n  xpos -79\n  ypos 190\n }\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge12\n  xpos -79\n  ypos 290\n  disable {{abs(parent.CheckMask-1) i}}\n }\n Text2 {\n  font_size_toolbar 50\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"Velocity input missing\"\n  old_message {\n   {86 101 108 111 99 105 116 121 32 105 110 112 117 116 32 109 105 115 115 105 110 103}\n  }\n  box {10 5 1000 65}\n  transforms {\n   {0 2}\n  }\n  font_size_values {\n   {0 50 1 50 2 50 3 50 4 50 5 50 6 50 7 50 8 50 9 50 10 50 11 50 12 50 13 50 14 50 15 50 16 50 17 50 18 50 19 50 20 50 21 50}\n  }\n  cursor_position 19\n  font_size 50\n  center {960 540}\n  cursor_initialised true\n  autofit_bbox false\n  initial_cursor_position {\n   {0 1080}\n  }\n  group_animations {\n   {0}\n   imported:\n   0\n   selected:\n   items:\n   \"root transform/\"\n  }\n  animation_layers {\n   {1 11 960 540 0 0 1 1 0 0 0 0}\n  }\n  color {1 0 0 1}\n  name Warning_Velocity\n  xpos -79\n  ypos 464\n  disable {{\"\\[python min\\\\ (\\\\ (len(nuke.toNode(\\\\\\\"velocity\\\\\\\").channels())\\\\ +\\\\ nuke.toNode(\\\\\\\"Switch_NoVelocity\\\\\\\")\\\\\\['which'\\\\].value())\\\\ ,\\\\ 1\\\\ )]\"}}\n }\n Text2 {\n  font_size_toolbar 50\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"Img input missing\"\n  old_message {\n   {73 109 103 32 105 110 112 117 116 32 109 105 115 115 105 110 103}\n  }\n  box {10 73 1000 133}\n  transforms {\n   {0 2}\n  }\n  font_size_values {\n   {0 50 1 50 2 50 3 50 4 50 5 50 6 50 7 50 8 50 9 50 10 50 11 50 12 50 13 50 14 50 15 50 16 50}\n  }\n  cursor_position 17\n  font_size 50\n  center {960 540}\n  cursor_initialised true\n  autofit_bbox false\n  initial_cursor_position {\n   {0 1080}\n  }\n  group_animations {\n   {0}\n   imported:\n   0\n   selected:\n   items:\n   \"root transform/\"\n  }\n  animation_layers {\n   {1 11 960 540 0 0 1 1 0 0 0 0}\n  }\n  color {1 0 0 1}\n  name Warning_Img\n  xpos -79\n  ypos 507\n  disable {{\"\\[python min\\\\ (\\\\ len(nuke.toNode(\\\\\\\"img\\\\\\\").channels())\\\\ ,\\\\ 1\\\\ )]\"}}\n }\n Output {\n  name Output1\n  xpos -79\n  ypos 766\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DefocusSwirlyBokeh.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DefocusSwirlyBokeh\n tile_color 0xb16f43ff\n selected true\n addUserKnob {20 DefocusSwirlyBokeh}\n addUserKnob {6 usegpu l \"use gpu\" t \"You REALLY need a good GPU to use this node effectively. With CPU it will be excruciatingly slow.\" +STARTLINE}\n usegpu true\n addUserKnob {7 size l \"bokeh size\" t \"The size of your defocus.\" R 2 100}\n size 25\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.25 1.5}\n aspect_ratio 1\n addUserKnob {7 swirl_amount l \"swirly amount\" t \"How much to increase the cat's eye effect on the edges of frame.\"}\n swirl_amount 1\n addUserKnob {26 spacer2 l \" \" T \"\"}\n addUserKnob {7 bokeh_contrast l \"bokeh contrast\" t \"adjust contrast of bokeh up or down: 0 is grey. 1 is no change. 4 is high contrast.\\n\" R 0 2}\n bokeh_contrast 1\n addUserKnob {7 bokeh_blur l \"bokeh blur\" t \"Blur the bokeh to soften out the edges. (percent of input resolution).\" R 0 0.5}\n addUserKnob {26 spacer l \" \" T \"\"}\n addUserKnob {6 enable_bokeh_masking l \"enable bokeh masking\" t \"false: \\nuse the input filter for the whole frame. \\n\\ntrue: \\nthe outward facing edges of the bokeh get increasingly masked by a radial towards the edge of frame.\" +STARTLINE}\n addUserKnob {7 bokeh_radial_softness l \"radial softness\" t \"How soft is the radial that masks the edge bokeh if enable bokeh masking is true.\"}\n bokeh_radial_softness 0.5\n addUserKnob {15 mattebox}\n addUserKnob {7 mattebox_softness l \"mattebox softness\" R 0 25}\n addUserKnob {20 About}\n addUserKnob {26 about_label l \" \" T \"<br/>\\nBased on Alexander Kulikov's CatsEyeDefocus.<br/>\\nwww.nukepedia.com/blink/filter/catseyedefocus\\n<br/><br/>\\nSimplifying the node. The blink convolution  node is the same.\\n<br/><br/>\\ngist.github.com/jedypod\\n\"}\n}\n Input {\n  inputs 0\n  name Inputfilter\n  label \"\\[value number]\"\n  xpos -370\n  ypos -568\n  number 1\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 128\n  box_height {{box_width}}\n  box_fixed true\n  name ReformatBox\n  xpos -590\n  ypos -562\n }\n Flare {\n  position {{width/2} {height/2}}\n  radius {{position.x-(position.x*0.15)} {radius.0+(radius.0*0.02)} {radius.0+(radius.0*0.05)}}\n  inner_color 0.145\n  outer_falloff 0.54\n  inner_falloff 0.88\n  name Flare1\n  xpos -590\n  ypos -514\n }\n Keyer {\n  operation \"luminance key\"\n  range {0 0.404087018 1 1}\n  name Keyer1\n  xpos -590\n  ypos -472\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1]\"}}\n  name Switch1\n  xpos -370\n  ypos -466\n }\n Dot {\n  name Dot2\n  label \" \"\n  note_font \"Helvetica Bold Bold\"\n  note_font_size 24\n  note_font_color 0xa5a5a501\n  xpos -336\n  ypos -366\n }\nset Nced61ee0 [stack 0]\n Radial {\n  replace true\n  area {0 0 {input.width} {input.height}}\n  softness {{parent.bokeh_radial_softness}}\n  name LensEdgeBokehSoften\n  xpos -370\n  ypos -346\n }\n Reformat {\n  type \"to box\"\n  box_width {{parent.size}}\n  box_height {{box_width}}\n  box_fixed true\n  name SCALE_FILTER1\n  xpos -370\n  ypos -298\n }\n Reformat {\n  type scale\n  box_fixed true\n  scale {{parent.aspect_ratio} 1}\n  resize distort\n  name ASPECT_RATIO2\n  xpos -370\n  ypos -250\n }\n Crop {\n  box {{parent.mattebox+(parent.mattebox*input.width)} {parent.mattebox+(parent.mattebox*input.height)} {input.width-(parent.mattebox*input.width)} {input.height-(parent.mattebox*input.height)}}\n  softness {{parent.mattebox_softness}}\n  name MATTEBOX\n  xpos -370\n  ypos -202\n }\n Mirror2 {\n  flip true\n  flop true\n  name Mirror2_1\n  xpos -370\n  ypos -154\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists input] ? input.width : root.width\"}}\n  box_height {{\"\\[exists input] ? input.height : root.height\"}}\n  box_fixed true\n  box_pixel_aspect {{\"\\[exists input] ? input.pixel_aspect : root.pixel_aspect\"}}\n  resize none\n  black_outside true\n  name BboxRemove\n  xpos -370\n  ypos -34\n }\n Dot {\n  name Dot3\n  label \" \"\n  note_font \"Helvetica Bold Bold\"\n  note_font_size 24\n  note_font_color 0xa5a5a501\n  xpos -336\n  ypos 138\n }\npush $Nced61ee0\n Dot {\n  name Dot1\n  label \" \"\n  note_font \"Helvetica Bold Bold\"\n  note_font_size 24\n  note_font_color 0xa5a5a501\n  xpos -116\n  ypos -366\n }\n Reformat {\n  type \"to box\"\n  box_width {{parent.size}}\n  box_height {{box_width}}\n  box_fixed true\n  name SCALE_FILTER\n  xpos -150\n  ypos -298\n }\n Reformat {\n  type scale\n  box_fixed true\n  scale {{parent.aspect_ratio} 1}\n  resize distort\n  name ASPECT_RATIO\n  selected true\n  xpos -150\n  ypos -250\n }\n Crop {\n  box {{parent.mattebox+(parent.mattebox*input.width)} {parent.mattebox+(parent.mattebox*input.height)} {input.width-(parent.mattebox*input.width)} {input.height-(parent.mattebox*input.height)}}\n  softness {{parent.mattebox_softness}}\n  name MATTEBOX1\n  xpos -150\n  ypos -202\n }\n CCorrect {\n  channels rgb\n  contrast {{parent.bokeh_contrast}}\n  name BokehContrast\n  xpos -150\n  ypos -154\n }\n Clamp {\n  channels rgba\n  maximum_enable false\n  name ClampMin\n  xpos -150\n  ypos -118\n }\n Group {\n  name BlurPercent\n  tile_color 0xc4814dff\n  xpos -150\n  ypos -82\n  addUserKnob {20 percentBlur l \"Percent Blur\"}\n  addUserKnob {41 channels T _BLUR_.channels}\n  addUserKnob {14 percent R 0 100}\n  percent {{parent.bokeh_blur*100}}\n  addUserKnob {41 filter T _BLUR_.filter}\n  addUserKnob {41 quality l \"\" -STARTLINE T _BLUR_.quality}\n  addUserKnob {41 crop l \"crop to format\" -STARTLINE T _BLUR_.crop}\n  addUserKnob {41 mix T _BLUR_.mix}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 440\n   ypos -225\n  }\n  Blur {\n   channels rgba\n   size {{width/3*(percent/100) x1001 6.826666667e+10} {width/3*(percent/100)*(1/pixel_aspect)}}\n   crop false\n   name _BLUR_\n   xpos 440\n   ypos -153\n   addUserKnob {20 User}\n   addUserKnob {7 xpercent l xPercent R 0 100}\n   xpercent 25.5\n   addUserKnob {7 ypercent l yPercent R 0 100}\n   ypercent {{xpercent}}\n  }\n  Output {\n   name Output1\n   xpos 440\n   ypos -81\n  }\n end_group\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists input] ? input.width : root.width\"}}\n  box_height {{\"\\[exists input] ? input.height : root.height\"}}\n  box_fixed true\n  box_pixel_aspect {{\"\\[exists input] ? input.pixel_aspect : root.pixel_aspect\"}}\n  resize none\n  black_outside true\n  name BboxRemove1\n  xpos -150\n  ypos -10\n }\n Dot {\n  name Dot4\n  label \" \"\n  note_font \"Helvetica Bold Bold\"\n  note_font_size 24\n  note_font_color 0xa5a5a501\n  xpos -116\n  ypos 66\n }\nset Ncee42110 [stack 0]\n Switch {\n  inputs 2\n  which {{parent.enable_bokeh_masking}}\n  name SoftEdgeBokeh\n  xpos -150\n  ypos 134\n }\npush $Ncee42110\n Dot {\n  name Dot5\n  label \" \"\n  note_font \"Helvetica Bold Bold\"\n  note_font_size 24\n  note_font_color 0xa5a5a501\n  xpos -6\n  ypos 66\n }\n Input {\n  inputs 0\n  name Input\n  label \"\\[value number]\"\n  xpos 70\n  ypos -568\n }\n Constant {\n  inputs 0\n  name Constant1\n  xpos 290\n  ypos -442\n  postage_stamp false\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name Switch2\n  xpos 70\n  ypos -442\n }\n BlinkScript {\n  inputs 3\n  ProgramGroup 1\n  KernelDescription \"2 \\\"CatsEyeConvolve\\\" iterate pixelWise d3f7f7268f50afeb0ffd385b019c65664a5775e0f4a8983e20044cb012fe17e8 4 \\\"src\\\" Read Ranged2D \\\"filter\\\" Read Random \\\"ext\\\" Read Random \\\"dst\\\" Write Point 3 \\\"Amount\\\" Float 1 AACAPw== \\\"Format\\\" Int 2 AAUAANACAAA= \\\"Interpolate\\\" Bool 1 AQ== 3 \\\"amount\\\" 1 1 \\\"_format\\\" 2 1 \\\"interpolate\\\" 1 1 7 \\\"srcrangeMin\\\" Int 2 1 AAAAAAAAAAA= \\\"srcrangeMax\\\" Int 2 1 AAAAAAAAAAA= \\\"extconstEdgeColor\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"_filterOffset\\\" Int 2 1 AAAAAAAAAAA= \\\"halfWidth\\\" Int 1 1 AAAAAA== \\\"halfHeight\\\" Int 1 1 AAAAAA== \\\"step\\\" Float 1 1 AAAAAA==\"\n  EncodedSource \"1 2904 +vduhx3Y8JBmLeiWCjYc02Q9Odx8FJ5dqBe/uX9TgyhEk6K88rIuF+cFmQD78ej6LXg8cuU82LdC7ZdSjjaCt7bMKxSafnhAwKeJiaKUcp/+LiX8yNxidGrQQxLQOP7mJxzynvhLiZBi6jQNXkFsWw9tupyAWMf2qSD10fk3qTUWlMD6XFM/zII9/AmE5qDC2FkhswV5WQTY84O+twxw3U7UMVt3oTZoOTgDFqtGWTVvsk146amMUbTFV1L5euCqLBLp3wqtLoJISJzHd2ZAoqe7Wp2fvMcStAcjK+rH2teU1DYAWu3wiYPfNt4G6DEKr6EhLxyzXbKygpUQGi/bRIBfVwNdNSQAGLJaeVS87Brbg3ya/OJOhIISEsTpTiDj19joP31EUPvdS22/WnBmaa66RIqmbPwnvDbVQCL0r+luwbvaA5LFpEHjh3DOog200fCwwdSuc8Fb7HVmKE7I+9DauBHYIu5cO7AcA4EoVPnAEs89gjGLY8FVUPHpnwERocJRxhgYIxAo3xPT5Djh29RpCA+dupA1bnSQ6BR+yLIvprsdWE9xicWBmfJFuFc/8NcWzaR+JZJy1skX3ZpJm8JQvG8daMu/p3x03cxh+8iwMTePxPr3l4HZrg4gxd5GXhhztiVQ+XqYa21vFChqNo7QofCpFZAjEjKxP/E+9tDko54qg+JeVWXUZgvUR6vr6bwkq5Cr7NRfo2uWCNldENhZz/US7gm2sh52+zzoHNCVuBKeFVTojP1Nk23GH7y0zvv9+fK9BIrp5rBp7cl+di31vaUBLrONMQ14NRx3u//vxY7Uywj6qGC7CUJVJTJ1cw3rnQ0MXhcHpRF6L0Rdn4ibV2logTMVbMoM34m/os0oED2CFnX2W85jab/utQRRQoSXz2VPRMi/XqwbKlsswzLyWbBgSnmKKCHwgQNpeTQyLMkGISozK/247JdCzHyXFDasHp9l4VaRoATHOmsihJIW/PnpNyvKsm2BCkXqN7DrzD13z1SAOeV82KE/QBrxWIyLRDGsdNS9PaS/FUjANfOvVUn92njVkuc2pv/WPL08Z9os37rSrEBByUk5Mqfa4HXJMMYqF7BpSuP5B1pqxiGoQI1N7uDOR5QjsHttqGcTnSa8oZdZHZkcOGFyFv7zsm8hx1LkCwMCIkO8pnSDynoZqe0z7GfWx80RA3eAfEV4ejq0Cdva61MfNddLq77oynH5rYGW/Gf/ylF0YySMf1HKe4akObXLlpbpZxgMsUHAaa6u4xbRZpsL/qlsh4Imaxd7mBYULfj6DbAzYc8fHTAWnJJh1Dt8jQLKg9ESMKWWNNpxZhfRbb8CCsrpIhR5WdLMNlu9dAtJSvnzSpF4WVICjQgKpCn5mW+dSIZIftWKd2tZyRWixvgeuMug4XUQkivl3K8tyzr+o78zDY4axqC5hdyWuYtpht08t5LCrgBFSXF9fdyGdxWxL/e9eixxwbtVr1bfccHnoZOeSImPh9MwE9fYPqitiqR61rNd8JCbYrK2spn9sgN1m7ILSEVupS6JRJiRwWF6HWobjwuzquSXkvZ/EOYzPdIfjb1M0ynQNu1ppjJjTcQksQ3NZZnPLc3HjK48YLB8nZtSX9scvTC9pTji5qSiiIHABqJxIxcED1NIB3wm9DTPoxp3e2mgWEga1N61qGr8QSQy7Rk/aRpFbb3u1x+Kwns/EUErYh4UId2IfxFdLR/5cTiNPIMclEPz4Voj/4AAWBwZLNq1zVVEZRkj2fHNh5VT3L0UtClp0IazpGARc4OtuDhdnz8p7jRE8bzKkIGn1X43Ba5hk7Y7xRUp8ow0zrLDgG3hxtE+7bh4nA4J5ysFiaIgHPXpVHtPMu1bYx+itEvoai8SgF11RjWxsupBlH5vjpisajl11qyYs2zS++3QmbONIxfhsgmEWMNu3uFyX7iMg9uz/pb2hWBCceNvQvPpxODqTaZzdJzRKS9ajlHRktzmJGLimWCGLfFfvDnOOC1Ou2sCPHZ4nF1esuL6jgXkNOfRshYHBYMd4tTNx0zKqTrNAmdZY2XMPyaqkVIqtPi/ygcVCivFsUXtq1D5icJiHLOQHHzdbJGEgoORWVx+x//KKgb+eTqN2ln8sIqcmpv9nqNf9ZWOr54ktg9fKvw0Jl+HTucpd2XBLv3frDDjz3C9pfIBo6GZBiNyvnnv6xUfwsaxT+WG8X3abo8oU3U3OjI8+dztaLyTg1fmKbqyX2iTj46PJO5P2HwBw2otFO0v4zHgnchKc8goMw2WIjjzUGEr/eJtWt+iAeIK1gt9mTKjeBwAxeBO6Vpcri9G4LElTzlSZWENpPBiBXi6o9qkMxL+C+ztrL2q9/ajja+NUGphU/v9ecnh7DqLjZWq0xMWqQ8/NrEs3ldwKCmWETYC3YnxBfL/bhQS5JH3Lv0th7fAKWWO8qxxdBf+EuFi0PVRifBqIOK5fqfYeO82q+dg0HLMrLKhLjuWyKq96SbIke7uvULYwTDwBowzHYC29B91QPurz3Ot7+/GrScjzYf4cA9Bby22TjL2gb7CHMmqRz8JxsPGLmBHd+daGsreA4u4Wv+cZtR3wMRsg3mayzTdQEkulKC8qUpsLSLFMchaZkkjiMhwZe/2u9D5uzuIaqIoZnKHAzinBAIW2JjjyrIXA+UGTytAdiGYC1S3wGax2HawBoPqLphpLGswKYp0k+Baa1iR0PfwElsS6j4h0+MskQpPhEgXCKhJi0wwXAn6oa+hDEMs1BlOPBdv3c7GRV2wrSQqtAujGkRtVW+8D1U9D6ZbpMmrrPA4uukb5Uv4nK9kls2xqBnQuZti8WpskSTYtEYIfn0lT9Yh/yX51ky+4NNcj83NiiQiD2fa7ODTgo8SQ5oRF94/zhjERAohre0OfM5JkTG0uvj+IXXMHIPMMjfwCCxjEDDTx45pEct+iaN3Y+x6GVmh+sI29ZfoWM8RN9PoOfGpXFwgE4ij0MwR89YNIJijazteqm+D2fTrtYaCT+u/sswUfjN06z5NpZF6mJS0cO420s1rKIJbYcNcxz13BCgBAnnfntaeGMQAirZm9LnNu9NbMd9iudakKkYJ6jSz4Q4Ws+UXkInrs63RO2fdkv209RQqNu7u1E53xdh0kNJOFVXM62sihT45JWbxMgn+1MHb6U52vR4/2G6tq73rG0bf0f//hGXwoKAnhWCzda6ctZ14wB9ynCzlZAZ103HVEQ6VcYABgxBF/W4traDQJHx0UvlRFUkMYRqVGbpPBV9fEPNaD5Ke1Auhl7z9gyPIrgJRKBVC0agpEgMuhB3RNP36wvogd4W2xm2FRvdhJ0Od+Ut6WojCNWc7Malpr0s7FcNJJ0Xr55cHKFhfGbK0qgNKkaa8kWhwpEY/mX2xp1fyoXDpUh8ZRcY0QdLqUHdY7qeaqE+0g+aFEemRA1YKuICancWSa+6zPz5BF5JUcAQli5k6f4VG5Ex82infyZnjrVPL2pe1uuEmqrcvdiDxAaHw7xMpeIioqmkdXd+ie7BEXCm8u44ePxx3Bjc65wz9mFPqMjBBqlEcjVffk2ea3/xCBx0VmDjsAhbx2DoOVnsh0kMgt6x8Z4Tk5GwIFftPE/6FgKUkeHsn6CQZtwan2bWJ57aLEKOg9mL/xxkp6n3btOw2bAa7V/gNK8D5BEVIqthFg1ngUDEi7wekIlho+w+Cqvc+nQCQMCEcCJMJDa6N0n6l/hwvl5Q/vPdjcZ26m+sQXt5sPst3Xfw6tkADD/1V/IAxe+/KpYw+vvbG7ipiSgN+N+peoBLrQ9VwwAcku6wK0zMJWWIVtEZS9tExGc29P4JIjo5UAnkqLcVgs97AWnSS2atilRITMnhaqaT+6a2R8WEyaVu39yf75gGeVuM=\"\n  rebuild \"\"\n  CatsEyeConvolve_Amount {{parent.swirl_amount}}\n  CatsEyeConvolve_Format {{input.width} {input.height}}\n  protectKernelWhenPublishing true\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos 70\n  ypos 128\n }\n Output {\n  name Output\n  xpos 70\n  ypos 254\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DespillToColor.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DespillToColor\n tile_color 0x475247ff\n note_font \"Bitstream Vera Sans Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 User l main}\n addUserKnob {68 sto l \"screen type\" t \"- auto - The screen type will be controlled by \\n  the screen color:\\n\\n   g>b : green despill\\n   b>g : blue despill\\n\\n- 'blue' and  'green' act as an override so you can pick a blue-ish screen color but still despill green tones and vice versa.\\n\" M {auto green blue \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {18 sc l \"screen color\"}\n sc {0.11 0.11 0.1}\n addUserKnob {6 sc_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 sc_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 sc_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 tc l \"target color\"}\n tc {0.11 0.11 0.1}\n addUserKnob {6 tc_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 tc_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 tc_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 balance t \"- determines which colors get affected more by the despill operation. \\nlower : red\\nhigher : green / blue\" R 0 2}\n balance 1\n addUserKnob {7 gain t \"Increasing gain will affect a wider range of colors.\" R 0.5 3.5}\n gain 1\n addUserKnob {26 \"\"}\n addUserKnob {6 enableErode l \"enable erode\" +STARTLINE}\n addUserKnob {6 spillmatte l \"spillmatte output\" t \"- spillmatte output to alpha channel.\\nThis channel is normalised, so the picked color has an alpha value of 1. \\nIn ordner not to clamp values above 1 you might choose to grade this mask down a bit.\" -STARTLINE}\n addUserKnob {7 erode t \"For blurry edges, eroding the despill matte is an alternative to increasing the gain.\" R 0.1 50}\n erode 1\n addUserKnob {7 erodeMix l mix}\n erodeMix 1\n addUserKnob {26 \"\"}\n addUserKnob {7 falloff t \"- controls the gamma on the despill matte.\" R 0.5 1.5}\n falloff 1\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge1.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 unpremult l \"(un)premult by\" T despillGreen.unpremult}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 info l \"info / advanced\" n 1}\n info 0\n addUserKnob {26 jm l \"\" +STARTLINE T \"Despill to Color by Johannes Masanz\\nVersion: 4.1\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 ir l \"increase range\" t \"compensates for screen values higher than 1\" R 0 100}\n ir 50\n addUserKnob {20 endGroup_1 l endGroup n -1}\n}\n Input {\n  inputs 0\n  name mask\n  xpos -234\n  ypos 479\n  number 1\n }\nset N19c2ece0 [stack 0]\n Input {\n  inputs 0\n  name source\n  xpos -84\n  ypos 76\n }\nset N19c32900 [stack 0]\n Expression {\n  expr0 r\n  expr1 g\n  expr2 b\n  channel3 alpha\n  expr3 parent.gain<1?min((b-(r*parent.balance+g*(1-(parent.balance-1)))/2),(b*parent.gain-(r*parent.balance+g*(1-(parent.balance-1)))/2)):(b*parent.gain-(r*parent.balance+g*(1-(parent.balance-1)))/2)\n  name ExpBlue\n  xpos 516\n  ypos 76\n }\n Grade {\n  channels alpha\n  whitepoint {{parent.NoOp1.avb}}\n  name despillWhite1\n  xpos 516\n  ypos 102\n }\nset N19c42b50 [stack 0]\npush $N19c32900\n Expression {\n  expr0 r\n  expr1 g\n  expr2 b\n  channel3 alpha\n  expr3 parent.gain<1?min((g*parent.gain-(r*parent.balance+b*(1-(parent.balance-1)))/2),(g-(r*parent.balance+b*(1-(parent.balance-1)))/2)):(g*parent.gain-(r*parent.balance+b*(1-(parent.balance-1)))/2)\n  name ExpGreen\n  xpos 402\n  ypos 76\n }\n Grade {\n  channels alpha\n  whitepoint {{parent.NoOp1.avg}}\n  name despillWhite\n  xpos 402\n  ypos 102\n }\nset N19c5b330 [stack 0]\npush $N19c5b330\npush $N19c42b50\n Switch {\n  inputs 2\n  which {{parent.sc.b>parent.sc.g?0:1}}\n  name Switch2\n  xpos 456\n  ypos 149\n }\n Switch {\n  inputs 3\n  which {{parent.sto}}\n  name Switch3\n  xpos 456\n  ypos 175\n }\n FilterErode {\n  size {{-parent.erode}}\n  filter gaussian\n  mix {{parent.erodeMix}}\n  name despillGaussian\n  xpos 456\n  ypos 219\n  disable {{1-parent.enableErode}}\n }\nset N19c74f40 [stack 0]\n Grade {\n  channels alpha\n  gamma {{parent.falloff}}\n  black_clamp false\n  name falloff\n  xpos 346\n  ypos 264\n }\nset N19c7f520 [stack 0]\npush $N19c74f40\n ChannelMerge {\n  inputs 2\n  operation max\n  name ChannelMerge1\n  xpos 456\n  ypos 257\n }\npush $N19c7f520\npush $N19c74f40\n ChannelMerge {\n  inputs 2\n  operation min\n  name ChannelMerge2\n  xpos 563\n  ypos 257\n  disable {{parent.falloff==1?1:0}}\n }\n Switch {\n  inputs 2\n  which {{parent.falloff>1?1:0}}\n  name Switch1\n  xpos 456\n  ypos 307\n }\nset N19ca11a0 [stack 0]\npush $N19c2ece0\npush $N19ca11a0\n Grade {\n  channels alpha\n  whitepoint {{parent.NoOp1.avb}}\n  white {{parent.ir+1}}\n  reverse true\n  name Grade2\n  xpos 516\n  ypos 347\n }\npush $N19c32900\n Grade {\n  inputs 1+1\n  channels rgba\n  add {{parent.tc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))-parent.sc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))} {parent.tc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))-parent.sc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))} {parent.tc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))-parent.sc*(clamp(1/clamp(parent.NoOp1.avb/(parent.ir+1)),0,1000000))} {curve}}\n  black_clamp false\n  unpremult {{{parent.despillGreen.unpremult}}}\n  name despillBlue\n  xpos 516\n  ypos 383\n }\nset N19cb43c0 [stack 0]\npush $N19ca11a0\n Grade {\n  channels alpha\n  whitepoint {{parent.NoOp1.avg}}\n  white {{parent.ir+1}}\n  reverse true\n  name Grade4\n  xpos 402\n  ypos 348\n }\npush $N19c32900\n Grade {\n  inputs 1+1\n  channels rgba\n  add {{parent.tc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))-parent.sc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))} {parent.tc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))-parent.sc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))} {parent.tc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))-parent.sc*(clamp(1/clamp(parent.NoOp1.avg/(parent.ir+1)),0,inf))} {curve}}\n  black_clamp false\n  unpremult -rgba.alpha\n  name despillGreen\n  xpos 402\n  ypos 383\n }\nset N19ccd5a0 [stack 0]\npush $N19ccd5a0\npush $N19cb43c0\n Switch {\n  inputs 2\n  which {{parent.sc.b>parent.sc.g?0:1}}\n  name Switch4\n  xpos 456\n  ypos 453\n }\n Switch {\n  inputs 3\n  which {{parent.sto}}\n  name Switch5\n  xpos 456\n  ypos 479\n }\npush $N19c32900\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  maskChannelInput -rgba.alpha\n  mix {{parent.mix}}\n  name Merge1\n  xpos -84\n  ypos 479\n }\n Shuffle {\n  alpha black\n  name Shuffle1\n  xpos -84\n  ypos 505\n  disable {{1-spillmatte}}\n }\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  name Copy2\n  xpos -84\n  ypos 545\n  disable {{1-spillmatte}}\n }\n Output {\n  name Output1\n  xpos -84\n  ypos 599\n }\n NoOp {\n  inputs 0\n  name NoOp1\n  xpos 181\n  ypos 160\n  addUserKnob {20 User}\n  addUserKnob {7 avg l alphavalueGreen}\n  avg {{parent.sc.g*clamp(1,parent.gain,inf)-(parent.sc.b*(1-(parent.balance-1))+parent.sc.r*parent.balance)/2}}\n  addUserKnob {7 avb l alphavalueBlue}\n  avb {{parent.sc.b*clamp(1,parent.gain,inf)-(parent.sc.g*(1-(parent.balance-1))+parent.sc.r*parent.balance)/2}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Diffusion.gizmo",
    "content": "Group {\n name Diffusion\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 300)\"\n tile_color 0xcc804eff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 Diffusion}\n addUserKnob {41 channels T Merge1.also_merge}\n addUserKnob {26 \"\"}\n addUserKnob {41 size T Blur33.size}\n addUserKnob {7 amount R 0 4}\n amount 1\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {7 min}\n min 1\n addUserKnob {7 max}\n max 1\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -297\n  ypos 634\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -458\n  ypos 115\n }\n Dot {\n  name Dot43\n  xpos -424\n  ypos 250\n }\nset Ne65091b0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -424\n  ypos 334\n }\nset Ne6522bb0 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -275\n  ypos 334\n }\nset Ndf58cc90 [stack 0]\n Dot {\n  name Dot77\n  xpos -165\n  ypos 334\n }\nset Ne5fdeaa0 [stack 0]\n Dot {\n  name Dot78\n  xpos -28\n  ypos 334\n }\n Blur {\n  size 100\n  name Blur33\n  label \"\\[value size]\"\n  xpos -62\n  ypos 366\n }\npush $Ne5fdeaa0\n Merge2 {\n  inputs 2\n  operation minus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge36\n  selected true\n  xpos -199\n  ypos 371\n }\n Dot {\n  name Dot79\n  xpos -165\n  ypos 446\n }\npush $Ndf58cc90\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.amount/13}}\n  name Merge37\n  xpos -309\n  ypos 439\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -275\n  ypos 512\n }\nset Ne5e70760 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -275\n  ypos 572\n }\npush $Ne5e70760\npush $Ne6522bb0\n Merge2 {\n  inputs 2\n  operation min\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.min}}\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -458\n  ypos 505\n }\n Merge2 {\n  inputs 2\n  operation max\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.max}}\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -458\n  ypos 565\n }\npush $Ne65091b0\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -624\n  ypos 250\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -624\n  ypos 638\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  output none\n  also_merge rgb\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -458\n  ypos 631\n }\n Output {\n  name Output1\n  xpos -458\n  ypos 721\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DirectionalBlur.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DirectionalBlur\n tile_color 0xcc804eff\n note_font \"Lucida Grande Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 DirectionalBlur}\n addUserKnob {41 channels T MergeKeymix.also_merge}\n addUserKnob {26 \"\"}\n addUserKnob {4 type l Type M {Blur Defocus}}\n type Defocus\n addUserKnob {4 filter -STARTLINE M {Impulse Cubic Keys Simon Rifman Mitchell Parzen Notch Lanczos4 Lancsos6 Sinc4 \"\"}}\n filter Cubic\n addUserKnob {6 clampNeg l \"Clamp Negatives (if changing filters)\" +STARTLINE}\n addUserKnob {6 blackOutsideBefore l \"Black Outside Before Rotation\" +STARTLINE}\n blackOutsideBefore true\n addUserKnob {7 rotate l Rotate R -180 180}\n addUserKnob {7 size l Size R 0 100}\n size 25\n addUserKnob {7 additionalBlur l \"Perpendicular Blur\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {4 bbox l \"Set BBox to\" M {Union \"Mask Intersect\" B \"Input Format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {14 adjustBBox l \"Adjust BBox\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: t \"Add description and tooltip for gizmo\" T DirectionalBlur}\n addUserKnob {26 ver l Version: T v04}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x535e5a00\n  label \"BBox Management\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos -930\n  ypos 381\n  bdwidth 538\n  bdheight 628\n }\n Input {\n  inputs 0\n  name Input\n  xpos 0\n  ypos -515\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 34\n  ypos -421\n }\nset N1d135e0 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos -135\n  ypos -421\n }\nset N1d171a0 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -135\n  ypos 31\n }\nset N1d1ae30 [stack 0]\n AdjBBox {\n  numpixels {{ceil((parent.BBoxCalculator.widthResult*1.5)+(parent.BBoxCalculator.widthResult/4))} {ceil(parent.BBoxCalculator.heightResult*1.5)+(parent.BBoxCalculator.heightResult/4)}}\n  name AdjBBoxSizeRotated\n  xpos -169\n  ypos 87\n }\n AdjBBox {\n  numpixels {{ceil((parent.additionalBlurBBoxCalculator.widthResult*1.5)+(parent.additionalBlurBBoxCalculator.widthResult/4))} {ceil((parent.additionalBlurBBoxCalculator.heightResult*1.5)+(parent.additionalBlurBBoxCalculator.heightResult/4))}}\n  name AdjBBoxAdditionalBlurRotated\n  xpos -169\n  ypos 141\n }\n AdjBBox {\n  numpixels {{\"ceil(max(input.format.w, input.format.h)*.0025)\"}}\n  name AdjBBoxExtra\n  xpos -169\n  ypos 187\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos -135\n  ypos 254\n }\npush $N1d1ae30\npush $N1d135e0\n Transform {\n  rotate {{parent.rotate}}\n  center {{input.width/2} {input.height/2}}\n  filter {{parent.filter}}\n  black_outside {{parent.blackOutsideBefore}}\n  name Transform1\n  xpos 0\n  ypos -351\n }\n Dot {\n  name Dot125\n  xpos 34\n  ypos -293\n }\nset N1d26e70 [stack 0]\n Dot {\n  name Dot126\n  xpos 170\n  ypos -293\n }\n Defocus {\n  defocus {{parent.Blur28.size.w}}\n  scale {1 1e-05}\n  name Defocus6\n  xpos 136\n  ypos -256\n }\n Dot {\n  name Dot127\n  xpos 170\n  ypos -199\n }\npush $N1d26e70\n Blur {\n  size {{parent.size} 0}\n  crop false\n  name Blur28\n  label \"\\[value size]\"\n  xpos 0\n  ypos -261\n }\n Switch {\n  inputs 2\n  which {{parent.type}}\n  name BlurType\n  xpos 0\n  ypos -202\n }\n Blur {\n  size {0 {parent.additionalBlur}}\n  crop false\n  name Blur1\n  label \"\\[value size]\"\n  xpos 0\n  ypos -161\n }\n Transform {\n  rotate {{-parent.Transform1.rotate}}\n  center {{parent.Transform1.center} {parent.Transform1.center}}\n  filter {{parent.filter}}\n  black_outside false\n  name Transform2\n  xpos 0\n  ypos -99\n }\n Clamp {\n  maximum_enable false\n  name Clamp1\n  xpos 0\n  ypos -39\n  disable {{!clampNeg}}\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch1\n  xpos 0\n  ypos 28\n  disable {{\"size == 0 && additionalBlur == 0 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 0\n  ypos 251\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 344\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 443\n }\nset N1caf510 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -516\n  ypos 443\n }\n Crop {\n  box {{-adjustBBox.w} {-adjustBBox.h} {parent.width+adjustBBox.w} {parent.height+adjustBBox.h}}\n  intersect true\n  crop false\n  name CopyBBoxFormat\n  xpos -550\n  ypos 711\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -516\n  ypos 759\n }\npush $N1d171a0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -768\n  ypos -421\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -768\n  ypos 323\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -768\n  ypos 512\n }\nset N1d39c80 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -864\n  ypos 512\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -864\n  ypos 711\n }\npush $N1d39c80\n Input {\n  inputs 0\n  name Inputmask\n  xpos 346\n  ypos 202\n  number 1\n }\n Dot {\n  name Dot5\n  label Mask\n  note_font_size 41\n  xpos 380\n  ypos 332\n }\nset N1d48d30 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 270\n  ypos 332\n }\npush $N1caf510\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeIntersection\n  xpos 236\n  ypos 436\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeUnion\n  xpos 236\n  ypos 505\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot6\n  label \"intersection\\nof (Mask and A) + B\"\n  note_font_size 14\n  note_font_color 0xffffffff\n  xpos 270\n  ypos 669\n }\npush $N1d48d30\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 380\n  ypos 564\n }\npush $N1caf510\npush $N1d39c80\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -768\n  ypos 564\n }\nset N1d650c0 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeKeymix\n  xpos 0\n  ypos 557\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 34\n  ypos 623\n }\nset N1d75b30 [stack 0]\npush $N1d650c0\n CopyBBox {\n  inputs 2\n  name CopyBBoxUnion\n  xpos -802\n  ypos 620\n  disable {{parent.bbox==0?0:1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxIntersection\n  xpos -802\n  ypos 666\n  disable {{\"parent.bbox==1 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxB\n  xpos -802\n  ypos 708\n  disable {{\"parent.bbox==2 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxFormatIntersect\n  xpos -802\n  ypos 756\n  disable {{\"parent.bbox==3 ? 0 : 1\"}}\n }\n AdjBBox {\n  numpixels {{parent.adjustBBox.w} {parent.adjustBBox.h}}\n  name AdjBBox\n  xpos -802\n  ypos 805\n  disable {{\"parent.bbox==4 ? 1 : 0\"}}\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -768\n  ypos 910\n }\npush $N1d75b30\n CopyBBox {\n  inputs 2\n  name CopyBBox\n  xpos 0\n  ypos 906\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 0\n  ypos 930\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1029\n }\n NoOp {\n  inputs 0\n  name BBoxCalculator\n  xpos -310\n  ypos 85\n  addUserKnob {20 User}\n  addUserKnob {7 angle l Angle R -180 180}\n  angle {{parent.rotate}}\n  addUserKnob {7 length l Length R 0 100}\n  length {{parent.size}}\n  addUserKnob {7 widthResult l \"Width Result\"}\n  widthResult {{abs(cos(radians(angle))*length)}}\n  addUserKnob {7 heightResult l \"Height Result\"}\n  heightResult {{abs(sin(radians(angle))*length)}}\n }\n NoOp {\n  inputs 0\n  name additionalBlurBBoxCalculator\n  xpos -317\n  ypos 143\n  addUserKnob {20 User}\n  addUserKnob {7 angle l Angle R -180 180}\n  angle {{parent.rotate}}\n  addUserKnob {7 length l Length R 0 100}\n  length {{parent.additionalBlur}}\n  addUserKnob {7 widthResult l \"Width Result\"}\n  widthResult {{abs(sin(radians(angle))*length)}}\n  addUserKnob {7 heightResult l \"Height Result\"}\n  heightResult {{abs(cos(radians(angle))*length)}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Distance3D.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\nname Distance3d\nselected true\naddUserKnob {20 distance3D}\naddUserKnob {7 distance}\ndistance {{\"sqrt(pow(\\[value input0.translate.x]-\\[value input1.translate.x], 2) + pow(\\[value input0.translate.y]-\\[value input1.translate.y], 2) + pow(\\[value input0.translate.z]-\\[value input1.translate.z], 2)) \"}}\naddUserKnob {26 \"\"}\naddUserKnob {26 info l Info: T \"This is a pretty handy gizmo to measure the\\ndistance between two 3D objects whether its an axis,\\ncamera or geometry.\\n\\nOriginally built to control focus plane in 2d DOF\\nor the cameras focus point with an axis!\\n\\nenjoy. fp\"}\n}\nInput {\ninputs 0\nname InputPoint2\nxpos 348\nypos -334\nnumber 1\n}\nInput {\ninputs 0\nname InputPoint1\nxpos 199\nypos -330\n}\nMergeGeo {\ninputs 2\nname MergeGeo1\nxpos 285\nypos -241\naddUserKnob {20 User}\naddUserKnob {7 test t \"sqrt(pow(\\[value input1.tranlate.x]-\\[value input2.tranlate.x], 2) + pow(\\[value input1.tranlate.y]-\\[value input2.tranlate.y], 2) + pow(\\[value input1.tranlate.z]-\\[value input2.tranlate.z], 2)) \"}\ntest {{\"sqrt(pow(\\[value input0.translate.x]-\\[value input1.translate.x], 2) + pow(\\[value input0.translate.y]-\\[value input1.translate.y], 2) + pow(\\[value input0.translate.z]-\\[value input1.translate.z], 2)) \"}}\n}\nOutput {\nname Output1\nxpos 285\nypos -141\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DistanceBetween_CS.gizmo",
    "content": "Group {\n name DistanceBetween_CS\n tile_color 0x9c0000ff\n label \"Distance2D: \\[value Distance2D]\\nDistance3D: \\[value Distance3D]\"\n selected true\n addUserKnob {20 CS_DistanceBetween}\n addUserKnob {41 ObjectAPosition l \"Object A Position\" T Reconcile3DA.output}\n addUserKnob {41 ObjectBPosition l \"Object B Position\" T Reconcile3DB.output}\n addUserKnob {7 Distance2D t \"Distance between ObjectA and ObjectB in 2D space (X and Y).\" R 0 100}\n Distance2D {{\"sqrt( pow2( Reconcile3DB.output.x - Reconcile3DA.output.x ) + pow2( Reconcile3DB.output.y - Reconcile3DA.output.y ) )\"}}\n addUserKnob {7 Distance3D t \"Distance between ObjectA and ObjectB in 3D space (X, Y and Z).\" R 0 100}\n Distance3D {{\"sqrt( pow2( AxisB.world_matrix.3 - AxisA.world_matrix.3 ) + pow2( AxisB.world_matrix.7 - AxisA.world_matrix.7 ) + pow2( AxisB.world_matrix.11 - AxisA.world_matrix.11 ) )\"}}\n addUserKnob {22 UpdateLabel t \"Updates the label of this node in the Node Graph. This could be necessary when values are linked via expressions. The update is executed automatically on frame changes.\" T nuke.updateUI() +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 Creator l \"\" +STARTLINE T \"CS_DistanceBetween v1.1 by Christian Schulze - www.christian-schulze.eu\"}\n}\n Output {\n  inputs 0\n  name Output1\n  xpos -40\n  ypos 302\n }\n Input {\n  inputs 0\n  name ObjectA\n  xpos -260\n  ypos 86\n  number 1\n }\n Axis2 {\n  name AxisA\n  xpos -250\n  ypos 162\n }\n Input {\n  inputs 0\n  name InputCam\n  xpos -150\n  ypos 86\n  number 2\n }\nset N4b027c30 [stack 0]\n Input {\n  inputs 0\n  name InputFormat\n  xpos 70\n  ypos 86\n  number 3\n }\nset N4b05d300 [stack 0]\n Reconcile3D {\n  inputs 3\n  calc_output true\n  name Reconcile3DA\n  xpos -150\n  ypos 176\n }\n Input {\n  inputs 0\n  name ObjectB\n  xpos 180\n  ypos 86\n }\n Axis2 {\n  name AxisB\n  xpos 190\n  ypos 162\n }\npush $N4b027c30\npush $N4b05d300\n Reconcile3D {\n  inputs 3\n  calc_output true\n  name Reconcile3DB\n  selected true\n  xpos 70\n  ypos 176\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DotProductVector2.gizmo",
    "content": "Group {\n name DotProductVector2_\n help \"Calculates the dot product of 2 Vector2 inputs.\"\n addUserKnob {20 main_tab l \"Dot Product Vector2\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorA\n  xpos 457\n  ypos -6\n  number 1\n }\n Shuffle {\n  name vector_layer1\n  xpos 457\n  ypos 103\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 457\n  ypos 129\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 491\n  ypos 210\n }\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N78454e0 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n MergeExpression {\n  inputs 2\n  channel0 rgb\n  expr0 Br*Ar+Bg*Ag\n  channel1 none\n  channel2 none\n  channel3 none\n  name MergeExpression1\n  xpos 140\n  ypos 206\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N78454e0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DotProductVector3.gizmo",
    "content": "Group {\n name DotProductVector3_\n help \"Calculates the dot product of 2 Vector3 inputs.\"\n addUserKnob {20 main_tab l \"Dot Product Vector3\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorA\n  xpos 457\n  ypos -6\n  number 1\n }\n Shuffle {\n  name vector_layer1\n  xpos 457\n  ypos 103\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 457\n  ypos 129\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 491\n  ypos 210\n }\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N79e48f0 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n MergeExpression {\n  inputs 2\n  channel0 rgb\n  expr0 Br*Ar+Bg*Ag+Bb*Ab\n  channel1 none\n  channel2 none\n  channel3 none\n  name MergeExpression1\n  xpos 140\n  ypos 206\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N79e48f0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DummyCam.gizmo",
    "content": "Camera {\n projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n far {{\"\\[expression \\[value the_cam]far(\\[value the_frame])]\"}}\n win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n name DummyCam\n help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n addUserKnob {20 DummyCam l Defaults}\n addUserKnob {43 the_cam +INVISIBLE}\n the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n addUserKnob {43 the_frame +INVISIBLE}\n the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n addUserKnob {7 d_focal l \"focal length\" R 0 100}\n d_focal 50\n addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n d_haperture 24.576\n addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n d_vaperture 18.672\n addUserKnob {7 d_near l near R 0 10}\n d_near 0.1\n addUserKnob {7 d_far l far R 0 10000}\n d_far 10000\n addUserKnob {30 d_win_translate l \"window translate\"}\n addUserKnob {30 d_win_scale l \"window scale\"}\n d_win_scale {1 1}\n addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n d_focal_point 2\n addUserKnob {7 d_fstop l fstop R 0 30}\n d_fstop 16\n addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge.gizmo",
    "content": "Group {\n name Edge\n help \"Edge allows you to extend the proper color out over transparent edges or areas with a lot of motionblur without eroding away the nice detail. This edge extend has some more advanced features like splitting the core matte and final key which allows you to work on motion blur without effecting small details like hair or a swinging rope for example. There is also more control over how you blend the core detail to the extended edge color. This was shown to me years ago by an old comp sup I had and is the same as the edge extend by Frank Reuter. This is my version of it that has evolved a little bit over the years.\\n\\nInputs\\nThere are multiple inputs to Edge but you can just plug in your FG with alpha if you want to use it simplified. Separating Core and Softer keys or using roto with and without motionblur has advantages in certain situations. ie: If you have a thin object this will help maintain solid alpha where you need it.\\n\\nFG – Foreground plate with Spill suppression applied\\nCore – This is like a core matte, it helps identify the leading edge and where the edge tool should start from. It is important to add this core so that small details are not lost like a thin rope or hair.\\nKey – This is your Key with fine hair details and transparent motion blurred edges. For Roto you want to have motion blur turned on.\\nBG – This is where your Background goes if you are using the node as Final Result\\nMask - Currently this only works if you are using Edge in Final result.\"\n tile_color 0x990000\n label \"\\[value iterations]\"\n selected true\n addUserKnob {20 User l Extend}\n addUserKnob {6 xxx_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {41 in l channels T Shuffle2.in}\n addUserKnob {4 operation t \"Here you can choose if you want to use the Edge Tool to merge together your foreground and background giving you the Final Result or if you would like the Intermediate Result which is unpremultiplied and not merged over the background. The Intermediate Result can be helpful when tweaking parameters like the edgegrow start and edgegrow size.\" M {Final Intermediate \"\" \"\"}}\n operation Intermediate\n addUserKnob {6 previewedgematte l \"preview edge matte\" t \"This allows you to preview your edge matte that you can use via the channels created in the edge node or by creating a shuffle using the button at the bottom.\" -STARTLINE}\n addUserKnob {6 extendChromaOnly l \"extend chroma only\" t \"This selection will extend only Chroma information by swapping back in the original luminance information.\" +STARTLINE}\n addUserKnob {41 exp -STARTLINE T EdgeExpansion.exp}\n addUserKnob {6 premultiplied t \"Select this if your footage is already premultiplied to remove dark edges in the extension.\" -STARTLINE}\n addUserKnob {6 clamped l \"clamp alpha\" t \"Select this if your alpha has values below 0 or above 1.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {14 edgeStart l \"slice start\" t \"Determines where you would like to start bleeding out the color from the inside of your key. It does this with a series of unpremult, blur, premult operations instead of a standard erode.\" R 0 100}\n edgeStart 1\n addUserKnob {41 iterations l \"slice iterations\" t \"Sets how large the edge with the color bleeding will be from the edge grow start or core matte and how many times this will be duplicated.\" T EdgeExpansion.iterations}\n addUserKnob {41 sliceWidth l \"slice width\" t \"The slice width is the amount of blur being applied per slice.\" T EdgeExpansion.sliceWidth}\n addUserKnob {41 sliceBlur l INVISIBLE +INVISIBLE T EdgeExpansion.sliceBlur}\n addUserKnob {26 \"\"}\n addUserKnob {7 blurEdgeBlend l \"edge blend\" t \"Helps to soften the transition from the original to the new edge. It tends to erode the bleeding color back inwards if you use high values.\" R 0 10}\n addUserKnob {7 blurEdgeBlur l \"edge blur\" t \"This helps soften the transition bringing back original detail. This can sometimes bring back some lighting information instead of having it completely replaced.\" R 0 10}\n addUserKnob {7 filterErodeEdgeSmooth l \"edge smooth\" t \"This one will help with extremely large motionblur and completely takes away detail. This should not be used in most cases but if you do use it sparingly.\" R -10 10}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge3.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge3.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge3.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge3.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {22 edgeShuffleButton l \"create edge matte\" t \"This will generate a shuffle node that isolates the areas of extension which you can use to regrain your edges.\" T \"nuke.root().begin()\\nEdgeShuffle = nuke.createNode('Shuffle', inpanel = False)\\nEdgeShuffle\\['label'].setValue( 'Regrain this edge' )\\nEdgeShuffle\\['in'].setValue( 'edge' )\\nEdgeShuffle\\['in2'].setValue( 'none' )\\nEdgeShuffle\\['red'].setValue('alpha')\\nEdgeShuffle\\['green'].setValue('alpha')\\nEdgeShuffle\\['blue'].setValue('alpha')\\nEdgeShuffle\\['alpha'].setValue('alpha')\" +STARTLINE}\n addUserKnob {26 reminder l \"\" -STARTLINE T \"*** use edge.matte to regrain your edges. ***\"}\n addUserKnob {20 color l Blending}\n addUserKnob {6 enablecolor l enable t \"This tab will help you blending your foreground edges with the background color. it is based off the edge extension in the first tab but you can modify the edge properties to get your desired look.\" +STARTLINE}\n addUserKnob {6 colorpreview l preview t \"Preview the edge being used for blending with the BG. This helps if you want to modify it further.\" -STARTLINE}\n addUserKnob {41 operation_1 l operation t \"This is the merge operation you want to use for blending. It is set to average by default but you can use anything you like ie: plus, max, min.\" T ColorMerge.operation}\n addUserKnob {7 erodeExpandEdge l \"expand edge\" t \"You can expand or contract the edge created in the extend tab.\" R -100 100}\n addUserKnob {7 blurSoftenEdge l \"soften edge\" t \"This blur will help soften the transition of the inside blending edge.\" R 0 100}\n addUserKnob {41 mix_1 l \"mix fg luma\" t \"At a value of 1 this will only blend the chroma information but you can mix this back to include the luma info as well.\" T Copy5.mix}\n addUserKnob {7 mergeBlendingMix l mix t \"Mix Edge Blending result\"}\n mergeBlendingMix 1\n addUserKnob {26 \"\"}\n addUserKnob {7 BlurBG l \"blur bg\" t \"Blur the details in the background when you blend them so your foreground doesnt look transparent.\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {20 AdjustBGColor l \"adjust bg color\" t \"Here you can modify the color and saturation of the bg being used for blending. This will anly affect the blending not the actual bg.\" n 1}\n AdjustBGColor 0\n addUserKnob {41 white l gain T GradeEdgeColor.white}\n addUserKnob {41 gamma T GradeEdgeColor.gamma}\n addUserKnob {41 black l lift T GradeEdgeColor.black}\n addUserKnob {41 saturation T EdgeSat.saturation}\n addUserKnob {41 mix l INVISIBLE +INVISIBLE T ColorMerge.mix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 MaskBGLuma l \"mask bg luma\" t \"This section will allow you to preview and isolate the bright areas of the bg to wrap around your foreground. Think of this as a way to have lights wrap arpound your foreground in car comps.\" n 1}\n MaskBGLuma 0\n addUserKnob {26 maskBgLuma l \"mask bg luma\"}\n addUserKnob {6 enableBGMask l \"enable bg mask\" +STARTLINE}\n addUserKnob {6 PreviewBG l \"preview bg input\" -STARTLINE}\n addUserKnob {41 range l INVISIBLE +INVISIBLE T Keyer1.range}\n addUserKnob {41 out l \"Luma Range\" T controler.out}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 info l Info}\n addUserKnob {26 \"\"}\n addUserKnob {26 info_1 l \"\" +STARTLINE T \"\\nEdge Version 6.9\\nCreated by Rob Bannister\\nwww.bannisterpost.com\"}\n addUserKnob {26 help_1 l \"\" +STARTLINE T \"<a href=\\\"http://www.bannisterpost.com/downloads/edge/\\\" style=\\\"color:white\\\">HELP</a>\"}\n}\n Histogram {\n  inputs 0\n  name controler\n  xpos -982\n  ypos 561\n }\n Input {\n  inputs 0\n  name FG\n  xpos 376\n  ypos -342\n }\n Unpremult {\n  name Unpremult3\n  xpos 376\n  ypos -288\n  disable {{!parent.premultiplied}}\n }\n Dot {\n  name Dot14\n  xpos 410\n  ypos -224\n }\nset N209dd000 [stack 0]\n Input {\n  inputs 0\n  name Key\n  xpos -215\n  ypos -318\n  number 1\n }\n Clamp {\n  name Clamp1\n  xpos -215\n  ypos -180\n  disable {{parent.clamped==0?1:0}}\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch1\n  xpos -215\n  ypos -61\n }\nset N209dd800 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -215\n  ypos 237\n }\nset N20a19000 [stack 0]\n Dot {\n  name Dot6\n  xpos -181\n  ypos 477\n }\nset N20a18c00 [stack 0]\npush $N209dd800\n Input {\n  inputs 0\n  name Core\n  xpos 791\n  ypos -331\n  number 2\n }\n Clamp {\n  name Clamp2\n  xpos 787\n  ypos -157\n  disable {{parent.clamped==0?1:0}}\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input2]\"}}\n  name Switch5\n  xpos 787\n  ypos -61\n }\n Erode {\n  size {{parent.edgeStart}}\n  name Erode1\n  label \"\\[value size]\"\n  xpos 787\n  ypos 22\n }\n Blur {\n  channels alpha\n  size {{parent.blurEdgeBlur}}\n  name Blur_edgeBur\n  label \"\\[value size]\"\n  xpos 787\n  ypos 126\n }\nset N20a19800 [stack 0]\n Blur {\n  channels alpha\n  size {{parent.blurEdgeBlend}}\n  name blue_edgeBlend\n  label \"\\[value size]\"\n  xpos 591\n  ypos 126\n }\n FilterErode {\n  size {{parent.filterErodeEdgeSmooth}}\n  filter gaussian\n  name FilterErode_edgeSmooth\n  label \"\\[value size]\"\n  xpos 591\n  ypos 224\n }\nset N20a4b800 [stack 0]\npush $N20a19000\n ChannelMerge {\n  inputs 2\n  operation stencil\n  name ChannelMerge1\n  xpos -64\n  ypos 224\n }\n ChannelMerge {\n  inputs 2\n  operation multiply\n  name ChannelMerge2\n  xpos -64\n  ypos 460\n }\n Dot {\n  name Dot17\n  xpos -30\n  ypos 691\n }\nset N20a4a800 [stack 0]\n Dot {\n  name Dot11\n  xpos -30\n  ypos 1133\n }\n Input {\n  inputs 0\n  name BG\n  xpos -1081\n  ypos -343\n  number 3\n }\n Dot {\n  name Dot5\n  xpos -1047\n  ypos 293\n }\nset N20a4bc00 [stack 0]\n Dot {\n  name Dot12\n  xpos -1047\n  ypos 644\n }\nset N20a6bc00 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.controler.out.0} {parent.controler.out.1} 1 1}\n  name Keyer1\n  xpos -979\n  ypos 634\n }\n Blur {\n  channels rgba\n  size {{parent.BlurBG}}\n  name Blur2\n  label \"\\[value size]\"\n  xpos -717\n  ypos 634\n }\nset N20a6b400 [stack 0]\npush $N20a4b800\n Dot {\n  name Dot7\n  xpos 625\n  ypos 344\n }\nset N20a6b000 [stack 0]\n Dilate {\n  channels alpha\n  size {{parent.erodeExpandEdge}}\n  name DilateColorEdge\n  label \"\\[value size]\"\n  xpos -388\n  ypos 327\n }\n Blur {\n  channels alpha\n  size {{parent.blurSoftenEdge}}\n  name BlurColorEdge\n  label \"\\[value size]\"\n  xpos -498\n  ypos 327\n }\npush $N20a19800\npush $N209dd000\n Shuffle {\n  name Shuffle2\n  xpos 376\n  ypos -174\n }\n Remove {\n  channels alpha\n  name Remove1\n  xpos 376\n  ypos -113\n }\n Dot {\n  name Dot16\n  xpos 410\n  ypos 459\n }\nset N32be1c00 [stack 0]\n Group {\n  inputs 2\n  name EdgeExpansion\n  knobChanged \"\\n\\nn = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif 'iterations' in k.name(): \\n    #print int(k.value())\\n    k.setValue(int(k.value()))\\n    if k.value()<1:\\n        k.setValue(1)\\n    n.begin()\\n\\n    for node in nuke.allNodes():\\n        if 'static' not in node\\['label'].value():\\n            nuke.delete(node)\\n\\n    slices = int(n\\['iterations'].value())-1\\n    step = 1\\n    blur_count = 5\\n    merge_count = 2\\n    unpremult_count = 4\\n    num = 1\\n    for x in range(1,slices+step,step):\\n        \\n        a = nuke.createNode('Blur', inpanel=False)\\n        new_knob = nuke.Int_Knob('exp_value')\\n        a.addKnob(new_knob)\\n        a\\['exp_value'].setValue(num)\\n        a.setInput(0, nuke.toNode('Unpremult' + str(unpremult_count)))\\n        a\\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\\n        a\\['channels'].setValue('red green blue depth.Z')\\n\\n        b = nuke.createNode('Shuffle', inpanel=False)\\n        b\\['in'].setValue( 'rgba' )\\n        b\\['in2'].setValue( 'depth' )\\n        b\\['out2'].setValue( 'depth' )\\n        b\\['alpha'].setValue('red2')\\n\\n        c = nuke.createNode('Unpremult', inpanel=False)\\n        c\\['channels'].setValue('red green blue alpha')\\n        c\\['alpha'].setValue('depth.Z')\\n\\n        d = nuke.createNode('Blur', inpanel=False)\\n        new_knob = nuke.Int_Knob('exp_value')\\n        d.addKnob(new_knob)\\n        d\\['exp_value'].setValue(num)\\n        d\\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\\n        d\\['channels'].setValue('rgba')\\n\\n        e = nuke.createNode('Merge2', inpanel=False)\\n        e\\['Achannels'].setValue('red green blue depth.Z')\\n        e.setInput(1, nuke.toNode('Merge' + str(merge_count)))\\n        e.setInput(0, nuke.toNode('Blur' + str(blur_count+2)))\\n\\n        merge_count += 1\\n        blur_count += 2\\n        unpremult_count += 1\\n\\n        f = nuke.createNode('Blur', inpanel=False)\\n        new_knob = nuke.Int_Knob('exp_value')\\n        f.addKnob(new_knob)\\n        f\\['exp_value'].setValue(num)\\n        f.setInput(0, nuke.toNode('Unpremult' + str(unpremult_count)))\\n        f\\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\\n        f\\['channels'].setValue('rgba')\\n\\n        g = nuke.createNode('Shuffle', inpanel=False)\\n        g\\['in'].setValue( 'rgba' )\\n        g\\['in2'].setValue( 'depth' )\\n        g\\['out2'].setValue( 'depth' )\\n        g\\['black'].setValue('alpha')\\n\\n        h = nuke.createNode('Unpremult', inpanel=False)\\n        h\\['channels'].setValue('red green blue depth.Z')\\n\\n        j = nuke.createNode('Blur', inpanel=False)\\n        new_knob = nuke.Int_Knob('exp_value')\\n        j.addKnob(new_knob)\\n        j\\['exp_value'].setValue(num)\\n        j\\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\\n        j\\['channels'].setValue('red green blue depth.Z')\\n\\n        k = nuke.createNode('Merge2', inpanel=False)\\n        k.setInput(1, nuke.toNode('Merge' + str(merge_count)))\\n        k.setInput(0, nuke.toNode('Blur' + str(blur_count+2)))\\n\\n        merge_count += 1\\n        blur_count += 2\\n        unpremult_count += 1\\n        num += 1\\n        nuke.toNode('Output1').setInput(0, k)\\n\\n    try:\\n        nuke.toNode('Blur5').setInput(0, nuke.toNode('Unpremult4'))\\n    except:\\n        nuke.toNode('Output1').setInput(0, nuke.toNode('Merge2'))\\n\\n    n.end()\\n    \\n\\n\"\n  note_font_size 25\n  xpos 787\n  ypos 449\n  addUserKnob {20 User}\n  addUserKnob {6 firstrun l \"Disable before input\" +STARTLINE}\n  firstrun {{\"!\\[exists parent.input0]\"}}\n  addUserKnob {6 exp t \"The exponential check box will add a variable to the duplicated blurs that increases as they move outwards from the original edge. This might help if you have a large distance to extend.\" +STARTLINE}\n  addUserKnob {7 iterations t \"Sets how large the edge with the color bleeding will be from the edge grow start or core matte and how many times this will be duplicated. The smaller the width the more detail is preserved.This should be just big enough to reach the edge of the largest areas of motionblur.\" R 1 25}\n  iterations 5\n  addUserKnob {7 sliceWidth l \"slice width\" t \"The slice width is the amount of blur being applied per slice.\" R 1 10}\n  sliceWidth 1\n  addUserKnob {7 sliceBlur l \"slice blur\" t \"The slice width is the amount of blur being applied per slice.\" R 1 10}\n  sliceBlur 1\n }\n  Input {\n   inputs 0\n   name Alpha\n   label static\n   xpos -218\n   ypos -646\n   number 1\n  }\n  Input {\n   inputs 0\n   name RGB\n   label static\n   xpos -64\n   ypos -772\n  }\n  Unpremult {\n   name Unpremult1\n   label static\n   xpos -64\n   ypos -689\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy1\n   label static\n   xpos -64\n   ypos -653\n   disable {{parent.firstrun}}\n  }\n  Premult {\n   name Premult1\n   label static\n   xpos -64\n   ypos -599\n  }\n  Shuffle {\n   black alpha\n   out2 depth\n   name Shuffle1\n   label static\n   xpos -64\n   ypos -561\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult2\n   label static\n   xpos -64\n   ypos -523\n  }\nset N32be0000 [stack 0]\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth}}\n   name Blur1\n   label static\n   xpos -64\n   ypos -428\n  }\n  Dot {\n   name Dot2\n   label static\n   xpos -30\n   ypos -336\n  }\npush $N32be0000\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth}}\n   name Blur2\n   label static\n   xpos 46\n   ypos -523\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle2\n   label static\n   xpos 46\n   ypos -471\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult3\n   label static\n   xpos 46\n   ypos -435\n  }\nset N32c06c00 [stack 0]\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth}}\n   name Blur3\n   label static\n   xpos 46\n   ypos -381\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge1\n   label static\n   xpos 46\n   ypos -343\n  }\n  Dot {\n   name Dot3\n   label static\n   xpos 80\n   ypos -237\n  }\npush $N32c06c00\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth}}\n   name Blur4\n   label static\n   xpos 156\n   ypos -428\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle3\n   label static\n   xpos 156\n   ypos -390\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult4\n   label static\n   xpos 156\n   ypos -350\n  }\nset N32c37400 [stack 0]\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth}}\n   name Blur5\n   label static\n   xpos 156\n   ypos -299\n  }\n  Merge2 {\n   inputs 2\n   name Merge2\n   label static\n   xpos 156\n   ypos -247\n  }\npush $N32c37400\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur6\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 1\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle4\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult5\n  }\nset N32c36000 [stack 0]\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur7\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 1\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge3\n  }\npush $N32c36000\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur8\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 1\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle5\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult6\n  }\nset N32c68c00 [stack 0]\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur9\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 1\n  }\n  Merge2 {\n   inputs 2\n   name Merge4\n  }\npush $N32c68c00\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur10\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 2\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle6\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult7\n  }\nset N32ca3800 [stack 0]\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur11\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 2\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge5\n  }\npush $N32ca3800\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur12\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 2\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle7\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult8\n  }\nset N32ca2400 [stack 0]\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur13\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 2\n  }\n  Merge2 {\n   inputs 2\n   name Merge6\n  }\npush $N32ca2400\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur14\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 3\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle8\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult9\n  }\nset N32cd7000 [stack 0]\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur15\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 3\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge7\n  }\npush $N32cd7000\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur16\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 3\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle9\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult10\n  }\nset N32d11c00 [stack 0]\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur17\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 3\n  }\n  Merge2 {\n   inputs 2\n   name Merge8\n  }\npush $N32d11c00\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur18\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 4\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle10\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult11\n  }\nset N32d10800 [stack 0]\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur19\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 4\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge9\n  }\npush $N32d10800\n  Blur {\n   channels rgba\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur20\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 4\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle11\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult12\n  }\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}\n   name Blur21\n   label \"\\[value size]\"\n   addUserKnob {20 User}\n   addUserKnob {3 exp_value}\n   exp_value 4\n  }\n  Merge2 {\n   inputs 2\n   name Merge10\n   selected true\n  }\n  Output {\n   name Output1\n   label static\n   xpos 156\n   ypos 4217\n  }\n end_group\nset N209ee900 [stack 0]\npush $N20a19000\n Switch {\n  inputs 2\n  which {{parent.FinalSwitch.which}}\n  name Switch2\n  xpos -418\n  ypos 237\n }\n Dilate {\n  size 50\n  name Dilate1\n  label \"\\[value size]\"\n  xpos -608\n  ypos 224\n  disable true\n }\nset N32d44000 [stack 0]\n ChannelMerge {\n  inputs 2\n  operation stencil\n  name ChannelMerge3\n  xpos -608\n  ypos 327\n }\n ChannelMerge {\n  inputs 2\n  operation multiply\n  name ChannelMerge_colormask\n  xpos -608\n  ypos 627\n  disable {{!parent.enableBGMask}}\n }\n Dot {\n  name Dot4\n  xpos -574\n  ypos 702\n }\nset N32d75400 [stack 0]\n Dot {\n  name Dot10\n  xpos -573\n  ypos 1057\n }\npush $N20a6b400\n Dot {\n  name Dot13\n  xpos -683\n  ypos 993\n }\n Premult {\n  name Premult1\n  xpos -971\n  ypos 990\n }\npush $N32d75400\npush $N20a18c00\npush $N20a4a800\npush $N32be1c00\n Dot {\n  name Dot1\n  xpos 410\n  ypos 565\n }\nset N32d74400 [stack 0]\n Dot {\n  name Dot18\n  xpos 190\n  ypos 565\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace2\n  xpos 156\n  ypos 596\n }\npush $N20a6b000\n Dot {\n  name Dot8\n  xpos 625\n  ypos 602\n }\npush $N32d74400\npush $N209ee900\n Dot {\n  name Dot15\n  xpos 821\n  ypos 531\n }\n Dot {\n  name Dot3\n  xpos 821\n  ypos 733\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 376\n  ypos 723\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace1\n  xpos 266\n  ypos 729\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  name Copy1\n  xpos 156\n  ypos 723\n  disable {{!parent.extendChromaOnly}}\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace3\n  xpos 46\n  ypos 729\n }\nadd_layer {edge edge.red edge.green edge.blue edge.alpha edge.matte}\n ShuffleCopy {\n  inputs 2\n  red alpha\n  green alpha\n  blue alpha\n  out edge\n  name ShuffleCopy1\n  xpos -64\n  ypos 729\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -215\n  ypos 723\n }\n Dot {\n  name Dot9\n  xpos -472\n  ypos 733\n }\nset N32dbf400 [stack 0]\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace4\n  xpos -506\n  ypos 434\n }\npush $N20a4bc00\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace6\n  xpos -791\n  ypos 289\n }\n Blur {\n  channels rgb\n  size {{parent.BlurBG}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos -790\n  ypos 341\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.alpha\n  to1 rgba.alpha\n  name Copy5\n  xpos -790\n  ypos 421\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace5\n  xpos -790\n  ypos 487\n }\n Grade {\n  black_clamp false\n  name GradeEdgeColor\n  xpos -790\n  ypos 525\n }\n Saturation {\n  name EdgeSat\n  xpos -790\n  ypos 563\n }\npush $N32dbf400\n Merge2 {\n  inputs 2+1\n  operation average\n  Achannels rgb\n  output rgb\n  mix {{parent.mergeBlendingMix}}\n  name ColorMerge\n  selected true\n  xpos -791\n  ypos 730\n  disable {{!parent.enablecolor}}\n }\nset N32dfd400 [stack 0]\n Dot {\n  name Dot2\n  xpos -757\n  ypos 911\n }\n Input {\n  inputs 0\n  name Mask\n  xpos -1288\n  ypos 730\n  number 4\n }\npush $N32dfd400\n Premult {\n  name Premult3\n  xpos -956\n  ypos 730\n }\npush $N20a6bc00\n Merge2 {\n  inputs 2+1\n  also_merge edge\n  name Merge3\n  xpos -1081\n  ypos 730\n }\n Switch {\n  inputs 2\n  which {{operation}}\n  name FinalSwitch\n  xpos -1081\n  ypos 908\n }\n Switch {\n  inputs 2\n  which {{parent.PreviewBG}}\n  name BGPreview\n  xpos -1081\n  ypos 990\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  name Copy3\n  xpos -1081\n  ypos 1050\n  disable {{parent.colorpreview*-1+1}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  name Copy4\n  xpos -1081\n  ypos 1123\n  disable {{!parent.previewedgematte}}\n }\n Shuffle {\n  out {{{parent.Shuffle2.in}}}\n  name Shuffle3\n  xpos -1081\n  ypos 1239\n }\n Output {\n  name Output1\n  xpos -1081\n  ypos 1947\n }\npush $N32d44000\npush $N32dfd400\n Viewer {\n  inputs 2\n  frame 1\n  frame_range 100-100\n  colour_sample_bbox {-0.7646484375 -0.2055664063 -0.7197265625 -0.1782226563}\n  input_process false\n  name Viewer1\n  xpos -706\n  ypos 1852\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeDetectAlias.gizmo",
    "content": "Group {\n name EdgeDetectAlias\n tile_color 0xcc804eff\n note_font \"Bitstream Vera Sans Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 EdgeAlias}\n addUserKnob {7 threshold l Threshold}\n threshold 0.9\n addUserKnob {41 size l Blur T Blur1.size}\n addUserKnob {41 mult l Mult T Grade1.multiply}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 278\n  ypos -386\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 312\n  ypos -290\n }\nset N29bdb570 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 451\n  ypos -290\n }\nset N29bdf380 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 577\n  ypos -290\n }\n Dilate {\n  channels rgba\n  size 1\n  name Dilate2\n  xpos 543\n  ypos -231\n }\npush $N29bdf380\n Invert {\n  channels rgba\n  name Invert1\n  xpos 417\n  ypos -257\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 417\n  ypos -231\n }\n Grade {\n  channels rgba\n  blackpoint {{parent.threshold}}\n  name Grade3\n  xpos 417\n  ypos -199\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 451\n  ypos -150\n }\npush $N29bdb570\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 202\n  ypos -290\n }\n Dilate {\n  channels rgba\n  size -1\n  name Dilate1\n  xpos 168\n  ypos -227\n }\npush $N29bdb570\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 278\n  ypos -227\n }\n Grade {\n  channels rgba\n  blackpoint {{parent.threshold}}\n  name Grade2\n  xpos 278\n  ypos -201\n }\n Merge2 {\n  inputs 2\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 278\n  ypos -154\n }\n Blur {\n  channels rgba\n  size 2\n  name Blur1\n  label \"\\[value size]\"\n  xpos 278\n  ypos -98\n }\n Grade {\n  channels rgba\n  multiply 2\n  white_clamp true\n  name Grade1\n  xpos 278\n  ypos -60\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  tile_color 0xffffffff\n  xpos 278\n  ypos -34\n }\n Output {\n  name Output1\n  xpos 278\n  ypos 65\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeDetectPRO.gizmo",
    "content": "Group {\n name EdgeDetectPRO\n tile_color 0xcc804e00\n addUserKnob {20 EdgeDetect}\n addUserKnob {41 channels T CTRL.channels}\n addUserKnob {26 IN l \"\" +STARTLINE T \"<b><font color=\\\"SandyBrown\\\">IN</font></b>\"}\n addUserKnob {26 line l \"\" -STARTLINE}\n addUserKnob {7 in_erode l \"IN erode\" R -100 100}\n addUserKnob {7 in_blur l \"IN blur\" R 0 50}\n addUserKnob {26 OUT l \"\" +STARTLINE T \"<b><font color=\\\"SandyBrown\\\">OUT</font></b>\"}\n addUserKnob {26 line2 l \"\" -STARTLINE}\n addUserKnob {7 out_erode l \"OUT erode\" R -100 100}\n addUserKnob {7 out_blur l \"OUT blur\" R 0 50}\n addUserKnob {26 OVERALL l \"\" +STARTLINE T \"<b><font color=\\\"SandyBrown\\\">OVERALL</font></b>\"}\n addUserKnob {26 line03 l \"\" -STARTLINE}\n addUserKnob {41 size l Dilate T Dilate1.size}\n addUserKnob {41 size_1 l Blur T BlurOverall.size}\n addUserKnob {41 value l Gain T MultiplyOverall.value}\n addUserKnob {6 clamp -STARTLINE}\n clamp true\n addUserKnob {26 \"\"}\n addUserKnob {6 enableRotate l \"\" +STARTLINE +STARTLINE}\n addUserKnob {41 which l rotate -STARTLINE T Switch1.which}\n addUserKnob {26 \"\"}\n addUserKnob {20 filters l Filters n 1}\n filters 0\n addUserKnob {41 filter l \"filter erode\" T FilterErodeIN.filter}\n addUserKnob {41 filter_1 l \"filter blur\" T BlurIN.filter}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 email l @}\n addUserKnob {26 email_1 l \"\" +STARTLINE T \"<b><font color=\\\"SandyBrown\\\">EdgeDetect PRO v2.0</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x56705aff\n  label rotate\n  note_font_size 42\n  xpos -2496\n  ypos -223\n  bdwidth 2029\n  bdheight 509\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 149\n  ypos -285\n }\n Dilate {\n  channels {{{parent.CTRL.channels}}}\n  name Dilate1\n  label \"\\[value size]\"\n  xpos 147\n  ypos -234\n }\n Dot {\n  name Dot4\n  xpos 181\n  ypos -143\n }\nset N46af5a00 [stack 0]\n Dot {\n  name Dot21\n  xpos -176\n  ypos -143\n }\nset N46af7ec0 [stack 0]\n Dot {\n  name Dot16\n  xpos -525\n  ypos -143\n }\nset N46afa460 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {-1 0 1}\n      {-1 -1 0}\n    }\n  name Matrix15\n  xpos -557\n  ypos -29\n }\npush $N46afa460\n Dot {\n  name Dot5\n  xpos -658\n  ypos -143\n }\nset N46a71040 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {-1 0 1}\n      {-1 -1 -1}\n    }\n  name Matrix14\n  xpos -690\n  ypos -31\n }\npush $N46a71040\n Dot {\n  name Dot14\n  xpos -788\n  ypos -143\n }\nset N46a5bb90 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {0 0 0}\n      {-1 -1 -1}\n    }\n  name Matrix13\n  xpos -820\n  ypos -29\n }\npush $N46a5bb90\n Dot {\n  name Dot13\n  xpos -934\n  ypos -143\n }\nset N46a63330 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {1 0 -1}\n      {-1 -1 -1}\n    }\n  name Matrix12\n  xpos -966\n  ypos -29\n }\npush $N46a63330\n Dot {\n  name Dot12\n  xpos -1068\n  ypos -143\n }\nset N46a6aad0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 0 -1}\n      {0 -1 -1}\n    }\n  name Matrix11\n  xpos -1100\n  ypos -31\n }\npush $N46a6aad0\n Dot {\n  name Dot11\n  xpos -1219\n  ypos -143\n }\nset N46a50a40 [stack 0]\n Matrix {\n  matrix {\n      {1 1 -1}\n      {0 0 0}\n      {1 -1 -1}\n    }\n  name Matrix10\n  xpos -1251\n  ypos -32\n }\npush $N46a50a40\n Dot {\n  name Dot10\n  xpos -1351\n  ypos -143\n }\nset N46a49300 [stack 0]\n Matrix {\n  matrix {\n      {1 1 -1}\n      {1 0 -1}\n      {1 -1 -1}\n    }\n  name Matrix9\n  xpos -1385\n  ypos -34\n }\npush $N46a49300\n Dot {\n  name Dot9\n  xpos -1500\n  ypos -143\n }\nset N46a31fc0 [stack 0]\n Matrix {\n  matrix {\n      {1 0 -1}\n      {1 0 -1}\n      {1 0 -1}\n    }\n  name Matrix8\n  xpos -1534\n  ypos -31\n }\npush $N46a31fc0\n Dot {\n  name Dot8\n  xpos -1640\n  ypos -143\n }\nset N46a2fdd0 [stack 0]\n Matrix {\n  matrix {\n      {1 -1 -1}\n      {1 0 -1}\n      {1 1 -1}\n    }\n  name Matrix7\n  xpos -1674\n  ypos -31\n }\npush $N46a2fdd0\n Dot {\n  name Dot15\n  xpos -1745\n  ypos -143\n }\nset N46a10560 [stack 0]\n Matrix {\n  matrix {\n      {0 -1 -1}\n      {1 0 -1}\n      {1 1 0}\n    }\n  name Matrix6\n  xpos -1779\n  ypos -32\n }\npush $N46a10560\n Dot {\n  name Dot7\n  xpos -1851\n  ypos -143\n }\nset N46a17ca0 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {1 0 -1}\n      {1 1 1}\n    }\n  name Matrix5\n  xpos -1885\n  ypos -31\n }\npush $N46a17ca0\n Dot {\n  name Dot6\n  xpos -1961\n  ypos -143\n }\nset N46a06770 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {0 0 0}\n      {1 1 1}\n    }\n  name Matrix4\n  xpos -1995\n  ypos -32\n }\npush $N46a06770\n Dot {\n  name Dot17\n  xpos -2082\n  ypos -143\n }\nset N2a2039f0 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {-1 0 1}\n      {1 1 1}\n    }\n  name Matrix3\n  xpos -2116\n  ypos -32\n }\npush $N2a2039f0\n Dot {\n  name Dot18\n  xpos -2203\n  ypos -143\n }\nset N2a20b040 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 0}\n      {-1 0 1}\n      {0 1 1}\n    }\n  name Matrix2\n  xpos -2237\n  ypos -31\n }\npush $N2a20b040\n Dot {\n  name Dot19\n  xpos -2319\n  ypos -143\n }\nset N2a212a00 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 1}\n      {-1 0 1}\n      {-1 1 1}\n    }\n  name Matrix1\n  xpos -2353\n  ypos -31\n }\npush $N2a212a00\n Dot {\n  name Dot20\n  xpos -2452\n  ypos -143\n }\n Matrix {\n  matrix {\n      {-1 0 1}\n      {-1 0 1}\n      {-1 0 1}\n    }\n  name Matrix0\n  xpos -2486\n  ypos -31\n }\n Switch {\n  inputs 16\n  name Switch1\n  xpos -1534\n  ypos 258\n }\npush $N46af7ec0\n Matrix {\n  channels {{{parent.CTRL.channels}}}\n  matrix {\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,2)]\"}}\n    }\n  name MatrixSUPER\n  xpos -208\n  ypos 68\n }\n FilterErode {\n  channels {{{parent.CTRL.channels}}}\n  size {{(abs(parent.FilterErodeOUT.size)+abs(parent.FilterErodeIN.size)+parent.BlurOUT.size+parent.BlurIN.size+10)*-1}}\n  name FilterErode1\n  label \"\\[value size]\"\n  xpos -208\n  ypos 215\n }\npush $N46af5a00\n Dot {\n  name Dot2\n  label IN\n  note_font_size 30\n  xpos 239\n  ypos -96\n }\n FilterErode {\n  channels {{{parent.CTRL.channels}}}\n  size {{parent.in_erode}}\n  name FilterErodeIN\n  label \"\\[value size]\"\n  xpos 205\n  ypos -44\n }\n Blur {\n  channels {{{parent.CTRL.channels}}}\n  size {{parent.in_blur}}\n  name BlurIN\n  label \"\\[value size]\"\n  selected true\n  xpos 205\n  ypos 14\n }\n Dot {\n  name Dot3\n  xpos 239\n  ypos 169\n }\npush $N46af5a00\n Dot {\n  name Dot1\n  label OUT\n  note_font_size 30\n  xpos 106\n  ypos -93\n }\n FilterErode {\n  channels {{{parent.CTRL.channels}}}\n  size {{parent.out_erode}}\n  filter {{FilterErodeIN.filter}}\n  name FilterErodeOUT\n  label \"\\[value size]\"\n  xpos 72\n  ypos -39\n }\n Blur {\n  channels {{{parent.CTRL.channels}}}\n  size {{parent.out_blur}}\n  filter {{BlurIN.filter}}\n  name BlurOUT\n  label \"\\[value size]\"\n  xpos 72\n  ypos 15\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge1\n  xpos 72\n  ypos 166\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  label ROTATE\n  xpos 72\n  ypos 215\n  disable {{!parent.enableRotate}}\n }\n Blur {\n  channels {{{parent.CTRL.channels}}}\n  name BlurOverall\n  label \"\\[value size]\"\n  xpos 72\n  ypos 286\n }\n Multiply {\n  channels {{{parent.CTRL.channels}}}\n  name MultiplyOverall\n  label \"\\[value value]\"\n  xpos 72\n  ypos 340\n }\n Clamp {\n  channels {{{parent.CTRL.channels}}}\n  name Clamp1\n  xpos 72\n  ypos 383\n  disable {{!parent.clamp}}\n }\n Output {\n  name Output1\n  xpos 72\n  ypos 432\n }\n FilterErode {\n  inputs 0\n  channels rgba\n  size 0\n  name CTRL\n  label \"\\[value size]\"\n  xpos 385\n  ypos -166\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeFromAlpha.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name EdgeFromAlpha\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 \"\" l Settings}\n addUserKnob {41 from0 l \"control channel\" T Copy2.from0}\n addUserKnob {41 output T ChannelMerge4.output}\n addUserKnob {41 blackpoint T Grade1.blackpoint}\n addUserKnob {41 whitepoint T Grade1.whitepoint}\n addUserKnob {26 \"\" l \"edge size\"}\n addUserKnob {41 size l inside T ErodeInside.size}\n addUserKnob {14 ErodeOutside_size l outside R 0 100}\n ErodeOutside_size 3\n addUserKnob {26 \"\" l \"edge blur\"}\n addUserKnob {41 size_3 l inside T BlurInside.size}\n addUserKnob {41 size_1 l outside T BlurOutside.size}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -448\n  ypos 2\n }\n AddChannels {\n  channels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name AddChannels1\n  xpos -448\n  ypos 30\n }\nset N37967ad0 [stack 0]\npush $N37967ad0\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  name Copy2\n  xpos -193\n  ypos 30\n }\n Clamp {\n  channels {rgba.red -rgba.green -rgba.blue}\n  name Clamp1\n  xpos -193\n  ypos 94\n }\n Grade {\n  channels {rgba.red -rgba.green -rgba.blue}\n  black_clamp false\n  name Grade1\n  xpos -193\n  ypos 146\n }\nset N36ef2460 [stack 0]\n Erode {\n  channels {none none none rgba.red}\n  size 3\n  name ErodeInside\n  xpos -126\n  ypos 198\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue}\n  name BlurInside\n  xpos -126\n  ypos 250\n }\npush $N36ef2460\n Erode {\n  channels {none none none rgba.red}\n  size {{-parent.ErodeOutside_size.w} {-parent.ErodeOutside_size.h}}\n  name ErodeOutside\n  xpos -264\n  ypos 199\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue}\n  name BlurOutside\n  xpos -264\n  ypos 251\n }\n ChannelMerge {\n  inputs 2\n  A rgba.red\n  operation stencil\n  B rgba.red\n  name ChannelMerge4\n  xpos -191\n  ypos 308\n }\nset N36eeda60 [stack 0]\n Dot {\n  name Dot1\n  xpos -52\n  ypos 324\n }\n Dot {\n  name Dot2\n  xpos -52\n  ypos 465\n }\npush $N37967ad0\n Dot {\n  name Dot3\n  xpos -414\n  ypos 416\n }\npush $N36eeda60\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  name Copy1\n  xpos -191\n  ypos 407\n }\n Switch {\n  inputs 2\n  which {{\"parent.output == 1\" i}}\n  name Switch1\n  xpos -191\n  ypos 463\n }\n Output {\n  name Output1\n  xpos -191\n  ypos 526\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge_Expand.gizmo",
    "content": "Group {\n name Edge_Expand\n inputs 2\n help \"Expand edges to fix fringing on keys.\\nUse after a premult is preferred, but can also help on some other inputs.\"\n knobChanged \"\\nnode = nuke.thisNode()\\nknob = nuke.thisKnob()\\n\\nif knob.name() in \\['method']:\\n    if knob.value() == 'Dilate':\\n        node\\['size_extend'].clearFlag(nuke.INVISIBLE)\\n        node\\['samples'].clearFlag(nuke.INVISIBLE)\\n        node\\['size_warp'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_normal'].setFlag(nuke.INVISIBLE)\\n        node\\['size_distort'].setFlag(nuke.INVISIBLE)\\n        node\\['distort_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['blur'].clearFlag(nuke.INVISIBLE)\\n    elif knob.value() == 'Extend':\\n        node\\['size_extend'].clearFlag(nuke.INVISIBLE)\\n        node\\['samples'].clearFlag(nuke.INVISIBLE)\\n        node\\['size_warp'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_normal'].setFlag(nuke.INVISIBLE)\\n        node\\['size_distort'].setFlag(nuke.INVISIBLE)\\n        node\\['distort_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['blur'].clearFlag(nuke.INVISIBLE)\\n    elif knob.value() == 'Warp':\\n        node\\['size_extend'].setFlag(nuke.INVISIBLE)\\n        node\\['samples'].setFlag(nuke.INVISIBLE)\\n        node\\['size_warp'].clearFlag(nuke.INVISIBLE)\\n        node\\['warp_amount'].clearFlag(nuke.INVISIBLE)\\n        node\\['warp_normal'].clearFlag(nuke.INVISIBLE)\\n        node\\['size_distort'].setFlag(nuke.INVISIBLE)\\n        node\\['distort_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['blur'].clearFlag(nuke.INVISIBLE)\\n    elif knob.value() == 'Distort':\\n        node\\['size_extend'].setFlag(nuke.INVISIBLE)\\n        node\\['samples'].setFlag(nuke.INVISIBLE)\\n        node\\['size_warp'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_amount'].setFlag(nuke.INVISIBLE)\\n        node\\['warp_normal'].setFlag(nuke.INVISIBLE)\\n        node\\['size_distort'].clearFlag(nuke.INVISIBLE)\\n        node\\['distort_amount'].clearFlag(nuke.INVISIBLE)\\n        node\\['blur'].setFlag(nuke.INVISIBLE)\\n\\nelif knob.name() in \\['samples']:\\n    if knob.value() > 10:\\n        knob.setValue(10)\\n    elif knob.value() < 1:\\n        knob.setValue(1)\\n\"\n tile_color 0xef7033ff\n label \"(\\[value method])\"\n addUserKnob {20 User}\n addUserKnob {4 method l Method t \"Dilate: Multiple iterations of Blur and Unpremult of the same input.\\nExtend: Recursive iterations of Blur and Unpremult.\\nWarp: A vector based method to stretch the edges.\\nDistort: A wide distortion which \\\"grows\\\" the subject into its matte.\" M {Dilate Extend Warp Distort}}\n addUserKnob {6 in_premult l \"Input is Premultiplied\" -STARTLINE}\n in_premult true\n addUserKnob {26 \"\"}\n addUserKnob {7 erode t \"Erodes the original alpha to get rid of edges.\" R 0 15}\n erode 5\n addUserKnob {14 edgeblur l \"edge blur\" t \"Use this to soften the transition between the extended area and the core.\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {14 size_extend l size t \"Controls the size of the expansion.\" R 0 100}\n size_extend 15\n addUserKnob {3 samples t \"Controls the amount of samples for the Dilate or Extend Methods. (min:1 max:10)\"}\n samples 10\n addUserKnob {14 size_warp l size t \"Controls the size of the Warp\" +INVISIBLE R 0 100}\n size_warp 10\n addUserKnob {7 warp_amount l \"warp amount\" +INVISIBLE R 0.5 1}\n warp_amount 1\n addUserKnob {7 warp_normal l \"warp normal\" t \"Rotates the angle of the vector extension.\" +INVISIBLE R -90 90}\n addUserKnob {14 size_distort l size t \"Controls the size of the distort.\" +INVISIBLE R 0 100}\n size_distort 5\n addUserKnob {7 distort_amount l \"distort amount\" +INVISIBLE R 0.5 1}\n distort_amount 1\n addUserKnob {14 blur l \"blur expansion\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {7 mix_luma l \"mix luma\"}\n mix_luma 1\n addUserKnob {7 mix_chroma l \"mix chroma\"}\n mix_chroma 1\n addUserKnob {22 shuffle_edge l \"shuffle edge matte\" T \"node = nuke.thisNode()\\nfullName = 'root.' + node.fullName()\\nparent_group = fullName.rsplit('.', 1)\\[0]\\nwith nuke.toNode(parent_group):\\n    shuffle = nuke.createNode(\\\"Shuffle\\\", 'in edge red alpha green alpha blue alpha label \\\"Edge Matte\\\"', inpanel=False)\\n    shuffle.setXpos(node.xpos() + 100)\\n    shuffle.setYpos(node.ypos())\\n    shuffle.setInput(0, node)\\n\\n\" +STARTLINE}\n addUserKnob {6 premult l \"premult output\" t \"Check this box to get the final result of the expension with the original matte.\\nUncheck this box to see the result of the expension with a new expended alpha.\" -STARTLINE}\n premult true\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nEdge_Expand\\nVersion 1.0\\n2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.0 - 2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -33\n  ypos 1325\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -175\n  ypos -347\n }\n Dot {\n  name Dot13\n  tile_color 0xcccccc00\n  xpos -141\n  ypos -279\n }\nset N958b9a0 [stack 0]\n Unpremult {\n  name Unpremult2\n  xpos -175\n  ypos -226\n  disable {{!parent.in_premult}}\n }\nset N95d29c0 [stack 0]\n Erode {\n  size {{parent.erode}}\n  name Erode1\n  xpos -175\n  ypos -137\n }\nset N95ccab0 [stack 0]\n Dot {\n  name Dot1\n  tile_color 0xcc804e00\n  xpos -259\n  ypos -127\n }\n Erode {\n  size {{parent.edgeblur} {parent.edgeblur}}\n  blur 1\n  name Erode2\n  xpos -293\n  ypos -93\n }\npush $N95ccab0\n ChannelMerge {\n  inputs 2\n  operation min\n  name ChannelMerge1\n  xpos -175\n  ypos -99\n }\n Dot {\n  name Dot16\n  tile_color 0x4b5ec600\n  xpos -141\n  ypos -22\n }\nset N95ae5d0 [stack 0]\npush $N958b9a0\n Dot {\n  name Dot15\n  tile_color 0xcccccc00\n  xpos -438\n  ypos -279\n }\nset N1956f6a0 [stack 0]\n ChannelMerge {\n  inputs 2\n  operation from\n  name ChannelMerge2\n  xpos -472\n  ypos -38\n }\npush $N1956f6a0\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  xpos -605\n  ypos -279\n }\nadd_layer {edge edge.red edge.green edge.blue edge.alpha}\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 edge.alpha\n  bbox B\n  name Copy5\n  xpos -639\n  ypos -32\n }\n Dot {\n  name Dot20\n  tile_color 0x9e3c6300\n  xpos -605\n  ypos 641\n }\nset Nceed720 [stack 0]\n Dot {\n  name Dot23\n  tile_color 0x9e3c6300\n  xpos -612\n  ypos 1151\n }\nset Nce99110 [stack 0]\n Dot {\n  name Dot24\n  tile_color 0x9e3c6300\n  xpos -612\n  ypos 1329\n }\nset Nc5922f0 [stack 0]\npush $Nce99110\npush $N95ae5d0\n Premult {\n  name Premult2\n  xpos -175\n  ypos 51\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos -141\n  ypos 108\n }\nset N94727c0 [stack 0]\n Dot {\n  name Dot11\n  tile_color 0xcccccc00\n  xpos -302\n  ypos 108\n }\n Dot {\n  name Dot12\n  tile_color 0xcccccc00\n  xpos -302\n  ypos 561\n }\npush $N95ae5d0\n Dot {\n  name Dot14\n  tile_color 0x4b5ec600\n  xpos 253\n  ypos -22\n }\n Dot {\n  name Dot6\n  tile_color 0x4b5ec600\n  xpos 253\n  ypos 92\n }\nset Nbc9a6530 [stack 0]\npush $N95d29c0\n Dot {\n  name Dot8\n  tile_color 0xcccccc00\n  xpos 121\n  ypos -222\n }\nset Nb3b2ff0 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0xcccccc00\n  xpos 367\n  ypos -222\n }\n Group {\n  inputs 2\n  name Distort\n  xpos 333\n  ypos 153\n  addUserKnob {20 User}\n  addUserKnob {14 size R 0 100}\n  size {{parent.size_distort} {parent.size_distort}}\n  addUserKnob {7 distort}\n  distort {{parent.distort_amount}}\n }\n  Input {\n   inputs 0\n   name Inputcontrol_mask\n   xpos 236\n   ypos -303\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle1\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 235\n   ypos -248\n  }\nset Na9d4d20 [stack 0]\n  Blur {\n   size {{parent.size*10} {parent.size*10}}\n   quality {{int(parent.size*8)}}\n   name Blur2\n   label \"size \\[value size]\"\n   xpos 360\n   ypos -121\n  }\npush $Na9d4d20\n  Blur {\n   size {{parent.size} {parent.size}}\n   quality 50\n   name Blur1\n   xpos 235\n   ypos -117\n  }\n  Merge2 {\n   inputs 2\n   operation multiply\n   bbox B\n   name Merge2\n   xpos 234\n   ypos 5\n  }\n  Grade {\n   gamma 0.415\n   name Grade5\n   xpos 234\n   ypos 57\n  }\nset Nbc8bebd0 [stack 0]\n  Invert {\n   name Invert1\n   xpos 61\n   ypos 51\n  }\n  Multiply {\n   value {{parent.size*2}}\n   name Multiply1\n   xpos 61\n   ypos 178\n  }\n  Dot {\n   name Dot1\n   tile_color 0x7aa9ff00\n   xpos 95\n   ypos 441\n  }\npush $Nbc8bebd0\n  Dot {\n   name Dot2\n   tile_color 0x7aa9ff00\n   xpos 269\n   ypos 123\n  }\nset Nbc9dd030 [stack 0]\n  Matrix {\n   matrix {\n       {1 0 -1}\n       {2 0 -2}\n       {1 0 -1}\n     }\n   name Matrix1\n   xpos 235\n   ypos 204\n  }\npush $Nbc9dd030\n  Dot {\n   name Dot3\n   tile_color 0x7aa9ff00\n   xpos 379\n   ypos 123\n  }\n  Matrix {\n   channels rgb\n   matrix {\n       {-1 -2 -1}\n       {0 0 0}\n       {1 2 1}\n     }\n   name Matrix2\n   xpos 345\n   ypos 205\n  }\n  Dot {\n   name Dot4\n   xpos 379\n   ypos 260\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   blue black\n   alpha black\n   name ShuffleCopy1\n   xpos 236\n   ypos 256\n  }\n  Expression {\n   temp_name0 mag\n   temp_expr0 sqrt(pow(r,2)+pow(g,2)+pow(b,2))\n   expr0 mag!=0?r/mag:0\n   expr1 mag!=0?g/mag:0\n   expr2 mag!=0?b/mag:0\n   name Normalize\n   xpos 236\n   ypos 321\n  }\n  Multiply {\n   value -1\n   name Multiply2\n   xpos 236\n   ypos 358\n  }\n  Merge2 {\n   inputs 2\n   operation multiply\n   bbox B\n   name Merge1\n   xpos 236\n   ypos 437\n  }\n  Input {\n   inputs 0\n   name Input\n   xpos 536\n   ypos -112\n  }\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 forward.u\n   from1 rgba.green\n   to1 forward.v\n   name Copy1\n   selected true\n   xpos 536\n   ypos 425\n  }\n  IDistort {\n   uv forward\n   uv_scale {{parent.distort}}\n   name IDistort1\n   xpos 536\n   ypos 497\n  }\n  Output {\n   name Output1\n   xpos 536\n   ypos 566\n  }\n end_group\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 367\n  ypos 217\n }\npush $Nbc9a6530\npush $Nb3b2ff0\n Group {\n  inputs 2\n  name Warp\n  xpos 87\n  ypos 154\n  addUserKnob {20 User}\n  addUserKnob {14 size R 0 100}\n  size {{parent.size_warp} {parent.size_warp}}\n  addUserKnob {7 distort}\n  distort {{parent.warp_amount}}\n  addUserKnob {7 normal R -90 90}\n  normal {{parent.warp_normal}}\n }\n  Input {\n   inputs 0\n   name Inputcontrol_mask\n   xpos 235\n   ypos -176\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle1\n   xpos 235\n   ypos -150\n  }\n  Clamp {\n   name Clamp1\n   xpos 235\n   ypos -78\n  }\n  Blur {\n   size {{parent.size/parent.distort} {parent.size/parent.distort}}\n   quality 50\n   name Blur1\n   label \"size \\[value size]\"\n   xpos 235\n   ypos -27\n  }\n  Grade {\n   whitepoint 0.5\n   white_clamp true\n   name Grade2\n   xpos 235\n   ypos 81\n  }\nset Na9c54a0 [stack 0]\n  Invert {\n   name Invert1\n   xpos 61\n   ypos 75\n  }\n  Multiply {\n   value {{parent.size}}\n   name Multiply1\n   xpos 61\n   ypos 113\n  }\n  Dot {\n   name Dot1\n   tile_color 0x7aa9ff00\n   xpos 95\n   ypos 441\n  }\npush $Na9c54a0\n  Dot {\n   name Dot2\n   tile_color 0x7aa9ff00\n   xpos 269\n   ypos 123\n  }\nset Ncebdc20 [stack 0]\n  Matrix {\n   matrix {\n       {1 0 -1}\n       {2 0 -2}\n       {1 0 -1}\n     }\n   name Matrix1\n   xpos 235\n   ypos 206\n  }\npush $Ncebdc20\n  Dot {\n   name Dot3\n   tile_color 0x7aa9ff00\n   xpos 379\n   ypos 123\n  }\n  Matrix {\n   matrix {\n       {-1 -2 -1}\n       {0 0 0}\n       {1 2 1}\n     }\n   name Matrix2\n   xpos 345\n   ypos 205\n  }\n  Dot {\n   name Dot4\n   xpos 379\n   ypos 260\n  }\n  ShuffleCopy {\n   inputs 2\n   red red\n   blue black\n   alpha black\n   name ShuffleCopy1\n   xpos 236\n   ypos 256\n  }\n  Expression {\n   temp_name0 mag\n   temp_expr0 sqrt(pow(r,2)+pow(g,2)+pow(b,2))\n   expr0 mag!=0?r/mag:0\n   expr1 mag!=0?g/mag:0\n   expr2 mag!=0?b/mag:0\n   name Normalize\n   xpos 236\n   ypos 301\n  }\n  Multiply {\n   value -1\n   name Multiply2\n   xpos 236\n   ypos 327\n  }\n  Group {\n   name Vectors_Rotation\n   help \"Edit the direction of motion vectors\"\n   xpos 236\n   ypos 380\n   addUserKnob {20 VecRot l \"Vectors Rotation\"}\n   addUserKnob {7 rotation t \"Rotates the vectors direction\" R -90 90}\n   rotation {{parent.normal}}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos -303\n    ypos 144\n   }\n   Expression {\n    temp_name0 angleRad\n    temp_expr0 radians(parent.rotation)\n    expr0 \"r * cos(angleRad) - g * sin(angleRad)\"\n    expr1 \"r * sin(angleRad) + g * cos(angleRad)\"\n    name Direction\n    xpos -303\n    ypos 217\n   }\n   Output {\n    name Output1\n    xpos -303\n    ypos 291\n   }\n  end_group\n  Merge2 {\n   inputs 2\n   operation multiply\n   bbox B\n   name Merge1\n   xpos 236\n   ypos 437\n  }\n  Input {\n   inputs 0\n   name Input\n   xpos 536\n   ypos -176\n  }\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 forward.u\n   from1 rgba.green\n   to1 forward.v\n   name Copy1\n   xpos 536\n   ypos 425\n  }\n  IDistort {\n   uv forward\n   uv_scale {{parent.distort}}\n   name IDistort1\n   selected true\n   xpos 536\n   ypos 497\n  }\n  Output {\n   name Output1\n   xpos 536\n   ypos 607\n  }\n end_group\n Dot {\n  name Dot9\n  tile_color 0xcccccc00\n  xpos 121\n  ypos 220\n }\npush $N94727c0\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos -9\n  ypos 108\n }\n Group {\n  name Recursive_Extend\n  xpos -43\n  ypos 153\n  addUserKnob {20 User}\n  addUserKnob {14 size R 0 100}\n  size {{parent.size_extend} {parent.size_extend}}\n  addUserKnob {3 samples}\n  samples {{parent.samples}}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 threshold t \"Used to eliminate ugly edges due to small precision error.\" R 0 0.001}\n  threshold 0.0002\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 185\n   ypos -5\n  }\n  Clamp {\n   channels alpha\n   name Clamp1\n   xpos 185\n   ypos 46\n  }\n  Dot {\n   name Dot1\n   tile_color 0x7aa9ff00\n   xpos 219\n   ypos 123\n  }\nset Nd7b6820 [stack 0]\n  Dot {\n   name Dot2\n   tile_color 0x7aa9ff00\n   xpos 396\n   ypos 123\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur1\n   xpos 362\n   ypos 187\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult1\n   xpos 362\n   ypos 225\n  }\npush $Nd7b6820\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge1\n   selected true\n   xpos 185\n   ypos 225\n  }\n  Dot {\n   name Dot4\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 325\n  }\nset Nd7c9f60 [stack 0]\n  Dot {\n   name Dot5\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 325\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur2\n   xpos 362\n   ypos 384\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult2\n   xpos 362\n   ypos 422\n  }\npush $Nd7c9f60\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge2\n   xpos 185\n   ypos 422\n   disable {{parent.samples<2}}\n  }\n  Dot {\n   name Dot6\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 527\n  }\nset Nbca9b3d0 [stack 0]\n  Dot {\n   name Dot7\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 527\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur3\n   xpos 362\n   ypos 586\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult3\n   xpos 362\n   ypos 624\n  }\npush $Nbca9b3d0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge3\n   xpos 185\n   ypos 624\n   disable {{parent.samples<3}}\n  }\n  Dot {\n   name Dot8\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 729\n  }\nset Nbc842010 [stack 0]\n  Dot {\n   name Dot9\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 729\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur4\n   xpos 362\n   ypos 788\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult4\n   xpos 362\n   ypos 826\n  }\npush $Nbc842010\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge4\n   xpos 185\n   ypos 826\n   disable {{parent.samples<4}}\n  }\n  Dot {\n   name Dot10\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 931\n  }\nset Naa83510 [stack 0]\n  Dot {\n   name Dot11\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 931\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur5\n   xpos 362\n   ypos 990\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult5\n   xpos 362\n   ypos 1028\n  }\npush $Naa83510\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge5\n   xpos 185\n   ypos 1028\n   disable {{parent.samples<5}}\n  }\n  Dot {\n   name Dot12\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 1133\n  }\nset N9596430 [stack 0]\n  Dot {\n   name Dot13\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 1133\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur6\n   xpos 362\n   ypos 1192\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult6\n   xpos 362\n   ypos 1230\n  }\npush $N9596430\n  Merge2 {\n   inputs 2\n   operation under\n   bbox B\n   name Merge6\n   xpos 185\n   ypos 1230\n   disable {{parent.samples<6}}\n  }\n  Dot {\n   name Dot14\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 1335\n  }\nset Nceef380 [stack 0]\n  Dot {\n   name Dot15\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 1335\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur7\n   xpos 362\n   ypos 1394\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult7\n   xpos 362\n   ypos 1432\n  }\npush $Nceef380\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge7\n   xpos 185\n   ypos 1432\n   disable {{parent.samples<7}}\n  }\n  Dot {\n   name Dot16\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 1537\n  }\nset Ne283e90 [stack 0]\n  Dot {\n   name Dot17\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 1537\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur8\n   xpos 362\n   ypos 1596\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult8\n   xpos 362\n   ypos 1634\n  }\npush $Ne283e90\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge8\n   xpos 185\n   ypos 1634\n   disable {{parent.samples<8}}\n  }\n  Dot {\n   name Dot18\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 1739\n  }\nset Nbca093e0 [stack 0]\n  Dot {\n   name Dot19\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 1739\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur9\n   xpos 362\n   ypos 1798\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult9\n   xpos 362\n   ypos 1836\n  }\npush $Nbca093e0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge9\n   xpos 185\n   ypos 1836\n   disable {{parent.samples<9}}\n  }\n  Dot {\n   name Dot20\n   tile_color 0x4b5ec600\n   xpos 219\n   ypos 1941\n  }\nset N3c24b210 [stack 0]\n  Dot {\n   name Dot21\n   tile_color 0x4b5ec600\n   xpos 396\n   ypos 1943\n  }\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur10\n   xpos 362\n   ypos 2000\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult10\n   xpos 362\n   ypos 2038\n  }\npush $N3c24b210\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge10\n   xpos 185\n   ypos 2038\n   disable {{parent.samples<10}}\n  }\n  Output {\n   name Output1\n   xpos 185\n   ypos 2281\n  }\n end_group\n Dot {\n  name Dot10\n  tile_color 0xcccccc00\n  xpos -9\n  ypos 216\n }\npush $N94727c0\n Group {\n  name Dilate\n  xpos -175\n  ypos 152\n  addUserKnob {20 User}\n  addUserKnob {14 size R 0 100}\n  size {{parent.size_extend} {parent.size_extend}}\n  addUserKnob {3 samples}\n  samples {{parent.samples}}\n  addUserKnob {7 blending}\n  blending 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 threshold t \"Used to eliminate ugly edges due to small precision error.\" R 0 0.001}\n  threshold 0.0001\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n   ypos -3\n  }\n  Clamp {\n   channels alpha\n   name Clamp1\n   xpos 0\n   ypos 48\n  }\n  Dot {\n   name Dot3\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 123\n  }\nset Nbc9dec30 [stack 0]\n  Dot {\n   name Dot22\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 323\n  }\nset Nbc9b8270 [stack 0]\n  Dot {\n   name Dot23\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 525\n  }\nset Nbc746e00 [stack 0]\n  Dot {\n   name Dot24\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 727\n  }\nset Ne2bd260 [stack 0]\n  Dot {\n   name Dot10\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 931\n  }\nset Nbc84f950 [stack 0]\n  Dot {\n   name Dot12\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 1133\n  }\nset Naa693c0 [stack 0]\n  Dot {\n   name Dot14\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 1333\n  }\nset Nc5e8220 [stack 0]\n  Dot {\n   name Dot16\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 1535\n  }\nset Nd7e8470 [stack 0]\n  Dot {\n   name Dot18\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 1737\n  }\nset Nbc8e6bf0 [stack 0]\n  Dot {\n   name Dot20\n   tile_color 0x7aa9ff00\n   xpos 34\n   ypos 1941\n  }\n  Dot {\n   name Dot21\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 1941\n  }\n  Blur {\n   size {{parent.size/parent.samples*10} {parent.size/parent.samples*10}}\n   name Blur10\n   xpos 209\n   ypos 1998\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult10\n   xpos 209\n   ypos 2036\n  }\npush $Nbc8e6bf0\n  Dot {\n   name Dot19\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 1737\n  }\n  Blur {\n   size {{parent.size/parent.samples*9} {parent.size/parent.samples*9}}\n   name Blur9\n   xpos 209\n   ypos 1796\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult9\n   xpos 209\n   ypos 1834\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode3\n   xpos 209\n   ypos 1860\n  }\n  Premult {\n   name Premult9\n   xpos 209\n   ypos 1898\n  }\npush $Nd7e8470\n  Dot {\n   name Dot17\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 1535\n  }\n  Blur {\n   size {{parent.size/parent.samples*8} {parent.size/parent.samples*8}}\n   name Blur8\n   xpos 209\n   ypos 1594\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult8\n   xpos 209\n   ypos 1632\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode4\n   xpos 209\n   ypos 1658\n  }\n  Premult {\n   name Premult8\n   xpos 209\n   ypos 1696\n  }\npush $Nc5e8220\n  Dot {\n   name Dot15\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 1333\n  }\n  Blur {\n   size {{parent.size/parent.samples*7} {parent.size/parent.samples*7}}\n   name Blur7\n   xpos 209\n   ypos 1392\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult7\n   xpos 209\n   ypos 1430\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode5\n   xpos 209\n   ypos 1456\n  }\n  Premult {\n   name Premult7\n   xpos 209\n   ypos 1494\n  }\npush $Naa693c0\n  Dot {\n   name Dot13\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 1133\n  }\n  Blur {\n   size {{parent.size/parent.samples*6} {parent.size/parent.samples*6}}\n   name Blur6\n   xpos 209\n   ypos 1190\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult6\n   xpos 209\n   ypos 1228\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode6\n   xpos 209\n   ypos 1254\n  }\n  Premult {\n   name Premult6\n   xpos 209\n   ypos 1292\n  }\npush $Nbc84f950\n  Dot {\n   name Dot11\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 931\n  }\n  Blur {\n   size {{parent.size/parent.samples*5} {parent.size/parent.samples*5}}\n   name Blur5\n   xpos 209\n   ypos 988\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult5\n   xpos 209\n   ypos 1026\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode7\n   xpos 209\n   ypos 1052\n  }\n  Premult {\n   name Premult5\n   xpos 209\n   ypos 1090\n  }\npush $Ne2bd260\n  Dot {\n   name Dot9\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 729\n  }\n  Blur {\n   size {{parent.size/parent.samples*4} {parent.size/parent.samples*4}}\n   name Blur4\n   xpos 209\n   ypos 788\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult4\n   xpos 209\n   ypos 826\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode8\n   xpos 209\n   ypos 852\n  }\n  Premult {\n   name Premult4\n   xpos 209\n   ypos 890\n  }\npush $Nbc746e00\n  Dot {\n   name Dot7\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 527\n  }\n  Blur {\n   size {{parent.size/parent.samples*3} {parent.size/parent.samples*3}}\n   name Blur3\n   xpos 209\n   ypos 586\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult3\n   xpos 209\n   ypos 624\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode9\n   xpos 209\n   ypos 650\n  }\n  Premult {\n   name Premult3\n   xpos 209\n   ypos 688\n  }\npush $Nbc9b8270\n  Dot {\n   name Dot5\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 325\n  }\n  Blur {\n   size {{parent.size/parent.samples*2} {parent.size/parent.samples*2}}\n   name Blur2\n   xpos 209\n   ypos 384\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult2\n   xpos 209\n   ypos 422\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode10\n   xpos 209\n   ypos 448\n  }\n  Premult {\n   name Premult2\n   xpos 209\n   ypos 486\n  }\npush $Nbc9dec30\n  Dot {\n   name Dot25\n   tile_color 0x7aa9ff00\n   xpos 243\n   ypos 123\n  }\nset Nc5f24c0 [stack 0]\n  Blur {\n   size {{parent.size/parent.samples} {parent.size/parent.samples}}\n   name Blur1\n   xpos 209\n   ypos 187\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult1\n   xpos 209\n   ypos 225\n  }\n  FilterErode {\n   size {{(parent.size/parent.samples)*parent.blending} {(parent.size/parent.samples)*parent.blending}}\n   filter gaussian\n   name FilterErode1\n   xpos 209\n   ypos 251\n  }\n  Premult {\n   name Premult1\n   xpos 209\n   ypos 289\n  }\npush $Nc5f24c0\n  Dot {\n   name Dot1\n   tile_color 0x7aa9ff00\n   xpos 434\n   ypos 123\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge1\n   xpos 400\n   ypos 289\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge2\n   xpos 400\n   ypos 486\n   disable {{parent.samples<2}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge3\n   xpos 400\n   ypos 688\n   disable {{parent.samples<3}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge4\n   xpos 400\n   ypos 890\n   disable {{parent.samples<4}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge5\n   xpos 400\n   ypos 1090\n   disable {{parent.samples<5}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge6\n   xpos 400\n   ypos 1292\n   disable {{parent.samples<6}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge7\n   xpos 400\n   ypos 1494\n   disable {{parent.samples<7}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge8\n   xpos 400\n   ypos 1696\n   disable {{parent.samples<8}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge9\n   xpos 400\n   ypos 1898\n   disable {{parent.samples<9}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge10\n   xpos 400\n   ypos 2036\n   disable {{parent.samples<10}}\n  }\n  Expression {\n   temp_name0 tres\n   temp_expr0 parent.threshold\n   expr0 a>tres?r/a:r\n   expr1 a>tres?g/a:g\n   expr2 a>tres?b/a:b\n   expr3 a>tres?a/a:0\n   name All_unpremult11\n   selected true\n   xpos 400\n   ypos 2062\n  }\n  Output {\n   name Output1\n   xpos 400\n   ypos 2120\n  }\n end_group\n Switch {\n  inputs 4\n  which {{parent.method}}\n  name Switch1\n  xpos -175\n  ypos 296\n }\n Blur {\n  size {{parent.blur} {parent.blur}}\n  name Blur1\n  xpos -175\n  ypos 410\n  disable {{parent.method==3}}\n }\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge1\n  xpos -175\n  ypos 557\n  disable {{parent.method==3}}\n }\n Dot {\n  name Dot26\n  tile_color 0x4b5ec600\n  xpos -141\n  ypos 747\n }\nset N175d7d90 [stack 0]\npush $Nceed720\n Dot {\n  name Dot19\n  tile_color 0x9e3c6300\n  xpos -489\n  ypos 641\n }\n Unpremult {\n  name Unpremult1\n  xpos -523\n  ypos 666\n  disable {{!parent.in_premult}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -523\n  ypos 743\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace1\n  label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n  xpos -523\n  ypos 820\n }\n Dot {\n  name Dot21\n  tile_color 0xcccccc00\n  xpos -489\n  ypos 884\n }\nset N7ffeedc0 [stack 0]\n Dot {\n  name Dot22\n  tile_color 0xcccccc00\n  xpos -489\n  ypos 953\n }\npush $N7ffeedc0\npush $N175d7d90\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace3\n  label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n  xpos -175\n  ypos 796\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  bbox B\n  mix {{1-parent.mix_luma}}\n  name Copy2\n  xpos -175\n  ypos 874\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.green\n  from1 rgba.blue\n  to1 rgba.blue\n  bbox B\n  mix {{1-parent.mix_chroma}}\n  name Copy3\n  xpos -175\n  ypos 937\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace2\n  label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n  xpos -175\n  ypos 994\n }\n Dot {\n  name Dot17\n  tile_color 0xcccccc00\n  xpos -141\n  ypos 1151\n }\nset N8d701ec0 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox A\n  name Copy1\n  xpos -327\n  ypos 1141\n }\n Premult {\n  name Premult1\n  xpos -327\n  ypos 1179\n }\n Dot {\n  name Dot18\n  tile_color 0xcccccc00\n  xpos -293\n  ypos 1249\n }\npush $N8d701ec0\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch2\n  xpos -175\n  ypos 1245\n }\n Keymix {\n  inputs 3\n  channels rgba\n  invertMask true\n  name Keymix1\n  xpos -175\n  ypos 1325\n  disable {{\"!\\[exists parent.input1] \"}}\n }\n Dot {\n  name Dot25\n  tile_color 0x4b5ec600\n  xpos -141\n  ypos 1421\n }\npush $Nc5922f0\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.green\n  to1 rgba.green\n  from2 rgba.blue\n  to2 rgba.blue\n  bbox A\n  name Copy4\n  xpos -646\n  ypos 1393\n  disable {{\"!\\[exists parent.input0] \"}}\n }\nset Nbc7870e0 [stack 0]\n Output {\n  name Output1\n  xpos -646\n  ypos 1525\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge_RimLight.gizmo",
    "content": "Group {\n name Edge_RimLight\n autolabel nuke.thisNode().name()\n tile_color 0xff6e00ff\n note_font \"Verdana Bold Bold\"\n note_font_size 11\n addUserKnob {20 RimLight}\n addUserKnob {41 channels T MatrixSUPER.channels}\n addUserKnob {41 which l rotate T Switch1.which}\n addUserKnob {26 \"\"}\n addUserKnob {20 matrix_1 l Matrix n 1}\n addUserKnob {41 matrix T MatrixSUPER.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 parameters l Parameters n 1}\n parameters 0\n addUserKnob {41 size l innerEdgeErode T FilterErode_inner.size}\n addUserKnob {41 filter -STARTLINE T FilterErode_inner.filter}\n addUserKnob {41 size_1 l innerEdgeBlur T Blur_inner.size}\n addUserKnob {26 \"\"}\n addUserKnob {6 keep_alpha l \"keep original alpha\" +STARTLINE}\n addUserKnob {41 size_2 l \"alpha Erode\" T FilterErode_alpha.size}\n addUserKnob {41 filter_1 l filter -STARTLINE T FilterErode_alpha.filter}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 email l @}\n addUserKnob {26 created l \"\" +STARTLINE T \"Tool created by Andrea Geremia\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"andrea.geremia89@gmail.com\\nwww.andreageremia.it/tutorial.html\"}\n}\n Dot {\n  inputs 0\n  name Dot16\n  xpos 303\n  ypos -114\n }\nset N19b730 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {-1 0 1}\n      {-1 -1 0}\n    }\n  name Matrix15\n  xpos 269\n  ypos -1\n }\npush $N19b730\n Dot {\n  name Dot1\n  xpos 170\n  ypos -114\n }\nset N1a2700 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {-1 0 1}\n      {-1 -1 -1}\n    }\n  name Matrix14\n  xpos 136\n  ypos -2\n }\npush $N1a2700\n Dot {\n  name Dot14\n  xpos 40\n  ypos -114\n }\nset N1a9f80 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {0 0 0}\n      {-1 -1 -1}\n    }\n  name Matrix13\n  xpos 6\n  ypos -2\n }\npush $N1a9f80\n Dot {\n  name Dot13\n  xpos -106\n  ypos -114\n }\nset N1b1720 [stack 0]\n Matrix {\n  matrix {\n      {1 1 1}\n      {1 0 -1}\n      {-1 -1 -1}\n    }\n  name Matrix12\n  xpos -140\n }\npush $N1b1720\n Dot {\n  name Dot12\n  xpos -240\n  ypos -114\n }\nset N1b8ec0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 0 -1}\n      {0 -1 -1}\n    }\n  name Matrix11\n  xpos -274\n  ypos -2\n }\npush $N1b8ec0\n Dot {\n  name Dot11\n  xpos -391\n  ypos -114\n }\nset N1c0660 [stack 0]\n Matrix {\n  matrix {\n      {1 1 -1}\n      {0 0 0}\n      {1 -1 -1}\n    }\n  name Matrix10\n  xpos -425\n  ypos -2\n }\npush $N1c0660\n Dot {\n  name Dot10\n  xpos -523\n  ypos -114\n }\nset N1c7e00 [stack 0]\n Matrix {\n  matrix {\n      {1 1 -1}\n      {1 0 -1}\n      {1 -1 -1}\n    }\n  name Matrix9\n  xpos -557\n  ypos -5\n }\npush $N1c7e00\n Dot {\n  name Dot9\n  xpos -672\n  ypos -114\n }\nset N184e00 [stack 0]\n Matrix {\n  matrix {\n      {1 0 -1}\n      {1 0 -1}\n      {1 0 -1}\n    }\n  name Matrix8\n  xpos -706\n  ypos -2\n }\npush $N184e00\n Dot {\n  name Dot8\n  xpos -812\n  ypos -114\n }\nset N177c70 [stack 0]\n Matrix {\n  matrix {\n      {1 -1 -1}\n      {1 0 -1}\n      {1 1 -1}\n    }\n  name Matrix7\n  xpos -846\n  ypos -2\n }\npush $N177c70\n Dot {\n  name Dot15\n  xpos -917\n  ypos -114\n }\nset N118830 [stack 0]\n Matrix {\n  matrix {\n      {0 -1 -1}\n      {1 0 -1}\n      {1 1 0}\n    }\n  name Matrix6\n  xpos -951\n  ypos -3\n }\npush $N118830\n Dot {\n  name Dot7\n  xpos -1023\n  ypos -114\n }\nset N1d0b80 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {1 0 -1}\n      {1 1 1}\n    }\n  name Matrix5\n  xpos -1057\n  ypos -2\n }\npush $N1d0b80\n Dot {\n  name Dot6\n  xpos -1133\n  ypos -114\n }\nset N1d81e0 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {0 0 0}\n      {1 1 1}\n    }\n  name Matrix4\n  xpos -1167\n  ypos -3\n }\npush $N1d81e0\n Dot {\n  name Dot5\n  xpos -1254\n  ypos -114\n }\nset N1dfc00 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 -1}\n      {-1 0 1}\n      {1 1 1}\n    }\n  name Matrix3\n  xpos -1288\n  ypos -3\n }\npush $N1dfc00\n Dot {\n  name Dot4\n  xpos -1375\n  ypos -114\n }\nset N1eb2e0 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 0}\n      {-1 0 1}\n      {0 1 1}\n    }\n  name Matrix2\n  xpos -1409\n  ypos -2\n }\npush $N1eb2e0\n Dot {\n  name Dot3\n  xpos -1491\n  ypos -114\n }\nset N1688b0 [stack 0]\n Matrix {\n  matrix {\n      {-1 -1 1}\n      {-1 0 1}\n      {-1 1 1}\n    }\n  name Matrix1\n  xpos -1525\n  ypos -2\n }\npush $N1688b0\n Dot {\n  name Dot2\n  xpos -1624\n  ypos -114\n }\n Matrix {\n  matrix {\n      {-1 0 1}\n      {-1 0 1}\n      {-1 0 1}\n    }\n  name Matrix0\n  xpos -1658\n  ypos -2\n }\n Switch {\n  inputs 16\n  name Switch1\n  xpos -706\n  ypos 288\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 332\n  ypos 170\n }\n Dot {\n  name Dot18\n  xpos 366\n  ypos 217\n }\nset N1f7bf0 [stack 0]\n Dot {\n  name Dot19\n  xpos 539\n  ypos 217\n }\n FilterErode {\n  channels all\n  size 0\n  name FilterErode_alpha\n  xpos 505\n  ypos 363\n }\n Dot {\n  name Dot17\n  xpos 539\n  ypos 554\n }\npush $N1f7bf0\n Matrix {\n  channels rgba\n  matrix {\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(0,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(1,2)]\"}}\n      {{\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,0)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,1)]\"} {\"\\[python nuke.toNode('Matrix'\\\\ +\\\\nstr(int(nuke.toNode('Switch1').knob('which').value()))).knob('matrix').value(2,2)]\"}}\n    }\n  name MatrixSUPER\n  selected true\n  xpos 332\n  ypos 274\n }\n FilterErode {\n  channels {{{parent.MatrixSUPER.channels}}}\n  size 0\n  name FilterErode_inner\n  xpos 332\n  ypos 391\n }\n Blur {\n  channels {{{parent.MatrixSUPER.channels}}}\n  quality 30\n  name Blur_inner\n  xpos 332\n  ypos 478\n }\n Merge2 {\n  inputs 2\n  operation in\n  name Merge2\n  xpos 332\n  ypos 551\n  disable {{!parent.keep_alpha}}\n }\n Output {\n  name Output1\n  xpos 332\n  ypos 690\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Emission.gizmo",
    "content": "Group {\n name Emission\n knobChanged \"def add_input(group, prefix):\\n    with group:\\n        fullname = group.fullName() + '.' + prefix\\n        if not nuke.exists(fullname):\\n            input = nuke.nodes.Input()\\n            input.setName(prefix)\\n            noop_input = nuke.toNode(prefix+'_input')\\n            noop_input.setInput(0, input)\\n            xpos = noop_input.xpos()\\n            ypos = noop_input.ypos()\\n            input.setXYpos(xpos, ypos-50)\\n\\ndef remove_input(group, prefix):\\n    fullname = group.fullName() + '.' + prefix\\n    if nuke.exists(fullname):\\n        nuke.delete(nuke.toNode(fullname))\\n\\n\\ngroup = nuke.thisNode() #the node\\nk = nuke.thisKnob() #the knob\\nkn = k.name() #the knob name\\n\\nif kn == 'inputChange':\\n    if group.input(2):\\n        group.knob('maskChannelMask').setValue('rgba.alpha')\\n    else:\\n        group.knob('maskChannelMask').setValue('none')\\n    \\nelif kn in \\['env_method','light_method', 'showPanel']:\\n    env_method = group\\['env_method'].getValue()\\n    light_method = group\\['light_method'].getValue()\\n    \\n    #env method\\n    if env_method == 0: #P\\n        for knob in \\['env_P_label', 'env_P', 'env_P_unpremult']:\\n            group\\[knob].setEnabled(True)\\n        for knob in \\['env_Z_label', 'env_Z', 'env_Z_invert', 'env_Z_unpremult']:\\n            group\\[knob].setEnabled(False)\\n            \\n        \\n    elif env_method == 1: #Z and cam\\n        for knob in \\['env_P_label', 'env_P', 'env_P_unpremult']:\\n            group\\[knob].setEnabled(False)\\n        for knob in \\['env_Z_label', 'env_Z', 'env_Z_invert', 'env_Z_unpremult']:\\n            group\\[knob].setEnabled(True)\\n    \\n    \\n    #light method\\n    if light_method == 0: #P and Z\\n        for knob in \\['light_P_label', 'light_P', 'light_P_unpremult', 'light_Z_label', 'light_Z', 'light_Z_invert', 'light_Z_unpremult', 'light_color_label', 'light_color', 'light_color_premult']:\\n            group\\[knob].setEnabled(True)\\n            \\n    elif light_method == 1: #P and cam\\n        for knob in \\['light_P_label', 'light_P', 'light_P_unpremult', 'light_color_label', 'light_color', 'light_color_premult']:\\n            group\\[knob].setEnabled(True)\\n        for knob in \\['light_Z_label', 'light_Z', 'light_Z_invert', 'light_Z_unpremult']:\\n            group\\[knob].setEnabled(False)\\n    \\n    elif light_method == 2: #Z and cam\\n        for knob in \\['light_P_label', 'light_P', 'light_P_unpremult']:\\n            group\\[knob].setEnabled(False)\\n        for knob in \\['light_Z_label', 'light_Z', 'light_Z_invert', 'light_Z_unpremult', 'light_color_label', 'light_color', 'light_color_premult']:\\n            group\\[knob].setEnabled(True)\\n            \\n    if env_method == 1 or light_method == 1 or light_method == 2:\\n        add_input(group, 'cam')\\n    else:\\n        remove_input(group, 'cam')     \\n    \\n\\n\\n\"\n tile_color 0xc0ffff\n label v1.2\n selected true\n addUserKnob {20 User l Emission}\n addUserKnob {26 description l \"\" +STARTLINE T \"<b><font color=\\\"#00AAFF\\\">Emission</font> v1.2</b><br>\\n<font color=\\\"#888\\\" size=\\\"2\\\">by Nikolai Wüstemann</font><br><br>\\n\\nRelight the environment input with the light source input. <br>\\nBoth inputs should be CG render elements.\\n<br>\\n\"}\n addUserKnob {26 div1 l \"<b><font color=\\\"#00AAFF\\\">Environment</font></b>\"}\n addUserKnob {26 env_method_label l \"I have\" T <i>}\n addUserKnob {4 env_method l \"\" -STARTLINE M {PWorld \"ZDepth and Camera\" \"\" \"\" \"\"}}\n addUserKnob {26 env_P_label l PWorld T <i>}\n addUserKnob {41 env_P l \"\" -STARTLINE T Shuffle_env_P.in}\n addUserKnob {6 env_P_unpremult l unpremult -STARTLINE}\n addUserKnob {26 env_Z_label l ZDepth +DISABLED T <i>}\n addUserKnob {41 env_Z l \"\" -STARTLINE T DepthToPosition_env.depth}\n addUserKnob {6 env_Z_invert l 1/z t \"The ZDepth must be converted to the distance from camera at some point. Check this, if your input comes from the Nuke ScanlineRenderer.\" -STARTLINE +DISABLED}\n env_Z_invert true\n addUserKnob {6 env_Z_unpremult l unpremult t \"The ZDepth needs to be unpremultiplied at some point, if it comes premultiplied from the renderer.\" -STARTLINE +DISABLED}\n addUserKnob {26 spacer_01 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 env_N_label l Normals T <i>}\n addUserKnob {41 env_N l \"\" -STARTLINE T Shuffle_env_N.in}\n addUserKnob {6 env_N_unpremult l unpremult -STARTLINE}\n addUserKnob {6 env_bg l \"replace background with black\" +STARTLINE}\n env_bg true\n addUserKnob {26 spacer l \" \" T \"\"}\n addUserKnob {26 div2 l \"<b><font color=\\\"#00AAFF\\\">Light Source</font></b>\"}\n addUserKnob {26 lightSource_method_label l \"I have\" T <i>}\n addUserKnob {4 light_method l \"\" -STARTLINE M {\"PWorld and ZDepth\" \"PWorld and Camera\" \"ZDepth and Camera\"}}\n addUserKnob {26 light_P_label l PWorld T <i>}\n addUserKnob {41 light_P l \"\" -STARTLINE T Shuffle_light_P.in}\n addUserKnob {6 light_P_unpremult l unpremult t \"The PWorld needs to be unpremultiplied at some point, if it comes premultiplied from the renderer.\" -STARTLINE}\n addUserKnob {26 light_Z_label l ZDepth T <i>}\n addUserKnob {41 light_Z l \"\" -STARTLINE T DepthToPosition_light.depth}\n addUserKnob {6 light_Z_invert l 1/z -STARTLINE}\n light_Z_invert true\n addUserKnob {6 light_Z_unpremult l unpremult -STARTLINE}\n addUserKnob {26 spacer_02 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 light_color_label l Color T <i>}\n addUserKnob {41 light_color l \"\" -STARTLINE T Shuffle_light_Color.in}\n addUserKnob {6 light_color_premult l \"premult   \" t \"The light source color must be premultiplied with its alpha at some point. As objects are moving away from the camera, they occupy less and less screen space and their appearance might be merely defined by anti-aliased and/or semi-transparent pixels. We need to preserve these values, because they give us crucial information about the light source intensity and can then be correctly interpreted in combination with the PWorld pass and the camera position.\" -STARTLINE}\n addUserKnob {26 divider_01 l \" \"}\n addUserKnob {3 maxSamples l \"Max. Samples\" t \"More samples = longer rendering time\"}\n maxSamples 1000\n addUserKnob {6 useMaxSamples l use? -STARTLINE}\n useMaxSamples true\n addUserKnob {7 intensity l Intensity R 0 10}\n intensity 1\n addUserKnob {4 falloff l Falloff M {Linear Quadratic Cubic}}\n falloff Quadratic\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelMask l \"\" -STARTLINE T Merge_MaskMix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge_MaskMix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge_MaskMix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge_MaskMix.fringe}\n addUserKnob {41 mix T Merge_MaskMix.mix}\n}\n Input {\n  inputs 0\n  name mask\n  xpos -1337\n  ypos -429\n  number 2\n }\n Dot {\n  name Dot32\n  xpos -1303\n  ypos 1975\n }\n Input {\n  inputs 0\n  name environment\n  xpos -1086\n  ypos -428\n }\n Dot {\n  name Dot24\n  xpos -1052\n  ypos 202\n }\nset N551e400 [stack 0]\n Dot {\n  name Dot13\n  xpos -1052\n  ypos 662\n }\nset N551e800 [stack 0]\n Dot {\n  name Dot1\n  xpos -1052\n  ypos 1557\n }\nset N551ec00 [stack 0]\n Shuffle2 {\n  fromInput1 {{0} B}\n  fromInput2 {{0} B}\n  mappings \"4 black -1 -1 rgba.red 0 0 black -1 -1 rgba.green 0 1 black -1 -1 rgba.blue 0 2 rgba.alpha 0 3 rgba.alpha 0 3\"\n  name Shuffle_BlackBG\n  xpos -1086\n  ypos 1801\n  disable {{!parent.env_bg}}\n }\nset N551f000 [stack 0]\npush $N551ec00\n NoOp {\n  inputs 0\n  name cam_input\n  xpos -203\n  ypos -313\n }\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {{\"\\[expression \\[value the_cam]far(\\[value the_frame])]\"}}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label v1.3\n  xpos -193\n  ypos -138\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\n Dot {\n  name Dot12\n  xpos -169\n  ypos 355\n }\nset N551fc00 [stack 0]\n Input {\n  inputs 0\n  name light_source\n  xpos 882\n  ypos -447\n  number 1\n }\n Dot {\n  name Dot5\n  xpos 916\n  ypos -334\n }\nset N27a94400 [stack 0]\n Shuffle {\n  in rgb\n  in2 alpha\n  alpha red2\n  name Shuffle_light_Color\n  label \"\\[value in]\"\n  xpos 1021\n  ypos -343\n }\n set C27a94800 [stack 0]\n Expression {\n  expr0 0\n  expr1 0\n  expr2 0\n  channel3 alpha\n  expr3 \"r>0||g>0||b>0 ? 1 : 0\"\n  name Expression1\n  xpos 1021\n  ypos -239\n }\npush $N27a94400\nadd_layer {PixelGatherMetadata PixelGatherMetadata.red PixelGatherMetadata.green PixelGatherMetadata.blue PixelGatherMetadata.alpha}\nadd_layer {PixelGatherMask PixelGatherMask.alpha}\n Group {\n  inputs 2\n  name PixelGather\n  xpos 882\n  ypos -245\n  addUserKnob {20 User l PixelGather}\n  addUserKnob {26 description l \"\" +STARTLINE T \"<b>PixelGather v1.1</b> by Nikolai Wüstemann<br><br>\\n\\nUtility to collect all input pixels next to each other.<br>\\nUse the mask input to specify the pixels that should be gathered.<br> \\n(Any pixel with alpha value > 0 in the mask input will be fully considered.)<br>\"}\n  addUserKnob {41 channels T STMap_PixelGather.channels}\n  addUserKnob {3 maxPoints l \"max points\" t \"Specify the maximum amount of points you want to have left. If this number is lower than the total amount of points, the input willl be downscaled accordingly. \\nNote, that the specified number will not precisely match the final amount of points, because we don't know the exact number of the points that we are left with after the downsampling stage. There might even be scenarios, where downsampling introduces MORE points than before because of the cubic filtering in the scaling process.\"}\n  maxPoints {{parent.maxSamples}}\n  addUserKnob {6 useMaxPoints l use? -STARTLINE}\n  useMaxPoints {{parent.useMaxSamples}}\n  addUserKnob {4 outputFormat l arrangement t \"Change the arrangement of the output.\\n\\nunchanged:\\nDo not gather the pixels, but return original image (downscaled if applicable)\\n\\nin bbox:\\nThe gathered pixels will be arranged in the bounding box, starting at the lower left.\\n\\nsquare:\\nThe gathered pixels will be arranged in a way so that they approximate a square.\" M {unchanged \"in bbox\" square \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n  outputFormat \"in bbox\"\n  addUserKnob {6 cropBBox l \"crop to bbox\" t \"Side note: Unfortunately there is no (stable) way to crop the output to the actual CONTENT instead of just the bounding box, which would simplify a lot of things.\" -STARTLINE}\n  addUserKnob {41 gatherMetadata l \"output metadata\" T ShuffleCopy3.out2}\n  addUserKnob {6 writeMetadata l \"write metadata layer\" -STARTLINE}\n  writeMetadata true\n  addUserKnob {41 gatherMask l \"output mask\" T ShuffleCopy4.out2}\n  addUserKnob {6 writeMask l \"write mask layer\" -STARTLINE}\n  writeMask true\n  addUserKnob {20 info l Info}\n  addUserKnob {26 metadataInfo l \"\" +STARTLINE T \"<br>\\nThe <b><font color=\\\"#d00\\\">R</font><font color=\\\"#0c0\\\">G</font><font color=\\\"#06f\\\">B</font>A</b> channels of the PixelGatherMetadata-Layer contain the following information:<br>\\nthe iteration space in x or <font color=\\\"#d00\\\"><b>width of content</b></font>,<br> \\nand the iteration space in y or <font color=\\\"#0c0\\\"><b>height of content</b></font>,<br> \\nhow many pixels were <font color=\\\"#06f\\\"><b>found in total</b></font>,<br> \\nand how many pixels <b>were gathered</b>.<br>\\n<br>\\nThe <b>Alpha</b> channel of the PixelGatherMask-Layer contains the information<br>\\nhow the downscaling (if max samples was used) affected the binary nature of the samples.<br>\\nUse this channel, to unpremult any layer that came in unpremulted before and needs to stay that way.\"}\n }\n  Input {\n   inputs 0\n   name mask\n   xpos 353\n   ypos -182\n   number 1\n  }\n  Dot {\n   name Dot11\n   xpos 387\n   ypos -45\n  }\nset N27a95400 [stack 0]\n  Dot {\n   name Dot7\n   xpos 387\n   ypos 132\n  }\npush $N27a95400\n  Input {\n   inputs 0\n   name src\n   xpos 0\n   ypos -181\n  }\n  Crop {\n   box {{bbox.x} {bbox.y} {\"max(bbox.x+3, bbox.r)\"} {bbox.t}}\n   crop false\n   name Crop3\n   xpos 0\n   ypos -108\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 PixelGatherMask.alpha\n   name Copy1\n   xpos 0\n   ypos -54\n  }\n  Dot {\n   name Dot5\n   xpos 34\n   ypos 21\n  }\nset N2030c800 [stack 0]\n  Remove {\n   name Remove1\n   xpos 156\n   ypos 12\n  }\n  Shuffle {\n   red black\n   green black\n   blue black\n   alpha white\n   name Shuffle2\n   label \"\\[value in]\"\n   xpos 156\n   ypos 69\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   name Merge1\n   xpos 156\n   ypos 129\n   addUserKnob {20 TRX}\n   addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n  }\n  Dot {\n   name Dot9\n   xpos 190\n   ypos 187\n  }\nset N2030d800 [stack 0]\npush $N2030c800\n  BlinkScript {\n   inputs 2\n   recompileCount 165\n   ProgramGroup 1\n   KernelDescription \"2 \\\"CountKernel\\\" iterate pixelWise 7518f6cec91f8fe0a69225e2a35dcf97a15425f0bb8b87dc77592bc1138a794f 3 \\\"src\\\" Read Random \\\"mask\\\" Read Random \\\"dst\\\" Write Random 2 \\\"maxPoints\\\" Int 1 AAAAAA== \\\"useMaxPoints\\\" Int 1 AAAAAA== 2 \\\"maxPoints\\\" 1 1 \\\"useMaxPoints\\\" 1 1 2 \\\"srcconstEdgeColor\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"maskconstEdgeColor\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n   kernelSource \"kernel CountKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessRandom, eEdgeConstant> src;\\n  Image<eRead, eAccessRandom, eEdgeConstant> mask;\\n  Image<eWrite, eAccessRandom> dst;\\n\\n  param:\\n    int maxPoints;\\n    int useMaxPoints;\\n\\n  void process(int2 pos)\\{\\n    if(pos.x == src.bounds.x1 && pos.y == src.bounds.y1)\\{\\n      int totalPoints = 0;\\n      \\n      for(int j = mask.bounds.y1; j < mask.bounds.y2; j++)\\{\\n        for(int i = mask.bounds.x1; i < mask.bounds.x2; i++)\\{\\n          if(mask(i,j,3) > 0)\\{\\n            //Count total amount of samples\\n            totalPoints++;\\n          \\}\\n        \\}\\n      \\}\\n      \\n      int actualPoints = totalPoints;\\n      if(useMaxPoints == 1)\\{\\n        actualPoints = min(totalPoints, maxPoints);\\n      \\}\\n\\n      float ratio = sqrt((float) actualPoints / totalPoints);\\n\\n      float s = 0.0f;\\n      float t = 0.0f;\\n      int x = 0;\\n      int y = 0;\\n\\n      for(int j = 0; j < src.bounds.height(); j++)\\{\\n        for(int i = 0; i < src.bounds.width(); i++)\\{\\n          s = i / ratio + src.bounds.x1 + 0.5;\\n          t = j / ratio + src.bounds.y1 + 0.5;\\n\\n          x = src.bounds.x1 + i;\\n          y = src.bounds.y1 + j;\\n\\n          //Write STMap\\n          dst(x, y) = float4(s, t, 0, 0);\\n        \\}\\n      \\}\\n\\n      dst(pos.x, pos.y, 2) = ceil(src.bounds.width() * ratio);\\n      dst(pos.x, pos.y, 3) = ceil(src.bounds.height() * ratio);\\n      dst(pos.x+1, pos.y, 2) = totalPoints;\\n      dst(pos.x+1, pos.y, 3) = actualPoints;\\n    \\}\\n  \\}\\n\\};\"\n   rebuild \"\"\n   CountKernel_maxPoints {{parent.maxPoints}}\n   CountKernel_useMaxPoints {{parent.useMaxPoints}}\n   rebuild_finalise \"\"\n   name BlinkScript_PixelCount\n   xpos 0\n   ypos 178\n   disable {{\"type == 2 ? 0 : 1\"}}\n  }\nset N2030dc00 [stack 0]\n  Dot {\n   name Dot18\n   xpos -290\n   ypos 187\n  }\nset N19090000 [stack 0]\n  Dot {\n   name Dot19\n   xpos -290\n   ypos 431\n  }\npush $N19090000\n  Dot {\n   name Dot20\n   xpos -459\n   ypos 187\n  }\nset N19090800 [stack 0]\n  Crop {\n   box {{bbox.x+1} {bbox.y} {bbox.x+2} {bbox.y+1}}\n   crop false\n   name Crop5\n   xpos -427\n   ypos 272\n  }\npush $N19090800\n  Crop {\n   box {{bbox.x} {bbox.y} {bbox.x+1} {bbox.y+1}}\n   crop false\n   name Crop6\n   xpos -544\n   ypos 274\n  }\n  ShuffleCopy {\n   inputs 2\n   red blue2\n   green alpha2\n   blue blue\n   name ShuffleCopy5\n   xpos -490\n   ypos 352\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox2\n   xpos -490\n   ypos 428\n  }\n  Dot {\n   name Dot21\n   xpos -456\n   ypos 819\n  }\npush $N2030dc00\n  Expression {\n   expr0 r/width\n   expr1 g/height\n   expr2 b\n   name Expression_Normalize\n   xpos 0\n   ypos 256\n  }\nset Nc796000 [stack 0]\npush $N2030c800\n  Dot {\n   name Dot10\n   xpos -168\n   ypos 21\n  }\n  STMap {\n   inputs 2\n   uv rgb\n   name STMap_SuperSample\n   xpos -202\n   ypos 343\n  }\n  set Cc796800 [stack 0]\n  Dot {\n   name Dot16\n   xpos -168\n   ypos 600\n  }\nset Nc796c00 [stack 0]\n  Dot {\n   name Dot15\n   xpos -312\n   ypos 600\n  }\n  ShuffleCopy {\n   inputs 2\n   alpha alpha2\n   black red\n   white green\n   red2 blue\n   green2 alpha\n   out2 PixelGatherMetadata\n   name ShuffleCopy6\n   xpos -346\n   ypos 816\n   disable {{!parent.writeMetadata}}\n  }\n  Dot {\n   name Dot17\n   xpos -312\n   ypos 961\n  }\npush $Nc796000\npush $N2030d800\nclone $Cc796800 {\n   inputs 2\n   xpos 156\n   ypos 343\n   selected false\n  }\n  Dot {\n   name Dot3\n   xpos 190\n   ypos 404\n  }\npush $Nc796000\n  ShuffleCopy {\n   inputs 2\n   red blue2\n   green alpha2\n   blue black\n   name ShuffleCopy1\n   xpos 0\n   ypos 401\n  }\n  BlinkScript {\n   recompileCount 138\n   ProgramGroup 1\n   KernelDescription \"2 \\\"GatherKernel\\\" iterate pixelWise 2f170194aaef057db556e8c9979f665898ec64fb6d93b0ffc18531dfcc44db25 2 \\\"src\\\" Read Random \\\"dst\\\" Write Random 3 \\\"maxPoints\\\" Int 1 AAAAAA== \\\"useMaxPoints\\\" Int 1 AAAAAA== \\\"outputFormat\\\" Int 1 AAAAAA== 3 \\\"maxPoints\\\" 1 1 \\\"useMaxPoints\\\" 1 1 \\\"outputFormat\\\" 1 1 0\"\n   kernelSource \"kernel GatherKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eWrite, eAccessRandom> dst;\\n\\n  param:\\n    int maxPoints;\\n    int useMaxPoints;\\n    int outputFormat;\\n\\n  void process(int2 pos)\\{\\n    if(pos.x == src.bounds.x1 && pos.y == src.bounds.y1)\\{\\n      int2 searchStart = int2(src.bounds.x1, src.bounds.y1);\\n      int2 searchEnd = int2(src.bounds.x1 + (int)src(src.bounds.x1, src.bounds.y1, 0), src.bounds.y1 + (int)src(src.bounds.x1, src.bounds.y1, 1));\\n      int2 plotStart = int2(src.bounds.x1, src.bounds.y1);\\n      int2 plotEnd = int2(src.bounds.x2, src.bounds.y2);\\n\\n      if(outputFormat == 2)\\{\\n        int squareLength = (int)ceil(sqrt(src(src.bounds.x1 + 1, src.bounds.y1, 1)));\\n        plotEnd = int2(src.bounds.x1 + squareLength, src.bounds.y1 + squareLength);\\n      \\}\\n\\n      int actualPoints = 0;\\n      int s = 0;\\n      int t = 0;\\n      int x = plotStart.x;\\n      int y = plotStart.y;\\n\\n      for(int j = searchStart.y; j < searchEnd.y; j++)\\{\\n        for(int i = searchStart.x; i < searchEnd.x; i++)\\{\\n          if(src(i,j,3) > 0)\\{\\n            actualPoints++;\\n\\n            if(x > plotEnd.x)\\{\\n              x = plotStart.x;\\n              y++;\\n            \\}\\n            \\n            s = i + 0.5;\\n            t = j + 0.5;\\n            \\n            dst(x, y) = float4(s, t, 0, 0);\\n            x++;\\n          \\}\\n        \\}\\n      \\}\\n\\n      dst(pos.x, pos.y, 2) = plotEnd.x - plotStart.x;\\n      dst(pos.x, pos.y, 3) = y - plotStart.y + 1;\\n      dst(pos.x+1, pos.y, 2) = src(src.bounds.x1+1, src.bounds.y1, 0);\\n      dst(pos.x+1, pos.y, 3) = actualPoints;\\n    \\}\\n  \\}\\n\\};\"\n   rebuild \"\"\n   GatherKernel_maxPoints {{parent.maxPoints}}\n   GatherKernel_useMaxPoints {{parent.useMaxPoints}}\n   GatherKernel_outputFormat {{parent.outputFormat}}\n   rebuild_finalise \"\"\n   name BlinkScript_PixelGather\n   xpos 0\n   ypos 480\n   disable {{\"type == 2 ? 0 : 1\"}}\n  }\nset N17ca800 [stack 0]\n  Dot {\n   name Dot6\n   xpos 190\n   ypos 489\n  }\nset N17cac00 [stack 0]\n  Dot {\n   name Dot8\n   xpos 190\n   ypos 733\n  }\npush $N17cac00\n  Dot {\n   name Dot4\n   xpos 356\n   ypos 489\n  }\nset N17cb400 [stack 0]\n  Crop {\n   box {{bbox.x+1} {bbox.y} {bbox.x+2} {bbox.y+1}}\n   crop false\n   name Crop4\n   xpos 388\n   ypos 574\n  }\npush $N17cb400\n  Crop {\n   box {{bbox.x} {bbox.y} {bbox.x+1} {bbox.y+1}}\n   crop false\n   name Crop1\n   xpos 271\n   ypos 576\n  }\n  ShuffleCopy {\n   inputs 2\n   red blue2\n   green alpha2\n   blue blue\n   name ShuffleCopy2\n   xpos 325\n   ypos 654\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 325\n   ypos 730\n  }\n  Dot {\n   name Dot2\n   xpos 359\n   ypos 818\n  }\npush $N17ca800\n  Expression {\n   expr0 r/width\n   expr1 g/height\n   name Expression3\n   xpos 0\n   ypos 619\n   disable {{\"parent.output == 1 ? 0 : 1\"}}\n  }\n  Dot {\n   name Dot1\n   xpos 34\n   ypos 728\n  }\npush $Nc796c00\n  STMap {\n   inputs 2\n   uv rgb\n   filter impulse\n   name STMap_PixelGather\n   xpos -202\n   ypos 719\n  }\n  ShuffleCopy {\n   inputs 2\n   alpha alpha2\n   black red\n   white green\n   red2 blue\n   green2 alpha\n   out2 PixelGatherMetadata\n   name ShuffleCopy3\n   xpos -202\n   ypos 815\n   disable {{!parent.writeMetadata}}\n  }\n  Switch {\n   inputs 2\n   which {{outputFormat==0?1:0}}\n   name Switch1\n   xpos -202\n   ypos 958\n  }\n  Dot {\n   name Dot13\n   xpos -168\n   ypos 1133\n  }\nset N17094000 [stack 0]\n  Dot {\n   name Dot14\n   xpos -45\n   ypos 1133\n  }\n  Dot {\n   name Dot12\n   xpos -45\n   ypos 1251\n  }\npush $N17094000\n  Remove {\n   channels PixelGatherMask\n   name Remove2\n   xpos -202\n   ypos 1178\n  }\n  ShuffleCopy {\n   inputs 2\n   in PixelGatherMask\n   alpha alpha2\n   black red\n   white green\n   red2 blue\n   green2 alpha\n   out2 PixelGatherMask\n   name ShuffleCopy4\n   xpos -202\n   ypos 1248\n   disable {{!parent.writeMaskLayer}}\n  }\n  Crop {\n   box {{bbox.x} {bbox.y} {bbox.r} {bbox.t}}\n   reformat true\n   crop false\n   name Crop2\n   xpos -202\n   ypos 1361\n   disable {{!parent.cropBBox}}\n  }\n  Output {\n   name Output1\n   xpos -202\n   ypos 1414\n  }\n end_group\n Dot {\n  name Dot3\n  xpos 916\n  ypos -80\n }\nset N17095c00 [stack 0]\n Dot {\n  name Dot16\n  xpos 526\n  ypos -80\n }\nset Nf1e1a000 [stack 0]\n Shuffle {\n  in PixelGatherMask\n  in2 alpha\n  name Shuffle_light_Color3\n  label \"\\[value in]\"\n  xpos 492\n  ypos -20\n }\n Dot {\n  name Dot19\n  xpos 526\n  ypos 176\n }\nset Nf1e1a800 [stack 0]\npush $N17095c00\n Dot {\n  name Dot6\n  xpos 916\n  ypos 112\n }\nset Nf1e1ac00 [stack 0]\n Unpremult {\n  channels all\n  name Unpremult_light_Z\n  xpos 756\n  ypos 103\n  disable {{!light_Z_unpremult}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos 756\n  ypos 167\n }\n Unpremult {\n  channels all\n  name Unpremult2\n  xpos 756\n  ypos 225\n  disable {{light_Z_unpremult}}\n }\n Dot {\n  name Dot23\n  xpos 790\n  ypos 285\n }\nset Nf1e1bc00 [stack 0]\n Dot {\n  name Dot22\n  xpos 31\n  ypos 285\n }\n DepthToPosition {\n  inputs 2\n  invert {{parent.light_Z_invert}}\n  name DepthToPosition_light\n  xpos -3\n  ypos 352\n }\n Dot {\n  name Dot28\n  xpos 31\n  ypos 510\n }\npush $Nf1e1a800\npush $Nf1e1a000\n Dot {\n  name Dot18\n  xpos 199\n  ypos -80\n }\n Shuffle {\n  in P\n  in2 alpha\n  alpha red2\n  name Shuffle_light_P\n  label \"\\[value in]\"\n  xpos 165\n  ypos -28\n }\n Unpremult {\n  name Unpremult_light_P\n  xpos 165\n  ypos 107\n  disable {{!light_P_unpremult}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 165\n  ypos 167\n }\n Unpremult {\n  name Unpremult1\n  xpos 165\n  ypos 228\n  disable {{light_P_unpremult}}\n }\n Dot {\n  name Dot9\n  xpos 199\n  ypos 361\n }\nset N1f6ae000 [stack 0]\n Switch {\n  inputs 2\n  which {{\"light_method==0 || light_method==1 ? 0 : 1\"}}\n  name Switch_light_P_method\n  label \"\\[value this.which]\"\n  xpos 165\n  ypos 501\n }\n Dot {\n  name Dot2\n  xpos 199\n  ypos 1186\n }\npush $N17095c00\n Dot {\n  name Dot17\n  xpos 1290\n  ypos -80\n }\n Shuffle {\n  in PixelGatherMetadata\n  in2 alpha\n  name Shuffle_light_Color2\n  label \"\\[value in]\"\n  xpos 1256\n  ypos -4\n }\n Dot {\n  name Dot30\n  xpos 1290\n  ypos 1196\n }\npush $Nf1e1a800\n Dot {\n  name Dot20\n  xpos 526\n  ypos 1014\n }\npush $Nf1e1ac00\n Dot {\n  name Dot14\n  xpos 1029\n  ypos 112\n }\n Dot {\n  name Dot10\n  xpos 1029\n  ypos 862\n }\nset N1ac96000 [stack 0]\n Dot {\n  name Dot11\n  xpos 1029\n  ypos 918\n }\npush $N1ac96000\npush $N1f6ae000\n Dot {\n  name Dot29\n  xpos 391\n  ypos 361\n }\n ColorMatrix {\n  matrix {\n      {{parent.DummyCam.world_matrix.0} {parent.DummyCam.world_matrix.1} {parent.DummyCam.world_matrix.2}}\n      {{parent.DummyCam.world_matrix.4} {parent.DummyCam.world_matrix.5} {parent.DummyCam.world_matrix.6}}\n      {{parent.DummyCam.world_matrix.8} {parent.DummyCam.world_matrix.9} {parent.DummyCam.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos 357\n  ypos 507\n }\n Add {\n  value {{-parent.DummyCam.world_matrix.3} {-parent.DummyCam.world_matrix.7} {-parent.DummyCam.world_matrix.11} 0}\n  name Add2\n  xpos 357\n  ypos 557\n }\n Expression {\n  expr0 -b\n  expr1 -b\n  expr2 -b\n  name Expression5\n  xpos 357\n  ypos 620\n }\npush $Nf1e1bc00\n Expression {\n  expr0 \"\\[value DepthToPosition_light.depth]\"\n  expr1 \"\\[value DepthToPosition_light.depth]\"\n  expr2 \"\\[value DepthToPosition_light.depth]\"\n  name Expression_light_Z_get\n  label \"\\[value DepthToPosition_light.depth]\"\n  xpos 756\n  ypos 438\n }\n Expression {\n  expr0 r>0?1/r:1\n  expr1 g>0?1/g:1\n  expr2 b>0?1/b:1\n  name Expression_light_Z_invert\n  xpos 756\n  ypos 514\n  disable {{!parent.light_Z_invert}}\n }\n Switch {\n  inputs 2\n  which {{\"light_method==0 || light_method==2 ? 0 : 1\"}}\n  name Switch_light_Z_method\n  label \"\\[value this.which]\"\n  xpos 756\n  ypos 614\n }\n Dot {\n  name Dot15\n  xpos 790\n  ypos 720\n }\npush $Nf1e1ac00\nclone $C27a94800 {\n  xpos 882\n  ypos 370\n  selected false\n }\n Premult {\n  name Premult2\n  xpos 882\n  ypos 448\n  disable {{!parent.light_color_premult}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge1\n  xpos 882\n  ypos 717\n }\n MergeExpression {\n  inputs 2\n  expr0 \"x==bbox.x && y==bbox.y ? A.b : B.r\"\n  expr1 \"x==bbox.x && y==bbox.y ? A.b : B.g\"\n  expr2 \"x==bbox.x && y==bbox.y ? A.b : B.b\"\n  channel3 alpha\n  expr3 \"x==bbox.x && y==bbox.y ? A.b : B.a\"\n  name MergeExpression2\n  xpos 882\n  ypos 859\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 882\n  ypos 915\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy5\n  xpos 882\n  ypos 1005\n }\n Dot {\n  name Dot4\n  xpos 916\n  ypos 1169\n }\npush $N551e400\n Dot {\n  name Dot21\n  xpos -781\n  ypos 202\n }\nset N20d62400 [stack 0]\n Dot {\n  name Dot26\n  xpos -603\n  ypos 202\n }\nset N20d62800 [stack 0]\n Dot {\n  name Dot25\n  xpos -425\n  ypos 202\n }\n Shuffle {\n  in N\n  in2 alpha\n  alpha red2\n  name Shuffle_env_N\n  label \"\\[value in]\"\n  xpos -459\n  ypos 364\n }\n Unpremult {\n  name Unpremult_env_N\n  xpos -459\n  ypos 450\n  disable {{!env_N_unpremult}}\n }\n Dot {\n  name Dot8\n  xpos -425\n  ypos 1200\n }\npush $N551e800\npush $N551fc00\n Dot {\n  name Dot27\n  xpos -169\n  ypos 557\n }\npush $N20d62800\n Unpremult {\n  channels all\n  name Unpremult_env_Z\n  xpos -637\n  ypos 429\n  disable {{!env_Z_unpremult}}\n }\n DepthToPosition {\n  inputs 2\n  invert {{parent.env_Z_invert}}\n  name DepthToPosition_env\n  xpos -637\n  ypos 554\n }\npush $N20d62400\n Shuffle {\n  in P\n  in2 alpha\n  alpha red2\n  name Shuffle_env_P\n  label \"\\[value in]\"\n  xpos -815\n  ypos 365\n }\n Unpremult {\n  name Unpremult_env_P\n  xpos -815\n  ypos 438\n  disable {{!env_P_unpremult}}\n }\n Switch {\n  inputs 2\n  which {{\"env_method==0 || env_method==1 ? 0 : 1\"}}\n  name Switch_env_P_method\n  label \"\\[value this.which]\"\n  xpos -815\n  ypos 548\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos -815\n  ypos 653\n }\n Dot {\n  name Dot7\n  xpos -781\n  ypos 1194\n }\n BlinkScript {\n  inputs 5\n  recompileCount 116\n  ProgramGroup 1\n  KernelDescription \"2 \\\"EmissionKernel\\\" iterate pixelWise 5445ff44e6e21eb225990cf422d24f8e0ad674ae14f3be1c3d4fcacd6a881349 6 \\\"envP\\\" Read Point \\\"envN\\\" Read Point \\\"lightColor\\\" Read Random \\\"lightMetadata\\\" Read Point \\\"lightP\\\" Read Random \\\"dst\\\" Write Point 3 \\\"falloff\\\" Int 1 AAAAAA== \\\"formatWidth\\\" Int 1 AAAAAA== \\\"formatHeight\\\" Int 1 AAAAAA== 3 \\\"falloff\\\" 1 1 \\\"formatWidth\\\" 1 1 \\\"formatHeight\\\" 1 1 0\"\n  kernelSource \"kernel EmissionKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> envP;\\n  Image<eRead, eAccessPoint, eEdgeClamped> envN;\\n  Image<eRead, eAccessRandom, eEdgeClamped> lightColor;\\n  Image<eRead, eAccessPoint, eEdgeClamped> lightMetadata;\\n  Image<eRead, eAccessRandom, eEdgeClamped> lightP;\\n  Image<eWrite> dst;\\n  \\n  param:\\n    int falloff;\\n    int formatWidth;\\n    int formatHeight;\\n\\n  void process()\\{\\n    float4 rgb = 0.0f;\\n\\n    //If env has an alpha\\n    if(envP(3) > 0)\\{\\n      //Loop through all pixels in the light source. Each pixel will act as point light\\n      for(int j = lightColor.bounds.y1; j <= lightColor.bounds.y1 + lightMetadata(1); j++)\\{\\n        for(int i = lightColor.bounds.x1; i <= lightColor.bounds.x1 + lightMetadata(0); i++)\\{\\n          //Only calculate, if we meet a valid sample.\\n          //This should mainly be taken care of by the PixelGather group,\\n          //but still saves a bit of time if we do it here again\\n          if(lightColor(i,j,3) > 0)\\{\\n            float3 lightVector = float3(lightP(i,j,0) - envP(0), lightP(i,j,1) - envP(1), lightP(i,j,2) - envP(2));\\n            float lightInfluence = clamp(dot(normalize(lightVector), float3(envN(0), envN(1), envN(2))), 0.0, 1.0);\\n            float distance = length(lightVector);\\n            float4 sourceIntensity = lightColor(i, j);\\n            float falloffIntensity = 1.0;\\n\\n            //Linear falloff\\n            if(falloff == 0)\\{\\n              falloffIntensity = 1 / distance;\\n            \\}\\n            //Quadratic falloff\\n            else if(falloff == 1)\\{\\n              falloffIntensity = 1 / pow(distance, 2);\\n            \\}\\n            //Cubic falloff\\n            else if(falloff == 2)\\{\\n              falloffIntensity = 1 / pow(distance, 3);\\n            \\}\\n\\n            //Calculate output intensity\\n            rgb += sourceIntensity * falloffIntensity * lightInfluence;\\n          \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    //Prepare output\\n    float4 rgba = float4(rgb.x, rgb.y, rgb.z, 0);\\n\\n    //Contering the downscaling for max samples\\n    rgba *= lightMetadata(2) / lightMetadata(3);\\n\\n    //Countering the format\\n    rgba /= formatWidth * formatHeight;\\n\\n    dst() = rgba;\\n  \\}\\n\\};\"\n  rebuild \"\"\n  EmissionKernel_falloff {{parent.falloff}}\n  EmissionKernel_formatWidth {{width}}\n  EmissionKernel_formatHeight {{height}}\n  rebuild_finalise \"\"\n  name BlinkScript_Emission\n  xpos 165\n  ypos 1396\n  disable {{\"type == 2 ? 0 : 1\"}}\n }\n Multiply {\n  channels rgba\n  value {{parent.intensity}}\n  name Multiply1\n  xpos 165\n  ypos 1473\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy3\n  xpos 165\n  ypos 1548\n }\n Premult {\n  name Premult1\n  xpos 165\n  ypos 1623\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput rgba.alpha\n  name Merge2\n  xpos 165\n  ypos 1795\n }\n Dot {\n  name Dot33\n  xpos 199\n  ypos 1975\n }\npush $N551f000\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  maskChannelMask none\n  maskChannelInput -rgba.alpha\n  name Merge_MaskMix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -1086\n  ypos 1966\n }\n Output {\n  name Output1\n  xpos -1086\n  ypos 2060\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EnvReflect_BB.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name EnvReflect_Bb_\n help \"Fake Env reflections using a normals pass only.\\n\\n\\nFeed it with a normals pass through the \\\"image\\\" input, and select the right channel for it.\\n\\n- Antialias normals to get rid of flickering\\n\\n- Use Env Preview to preview the Envball with transformations\\n(works better with cameraSpace Normals)\\n\\n\\n\\nHave fun !\\n\\nby bflat (Bastien Brenot)\\nmail@bastienbrenot.com\"\n tile_color 0xffffff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 inNormals l normals T Shuffle24.in}\n addUserKnob {6 antiAlias l \"antiAlias normals\" -STARTLINE}\n antiAlias true\n addUserKnob {41 input l \"Env Input Type\" T SphericalTransform3.input}\n addUserKnob {26 \"\"}\n addUserKnob {6 envBlur l \"IBL blur :\" +STARTLINE}\n addUserKnob {7 envBlurSize l \" \" -STARTLINE R 0 500}\n envBlurSize 250\n addUserKnob {26 \"\"}\n addUserKnob {20 envExposure l \"Env exposure\" n 1}\n addUserKnob {41 mode l \"Adjust in\" T Exposure3.mode}\n addUserKnob {41 exposure T Exposure3.red}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 rotateEnv l \"rotate Env\" n 1}\n addUserKnob {41 out_rx l rx T SphericalTransform3.out_rx}\n addUserKnob {41 out_ry l ry T SphericalTransform3.out_ry}\n addUserKnob {41 out_rz l rz T SphericalTransform3.out_rz}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 EnvPreview l \"Env Preview\" n 1}\n addUserKnob {6 previewEnv l \"preview Env\" +STARTLINE}\n addUserKnob {6 previewOnly l \"preview only\" -STARTLINE}\n addUserKnob {41 previewPos l position T previewPosition.translate}\n addUserKnob {7 previeScale l scale -STARTLINE R 0 3}\n previeScale 1\n addUserKnob {20 endGroup_2 l endGroup n -1}\n}\n Input {\n  inputs 0\n  name Env\n  xpos -449\n  ypos 170\n  number 1\n }\n EXPTool {\n  mode Stops\n  gang false\n  green {{red x126 0.2777777924}}\n  blue {{red x126 0.2777777924}}\n  name Exposure3\n  xpos -449\n  ypos 213\n }\n SphericalTransform {\n  output \"Mirror Ball\"\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  fix true\n  name SphericalTransform3\n  xpos -449\n  ypos 267\n }\nset N698007f0 [stack 0]\n Dot {\n  name Dot1\n  xpos -291\n  ypos 276\n }\n SphericalTransform {\n  ry 180\n  output \"Mirror Ball\"\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  fix true\n  name SphericalTransform2\n  xpos -325\n  ypos 378\n }\n Keyer {\n  operation \"luminance key\"\n  range {0 0 1 1}\n  name Keyer1\n  xpos -325\n  ypos 440\n }\n Blur {\n  channels rgb\n  size {{parent.envBlurSize}}\n  name Blur2\n  label \"\\[value size]\"\n  xpos -325\n  ypos 488\n  disable {{!parent.envBlur}}\n }\n Transform {\n  translate {{parent.previewPosition.translate.x-512.833333} {parent.previewPosition.translate.y-512.833333}}\n  scale {{parent.previeScale/3}}\n  center {512 512}\n  name Transform1\n  xpos -325\n  ypos 646\n }\n Input {\n  inputs 0\n  name Normals\n  xpos -599\n  ypos 395\n }\n Shuffle {\n  in rgb\n  name Shuffle24\n  label \"\\[value in]\"\n  xpos -599\n  ypos 436\n }\n Clamp {\n  channels rgba\n  minimum -1\n  minimum_enable false\n  MinClampTo -1\n  name Clamp3\n  xpos -599\n  ypos 472\n }\n Expression {\n  expr0 (r+1)/2\n  expr1 (g+1)/2\n  expr2 (b+1)/2\n  name Expression9\n  label \"\\[value expr0]\"\n  xpos -599\n  ypos 496\n }\n Matrix {\n  channels rgb\n  matrix {\n      {1 2 1}\n      {2 4 2}\n      {1 2 1}\n    }\n  normalize true\n  name antiAlias_Normals2\n  xpos -602\n  ypos 532\n  disable {{parent.antiAlias==0?1:0}}\n }\npush $N698007f0\n SphericalTransform {\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  fix true\n  name SphericalTransform1\n  xpos -447\n  ypos 327\n }\n Blur {\n  channels rgb\n  size {{parent.envBlurSize}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos -447\n  ypos 472\n  disable {{!parent.envBlur}}\n }\n STMap {\n  inputs 2\n  channels rgb\n  uv rgb\n  name STMap3\n  xpos -447\n  ypos 532\n }\n Multiply {\n  value 0\n  mix {{parent.previewEnv==1?parent.previewOnly:0}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -447\n  ypos 574\n }\n Merge2 {\n  inputs 2\n  mix {{parent.previewEnv}}\n  name Merge1\n  xpos -447\n  ypos 646\n }\n Output {\n  name Output1\n  xpos -447\n  ypos 797\n }\n Position {\n  inputs 0\n  translate {171.5 171.5}\n  name previewPosition\n  xpos -216\n  ypos 573\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ErodeSmooth.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name ErodeSmooth\n tile_color 0xcc804eff\n selected true\n addUserKnob {20 ErodeSmooth}\n addUserKnob {4 type l Type M {linear smooth smooth0 smooth1 \"\" \"\" \"\" \"\"}}\n addUserKnob {7 range l \"<font color=skyblue>Range</font color>\" R 0.1 0.9}\n range 0.5\n addUserKnob {41 size l Blur T Blur1.size}\n addUserKnob {7 tighten l Tighten R 0 2}\n tighten 1\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info}\n addUserKnob {26 author l Author: T \"Tony Lyons\"}\n addUserKnob {26 Desc l Description: T ErodeSmooth}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 521\n  ypos 344\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 380\n  ypos 199\n }\nset Na91eae80 [stack 0]\n Blur {\n  channels rgba\n  size 5\n  name Blur1\n  label \"\\[value size]\"\n  xpos 229\n  ypos 193\n }\n Grade {\n  channels rgba\n  blackpoint {{((.5*tighten)+.25)*range}}\n  whitepoint {{1-((.5*tighten)+.25)*(1-range)}}\n  white_clamp true\n  name Grade9\n  xpos 229\n  ypos 231\n }\n ColorLookup {\n  lut {master {curve C k 0 s0 1 s0}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookupSmooth\n  xpos 229\n  ypos 292\n  disable {{\"type == 1 ? 0 : 1\"}}\n }\n ColorLookup {\n  lut {master {curve C k 0 s0 L 1}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookupSmooth0\n  xpos 229\n  ypos 318\n  disable {{\"type == 2 ? 0 : 1\"}}\n }\n ColorLookup {\n  lut {master {curve L 0 C k 1 s0}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookupSmooth1\n  xpos 229\n  ypos 344\n  disable {{\"type == 3 ? 0 : 1\"}}\n }\npush $Na91eae80\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 380\n  ypos 344\n }\n Output {\n  name Output1\n  xpos 380\n  ypos 409\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Erode_Fine.gizmo",
    "content": "Group {\n name Erode_Fine\n inputs 2\n help \"Erode an image with fine controls, as opposed to Nuke's default erode node.\"\n tile_color 0xef7033ff\n label \"\\[value size]\"\n note_font \"DejaVu Sans\"\n addUserKnob {20 erode_fine l \"Fine Erode\"}\n addUserKnob {41 channels T NodeWrapper1.channels}\n addUserKnob {26 \"\"}\n addUserKnob {6 round_filter l \"Round Filter\" t \"Erode the image with a round Filter (well, it's more of a dodecagon... but... you know..) instead of a square filter.\" +STARTLINE}\n round_filter false\n addUserKnob {7 size l Size t \"Amount of erode/dilate. Positive values will grow the image, negative values will shrink it.\" R -10 10}\n size 0\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {41 maskChannelInput l mask T NodeWrapper1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T NodeWrapper1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T NodeWrapper1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T NodeWrapper1.fringe}\n addUserKnob {41 mix T NodeWrapper1.mix}\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nErode_Fine\\nVersion 1.0\\n2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.0 - 2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x75667fff\n  label \"round dilate trick\"\n  note_font_size 40\n  xpos 212\n  ypos -67\n  bdwidth 299\n  bdheight 618\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 251\n  ypos 1257\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -11\n  ypos -243\n }\n Dot {\n  name Dot15\n  tile_color 0xcccccc00\n  xpos 22\n  ypos -160\n }\nset N70a7ca0 [stack 0]\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 23\n  ypos 33\n }\nset N70bb480 [stack 0]\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 296\n  ypos 33\n }\nset N70bff60 [stack 0]\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 415\n  ypos 33\n }\n AdjBBox {\n  numpixels {{abs(ceil(parent.size)*1.4)+2}}\n  name AdjBBox1\n  xpos 381\n  ypos 100\n }\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 415\n  ypos 422\n }\npush $N70bff60\n Dilate {\n  size {{\"int(parent.size)//3 + (int(parent.size)%3 >= 1)\"}}\n  name Dilate1\n  label \"size \\[value size]\"\n  xpos 262\n  ypos 97\n }\n Transform {\n  rotate 30\n  shutteroffset centred\n  name Transform1\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos 262\n  ypos 147\n }\n Dilate {\n  size {{\"int(parent.size)//3 + (int(parent.size)%3 == 2)\"}}\n  name Dilate2\n  label \"size \\[value size]\"\n  xpos 262\n  ypos 185\n }\n Transform {\n  rotate 30\n  shutteroffset centred\n  name Transform2\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos 262\n  ypos 235\n }\n Dilate {\n  size {{int(parent.size)//3}}\n  name Dilate3\n  label \"size \\[value size]\"\n  xpos 262\n  ypos 273\n }\n Transform {\n  rotate -60\n  shutteroffset centred\n  name Transform3\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos 262\n  ypos 323\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 262\n  ypos 418\n }\npush $N70bb480\n Dilate {\n  size {{int(parent.size)}}\n  name Dilate4\n  label \"size \\[value size]\"\n  xpos -11\n  ypos 97\n }\n Dot {\n  name Dot14\n  tile_color 0xcccccc00\n  xpos 23\n  ypos 491\n }\nset N71345b0 [stack 0]\n Dissolve {\n  inputs 2\n  which {{clamp(abs(parent.size))}}\n  name Dissolve1\n  xpos 262\n  ypos 481\n }\n Dot {\n  name Dot5\n  tile_color 0xcccccc00\n  xpos 296\n  ypos 539\n }\npush $N71345b0\n Switch {\n  inputs 2\n  which {{parent.round_filter}}\n  name Switch1\n  xpos -11\n  ypos 535\n }\n AdjBBox {\n  numpixels 1\n  name AdjBBox2\n  xpos -11\n  ypos 609\n }\n Dot {\n  name Dot6\n  tile_color 0xcccccc00\n  xpos 23\n  ypos 678\n }\nset N7159670 [stack 0]\n Dot {\n  name Dot8\n  tile_color 0xcccccc00\n  xpos 175\n  ypos 678\n }\n Transform {\n  translate {{exp.expo(abs(parent.size-int(parent.size))*10)*-1} 0}\n  center {320 240}\n  black_outside false\n  shutteroffset centred\n  name Transform5\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos 141\n  ypos 823\n }\npush $N7159670\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  xpos -127\n  ypos 678\n }\n Transform {\n  translate {{exp.expo(abs(parent.size-int(parent.size))*10) i} 0}\n  center {320 240}\n  black_outside false\n  shutteroffset centred\n  name Transform4\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos -161\n  ypos 783\n }\npush $N7159670\n Merge2 {\n  inputs 2\n  operation {{parent.size>0?17:18}}\n  bbox B\n  also_merge all\n  name Merge2\n  xpos -11\n  ypos 789\n }\n Merge2 {\n  inputs 2\n  operation {{parent.size>0?17:18}}\n  bbox B\n  also_merge all\n  name Merge1\n  xpos -11\n  ypos 829\n }\n Dot {\n  name Dot9\n  tile_color 0x4b5ec600\n  xpos 23\n  ypos 910\n }\nset N71a23e0 [stack 0]\n Dot {\n  name Dot10\n  tile_color 0x4b5ec600\n  xpos 175\n  ypos 910\n }\n Transform {\n  translate {0 {exp.expo(abs(parent.size-int(parent.size))*10)*-1}}\n  center {320 240}\n  black_outside false\n  shutteroffset centred\n  name Transform6\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos 141\n  ypos 1061\n }\npush $N71a23e0\n Dot {\n  name Dot11\n  tile_color 0x4b5ec600\n  xpos -127\n  ypos 910\n }\n Transform {\n  translate {0 {exp.expo(abs(parent.size-int(parent.size))*10)}}\n  center {320 240}\n  black_outside false\n  shutteroffset centred\n  name Transform7\n  label \"\\[if \\{\\[value translate.x] != 0 || \\[value translate.y] != 0\\} then \\{return \\\"t \\[value translate.x] \\[value translate.y]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value rotate] != 0\\} then \\{return \\\"r \\[value rotate]\\n\\\"\\} else \\{return \\\"\\\"\\}] \\[if \\{\\[value scale] != 1\\} then \\{return \\\"s \\[value scale]\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value skewX] != 0 || \\[value skewY] != 0\\} then \\{return \\\"sk \\[value skewX] \\[value skewY]\\n\\\"\\} else \\{return \\\"\\\"\\}]\\[if \\{\\[value motionblur] != 0\\} then \\{return \\\"mb \\[value motionblur] sh \\[value shutter] \\[value shutteroffset]\\n\\\"\\} else \\{return \\\"\\\"\\}]\"\n  xpos -161\n  ypos 1015\n }\npush $N71a23e0\n Merge2 {\n  inputs 2\n  operation {{parent.size>0?17:18}}\n  bbox B\n  also_merge all\n  name Merge3\n  xpos -11\n  ypos 1021\n }\n Merge2 {\n  inputs 2\n  operation {{parent.size>0?17:18}}\n  bbox B\n  also_merge all\n  name Merge4\n  xpos -11\n  ypos 1061\n }\npush $N70a7ca0\n Dot {\n  name Dot13\n  tile_color 0xcccccc00\n  xpos -290\n  ypos -160\n }\n Dot {\n  name Dot12\n  tile_color 0xcccccc00\n  xpos -290\n  ypos 1261\n }\n NodeWrapper {\n  inputs 2+1\n  channels rgba\n  name NodeWrapper1\n  xpos -11\n  ypos 1257\n }\n Output {\n  name Output1\n  xpos -11\n  ypos 1389\n }\n NoOp {\n  inputs 0\n  name exp\n  label \"The growth doesn't look visually linear. \\nUsing curves helps a little.\"\n  xpos 396\n  ypos 766\n  addUserKnob {20 User}\n  addUserKnob {7 expo l expo}\n  expo {{parent.size>0?positive_curve:negative_curve i}}\n  addUserKnob {7 positive_curve}\n  positive_curve {{curve 0 0.1037476063 0.1683235168 0.2209408283 0.2831250429 0.3357424736 0.3954704404 0.4731256962 0.5778000951 0.762029767 1}}\n  addUserKnob {7 negative_curve}\n  negative_curve {{curve 0 0.2209040523 0.3736710192 0.4841623592 0.5752981992 0.6541623592 0.7271137492 0.8043368459 0.8681262732 0.9249737263 1}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ExponBlurSimple.gizmo",
    "content": "Group {\n name ExponBlurSimple\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n        \\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n        \\nelif k.name() == \\\"steps\\\":\\n    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        \\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n        \\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('mult').getValue()\\n        \\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, b1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n            b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n            merge.setInput(i if i<2 else i+1, b)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n            \\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n        \\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n        \\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n            \\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n        \\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\n tile_color 0xcc804eff\n label \"(\\[value output2])\"\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ExponBlurSimple}\n addUserKnob {41 channels T Remove1.channels}\n addUserKnob {41 maskChannelMask_1 l area T Multiply1.maskChannelMask}\n addUserKnob {41 inject_1 l inject -STARTLINE T Multiply1.inject}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T Multiply1.invert_mask}\n addUserKnob {41 fringe_1 l fringe -STARTLINE T Multiply1.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n steps 4\n addUserKnob {26 text l \" \" -STARTLINE T \" \"}\n addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n includeOriginal true\n addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n addUserKnob {14 size l Size R -100 100}\n size 2\n addUserKnob {7 mult l Multiplier R 1 5}\n mult 2\n addUserKnob {6 clamp +STARTLINE}\n addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {20 bboxControl l \"BBox Control\" n 1}\n bboxControl 0\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\n safeBBox true\n addUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\n addUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n safetyBBoxMethod percent\n addUserKnob {14 safeBBoxPixels l \"\" -STARTLINE +HIDDEN R 0 400}\n safeBBoxPixels 100\n addUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\n safeBBoxPercent 1.1\n addUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\n addUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n adjustBBoxPercent 1\n addUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n addUserKnob {26 desc l Description: T ExponBlurSimple}\n addUserKnob {26 ver l Version: T v03}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x535e5a00\n  label \"BBox Management\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos -529\n  ypos 492\n  bdwidth 341\n  bdheight 525\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 0\n  ypos -969\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 34\n  ypos -802\n }\nset N49bc3bd0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -367\n  ypos -802\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -367\n  ypos 434\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -367\n  ypos 623\n }\nset N49bae130 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -367\n  ypos 675\n }\nset N49ba7980 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -463\n  ypos 675\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -463\n  ypos 831\n }\npush $N49bc3bd0\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 461\n  ypos -802\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 427\n  ypos -718\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 461\n  ypos -597\n }\nset N6395bd30 [stack 0]\n Invert {\n  name Invert1\n  xpos 695\n  ypos -604\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\nset N639559a0 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 540\n  ypos -543\n }\n NoOp {\n  name Original\n  xpos 506\n  ypos -327\n }\nset N6393e7e0 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 540\n  ypos 14\n }\n Crop {\n  inputs 0\n  box {{\"!\\[exists parent.input0] ? 0 : input.format.x\"} {\"!\\[exists parent.input0] ? 0 : input.format.y\"} {\"!\\[exists parent.input0] ? 0 : input.format.r\"} {\"!\\[exists parent.input0] ? 0 : input.format.t\"}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 210\n  ypos -750\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 210\n  ypos -724\n }\npush $N49bc3bd0\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 83\n  ypos -671\n }\n NoOp {\n  name BBoxInput\n  xpos 83\n  ypos -628\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\npush $N6393e7e0\n Input {\n  inputs 0\n  name Inputarea\n  xpos 289\n  ypos -638\n  number 2\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 289\n  ypos -580\n }\n Invert {\n  channels rgba\n  name Invert3\n  xpos 289\n  ypos -503\n }\npush $N639559a0\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 695\n  ypos -512\n }\n NoOp {\n  name Start\n  xpos 695\n  ypos -450\n }\nset N642a0c70 [stack 0]\n Blur {\n  size {{(Blur1.size)*(mult)**3} {(Blur1.size)*(mult)**3}}\n  crop false\n  name Blur4\n  label \"\\[value size]\"\n  xpos 995\n  ypos -370\n }\npush $N642a0c70\n Blur {\n  size {{(Blur1.size)*(mult)**2} {(Blur1.size)*(mult)**2}}\n  crop false\n  name Blur3\n  label \"\\[value size]\"\n  xpos 895\n  ypos -370\n }\npush 0\npush $N642a0c70\n Blur {\n  size {{(Blur1.size)*(mult)**1} {(Blur1.size)*(mult)**1}}\n  crop false\n  name Blur2\n  label \"\\[value size]\"\n  xpos 795\n  ypos -370\n }\npush $N642a0c70\n Blur {\n  size {{parent.size.w} {parent.size.h}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos 695\n  ypos -370\n }\n Merge2 {\n  inputs 5+1\n  operation {{mergeNumber.mergeNumber}}\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos -273\n }\n NoOp {\n  name End\n  xpos 695\n  ypos -230\n }\nset N4966bdf0 [stack 0]\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 585\n  ypos -175\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold Bold\"\n  note_font_color 0xffffffff\n  xpos 585\n  ypos -151\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType {{parent.safetyBBoxMethod}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  overscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N63b52530 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N63b76330 [stack 0]\npush $N63b52530\n  Crop {\n   box {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N63beb5e0 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N63b72680 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n   shutteroffset centred\n   name Transform1\n   selected true\n   xpos 120\n   ypos 553\n  }\npush $N63b72680\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N63b76330\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N63beb5e0\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N47981ba0 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N47981ba0\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\npush $N4966bdf0\n Merge2 {\n  inputs 2\n  bbox intersection\n  also_merge all\n  name Merge4\n  xpos 585\n  ypos -127\n }\npush $N4966bdf0\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos 585\n  ypos -101\n }\npush $N4966bdf0\n Switch {\n  inputs 2\n  which {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos 695\n  ypos -106\n }\n Grade {\n  channels all\n  whitepoint 5\n  black_clamp false\n  name AverageMult\n  xpos 695\n  ypos -37\n  disable {{\"output2 == 4 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos 10\n  disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n }\n Clamp {\n  name Clamp1\n  selected true\n  xpos 695\n  ypos 50\n  disable {{!parent.clamp}}\n }\n Blur {\n  size {{postBlur} {postBlur}}\n  name BlurOriginal\n  label \"\\[value size]\"\n  xpos 695\n  ypos 102\n }\n Invert {\n  name Invert2\n  xpos 695\n  ypos 144\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\npush $N6395bd30\n Switch {\n  inputs 2\n  which {{\"parent.size == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 427\n  ypos 190\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 455\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 579\n }\nset N49eed360 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -260\n  ypos 579\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -260\n  ypos 799\n }\npush $N49bae130\n Input {\n  inputs 0\n  name Inputmask\n  xpos 512\n  ypos 322\n  number 1\n }\n Dot {\n  name Dot19\n  label Mask\n  note_font_size 41\n  xpos 546\n  ypos 435\n }\nset N49edb1b0 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 436\n  ypos 435\n }\npush $N49eed360\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeIntersection\n  xpos 402\n  ypos 572\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeUnion\n  xpos 402\n  ypos 610\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot6\n  label \"intersection\\nof (Mask and A) + B\"\n  note_font_size 14\n  note_font_color 0xffffffff\n  xpos 436\n  ypos 770\n }\npush $N49edb1b0\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 546\n  ypos 672\n }\npush $N49eed360\npush $N49ba7980\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge {{{parent.Remove1.channels}}}\n  name MergeKeymix\n  xpos 0\n  ypos 665\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 34\n  ypos 747\n }\nset N49e9e190 [stack 0]\npush $N49ba7980\n CopyBBox {\n  inputs 2\n  name CopyBBoxUnion\n  xpos -401\n  ypos 743\n  disable {{parent.bbox==0?0:1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxIntersection\n  xpos -401\n  ypos 769\n  disable {{\"parent.bbox==1 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxA\n  xpos -401\n  ypos 795\n  disable {{\"parent.bbox==2 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxB\n  xpos -401\n  ypos 827\n  disable {{\"parent.bbox==3 ? 0 : 1\"}}\n }\n Crop {\n  box {0 0 {parent.width} {parent.height}}\n  crop false\n  name CopyBBoxFormat\n  xpos -401\n  ypos 853\n  disable {{\"parent.bbox==4 ? 0 : 1\"}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset N49e7f5a0 [stack 0]\n Transform {\n  scale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\n  center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n  black_outside false\n  shutteroffset centred\n  name TransformBBoxAdjustPercent\n  xpos -516\n  ypos 898\n }\npush $N49e7f5a0\n AdjBBox {\n  numpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\n  name AdjBBoxPixels\n  xpos -401\n  ypos 901\n }\n Switch {\n  inputs 2\n  which {{adjustBBoxExtra}}\n  name Switch3\n  xpos -401\n  ypos 940\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -367\n  ypos 993\n }\npush $N49e9e190\n CopyBBox {\n  inputs 2\n  name CopyBBox\n  xpos 0\n  ypos 989\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 0\n  ypos 1015\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1155\n }\n NoOp {\n  inputs 0\n  name mergeNumber\n  xpos 229\n  ypos -862\n  addUserKnob {20 User}\n  addUserKnob {3 mergeNumber}\n  mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n }\npush $N4966bdf0\n NoOp {\n  name BBoxResult\n  xpos 585\n  ypos -230\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ExponGlow.gizmo",
    "content": "Group {\n name ExponGlow\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 5)\\nn.knob('exp').setRange(0, 4)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"(width/25*pow(parent.size*\\{\\}, parent.exp.w))*((aspectCalc.aspect.w/100))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"(height/25*pow(parent.size*\\{\\}, parent.exp.h))*((aspectCalc.aspect.h/100))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n\\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n\\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n\\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\n tile_color 0xcc804eff\n label \"(\\[value output2])\"\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ExponGlow}\n addUserKnob {41 channels T Remove1.channels}\n addUserKnob {41 maskChannelMask_1 l area T MultiplyArea.maskChannelMask}\n addUserKnob {41 inject_1 l inject -STARTLINE T MultiplyArea.inject}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T MultiplyArea.invert_mask}\n addUserKnob {41 fringe_1 l fringe -STARTLINE T MultiplyArea.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {26 ToleranceTitle l Tolerance T \" \"}\n addUserKnob {6 tolerance_2 l \" \" -STARTLINE}\n tolerance_2 true\n addUserKnob {7 tolerance l \"\" -STARTLINE R 0 4}\n tolerance 1\n addUserKnob {4 output2 l Operation M {Screen Plus Over Hypot Average Max Min \"\"}}\n output2 Plus\n addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n steps 10\n addUserKnob {26 text l \" \" -STARTLINE T \" \"}\n addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n addUserKnob {19 intensity l Intensity R 0 4}\n intensity 1\n addUserKnob {6 intensity_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 intensity_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 intensity_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 text_1 l \" \"}\n addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n addUserKnob {14 size l Size R 0 5}\n size 1\n addUserKnob {14 exp l Exponent R 0 4}\n exp 3\n addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {4 falloffType l Falloff M {Linear pLinear smooth smooth0 smooth1 \"\" \"\"}}\n addUserKnob {7 falloff l \"\" -STARTLINE}\n falloff 1\n addUserKnob {26 text_4 l \" \"}\n addUserKnob {6 color_rgba_panelDropped_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n addUserKnob {6 effectOnly l \"<font color = dark gray>.<b><font color = skyblue>   Effect Only\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 bboxControl l \"BBox Control\" n 1}\n bboxControl 0\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\n safeBBox true\n addUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\n addUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n safetyBBoxMethod percent\n addUserKnob {14 safeBBoxPixels l \"\" -STARTLINE +HIDDEN R 0 400}\n safeBBoxPixels 100\n addUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\n safeBBoxPercent 1.1\n addUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\n addUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n adjustBBoxPercent 1\n addUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n addUserKnob {26 desc l Description: T ExponGlow}\n addUserKnob {26 ver l Version: T v03}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x535e5a00\n  label \"BBox Management\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos -529\n  ypos 636\n  bdwidth 341\n  bdheight 525\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 0\n  ypos -1449\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 34\n  ypos -1282\n }\nset N6c251600 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -367\n  ypos -1282\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos -367\n  ypos 360\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -367\n  ypos 578\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -367\n  ypos 767\n }\nset Nd49eb900 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -367\n  ypos 819\n }\nset Nd49eb200 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -463\n  ypos 819\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -463\n  ypos 975\n }\n Crop {\n  inputs 0\n  box {{\"!\\[exists parent.input0] ? 0 : input.format.x\"} {\"!\\[exists parent.input0] ? 0 : input.format.y\"} {\"!\\[exists parent.input0] ? 0 : input.format.r\"} {\"!\\[exists parent.input0] ? 0 : input.format.t\"}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 210\n  ypos -1006\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 210\n  ypos -980\n }\npush $N6c251600\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 83\n  ypos -927\n }\n NoOp {\n  name BBoxInput\n  xpos 83\n  ypos -884\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 117\n  ypos -146\n }\n Input {\n  inputs 0\n  name Inputarea\n  xpos 289\n  ypos -894\n  number 2\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 289\n  ypos -836\n }\n Invert {\n  channels rgba\n  name Invert3\n  xpos 289\n  ypos -759\n }\npush $N6c251600\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 461\n  ypos -1282\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 427\n  ypos -1213\n }\n NoOp {\n  name aspectCalc\n  xpos 427\n  ypos -1155\n  addUserKnob {20 User}\n  addUserKnob {14 aspect R 0 100}\n  aspect {{parent.size.w} {(parent.size.h/format.pixel_aspect/height*width)*format.pixel_aspect}}\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 461\n  ypos -1026\n }\nset Nd49c4100 [stack 0]\n Invert {\n  name Invert1\n  xpos 864\n  ypos -1033\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\nset Nd49a7900 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.tolerance} {range.A+parent.tolerance+1} {range.B} {range.B}}\n  name Keyer1\n  xpos 774\n  ypos -967\n  disable {{!tolerance_2}}\n }\n Premult {\n  channels all\n  name Premult1\n  xpos 774\n  ypos -910\n  disable {{!tolerance_2}}\n }\npush $Nd49a7900\n Dissolve {\n  inputs 2\n  channels rgba\n  which {{\"parent.tolerance < 1 ? parent.tolerance : 1\"}}\n  name Dissolve1\n  label \"\\[value which]\"\n  xpos 864\n  ypos -857\n }\n Multiply {\n  inputs 1+1\n  value 0\n  name MultiplyArea\n  label \"\\[value value]\"\n  xpos 864\n  ypos -768\n }\nset Nd49a5d00 [stack 0]\n NoOp {\n  name Start\n  xpos 864\n  ypos -706\n }\nset Nd49a4f00 [stack 0]\n Blur {\n  size {{\"(width/25*pow(parent.size*10, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*10, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur10\n  xpos 1764\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.1 :falloffType == 1 ? pow(0.1, 3) : falloffType == 2 ? 0.1*0.1*(3-2*0.1) : falloffType == 3 ? 0.1*0.1*(2 - 0.1) : falloffType == 4 ? 0.1*(1 + 0.1*(1 - 0.1)) : 0\"} {\"falloffType == 0 ? 0.1 :falloffType == 1 ? pow(0.1, 3) : falloffType == 2 ? 0.1*0.1*(3-2*0.1) : falloffType == 3 ? 0.1*0.1*(2 - 0.1) : falloffType == 4 ? 0.1*(1 + 0.1*(1 - 0.1)) : 0\"} {\"falloffType == 0 ? 0.1 :falloffType == 1 ? pow(0.1, 3) : falloffType == 2 ? 0.1*0.1*(3-2*0.1) : falloffType == 3 ? 0.1*0.1*(2 - 0.1) : falloffType == 4 ? 0.1*(1 + 0.1*(1 - 0.1)) : 0\"} {\"falloffType == 0 ? 0.1 :falloffType == 1 ? pow(0.1, 3) : falloffType == 2 ? 0.1*0.1*(3-2*0.1) : falloffType == 3 ? 0.1*0.1*(2 - 0.1) : falloffType == 4 ? 0.1*(1 + 0.1*(1 - 0.1)) : 0\"}}\n  mix {{falloff}}\n  name Multiply10\n  xpos 1764\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*9, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*9, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur9\n  xpos 1664\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.2 :falloffType == 1 ? pow(0.2, 3) : falloffType == 2 ? 0.2*0.2*(3-2*0.2) : falloffType == 3 ? 0.2*0.2*(2 - 0.2) : falloffType == 4 ? 0.2*(1 + 0.2*(1 - 0.2)) : 0\"} {\"falloffType == 0 ? 0.2 :falloffType == 1 ? pow(0.2, 3) : falloffType == 2 ? 0.2*0.2*(3-2*0.2) : falloffType == 3 ? 0.2*0.2*(2 - 0.2) : falloffType == 4 ? 0.2*(1 + 0.2*(1 - 0.2)) : 0\"} {\"falloffType == 0 ? 0.2 :falloffType == 1 ? pow(0.2, 3) : falloffType == 2 ? 0.2*0.2*(3-2*0.2) : falloffType == 3 ? 0.2*0.2*(2 - 0.2) : falloffType == 4 ? 0.2*(1 + 0.2*(1 - 0.2)) : 0\"} {\"falloffType == 0 ? 0.2 :falloffType == 1 ? pow(0.2, 3) : falloffType == 2 ? 0.2*0.2*(3-2*0.2) : falloffType == 3 ? 0.2*0.2*(2 - 0.2) : falloffType == 4 ? 0.2*(1 + 0.2*(1 - 0.2)) : 0\"}}\n  mix {{falloff}}\n  name Multiply9\n  xpos 1664\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*8, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*8, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur8\n  xpos 1564\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.3 :falloffType == 1 ? pow(0.3, 3) : falloffType == 2 ? 0.3*0.3*(3-2*0.3) : falloffType == 3 ? 0.3*0.3*(2 - 0.3) : falloffType == 4 ? 0.3*(1 + 0.3*(1 - 0.3)) : 0\"} {\"falloffType == 0 ? 0.3 :falloffType == 1 ? pow(0.3, 3) : falloffType == 2 ? 0.3*0.3*(3-2*0.3) : falloffType == 3 ? 0.3*0.3*(2 - 0.3) : falloffType == 4 ? 0.3*(1 + 0.3*(1 - 0.3)) : 0\"} {\"falloffType == 0 ? 0.3 :falloffType == 1 ? pow(0.3, 3) : falloffType == 2 ? 0.3*0.3*(3-2*0.3) : falloffType == 3 ? 0.3*0.3*(2 - 0.3) : falloffType == 4 ? 0.3*(1 + 0.3*(1 - 0.3)) : 0\"} {\"falloffType == 0 ? 0.3 :falloffType == 1 ? pow(0.3, 3) : falloffType == 2 ? 0.3*0.3*(3-2*0.3) : falloffType == 3 ? 0.3*0.3*(2 - 0.3) : falloffType == 4 ? 0.3*(1 + 0.3*(1 - 0.3)) : 0\"}}\n  mix {{falloff}}\n  name Multiply8\n  xpos 1564\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*7, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*7, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur7\n  xpos 1464\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.4 :falloffType == 1 ? pow(0.4, 3) : falloffType == 2 ? 0.4*0.4*(3-2*0.4) : falloffType == 3 ? 0.4*0.4*(2 - 0.4) : falloffType == 4 ? 0.4*(1 + 0.4*(1 - 0.4)) : 0\"} {\"falloffType == 0 ? 0.4 :falloffType == 1 ? pow(0.4, 3) : falloffType == 2 ? 0.4*0.4*(3-2*0.4) : falloffType == 3 ? 0.4*0.4*(2 - 0.4) : falloffType == 4 ? 0.4*(1 + 0.4*(1 - 0.4)) : 0\"} {\"falloffType == 0 ? 0.4 :falloffType == 1 ? pow(0.4, 3) : falloffType == 2 ? 0.4*0.4*(3-2*0.4) : falloffType == 3 ? 0.4*0.4*(2 - 0.4) : falloffType == 4 ? 0.4*(1 + 0.4*(1 - 0.4)) : 0\"} {\"falloffType == 0 ? 0.4 :falloffType == 1 ? pow(0.4, 3) : falloffType == 2 ? 0.4*0.4*(3-2*0.4) : falloffType == 3 ? 0.4*0.4*(2 - 0.4) : falloffType == 4 ? 0.4*(1 + 0.4*(1 - 0.4)) : 0\"}}\n  mix {{falloff}}\n  name Multiply7\n  xpos 1464\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*6, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*6, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur6\n  xpos 1364\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n  mix {{falloff}}\n  name Multiply6\n  xpos 1364\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*5, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*5, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur5\n  xpos 1264\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.6 :falloffType == 1 ? pow(0.6, 3) : falloffType == 2 ? 0.6*0.6*(3-2*0.6) : falloffType == 3 ? 0.6*0.6*(2 - 0.6) : falloffType == 4 ? 0.6*(1 + 0.6*(1 - 0.6)) : 0\"} {\"falloffType == 0 ? 0.6 :falloffType == 1 ? pow(0.6, 3) : falloffType == 2 ? 0.6*0.6*(3-2*0.6) : falloffType == 3 ? 0.6*0.6*(2 - 0.6) : falloffType == 4 ? 0.6*(1 + 0.6*(1 - 0.6)) : 0\"} {\"falloffType == 0 ? 0.6 :falloffType == 1 ? pow(0.6, 3) : falloffType == 2 ? 0.6*0.6*(3-2*0.6) : falloffType == 3 ? 0.6*0.6*(2 - 0.6) : falloffType == 4 ? 0.6*(1 + 0.6*(1 - 0.6)) : 0\"} {\"falloffType == 0 ? 0.6 :falloffType == 1 ? pow(0.6, 3) : falloffType == 2 ? 0.6*0.6*(3-2*0.6) : falloffType == 3 ? 0.6*0.6*(2 - 0.6) : falloffType == 4 ? 0.6*(1 + 0.6*(1 - 0.6)) : 0\"}}\n  mix {{falloff}}\n  name Multiply5\n  xpos 1264\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*4, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*4, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur4\n  xpos 1164\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.7 :falloffType == 1 ? pow(0.7, 3) : falloffType == 2 ? 0.7*0.7*(3-2*0.7) : falloffType == 3 ? 0.7*0.7*(2 - 0.7) : falloffType == 4 ? 0.7*(1 + 0.7*(1 - 0.7)) : 0\"} {\"falloffType == 0 ? 0.7 :falloffType == 1 ? pow(0.7, 3) : falloffType == 2 ? 0.7*0.7*(3-2*0.7) : falloffType == 3 ? 0.7*0.7*(2 - 0.7) : falloffType == 4 ? 0.7*(1 + 0.7*(1 - 0.7)) : 0\"} {\"falloffType == 0 ? 0.7 :falloffType == 1 ? pow(0.7, 3) : falloffType == 2 ? 0.7*0.7*(3-2*0.7) : falloffType == 3 ? 0.7*0.7*(2 - 0.7) : falloffType == 4 ? 0.7*(1 + 0.7*(1 - 0.7)) : 0\"} {\"falloffType == 0 ? 0.7 :falloffType == 1 ? pow(0.7, 3) : falloffType == 2 ? 0.7*0.7*(3-2*0.7) : falloffType == 3 ? 0.7*0.7*(2 - 0.7) : falloffType == 4 ? 0.7*(1 + 0.7*(1 - 0.7)) : 0\"}}\n  mix {{falloff}}\n  name Multiply4\n  xpos 1164\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*3, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*3, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur3\n  xpos 1064\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.8 :falloffType == 1 ? pow(0.8, 3) : falloffType == 2 ? 0.8*0.8*(3-2*0.8) : falloffType == 3 ? 0.8*0.8*(2 - 0.8) : falloffType == 4 ? 0.8*(1 + 0.8*(1 - 0.8)) : 0\"} {\"falloffType == 0 ? 0.8 :falloffType == 1 ? pow(0.8, 3) : falloffType == 2 ? 0.8*0.8*(3-2*0.8) : falloffType == 3 ? 0.8*0.8*(2 - 0.8) : falloffType == 4 ? 0.8*(1 + 0.8*(1 - 0.8)) : 0\"} {\"falloffType == 0 ? 0.8 :falloffType == 1 ? pow(0.8, 3) : falloffType == 2 ? 0.8*0.8*(3-2*0.8) : falloffType == 3 ? 0.8*0.8*(2 - 0.8) : falloffType == 4 ? 0.8*(1 + 0.8*(1 - 0.8)) : 0\"} {\"falloffType == 0 ? 0.8 :falloffType == 1 ? pow(0.8, 3) : falloffType == 2 ? 0.8*0.8*(3-2*0.8) : falloffType == 3 ? 0.8*0.8*(2 - 0.8) : falloffType == 4 ? 0.8*(1 + 0.8*(1 - 0.8)) : 0\"}}\n  mix {{falloff}}\n  name Multiply3\n  xpos 1064\n  ypos -477\n }\npush 0\npush $Nd49a4f00\n Blur {\n  size {{\"(width/25*pow(parent.size*2, parent.exp.w))*((aspectCalc.aspect.w/100))\"} {\"(height/25*pow(parent.size*2, parent.exp.h))*((aspectCalc.aspect.h/100))\"}}\n  crop false\n  name Blur2\n  xpos 964\n  ypos -554\n }\n Multiply {\n  value {{\"falloffType == 0 ? 0.9 :falloffType == 1 ? pow(0.9, 3) : falloffType == 2 ? 0.9*0.9*(3-2*0.9) : falloffType == 3 ? 0.9*0.9*(2 - 0.9) : falloffType == 4 ? 0.9*(1 + 0.9*(1 - 0.9)) : 0\"} {\"falloffType == 0 ? 0.9 :falloffType == 1 ? pow(0.9, 3) : falloffType == 2 ? 0.9*0.9*(3-2*0.9) : falloffType == 3 ? 0.9*0.9*(2 - 0.9) : falloffType == 4 ? 0.9*(1 + 0.9*(1 - 0.9)) : 0\"} {\"falloffType == 0 ? 0.9 :falloffType == 1 ? pow(0.9, 3) : falloffType == 2 ? 0.9*0.9*(3-2*0.9) : falloffType == 3 ? 0.9*0.9*(2 - 0.9) : falloffType == 4 ? 0.9*(1 + 0.9*(1 - 0.9)) : 0\"} {\"falloffType == 0 ? 0.9 :falloffType == 1 ? pow(0.9, 3) : falloffType == 2 ? 0.9*0.9*(3-2*0.9) : falloffType == 3 ? 0.9*0.9*(2 - 0.9) : falloffType == 4 ? 0.9*(1 + 0.9*(1 - 0.9)) : 0\"}}\n  mix {{falloff}}\n  name Multiply2\n  xpos 964\n  ypos -477\n }\npush $Nd49a4f00\n Blur {\n  size {{(width/10*parent.size*(aspectCalc.aspect.w/100))} {(height/10*parent.size*(aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur1\n  xpos 864\n  ypos -555\n }\n Multiply {\n  value {1 1 1 1}\n  mix {{falloff}}\n  name Multiply1\n  xpos 864\n  ypos -477\n }\n Merge2 {\n  inputs 10+1\n  operation {{mergeNumber.mergeNumber}}\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 864\n  ypos -327\n }\n NoOp {\n  name End\n  xpos 864\n  ypos -279\n }\nset Nd4af2b00 [stack 0]\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 585\n  ypos -149\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 585\n  ypos -106\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType {{parent.safetyBBoxMethod}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  overscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset Nd4af0f00 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset Nd4af0800 [stack 0]\npush $Nd4af0f00\n  Crop {\n   box {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset Nd4af0100 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset Nd4ac7900 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n   shutteroffset centred\n   name Transform1\n   selected true\n   xpos 120\n   ypos 553\n  }\npush $Nd4ac7900\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $Nd4af0800\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $Nd4af0100\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset Nd4ac4100 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $Nd4ac4100\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\npush $Nd4af2b00\n Merge2 {\n  inputs 2\n  bbox intersection\n  name Merge4\n  xpos 585\n  ypos -66\n }\npush $Nd4af2b00\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos 585\n  ypos -21\n }\nset Nd4aa2400 [stack 0]\npush $Nd49a5d00\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 540\n  ypos -678\n }\n NoOp {\n  name Original\n  xpos 506\n  ypos -327\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 540\n  ypos 78\n }\npush $Nd4aa2400\npush $Nd4af2b00\n Switch {\n  inputs 2\n  which {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos 864\n  ypos -25\n }\n Grade {\n  channels all\n  whitepoint 10\n  black_clamp false\n  name AverageMult\n  xpos 864\n  ypos 27\n  disable {{\"output2 == 4 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 864\n  ypos 74\n  disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n }\n Multiply {\n  value {{parent.intensity/steps}}\n  name Multiply12\n  xpos 864\n  ypos 98\n }\n Blur {\n  size {{postBlur} {postBlur}}\n  name BlurOriginal\n  xpos 864\n  ypos 155\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox3\n  xpos 864\n  ypos 224\n }\n Invert {\n  name Invert2\n  xpos 864\n  ypos 283\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\npush $Nd49c4100\n Switch {\n  inputs 2\n  which {{\"parent.size == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 427\n  ypos 283\n }\npush $N6c251600\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 34\n  ypos 157\n }\n Multiply {\n  channels {{{parent.Remove1.channels}}}\n  value 0\n  name Multiply11\n  xpos 0\n  ypos 227\n  disable {{!effectOnly}}\n }\n Merge2 {\n  inputs 2\n  operation {{mergeNumber.mergeNumber}}\n  also_merge all\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 287\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 599\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 729\n }\nset Nd4a37200 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -260\n  ypos 729\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -260\n  ypos 943\n }\npush $Nd49eb900\n Input {\n  inputs 0\n  name Inputmask\n  xpos 346\n  ypos 516\n  number 1\n }\n Dot {\n  name Dot19\n  label Mask\n  note_font_size 41\n  xpos 380\n  ypos 582\n }\nset Nd4a35600 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 270\n  ypos 582\n }\npush $Nd4a37200\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeIntersection\n  xpos 236\n  ypos 719\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeUnion\n  xpos 236\n  ypos 757\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot6\n  label \"intersection\\nof (Mask and A) + B\"\n  note_font_size 14\n  note_font_color 0xffffffff\n  xpos 270\n  ypos 917\n }\npush $Nd4a35600\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 380\n  ypos 819\n }\npush $Nd4a37200\npush $Nd49eb200\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge {{{parent.Remove1.channels}}}\n  name MergeKeymix\n  xpos 0\n  ypos 809\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 34\n  ypos 891\n }\nset Nd4a1a400 [stack 0]\npush $Nd49eb200\n CopyBBox {\n  inputs 2\n  name CopyBBoxUnion\n  xpos -401\n  ypos 887\n  disable {{parent.bbox==0?0:1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxIntersection\n  xpos -401\n  ypos 913\n  disable {{\"parent.bbox==1 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxA\n  xpos -401\n  ypos 939\n  disable {{\"parent.bbox==2 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxB\n  xpos -401\n  ypos 971\n  disable {{\"parent.bbox==3 ? 0 : 1\"}}\n }\n Crop {\n  box {0 0 {parent.width} {parent.height}}\n  crop false\n  name CopyBBoxFormat\n  xpos -401\n  ypos 997\n  disable {{\"parent.bbox==4 ? 0 : 1\"}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset Nd4a18100 [stack 0]\n Transform {\n  scale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\n  center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n  black_outside false\n  shutteroffset centred\n  name TransformBBoxAdjustPercent\n  xpos -516\n  ypos 1042\n }\npush $Nd4a18100\n AdjBBox {\n  numpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\n  name AdjBBoxPixels\n  xpos -401\n  ypos 1045\n }\n Switch {\n  inputs 2\n  which {{adjustBBoxExtra}}\n  name Switch3\n  xpos -401\n  ypos 1084\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -367\n  ypos 1137\n }\npush $Nd4a1a400\n CopyBBox {\n  inputs 2\n  name CopyBBox\n  xpos 0\n  ypos 1133\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 0\n  ypos 1159\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1299\n }\npush $Nd4af2b00\n NoOp {\n  name BBoxResult\n  xpos 714\n  ypos -279\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\n NoOp {\n  inputs 0\n  name mergeNumber\n  xpos 202\n  ypos -1339\n  addUserKnob {20 User}\n  addUserKnob {3 mergeNumber}\n  mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_F_P_Project.gizmo",
    "content": "Group {\n name P_Project\n help \"Position Project\\n\\nCamera Project using only the render of the Position pass and the Camera.\\n\"\n onCreate \"if nuke.thisNode()\\['created'].value() == False:\\n    nuke.thisNode()\\['created'].setValue(True)\\n    nuke.thisNode().knob('project_frame').setValue(nuke.frame())\"\n knobChanged \"if nuke.thisKnob().name() in ('matte', 'showPanel'):\\n    inputT = nuke.exists('Alpha')\\n    mode = nuke.thisNode()\\['matte'].value()\\n    if mode == 'rgba.alpha':\\n        if str(inputT)== 'True':\\n            nuke.thisNode().setInput(3,None)\\n            n = nuke.toNode('Alpha')\\n            nuke.delete(n)\\n    else:\\n        if str(inputT)== 'False':\\n            #nuke.message('Add New Input in Node')\\n            i = nuke.createNode('Input', inpanel=False )\\n            i\\['name'].setValue('Alpha')\\n            n = nuke.toNode('Switch2')\\n            n.setInput(0,i)\"\n tile_color 0xdda92aff\n selected true\n icon F_iconalpha.png\n addUserKnob {20 User l \"Position Project\"}\n addUserKnob {6 created l INVISIBLE +INVISIBLE +STARTLINE}\n created true\n addUserKnob {41 in l \"<font color=\\\"green\\\">@b;P channel\" t \"Choose the position pass channel.\" T Shuffle_input_channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {3 project_frame l \"Project Frame\" t \"Enter the reference frame you want for the camera projection.\"}\n project_frame 1\n addUserKnob {22 setframe l \" Set Current! \" t \"Set automatically the reference frame to the current frame.\" -STARTLINE T nuke.thisNode().knob('project_frame').setValue(nuke.frame())}\n addUserKnob {6 freeze_image l \"Hold Image also (same frame)\" t \"Hold to the same frame the input Image.\" +STARTLINE}\n addUserKnob {26 S01 l \" \"}\n addUserKnob {41 filter l Filter T STMap1.filter}\n addUserKnob {6 crop l Crop t \"Crop the incoming image, putting black outside the format area.\" -STARTLINE}\n addUserKnob {6 antialiasing l Antialiasing t \"Increase the size of the input position pass before the projection.\" +STARTLINE}\n addUserKnob {26 S04 l \" \" T \" \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 T01 l \"   (Un)Premult by\" t \"The Position Pass is divide by the Alpha channel before being processed, and multiplied again afterwards. This can improve the texturing of anti-aliased edges.\" T \"\"}\n addUserKnob {6 premult l \"\" t \"The Position Pass is divide by the Alpha channel before being processed, and multiplied again afterwards. This can improve the texturing of anti-aliased edges.\" -STARTLINE}\n addUserKnob {4 matte l \"\" t \"Choose the Alpha channel.\\nAlpha is usefull for a better result with clean edge (UnPremult / Premult).\\n\\nrgba.alpha: \\nPick automaticaly the Alpha from the Input.\\n\\nrgba.alpha (New Input):\\nPick the Alpha from an other Input.\" -STARTLINE M {rgba.alpha \"rgba.alpha (New Input)\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 by2 l \" \" T \"                                                                                               \"}\n addUserKnob {26 FTools l \" \" t \"FranklinVfx.com\\n\" -STARTLINE T \"<font color=\\\"#1C1C1C\\\"> Franklin Vfx - 2017\"}\n addUserKnob {1 output l INVISIBLE +INVISIBLE}\n output \"\\[value project_frame]\"\n}\n Input {\n  inputs 0\n  name Pos\n  xpos -276\n  ypos -437\n  number 1\n }\n Dot {\n  name Dot2\n  xpos -242\n  ypos -229\n }\nset N696a4710 [stack 0]\n Dot {\n  name Dot7\n  xpos -14\n  ypos -229\n }\nset N696c80c0 [stack 0]\npush 0\n Switch {\n  inputs 2\n  which {{!matte i}}\n  name Switch2\n  xpos -48\n  ypos -138\n }\n NoOp {\n  name AlphaCheck\n  xpos -48\n  ypos -60\n  addUserKnob {20 User}\n  addUserKnob {6 alpha +STARTLINE}\n  alpha {{\"\\[python \\\"len(\\\\\\[n for n in nuke.channels(nuke.thisNode().input(0)) if n.find(\\\\\\\".a\\\\\\\") != -1])>0\\\"]\" i}}\n }\n AddChannels {\n  channels rgba\n  name AddAlpha\n  xpos -48\n  ypos -17\n }\n Dot {\n  name Dot4\n  xpos -14\n  ypos 74\n }\nset N696f74a0 [stack 0]\n Dot {\n  name Dot5\n  xpos -14\n  ypos 1201\n }\npush $N696f74a0\npush $N696c80c0\n Dot {\n  name Dot3\n  xpos 208\n  ypos -229\n }\nset N69491b50 [stack 0]\n Shuffle {\n  in rgb\n  name Shuffle_input_channel\n  xpos 174\n  ypos -27\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 174\n  ypos 64\n }\nset N696ec8b0 [stack 0]\npush $N696ec8b0\n Blur {\n  inputs 1+1\n  size 2\n  invert_mask true\n  name Blur1\n  xpos 386\n  ypos 64\n  disable {{!parent.antialiasing}}\n }\n Unpremult {\n  name Unpremult1\n  xpos 386\n  ypos 102\n }\n Dot {\n  name Dot1\n  xpos 420\n  ypos 198\n }\npush $N696ec8b0\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch9\n  xpos 174\n  ypos 194\n  disable {{!AlphaCheck.alpha}}\n }\n Reformat {\n  type scale\n  scale 2\n  pbb true\n  name Reformat5\n  tile_color 0xff0000ff\n  xpos 174\n  ypos 294\n  disable {{!parent.antialiasing}}\n }\n Expression {\n  expr0 \"(r - Proj_Cam.world_matrix.3)\"\n  expr1 \"(g - Proj_Cam.world_matrix.7)\"\n  expr2 \"(b - Proj_Cam.world_matrix.11)\"\n  name Distance\n  xpos 174\n  ypos 417\n }\n Expression {\n  temp_name0 x\n  temp_expr0 \"Proj_Cam.world_matrix.0 * r + Proj_Cam.world_matrix.4 * g + Proj_Cam.world_matrix.8 * b\"\n  temp_name1 y\n  temp_expr1 \"Proj_Cam.world_matrix.1 * r + Proj_Cam.world_matrix.5 * g + Proj_Cam.world_matrix.9 * b\"\n  temp_name2 z\n  temp_expr2 \"Proj_Cam.world_matrix.2 * r + Proj_Cam.world_matrix.6 * g + Proj_Cam.world_matrix.10 * b\"\n  expr0 x\n  expr1 y\n  expr2 z\n  name Transform\n  xpos 174\n  ypos 452\n }\nset N69d5f330 [stack 0]\n Expression {\n  temp_name0 ratio\n  temp_expr0 1\n  temp_name1 focal\n  temp_expr1 Proj_Cam.focal\n  temp_name2 u\n  temp_expr2 \"0.5 + (r * ((focal/(Proj_Cam.haperture))/b)) * -1\"\n  temp_name3 v\n  temp_expr3 \"0.5 + (g * ((focal/(Proj_Cam.vaperture * ratio))/b)) * -1\"\n  expr0 \"u>0 && u<1 && v>0 && v<1 ? u : 0\"\n  expr1 \"v>0 && v<1 && u>0 && u<1 ? v : 0\"\n  channel2 none\n  channel3 none\n  name Solve\n  label ratio=1/pixel_aspect\n  xpos 100\n  ypos 538\n }\npush $N69d5f330\n Expression {\n  temp_name0 ratio\n  temp_expr0 1\n  temp_name1 focal\n  temp_expr1 Proj_Cam.focal\n  temp_name2 u\n  temp_expr2 \"0.5 + (r * ((focal/(Proj_Cam.haperture))/b)) * -1\"\n  temp_name3 v\n  temp_expr3 \"0.5 + (g * ((focal/(Proj_Cam.vaperture * ratio))/b)) * -1\"\n  expr0 u\n  expr1 v\n  channel2 none\n  channel3 none\n  name Solve_Crop\n  xpos 246\n  ypos 551\n }\n Dissolve {\n  inputs 2\n  which {{parent.crop}}\n  name Dissolve2\n  xpos 174\n  ypos 635\n }\n Input {\n  inputs 0\n  name Image\n  xpos 630\n  ypos -453\n }\n FrameHold {\n  first_frame {{parent.project_frame i x1060 1060}}\n  name FrameHold1\n  xpos 630\n  ypos -356\n  disable {{!parent.freeze_image i}}\n }\n Log2Lin {\n  operation lin2log\n  name Log2Lin1\n  label \"\\[if \\{\\[value operation]==\\\"lin2log\\\"\\} \\{return \\\"\\[knob this.icon F_iconstart.png]\\\"\\} \\{return \\\"\\[knob this.icon F_iconend.png]\\\"\\}]\"\n  xpos 630\n  ypos -318\n  icon F_iconstart.png\n }\n Reformat {\n  type \"to box\"\n  box_width {{parent.Crop1.box.r}}\n  box_height {{parent.Crop1.box.t}}\n  box_fixed true\n  box_pixel_aspect {{parent.Crop1.softness}}\n  resize none\n  center false\n  pbb true\n  name Reformat2\n  xpos 630\n  ypos -207\n }\n Reformat {\n  type scale\n  scale {{parent.Reformat5.scale}}\n  pbb {{parent.Reformat5.pbb}}\n  name Reformat7\n  tile_color 0xff0000ff\n  xpos 630\n  ypos 291\n  disable {{!parent.antialiasing}}\n }\n Dot {\n  name Dot12\n  xpos 664\n  ypos 773\n }\n STMap {\n  inputs 2\n  uv rgb\n  blur_scale 0\n  maskChannel -rgba.alpha\n  name STMap1\n  xpos 174\n  ypos 763\n }\n Log2Lin {\n  name Log2Lin2\n  label \"\\[if \\{\\[value operation]==\\\"lin2log\\\"\\} \\{return \\\"\\[knob this.icon F_iconstart.png]\\\"\\} \\{return \\\"\\[knob this.icon F_iconend.png]\\\"\\}]\"\n  xpos 174\n  ypos 878\n  icon F_iconend.png\n }\n Clamp {\n  maximum 1001\n  name Clamp1\n  xpos 174\n  ypos 969\n }\n Reformat {\n  type scale\n  scale {{1/parent.Reformat5.scale}}\n  pbb true\n  name Reformat8\n  tile_color 0xff0000ff\n  xpos 174\n  ypos 1094\n  disable {{!parent.antialiasing}}\n }\nset N69baeb10 [stack 0]\n Multiply {\n  inputs 1+1\n  value 0\n  invert_mask true\n  name Multiply1\n  xpos 77\n  ypos 1191\n  disable {{!AlphaCheck.alpha i}}\n }\npush $N69baeb10\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch10\n  xpos 174\n  ypos 1273\n }\n Dot {\n  name Dot6\n  xpos 208\n  ypos 1399\n }\npush $N696a4710\n Copy {\n  inputs 2\n  channels rgba\n  name Copy2\n  xpos -276\n  ypos 1382\n }\n Output {\n  name FranklinVFX\n  xpos -276\n  ypos 1524\n }\n Camera2 {\n  inputs 0\n  read_from_file true\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"}}\n      {{\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"}}\n      {{\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"}}\n      {{\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"} {\"\\[topnode parent.input2].world_matrix (parent.project_frame)\"}}\n    }\n  focal {{\"\\[topnode parent.input2].focal (parent.project_frame)\"}}\n  haperture {{\"\\[topnode parent.input2].haperture (parent.project_frame)\"}}\n  vaperture {{\"\\[topnode parent.input2].vaperture (parent.project_frame)\"}}\n  name Proj_Cam\n  xpos 430\n  ypos 397\n }\n Input {\n  inputs 0\n  name Cam\n  xpos 416\n  ypos 325\n  number 2\n }\npush $N69491b50\n Reformat {\n  resize none\n  center false\n  name Reformat11\n  xpos 487\n  ypos -233\n  disable true\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  softness {{\"\\[python nuke.value(\\\"%s.pixel_aspect\\\" % nuke.thisNode().name())]\"}}\n  name Crop1\n  knobChanged \"a = nuke.thisNode()\\naspectratio = a\\['box_pixel_aspect'].value()\\nprint(aspectratio)\"\n  xpos 487\n  ypos -207\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_F_P_Ramp.gizmo",
    "content": "Group {\n name P_Ramp\n help \"P_Ramp\\n\\nCreate a ramp in the alpha channel using the render of the Position pass.\\n\\nThe result mask is create in the Alpha channel.\\n\"\n onCreate \"if nuke.thisNode()\\['created'].value() == False:\\n    nuke.thisNode()\\['created'].setValue(True)\\n        \\n    if nuke.thisNode().input(0) is not None:\\n        w = nuke.thisNode().input(0).width()\\n        h = nuke.thisNode().input(0).height()\\n        nuke.thisNode().knob('_Start').setValue((w/2-100, h/2-100))\\n        nuke.thisNode().knob('_End').setValue((w/2+100, h/2+100))\\n    \\n    else:\\n        rw = nuke.root().format().width()\\n        rh = nuke.root().format().height()\\n        nuke.thisNode().knob('_Start').setValue((rw/2-100, rh/2-100))\\n        nuke.thisNode().knob('_End').setValue((rw/2+100, rh/2+100))\"\n knobChanged \"if nuke.thisKnob().name() == 'axex':\\n    nuke.thisNode()\\['min_offset'].setValue(0)\\n    nuke.thisNode()\\['max_offset'].setValue(0)\\n\\n    xstart, ystart = nuke.thisNode().knob('_Start').value()\\n    xend, yend = nuke.thisNode().knob('_End').value()\\n    with nuke.thisNode():\\n        shuffle = nuke.toNode('Shuffle_input_channel')\\n        rs = shuffle.sample('red', xstart, ystart)\\n        gs = shuffle.sample('green', xstart, ystart)\\n        bs = shuffle.sample('blue', xstart, ystart)\\n        re = shuffle.sample('red', xend, yend)\\n        ge = shuffle.sample('green', xend, yend)\\n        be = shuffle.sample('blue', xend, yend)\\n\\n        node = nuke.toNode('Color')\\n        node.knob('min').setValue(\\[rs,gs,bs])\\n        node.knob('max').setValue(\\[re,ge,be])\\n\\nif nuke.thisKnob().name() == '_Start':\\n    if nuke.root().knob('proxy').value() == True:\\n        nuke.message('You have to disable the proxy mode')\\n    else:\\n        animated = nuke.thisKnob().isAnimated()\\n        xPos, yPos =  nuke.thisNode().knob('_Start').value()\\n        with nuke.thisNode():\\n            node = nuke.toNode('Shuffle_input_channel')\\n            r = node.sample('red', xPos, yPos)\\n            g = node.sample('green', xPos, yPos)\\n            b = node.sample('blue', xPos, yPos)\\n    \\n            node = nuke.toNode('Color')\\n            if animated:\\n                if not node.knob('min').isAnimated():\\n                    node.knob('min').setAnimated()\\n            else:\\n                node.knob('min').clearAnimated()\\n    \\n            node.knob('min').setValue(\\[r,g,b])\\n\\nif nuke.thisKnob().name() == '_End':\\n    if nuke.root().knob('proxy').value() == True:\\n        nuke.message('You have to disable the proxy mode')\\n    else:\\n        animated = nuke.thisKnob().isAnimated()\\n        xPos, yPos =  nuke.thisNode().knob('_End').value()\\n        with nuke.thisNode():\\n            node = nuke.toNode('Shuffle_input_channel')\\n            r = node.sample('red', xPos, yPos)\\n            g = node.sample('green', xPos, yPos)\\n            b = node.sample('blue', xPos, yPos)\\n    \\n            node = nuke.toNode('Color')\\n            if animated:\\n                if not node.knob('max').isAnimated():\\n                    node.knob('max').setAnimated()\\n            else:\\n                node.knob('max').clearAnimated()\\n    \\n            node.knob('max').setValue(\\[r,g,b])\\n\\nif nuke.thisKnob().name() in ('matte', 'showPanel'):\\n\\tinputT = nuke.exists('Alpha')\\n\\tmode = nuke.thisNode()\\['matte'].value()\\n\\tif mode == 'rgba.alpha':\\n\\t\\tif str(inputT)== 'True':\\n\\t\\t\\tn = nuke.toNode('Alpha')\\n\\t\\t\\tnuke.delete(n)\\n\\telse:\\n\\t\\tif str(inputT)== 'False':\\n\\t\\t\\tnuke.message('Add New Input in Node')\\n\\t\\t\\ti = nuke.createNode('Input', inpanel=False )\\n\\t\\t\\ti\\['name'].setValue('Alpha')\\n\\t\\t\\tn = nuke.toNode('Switch2')\\n\\t\\t\\tn.setInput(0,i)\\n\\nnode = nuke.thisGroup()\\nknob = nuke.thisKnob()\\n\\nif knob.name() == 'visualise':\\n    if knob.value():\\n        node\\['point_detail'].setEnabled(True)\\n        node\\['point_size'].setEnabled(True)\\n        node\\['sphere'].setEnabled(True)\\n    else:\\n        node\\['point_detail'].setEnabled(False)\\n        node\\['point_size'].setEnabled(False)\\n        node\\['sphere'].setEnabled(False)\\n\"\n tile_color 0xdda92aff\n selected true\n icon F_iconalpha.png\n addUserKnob {20 PR l \"Position Ramp\"}\n addUserKnob {6 created l INVISIBLE +INVISIBLE +STARTLINE}\n created true\n addUserKnob {41 in l \"<font color=\\\"green\\\">@b;P channel\" t \"Choose the position pass channel.\" T Shuffle_input_channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {4 axex l Axe t \"Choose the direction of the ramp.\" M {X Y Z}}\n addUserKnob {12 _Start l \"          Start \" t \"Set a position.\\nIt will be the beginning of the ramp.\" -STARTLINE}\n _Start {1604 1000}\n addUserKnob {26 S01 l \" \" T \"                     \"}\n addUserKnob {12 _End l \"End \" t \"Set a position.\\nIt will be the end of the ramp.\" -STARTLINE}\n _End {1804 1200}\n addUserKnob {26 S02 l \" \"}\n addUserKnob {7 min_offset l \"<font color=\\\"white\\\">Start <font color=\\\"grey\\\">Offset\" t \"Offset the position of the beginning of the ramp.\" R -10 10}\n addUserKnob {7 max_offset l \"<font color=\\\"white\\\">End <font color=\\\"grey\\\">Offset\" t \"Offset the position of the end of the ramp.\" R -10 10}\n addUserKnob {26 S2 l \" \" T \" \"}\n addUserKnob {4 color l Overlay t \"Show on the RGB the resulting mask using the overlay method.\\nChoose the color of the overlay mask.\" M {none red green blue black \"\" \"\" \"\"}}\n color red\n addUserKnob {4 falloff l INVISIBLE t \"Falloff profile of the feathered edge.\" +INVISIBLE M {Linear Smoothstep Cubic \"Inverse Cubic\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {20 options l \"3D Options :\" n 1}\n options 0\n addUserKnob {6 visualise l \"Visualize in 3D\" t \"Build Volume and Point Cloud in 3D Space.\" +STARTLINE}\n addUserKnob {7 point_detail l \"Point Detail\" t \"Controls the number of available points to display in the Viewer. \\n0 = No points, 1 = All available points\" +DISABLED}\n point_detail 1\n addUserKnob {7 point_size l \"Point Size\" t \"Controls the display size of the points in the Viewer\" +DISABLED R 0 10}\n point_size 2\n addUserKnob {26 S07 l \" \"}\n addUserKnob {7 sphere l \"(Start - End) Size\" t \"Adjust the size of the start point and the end point of the ramp.\" +DISABLED R 0.15 10}\n sphere 2\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 T01 l \"     (Un)Premult by\" T \"\"}\n addUserKnob {6 premult l \"\" t \"The Position Pass is divide by the Alpha channel before being processed, and multiplied again afterwards. This can improve the texturing of anti-aliased edges.\" -STARTLINE}\n addUserKnob {4 matte l \"\" t \"Choose the Alpha channel.\\nAlpha is usefull for a better result with clean edge (UnPremult / Premult).\\n\\nrgba.alpha: \\nAutomatic pick the .a from the Input.\\n\\nrgba.alpha (New Input):\\nPick the .a from an other Input.\" -STARTLINE M {rgba.alpha \"rgba.alpha (New Input)\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {1 output l INVISIBLE +INVISIBLE}\n output \"\\[if \\{\\[value visualise]==\\\"true\\\"\\} \\{return \\\"\\[knob this.tile_color 0xa30000ff]\\\"\\}  \\{return \\\"\\[knob this.tile_color 0xdda92aff]\\\"\\}]Axe \\[value axex]\"\n addUserKnob {26 FT1 l \" \" T \"                                                                                               \"}\n addUserKnob {26 FTools l \" \" t \"FranklinVFX.com\\n\" -STARTLINE T \"<font color=\\\"#1C1C1C\\\"> Franklin VFX - 2017\"}\n}\n Input {\n  inputs 0\n  name Position\n  xpos -448\n  ypos -854\n }\n Dot {\n  name Dot1\n  xpos -414\n  ypos -771\n }\nset N6946d990 [stack 0]\n Dot {\n  name Dot9\n  xpos -708\n  ypos -771\n }\nset N696aafa0 [stack 0]\npush 0\n Switch {\n  inputs 2\n  which {{!matte}}\n  name Switch2\n  xpos -1001\n  ypos -774\n }\n NoOp {\n  name AlphaCheck\n  xpos -1001\n  ypos -719\n  addUserKnob {20 User}\n  addUserKnob {6 alpha +STARTLINE}\n  alpha {{\"\\[python \\\"len(\\\\\\[n for n in nuke.channels(nuke.thisNode().input(0)) if n.find(\\\\\\\".a\\\\\\\") != -1])>0\\\"]\" i}}\n }\n AddChannels {\n  channels rgba\n  name AddAlpha\n  xpos -1001\n  ypos -695\n }\n Dot {\n  name Dot11\n  xpos -967\n  ypos -613\n }\nset N6987be00 [stack 0]\n Dot {\n  name Dot12\n  xpos -967\n  ypos 673\n }\npush $N6987be00\npush $N696aafa0\n Shuffle {\n  in rgb\n  name Shuffle_input_channel\n  knobChanged \"if nuke.thisKnob().name() == 'in':\\n    xPos, yPos = nuke.thisGroup().knob('_Start').value()\\n    r = nuke.thisNode().sample('red', xPos, yPos)\\n    g = nuke.thisNode().sample('green', xPos, yPos)\\n    b = nuke.thisNode().sample('blue', xPos, yPos)\\n    node = nuke.toNode('Color')\\n    node.knob('min').setValue(\\[r,g,b])\\n\\n    xPos, yPos = nuke.thisGroup().knob('_End').value()\\n    r = nuke.thisNode().sample('red', xPos, yPos)\\n    g = nuke.thisNode().sample('green', xPos, yPos)\\n    b = nuke.thisNode().sample('blue', xPos, yPos)\\n    node.knob('max').setValue(\\[r,g,b])\"\n  xpos -742\n  ypos -696\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -742\n  ypos -622\n }\nset N698913e0 [stack 0]\n Unpremult {\n  name Unpremult2\n  xpos -872\n  ypos -536\n  disable {{!AlphaCheck.alpha i}}\n }\npush $N698913e0\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch9\n  xpos -742\n  ypos -457\n }\n Dot {\n  name Dot8\n  xpos -708\n  ypos -353\n }\nset N698aacb0 [stack 0]\n Expression {\n  channel0 alpha\n  expr0 clamp((b-(Color.min.b+parent.min_offset))/((Color.max.b+parent.max_offset)-(Color.min.b+parent.min_offset)),0,1)\n  channel1 none\n  channel2 none\n  name Z\n  xpos -639\n  ypos -216\n }\nset N698aeb40 [stack 0]\npush $N698aacb0\n Expression {\n  channel0 alpha\n  expr0 clamp((g-(Color.min.g+parent.min_offset))/((Color.max.g+parent.max_offset)-(Color.min.g+parent.min_offset)),0,1)\n  channel1 none\n  channel2 none\n  name Y\n  xpos -742\n  ypos -216\n }\nset N698bae80 [stack 0]\npush $N698aacb0\n Expression {\n  channel0 alpha\n  expr0 clamp((r-(Color.min.r+parent.min_offset))/((Color.max.r+parent.max_offset)-(Color.min.r+parent.min_offset)),0,1)\n  channel1 none\n  channel2 none\n  name X\n  xpos -848\n  ypos -216\n }\nset N698c71f0 [stack 0]\n Switch {\n  inputs 3\n  which {{axex}}\n  name Switch3\n  xpos -742\n  ypos -93\n }\n Dot {\n  name Dot3\n  xpos -708\n  ypos 137\n }\nset N698da240 [stack 0]\n Dot {\n  name Dot16\n  xpos -708\n  ypos 233\n }\nset N698de130 [stack 0]\n Dot {\n  name Dot4\n  xpos -708\n  ypos 303\n }\npush $N698de130\npush $N6987be00\npush $N6946d990\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -448\n  ypos -623\n }\nset N698e5ed0 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos -578\n  ypos -537\n  disable {{!AlphaCheck.alpha i}}\n }\npush $N698e5ed0\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch4\n  xpos -448\n  ypos -458\n }\nset N695085d0 [stack 0]\n Grade {\n  inputs 1+1\n  white 0\n  add {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"red\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"green\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"blue\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {multiply}}\n  name Grade3\n  xpos -448\n  ypos 230\n  disable {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"none\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy3\n  xpos -448\n  ypos 293\n }\n Dot {\n  name Dot5\n  xpos -414\n  ypos 374\n }\nset N68389690 [stack 0]\n Dot {\n  name Dot6\n  xpos -529\n  ypos 374\n }\n Dot {\n  name Dot7\n  xpos -529\n  ypos 583\n }\n Axis2 {\n  inputs 0\n  display solid\n  selectable false\n  translate {{\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.max+parent.max_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.max\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"X\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex\\\\n]\" i} {\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.max+parent.max_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.max\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"Y\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex\\\\n]\" i} {\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.max+parent.max_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.max\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"Z\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex\\\\n]\" i}}\n  name End\n  tile_color 0xa30000ff\n  xpos 666\n  ypos -139\n  disable {{!parent.visualise i}}\n }\n Axis2 {\n  inputs 0\n  display solid+wireframe\n  selectable false\n  translate {{\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.min+parent.min_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.min\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"X\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex\\\\n]\"} {\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.min+parent.min_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.min\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"Y\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex]\"} {\"\\[python -execlocal axe\\\\ =\\\\ nuke.thisGroup().knob('axex').value()\\\\noffset\\\\ =\\\\ (\\\\\\\"Color.min+parent.min_offset\\\\\\\")\\\\nex\\\\ =\\\\ (\\\\\\\"Color.min\\\\\\\")\\\\n\\\\nif\\\\ axe\\\\ ==\\\\ \\\\\\\"Z\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ offset\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ ex]\"}}\n  name Start\n  xpos 272\n  ypos -138\n  disable {{!parent.visualise x104 1}}\n }\npush $N698aeb40\npush $N695085d0\n Dot {\n  name Dot10\n  xpos -7\n  ypos -454\n }\nset N69c017d0 [stack 0]\n Grade {\n  inputs 1+1\n  white 0\n  add {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"red\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"green\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"blue\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {multiply}}\n  name Grade7\n  xpos 92\n  ypos -216\n  disable {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"none\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"}}\n }\npush $N698aacb0\n Dot {\n  name Dot13\n  xpos -256\n  ypos -353\n }\n Dot {\n  name Dot14\n  xpos -256\n  ypos -163\n }\nset N69c16570 [stack 0]\n PositionToPoints {\n  inputs 2\n  display textured\n  selectable false\n  render_mode textured\n  detail {{point_detail}}\n  pointSize {{point_size}}\n  name PositionToPoints3\n  xpos 92\n  ypos -167\n  disable {{!parent.visualise}}\n }\npush $N698bae80\npush $N69c017d0\n Grade {\n  inputs 1+1\n  white 0\n  add {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"red\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"green\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"blue\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {multiply}}\n  name Grade5\n  xpos -41\n  ypos -216\n  disable {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"none\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"}}\n }\npush $N69c16570\n PositionToPoints {\n  inputs 2\n  display textured\n  selectable false\n  render_mode textured\n  detail {{point_detail}}\n  pointSize {{point_size}}\n  name PositionToPoints2\n  xpos -41\n  ypos -167\n  disable {{!parent.visualise}}\n }\npush $N698c71f0\npush $N69c017d0\n Grade {\n  inputs 1+1\n  white 0\n  add {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"red\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"green\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"blue\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {multiply}}\n  name Grade4\n  xpos -166\n  ypos -216\n  disable {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"none\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"}}\n }\npush $N69c16570\n PositionToPoints {\n  inputs 2\n  display textured\n  selectable false\n  render_mode textured\n  detail {{point_detail}}\n  pointSize {{point_size}}\n  name PositionToPoints1\n  xpos -166\n  ypos -167\n  disable {{!parent.visualise}}\n }\n Switch {\n  inputs 3\n  which {{axex}}\n  name Switch5\n  xpos -41\n  ypos 35\n  disable {{!parent.visualise}}\n }\npush $N6946d990\n Dot {\n  name Dot15\n  xpos 479\n  ypos -771\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 445\n  ypos -362\n  disable {{!parent.visualise}}\n }\n Grade {\n  white 0\n  add {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"red\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"green\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"blue\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"} {multiply}}\n  name Grade1\n  xpos 445\n  ypos -324\n  disable {{\"\\[python -execlocal col\\\\ =\\\\ nuke.thisGroup().knob('color').value()\\\\n\\\\nif\\\\ col\\\\ ==\\\\ \\\\\\\"none\\\\\\\":\\\\n\\\\ ret\\\\ =\\\\ 1\\\\nelse:\\\\n\\\\ ret\\\\ =\\\\ 0]\"}}\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 445\n  ypos -298\n  disable {{!parent.visualise}}\n }\n Multiply {\n  value 0.1\n  name Multiply1\n  xpos 445\n  ypos -272\n  disable {{!parent.visualise}}\n }\nset N69c78280 [stack 0]\n Sphere {\n  selectable false\n  rows 10\n  columns 10\n  radius {{abs(parent.sphere-0.25/2)}}\n  translate {{parent.Start.translate} {parent.Start.translate} {parent.Start.translate}}\n  name Sphere3\n  xpos 398\n  ypos -119\n  disable {{!parent.visualise}}\n }\npush $N69c78280\n Sphere {\n  selectable false\n  rows 10\n  columns 10\n  radius {{abs(parent.sphere-0.25/2)}}\n  translate {{parent.End.translate} {parent.End.translate} {parent.End.translate}}\n  name Sphere4\n  xpos 510\n  ypos -121\n  disable {{!parent.visualise}}\n }\n Scene {\n  inputs 5\n  name Scene1\n  xpos 462\n  ypos 15\n  disable {{!parent.visualise}}\n }\npush $N698da240\n ScanlineRender {\n  inputs 2\n  name ScanlineRender1\n  xpos 452\n  ypos 134\n  disable true\n }\n Dot {\n  name Dot2\n  xpos 486\n  ypos 474\n }\npush $N68389690\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge1\n  xpos -448\n  ypos 470\n  disable true\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -448\n  ypos 579\n }\nset N69047110 [stack 0]\n Multiply {\n  inputs 1+1\n  value 0\n  invert_mask true\n  name Multiply3\n  xpos -563\n  ypos 663\n  disable {{!AlphaCheck.alpha i}}\n }\npush $N69047110\n Switch {\n  inputs 2\n  which {{parent.premult}}\n  name Switch10\n  xpos -448\n  ypos 756\n }\n Output {\n  name FranklinVFX\n  xpos -448\n  ypos 841\n }\npush $N698aacb0\n NoOp {\n  name Color\n  xpos -848\n  ypos -357\n  hide_input true\n  addUserKnob {20 User}\n  addUserKnob {18 min}\n  min {0 0 0}\n  addUserKnob {6 min_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 min_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 max}\n  max {0 0 0}\n  addUserKnob {6 max_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 max_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FastComplexityDistort.gizmo",
    "content": "Group {\n name FastComplexity_Distort\n tile_color 0xa57aaaff\n selected true\n addUserKnob {20 User}\n addUserKnob {26 text l \"\" +STARTLINE T \"<p style=\\\"font-size:20px\\\">Fast IDistort & STMap v1.0</p>\\nFast implementation of iDistort and STMap for UV's with high complexity/detail\\n<p style=\\\"font-size:10px\\\"></p>\\n \"}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T BlinkScript33.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {4 method l Method M {ST-Map IDistort}}\n addUserKnob {41 SaturationKernel_scaler l \"Mip Level Scale\" t \"Scale mip level by this value \\nHigher = Softer\\nLower = Sharper but might skip details\" T BlinkScript33.SaturationKernel_scaler}\n addUserKnob {6 boolean l \"Keep uv Alpha\" +STARTLINE}\n boolean true\n addUserKnob {20 advanced_tab l Advanced}\n addUserKnob {41 SaturationKernel_mip_levels l \"mip limit\" t \"Clamp mip level at this\" T BlinkScript33.SaturationKernel_mip_levels}\n}\n Input {\n  inputs 0\n  name InputUV\n  xpos 701\n  ypos 121\n  number 1\n }\nset N8a65150 [stack 0]\n Input {\n  inputs 0\n  name InputSrc\n  xpos 583\n  ypos 119\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 583\n  ypos 177\n }\n Dot {\n  name Dot2\n  xpos 617\n  ypos 254\n }\nset N2d0e67e0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat26\n  xpos 78\n  ypos 251\n }\nset N67cce60 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat27\n  xpos 78\n  ypos 299\n }\nset N8cbca560 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat28\n  xpos 78\n  ypos 342\n }\nset Nfc78aed0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat29\n  xpos 78\n  ypos 401\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset N78628ad0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat30\n  xpos 78\n  ypos 449\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset N3934e4d0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat31\n  xpos 78\n  ypos 504\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset N278cb280 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat32\n  xpos 78\n  ypos 552\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset N8d4631a0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat33\n  xpos 78\n  ypos 608\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset Nb96b1920 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat34\n  xpos 78\n  ypos 664\n  disable {{!(min(input.width,input.height)>1)}}\n }\nset N100bb4d0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat35\n  xpos 78\n  ypos 719\n  disable {{!(min(input.width,input.height)>1)}}\n }\npush $N100bb4d0\npush $Nb96b1920\npush $N8d4631a0\npush $N278cb280\npush $N3934e4d0\npush $N78628ad0\npush $Nfc78aed0\npush $N8cbca560\npush $N67cce60\npush $N2d0e67e0\npush $N8a65150\n Grade {\n  white {{InputSrc.width} {InputSrc.height} 0 0}\n  white_panelDropped true\n  black_clamp false\n  name Grade44\n  xpos 812\n  ypos 225\n  disable {{parent.method!=0}}\n }\nset N8f0652a0 [stack 0]\npush $N8a65150\n Expression {\n  expr0 (x)/width\n  expr1 (y)/height\n  name Expression2\n  xpos 701\n  ypos 229\n }\n Grade {\n  white {{InputSrc.width} {InputSrc.height} 0 0}\n  white_panelDropped true\n  black_clamp false\n  name Grade2\n  xpos 701\n  ypos 253\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge1\n  xpos 812\n  ypos 373\n }\npush $N8f0652a0\n Expression {\n  expr0 r-.5\n  expr1 g-.5\n  name Expression11\n  xpos 937\n  ypos 225\n }\n Dot {\n  name Dot3\n  xpos 971\n  ypos 258\n }\n Dot {\n  name Dot4\n  xpos 971\n  ypos 459\n }\n Switch {\n  inputs 2\n  which {{parent.method}}\n  name Switch1\n  xpos 812\n  ypos 456\n }\n Dot {\n  name Dot1\n  xpos 846\n  ypos 722\n }\n BlinkScript {\n  inputs 12\n  recompileCount 226\n  ProgramGroup 1\n  KernelDescription \"3 \\\"SaturationKernel\\\" iterate pixelWise d50b72ba34d6ca9c9e9846cee724250e1501d93b99201af43f5270b3281f99ff 13 \\\"srcUV\\\" Read Random \\\"src00\\\" Read Random \\\"src01\\\" Read Random \\\"src02\\\" Read Random \\\"src03\\\" Read Random \\\"src04\\\" Read Random \\\"src05\\\" Read Random \\\"src06\\\" Read Random \\\"src07\\\" Read Random \\\"src08\\\" Read Random \\\"src09\\\" Read Random \\\"src10\\\" Read Random \\\"dst\\\" Write Point 3 \\\"mip_levels\\\" Int 1 AAAAAA== \\\"scaler\\\" Float 1 AAAAAA== \\\"miplevel\\\" Int 1 AAAAAA== 3 \\\"mip_levels\\\" 1 1 Default \\\"scaler\\\" 1 1 Default \\\"miplevel\\\" 1 1 Default 0\"\n  kernelSource \"inline float4 mix(float4 _X,float4 _Y,float _A)\\{\\n  return _X*(1.0f-_A)+_Y*_A;\\n\\}\\ninline float fract(float a_X)\\n\\{\\n    return a_X-floor(a_X);\\n\\}\\n\\nkernel SaturationKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> srcUV; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src00; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src01; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src02; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src03; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src04; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src05; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src06; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src07; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src08; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src09; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> src10; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    int mip_levels;\\n    float scaler;\\n    int miplevel; //Not implemented, but used to control the mip manually\\n\\n  float4 reader( float2 position, int mip_level )\\{\\n    if (mip_level == 0)\\{\\n      return bilinear(src00,position.x,position.y);\\n    \\}\\n    else if (mip_level == 1)\\{\\n      return bilinear(src01,position.x-.25f,position.y-.25f);\\n    \\}\\n    else if (mip_level == 2)\\{\\n      return bilinear(src02,position.x-0.5f,position.y-0.5f);\\n    \\}\\n    else if (mip_level == 3)\\{\\n      return bilinear(src03,position.x-0.5f,position.y-0.5f);\\n    \\}\\n    else if (mip_level == 4)\\{\\n      return bilinear(src04,position.x-0.5f,position.y-0.5f);\\n    \\}\\n    else if (mip_level == 5)\\{\\n      return bilinear(src05,position.x-0.5f,position.y-0.5f);\\n    \\}    \\n    else if (mip_level == 6)\\{\\n      return bilinear(src06,position.x-0.5f,position.y-0.5f);\\n    \\}   \\n    else if (mip_level == 7)\\{\\n      return bilinear(src07,position.x-0.5f,position.y-0.5f);\\n    \\}   \\n    else if (mip_level == 8)\\{\\n      return bilinear(src08,position.x-0.5f,position.y-0.5f);\\n    \\}   \\n    else if (mip_level == 9)\\{\\n      return bilinear(src09,position.x-0.5f,position.y-0.5f);\\n    \\}     \\n    else \\{\\n      return bilinear(src10,position.x-0.5f,position.y-0.5f);\\n    \\}          \\n  \\}\\n\\n  void process(int2 pos) \\{\\n      float4 p1 = srcUV(pos.x, pos.y);\\n      float4 p2 = srcUV(pos.x + 1, pos.y);\\n      float4 p3 = srcUV(pos.x, pos.y + 1);\\n      float4 p4 = srcUV(pos.x + 1, pos.y + 1);\\n\\n      float minX = min(min(p1.x, p2.x), min(p3.x, p4.x));\\n      float maxX = max(max(p1.x, p2.x), max(p3.x, p4.x));\\n      float minY = min(min(p1.y, p2.y), min(p3.y, p4.y));\\n      float maxY = max(max(p1.y, p2.y), max(p3.y, p4.y));\\n\\n      float width = maxX - minX;\\n      float height = maxY - minY;\\n      float mipfract = max(0.0f, min(mip_levels, (log2(max(width, height)) * scaler) + 0.0f));\\n      //mipfract = (int)miplevel; //Used to manually control the mip, not implemented\\n      int mipLevel = int(mipfract);\\n\\n      float2 fpos = float2(p1.x,p1.y);\\n\\n      float4 sample = reader(fpos/(pow(2.0f,mipLevel)),mipLevel);\\n      sample = mix(sample,reader(fpos/(pow(2.0f,mipLevel+1.0)),mipLevel+1.0f),fract(mipfract));\\n\\n      dst() =sample;\\n    \\}\\n\\n\\};\\n\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  SaturationKernel_mip_levels 10\n  SaturationKernel_scaler 0.75\n  SaturationKernel_miplevel 7\n  rebuild_finalise \"\"\n  name BlinkScript33\n  xpos 583\n  ypos 713\n }\n Merge2 {\n  inputs 2\n  operation copy\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Merge2\n  xpos 583\n  ypos 864\n  disable {{!parent.boolean}}\n }\n Output {\n  name Output1\n  xpos 583\n  ypos 1019\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FillSampler.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name FillSampler\n selected true\n addUserKnob {20 User}\n addUserKnob {26 Info l \" \" T \"FFFiller by Mads Hagbarth Damsbo\\nAdd a source with a alpha mask to fill out.\"}\n addUserKnob {26 \"\"}\n addUserKnob {3 Itterations}\n Itterations 2\n addUserKnob {26 \"\"}\n addUserKnob {6 Premult -STARTLINE}\n Premult true\n addUserKnob {20 Advanced}\n addUserKnob {3 MaxSamples l \"Max Sample Count\" -STARTLINE}\n MaxSamples 13\n addUserKnob {3 SoftAlphaSamples l \"Soft Alpha Samples\"}\n SoftAlphaSamples 1\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x8e388e00\n  label \"This is a example of the \\nsimple version of the algorithm\"\n  note_font_size 20\n  xpos 1302\n  ypos 428\n  bdwidth 278\n  bdheight 135\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x8e388e00\n  label \"This is the more advanced version\"\n  note_font_size 20\n  xpos 1867\n  ypos 428\n  bdwidth 301\n  bdheight 133\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 1678\n  ypos 282\n }\n NoTimeBlur {\n  name NoTimeBlur1\n  xpos 1678\n  ypos 331\n }\n Grade {\n  channels alpha\n  add {{-(frame-floor(frame))}}\n  name Grade1\n  xpos 1678\n  ypos 357\n }\n Premult {\n  name Premult1\n  xpos 1678\n  ypos 397\n  disable {{!parent.Premult}}\n }\n Dot {\n  name Dot5\n  xpos 1712\n  ypos 445\n }\nset N1a123c00 [stack 0]\n Group {\n  name Group6\n  xpos 1990\n  ypos 501\n  addUserKnob {20 User}\n  addUserKnob {3 maxsample l \"Max Sample Depth\"}\n  maxsample {{parent.MaxSamples}}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -524\n   ypos -4613\n  }\n  Dot {\n   name Dot7\n   xpos -490\n   ypos -4579\n  }\n  Dot {\n   name Controller\n   tile_color 0x55ffffff\n   gl_color 0x55ffffff\n   label ControllerNode\n   note_font \"DejaVu Sans Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n   note_font_color 0xaadfffff\n   xpos -490\n   ypos -4485\n   addUserKnob {20 User}\n   addUserKnob {3 samples}\n   samples {{min(parent.maxsample,int(log(min(input.width,input.height))/log(2)))}}\n  }\nset N1a12f060 [stack 0]\n  Dot {\n   name Controller1\n   tile_color 0x55ffffff\n   gl_color 0x55ffffff\n   label ControllerNode\n   note_font \"DejaVu Sans Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n   note_font_color 0xaadfffff\n   xpos 323\n   ypos -4473\n   addUserKnob {20 User}\n   addUserKnob {3 samples}\n   samples {{min(parent.maxsample,int(log(min(input.width,input.height))/log(2)))}}\n  }\nset N1a131d00 [stack 0]\n  Matrix {\n   matrix {\n       {0 0 0}\n       {1 1 0}\n       {1 1 0}\n     }\n   name Matrix10\n   xpos 393\n   ypos -4306\n  }\n  set C23536d30 [stack 0]\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat1\n   xpos 393\n   ypos -4274\n   disable {{Controller1.samples<1}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression5\n   xpos 393\n   ypos -4250\n  }\nset N1a13ff40 [stack 0]\n  Reformat {\n   type \"to box\"\n   box_width {{parent.Controller1.input.width}}\n   box_height {{parent.Controller1.input.height}}\n   box_fixed true\n   scale 0.5\n   filter Parzen\n   name Reformat38\n   xpos 283\n   ypos -4250\n  }\n  set C1a1465b0 [stack 0]\npush $N1a131d00\n  Dot {\n   name Dot1\n   xpos -45\n   ypos -4347\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge3\n   xpos -183\n   ypos -4250\n  }\nset N235370f0 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -4218\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat14\n   xpos 393\n   ypos -4186\n   disable {{Controller1.samples<2}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -4162\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat25\n   xpos 393\n   ypos -4130\n   disable {{Controller1.samples<2}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression7\n   xpos 393\n   ypos -4106\n  }\nset N1a167ca0 [stack 0]\nclone $C1a1465b0 {\n   xpos 295\n   ypos -4106\n   selected false\n  }\npush $N235370f0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge13\n   xpos -183\n   ypos -4106\n   disable {{Controller1.samples<2-1}}\n  }\nset N1a1751d0 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -4057\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat15\n   xpos 393\n   ypos -4025\n   disable {{Controller1.samples<3}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -4001\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat26\n   xpos 393\n   ypos -3969\n   disable {{Controller1.samples<3}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3945\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat27\n   xpos 393\n   ypos -3913\n   disable {{Controller1.samples<3}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression8\n   xpos 393\n   ypos -3867\n  }\nset N1a19fa60 [stack 0]\nclone $C1a1465b0 {\n   xpos 289\n   ypos -3861\n   selected false\n  }\npush $N1a1751d0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge15\n   xpos -183\n   ypos -3861\n   disable {{Controller1.samples<3-1}}\n  }\nset N1a1acfb0 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -3804\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat16\n   xpos 393\n   ypos -3772\n   disable {{Controller1.samples<4}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3748\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat28\n   xpos 393\n   ypos -3716\n   disable {{Controller1.samples<4}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3692\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat29\n   xpos 393\n   ypos -3660\n   disable {{Controller1.samples<4}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3636\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat30\n   xpos 393\n   ypos -3604\n   disable {{Controller1.samples<4}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression9\n   xpos 393\n   ypos -3549\n  }\nset N1a1e3bf0 [stack 0]\nclone $C1a1465b0 {\n   xpos 289\n   ypos -3543\n   selected false\n  }\npush $N1a1acfb0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge16\n   xpos -183\n   ypos -3543\n   disable {{Controller1.samples<4-1}}\n  }\nset N1a1f1090 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -3487\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat17\n   xpos 393\n   ypos -3455\n   disable {{Controller1.samples<5}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3431\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat31\n   xpos 393\n   ypos -3399\n   disable {{Controller1.samples<5}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3375\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat32\n   xpos 393\n   ypos -3343\n   disable {{Controller1.samples<5}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3319\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat33\n   xpos 393\n   ypos -3287\n   disable {{Controller1.samples<5}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3263\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat34\n   xpos 393\n   ypos -3231\n   disable {{Controller1.samples<5}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression10\n   xpos 393\n   ypos -3165\n  }\nset N24f38190 [stack 0]\nclone $C1a1465b0 {\n   xpos 289\n   ypos -3159\n   selected false\n  }\npush $N1a1f1090\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge17\n   xpos -183\n   ypos -3159\n   disable {{Controller1.samples<5-1}}\n  }\nset N24f454e0 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -3125\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat18\n   xpos 393\n   ypos -3093\n   disable {{Controller1.samples<6}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3069\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat35\n   xpos 393\n   ypos -3037\n   disable {{Controller1.samples<6}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -3013\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat36\n   xpos 393\n   ypos -2981\n   disable {{Controller1.samples<6}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2957\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat37\n   xpos 393\n   ypos -2925\n   disable {{Controller1.samples<6}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2901\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat39\n   xpos 393\n   ypos -2869\n   disable {{Controller1.samples<6}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2845\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat40\n   xpos 393\n   ypos -2813\n   disable {{Controller1.samples<6}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression18\n   xpos 393\n   ypos -2771\n  }\nset N24f94020 [stack 0]\nclone $C1a1465b0 {\n   xpos 289\n   ypos -2765\n   selected false\n  }\npush $N24f454e0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge18\n   xpos -183\n   ypos -2765\n   disable {{Controller1.samples<6-1}}\n  }\nset N24fa1550 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -2701\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat19\n   xpos 393\n   ypos -2669\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2645\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat41\n   xpos 393\n   ypos -2613\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2589\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat42\n   xpos 393\n   ypos -2557\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2533\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat43\n   xpos 393\n   ypos -2501\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2477\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat44\n   xpos 393\n   ypos -2445\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2421\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat45\n   xpos 393\n   ypos -2389\n   disable {{Controller1.samples<7}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2365\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat46\n   xpos 393\n   ypos -2333\n   disable {{Controller1.samples<7}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression19\n   xpos 393\n   ypos -2303\n  }\nset N2358ee20 [stack 0]\nclone $C1a1465b0 {\n   xpos 289\n   ypos -2297\n   selected false\n  }\npush $N24fa1550\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge19\n   xpos -183\n   ypos -2297\n   disable {{Controller1.samples<7-1}}\n  }\nset N2359c350 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -2213\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat20\n   xpos 393\n   ypos -2181\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2157\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat47\n   xpos 393\n   ypos -2125\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2101\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat48\n   xpos 393\n   ypos -2069\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -2045\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat49\n   xpos 393\n   ypos -2013\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1989\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat50\n   xpos 393\n   ypos -1957\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1933\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat51\n   xpos 393\n   ypos -1901\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1877\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat52\n   xpos 393\n   ypos -1845\n   disable {{Controller1.samples<8}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1821\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat53\n   xpos 393\n   ypos -1789\n   disable {{Controller1.samples<8}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression20\n   xpos 393\n   ypos -1729\n  }\nset N25007230 [stack 0]\nclone $C1a1465b0 {\n   xpos 283\n   ypos -1729\n   selected false\n  }\npush $N2359c350\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge20\n   xpos -183\n   ypos -1729\n   disable {{Controller1.samples<8-1}}\n  }\nset N25014760 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -1668\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat21\n   xpos 393\n   ypos -1636\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1612\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat54\n   xpos 393\n   ypos -1580\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1556\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat55\n   xpos 393\n   ypos -1524\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1500\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat56\n   xpos 393\n   ypos -1468\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1444\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat57\n   xpos 393\n   ypos -1412\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1388\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat58\n   xpos 393\n   ypos -1356\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1332\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat59\n   xpos 393\n   ypos -1300\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1276\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat60\n   xpos 393\n   ypos -1244\n   disable {{Controller1.samples<9}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -1220\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat61\n   xpos 393\n   ypos -1188\n   disable {{Controller1.samples<9}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression21\n   xpos 393\n   ypos -1131\n  }\nset N25087800 [stack 0]\nclone $C1a1465b0 {\n   xpos 283\n   ypos -1131\n   selected false\n  }\npush $N25014760\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge21\n   xpos -183\n   ypos -1131\n   disable {{Controller1.samples<9-1}}\n  }\nset N25094d30 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -1051\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat22\n   xpos 393\n   ypos -1015\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -991\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat62\n   xpos 393\n   ypos -959\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -935\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat63\n   xpos 393\n   ypos -899\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -875\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat64\n   xpos 393\n   ypos -839\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -815\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat65\n   xpos 393\n   ypos -783\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -759\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat66\n   xpos 393\n   ypos -727\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -703\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat67\n   xpos 393\n   ypos -671\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -647\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat68\n   xpos 393\n   ypos -615\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -591\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat69\n   xpos 393\n   ypos -555\n   disable {{Controller1.samples<10}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -531\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat70\n   xpos 393\n   ypos -495\n   disable {{Controller1.samples<10}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression22\n   xpos 393\n   ypos -447\n  }\nset N24fb1cd0 [stack 0]\nclone $C1a1465b0 {\n   xpos 283\n   ypos -447\n   selected false\n  }\npush $N25094d30\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge22\n   xpos -183\n   ypos -447\n   disable {{Controller1.samples<10-1}}\n  }\nset N24fbf200 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos -348\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat23\n   xpos 393\n   ypos -316\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -292\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat71\n   xpos 393\n   ypos -260\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -236\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat72\n   xpos 393\n   ypos -204\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -180\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat73\n   xpos 393\n   ypos -148\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -124\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat74\n   xpos 393\n   ypos -92\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -68\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat75\n   xpos 393\n   ypos -36\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos -12\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat76\n   xpos 393\n   ypos 20\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 44\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat77\n   xpos 393\n   ypos 76\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 100\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat78\n   xpos 393\n   ypos 132\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 156\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat79\n   xpos 393\n   ypos 188\n   disable {{Controller1.samples<11}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 212\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat80\n   xpos 393\n   ypos 244\n   disable {{Controller1.samples<11}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression23\n   xpos 397\n   ypos 327\n  }\nset N2faf20 [stack 0]\nclone $C1a1465b0 {\n   xpos 287\n   ypos 327\n   selected false\n  }\npush $N24fbf200\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge23\n   xpos -183\n   ypos 327\n   disable {{Controller1.samples<11-1}}\n  }\nset N2520c420 [stack 0]\nclone $C23536d30 {\n   xpos 393\n   ypos 414\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat24\n   xpos 393\n   ypos 446\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 470\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat81\n   xpos 393\n   ypos 502\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 526\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat82\n   xpos 393\n   ypos 558\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 582\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat83\n   xpos 393\n   ypos 614\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 638\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat84\n   xpos 393\n   ypos 670\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 694\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat85\n   xpos 393\n   ypos 726\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 750\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat86\n   xpos 393\n   ypos 782\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 806\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat87\n   xpos 393\n   ypos 838\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 862\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat88\n   xpos 393\n   ypos 894\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 918\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat89\n   xpos 393\n   ypos 950\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 974\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat90\n   xpos 393\n   ypos 1006\n   disable {{Controller1.samples<12}}\n  }\nclone $C23536d30 {\n   xpos 393\n   ypos 1030\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat91\n   xpos 393\n   ypos 1062\n   disable {{Controller1.samples<12}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression24\n   xpos 393\n   ypos 1126\n  }\nset N24fd0640 [stack 0]\npush $N2faf20\npush $N24fb1cd0\npush $N25087800\npush $N25007230\npush $N2358ee20\npush $N24f94020\npush $N24f38190\npush $N1a1e3bf0\npush $N1a19fa60\npush $N1a167ca0\npush $N1a13ff40\npush $N1a12f060\nclone $C23536d30 {\n   xpos -420\n   ypos -4325\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat11\n   xpos -420\n   ypos -4293\n   disable {{Controller.samples<1}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression17\n   xpos -420\n   ypos -4269\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=1}}\n   name Switch1\n   xpos -420\n   ypos -4245\n  }\nset N252a78e0 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -4168\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat10\n   xpos -420\n   ypos -4136\n   disable {{Controller.samples<2}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression16\n   xpos -420\n   ypos -4112\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=2}}\n   name Switch3\n   xpos -420\n   ypos -4088\n  }\nset N24ff5320 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -3935\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat9\n   xpos -420\n   ypos -3903\n   disable {{Controller.samples<3}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression2\n   xpos -420\n   ypos -3879\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=3}}\n   name Switch4\n   xpos -420\n   ypos -3855\n  }\nset N2530f7a0 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -3608\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat8\n   xpos -420\n   ypos -3576\n   disable {{Controller.samples<4}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression4\n   xpos -420\n   ypos -3552\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=4}}\n   name Switch5\n   xpos -420\n   ypos -3528\n  }\nset N2531da70 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -3233\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat7\n   xpos -420\n   ypos -3201\n   disable {{Controller.samples<5}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression6\n   xpos -420\n   ypos -3173\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=5}}\n   name Switch6\n   xpos -420\n   ypos -3149\n  }\nset N252af350 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -2831\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat6\n   xpos -420\n   ypos -2799\n   disable {{Controller.samples<6}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression11\n   xpos -420\n   ypos -2775\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=6}}\n   name Switch7\n   xpos -420\n   ypos -2751\n  }\nset N252c5a30 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -2372\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat5\n   xpos -420\n   ypos -2340\n   disable {{Controller.samples<7}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression12\n   xpos -420\n   ypos -2316\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=7}}\n   name Switch8\n   xpos -420\n   ypos -2292\n  }\nset N252dbfd0 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -1804\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat4\n   xpos -420\n   ypos -1772\n   disable {{Controller.samples<8}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression13\n   xpos -420\n   ypos -1748\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=8}}\n   name Switch9\n   xpos -420\n   ypos -1724\n  }\nset N252f2570 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -1194\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat3\n   xpos -420\n   ypos -1162\n   disable {{Controller.samples<9}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression14\n   xpos -420\n   ypos -1138\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=9}}\n   name Switch10\n   xpos -420\n   ypos -1114\n  }\nset N2540cb90 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos -505\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat2\n   xpos -420\n   ypos -469\n   disable {{Controller.samples<10}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression15\n   xpos -420\n   ypos -445\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=10}}\n   name Switch11\n   xpos -420\n   ypos -421\n  }\nset N25423130 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos 276\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat13\n   xpos -420\n   ypos 308\n   disable {{Controller.samples<11}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression1\n   xpos -420\n   ypos 339\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=11}}\n   name Switch12\n   xpos -420\n   ypos 363\n  }\nset N254396d0 [stack 0]\nclone $C23536d30 {\n   xpos -420\n   ypos 1014\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat12\n   xpos -420\n   ypos 1060\n   disable {{Controller.samples<12}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression3\n   xpos -420\n   ypos 1096\n  }\n  Switch {\n   inputs 2\n   which {{parent.parent.Itterations>=12}}\n   name Switch13\n   xpos -420\n   ypos 1120\n  }\nclone $C1a1465b0 {\n   xpos -530\n   ypos 1096\n   selected false\n  }\npush $N254396d0\nclone $C1a1465b0 {\n   xpos -530\n   ypos 339\n   selected false\n  }\npush $N25423130\nclone $C1a1465b0 {\n   xpos -530\n   ypos -445\n   selected false\n  }\npush $N2540cb90\nclone $C1a1465b0 {\n   xpos -530\n   ypos -1138\n   selected false\n  }\npush $N252f2570\nclone $C1a1465b0 {\n   xpos -530\n   ypos -1748\n   selected false\n  }\npush $N252dbfd0\nclone $C1a1465b0 {\n   xpos -524\n   ypos -2310\n   selected false\n  }\npush $N252c5a30\nclone $C1a1465b0 {\n   xpos -524\n   ypos -2769\n   selected false\n  }\npush $N252af350\nclone $C1a1465b0 {\n   xpos -524\n   ypos -3167\n   selected false\n  }\npush $N2531da70\nclone $C1a1465b0 {\n   xpos -524\n   ypos -3546\n   selected false\n  }\npush $N2530f7a0\nclone $C1a1465b0 {\n   xpos -524\n   ypos -3873\n   selected false\n  }\npush $N24ff5320\nclone $C1a1465b0 {\n   xpos -518\n   ypos -4112\n   selected false\n  }\npush $N252a78e0\nclone $C1a1465b0 {\n   xpos -530\n   ypos -4269\n   selected false\n  }\npush $N1a12f060\n  Dot {\n   name Dot6\n   xpos -962\n   ypos -4485\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge4\n   xpos -996\n   ypos -4269\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge5\n   xpos -996\n   ypos -4112\n   disable {{Controller.samples<2-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge6\n   xpos -996\n   ypos -3873\n   disable {{Controller.samples<3-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge7\n   xpos -996\n   ypos -3546\n   disable {{Controller.samples<4-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge8\n   xpos -996\n   ypos -3167\n   disable {{Controller.samples<5-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge9\n   xpos -996\n   ypos -2769\n   disable {{Controller.samples<6-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge10\n   xpos -996\n   ypos -2310\n   disable {{Controller.samples<7-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge11\n   xpos -996\n   ypos -1748\n   disable {{Controller.samples<8-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge14\n   xpos -996\n   ypos -1138\n   disable {{Controller.samples<9-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge12\n   xpos -996\n   ypos -445\n   disable {{Controller.samples<10-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge1\n   xpos -1000\n   ypos 339\n   disable {{Controller.samples<11-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge2\n   xpos -1000\n   ypos 1096\n   disable {{Controller.samples<12-1}}\n  }\n  Output {\n   name Output1\n   xpos -1000\n   ypos 1203\n  }\npush $N24fd0640\nclone $C1a1465b0 {\n   xpos 283\n   ypos 1126\n   selected false\n  }\npush $N2520c420\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge24\n   xpos -187\n   ypos 1126\n   disable {{Controller1.samples<12-1}}\n  }\n end_group\npush $N1a123c00\n Group {\n  name Simple\n  selected true\n  xpos 1371\n  ypos 506\n  addUserKnob {20 User}\n  addUserKnob {3 maxsample l \"Max Sample Depth\"}\n  maxsample {{parent.MaxSamples}}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -420\n   ypos 304\n  }\n  Dot {\n   name Dot7\n   xpos -386\n   ypos 338\n  }\n  Dot {\n   name Controller\n   tile_color 0x55ffffff\n   gl_color 0x55ffffff\n   label ControllerNode\n   note_font \"DejaVu Sans Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n   note_font_color 0xaadfffff\n   selected true\n   xpos -386\n   ypos 432\n   addUserKnob {20 User}\n   addUserKnob {3 samples}\n   samples {{min(parent.maxsample,int(log(min(input.width,input.height))/log(2)))}}\n  }\nset N2536e6a0 [stack 0]\n  Matrix {\n   matrix {\n       {0 0 0}\n       {1 1 0}\n       {1 1 0}\n     }\n   name Matrix10\n   xpos -420\n   ypos 473\n  }\n  set C25112840 [stack 0]\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat11\n   xpos -420\n   ypos 505\n   disable {{Controller.samples<1}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression17\n   xpos -420\n   ypos 529\n  }\nset N2511e800 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 557\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat10\n   xpos -420\n   ypos 589\n   disable {{Controller.samples<2}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression16\n   xpos -420\n   ypos 613\n  }\nset N25130e90 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 641\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat9\n   xpos -420\n   ypos 673\n   disable {{Controller.samples<3}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression2\n   xpos -420\n   ypos 697\n  }\nset N25143520 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 725\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat8\n   xpos -420\n   ypos 757\n   disable {{Controller.samples<4}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression4\n   xpos -420\n   ypos 781\n  }\nset N25370fe0 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 805\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat7\n   xpos -420\n   ypos 837\n   disable {{Controller.samples<5}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression6\n   xpos -420\n   ypos 865\n  }\nset N25383670 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 893\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat6\n   xpos -420\n   ypos 925\n   disable {{Controller.samples<6}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression11\n   xpos -420\n   ypos 949\n  }\nset N25395d00 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 977\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat5\n   xpos -420\n   ypos 1009\n   disable {{Controller.samples<7}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression12\n   xpos -420\n   ypos 1033\n  }\nset N253a83f0 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 1061\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat4\n   xpos -420\n   ypos 1093\n   disable {{Controller.samples<8}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression13\n   xpos -420\n   ypos 1117\n  }\nset N253bab30 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 1145\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat3\n   xpos -420\n   ypos 1177\n   disable {{Controller.samples<9}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression14\n   xpos -420\n   ypos 1201\n  }\nset N253cd190 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 1225\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat2\n   xpos -420\n   ypos 1261\n   disable {{Controller.samples<10}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression15\n   xpos -420\n   ypos 1285\n  }\nset N253df840 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 1320\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat13\n   xpos -420\n   ypos 1352\n   disable {{Controller.samples<11}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression1\n   xpos -420\n   ypos 1383\n  }\nset N253f20b0 [stack 0]\nclone $C25112840 {\n   xpos -420\n   ypos 1426\n   selected false\n  }\n  Reformat {\n   type scale\n   scale 0.5\n   resize fit\n   center false\n   filter Impulse\n   name Reformat12\n   xpos -420\n   ypos 1472\n   disable {{Controller.samples<12}}\n  }\n  Expression {\n   expr0 a>0?r/a:a\n   expr1 a>0?g/a:a\n   expr2 a>0?b/a:a\n   expr3 a>0?a/a:a\n   name Expression3\n   xpos -420\n   ypos 1508\n  }\n  Reformat {\n   type \"to box\"\n   box_width {{parent.Controller.input.width}}\n   box_height {{parent.Controller.input.height}}\n   box_fixed true\n   scale 0.5\n   filter Parzen\n   name Reformat38\n   xpos -530\n   ypos 1508\n  }\n  set C2550edf0 [stack 0]\npush $N253f20b0\nclone $C2550edf0 {\n   xpos -530\n   ypos 1383\n   selected false\n  }\npush $N253df840\nclone $C2550edf0 {\n   xpos -530\n   ypos 1285\n   selected false\n  }\npush $N253cd190\nclone $C2550edf0 {\n   xpos -530\n   ypos 1201\n   selected false\n  }\npush $N253bab30\nclone $C2550edf0 {\n   xpos -530\n   ypos 1117\n   selected false\n  }\npush $N253a83f0\nclone $C2550edf0 {\n   xpos -524\n   ypos 1039\n   selected false\n  }\npush $N25395d00\nclone $C2550edf0 {\n   xpos -524\n   ypos 955\n   selected false\n  }\npush $N25383670\nclone $C2550edf0 {\n   xpos -524\n   ypos 871\n   selected false\n  }\npush $N25370fe0\nclone $C2550edf0 {\n   xpos -524\n   ypos 787\n   selected false\n  }\npush $N25143520\nclone $C2550edf0 {\n   xpos -524\n   ypos 703\n   selected false\n  }\npush $N25130e90\nclone $C2550edf0 {\n   xpos -518\n   ypos 613\n   selected false\n  }\npush $N2511e800\nclone $C2550edf0 {\n   xpos -530\n   ypos 529\n   selected false\n  }\npush $N2536e6a0\n  Dot {\n   name Dot6\n   xpos -858\n   ypos 432\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge4\n   xpos -996\n   ypos 529\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge5\n   xpos -996\n   ypos 613\n   disable {{Controller.samples<2-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge6\n   xpos -996\n   ypos 703\n   disable {{Controller.samples<3-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge7\n   xpos -996\n   ypos 787\n   disable {{Controller.samples<4-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge8\n   xpos -996\n   ypos 871\n   disable {{Controller.samples<5-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge9\n   xpos -996\n   ypos 955\n   disable {{Controller.samples<6-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge10\n   xpos -996\n   ypos 1039\n   disable {{Controller.samples<7-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge11\n   xpos -996\n   ypos 1117\n   disable {{Controller.samples<8-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge14\n   xpos -996\n   ypos 1201\n   disable {{Controller.samples<9-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge12\n   xpos -996\n   ypos 1285\n   disable {{Controller.samples<10-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge1\n   xpos -1000\n   ypos 1383\n   disable {{Controller.samples<11-1}}\n  }\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge2\n   xpos -1000\n   ypos 1508\n   disable {{Controller.samples<12-1}}\n  }\n  Output {\n   name Output1\n   xpos -1000\n   ypos 1615\n  }\n end_group\n Switch {\n  inputs 2\n  which {{parent.Itterations!=0}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 1672\n  ypos 564\n }\n TimeBlur {\n  divisions {{parent.SoftAlphaSamples}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name TimeBlur1\n  xpos 1672\n  ypos 635\n }\n Output {\n  name Output1\n  xpos 1672\n  ypos 699\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FlareSuperStar.gizmo",
    "content": "Group {\n name FlareSuperStar\n selected true\n addUserKnob {20 User l \"Shape Controls\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 _3 l \"Global Controls\"}\n addUserKnob {41 mode t \"the mode in which the tool operates.\\nPosition: the flare gets generated at the defined position\\nConvolve: the flare gets applied via a convolve of the input image\\nOutput Kernel: outputs the kernel that would get feeded into the convolve so you could make further adjustetments and apply as your custom filter to your node of choice\" T MasterControl.mode}\n addUserKnob {41 center t \"defines the center where the flare gets created if in position-mode.\" -STARTLINE T MasterControl.center}\n addUserKnob {6 togglefix l \"toggle to fix \\\"missing channel\\\" error caused by the convolve\" t \"Sometimes, when in convolve-mode, the tool gives a \\\"missing channel\\\" error. This is a dirty workaround to fix it. It might occure again, then toggle the checkbox again.\" +STARTLINE}\n addUserKnob {41 multiply_1 l intensity t \"global intensity\" T MasterControl.multiply_1}\n addUserKnob {41 gamma_2_1 l gamma t \"global gamma\" T MasterControl.gamma_2}\n addUserKnob {41 scale t \"changes the x and y scale of the flare around the center point.\" T MasterControl.scale}\n addUserKnob {41 relativeradius l radius t \"Controls the kernel size if in konvolve mode and the radius at which the flare will be zero if falloff to zero is enabled.\\nThis is a factor of the image width.\" T MasterControl.relativeradius}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l \"Ray Controls\"}\n addUserKnob {41 nr l \"number of rays\" t \"Sets the number of rays that will be generated by the flare.\" T MasterControl.nr}\n addUserKnob {41 gamma_4 l \"odd ray length\" t xfgjxfhjc T Grade5.gamma}\n addUserKnob {26 text_3 l \"\" +STARTLINE T \"doesn't actually change the length of the rays,\\nbut applies a gamma correction\"}\n addUserKnob {41 rotation t \"Controls the Rotation of the rays.\" T MasterControl.rotation}\n addUserKnob {41 multiply_2 l \"ray intensity\" t \"Controls intensity of the rays.\" T MasterControl.multiply_2}\n addUserKnob {41 gamma_3 l \"ray gamma\" t \"Controls the gamma of the rays.\" T MasterControl.gamma_3}\n addUserKnob {41 thickness t \"Lets you adjust the thickness of the rays.\" T MasterControl.thickness}\n addUserKnob {41 multiply l softness t \"Lets you control the softness of the rays.\" T MasterControl.multiply}\n addUserKnob {41 coneangle l \"Cone angle\" t \"Controls the angle of the rays.\" T MasterControl.coneangle}\n addUserKnob {26 \"\" l \"Spread Controls\"}\n addUserKnob {41 sdistn l \"spread distance\" t \"Distance at which the spread will start. This is a factor of the global radius.\" T MasterControl.sdistn}\n addUserKnob {26 text_2 l \"\" +STARTLINE T \"The spread distance is a factor of the radius.\"}\n addUserKnob {41 ssize l \"spread angle\" t \"Spreads the rays via changing their angle from the spreaddistance outwards.\" T MasterControl.ssize}\n addUserKnob {41 sthk l \"spread thickness\" t \"Changes the thickness of the rays from the spreaddistance outwards.\" T MasterControl.sthk}\n addUserKnob {41 sfotype l \"spread falloff type\" t \"Lets you choose between a linear or an exponential falloff of the spread.\" T MasterControl.sfotype}\n addUserKnob {41 gamma l \"\" t \"Gamma control for the spread falloff.\" -STARTLINE T MasterControl.gamma}\n addUserKnob {26 \"\"}\n addUserKnob {41 boolean l \"Enable inner Glow\" T MasterControl.boolean}\n addUserKnob {41 boolean_2 l \"Enable Glare\" T MasterControl.boolean_2}\n addUserKnob {41 boolean_1 l \"Crop convolve\" t \"Crops the result to the image format in convolve mode to reduce boundingbox size.\" T MasterControl.boolean_1}\n addUserKnob {26 \"\"}\n addUserKnob {26 _1 l \"\" +STARTLINE T \"FlareSuperStar v1.2\\nby Lukas Fabian - December 2020\"}\n addUserKnob {20 tab l \"Glare Controls\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 Intensity l intensity t \"Controls intensity of the glare.\" T NoiseControl.Intensity}\n addUserKnob {41 gamma_1_1 l gamma t \"Controls gamma of the glare.\" T NoiseControl.gamma_1}\n addUserKnob {26 \"\"}\n addUserKnob {41 detail t \"Controls the ray detail of the glare.\" T NoiseControl.detail}\n addUserKnob {41 z1 l z t \"zOffset for the ray-detail.\" T NoiseControl.z1}\n addUserKnob {41 detail_1 l detail2 t \"Controls additional detail for the rays outwards.\" T NoiseControl2.detail}\n addUserKnob {41 z1_1 l z2 t \"zOffset for detail2.\" T NoiseControl2.z1}\n addUserKnob {41 sfix l \"Enable seam fix\" t \"If disabled there could be a visible 0-1 in the glare. Also changes the bottom part of the glare appearence. Just try which setting suits your situation.\" T NoiseControl.sfix}\n addUserKnob {26 \"\"}\n addUserKnob {41 speed l \"shimmer speed\" t \"If set to anything bigger then zero the glare will shimmer over time. The bigger the value the faster the shimmer.\" T NoiseControl.speed}\n addUserKnob {41 posspeed l \"position change speed\" t \"Only works properly in position-mode.\\nIf the center-position of the flare is changed, the glare will change its shape.\\nThe higher the number the bigger the change. If it´s set to zero there won´t be any change in the glare due to position changes.\" T NoiseControl.posspeed}\n addUserKnob {20 tab_1 l \"Glow Controls\"}\n addUserKnob {26 _2 l \"\" +STARTLINE}\n addUserKnob {41 multiply_3 l \"glow intensity\" t \"Controls the intensity of the glow.\" T Grade16.multiply}\n addUserKnob {41 gamma_2 l \"glow gamma\" t \"Controls the gamma of the glow.\" T Grade16.gamma}\n addUserKnob {20 fotz l \"Falloff to Zero\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 text l \"\" +STARTLINE T \"If \\\"falloff to zero\\\" is enabled, the flare will be zero at the point defined by \\nthe global radius. If \\\"fall off to zero\\\" is disabled it results in an inverse square\\nfalloff, this might introduce edges in convolve-mode.\\n\\nUsually you want to have it on in convolve-mode, and off in position mode.\\n\\n\"}\n addUserKnob {26 text_1 l \"Falloff to Zero\"}\n addUserKnob {41 fo l \"enable in position mode\" T MasterControl.fo}\n addUserKnob {41 focm l \"enable in convolve mode\" T MasterControl.focm}\n addUserKnob {41 fotype l \"falloff type\" t \"Lets you choose between a linear or an exponential falloff.\" T MasterControl.fotype}\n addUserKnob {41 gamma_1 l \"\" t \"Gammacontrol for the falloff.\" -STARTLINE T MasterControl.gamma_1}\n addUserKnob {26 \"\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x71c67100\n  label Controlers\n  note_font_size 42\n  xpos 2321\n  ypos -1190\n  bdwidth 855\n  bdheight 322\n }\n Grade {\n  inputs 0\n  black_clamp false\n  name AngleControl\n  xpos 2440\n  ypos -1028\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"   create glare    \"\n  note_font_size 40\n  xpos -1067\n  ypos -10\n }\n Grade {\n  inputs 0\n  black_clamp false\n  name ARControl\n  xpos 2697\n  ypos -1029\n }\n Noise {\n  inputs 0\n  replace true\n  zoffset {{z1+frame*(speed/150)}}\n  translate {13800.29102 822.1937866}\n  center {2275 1208}\n  name NoiseControl\n  xpos 2824\n  ypos -1028\n  addUserKnob {20 User l Controls}\n  addUserKnob {7 z1 l z}\n  z1 1\n  addUserKnob {7 speed l \"shimmer speed\" R 0 5}\n  speed 1\n  addUserKnob {7 detail}\n  detail 15\n  addUserKnob {41 Intensity l intensity T Grade3.multiply}\n  addUserKnob {41 gamma_1 l gamma T Grade4.gamma}\n  addUserKnob {7 posspeed l \"position speed\" R 0 5}\n  posspeed 1.5\n  addUserKnob {6 sfix l \"Enable seam fix\" +STARTLINE}\n  sfix true\n }\n Noise {\n  inputs 0\n  replace true\n  zoffset {{z1+frame*(speed/100)}}\n  translate {13800.29102 822.1937866}\n  center {2275 1208}\n  name NoiseControl2\n  xpos 2959\n  ypos -1034\n  addUserKnob {20 User l \"z Controls\"}\n  addUserKnob {7 z1 l z}\n  z1 1\n  addUserKnob {7 speed}\n  speed {{parent.NoiseControl.speed}}\n  addUserKnob {7 detail l detail2}\n  detail 10\n }\n Input {\n  inputs 0\n  name img\n  xpos 1386\n  ypos -1284\n }\n Dot {\n  name Dot19\n  xpos 1420\n  ypos -1215\n }\n Dot {\n  name Dot11\n  xpos 1420\n  ypos -1090\n }\nset N1bbe4a90 [stack 0]\n Dot {\n  name Dot18\n  xpos 1826\n  ypos -1090\n }\nset N1bbe95b0 [stack 0]\n NoOp {\n  name MasterControl\n  xpos 2579\n  ypos -1035\n  addUserKnob {20 User l Controls}\n  addUserKnob {26 _1 l \"\" +STARTLINE}\n  addUserKnob {26 _4 l \"General Controls\"}\n  addUserKnob {4 mode M {Position Convolve \"Output Kernel\" \"\"}}\n  addUserKnob {12 center -STARTLINE}\n  center {728 644}\n  addUserKnob {41 multiply_1 l intensity T Grade14.multiply}\n  addUserKnob {41 gamma_2 l gamma T Grade14.gamma}\n  addUserKnob {3 nr l \"number of rays\"}\n  nr 8\n  addUserKnob {41 scale T Reformat3.scale}\n  addUserKnob {7 rotation R 0 360}\n  addUserKnob {7 radius l \"absolute radius\" R 1 1000}\n  radius {{(width/8)*(relativeradius+0.0000001)}}\n  addUserKnob {7 relativeradius l radius R 0 10}\n  relativeradius 1\n  addUserKnob {4 fotype l \"falloff type\" M {linear exponential}}\n  fotype exponential\n  addUserKnob {41 gamma_1 l \"\" -STARTLINE T Grade12.gamma}\n  addUserKnob {6 fo l \"disable falloff\" +STARTLINE}\n  addUserKnob {6 focm l \"enable in convolve mode\" +STARTLINE}\n  focm true\n  addUserKnob {26 _2 l \"\" +STARTLINE}\n  addUserKnob {26 _5 l \"Ray Controls\"}\n  addUserKnob {41 multiply_2 l \"ray intensity\" T Grade15.multiply}\n  addUserKnob {41 gamma_3 l \"ray gamma\" T Grade15.gamma}\n  addUserKnob {7 thickness R -2 2}\n  addUserKnob {41 multiply l softness T Grade9.multiply}\n  addUserKnob {41 coneangle l \"cone angle\" T AngleControl.multiply}\n  addUserKnob {26 _3 l \"\" +STARTLINE}\n  addUserKnob {26 _6 l \"Spread Controls\"}\n  addUserKnob {7 sdist l \"spread distance safe\" R 0.0001 1}\n  sdist {{sdistn+0.000001}}\n  addUserKnob {7 sdistn l \"spread distance\"}\n  sdistn 0.185\n  addUserKnob {7 ssize l \"spread angle\" R -2 2}\n  addUserKnob {7 sthk l \"spread thickness\" R -2 2}\n  addUserKnob {4 sfotype l \"spread falloff type\" M {linear exponential}}\n  addUserKnob {41 gamma l \"\" -STARTLINE T Grade10.gamma}\n  addUserKnob {26 \"\"}\n  addUserKnob {6 boolean l \"Enable inner Flare\" +STARTLINE}\n  boolean true\n  addUserKnob {6 boolean_2 l \"enable glare\" +STARTLINE}\n  boolean_2 true\n  addUserKnob {6 boolean_1 l \"Crop convolve\" +STARTLINE}\n  boolean_1 true\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  box_width 2000\n  filter Lanczos4\n  name Reformat1\n  xpos 716\n  ypos -1000\n }\n Dot {\n  name Dot7\n  xpos 750\n  ypos -937\n }\nset Na837ab0 [stack 0]\n Dot {\n  name Dot8\n  xpos -150\n  ypos -937\n }\n Dot {\n  name Dot10\n  xpos -150\n  ypos -421\n }\nset N19e29ea0 [stack 0]\n Dot {\n  name Dot20\n  xpos -150\n  ypos 96\n }\nset Na839160 [stack 0]\n Dot {\n  name Dot16\n  xpos -150\n  ypos 402\n }\nset Na83d980 [stack 0]\n Dot {\n  name Dot9\n  xpos -150\n  ypos 550\n }\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 radius\n  temp_expr2 (width/2)-10\n  expr0 \"(radius - sqrt(  pow2(x-centerx)+pow2(y-centery)  )  ) / radius\"\n  name Expression13\n  xpos 26\n  ypos 546\n }\npush $N1bbe4a90\n Dot {\n  name Dot12\n  xpos -17\n  ypos -1090\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle5\n  label \"\\[value in]\"\n  xpos -51\n  ypos -1005\n }\n Dot {\n  name Dot13\n  xpos -17\n  ypos -893\n }\nset Na81c980 [stack 0]\n Dot {\n  name Dot14\n  xpos -17\n  ypos -510\n }\nset Na821520 [stack 0]\n Dot {\n  name Dot6\n  xpos -17\n  ypos 174\n }\nset N8173a30 [stack 0]\n Dot {\n  name Dot1\n  xpos -17\n  ypos 381\n }\nset N8234980 [stack 0]\n Dot {\n  name Dot15\n  xpos -17\n  ypos 483\n }\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 radius\n  temp_expr2 parent.MasterControl.radius\n  temp_name3 sw\n  temp_expr3 parent.MasterControl.scale.0\n  expr0 \"(radius - sqrt(  pow2((x-centerx)*(1/sw))+pow2((y-centery)*(1/parent.MasterControl.scale.1))  )  ) / radius\"\n  name Expression8\n  xpos 197\n  ypos 478\n }\n Switch {\n  inputs 2\n  which {{parent.MasterControl.mode}}\n  name Switch3\n  xpos 197\n  ypos 564\n }\n Grade {\n  name Grade20\n  xpos 197\n  ypos 604\n }\nset N1abd7130 [stack 0]\n Expression {\n  expr0 pow2(r)\n  name Expression9\n  xpos 117\n  ypos 650\n }\n Dot {\n  name Dot4\n  label expo\n  xpos 151\n  ypos 691\n }\npush $N1abd7130\n Dot {\n  name Dot37\n  xpos 338\n  ypos 650\n }\n Dot {\n  name Dot5\n  label linear\n  xpos 338\n  ypos 686\n }\n Switch {\n  inputs 2\n  which {{parent.MasterControl.fotype}}\n  name Switch1\n  xpos 201\n  ypos 720\n }\n Grade {\n  black_clamp false\n  name Grade12\n  xpos 201\n  ypos 775\n }\n Shuffle {\n  green red\n  blue red\n  alpha black\n  name Shuffle8\n  label \"\\[value in]\"\n  xpos 201\n  ypos 812\n }\n Dot {\n  name Dot32\n  xpos 235\n  ypos 962\n }\nset N1b7cb4a0 [stack 0]\n Dot {\n  name Dot41\n  xpos 235\n  ypos 1011\n }\npush $Na83d980\n Dot {\n  name Dot39\n  xpos 480\n  ypos 402\n }\n Expression {\n  temp_name0 centerx\n  temp_expr0 512\n  temp_name1 centery\n  temp_expr1 512\n  temp_name2 radius\n  temp_expr2 parent.MasterControl.radius\n  expr0 \"sqrt(  pow2((x/width*1024)-centerx)+pow2((y/height*1024)-centery) )\"\n  name Expression28\n  xpos 446\n  ypos 526\n }\n Expression {\n  expr0 isnan(r)?0:1/(r*r)\n  name Expression29\n  xpos 446\n  ypos 568\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge10\n  xpos 446\n  ypos 1007\n  disable {{1-parent.MasterControl.focm}}\n }\n Dot {\n  name Dot40\n  xpos 480\n  ypos 1070\n }\npush $N1b7cb4a0\npush $N8234980\n Dot {\n  name Dot38\n  xpos 608\n  ypos 381\n }\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x/width*1920\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y/height*1080\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"sqrt(  pow2(((x/width*1920)-centerx)*(1/sw))+pow2(((y/height*1080)-centery)*(1/sh)) )\"\n  name Expression2\n  xpos 574\n  ypos 501\n }\n Expression {\n  expr0 isnan(r)?0:1/(r*r)\n  name Expression3\n  xpos 574\n  ypos 544\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge3\n  xpos 574\n  ypos 958\n  disable {{1-parent.MasterControl.fo}}\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch10\n  xpos 574\n  ypos 1066\n }\n Grade {\n  multiply 1000\n  black_clamp false\n  name Grade1\n  xpos 574\n  ypos 1189\n }\n Clamp {\n  maximum 2000\n  name Clamp1\n  xpos 574\n  ypos 1237\n }\n Dot {\n  name Dot21\n  xpos 608\n  ypos 1358\n }\nset N1bbe1990 [stack 0]\n Grade {\n  black_clamp false\n  name Grade4\n  xpos -675\n  ypos 1354\n }\npush $Na839160\n Dot {\n  name Dot24\n  xpos -656\n  ypos 96\n }\n Dot {\n  name Dot22\n  xpos -1105\n  ypos 96\n }\nset N1b8ade90 [stack 0]\n Dot {\n  name Dot29\n  xpos -1739\n  ypos 186\n }\nset Na7f7730 [stack 0]\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"atan((x - centerx)*(1/sw) , (y - centery)*(1/sh))/pi\"\n  name Expression24\n  xpos -1691\n  ypos 262\n }\n Expression {\n  expr0 sqrt(pow2(r))\n  name Expression25\n  xpos -1691\n  ypos 326\n }\n Grade {\n  blackpoint 0.6\n  name Grade11\n  xpos -1691\n  ypos 412\n }\npush $Na7f7730\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"(atan(    (x - centerx)*(1/sw) , (-y -- centery)*(1/sh) )) / (pi*2)\"\n  name Expression26\n  xpos -1859\n  ypos 254\n }\n Dot {\n  name Dot33\n  xpos -1825\n  ypos 510\n }\npush $N1b8ade90\n Dot {\n  name Dot25\n  xpos -1105\n  ypos 283\n }\nset N1b9fdc90 [stack 0]\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  expr0 \"atan(x - centerx , y - centery)/pi\"\n  name Expression15\n  xpos -1139\n  ypos 451\n }\n Copy {\n  inputs 2+1\n  from0 rgba.red\n  to0 rgba.red\n  maskChannelMask rgba.red\n  name Copy3\n  xpos -1139\n  ypos 500\n  disable {{1-parent.NoiseControl.sfix}}\n }\n Dot {\n  name Dot27\n  xpos -1105\n  ypos 552\n }\npush $N8173a30\n Dot {\n  name Dot23\n  xpos -935\n  ypos 174\n }\nset N977fb90 [stack 0]\n Dot {\n  name Dot28\n  xpos -1351\n  ypos 186\n }\nset N9784ac0 [stack 0]\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"atan((x - centerx)*(1/sw) , (y - centery)*(1/sh))/pi\"\n  name Expression21\n  xpos -1303\n  ypos 258\n }\n Expression {\n  expr0 sqrt(pow2(r))\n  name Expression22\n  xpos -1303\n  ypos 308\n }\n Grade {\n  blackpoint 0.6\n  name Grade6\n  xpos -1303\n  ypos 355\n }\npush $N9784ac0\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"(atan(    (x - centerx)*(1/sw) , (-y -- centery)*(1/sh) )  ) / (pi*2)\"\n  name Expression23\n  xpos -1474\n  ypos 252\n }\n Dot {\n  name Dot34\n  xpos -1440\n  ypos 428\n }\npush $N977fb90\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"atan((x - centerx)*(1/sw) , (y - centery)*(1/sh))/pi\"\n  name Expression4\n  xpos -969\n  ypos 377\n }\n Copy {\n  inputs 2+1\n  from0 rgba.red\n  to0 rgba.red\n  maskChannelMask rgba.red\n  name Copy2\n  xpos -969\n  ypos 418\n  disable {{1-parent.NoiseControl.sfix}}\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch5\n  xpos -969\n  ypos 548\n }\nset N1ca0e9b0 [stack 0]\npush $N1b9fdc90\n Expression {\n  temp_name0 cx\n  temp_expr0 width/2\n  temp_name1 cy\n  temp_expr1 height/2\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"sqrt( pow2( ((x-cx)*(1/sw))/width ) + pow2( ((y-cy)*(1/sh))/width )  )\"\n  name Expression16\n  xpos -756\n  ypos 408\n }\npush $N977fb90\n Dot {\n  name Dot26\n  xpos -612\n  ypos 266\n }\n Expression {\n  temp_name0 cx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 cy\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 sw\n  temp_expr2 parent.MasterControl.scale.0\n  temp_name3 sh\n  temp_expr3 parent.MasterControl.scale.1\n  expr0 \"sqrt( pow2( ((x-cx)*(1/sw))/width ) + pow2( ((y-cy)*(1/sh))/width )  )\"\n  name Expression19\n  xpos -646\n  ypos 408\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch9\n  xpos -646\n  ypos 475\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.green\n  name Copy1\n  xpos -646\n  ypos 542\n }\nset N1ca3f880 [stack 0]\n Expression {\n  temp_name0 oct\n  temp_expr0 parent.NoiseControl.octaves\n  temp_name1 lac\n  temp_expr1 parent.NoiseControl.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.NoiseControl.gain\n  temp_name3 y\n  temp_expr3 ((parent.MasterControl.center.x/width)+(parent.MasterControl.center.y/height))*2*parent.NoiseControl.posspeed\n  expr0 \"fBm((r)*parent.NoiseControl2.detail , y, parent.NoiseControl2.zoffset+3, oct, lac, gain)\"\n  expr1 0\n  expr2 0\n  expr3 0\n  name Expression20\n  xpos -393\n  ypos 604\n }\npush $N1ca3f880\n Expression {\n  temp_name0 oct\n  temp_expr0 parent.NoiseControl.octaves\n  temp_name1 lac\n  temp_expr1 parent.NoiseControl.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.NoiseControl.gain\n  temp_name3 y\n  temp_expr3 ((parent.MasterControl.center.x/width)+(parent.MasterControl.center.y/height))*2*parent.NoiseControl.posspeed\n  expr0 \"fBm((r-g)*parent.NoiseControl2.detail , y, parent.NoiseControl2.zoffset, oct, lac, gain)\"\n  expr1 0\n  expr2 0\n  expr3 0\n  name Expression18\n  xpos -530\n  ypos 607\n }\npush $N1ca3f880\n Expression {\n  temp_name0 oct\n  temp_expr0 parent.NoiseControl.octaves\n  temp_name1 lac\n  temp_expr1 parent.NoiseControl.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.NoiseControl.gain\n  temp_name3 y\n  temp_expr3 ((parent.MasterControl.center.x/width)+(parent.MasterControl.center.y/height))*2*parent.NoiseControl.posspeed\n  expr0 \"fBm((r+g)*parent.NoiseControl2.detail , y, parent.NoiseControl2.zoffset, oct, lac, gain)\"\n  expr1 0\n  expr2 0\n  expr3 0\n  name Expression17\n  xpos -646\n  ypos 610\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge8\n  xpos -605\n  ypos 660\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge9\n  xpos -605\n  ypos 709\n }\n Dot {\n  name Dot35\n  xpos -571\n  ypos 781\n }\npush $N1ca0e9b0\n Expression {\n  temp_name0 oct\n  temp_expr0 parent.NoiseControl.octaves\n  temp_name1 lac\n  temp_expr1 parent.NoiseControl.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.NoiseControl.gain\n  temp_name3 y\n  temp_expr3 ((parent.MasterControl.center.x/width)+(parent.MasterControl.center.y/width))*2*parent.NoiseControl.posspeed\n  expr0 \"fBm(r*parent.NoiseControl.detail , y, parent.NoiseControl.zoffset, oct, lac, gain)\"\n  name Expression14\n  xpos -969\n  ypos 623\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge7\n  xpos -969\n  ypos 777\n }\n Grade {\n  name Grade2\n  xpos -969\n  ypos 869\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge4\n  xpos -969\n  ypos 1354\n }\n Clamp {\n  maximum 2000\n  name Clamp2\n  xpos -969\n  ypos 1511\n }\n Shuffle {\n  green red\n  blue red\n  alpha black\n  name Shuffle7\n  label \"\\[value in]\"\n  xpos -969\n  ypos 1576\n }\n Grade {\n  multiply 0.4\n  black_clamp false\n  name Grade3\n  xpos -969\n  ypos 1635\n }\n Dot {\n  name Dot30\n  xpos -935\n  ypos 1921\n }\npush $N1bbe1990\n Shuffle {\n  green red\n  blue red\n  alpha black\n  name Shuffle6\n  label \"\\[value in]\"\n  xpos 574\n  ypos 1515\n }\n Grade {\n  black_clamp false\n  name Grade16\n  xpos 574\n  ypos 1588\n }\n Dot {\n  name Dot31\n  xpos 608\n  ypos 1687\n }\npush $N1bbe1990\npush $N19e29ea0\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 spdist\n  temp_expr2 (width/2-10)*parent.MasterControl.sdist\n  expr0 \"(sqrt(  pow2(x-centerx)+pow2(y-centery)  ) -spdist ) / spdist\"\n  name Expression11\n  xpos 156\n  ypos -377\n }\npush $Na821520\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 spdist\n  temp_expr2 parent.MasterControl.radius*parent.MasterControl.sdist\n  expr0 \"(sqrt(  pow2((x-centerx)*(1/parent.MasterControl.scale.0))+pow2((y-centery)*(1/parent.MasterControl.scale.1))  ) -spdist ) / spdist\"\n  name Expression6\n  xpos 334\n  ypos -403\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch4\n  xpos 334\n  ypos -368\n }\n Grade {\n  name Grade8\n  xpos 334\n  ypos -323\n }\nset N1cb59fe0 [stack 0]\n Expression {\n  expr0 pow2(r)\n  name Expression7\n  xpos 254\n  ypos -279\n }\n Dot {\n  name Dot3\n  label expo\n  xpos 288\n  ypos -241\n }\npush $N1cb59fe0\n Dot {\n  name Dot2\n  label linear\n  xpos 440\n  ypos -271\n }\n Switch {\n  inputs 2\n  which {{parent.MasterControl.sfotype}}\n  name Switch7\n  xpos 343\n  ypos -206\n }\n Grade {\n  black_clamp false\n  name Grade10\n  xpos 343\n  ypos -172\n }\nset N1cb89e40 [stack 0]\n Grade {\n  multiply {{parent.MasterControl.sthk}}\n  black_clamp false\n  name Grade13\n  xpos 343\n  ypos -117\n }\nset N1cb9a780 [stack 0]\npush $N1cb89e40\npush $Na837ab0\n Dot {\n  name Dot42\n  xpos 750\n  ypos -822\n }\nset N1cbaaf30 [stack 0]\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 nr\n  temp_expr2 parent.MasterControl.nr\n  temp_name3 r\n  temp_expr3 radians(parent.MasterControl.rotation)\n  expr0 \"cos(  (atan((x - centerx) , (y - centery))+r+(2*pi/nr))  *(nr/2))\"\n  name Expression30\n  xpos 730\n  ypos -726\n }\npush $Na81c980\n Dot {\n  name Dot36\n  xpos 981\n  ypos -893\n }\nset N1cbbdb90 [stack 0]\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 nr\n  temp_expr2 parent.MasterControl.nr\n  temp_name3 r\n  temp_expr3 radians(parent.MasterControl.rotation)\n  expr0 \"cos(  (atan((x - centerx)*(1/parent.MasterControl.scale.0) , (y - centery)*(1/parent.MasterControl.scale.1))+r+(2*pi/nr))  * (nr/2))\"\n  name Expression12\n  xpos 1026\n  ypos -809\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch11\n  xpos 1026\n  ypos -658\n }\n Expression {\n  temp_name0 ca\n  temp_expr0 parent.MasterControl.coneangle\n  expr0 ((r-1)*ca*pi)+1\n  name Expression32\n  xpos 1026\n  ypos -588\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.green\n  name Copy6\n  xpos 1026\n  ypos -110\n }\n Expression {\n  temp_name0 ca\n  temp_expr0 parent.MasterControl.ssize*-1\n  expr0 ((r-1)*(ca*g+1))+1\n  expr1 0\n  name Expression34\n  xpos 1026\n  ypos -21\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge14\n  xpos 1026\n  ypos 37\n }\n Grade {\n  blackpoint {{Grade9.blackpoint}}\n  blackpoint_panelDropped {{Grade9.blackpoint_panelDropped}}\n  whitepoint {{Grade9.whitepoint}}\n  whitepoint_panelDropped {{Grade9.whitepoint_panelDropped}}\n  black {{Grade9.black}}\n  black_panelDropped {{Grade9.black_panelDropped}}\n  white {{Grade9.white}}\n  white_panelDropped {{Grade9.white_panelDropped}}\n  multiply {{Grade9.multiply}}\n  multiply_panelDropped {{Grade9.multiply_panelDropped}}\n  add {{Grade9.add}}\n  add_panelDropped {{Grade9.add_panelDropped}}\n  gamma {{Grade9.gamma}}\n  gamma_panelDropped {{Grade9.gamma_panelDropped}}\n  reverse {{Grade9.reverse}}\n  black_clamp {{Grade9.black_clamp}}\n  white_clamp {{Grade9.white_clamp}}\n  inject {{Grade9.inject}}\n  invert_mask {{Grade9.invert_mask}}\n  fringe {{Grade9.fringe}}\n  process_mask {{Grade9.process_mask}}\n  invert_unpremult {{Grade9.invert_unpremult}}\n  enable_mix_luminance {{Grade9.enable_mix_luminance}}\n  mix_luminance {{Grade9.mix_luminance}}\n  mix {{Grade9.mix}}\n  name Grade19\n  xpos 1026\n  ypos 116\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge2\n  xpos 1046\n  ypos 1309\n }\n Grade {\n  name Grade5\n  label \"odd ray grade\"\n  xpos 1046\n  ypos 1372\n }\npush $N1bbe1990\npush $N1cb9a780\npush $N1cb89e40\npush $N1cbaaf30\n Expression {\n  temp_name0 centerx\n  temp_expr0 width/2\n  temp_name1 centery\n  temp_expr1 height/2\n  temp_name2 nr\n  temp_expr2 parent.MasterControl.nr\n  temp_name3 r\n  temp_expr3 radians(parent.MasterControl.rotation)\n  expr0 \"cos(  (atan((x - centerx) , (y - centery))+r)  * (nr/2))\"\n  name Expression1\n  xpos 564\n  ypos -716\n }\npush $N1cbbdb90\n Expression {\n  temp_name0 centerx\n  temp_expr0 parent.MasterControl.center.x\n  temp_name1 centery\n  temp_expr1 parent.MasterControl.center.y\n  temp_name2 nr\n  temp_expr2 parent.MasterControl.nr\n  temp_name3 r\n  temp_expr3 radians(parent.MasterControl.rotation)\n  expr0 \"cos(  (atan((x - centerx)*(1/parent.MasterControl.scale.0) , (y - centery)*(1/parent.MasterControl.scale.1))+r)  * (nr/2))\"\n  name Expression5\n  xpos 838\n  ypos -807\n }\n Switch {\n  inputs 2\n  which {{parent.Switch3.which}}\n  name Switch8\n  xpos 838\n  ypos -653\n }\n Expression {\n  temp_name0 ca\n  temp_expr0 parent.MasterControl.coneangle\n  expr0 ((r-1)*ca*pi)+1\n  name Expression31\n  xpos 838\n  ypos -583\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.green\n  name Copy5\n  xpos 838\n  ypos -178\n }\n Expression {\n  temp_name0 ca\n  temp_expr0 parent.MasterControl.ssize*-1\n  expr0 ((r-1)*(ca*g+1))+1\n  expr1 0\n  name Expression33\n  xpos 838\n  ypos -89\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge13\n  xpos 838\n  ypos -33\n }\n Grade {\n  add {{parent.MasterControl.thickness}}\n  white_clamp true\n  name Grade9\n  xpos 838\n  ypos 81\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge1\n  xpos 838\n  ypos 1354\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge11\n  selected true\n  xpos 923\n  ypos 1444\n }\n Shuffle {\n  green red\n  blue red\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 923\n  ypos 1510\n }\n Grade {\n  black_clamp false\n  name Grade15\n  xpos 923\n  ypos 1592\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge6\n  xpos 923\n  ypos 1683\n  disable {{1-parent.MasterControl.boolean}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge5\n  xpos 923\n  ypos 1917\n  disable {{1-parent.MasterControl.boolean_2}}\n }\n Shuffle {\n  alpha black\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos 923\n  ypos 2293\n }\n Grade {\n  black_clamp false\n  name Grade14\n  xpos 923\n  ypos 2637\n }\n Dot {\n  name Dot17\n  xpos 957\n  ypos 2874\n }\nset N1cd39ac0 [stack 0]\n Transform {\n  scale {{parent.Reformat3.scale.0} {parent.Reformat3.scale.1}}\n  center {{width/2} {height/2}}\n  filter Mitchell\n  name Transform1\n  label scale\n  xpos 1096\n  ypos 2864\n }\n Reformat {\n  type scale\n  scale {1 1}\n  resize none\n  filter Lanczos4\n  name Reformat3\n  label \"scale format\"\n  xpos 1221\n  ypos 2864\n }\n Reformat {\n  type scale\n  scale {{parent.MasterControl.radius/200}}\n  filter Lanczos4\n  name Reformat2\n  label radius\n  xpos 1338\n  ypos 2864\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  label \"\\[value in]\"\n  xpos 1448\n  ypos 2864\n }\nset N1cd6b030 [stack 0]\npush $N1cd6b030\n Shuffle {\n  alpha white\n  name Shuffle10\n  label \"\\[value in]\"\n  xpos 1552\n  ypos 2864\n  disable {{parent.togglefix}}\n }\n Grade {\n  multiply 1e-05\n  black_clamp false\n  name Grade17\n  label normalize\n  xpos 1662\n  ypos 2864\n }\npush $N1bbe95b0\n Shuffle {\n  alpha white\n  name Shuffle3\n  label \"\\[value in]\"\n  xpos 1792\n  ypos 2574\n }\n Convolve2 {\n  inputs 2\n  channels rgba\n  filter_channel rgba.red\n  use_input_channels true\n  normalize false\n  name Convolve1\n  xpos 1792\n  ypos 2870\n }\n Shuffle {\n  alpha black\n  name Shuffle9\n  label \"\\[value in]\"\n  xpos 1792\n  ypos 2919\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  name Crop1\n  xpos 1792\n  ypos 2993\n  disable {{1-parent.MasterControl.boolean_1}}\n }\npush $N1cd39ac0\n Switch {\n  inputs 3\n  which {{parent.Switch3.which}}\n  name Switch2\n  xpos 1380\n  ypos 3232\n }\n Output {\n  name Output1\n  xpos 1380\n  ypos 3336\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"   create rays    \"\n  note_font_size 40\n  xpos 1188\n  ypos -730\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"    spread    \"\n  note_font_size 40\n  xpos 1168\n  ypos -103\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"   create glow    \"\n  note_font_size 40\n  xpos 642\n  ypos 592\n }\n StickyNote {\n  inputs 0\n  name StickyNote5\n  label \"    falloff to zero    \"\n  note_font_size 40\n  xpos 117\n  ypos 1047\n }\n StickyNote {\n  inputs 0\n  name StickyNote6\n  label \"    convolve    \"\n  note_font_size 40\n  xpos 1557\n  ypos 2747\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FractalBlur.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name FractalBlur\n selected true\n addUserKnob {20 User}\n addUserKnob {4 output l Output M {rgba alpha}}\n output alpha\n addUserKnob {26 \"\"}\n addUserKnob {7 FractalBlur_UserDilate l Spread R 0 200}\n addUserKnob {7 FractalBlur_UserGrainSize l \"Grain Size\" R 0 100}\n FractalBlur_UserGrainSize 20\n addUserKnob {7 FractalBlur_UserContrast l Contrast}\n addUserKnob {7 FractalBlur_UserGamma l Gamma R 0 5}\n FractalBlur_UserGamma 1\n addUserKnob {6 FractalBlur_UserBlackWhite l \"Make black and white\" +STARTLINE}\n addUserKnob {7 FractalBlur_UserThreshold l Threshold}\n addUserKnob {6 FractalBlur_UserBW l \"Clamp output\" +STARTLINE}\n FractalBlur_UserBW true\n addUserKnob {26 \"\"}\n addUserKnob {7 FractalBlur_UserGrainEvolve l \"Grain Evolution\" t \"Keyframe this value to animate the grain\" R 0 10}\n FractalBlur_UserGrainEvolve 1\n addUserKnob {26 \"\"}\n addUserKnob {26 instructions l \"\" +STARTLINE T \"Plug a texture into Input2 to use that instead of noise\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 FractalBlur_Credit l \"\" +STARTLINE T \"Fractal Blur v1.9 by Richard Frazer - www.richardfrazer.com\\nmod-v1 by Holger Hummel - www.celluloid-vfx.com\"}\n}\n Input {\n  inputs 0\n  name TEXTURE\n  selected true\n  xpos 1874\n  ypos -423\n  number 1\n }\n Dot {\n  name Dot2\n  selected true\n  xpos 1908\n  ypos -118\n }\nset Ne7325c0 [stack 0]\n Input {\n  inputs 0\n  name ALPHA\n  selected true\n  xpos 1249\n  ypos -506\n }\n Dot {\n  name Dot4\n  selected true\n  xpos 1283\n  ypos -413\n }\nset N12b7dd80 [stack 0]\n Dot {\n  name Dot3\n  selected true\n  xpos 1550\n  ypos -370\n }\nset N12b69400 [stack 0]\n Dot {\n  name Dot1\n  selected true\n  xpos 1748\n  ypos -370\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle10\n  selected true\n  xpos 1714\n  ypos -255\n }\n Noise {\n  cliptype none\n  size {{\"\\[value FractalBlur_UserGrainSize]\" i}}\n  zoffset {{\"\\[value FractalBlur_UserGrainEvolve]\" i}}\n  center {1024 778}\n  name Noise1\n  selected true\n  xpos 1714\n  ypos -166\n }\nset Nb6e7c90 [stack 0]\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1]\"}}\n  name Switch3\n  selected true\n  xpos 1714\n  ypos -122\n }\n Invert {\n  name Invert4\n  selected true\n  xpos 1714\n  ypos -72\n }\npush $N12b69400\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  selected true\n  xpos 1516\n  ypos -333\n }\n Blur {\n  size {{\"\\[value FractalBlur_UserDilate]\" i x101 0}}\n  name Blur1\n  selected true\n  xpos 1516\n  ypos -283\n }\n FilterErode {\n  channels rgba\n  size {{\"(-\\[value FractalBlur_UserDilate])/2\" i x1 0}}\n  filter gaussian\n  name FilterErode7\n  selected true\n  xpos 1516\n  ypos -216\n }\n Dot {\n  name Dot10\n  selected true\n  xpos 1550\n  ypos -133\n }\nset N12ea2320 [stack 0]\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge2\n  selected true\n  xpos 1660\n  ypos -6\n }\n Invert {\n  name Invert3\n  selected true\n  xpos 1660\n  ypos 37\n }\npush $N12ea2320\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge13\n  selected true\n  xpos 1516\n  ypos 72\n }\nset N12ea7d20 [stack 0]\n Clamp {\n  name Clamp1\n  selected true\n  xpos 1408\n  ypos 116\n }\n Grade {\n  channels rgba\n  blackpoint {{FractalBlur_UserThreshold i}}\n  whitepoint {{FractalBlur_UserThreshold i}}\n  name Grade1\n  selected true\n  xpos 1408\n  ypos 195\n }\npush $N12ea7d20\n Switch {\n  inputs 2\n  which {{FractalBlur_UserBlackWhite i x47 1}}\n  name Switch1\n  selected true\n  xpos 1516\n  ypos 249\n }\n Grade {\n  channels rgba\n  blackpoint {{FractalBlur_UserContrast}}\n  whitepoint {{1-FractalBlur_UserContrast}}\n  gamma {{FractalBlur_UserGamma x101 0.985}}\n  black_clamp false\n  name Grade5\n  selected true\n  xpos 1516\n  ypos 329\n }\nset N13100180 [stack 0]\n Clamp {\n  name Clamp2\n  selected true\n  xpos 1426\n  ypos 394\n }\npush $N13100180\n Switch {\n  inputs 2\n  which {{FractalBlur_UserBW x47 0}}\n  name Switch2\n  selected true\n  xpos 1516\n  ypos 466\n }\n Dot {\n  name Dot6\n  selected true\n  xpos 1550\n  ypos 545\n }\nset N12ef6c40 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  selected true\n  xpos 1516\n  ypos 619\n }\npush $N12ef6c40\npush $N12b7dd80\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy1\n  selected true\n  xpos 1249\n  ypos 575\n }\n Dot {\n  name Dot5\n  selected true\n  xpos 1283\n  ypos 636\n }\n Switch {\n  inputs 2\n  which {{parent.output}}\n  name Switch5\n  selected true\n  xpos 1516\n  ypos 751\n }\n Output {\n  name Output1\n  selected true\n  xpos 1516\n  ypos 851\n }\npush $Ne7325c0\npush $Nb6e7c90\n Switch {\n  inputs 2\n  which {{parent.altInput}}\n  name Switch4\n  selected true\n  xpos 1874\n  ypos -65\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameFiller.gizmo",
    "content": "Group {\n name FrameFiller\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nlogKnobs = \\['vectorDetailLocal','smoothnessLocal','vectorDetailReg','strengthReg']\\nfor knob in logKnobs :\\n    thisGRP\\[knob].setFlag(0x00000004)\\n\"\n tile_color 0x7f6a3fff\n addUserKnob {20 tab_general l General}\n addUserKnob {6 use_gpu l \"Use GPU if available\" t \"Select this to render on the <b>Local GPU</b>, if available.\\n\\nYou can select this even if no GPU is currently available on your machine. The GPU will then be used whenever the script is opened on a machine which does have a GPU available. You should also select this if you wish to render from the command line with the <b>--gpu</b> option.\\n\\nIf this node requires full frames from its inputs, and is therefore unable to reduce its memory overhead, it will fall back to the CPU if an attempt to render a frame on the GPU fails due to lack of memory. When this occurs, a warning message will be printed to the console.\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 channels l Channels t \"The effect is applied only to these channels\" T menu02.retimedChannels}\n addUserKnob {1 fixframes l \"frame(s) to fix\" t \"Fill in the frame(s) need to be generate. Support single frame, multiply frames, and multiply frames in a row.\\n\\nWritten format :\\nseparate multiply frames with ',' or join multiply frames with '-'\\n<i>e.g. 1010,1012,1013,1014,1020\\ne.g. 1010,1012-1014,1020</i>\\neither format work.\"}\n addUserKnob {22 detect_from_read l \"Detect from Read\" t \"Detect missing frame from the file path provided from Read node and auto fill in 'frame(s) to fix' knob.\\n\\nThis function will check the file system, and only works when Read node connect directly. Any nodes in between this node and Read node will not work.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nif thisGRP.dependencies()\\[0].Class() == 'Read' :\\n\\tfilepath = nuke.os.path.split( thisGRP.dependencies()\\[0]\\['file'].value() )\\n\\ttry :\\n\\t\\tfileformat = \\[ filepath\\[1].split('%0')\\[0] , filepath\\[1].split('%0')\\[1]\\[2:] ]\\n\\n\\t\\tavailframes = \\[]\\n\\t\\tfor file in nuke.os.listdir( filepath\\[0] ) :\\n\\t\\t\\tif file\\[:len(fileformat\\[0])] == fileformat\\[0] and file\\[-len(fileformat\\[1]):] == fileformat\\[1] :\\n\\t\\t\\t\\tavailframes.append( int(file\\[len(fileformat\\[0]) : -len(fileformat\\[1]):]) )\\n\\t\\tavailframes.sort()\\n\\n\\t\\tmissingframes = \\[]\\n\\n\\t\\tfor frame in range( availframes\\[0], availframes\\[-1:]\\[0] + 1 , 1 ) :\\n\\t\\t\\tif frame not in availframes :\\n\\t\\t\\t\\tmissingframes.append( str(frame) )\\n\\n\\t\\tstage01 = dataReconcile( missingframes )\\n\\t\\tstage02 = seqConvert( stage01\\[1] )\\n\\t\\tmissingData = \\[str(i) for i in stage01\\[0]]\\n\\n\\t\\tfor key,value in stage02.items() :\\n\\t\\t\\tmissingData.append( '\\{0\\}-\\{1\\}'.format(str(key),str(key+value-1)) )\\n\\t\\tmissingData.sort()\\n\\t\\t\\n\\t\\tthisGRP\\['fixframes'].setValue( ','.join( missingData ) )\\n\\texcept IndexError :\\n\\t\\tnuke.message('File path is not a sequence.<br><br>Process denied...')\\nelse :\\n\\tnuke.message('This function only works with Read node connect to FrameFiller directly.')\"}\n addUserKnob {22 generate l Generate t \"Generate the frame interpolation setup inside this tool. 'frame(s) to fix' define which frame(s) need to be generate.\\n\\nAfter that, 'frame(s) to fix' will be locked. Hit 'Reset' to clean up internal generated setup and unlock 'frame(s) to fix' knob.\" T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\n##########\\n\\nfframes = thisGRP\\['fixframes'].value().replace(' ','').split(',')\\n\\nif len(fframes\\[0]) :\\n\\tstage01 = dataReconcile( fframes )\\n\\tlastNode = nuke.toNode('dot_start')\\n\\n\\tif len(stage01\\[0]) :\\n\\t\\tsingleFrame = stage01\\[0]\\n\\t\\tlastNode = gen(singleFrame , 1 , lastNode)\\n\\n\\tif len(stage01\\[1]) :\\n\\t\\tmultData = seqConvert( stage01\\[1] )\\n\\t\\tfor key,value in multData.items() :\\n\\t\\t\\tlastNode = gen( \\[key] , value , lastNode)\\n\\n\\tnuke.toNode('dot_end').setInput(0, lastNode)\\n\\n\\tthisGRP\\['fixframes'].setEnabled(False)\\n\\tthisGRP\\['detect_from_read'].setEnabled(False)\\nelse :\\n\\tnuke.message(\\\"No frame provided.<br><br>Access denied...\\\")\" +STARTLINE}\n addUserKnob {22 reset l Reset t \"Remove all internal setup and unlock 'frame(s) to fix' knob.\" -STARTLINE T \"base = \\['menu02', 'menu01', 'Output1', 'dot_end', 'dot_start', 'input', 'BackdropNode2', 'BackdropNode1','store']\\nfor node in nuke.allNodes() :\\n\\tif node.name() not in base :\\n\\t\\tnuke.delete( node )\\nnuke.thisGroup()\\['fixframes'].setEnabled(True)\\nnuke.thisGroup()\\['detect_from_read'].setEnabled(True)\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 subframeBias l \"subframe(s) bias\" t \"Balance pre-frame and post frame ratio.\\n\\n0.5 is the averge of 2 existing frames\\n0.0 bias to pre-frame\\n1.0 bias to post-frame\\n\\nThis value clamp to 0-1\"}\n subframeBias 0.5\n addUserKnob {41 motionEstimation l Motion t \"Choose the motion estimation method.\\n\\n\\nRegularized - calculates motion in a semi-global way, providing more consistent regions in the vector fields.\\nLocal - calculates motion by performing local block matching. This can sometimes lead to fragmentation in the vector fields. This is the legacy method used by previous versions of Kronos.\" T menu01.motionEstimation}\n addUserKnob {7 vectorDetailLocal l \"Vector Detail\" t \"Use this to adjust the density of the calculated motion vector field. Higher detail picks up finer movement but will take longer to calculate.\" +HIDDEN R 0.01 1}\n vectorDetailLocal 0.2\n addUserKnob {7 smoothnessLocal l Smoothness t \"A high smoothness will miss local detail, but is less likely to create spurious vectors.\" +HIDDEN R 0.01 1}\n smoothnessLocal 0.5\n addUserKnob {7 vectorDetailReg l \"Vector Detail\" t \"Use this to adjust the density of the calculated motion vector field. Higher detail picks up finer movement but will take longer to calculate.\" R 0.01 1}\n vectorDetailReg 0.3\n addUserKnob {7 strengthReg l Strength t \"Match strength.\" R 0 5}\n strengthReg 1.5\n addUserKnob {4 resampleType l Filter t \"Choose the image resampling type.\" M {Bilinear Lanczos4 Lanczos6 \"\"}}\n addUserKnob {20 grp_shutter l Shutter n 1}\n grp_shutter 0\n addUserKnob {3 shutterSamples l \"Shutter Samples\" t \"How many in-between images to average together for the motion blur.\"}\n shutterSamples 1\n addUserKnob {7 shutterTime l \"Shutter Time\" t \"Sets the equivalent shutter time of the retimed sequence.\" R 0 10}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.2}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-03-18}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.2<br>-&nbsp;compatiable&nbsp;with&nbsp;python3<br>&nbsp;&nbsp;(remove&nbsp;range&nbsp;command)<br>-&nbsp;added&nbsp;error&nbsp;message&nbsp;if&nbsp;input&nbsp;read&nbsp;is&nbsp;not&nbsp;a&nbsp;sequence<br><br>1.1<br>-&nbsp;fix&nbsp;the&nbsp;bug&nbsp;of&nbsp;the&nbsp;code&nbsp;that<br>&nbsp;&nbsp;when&nbsp;input&nbsp;frame&nbsp;seq&nbsp;withtout&nbsp;single&nbsp;frame&nbsp;to&nbsp;fix.<br><br>1.0<br>-&nbsp;framefiller&nbsp;to&nbsp;fill&nbsp;up&nbsp;missing&nbsp;frame&nbsp;with&nbsp;frame&nbsp;interpolation&nbsp;method<br>-&nbsp;support&nbsp;multiply&nbsp;frames<br>-&nbsp;support&nbsp;more&nbsp;than&nbsp;one&nbsp;broken&nbsp;frames&nbsp;in&nbsp;a&nbsp;row\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -648\n  ypos 15\n  bdwidth 234\n  bdheight 160\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 42\n  xpos -370\n  ypos 18\n  bdwidth 181\n  bdheight 242\n }\n Input {\n  inputs 0\n  name input\n  xpos 14\n  ypos 2\n }\n Dot {\n  name dot_start\n  tile_color 0xff00ff\n  xpos 48\n  ypos 93\n }\n Dot {\n  name dot_end\n  tile_color 0xff0000ff\n  xpos 48\n  ypos 434\n }\n Output {\n  name Output1\n  xpos 14\n  ypos 522\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknobs = \\['vectorDetailLocal','smoothnessLocal','vectorDetailReg','strengthReg']\\nmotionBool = False\\nif thisGRP\\['motionEstimation'].value() == 'Local' :\\n   motionBool = True \\nfor i in range(len(knobs)) :\\n    if i<2 :\\n        thisGRP\\[knobs\\[i]].setVisible( motionBool )\\n    else :\\n        thisGRP\\[knobs\\[i]].setVisible( not motionBool )\\n\"\n  xpos -568\n  ypos 99\n  addUserKnob {20 User}\n  addUserKnob {4 motionEstimation l Motion t \"Choose the motion estimation method.\\n\\n\\nRegularized - calculates motion in a semi-global way, providing more consistent regions in the vector fields.\\nLocal - calculates motion by performing local block matching. This can sometimes lead to fragmentation in the vector fields. This is the legacy method used by previous versions of Kronos. \" M {Regularized Local}}\n }\n OFlow2 {\n  inputs 0\n  useGPUIfAvailable false\n  name menu02\n  xpos -314\n  ypos 103\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -313\n  ypos 177\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def dataReconcile( _listOfSTR ) :\\n\\tsingleFrame = \\[]\\n\\tmultFrames = \\[]\\n\\tinputErrorDetect = False\\n\\n\\tfor i in _listOfSTR :\\n\\t\\tif i.find('-') > 0 :\\n\\t\\t\\tif int(i.split('-')\\[1]) < int(i.split('-')\\[0]) :\\n\\t\\t\\t\\tinputErrorDetect = True\\n\\t\\t\\telse :\\n\\t\\t\\t\\tfor j in range( int(i.split('-')\\[0]) , int(i.split('-')\\[1])+1 , 1 ) :\\n\\t\\t\\t\\t\\tmultFrames.append( j )\\n\\t\\telse :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\ti = int(i)\\n\\t\\t\\t\\tcheck = 0\\n\\t\\t\\t\\tcount = 1\\n\\t\\t\\t\\tmultDetect = False\\n\\t\\t\\t\\twhile check < 1 :\\n\\t\\t\\t\\t\\tif str(i+count) in _listOfSTR :\\n\\t\\t\\t\\t\\t\\tmultDetect = True\\n\\t\\t\\t\\t\\t\\tif (i+count-1) not in multFrames :\\n\\t\\t\\t\\t\\t\\t\\tmultFrames.append( i+count-1 )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tif multDetect == True :\\n\\t\\t\\t\\t\\t\\t\\tif (i+count-1) not in multFrames :\\n\\t\\t\\t\\t\\t\\t\\t\\tmultFrames.append( i+count-1 )\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tif  i not in multFrames :\\n\\t\\t\\t\\t\\t\\t\\t\\tsingleFrame.append( i )\\n\\t\\t\\t\\t\\t\\tcheck = 10\\n\\t\\t\\t\\t\\tcount += 1\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\tsingleFrame.sort()\\n\\tmultFrames.sort()\\n\\n\\treturn ( singleFrame , multFrames )\\n\\n##########\\n\\ndef seqConvert( _multFList ) :\\n\\tdump = \\[]\\n\\tmultData = \\{\\}\\n\\tif len(_multFList) :\\n\\t\\tfor i in _multFList :\\n\\t\\t\\tcheck = 0\\n\\t\\t\\tcount = 0\\n\\t\\t\\ttemp = \\[]\\n\\t\\t\\twhile check < 1 :\\n\\t\\t\\t\\tif i+count in _multFList :\\n\\t\\t\\t\\t\\tif i+count not in dump :\\n\\t\\t\\t\\t\\t\\ttemp.append( i+count )\\n\\t\\t\\t\\t\\t\\tdump .append( i+count )\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tcheck = 10\\n\\t\\t\\t\\tcount += 1\\n\\t\\t\\tif len(temp) :\\n\\t\\t\\t\\tmultData\\[temp\\[0]] = len(temp)\\n\\n\\treturn multData\\n\\n##########\\n\\ndef gen( _list , _steps , _stNode ) :\\n\\tstart = _stNode\\n\\n\\tfor i in range(len(_list)) :\\n\\t\\tsuffix = str(_list\\[i])\\n\\n\\t\\tdot = nuke.nodes.Dot( name='dot_\\{0\\}'.format(suffix) , inputs=\\[start] )\\n\\n\\t\\ttw = nuke.nodes.TimeWarp( name='tw_\\{0\\}'.format(suffix) , inputs=\\[dot] )\\n\\t\\ttw\\['lookup'].clearAnimated()\\n\\t\\ttw\\['lookup'].setExpression( 'frame>=\\{0\\} ? frame+\\{1\\} : frame'.format(suffix,_steps) )\\n\\n\\t\\tkro = nuke.nodes.Kronos( name='kro_\\{0\\}'.format(suffix) , \\n\\t\\t\\t\\t\\t\\t\\t\\t interpolation='Motion' ,\\n\\t\\t\\t\\t\\t\\t\\t\\t timing2='Frame' ,\\n\\t\\t\\t\\t\\t\\t\\t\\t inputs=\\[tw] )\\n\\t\\tkro\\['useGPUIfAvailable'].setExpression( 'parent.use_gpu' )\\n\\t\\tkro\\['retimedChannels'].setExpression( 'menu02.retimedChannels' )\\n\\t\\tkro\\['timingFrame2'].setExpression( '\\{0\\}-1+1/(\\{1\\}+1)*(frame-(\\{0\\}-1))*(parent.subframeBias/0.5)'.format(suffix,_steps) )\\n\\t\\tkro\\['motionEstimation'].setExpression( 'parent.motionEstimation' )\\n\\t\\tkro\\['vectorDetailLocal'].setExpression( 'parent.vectorDetailLocal' )\\n\\t\\tkro\\['smoothnessLocal'].setExpression( 'parent.smoothnessLocal' )\\n\\t\\tkro\\['vectorDetailReg'].setExpression( 'parent.vectorDetailReg' )\\n\\t\\tkro\\['strengthReg'].setExpression( 'parent.strengthReg' )\\n\\t\\tkro\\['resampleType'].setExpression( 'parent.resampleType' )\\n\\t\\tkro\\['shutterSamples'].setExpression( 'parent.shutterSamples' )\\n\\t\\tkro\\['shutterTime'].setExpression( 'parent.shutterTime' )\\n\\n\\t\\tsw = nuke.nodes.Switch( name='sw_\\{0\\}'.format(suffix) , inputs=\\[dot, kro] )\\n\\t\\tif _steps == 1 :\\n\\t\\t\\tsw\\['which'].setExpression( 'frame==\\{0\\} ? 1 : 0'.format(suffix) )\\n\\t\\telse :\\n\\t\\t\\tsw\\['which'].setExpression( 'frame>=\\{0\\}&&frame<\\{0\\}+\\{1\\} ? 1 : 0'.format(suffix,_steps) )\\n\\n\\t\\tstart = sw\\n\\n\\treturn sw\\n\\n##########\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameHoldSpecial.gizmo",
    "content": "Group {\n name FrameHold_special\n knobChanged \"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\ntype=nk\\['type']\\npause=nk\\['pause']\\nif (k.name() in \\['pause', 'first', 'last','type'] ):\\n    if(type.getValue() == 0):\\n        nk.knob('pause').setVisible(False)\\n    else:\\n        nk.knob('pause').setVisible(True)\\n    if(pause.getValue() == 0 or type == 1):\\n        nk.knob('message').setVisible(False)\\n    else:\\n        nk.begin()\\n        offset = int(nuke.toNode('TimeOffset1')\\['time_offset'].getValue())\\n        first_frame = int(nuke.toNode('FrameRange_input')\\['first_frame'].getValue())\\n        last_frame = int(nuke.toNode('FrameRange_input')\\['last_frame'].getValue()) + offset\\n        nk.end()\\n\\n        nk.knob('message').setValue('Now your new Frame Range is: ' + str(first_frame) + ' - ' + str(last_frame))\\n        nk.knob('message').setVisible(True)\\n\"\n tile_color 0xb0a254ff\n label \"(frame \\[value knob.frame_hold])\"\n lifetimeStart 1\n lifetimeEnd 100\n addUserKnob {20 FrameHold}\n addUserKnob {3 frame_hold l \"Frame Hold\"}\n frame_hold 1001\n addUserKnob {22 current_frame l \"<i><font color=\\\"yellow\\\">Current frame\" -STARTLINE T nuke.thisNode().knob('frame_hold').setValue(nuke.frame())}\n addUserKnob {26 \"\"}\n addUserKnob {4 type l \"Hold this frame:\" t \"- Always: it's the classic FrameHold\\n- Range: specify the FrameRange in the textfields. You can pause the original plate and play it again after the FrameHold.\" M {Always Range \"\" \"\"}}\n type Range\n addUserKnob {3 first l Range}\n first 1005\n addUserKnob {3 last l \"\" -STARTLINE}\n last 1010\n addUserKnob {6 pause l \"continue plate after Framehold\" t \"If checked, the plate will restart from the frame after the Framehold. \" +STARTLINE}\n addUserKnob {26 message l \"\" +STARTLINE +HIDDEN T \"Now your new Frame Range is: 1 - 106\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 email l \"\" -STARTLINE T \"<b><font color=\\\"yellow\\\">FrameHold Special v2.3</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n addUserKnob {22 explanation l ? T \"nuke.message(\\\"This FrameHold node is has something more compared to the classic one:\\\\n - You can set the frame range when the Framehold works, without using other nodes or animate keyframes\\\\n - Plus, you can continue the plate after the Frame Hold\\\\n\\\\n - EXAMPLE: FrameHold: 1005\\\\n - Range: 1005 - 1010\\\\n - if you NOT continue: at frame 1011 will switch back to the plate, so at the frame 1011\\\\n - if you continue: at the frame 1011 will restart from 1005, frame 1011 will be 1006 and so on.\\\")\" +STARTLINE}\n addUserKnob {22 info l Tutorial -STARTLINE T \"nuke.tcl('start', 'http://www.nukepedia.com/gizmos/time/framehold-special') \"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -1030\n  ypos -226\n }\nset Ned2886f0 [stack 0]\n Dot {\n  name Dot1\n  xpos -996\n  ypos -150\n }\nset Ne2d05d40 [stack 0]\n Dot {\n  name Dot3\n  xpos -886\n  ypos -150\n }\n TimeOffset {\n  time_offset {{abs(last-first)+1}}\n  time \"\"\n  name TimeOffset1\n  xpos -917\n  ypos -81\n }\n Dot {\n  name Dot4\n  xpos -886\n  ypos -6\n }\npush $Ne2d05d40\n Dot {\n  name Dot2\n  xpos -1109\n  ypos -150\n }\n FrameHold {\n  first_frame {{parent.frame_hold}}\n  name FrameHold1\n  xpos -1140\n  ypos -88\n }\npush $Ne2d05d40\n Switch {\n  inputs 2\n  which {{parent.type?x>=min(parent.first,parent.last)&&x<=max(parent.first,parent.last):1}}\n  name Switch2\n  xpos -1030\n  ypos -82\n }\n Switch {\n  inputs 2\n  which {{pause&&parent.type?x>max(parent.first,parent.last):0}}\n  name Switch1\n  selected true\n  xpos -1030\n  ypos -7\n }\n FrameRange {\n  first_frame {{parent.FrameRange_input.knob.first_frame}}\n  last_frame {{parent.pause?parent.FrameRange_input.knob.last_frame+parent.TimeOffset1.time_offset:parent.FrameRange_input.knob.last_frame}}\n  time \"\"\n  name FrameRange_input1\n  xpos -1030\n  ypos 116\n }\nset Neb47c800 [stack 0]\n Output {\n  name Output1\n  xpos -1030\n  ypos 219\n }\npush $Neb47c800\npush $Ned2886f0\n FrameRange {\n  first_frame {{input.first_frame}}\n  last_frame {{input.last_frame}}\n  time \"\"\n  name FrameRange_input\n  xpos -843\n  ypos -226\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameMedian.gizmo",
    "content": "Group {\n name FrameMedian\n tile_color 0x2f66ff\n selected true\n addUserKnob {20 FrameMedian}\n addUserKnob {26 \"\"}\n addUserKnob {4 Method l \"Calculation Method\" M {\"Frame Range\" \"Specified Frames\" \"\" \"\"}}\n addUserKnob {26 FrameRange_line l \"<b><font color=#70EE70>Frame Range</font><b>\"}\n addUserKnob {7 MaxFrames l \"Sample Frames\" R 1 20}\n MaxFrames 15\n addUserKnob {3 FramesFrom l \"Frame Range From\"}\n FramesFrom 1\n addUserKnob {3 Frames l To -STARTLINE}\n Frames 100\n addUserKnob {26 devider_specframe l \"<b><font color=#70EE70>Specified Frames</font><b>\"}\n addUserKnob {1 frame_list l frames}\n frame_list \"\\[43, 53, 63, 73, 83]\"\n addUserKnob {22 ToggleFrame l \"Toggle Frame\" T \"tempval = nuke.thisNode().knob(\\\"frame_list\\\").value()\\ntempval = eval(tempval)\\nfound = False\\nfor index, item in enumerate(tempval):\\n    if item==nuke.frame():\\n        tempval.pop(index)\\n        found = True\\n        break\\nif not found:\\n        tempval.append(nuke.frame()) \\ntempval.sort()\\nnuke.thisNode().knob(\\\"frame_list\\\").setValue(str(tempval))\" +STARTLINE}\n addUserKnob {22 clear l Clear -STARTLINE T \"nuke.thisNode().knob(\\\"frame_list\\\").setValue(\\\"\\[]\\\")\"}\n addUserKnob {20 HelpTab l Help}\n addUserKnob {26 Help}\n addUserKnob {26 Info l \"\" -STARTLINE T \"The input plate must be stabelized before running this node.\\n\\n\\[Frame Range]\\nA: Set the frame range to the desidred input frame range\\nB: Set the number of frames you want to sample from.\\n\\n\\[Specified Frames]\\nA: Go to a frame that you want to include and hit \\\"Toggle Frame\\\".\\n(If you want to remove a frame, just go to that frame and hit \\n\\\"Toggle Frame\\\" again.)\"}\n}\n Input {\n  inputs 0\n  name Input1\n  selected true\n  xpos -643\n  ypos -375\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -643\n  ypos -326\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -609\n  ypos -272\n }\nset N40125f10 [stack 0]\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_19\n  xpos 237\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_18\n  xpos 119\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_17\n  xpos 17\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_16\n  xpos -93\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_15\n  xpos -203\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_14\n  xpos -313\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_13\n  xpos -423\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_12\n  xpos -533\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_11\n  xpos -643\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_10\n  xpos -753\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_9\n  xpos -863\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_8\n  xpos -973\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_7\n  xpos -1083\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_6\n  xpos -1193\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_5\n  xpos -1303\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[int(nuke.thisNode().name().split(\\\"_\\\")\\[1])]\\}]\"}}\n  name TO_4\n  xpos -1413\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[int(nuke.thisNode().name().split(\\\"_\\\")\\[1])]\\}]\"}}\n  name TO_3\n  xpos -1523\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[int(nuke.thisNode().name().split(\\\"_\\\")\\[1])]\\}]\"}}\n  name TO_2\n  xpos -1633\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[int(nuke.thisNode().name().split(\\\"_\\\")\\[1])]\\}]\"}}\n  name TO_1\n  xpos -1743\n  ypos -112\n }\npush $N40125f10\n FrameHold {\n  first_frame {{\"parent.Method==0?floor(parent.FramesFrom+(((parent.Frames-parent.FramesFrom)/parent.MaxFrames)*\\[lindex \\[split \\[value name] _] 1])):\\[python \\{eval(nuke.thisParent().knob(\\\"frame_list\\\").value())\\[min(len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))-1,int(nuke.thisNode().name().split(\\\"_\\\")\\[1]))]\\}]\"}}\n  name TO_0\n  xpos -1868\n  ypos -112\n }\n BlinkScript {\n  inputs 20\n  ProgramGroup 1\n  KernelDescription \"1 \\\"CleanPlater\\\" iterate componentWise e23f2c1acd3c540d820e06225fe9058ef919b69ea31e669235276c5ae236c0a7 21 \\\"src1\\\" Read Point \\\"src2\\\" Read Point \\\"src3\\\" Read Point \\\"src4\\\" Read Point \\\"src5\\\" Read Point \\\"src6\\\" Read Point \\\"src7\\\" Read Point \\\"src8\\\" Read Point \\\"src9\\\" Read Point \\\"src10\\\" Read Point \\\"src11\\\" Read Point \\\"src12\\\" Read Point \\\"src13\\\" Read Point \\\"src14\\\" Read Point \\\"src15\\\" Read Point \\\"src16\\\" Read Point \\\"src17\\\" Read Point \\\"src18\\\" Read Point \\\"src19\\\" Read Point \\\"src20\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Frames\\\" Int 1 AQAAAA==\"\n  kernelSource \"kernel CleanPlater : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src1; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src2;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src3;  \\n  Image<eRead, eAccessPoint, eEdgeClamped> src4;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src5;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src6;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src7; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src8;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src9; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src10;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src11; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src12;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src13;  \\n  Image<eRead, eAccessPoint, eEdgeClamped> src14;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src15;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src16;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src17; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src18;\\n  Image<eRead, eAccessPoint, eEdgeClamped> src19; \\n  Image<eRead, eAccessPoint, eEdgeClamped> src20;\\n  Image<eWrite> dst;\\n  param:\\n    int frames;\\n  void define() \\{\\n    defineParam(frames, \\\"Frames\\\", 1);\\n  \\}\\n  void process() \\{\\n    float values\\[] = \\{src1(),src2(),src3(),src4(),src5(),src6(),src7(),src8(),src9(),src10(),src11(),src12(),src13(),src14(),src15(),src16(),src17(),src18(),src19(),src20(),\\};\\n    float outputS = median(values,  frames);\\n    dst() = outputS;\\n   \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  CleanPlater_Frames {{\"parent.Method==0?parent.MaxFrames:\\[python \\{len(eval(nuke.thisParent().knob(\\\"frame_list\\\").value()))\\}]\"}}\n  rebuild_finalise \"\"\n  name BlinkScript3\n  xpos -643\n  ypos 80\n }\n Output {\n  name Output1\n  xpos -643\n  ypos 144\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GUI_Switch.gizmo",
    "content": "Group {\n name GUI_Switch\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"disable\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"output\\\"].setValue(\\\"RENDER\\\")\\n        n\\[\\\"tile_color\\\"].setValue(16711935)\\n    elif k.getValue() == 0:\\n        n\\[\\\"output\\\"].setValue(\\\"GUI\\\")\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\"\n tile_color 0xff0000ff\n note_font \"Verdana Bold Bold\"\n note_font_color 0x40404ff\n selected true\n dope_sheet true\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 description l Description: T \"GUI_Switch\\n\\nNode will switch to the Render Pipe on Render Time.  \\n\\nNode will display the GUI Pipe while working.\\n\\nDisabling defaults to Render Side \\n(can safely toggle disable since\\nexpression is on the switch 'which' knob)\"}\n addUserKnob {1 output l INVISIBLE +INVISIBLE}\n output GUI\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name InputRender\n  xpos -502\n  ypos -435\n }\n Input {\n  inputs 0\n  name InputGUI\n  xpos -341\n  ypos -517\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"\\[python nuke.executing()]\"}}\n  name Switch1\n  xpos -341\n  ypos -435\n }\n Output {\n  name Output1\n  xpos -341\n  ypos -366\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GammaPlus.gizmo",
    "content": "Group {\n name GammaPlus\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    if thisGRP\\[knob].label()\\[:19] == 'panel dropped state' :\\n        thisGRP.removeKnob( nuke.thisNode()\\[knob] )\\n    try :\\n        if thisGRP\\[knob].Class() == 'AColor_Knob' and thisGRP\\[knob].getValue() == \\[0,0,0,0] :\\n            thisGRP\\[knob].setSingleValue(True)\\n    except :\\n        pass\\nthisGRP\\['value_luma'].setFlag(0x00000004)\\n\"\n tile_color 0x7fb2ffff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 channels t \"The effect is applied only to these channels\" T menu01.channels}\n addUserKnob {41 channels_cs t \"The effect is applied only to these channels\" +INVISIBLE T menu02.channels}\n addUserKnob {26 title_setting l \"<b><font color='#77a7d9'>setting</font></b>\"}\n addUserKnob {4 method l \"method use in\" t \"<b>Grade</b>\\n- as Grade node gamma math with condition\\n  0.0-1.0 use regular math\\n  above 1.0 will switch to multiply\\n\\n  data<0 ? data : data>1 ? (data-1)*(1/gamma)+1 : data**(1/gamma)\\n\\n----------\\n\\n<b>ColorCorrect/Gamma</b>\\n- as ColorCorrect/Gamma node\\n  use regular gamma math\\n\\n  data**(1/gamma)\" M {Grade ColorCorrect/Gamma \"\"}}\n addUserKnob {41 apply_on l \"apply on\" t \"<b>Color</b>\\nResult apply on color, saturation might change a lot.\\n\\n<b>Luminance</b>\\nResult apply on luminance, saturation affects the minimal.\" T menu03.apply_on}\n addUserKnob {19 set_pivot l \"set pivot\" t \"set pivot\\nto lock the value for gamma correction.\\n\\nCtrl+Alt+colorpick\\nto sample the input source value before gamma correction.\\n\" R 0 4}\n set_pivot 1\n addUserKnob {26 title_gamma l \"<b><font color='#77a7d9'>gamma</font></b>\"}\n addUserKnob {19 value_color l \"value color\" t \"Gamma correction applied to final result\" R 0.2 5}\n value_color 1\n addUserKnob {7 value_luma l \"value luma\" t \"Gamma correction applied to final result\" +DISABLED R 0.2 5}\n value_luma 1\n addUserKnob {6 reverse +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {7 mix t \"Dissolve between the original image at 0 and the full effect at 1.\"}\n mix 1\n addUserKnob {22 as_contrast l \"Tips : use as contrast in ColorCorrect\" T \"nuke.message('Setting as contrast on ColorCorrect :\\\\n\\\\nmethod use in = ColorCorrect/Gamma\\\\napply on = Color\\\\nset_pivot = 0.18\\\\nreverse = checked\\\\n\\\\nThen value will work as Contrast in ColorCorrect.')\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-09-11}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.0<br>-&nbsp;more&nbsp;setting&nbsp;on&nbsp;gamma/contrast\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 42\n  xpos -1049\n  ypos -17\n  bdwidth 384\n  bdheight 351\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1514\n  ypos -17\n  bdwidth 384\n  bdheight 351\n }\n Input {\n  inputs 0\n  name img\n  xpos 0\n  ypos -77\n }\n Dot {\n  name Dot5\n  xpos 34\n  ypos 99\n }\nset Nea9e000 [stack 0]\n Dot {\n  name Dot8\n  xpos -840\n  ypos 99\n }\nset Ne8ddc00 [stack 0]\n Dot {\n  name Dot7\n  xpos -957\n  ypos 99\n }\n Multiply {\n  channels rgb\n  name menu01\n  knobChanged \"\\nnuke.thisGroup()\\['channels_cs'].setValue( nuke.thisGroup()\\['channels'].value() )\\n\"\n  xpos -991\n  ypos 175\n }\npush $Ne8ddc00\n Colorspace {\n  name menu02\n  xpos -874\n  ypos 173\n }\n NoOp {\n  inputs 0\n  name menu03\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['apply_on'].getValue() == 0 :\\n    thisGRP\\['value_color'].setEnabled(True)\\n    thisGRP\\['value_luma'].setEnabled(False)\\nelse :\\n    thisGRP\\['value_color'].setEnabled(False)\\n    thisGRP\\['value_luma'].setEnabled(True)\\n\"\n  xpos -1387\n  ypos 171\n  addUserKnob {20 User}\n  addUserKnob {4 apply_on l \"apply on\" M {Color Luminance}}\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 10\n  box_height 10\n  box_fixed true\n  name Reformat1\n  xpos -561\n  ypos 505\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  xpos -561\n  ypos 585\n }\n Input {\n  inputs 0\n  name mask\n  xpos -388\n  ypos -75\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos -388\n  ypos 585\n }\n Dot {\n  name Dot6\n  xpos -354\n  ypos 710\n }\npush $Nea9e000\n Dot {\n  name Dot1\n  xpos 169\n  ypos 99\n }\nset Ne905000 [stack 0]\n Dot {\n  name Dot2\n  xpos 426\n  ypos 99\n }\n Colorspace {\n  channels {{{menu02.channels}}}\n  colorspace_out HSV\n  name HSV\n  xpos 392\n  ypos 173\n }\n Multiply {\n  channels {{{menu01.channels}}}\n  value {1 1 {\"1/\\nmax(\\n        ( parent.set_pivot.r <= 0.0031308 ? parent.set_pivot.r*12.92 : 1.055 * (parent.set_pivot.r**(1/2.4)) - 0.055 ) ,\\n        ( parent.set_pivot.g <= 0.0031308 ? parent.set_pivot.g*12.92 : 1.055 * (parent.set_pivot.g**(1/2.4)) - 0.055 ) ,\\n        ( parent.set_pivot.b <= 0.0031308 ? parent.set_pivot.b*12.92 : 1.055 * (parent.set_pivot.b**(1/2.4)) - 0.055 )\\n       )\"} {1/parent.set_pivot}}\n  name Multiply3\n  xpos 392\n  ypos 253\n }\n Dot {\n  name Dot9\n  xpos 426\n  ypos 316\n }\nset Ne904000 [stack 0]\n Gamma {\n  channels {{{menu01.channels}}}\n  value {1 1 {\"parent.reverse ? (1/parent.value_luma) : parent.value_luma\"} {\"parent.reverse ? (1/parent.value_luma) : parent.value_luma\"}}\n  name Gamma2\n  xpos 499\n  ypos 382\n }\npush $Ne904000\n Grade {\n  channels {{{menu01.channels}}}\n  gamma {1 1 {\"parent.reverse ? (1/parent.value_luma) : parent.value_luma\"} {\"parent.reverse ? (1/parent.value_luma) : parent.value_luma\"}}\n  black_clamp false\n  name Grade2\n  xpos 392\n  ypos 383\n }\n Switch {\n  inputs 2\n  which {{parent.method}}\n  name Switch4\n  xpos 392\n  ypos 470\n }\n Multiply {\n  channels {{{menu01.channels}}}\n  value {1 1 {\"max(\\n        ( parent.set_pivot.r <= 0.0031308 ? parent.set_pivot.r*12.92 : 1.055 * (parent.set_pivot.r**(1/2.4)) - 0.055 ) ,\\n        ( parent.set_pivot.g <= 0.0031308 ? parent.set_pivot.g*12.92 : 1.055 * (parent.set_pivot.g**(1/2.4)) - 0.055 ) ,\\n        ( parent.set_pivot.b <= 0.0031308 ? parent.set_pivot.b*12.92 : 1.055 * (parent.set_pivot.b**(1/2.4)) - 0.055 )\\n       )\"} {parent.set_pivot}}\n  name Multiply4\n  xpos 392\n  ypos 550\n }\n Colorspace {\n  channels {{{menu02.channels}}}\n  colorspace_in HSV\n  name invHSV\n  xpos 392\n  ypos 630\n }\n Dot {\n  name Dot3\n  xpos 426\n  ypos 710\n }\npush $Ne905000\n Multiply {\n  channels {{{menu01.channels}}}\n  value {{1/parent.set_pivot} {1/parent.set_pivot} {1/parent.set_pivot} {1/parent.set_pivot}}\n  name Multiply1\n  xpos 135\n  ypos 173\n }\n Dot {\n  name Dot4\n  xpos 169\n  ypos 253\n }\nset Ne7e2000 [stack 0]\n Gamma {\n  channels {{{menu01.channels}}}\n  value {{\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"}}\n  name Gamma1\n  xpos 248\n  ypos 328\n }\npush $Ne7e2000\n Grade {\n  channels {{{menu01.channels}}}\n  gamma {{\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"} {\"parent.reverse ? (1/parent.value_color) : parent.value_color\"}}\n  black_clamp false\n  name Grade1\n  xpos 135\n  ypos 327\n }\n Switch {\n  inputs 2\n  which {{parent.method}}\n  name Switch2\n  xpos 135\n  ypos 407\n }\n Multiply {\n  channels {{{menu01.channels}}}\n  value {{parent.set_pivot} {parent.set_pivot} {parent.set_pivot} {parent.set_pivot}}\n  name Multiply2\n  xpos 135\n  ypos 487\n }\n Switch {\n  inputs 2\n  which {{parent.apply_on}}\n  name Switch1\n  xpos 135\n  ypos 707\n }\npush $Nea9e000\n Keymix {\n  inputs 3\n  mix {{clamp(parent.mix)}}\n  name Keymix1\n  xpos 0\n  ypos 701\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 928\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GenerateMatrix4.gizmo",
    "content": "Group {\n name GenerateMatrix4_\n help \"Generate a Matrix4 based on a Matrix Knob. (Defaults to an identity matrix)\"\n knobChanged \"node = nuke.thisNode()\\nknob = nuke.thisKnob()\\n\\nif knob.name() == \\\"inputChange\\\":\\n    with node:\\n        format_knob = nuke.toNode('Constant1')\\['format']\\n    if node.input(0):\\n        format_knob.setEnabled(False)\\n    else:\\n        format_knob.setEnabled(True)\\n\"\n addUserKnob {20 Matrix4}\n addUserKnob {41 format T Constant1.format}\n addUserKnob {26 \"\"}\n addUserKnob {41 matrix T MatrixKnob.matrix}\n\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x545454ff\n  label \"- Identity in\\n  matrix layers\\n- Bypass other channels\"\n  note_font_size 20\n  xpos 411\n  ypos 441\n  bdwidth 280\n  bdheight 262\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x545454ff\n  label \"Use input format\"\n  note_font_size 20\n  xpos 408\n  ypos -57\n  bdwidth 281\n  bdheight 195\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x545454ff\n  label \"Custom format\"\n  note_font_size 20\n  xpos 793\n  ypos -58\n  bdwidth 281\n  bdheight 195\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x464646ff\n  label \"Used for\\nmatrix knob\"\n  note_font_size 20\n  xpos 6\n  ypos -57\n  bdwidth 284\n  bdheight 231\n }\n Axis2 {\n  inputs 0\n  useMatrix true\n  name MatrixKnob\n  xpos 111\n  ypos 49\n }\n Constant {\n  inputs 0\n  channels rgb\n  name Constant1\n  xpos 889\n  ypos 13\n }\n Dot {\n  name Dot1\n  xpos 923\n  ypos 224\n }\n Input {\n  inputs 0\n  name Input\n  xpos 509\n  ypos 4\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name format\n  xpos 509\n  ypos 220\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n AddChannels {\n  channels matrix0\n  channels2 matrix1\n  channels3 matrix2\n  channels4 matrix3\n  name AddChannels1\n  xpos 509\n  ypos 303\n }\n Expression {\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 MatrixKnob.world_matrix.0\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 MatrixKnob.world_matrix.1\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 MatrixKnob.world_matrix.2\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 MatrixKnob.world_matrix.3\n  name Expression1\n  xpos 509\n  ypos 568\n }\n Expression {\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 MatrixKnob.world_matrix.4\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 MatrixKnob.world_matrix.5\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 MatrixKnob.world_matrix.6\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 MatrixKnob.world_matrix.7\n  name Expression2\n  xpos 509\n  ypos 594\n }\n Expression {\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 MatrixKnob.world_matrix.8\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 MatrixKnob.world_matrix.9\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 MatrixKnob.world_matrix.10\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 MatrixKnob.world_matrix.11\n  name Expression3\n  xpos 509\n  ypos 620\n }\n Expression {\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 MatrixKnob.world_matrix.12\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 MatrixKnob.world_matrix.13\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 MatrixKnob.world_matrix.14\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 MatrixKnob.world_matrix.15\n  name Expression4\n  xpos 509\n  ypos 646\n }\n Output {\n  name Output1\n  xpos 509\n  ypos 756\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GenerateSTMap.gizmo",
    "content": "Group {\n inputs 0\n name GenerateSTMap\n postage_stamp true\n addUserKnob {20 STMap l \"ST Map\"}\n addUserKnob {41 format l Format T Reformat1.format}\n addUserKnob {26 \"\"}\n addUserKnob {7 overscan l \"Overscan (%)\" t \"Add overscan to your ST map\" R 0 100}\n overscan 10\n addUserKnob {6 reformat l \"Reformat to Overscan\" t \"Reformats the image to overscan size\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Reformat {\n  inputs 0\n  name Reformat1\n  xpos 555\n  ypos 395\n }\n Crop {\n  box {{-width*(parent.overscan/100)/2} {-height*(parent.overscan/100)/2} {width+(width*(parent.overscan/100)/2)} {height+(height*(parent.overscan/100)/2)}}\n  reformat {{parent.reformat}}\n  crop false\n  name Crop1\n  xpos 555\n  ypos 446\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+.5)/height\n  name Expression1\n  xpos 555\n  ypos 497\n }\n Output {\n  name Output1\n  xpos 555\n  ypos 583\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GeoToPoints.gizmo",
    "content": "Group {\n name GeoToPoints\n tile_color 0x807291ff\n selected true\n addUserKnob {20 User}\n addUserKnob {26 info l \"\" +STARTLINE T \"This node will turn whatever input geo into a pointcloud.\\n(normals are not preserved!)\\n\\n-by Mads Hagbarth Lund 2014\\n\"}\n addUserKnob {26 \"\"}\n addUserKnob {22 GeoToPoints l \"     Geo To Points     \" T \"'''================================================================================\\n; Function:                PointClouder(points):\\n; Description:            Generate a pointcloud from a series of specified points\\n; Parameter(s):            points - A list a points formated \\[\\[X,Y,Z,VEL_X,VEL_Y,VEL_Z,COL_R,COL_G,COL_B]\\[...]]\\n; Return:                myNode - The pointcloud node created by the function\\n;                            \\n; Note(s):                by Mads Hagbarth Lund 2013\\n;=================================================================================='''\\ndef PointClouder(points):\\n    pc_Points=pc_Velocities=pc_Colors = str(len(points))+ \\\" \\\"                    \\n    pc_Points = pc_Points + \\\" \\\".join(str(i) for i in chain1(*points))            \\n    pc_Velocities = pc_Velocities + \\\" \\\".join(str(i) for i in chain2(*points))\\n    pc_Colors = pc_Colors + \\\" \\\".join(str(i) for i in chain3(*points))\\n    myNode = nuke.createNode(\\\"BakedPointCloud\\\")                                 \\n    myNode.knob(\\\"serializePoints\\\").fromScript(pc_Points)                      \\n    myNode.knob(\\\"serializeNormals\\\").fromScript(pc_Velocities)\\n    myNode.knob(\\\"serializeColors\\\").fromScript(pc_Colors)\\n    return myNode\\n\\ndef chain1(*iterables):\\n    for it in iterables:\\n        for element in it\\[0:3]:\\n            yield element\\n\\ndef chain2(*iterables):\\n    for it in iterables:\\n        for element in it\\[3:6]:\\n            yield element\\n\\ndef chain3(*iterables):\\n    for it in iterables:\\n        for element in it\\[6:9]:\\n            yield element       \\n\\ndef ConvertToTup(pointList):\\n    points = \\[]\\n    for item in pointList:\\n        for n in range(0,len(item\\[0]),3):\\n            points.append(\\[item\\[0]\\[n], item\\[0]\\[n+1], item\\[0]\\[n+2],1,1,1,1,1,1])     \\n    return points\\n\\nObjectDataPre = \\[]\\n\\npag = nuke.thisNode()\\npag.begin()\\npyg = nuke.toNode(\\\"PYG\\\")\\npag.end()\\nprint(pyg.Class())\\nprint(pyg.name())\\ntry:\\n    gObj = pyg\\['geo'].getGeometry()\\[0]\\n    ObjectDataPre.append(\\[gObj.points()])\\n    PointCloudData = ConvertToTup(ObjectDataPre)\\n    PointClouder(PointCloudData)\\nexcept: \\n    nuke.message(\\\"Error, no geo found in the input\\\")\\n\" +STARTLINE}\n addUserKnob {22 GetVertCount l \"Get Number of Vertices\" T \"pag = nuke.thisNode()\\nwith pag:\\n    pyg = nuke.toNode(\\\"PYG\\\")\\ntry:\\n    pyg.knob(\\\"ClickMe\\\").execute()\\nexcept: \\n    nuke.message(\\\"Error, no geo found in the input\\\")\" +STARTLINE}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 384\n  ypos -218\n }\n PythonGeo {\n  name PYG\n  xpos 384\n  ypos -146\n  addUserKnob {20 User}\n  addUserKnob {22 ClickMe T \"pyg = nuke.thisNode()\\ngObj = pyg\\['geo'].getGeometry()\\[0]\\nnuke.message(\\\"Number of vertecies: \\\"+str(len(gObj.points())))\" +STARTLINE}\n }\n Output {\n  name Output1\n  xpos 384\n  ypos -78\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Glass.gizmo",
    "content": "Group {\nname Glass\ntile_color 0xcc804eff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected true\naddUserKnob {20 \"\" l Glass}\naddUserKnob {41 channles l channels T Merge2.also_merge}\naddUserKnob {26 \"\" +STARTLINE}\naddUserKnob {7 displace l Displace R 0 20}\ndisplace 5\naddUserKnob {7 abberation l Abberation}\naddUserKnob {26 \"\" l Defocus}\naddUserKnob {6 useDef l \"Apply Defocus\" -STARTLINE}\naddUserKnob {41 size T ZBlur1.size}\naddUserKnob {41 max_size l maximum T ZBlur1.max_size}\naddUserKnob {41 shape l \"filter shape\" T ZBlur1.shape}\naddUserKnob {26 \"\" +STARTLINE}\naddUserKnob {26 \"\" l mask T \"\"}\naddUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge2.maskChannelInput}\naddUserKnob {41 inject -STARTLINE T Merge2.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T Merge2.invert_mask}\naddUserKnob {41 fringe -STARTLINE T Merge2.fringe}\naddUserKnob {41 mix T Merge2.mix}\n}\nInput {\ninputs 0\nname Inputmask\nxpos 82\nypos 953\nnumber 2\n}\nInput {\ninputs 0\nname img\nxpos -289\nypos -1\n}\nset N122bf7f0 [stack 0]\nDot {\nname Dot1\nxpos -255\nypos 871\n}\nset N122c5dd0 [stack 0]\nInput {\ninputs 0\nname control\nxpos -64\nypos -564\nnumber 1\n}\nAddChannels {\nchannels rgba\nname AddChannels2\nxpos -64\nypos -400\n}\nset Ncf85b870 [stack 0]\npush $Ncf85b870\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy6\nxpos -64\nypos -354\ndisable {{error}}\n}\nset Ncf3e2a20 [stack 0]\nDot {\nname Dot2\nxpos 94\nypos -343\n}\nset N9387b4e0 [stack 0]\nTransform {\ntranslate {0 -1}\ncenter {320 240}\nname down\nxpos 60\nypos -141\n}\npush $Ncf3e2a20\nDot {\nname Dot3\nxpos -122\nypos -343\n}\nDot {\nname Dot4\nxpos -207\nypos -343\n}\nTransform {\ntranslate {0 1}\ncenter {320 240}\nname up\nxpos -241\nypos -180\n}\npush $N9387b4e0\nDot {\nname Dot5\nxpos 176\nypos -343\n}\nTransform {\ntranslate {1 0}\ncenter {320 240}\nname right\nxpos 142\nypos -221\n}\npush $Ncf3e2a20\nShuffle {\nin alpha\ngreen black\nblue black\nout rgb\nname Shuffle1\nxpos -64\nypos -311\n}\nTransform {\ntranslate {-1 0}\ncenter {320 240}\nname left\nxpos -64\nypos -273\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.green\nname Copy2\nxpos -64\nypos -228\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.blue\nname Copy3\nxpos -64\nypos -187\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy4\nxpos -64\nypos -147\n}\nExpression {\ntemp_name0 l\ntemp_expr0 red\ntemp_name1 r\ntemp_expr1 green\ntemp_name2 u\ntemp_expr2 blue\ntemp_name3 d\ntemp_expr3 alpha\nchannel0 {forward.u -forward.v}\nexpr0 (l-r)*width\nchannel1 {-forward.u forward.v}\nexpr1 (d-u)*width\nchannel2 depth\nexpr2 (abs(l-r)+abs(d-u))*width/2\nname Expression1\nxpos -64\nypos -3\n}\nset N54da1870 [stack 0]\nDot {\nname Dot6\nxpos 89\nypos 1\n}\nDot {\nname Dot7\nxpos 89\nypos 193\n}\npush $N54da1870\npush $N122bf7f0\nCopy {\ninputs 2\nfrom0 -rgba.alpha\nto0 -rgba.alpha\nchannels forward\nname Copy1\nxpos -64\nypos 67\n}\nCopy {\ninputs 2\nfrom0 -rgba.alpha\nto0 -rgba.alpha\nchannels depth\nname Copy8\nxpos -64\nypos 175\n}\nZBlur {\nmath -linear\nshape 1\nname ZBlur1\nxpos -64\nypos 225\ndisable {{!parent.useDef}}\n}\nset Ncbc44560 [stack 0]\nIDistort {\nuv forward\nuv_scale {{parent.displace}}\nname IDistort4\nxpos 98\nypos 788\n}\npush $Ncbc44560\nIDistort {\nuv forward\nuv_scale {{parent.displace/(1+parent.abberation/10)}}\nname IDistort3\nxpos 65\nypos 313\n}\nMultiply {\nvalue {0 0 1 1}\nname Multiply2\nlabel \"\\[value value]\"\nxpos 65\nypos 366\n}\nset Nbc97d60 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle2\nautolabel ''\ntile_color 0xffffffff\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 386\nypos 373\n}\npush 0\npush $Ncbc44560\nIDistort {\nuv forward\nuv_scale {{parent.displace}}\nname IDistort2\nxpos -64\nypos 312\n}\nMultiply {\nvalue {0 1 0 1}\nname Multiply3\nlabel \"\\[value value]\"\nxpos -64\nypos 362\n}\nset N7ed065a0 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle3\nautolabel ''\ntile_color 0xffffffff\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 291\nypos 416\n}\npush $Ncbc44560\nIDistort {\nuv forward\nuv_scale {{parent.displace/(1-parent.abberation/10)}}\nname IDistort1\nxpos -188\nypos 308\n}\nMultiply {\nvalue {1 0 0 1}\nname Multiply1\nlabel \"\\[value value]\"\nxpos -188\nypos 365\n}\nset N201e1910 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle4\nautolabel ''\ntile_color 0xffffffff\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 228\nypos 453\n}\nBlend {\ninputs 3+1\nweight0 0.2126\nweight1 0.7152\nweight2 0.0722\nname Blend1\nxpos 291\nypos 508\n}\nMultiply {\nvalue {0 0 0 1}\nname Multiply4\nlabel \"\\[value value]\"\nxpos 291\nypos 592\n}\npush $Nbc97d60\nMultiply {\nvalue {1 1 1 0}\nname Multiply7\nlabel \"\\[value value]\"\nxpos 65\nypos 448\n}\npush 0\npush $N201e1910\nMultiply {\nvalue {1 1 1 0}\nname Multiply5\nlabel \"\\[value value]\"\nxpos -188\nypos 445\n}\npush $N7ed065a0\nMultiply {\nvalue {1 1 1 0}\nname Multiply6\nlabel \"\\[value value]\"\nxpos -64\nypos 444\n}\nMerge2 {\ninputs 3+1\noperation plus\nalso_merge all\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos -64\nypos 554\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMerge2 {\ninputs 2\noperation plus\nalso_merge all\nname Merge3\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos -64\nypos 604\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nSwitch {\ninputs 2\nwhich {{parent.abberation==0}}\nname Switch1\nxpos -64\nypos 794\naddUserKnob {20 \"\" l Weta}\naddUserKnob {32 knob l \"update input order\" t \"changes the input order according to the input nodes' horizontal order (left most node becomes input 0)\" -STARTLINE T \" reconnectInputs\"}\n}\nCopy {\ninputs 2\nfrom0 -rgba.alpha\nto0 -rgba.alpha\nchannels depth\nname Copy5\nxpos -64\nypos 855\n}\npush $N122c5dd0\nDot {\nname Dot8\nnote_font_size 41\nxpos -255\nypos 963\n}\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos -64\nypos 959\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nOutput {\nname Output1\nxpos -64\nypos 1096\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Glow_Exponential.gizmo",
    "content": "Group {\n name Glow_Exponential\n inputs 2\n help \"Exponential Glow node, with options to recolor and adjust falloff.\"\n knobChanged \"\\nk = nuke.thisKnob()\\nif k.name()=='crop':\\n    if k.value():\\n        nuke.thisNode().knob('overscan').setEnabled(True)\\n    else:\\n        nuke.thisNode().knob('overscan').setEnabled(False)\\n\"\n tile_color 0xc97200ff\n addUserKnob {20 ge l Glow}\n addUserKnob {26 glow_ctrls l \"@b;Glow:\"}\n addUserKnob {7 size t \"Size of the glow\" R 0 100}\n size 10\n addUserKnob {7 intensity t \"Brightness of the Glow\" R 0 10}\n intensity 1\n addUserKnob {7 falloff t \"Adjust the light falloff of the glow. Higher values will have a longer falloff, resulting in visually bigger glows.\"}\n falloff 0.75\n addUserKnob {26 glow_highlights l \"@b;Highlights:\"}\n addUserKnob {41 range t \"Luma key to define which parts of the image will glow.\" T Keyer1.range}\n addUserKnob {26 glow_colors l \"@b;Glow Colors:\"}\n addUserKnob {7 saturation l \"color from img\" t \"By default the glow takes on the colors of the plate. By using this knob you can desaturate the color of the glow.\"}\n saturation 1\n addUserKnob {18 core_color l \"core re-color\" t \"Re-color the core of the glow. Use the core threshold to define which parts of the glow are core or falloff.\"}\n core_color {1 1 1}\n addUserKnob {6 core_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 falloff_color l \"falloff re-color\" t \"Re-color the falloff of the glow. Use the core threshold to define which parts of the glow are core or falloff.\"}\n falloff_color {1 1 1}\n addUserKnob {6 falloff_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 threshold l \"core threshold\" t \"Define which parts of the glow are core or falloff.\"}\n threshold 1\n addUserKnob {26 glow_options l \"@b;Options:\"}\n addUserKnob {14 aspect l \"aspect ratio\" t \"Set the aspect ratio for your glow. Streaky results can be obtained by changing the ratio here.\" R 0 100}\n aspect {1 1}\n addUserKnob {6 glow_only l \"Glow only\" t \"By default the glow is added onto the plate. Checking this box will output the glow only. \" +STARTLINE}\n addUserKnob {6 crop l \"Crop to Format\" t \"This glow can expand the bounding box to massive values, checking this box can prevent your bbox from getting unmanageable.\" +STARTLINE}\n crop true\n addUserKnob {7 overscan l \"overscan (%)\" t \"If you are cropping to format but originally had some values outside the format, you can add some overscan here to preserve these. The values are a percentage of the format size.\" R 0 100}\n overscan 10\n addUserKnob {7 mix t \"Mix back with the original plate (or black, if glow only is enabled)\"}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nGlow_Exponential\\nVersion 1.0\\n2017\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.0 - 2017 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Input {\n  inputs 0\n  name img\n  xpos 0\n  ypos -59\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 50\n }\nset N9308ac0 [stack 0]\n Dot {\n  name Dot24\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 1274\n }\nset N930d770 [stack 0]\n Input {\n  inputs 0\n  name mask\n  xpos 136\n  ypos 158\n  number 1\n }\npush $N9308ac0\n NoOp {\n  name CTRL\n  xpos 304\n  ypos 46\n  addUserKnob {20 User}\n  addUserKnob {7 falloff R 0 2}\n  falloff {{\"max(parent.falloff/2+0.5, 0.0001)\"}}\n  addUserKnob {7 falloff_intensity}\n  falloff_intensity {{falloff+pow(falloff,2)+pow(falloff,3)+pow(falloff,4)+pow(falloff,5)+pow(falloff,6)+pow(falloff,7)+pow(falloff,8)+pow(falloff,9)+pow(falloff,10)}}\n  addUserKnob {14 size R 0 100}\n  size {{parent.size/20*parent.aspect.w} {parent.size/20*parent.aspect.h}}\n  addUserKnob {7 intensity}\n  intensity {{parent.intensity/falloff_intensity}}\n  addUserKnob {7 core R 0 2}\n  core {{threshold}}\n  addUserKnob {7 core_length}\n  core_length {{sqrt(pow(core_color.r,2)+pow(core_color.g,2)+pow(core_color.b,2))/sqrt(3)}}\n  addUserKnob {7 falloff_length}\n  falloff_length {{sqrt(pow(falloff_color.r,2)+pow(falloff_color.g,2)+pow(falloff_color.b,2))/sqrt(3)}}\n }\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos 304\n  ypos 98\n }\n ChannelMerge {\n  inputs 2\n  operation in\n  name ChannelMerge1\n  xpos 304\n  ypos 146\n  disable {{\"!\\[exists parent.input1] \"}}\n }\n Premult {\n  name Premult1\n  xpos 304\n  ypos 202\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos 304\n  ypos 228\n }\n Multiply {\n  value {{parent.CTRL.intensity}}\n  name Multiplyer\n  xpos 304\n  ypos 263\n }\n Saturation {\n  saturation {{parent.saturation}}\n  name Saturation1\n  xpos 304\n  ypos 325\n }\n Dot {\n  name Dot3\n  tile_color 0x7aa9ff00\n  xpos 338\n  ypos 372\n }\nset N935d6a0 [stack 0]\n Dot {\n  name Dot2\n  tile_color 0x7aa9ff00\n  xpos 604\n  ypos 372\n }\nset N93621b0 [stack 0]\n Dot {\n  name Dot4\n  tile_color 0x7aa9ff00\n  xpos 870\n  ypos 372\n }\nset N9366c60 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0x7aa9ff00\n  xpos 1136\n  ypos 372\n }\nset N936b710 [stack 0]\n Dot {\n  name Dot6\n  tile_color 0x7aa9ff00\n  xpos 1402\n  ypos 372\n }\nset N93701c0 [stack 0]\n Dot {\n  name Dot7\n  tile_color 0x7aa9ff00\n  xpos 1668\n  ypos 372\n }\nset N9374c70 [stack 0]\n Dot {\n  name Dot8\n  tile_color 0x7aa9ff00\n  xpos 1934\n  ypos 372\n }\nset N93797d0 [stack 0]\n Dot {\n  name Dot9\n  tile_color 0x7aa9ff00\n  xpos 2200\n  ypos 372\n }\nset N937e250 [stack 0]\n Dot {\n  name Dot10\n  tile_color 0x7aa9ff00\n  xpos 2466\n  ypos 372\n }\nset N9382d00 [stack 0]\n Dot {\n  name Dot11\n  tile_color 0x7aa9ff00\n  xpos 2732\n  ypos 372\n }\n Blur {\n  size {{Blur9.size*2} {Blur9.size*2}}\n  crop false\n  name Blur10\n  xpos 2698\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,10)}}\n  name Multiply10\n  xpos 2698\n  ypos 543\n }\n Dot {\n  name Dot20\n  tile_color 0x7aa9ff00\n  xpos 2732\n  ypos 796\n }\npush $N9382d00\n Blur {\n  size {{Blur8.size*2} {Blur8.size*2}}\n  crop false\n  name Blur9\n  xpos 2432\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,9)}}\n  name Multiply9\n  xpos 2432\n  ypos 542\n }\n Dot {\n  name Dot19\n  tile_color 0x7aa9ff00\n  xpos 2466\n  ypos 770\n }\npush $N937e250\n Blur {\n  size {{Blur7.size*2} {Blur7.size*2}}\n  crop false\n  name Blur8\n  xpos 2166\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,8)}}\n  name Multiply8\n  xpos 2166\n  ypos 536\n }\n Dot {\n  name Dot18\n  tile_color 0x7aa9ff00\n  xpos 2200\n  ypos 744\n }\npush $N93797d0\n Blur {\n  size {{Blur6.size*2} {Blur6.size*2}}\n  crop false\n  name Blur7\n  xpos 1900\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,7)}}\n  name Multiply7\n  xpos 1900\n  ypos 528\n }\n Dot {\n  name Dot17\n  tile_color 0x7aa9ff00\n  xpos 1934\n  ypos 718\n }\npush $N9374c70\n Blur {\n  size {{Blur5.size*2} {Blur5.size*2}}\n  crop false\n  name Blur6\n  xpos 1634\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,6)}}\n  name Multiply6\n  xpos 1634\n  ypos 528\n }\n Dot {\n  name Dot16\n  tile_color 0x7aa9ff00\n  xpos 1668\n  ypos 692\n }\npush $N93701c0\n Blur {\n  size {{Blur4.size*2} {Blur4.size*2}}\n  crop false\n  name Blur5\n  xpos 1368\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,5)}}\n  name Multiply5\n  xpos 1368\n  ypos 524\n }\n Dot {\n  name Dot15\n  tile_color 0x7aa9ff00\n  xpos 1402\n  ypos 666\n }\npush $N936b710\n Blur {\n  size {{Blur3.size*2} {Blur3.size*2}}\n  crop false\n  name Blur4\n  xpos 1102\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,4)}}\n  name Multiply4\n  xpos 1102\n  ypos 518\n }\n Dot {\n  name Dot14\n  tile_color 0x7aa9ff00\n  xpos 1136\n  ypos 640\n }\npush $N9366c60\n Blur {\n  size {{Blur2.size*2} {Blur2.size*2}}\n  crop false\n  name Blur3\n  xpos 836\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,3)}}\n  name Multiply3\n  xpos 836\n  ypos 509\n }\n Dot {\n  name Dot13\n  tile_color 0x7aa9ff00\n  xpos 870\n  ypos 614\n }\npush $N93621b0\n Blur {\n  size {{Blur1.size*2} {Blur1.size*2}}\n  crop false\n  name Blur2\n  xpos 570\n  ypos 440\n }\n Multiply {\n  value {{pow(CTRL.falloff,2)}}\n  name Multiply2\n  xpos 570\n  ypos 508\n }\n Dot {\n  name Dot12\n  tile_color 0x7aa9ff00\n  xpos 604\n  ypos 588\n }\npush $N935d6a0\n Blur {\n  size {{CTRL.size*2} {CTRL.size*2}}\n  crop false\n  name Blur1\n  xpos 304\n  ypos 440\n }\n Multiply {\n  value {{CTRL.falloff}}\n  name Multiply1\n  xpos 304\n  ypos 512\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge1\n  xpos 304\n  ypos 584\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos 304\n  ypos 610\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge3\n  xpos 304\n  ypos 636\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge4\n  xpos 304\n  ypos 662\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge5\n  xpos 304\n  ypos 688\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge6\n  xpos 304\n  ypos 714\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge7\n  xpos 304\n  ypos 740\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge8\n  xpos 304\n  ypos 766\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge9\n  xpos 304\n  ypos 792\n }\n Dot {\n  name Dot21\n  tile_color 0x4b5ec600\n  xpos 338\n  ypos 928\n }\nset N8f62310 [stack 0]\n Dot {\n  name Dot22\n  tile_color 0x4b5ec600\n  xpos 498\n  ypos 928\n }\n Grade {\n  whitepoint {{CTRL.core}}\n  white_clamp true\n  name Grade2\n  xpos 464\n  ypos 977\n }\n Gamma {\n  channels rgb\n  value {{parent.falloff_color.r/CTRL.falloff_length} {parent.falloff_color.g/CTRL.falloff_length} {parent.falloff_color.b/CTRL.falloff_length} {curve}}\n  name Gamma1\n  xpos 464\n  ypos 1037\n }\n Grade {\n  whitepoint {{CTRL.core}}\n  reverse true\n  name Grade3\n  xpos 464\n  ypos 1082\n }\npush $N8f62310\n Clamp {\n  minimum {{CTRL.core}}\n  maximum_enable false\n  name Clamp1\n  xpos 304\n  ypos 972\n }\n Grade {\n  add {{1-CTRL.core}}\n  name Grade4\n  xpos 304\n  ypos 1020\n }\n Gamma {\n  channels rgb\n  value {{1+(1-parent.core_color.r)/CTRL.core_length} {1+(1-parent.core_color.g)/CTRL.core_length} {1+(1-parent.core_color.b)/CTRL.core_length} {curve}}\n  name Gamma2\n  xpos 304\n  ypos 1061\n }\n Add {\n  channels rgb\n  value -1\n  name Add1\n  xpos 304\n  ypos 1087\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge10\n  xpos 304\n  ypos 1157\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 304\n  ypos 1183\n }\n Multiply {\n  value {{parent.mix}}\n  name mix\n  xpos 304\n  ypos 1217\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge11\n  xpos 304\n  ypos 1270\n  disable {{parent.glow_only}}\n }\n Dot {\n  name Dot23\n  tile_color 0x4b5ec600\n  xpos 338\n  ypos 1436\n }\npush $N930d770\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.green\n  to1 rgba.green\n  from2 rgba.blue\n  to2 rgba.blue\n  name Copy1\n  xpos 0\n  ypos 1414\n }\n Crop {\n  box {{-width*(parent.overscan/100)/2} {-height*(parent.overscan/100)/2} {width+(width*(parent.overscan/100)/2)} {height+(height*(parent.overscan/100)/2)}}\n  crop false\n  name Crop2\n  xpos 0\n  ypos 1495\n  disable {{!parent.crop}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1543\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GlueP.gizmo",
    "content": "Group {\n name Ls_GlueP\n help \"GlueP - glues an image to a position pass, by projecting on it.\\n\\nInputs:\\n  Image to project\\n  P, the position pass\\n  N, an optional normals pass for front/back facing selection\\n  Projector, the Camera to project from\\n  CGCamera, optionally the original camera from the CG render\\n\\nThe second camera input can be used to convert P and N from camera space to world space - many renderers output camera space P and N by default, but we need world space to do this.  Even better is a \\\"world position at frame 1\\\" or \\\"P0\\\" or \\\"Rest position\\\" pass, which sticks properly to the surface of animated meshes.\\n\\nA good way to check that a position pass is suitable to project on is to plug it into a PositionToPoints node along with the beauty pass and check in the 3D view that the points lie within the camera frustrum and are laid out in space like the 3D scene was.  For gory details on how to make a good P pass, see the second half of this video about the Flame version: https://www.youtube.com/watch?v=YkgHAMwtmpw\\n\\nIt works best with 32-bit float P and N passes, rather than 16-bit half.\"\n selected true\n addUserKnob {20 Ls_GlueP}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" t \"There's not much point turning this on, it's just as fast on the CPU\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 gap l \"\" +STARTLINE}\n addUserKnob {3 freezeat l \"Freeze projector at frame\" t \"This takes the projector values from a particular frame, to avoid having to hit No Animation on the Camera node\"}\n freezeat 1\n addUserKnob {22 freezehere l Current -STARTLINE T \"nuke.thisNode().knob('freezeat').setValue(nuke.frame());\"}\n addUserKnob {26 gap3 l \"\" -STARTLINE T \"\\n\\n\"}\n addUserKnob {41 Ls_GlueP_ConvertPpassfromcameraspace l \"Convert P from camera space\" T BlinkScript1.Ls_GlueP_ConvertPpassfromcameraspace}\n addUserKnob {41 Ls_GlueP_ConvertNpassfromcameraspace l \"Convert N from camera space\" -STARTLINE T BlinkScript1.Ls_GlueP_ConvertNpassfromcameraspace}\n addUserKnob {4 outputselect l Output M {\"Glued projection\" \"Glued ST map\" \"NDC coords\" \"Clip space coords\" \"View space coords\" \"P converted from camera space\" \"N converted from camera space\" \"Facing ratio\" \"\"}}\n addUserKnob {26 gap2 l \"\" -STARTLINE T \"\\n\\n\"}\n addUserKnob {41 filter l Filter -STARTLINE T STMap1.filter}\n addUserKnob {41 Ls_GlueP_Projectonfrontfaces l \"Front faces\" t \"Project on faces which face the projector position.  This requires the N input connected.\" T BlinkScript1.Ls_GlueP_Projectonfrontfaces}\n addUserKnob {41 Ls_GlueP_Projectonbackfaces l \"Back faces\" t \"Project on faces which face away from the projector position.  This requires the N input connected.\" -STARTLINE T BlinkScript1.Ls_GlueP_Projectonbackfaces}\n addUserKnob {41 Ls_GlueP_Depthclip l \"Clip to projector's near/far\" t \"Adjust the near/far knobs on the Camera node attached to the Projector input to clip the result in depth\" T BlinkScript1.Ls_GlueP_Depthclip}\n addUserKnob {26 credit l \"\" +STARTLINE T \"\\n\\nlewis@lewissaunders.com\"}\n}\n Input {\n  inputs 0\n  name InputCgCamera\n  xpos 180\n  ypos 159\n  number 4\n }\n Input {\n  inputs 0\n  name InputProjector\n  xpos 70\n  ypos 159\n  number 3\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"this crop stops it crashing... idk\"\n  note_font \"Verdana Italic Italic Italic Italic Italic\"\n  xpos -52\n  ypos 332\n }\n Input {\n  inputs 0\n  name InputP\n  xpos -150\n  ypos 159\n  number 1\n }\nset Nee730100 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 8\n  ypos 386\n }\n Input {\n  inputs 0\n  name InputN\n  xpos -40\n  ypos 159\n  number 2\n }\n Crop {\n  box {{Crop1.box.x} {Crop1.box.y} {Crop1.box.r} {Crop1.box.t}}\n  name Crop2\n  xpos -40\n  ypos 221\n }\npush $Nee730100\n Input {\n  inputs 0\n  name InputImage\n  xpos -260\n  ypos 159\n }\nset Nee7eba90 [stack 0]\n BlinkScript {\n  inputs 3\n  kernelSourceFile /works/blinks/blinks/Ls_GlueP.blink\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Ls_GlueP\\\" iterate pixelWise 139beda4c8afdcbfbb8184dd1b6236759be6f3e522fd5ae922fb4788f211299a 4 \\\"src\\\" Read Random \\\"position\\\" Read Point \\\"normals\\\" Read Point \\\"dst\\\" Write Point 22 \\\"ConvertPpassfromcameraspace\\\" Bool 1 AA== \\\"ConvertNpassfromcameraspace\\\" Bool 1 AA== \\\"OutputconvertedP\\\" Bool 1 AA== \\\"OutputconvertedN\\\" Bool 1 AA== \\\"OriginalCGcameraposition\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"OriginalCGcamerarotation\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"Projectorposition\\\" Float 3 AAAAAAAAAAAAAMjCAAAAAA== \\\"Projectorrotation\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"Projectorfocallength\\\" Float 1 AABIQg== \\\"Projectorhorizontalaperture\\\" Float 1 exS+QQ== \\\"Projectonfrontfaces\\\" Bool 1 AQ== \\\"Projectonbackfaces\\\" Bool 1 AQ== \\\"Depthclip\\\" Bool 1 AA== \\\"Depthclipnear\\\" Float 1 AAAAAA== \\\"Depthclipfar\\\" Float 1 8CN0SQ== \\\"Outputviewspace\\\" Bool 1 AA== \\\"Outputclipspace\\\" Bool 1 AA== \\\"OutputNDCspace\\\" Bool 1 AA== \\\"OutputUVs\\\" Bool 1 AA== \\\"OutputFacingRatio\\\" Bool 1 AA== \\\"Srcwidth\\\" Int 1 gAcAAA== \\\"Srcheight\\\" Int 1 OAQAAA== 22 \\\"convertp\\\" 1 1 \\\"convertn\\\" 1 1 \\\"outputp\\\" 1 1 \\\"outputn\\\" 1 1 \\\"worldcam_position\\\" 3 1 \\\"worldcam_rotation\\\" 3 1 \\\"projector_position\\\" 3 1 \\\"projector_rotation\\\" 3 1 \\\"projector_focal\\\" 1 1 \\\"projector_haperture\\\" 1 1 \\\"frontface\\\" 1 1 \\\"backface\\\" 1 1 \\\"zclip\\\" 1 1 \\\"znear\\\" 1 1 \\\"zfar\\\" 1 1 \\\"outputviewspace\\\" 1 1 \\\"outputclipspace\\\" 1 1 \\\"outputndc\\\" 1 1 \\\"outputuv\\\" 1 1 \\\"outputfacingratio\\\" 1 1 \\\"srcwidth\\\" 1 1 \\\"srcheight\\\" 1 1 4 \\\"aspect\\\" Float 1 1 AAAAAA== \\\"vaperture\\\" Float 1 1 AAAAAA== \\\"fovy\\\" Float 1 1 AAAAAA== \\\"fovx\\\" Float 1 1 AAAAAA==\"\n  kernelSource \"// GlueP: project onto a position pass\\n// lewis@lewissaunders.com\\n// TODO:\\n//  o rearrange the output selection logic, translating\\n//    the return statements into setting a flag was stupid\\n//  o I wonder what happens when inputs are different sizes\\n\\nkernel Ls_GlueP : ImageComputationKernel<ePixelWise> \\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> position;\\n  Image<eRead, eAccessPoint, eEdgeClamped> normals;\\n  Image<eWrite> dst;\\n\\n  param:\\n    bool convertp, convertn, outputp, outputn;\\n    float3 worldcam_position, worldcam_rotation;\\n    float3 projector_position, projector_rotation;\\n    float projector_focal, projector_haperture;\\n    bool frontface, backface, zclip;\\n    float znear, zfar;\\n    bool outputviewspace, outputclipspace, outputndc, outputuv, outputfacingratio;\\n    int srcwidth, srcheight;\\n\\n  local:\\n    float aspect, vaperture, fovy, fovx;\\n\\n  void define() \\{\\n    defineParam(convertp, \\\"ConvertPpassfromcameraspace\\\", false);\\n    defineParam(convertn, \\\"ConvertNpassfromcameraspace\\\", false);\\n    defineParam(outputp, \\\"OutputconvertedP\\\", false);\\n    defineParam(outputn, \\\"OutputconvertedN\\\", false);\\n    defineParam(worldcam_position, \\\"OriginalCGcameraposition\\\", float3(0.0, 0.0, 0.0));\\n    defineParam(worldcam_rotation, \\\"OriginalCGcamerarotation\\\", float3(0.0, 0.0, 0.0));\\n    defineParam(projector_position, \\\"Projectorposition\\\", float3(0.0, 0.0, -100.0));\\n    defineParam(projector_rotation, \\\"Projectorrotation\\\", float3(0.0, 0.0, 0.0));\\n    defineParam(projector_focal, \\\"Projectorfocallength\\\", 50.0f);\\n    defineParam(projector_haperture, \\\"Projectorhorizontalaperture\\\", 23.76f);\\n    defineParam(zclip, \\\"Depthclip\\\", false);\\n    defineParam(frontface, \\\"Projectonfrontfaces\\\", true);\\n    defineParam(backface, \\\"Projectonbackfaces\\\", true);\\n    defineParam(znear, \\\"Depthclipnear\\\", 0.0f);\\n    defineParam(zfar, \\\"Depthclipfar\\\", 999999.0f);\\n    defineParam(outputviewspace, \\\"Outputviewspace\\\", false);\\n    defineParam(outputclipspace, \\\"Outputclipspace\\\", false);\\n    defineParam(outputndc, \\\"OutputNDCspace\\\", false);\\n    defineParam(outputuv, \\\"OutputUVs\\\", false);\\n    defineParam(outputfacingratio, \\\"OutputFacingRatio\\\", false);\\n    defineParam(srcwidth, \\\"Srcwidth\\\", 1920);\\n    defineParam(srcheight, \\\"Srcheight\\\", 1080);\\n  \\}\\n\\n  void init() \\{\\n    aspect = max(float(srcwidth), 1.0f) / max(float(srcheight), 1.0f);\\n    vaperture = projector_haperture / aspect;\\n    fovy = 2.0f * atan(vaperture / (2.0f * projector_focal));\\n    fovx = 2.0f * atan(projector_haperture / (2.0f * projector_focal));\\n  \\}\\n\\n  float deg2rad(float angle) \\{\\n    return(angle/(180.0f/PI));\\n  \\}\\n\\n  // Rotates about the origin in ZXY order\\n  float3 rotate(float3 p, float3 angles) \\{\\n    float x = deg2rad(angles.x);\\n    float y = deg2rad(angles.y);\\n    float z = deg2rad(angles.z);\\n\\n    float3x3 rx, ry, rz;\\n    float rxd\\[] = \\{1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)\\};\\n    float ryd\\[] = \\{cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)\\};\\n    float rzd\\[] = \\{cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0\\};\\n    rx.setArray(rxd);\\n    ry.setArray(ryd);\\n    rz.setArray(rzd);\\n\\n    float3x3 r = rz * rx * ry;\\n    return(r * p);\\n  \\}\\n\\n  // Un-rotates about the origin in ZXY order\\n  float3 unrotate(float3 p, float3 angles) \\{\\n    float x = deg2rad(angles.x);\\n    float y = deg2rad(angles.y);\\n    float z = deg2rad(angles.z);\\n\\n    float3x3 rx, ry, rz;\\n    float rxd\\[] = \\{1.0f, 0.0f, 0.0f, 0.0f, cos(x), sin(x), 0.0f, -sin(x), cos(x)\\};\\n    float ryd\\[] = \\{cos(y), 0.0f, -sin(y), 0.0f, 1.0f, 0.0f, sin(y), 0.0f, cos(y)\\};\\n    float rzd\\[] = \\{cos(z), sin(z), 0.0f, -sin(z), cos(z), 0.0f, 0.0f, 0.0f, 1.0f\\};\\n    rx.setArray(rxd);\\n    ry.setArray(ryd);\\n    rz.setArray(rzd);\\n\\n    float3x3 r = ry * rx * rz;\\n    return(r * p);\\n  \\}\\n\\n  void process(int2 pos) \\{\\n    SampleType(position) prgba = position();\\n    float3 p = float3(prgba.x, prgba.y, prgba.z);\\n\\n    SampleType(normals) nrgba = normals();\\n    float3 n = float3(nrgba.x, nrgba.y, nrgba.z);\\n\\n    bool outputready = false;\\n    float3 o;\\n\\n    // Optionally, convert P and N passes from camera space to world space\\n    if(convertp) \\{\\n      p.z *= -1.0f;\\n      p = unrotate(p, -worldcam_rotation);\\n      p += worldcam_position;\\n    \\}\\n    if(convertn) \\{\\n      n.z *= -1.0f;\\n      n = unrotate(n, -worldcam_rotation);\\n    \\}\\n    if(outputp && !outputready) \\{\\n      o = p;\\n      outputready = true;\\t\\t\\n    \\}\\n    if(outputn && !outputready) \\{\\n      o = n;\\n      outputready = true;\\t\\t\\n    \\}\\n\\n    // Keep world space p for later, we need it for facing calc\\n    float3 worldp = p;\\n\\n    // World space to view space\\n    p -= projector_position;\\n    p = rotate(p, -projector_rotation);\\n    if(outputviewspace && !outputready) \\{\\n       o = p;\\n       outputready = true;\\n    \\}\\n\\n    // Optional clipping\\n    if(zclip) \\{\\n      if(-p.z < znear || -p.z > zfar) \\{\\n        o = float3(0.0f);\\n        outputready = true;\\n      \\}\\n    \\}\\n\\n    // Clip behind projector\\n    if(p.z > 0.0f) \\{\\n        o = float3(0.0f);\\n        outputready = true;\\n    \\}\\n\\n    // Facing\\n    float3 v = normalize(projector_position - worldp);\\n    float facingratio = dot(n, v);\\n    if(outputfacingratio && !outputready) \\{\\n        o = float3(facingratio);\\n        outputready = true;\\n    \\}\\n    if((facingratio > 0.0f && !frontface) || (facingratio < 0.0f && !backface)) \\{\\n        o = float3(0.0f);\\n        outputready = true;\\n    \\}\\n\\n    // View space to clip space\\n    float4x4 projection_matrix;\\n    float pmd\\[] = \\{1.0f/tan(fovx/2.0f), 0.0f, 0.0f, 0.0f,\\n\\t\\t0.0f, 1.0f/tan(fovy/2.0f), 0.0f, 0.0f,\\n\\t\\t0.0f, 0.0f, 1.0f, 1.0f,\\n\\t\\t0.0f, 0.0f, 1.0f, 0.0f\\};\\n    projection_matrix.setArray(pmd);\\n    float4 p4 = float4(p.x, p.y, p.z, 0.0f);\\n    p4 = projection_matrix * p4;\\n    if(outputclipspace && !outputready) \\{\\n       o.x = p4.x;\\n       o.y = p4.y;\\n       o.z = p4.z;\\n       outputready = true;\\n    \\}\\n\\n    // Clip space to NDC\\n    p4 /= p4.w;\\n    if(outputndc && !outputready) \\{\\n       o.x = p4.x;\\n       o.y = p4.y;\\n       o.z = p4.z;\\n       outputready = true;\\n    \\}\\n\\n    // NDC to window\\n    p4 /= -2.0f;\\n    p4 += 0.5f;\\n    if(outputuv && !outputready) \\{\\n       o.x = p4.x;\\n       o.y = p4.y;\\n       o.z = 0.0f;\\n       outputready = true;\\n    \\}\\n\\n    // Sample\\n    if(!outputready) \\{\\n      SampleType(src) s = bilinear(src, p4.x*srcwidth, p4.y*srcheight);\\n      o.x = s.x;\\n      o.y = s.y;\\n      o.z = s.z;\\n    \\}\\n\\n    // Output\\n    SampleType(dst) d;\\n    d.x = o.x;\\n    d.y = o.y;\\n    d.z = o.z;\\n    dst() = d;\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  Ls_GlueP_OutputconvertedP {{\"parent.outputselect == 5\"}}\n  Ls_GlueP_OutputconvertedN {{\"parent.outputselect == 6\"}}\n  Ls_GlueP_OriginalCGcameraposition {{\"\\[exists parent.input4] ? parent.input4.translate.x : 0.0\"} {\"\\[exists parent.input4] ? parent.input4.translate.y : 0.0\"} {\"\\[exists parent.input4] ? parent.input4.translate.z : 0.0\"}}\n  Ls_GlueP_OriginalCGcamerarotation {{\"\\[exists parent.input4] ? parent.input4.rotate.x : 0.0\"} {\"\\[exists parent.input4] ? parent.input4.rotate.y : 0.0\"} {\"\\[exists parent.input4] ? parent.input4.rotate.z : 0.0\"}}\n  Ls_GlueP_Projectorposition {{parent.input3.translate.x(parent.freezeat)} {parent.input3.translate.y(parent.freezeat)} {parent.input3.translate.z(parent.freezeat)}}\n  Ls_GlueP_Projectorrotation {{parent.input3.rotate.x(parent.freezeat)} {parent.input3.rotate.y(parent.freezeat)} {parent.input3.rotate.z(parent.freezeat)}}\n  Ls_GlueP_Projectorfocallength {{parent.input3.focal(parent.freezeat)}}\n  Ls_GlueP_Projectorhorizontalaperture {{parent.input3.haperture(parent.freezeat)}}\n  Ls_GlueP_Depthclipnear {{parent.input3.near(parent.freezeat)}}\n  Ls_GlueP_Depthclipfar {{parent.input3.far(parent.freezeat)}}\n  Ls_GlueP_Outputviewspace {{\"parent.outputselect == 4\"}}\n  Ls_GlueP_Outputclipspace {{\"parent.outputselect == 3\"}}\n  Ls_GlueP_OutputNDCspace {{\"parent.outputselect == 2\"}}\n  Ls_GlueP_OutputUVs {{\"parent.outputselect == 0 | parent.outputselect == 1\"}}\n  Ls_GlueP_OutputFacingRatio {{\"parent.outputselect == 7\"}}\n  Ls_GlueP_Srcwidth {{width}}\n  Ls_GlueP_Srcheight {{height}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos -150\n  ypos 278\n }\n Crop {\n  box {0 0 {width} {height}}\n  crop false\n  name Crop1\n  xpos -150\n  ypos 334\n }\n Transform {\n  translate {-0.5 -0.5}\n  center {1024 778}\n  name Transform1\n  xpos -150\n  ypos 358\n }\nset N14f97310 [stack 0]\npush $Nee7eba90\n STMap {\n  inputs 2\n  uv rgb\n  name STMap1\n  xpos -260\n  ypos 396\n }\npush $N14f97310\n Switch {\n  inputs 2\n  which {{\"parent.outputselect == 0 ? 1 : 0\"}}\n  name Switch1\n  xpos -150\n  ypos 460\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -150\n  ypos 510\n }\n Output {\n  name Output1\n  xpos -150\n  ypos 570\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GodRaysProjector.gizmo",
    "content": "Group {\n name GodRaysProjector\n tile_color 0xcc804eff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 \"Local GPU: \" T \"GetGPUName.Local GPU: \"}\n addUserKnob {41 useGPUIfAvailable l \"GPU Preview\" -STARTLINE T BlinkScript1.useGPUIfAvailable}\n addUserKnob {41 vectorize l \"Vectorize on CPU\" -STARTLINE T BlinkScript1.vectorize}\n addUserKnob {26 \"\"}\n addUserKnob {4 outputMode l \"output mode\" t \"2D: just the RGBA projection\\nDeep: RGBA projection, with deep data, output as a deep stream\\nShadow: just the shadow mask\" M {2D Deep Shadow \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {20 _3 l Projection n 1}\n _3 0\n addUserKnob {41 scale l \"input resolution scale\" t \"pre-scales the input image(s) and then performs an inverse scale to return the same format.\\n\\nthis will either speed up performance, or decrease the powderiness depending on increased or decreased resolution.\" T Reformat1.scale}\n addUserKnob {41 GodRaysProjectorVolumeKernel_iterations l steps t \"the number of projected planes used to create the volume\" T BlinkScript1.GodRaysProjectorVolumeKernel_iterations}\n addUserKnob {41 GodRaysProjectorVolumeKernel_depthMin l \"project near\" t \"the closest plane used to create the volume\" T BlinkScript1.GodRaysProjectorVolumeKernel_depthMin}\n addUserKnob {41 GodRaysProjectorVolumeKernel_depthMax l \"project far\" t \"the farthest plane used to create the volume\" T BlinkScript1.GodRaysProjectorVolumeKernel_depthMax}\n addUserKnob {41 GodRaysProjectorVolumeKernel_projDistSkew l \"near/far weight\" t \"this skews the projection plane placement nearer or further from the first and last planes\" T BlinkScript1.GodRaysProjectorVolumeKernel_projDistSkew}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 projectionNoise l \"3D Noise\" n 1}\n projectionNoise 0\n addUserKnob {41 GodRaysProjectorVolumeKernel_EnableNoise l \"enable noise\" T BlinkScript1.GodRaysProjectorVolumeKernel_EnableNoise}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoiseOctaves l octaves t \"the complexity of the 4D noise\" T BlinkScript1.GodRaysProjectorVolumeKernel_NoiseOctaves}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoisePersistence l persistence t \"how much each level of complexity contributes to the final noise\" T BlinkScript1.GodRaysProjectorVolumeKernel_NoisePersistence}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoiseScale l scale t \"scaling the noise at generation level\" T BlinkScript1.GodRaysProjectorVolumeKernel_NoiseScale}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoiseSeed l seed t \"this is the 4th dimention of the 4D noise, this is relative to the scale of the postion data\" T BlinkScript1.GodRaysProjectorVolumeKernel_NoiseSeed}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoiseGamma l gamma T BlinkScript1.GodRaysProjectorVolumeKernel_NoiseGamma}\n addUserKnob {41 GodRaysProjectorVolumeKernel_NoiseMix l mix T BlinkScript1.GodRaysProjectorVolumeKernel_NoiseMix}\n addUserKnob {26 \"\"}\n addUserKnob {41 xform_order l \"transform order\" T Axis1.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T Axis1.rot_order}\n addUserKnob {41 translate T Axis1.translate}\n addUserKnob {41 rotate T Axis1.rotate}\n addUserKnob {41 scaling l scale T Axis1.scaling}\n addUserKnob {41 uniform_scale l \"shadow length scale\" T Axis1.uniform_scale}\n addUserKnob {41 skew T Axis1.skew}\n addUserKnob {41 pivot T Axis1.pivot}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 colourTweaks l Image n 1}\n colourTweaks 0\n addUserKnob {41 GodRaysProjectorVolumeKernel_EnableSourceDarken l \"darken at source\" t \"this exponentially darkens the planes at the source, this is useful for when bunched up planes/pixels cause very bright values\\n\" T BlinkScript1.GodRaysProjectorVolumeKernel_EnableSourceDarken}\n addUserKnob {41 clampAlpha l \"clamp alpha\" -STARTLINE T Clamp1.clampAlpha}\n addUserKnob {41 GodRaysProjectorVolumeKernel_fromColour l \"from colour\" T BlinkScript1.GodRaysProjectorVolumeKernel_fromColour}\n addUserKnob {41 GodRaysProjectorVolumeKernel_toColour l \"to colour\" T BlinkScript1.GodRaysProjectorVolumeKernel_toColour}\n addUserKnob {41 GodRaysProjectorVolumeKernel_toFromGamma l gamma T BlinkScript1.GodRaysProjectorVolumeKernel_toFromGamma}\n addUserKnob {26 \"\"}\n addUserKnob {41 size l \"gaussian blur size\" T Blur1.size}\n addUserKnob {41 blurShadow l \"blur shadow\" -STARTLINE T Blur1.blurShadow}\n addUserKnob {41 parallelScaleBlur l \"parallel scale blur\" T GodRays1.parallelScaleBlur}\n addUserKnob {41 bidirectional -STARTLINE T GodRays1.bidirectional}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 shadowSettings l Shadow n 1}\n shadowSettings 0\n addUserKnob {41 in l \"position data\" T Shuffle1.in}\n addUserKnob {41 in_1 l \"normals data\" T Shuffle2.in}\n addUserKnob {41 enableShadow l \"enable shadow\" T Merge1.enableShadow}\n addUserKnob {41 useCustomShadowMask l \"use custom shadow mask\" t \"this bypasses the position and normals processing and intead uses the alpha channel straight from the shadow input\" -STARTLINE T Switch3.useCustomShadowMask}\n addUserKnob {41 mix l \"stencil amount\" T Merge1.mix}\n addUserKnob {41 scale_1 l scale T GodRays5.scale}\n addUserKnob {41 from_color l \"from color\" T GodRays5.from_color}\n addUserKnob {41 to_color l \"to color\" T GodRays5.to_color}\n addUserKnob {41 gamma T GodRays5.gamma}\n addUserKnob {41 steps T GodRays5.steps}\n addUserKnob {41 max -STARTLINE T GodRays5.max}\n addUserKnob {41 size_1 l \"shadow blur size\" T Blur4.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 blackpoint l \"facing mask blackpoint\" t \"this controls the falloff of the mask created using the facing angle of an object to the camera\" T Grade2.blackpoint}\n addUserKnob {41 whitepoint l \"facing mask whitepoint\" t \"this controls the falloff of the mask created using the facing angle of an object to the camera\" T Grade2.whitepoint}\n addUserKnob {26 \"\"}\n addUserKnob {41 useVolumeDepth l \"depth region override\" t \"this overrides the near/far values of the projection when selecting the region of the position data used to generate a shadow\" T BlinkScript2.useVolumeDepth}\n addUserKnob {41 nearDepth l \"near depth\" T BlinkScript2.nearDepth}\n addUserKnob {41 farDepth l \"far depth\" T BlinkScript2.farDepth}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 _1 l \"\" +STARTLINE}\n addUserKnob {26 credit l \"\" +STARTLINE T \"Chris Fryer | 2021\"}\n addUserKnob {20 About}\n addUserKnob {26 info l \"\" +STARTLINE T \"v1.1 - 03.03.21\\n\\n- complete rebuild\\n- 4 point approximation no longer available\\n- input scale option for speed/quality control\\n- card placement math no longer breaks under certain angles or behind camera\\n- shadow functionality added\\n- camera input now uses DummyCam, this allows for non-topnode compliant methods (Axis inputs etc..)\\n- 3D noise transform, no longer inverted\\n- labels on most knobs\\n- code now commented for those learning Blinkscript\\n- to/from now functions for RGBA\\n- added weight option to skew virtual card placement\\n- far card now matches far distance exactly\\n- edge pixels no longer wrong\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x191b8eff\n  label DEEP\n  note_font \"Verdana Bold\"\n  note_font_size 60\n  xpos -592\n  ypos 75\n  bdwidth 357\n  bdheight 812\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xc69548ff\n  label \"VOLUME PROJECTION\"\n  note_font \"Verdana Bold\"\n  note_font_size 60\n  xpos 188\n  ypos -80\n  bdwidth 208\n  bdheight 621\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x3f3f3fff\n  label SHADOW\n  note_font \"Verdana Bold\"\n  note_font_size 60\n  xpos 938\n  ypos -66\n  bdwidth 324\n  bdheight 717\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0xaa1d1dff\n  label \"CAMERA INPUTS\"\n  note_font \"Verdana Bold\"\n  note_font_size 42\n  xpos -43\n  ypos -121\n  bdwidth 196\n  bdheight 195\n }\n Input {\n  inputs 0\n  name img\n  xpos 254\n  ypos 28\n }\n Reformat {\n  type scale\n  pbb true\n  name Reformat1\n  label \"image scaling\"\n  selected true\n  xpos 254\n  ypos 92\n  disable {{\"scale == 1\"}}\n }\nset N32615c00 [stack 0]\n Input {\n  inputs 0\n  name shadow\n  xpos 1039\n  ypos 21\n  number 3\n }\n Reformat {\n  type scale\n  box_width {{Reformat1.input0.width}}\n  box_height {{Reformat1.input0.height}}\n  scale {{parent.Reformat1.scale} {parent.Reformat1.scale}}\n  filter notch\n  name Reformat3\n  xpos 1039\n  ypos 58\n  disable {{parent.Reformat1.disable}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 1039\n  ypos 98\n }\n Dot {\n  name Dot10\n  xpos 1073\n  ypos 155\n }\nset N32614400 [stack 0]\n Dot {\n  name Dot14\n  xpos 996\n  ypos 155\n }\nset N64bb3c00 [stack 0]\n Dot {\n  name Dot18\n  xpos 951\n  ypos 155\n }\n GodRays {\n  channels alpha\n  scale 2\n  center {{parent.GodRays1.center} {parent.GodRays1.center}}\n  to_color 0\n  steps 10\n  max true\n  name GodRays6\n  xpos 917\n  ypos 462\n  disable {{scale==1}}\n }\n Dot {\n  name Dot17\n  xpos 951\n  ypos 568\n }\npush $N32614400\n Shuffle {\n  in none\n  name Shuffle1\n  label \"Position Data\"\n  xpos 1039\n  ypos 184\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 1039\n  ypos 222\n }\n BlinkScript {\n  recompileCount 134\n  ProgramGroup 1\n  KernelDescription \"2 \\\"PositionInFrustrumKernel\\\" iterate pixelWise 62c3f92d35daef6caeb6bf3bb07a8403333e7c6da2c2f19b3e5542cb00358efa 2 \\\"src\\\" Read Point \\\"dst\\\" Write Random 6 \\\"projCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"projCamFocal\\\" Float 1 AAAAAA== \\\"projCamHaperture\\\" Float 1 AAAAAA== \\\"projCamVaperture\\\" Float 1 AAAAAA== \\\"depthMin\\\" Float 1 AAAAAA== \\\"depthMax\\\" Float 1 AAAAAA== 6 \\\"projCamMatrix\\\" 16 1 \\\"projCamFocal\\\" 1 1 \\\"projCamHaperture\\\" 1 1 \\\"projCamVaperture\\\" 1 1 \\\"depthMin\\\" 1 1 \\\"depthMax\\\" 1 1 2 \\\"resolution\\\" Float 2 1 AAAAAAAAAAA= \\\"posData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"inline float4 matrixTransform(float4 image, float4x4 matrix)\\{\\n\\n    float4 matrixTransformsOutput;\\n\\n    matrixTransformsOutput.x = image.x * matrix\\[0]\\[0] + image.y * matrix\\[0]\\[1] + image.z * matrix\\[0]\\[2] + matrix\\[0]\\[3];\\n    matrixTransformsOutput.y = image.x * matrix\\[1]\\[0] + image.y * matrix\\[1]\\[1] + image.z * matrix\\[1]\\[2] + matrix\\[1]\\[3];\\n    matrixTransformsOutput.z = image.x * matrix\\[2]\\[0] + image.y * matrix\\[2]\\[1] + image.z * matrix\\[2]\\[2] + matrix\\[2]\\[3];\\n    matrixTransformsOutput.w = image.x * matrix\\[3]\\[0] + image.y * matrix\\[3]\\[1] + image.z * matrix\\[3]\\[2] + matrix\\[3]\\[3];\\n\\n\\n    return matrixTransformsOutput;\\n\\n\\}\\n\\ninline float4 matrixToScreenspace(float4 image, float focal, float haperture, float vaperture, int2 resolution)\\{\\n\\n    image.x = 0.5f - ((image.x) * (focal/haperture))/image.z;\\n    image.y = 0.5f - ((image.y) * (focal/vaperture))/image.z;\\n    image.z = -image.z;\\n\\n    image.x = image.x*(resolution.x)-1.0f;\\n    image.y = image.y*(resolution.y)-1.0f;\\n\\n\\n    return image;\\n\\n\\}\\n\\n\\n\\nkernel PositionInFrustrumKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeNone> src; // the input image\\n  Image<eWrite, eAccessRandom> dst; // the output image\\n\\n  param:\\n\\n    //projection cam world matrix\\n    float4x4 projCamMatrix;\\n\\n    //projection cam settings\\n    float projCamFocal;\\n    float projCamHaperture;\\n    float projCamVaperture;\\n\\n    //distance of card from camera\\n    float depthMin;\\n    float depthMax;\\n\\n  local:\\n\\n    float2 resolution;\\n    float4 posData;    \\n\\n  void define() \\{\\n    \\n  \\}\\n\\n  void init() \\{\\n\\n    //defining resolution\\n    resolution.x = src.bounds.width();\\n    resolution.y = src.bounds.height();    \\n    \\n  \\}\\n\\n  void process(int2 pos) \\{ \\n        \\n\\n    posData = src();\\n\\n    //transforming card using projection cam\\n    posData = matrixTransform(posData, projCamMatrix.invert());\\n    \\n    //creating screenspace UV coordinates using projection cam data\\n    posData = matrixToScreenspace(posData, projCamFocal, projCamHaperture, projCamVaperture, resolution);\\n\\n    posData.x = posData.x >= 0.0f     && posData.x <= resolution.x-1 ? 1 : 0;\\n    posData.y = posData.y >= 0.0f     && posData.y <= resolution.y-1 ? 1 : 0;\\n    posData.z = posData.z >= depthMin && posData.z <= depthMax       ? 1 : 0;\\n\\n    posData.w = posData.x * posData.y * posData.z;\\n    \\n    \\n\\n    dst(pos.x, pos.y) = posData;       \\n\\n\\n    \\n\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  vectorize {{parent.BlinkScript1.vectorize}}\n  rebuild \"\"\n  PositionInFrustrumKernel_projCamMatrix {\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix}}\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix}}\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix}}\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix}}\n    }\n  PositionInFrustrumKernel_projCamFocal {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamFocal}}\n  PositionInFrustrumKernel_projCamHaperture {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamHaperture}}\n  PositionInFrustrumKernel_projCamVaperture {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamVaperture}}\n  PositionInFrustrumKernel_depthMin {{\"useVolumeDepth ? nearDepth : parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMin \"}}\n  PositionInFrustrumKernel_depthMax {{\"useVolumeDepth ? farDepth : parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMax\"}}\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos 1039\n  ypos 286\n  addUserKnob {20 User}\n  addUserKnob {7 nearDepth l \"shadow region near\" R 0 100}\n  nearDepth 1\n  addUserKnob {7 farDepth l \"shadow region far\" R 0 100}\n  farDepth 10\n  addUserKnob {6 useVolumeDepth l \"shadow depth override\" +STARTLINE}\n }\n Dot {\n  name Dot19\n  xpos 1073\n  ypos 342\n }\nset N64bb2000 [stack 0]\n Dot {\n  name Dot21\n  xpos 1158\n  ypos 342\n }\n Dot {\n  name Dot20\n  xpos 1158\n  ypos 482\n }\npush $N32614400\n Dot {\n  name Dot11\n  xpos 1202\n  ypos 155\n }\n Shuffle {\n  in none\n  name Shuffle2\n  label \"Normals Data\"\n  xpos 1168\n  ypos 185\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos 1168\n  ypos 223\n }\n ColorMatrix {\n  matrix {\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.0} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.1} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.2}}\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.4} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.5} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.6}}\n      {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.8} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.9} {parent.BlinkScript1.GodRaysProjectorVolumeKernel_projCamMatrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos 1168\n  ypos 262\n }\n Grade {\n  white_clamp true\n  name Grade2\n  xpos 1168\n  ypos 288\n }\n Dot {\n  name Dot12\n  xpos 1202\n  ypos 517\n }\npush $N64bb3c00\n Dot {\n  name Dot13\n  xpos 996\n  ypos 411\n }\npush $N64bb2000\n ChannelMerge {\n  inputs 2\n  operation multiply\n  name ChannelMerge2\n  xpos 1039\n  ypos 394\n }\n GodRays {\n  channels alpha\n  scale 2\n  center {{parent.GodRays1.center} {parent.GodRays1.center}}\n  to_color 0\n  steps 10\n  max true\n  name GodRays5\n  xpos 1039\n  ypos 462\n  disable {{scale==1}}\n }\n ChannelMerge {\n  inputs 2+1\n  A rgba.blue\n  operation stencil\n  bbox A\n  name ChannelMerge1\n  xpos 1039\n  ypos 500\n }\n Switch {\n  inputs 2\n  which {{useCustomShadowMask}}\n  name Switch3\n  xpos 1039\n  ypos 564\n  addUserKnob {20 User}\n  addUserKnob {6 useCustomShadowMask l \"use custom shadow mask\" +STARTLINE}\n }\n Blur {\n  channels rgba\n  name Blur4\n  xpos 1039\n  ypos 590\n  disable {{\"size == 0\"}}\n }\n Blur {\n  channels rgba\n  size {{parent.Blur1.size}}\n  name Blur2\n  xpos 1039\n  ypos 616\n  disable {{\"max(1-parent.Blur1.blurShadow, Blur1.disable )\"}}\n  addUserKnob {20 User}\n  addUserKnob {6 blurShadow l \"blur shadow\" +STARTLINE}\n }\n Dot {\n  name Dot15\n  xpos 1073\n  ypos 660\n }\nset N62546000 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle3\n  tile_color 0xffffff00\n  xpos 1039\n  ypos 745\n }\n Reformat {\n  type \"to box\"\n  box_width {{Reformat1.input0.width}}\n  box_height {{Reformat1.input0.height}}\n  box_fixed true\n  scale {{1/parent.Reformat1.scale} {1/parent.Reformat1.scale}}\n  filter notch\n  name Reformat4\n  xpos 1039\n  ypos 822\n  disable {{parent.Reformat1.disable}}\n }\n Dot {\n  name Dot16\n  xpos 1073\n  ypos 965\n }\npush $N62546000\npush $N32615c00\n Dot {\n  name Dot4\n  xpos 288\n  ypos 155\n }\nset N62544c00 [stack 0]\n BlinkScript {\n  recompileCount 199\n  ProgramGroup 1\n  KernelDescription \"2 \\\"GodRaysProjectorVolumeKernel\\\" iterate pixelWise c90547bcdf11f7b781348ba43735748059cb3e7f197f04c35f90a8e587e83036 2 \\\"src\\\" Read Point \\\"dst\\\" Write Random 24 \\\"renderCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"renderCamFocal\\\" Float 1 AAAAAA== \\\"renderCamHaperture\\\" Float 1 AAAAAA== \\\"renderCamVaperture\\\" Float 1 AAAAAA== \\\"projCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"projCamFocal\\\" Float 1 AAAAAA== \\\"projCamHaperture\\\" Float 1 AAAAAA== \\\"projCamVaperture\\\" Float 1 AAAAAA== \\\"depthMin\\\" Float 1 AAAAAA== \\\"depthMax\\\" Float 1 AAAAAA== \\\"iterations\\\" Int 1 AAAAAA== \\\"projDistSkew\\\" Float 1 AAAAAA== \\\"EnableSourceDarken\\\" Bool 1 AA== \\\"NoiseOctaves\\\" Float 1 AAAAAA== \\\"NoisePersistence\\\" Float 1 AAAAAA== \\\"NoiseScale\\\" Float 1 AAAAAA== \\\"NoiseSeed\\\" Float 1 AAAAAA== \\\"NoiseGamma\\\" Float 1 AAAAAA== \\\"axisMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"EnableNoise\\\" Bool 1 AA== \\\"NoiseMix\\\" Float 1 AAAAAA== \\\"toColour\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"fromColour\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"toFromGamma\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== 24 \\\"renderCamMatrix\\\" 16 1 \\\"renderCamFocal\\\" 1 1 \\\"renderCamHaperture\\\" 1 1 \\\"renderCamVaperture\\\" 1 1 \\\"projCamMatrix\\\" 16 1 \\\"projCamFocal\\\" 1 1 \\\"projCamHaperture\\\" 1 1 \\\"projCamVaperture\\\" 1 1 \\\"depthMin\\\" 1 1 \\\"depthMax\\\" 1 1 \\\"iterations\\\" 1 1 \\\"projDistSkew\\\" 1 1 \\\"EnableSourceDarken\\\" 1 1 \\\"NoiseOctaves\\\" 1 1 \\\"NoisePersistence\\\" 1 1 \\\"NoiseScale\\\" 1 1 \\\"NoiseSeed\\\" 1 1 \\\"NoiseGamma\\\" 1 1 \\\"axisMatrix\\\" 16 1 \\\"EnableNoise\\\" 1 1 \\\"NoiseMix\\\" 1 1 \\\"toColour\\\" 4 1 \\\"fromColour\\\" 4 1 \\\"toFromGamma\\\" 4 1 7 \\\"resolution\\\" Float 2 1 AAAAAAAAAAA= \\\"nearPosData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"farPosData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"posData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"imageMult\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"NoisePosData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"cardInfo\\\" Float 2 1 AAAAAAAAAAA=\"\n  kernelSource \"inline float4 matrixTransform(float4 image, float4x4 matrix)\\{\\n\\n    float4 matrixTransformsOutput;\\n\\n    matrixTransformsOutput.x = image.x * matrix\\[0]\\[0] + image.y * matrix\\[0]\\[1] + image.z * matrix\\[0]\\[2] + matrix\\[0]\\[3];\\n    matrixTransformsOutput.y = image.x * matrix\\[1]\\[0] + image.y * matrix\\[1]\\[1] + image.z * matrix\\[1]\\[2] + matrix\\[1]\\[3];\\n    matrixTransformsOutput.z = image.x * matrix\\[2]\\[0] + image.y * matrix\\[2]\\[1] + image.z * matrix\\[2]\\[2] + matrix\\[2]\\[3];\\n    matrixTransformsOutput.w = image.x * matrix\\[3]\\[0] + image.y * matrix\\[3]\\[1] + image.z * matrix\\[3]\\[2] + matrix\\[3]\\[3];\\n\\n\\n    return matrixTransformsOutput;\\n\\n\\}\\n\\ninline float4 matrixToScreenspace(float4 image, float focal, float haperture, float vaperture, int2 resolution)\\{\\n\\n    image.x = 0.5f - ((image.x) * (focal/haperture))/image.z;\\n    image.y = 0.5f - ((image.y) * (focal/vaperture))/image.z;\\n    image.z = -image.z;\\n\\n    image.x = image.x * (resolution.x) - 1.0f;\\n    image.y = image.y * (resolution.y) - 1.0f;\\n\\n    return image;\\n\\n\\}\\n\\n//Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n//Ported by Mads Hagbarth Lund 2014\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\ninline float raw_noise_4d( const float x, const float y, const float z, const float w ) \\n\\{\\nint simplex\\[64]\\[4] = \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n\\};\\n    int perm\\[512] = \\{\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n    \\};\\n   int grad4\\[32]\\[4]= \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n   \\};\\n    float F4 = (sqrt(5.0f)-1.0)/4.0;\\n    float G4 = (5.0-sqrt(5.0f))/20.0;\\n    float n0, n1, n2, n3, n4;\\n    float s = (x + y + z + w) * F4;\\n    int i = fastfloor(x + s);\\n    int j = fastfloor(y + s);\\n    int k = fastfloor(z + s);\\n    int l = fastfloor(w + s);\\n    float t = (i + j + k + l) * G4;\\n    float X0 = i - t;\\n    float Y0 = j - t;\\n    float Z0 = k - t;\\n    float W0 = l - t;\\n\\n    float x0 = x - X0;\\n    float y0 = y - Y0;\\n    float z0 = z - Z0;\\n    float w0 = w - W0;\\n    int c1 = (x0 > y0) ? 32 : 0;\\n    int c2 = (x0 > z0) ? 16 : 0;\\n    int c3 = (y0 > z0) ? 8 : 0;\\n    int c4 = (x0 > w0) ? 4 : 0;\\n    int c5 = (y0 > w0) ? 2 : 0;\\n    int c6 = (z0 > w0) ? 1 : 0;\\n    int c = c1 + c2 + c3 + c4 + c5 + c6;\\n\\n    int i1, j1, k1, l1;\\n    int i2, j2, k2, l2;\\n    int i3, j3, k3, l3;\\n    i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n    j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n    k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n    l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n    i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n    j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n    k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n    l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n    i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n    j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n    k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n    l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n    float x1 = x0 - i1 + G4;\\n    float y1 = y0 - j1 + G4;\\n    float z1 = z0 - k1 + G4;\\n    float w1 = w0 - l1 + G4;\\n    float x2 = x0 - i2 + 2.0*G4;\\n    float y2 = y0 - j2 + 2.0*G4;\\n    float z2 = z0 - k2 + 2.0*G4;\\n    float w2 = w0 - l2 + 2.0*G4;\\n    float x3 = x0 - i3 + 3.0*G4;\\n    float y3 = y0 - j3 + 3.0*G4;\\n    float z3 = z0 - k3 + 3.0*G4;\\n    float w3 = w0 - l3 + 3.0*G4;\\n    float x4 = x0 - 1.0 + 4.0*G4;\\n    float y4 = y0 - 1.0 + 4.0*G4;\\n    float z4 = z0 - 1.0 + 4.0*G4;\\n    float w4 = w0 - 1.0 + 4.0*G4;\\n    int ii = i & 255;\\n    int jj = j & 255;\\n    int kk = k & 255;\\n    int ll = l & 255;\\n    int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n    int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n    int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n    int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n    int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n    float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n    if(t0<0) n0 = 0.0;\\n    else \\{\\n        t0 *= t0;\\n        n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n    \\}\\n    float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n    if(t1<0) n1 = 0.0;\\n    else \\{\\n        t1 *= t1;\\n        n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n    \\}\\n    float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n    if(t2<0) n2 = 0.0;\\n    else \\{\\n        t2 *= t2;\\n        n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n    \\}\\n    float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n    if(t3<0) n3 = 0.0;\\n    else \\{\\n        t3 *= t3;\\n        n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n    \\}\\n    float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n    if(t4<0) n4 = 0.0;\\n    else \\{\\n        t4 *= t4;\\n        n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n    \\}\\n    return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\n\\ninline float octave_noise_4d( const float octaves, const float persistence, const float scale, const float x, const float y, const float z, const float w ) \\n\\{\\n    float total = 0;\\n    float frequency = scale;\\n    float amplitude = 1;\\n    float maxAmplitude = 0;\\n    for( int i=0; i < octaves; i++ ) \\{\\n        total += (float)raw_noise_4d( x * frequency, y * frequency, z * frequency, w * frequency ) * amplitude;\\n\\n        frequency *= 2;\\n        maxAmplitude += amplitude;\\n        amplitude *= persistence;\\n    \\}\\n    return float(total / maxAmplitude);\\n\\}\\n\\nkernel GodRaysProjectorVolumeKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeNone> src; // the input image\\n  Image<eWrite, eAccessRandom, eEdgeNone> dst; // the output image\\n\\n  param:\\n\\n    //projection cam world matrix\\n    float4x4 renderCamMatrix;\\n\\n    //projection cam settings\\n    float renderCamFocal;\\n    float renderCamHaperture;\\n    float renderCamVaperture;\\n\\n\\n    //projection cam world matrix\\n    float4x4 projCamMatrix;\\n\\n    //projection cam settings\\n    float projCamFocal;\\n    float projCamHaperture;\\n    float projCamVaperture;\\n\\n    //distance of card from camera\\n    float depthMin;\\n    float depthMax;\\n\\n    //number of samples\\n    int iterations;\\n    float projDistSkew;\\n\\n    //darken at source\\n    bool EnableSourceDarken;\\n\\n    //4D noise settings\\n    float NoiseOctaves;\\n    float NoisePersistence; \\n    float NoiseScale; \\n    float NoiseSeed;\\n    float NoiseGamma;\\n    float4x4 axisMatrix;\\n    bool EnableNoise;\\n    float NoiseMix;\\n\\n    //to, from, gamma\\n    float4 toColour;\\n    float4 fromColour;\\n    float4 toFromGamma;\\n\\n\\n  local:\\n\\n    float2 resolution;\\n    \\n    float4 nearPosData;\\n    float4 farPosData;\\n    float4 posData;\\n\\n    float4 imageMult;\\n    float4 NoisePosData;\\n    float2 cardInfo;\\n    \\n\\n  void define() \\{\\n    \\n  \\}\\n\\n  void init() \\{\\n\\n    //defining resolution\\n    resolution.x = src.bounds.width();\\n    resolution.y = src.bounds.height();      \\n    \\n  \\}\\n\\n  void process(int2 pos) \\{\\n    \\n    float NoiseOutput;\\n\\n    //uses camera information to create virtual card\\n    cardInfo.x = ((((pos.x+.5f))/resolution.x-.5f)*projCamHaperture/projCamFocal);\\n    cardInfo.y = ((((pos.y+.5f))/resolution.y-.5f)*(resolution.y/resolution.x)*projCamHaperture/projCamFocal);\\n\\n    //creating near virtual card\\n    nearPosData.x = cardInfo.x*depthMin;\\n    nearPosData.y = cardInfo.y*depthMin;\\n    nearPosData.z = -depthMin;  \\n\\n    //creating far virtual card\\n    farPosData.x = cardInfo.x*depthMax;\\n    farPosData.y = cardInfo.y*depthMax;\\n    farPosData.z = -depthMax; \\n\\n\\n    //looping for each iterations\\n    for(int i = 0; i < iterations; i++)\\{\\n\\n      //iterating from min to max deep over time\\n      posData = iterations == 1 ? nearPosData : nearPosData + (farPosData - nearPosData)*pow(float(i)/(iterations-1.0f),projDistSkew);           \\n\\n      //transforming card using projection cam\\n      posData = matrixTransform(posData, projCamMatrix);\\n\\n      //calculating 4D noise\\n      if(EnableNoise == 1)\\{\\n        NoisePosData = matrixTransform(posData, axisMatrix.invert());\\n\\n        NoiseOutput = octave_noise_4d(NoiseOctaves, NoisePersistence, NoiseScale, NoisePosData.x, NoisePosData.y, NoisePosData.z, NoiseSeed); \\n        NoiseOutput = (NoiseOutput+1.0f)/2.0f;\\n      \\}\\n\\n      //transforming card using render cam\\n      posData = matrixTransform(posData, renderCamMatrix.invert());\\n\\n      //creating screenspace UV coordinates using render cam data\\n      posData = matrixToScreenspace(posData, renderCamFocal, renderCamHaperture, renderCamVaperture, resolution);\\n\\n            \\n      //multiplier for output image\\n      imageMult = 1.0f;\\n\\n      //4DNoise\\n      if(EnableNoise == 1)\\{\\n        imageMult *= 1.0f+(pow(((NoiseOutput+1.0f)/2.0f), 1.0f/NoiseGamma)-1.0f)*NoiseMix;\\n      \\}\\n\\n      //darken at source\\n      if(EnableSourceDarken == 1)\\{\\n        imageMult *= pow((i+1.0f)/iterations,0.5f);\\n      \\}\\n\\n      //to-from colour\\n      imageMult *= pow((fromColour + (toColour - fromColour)*float(i)/(iterations-1.0f)),1.0f/toFromGamma);\\n\\n      //iterations average\\n      imageMult /= iterations;\\n\\n      //mults image with modifier \\n      imageMult = src()*imageMult;\\n\\n      //assigns pixel values within image bounds\\n      if(posData.x <= (resolution.x) && posData.x >= 0.0f && posData.y <= (resolution.y) && posData.y >= 0.0f) \\{  \\n        dst(posData.x, posData.y) += imageMult;\\n      \\}   \\n      \\n\\n    \\}\\n\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  GodRaysProjectorVolumeKernel_renderCamMatrix {\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n    }\n  GodRaysProjectorVolumeKernel_renderCamFocal {{parent.DummyRenderCam.focal}}\n  GodRaysProjectorVolumeKernel_renderCamHaperture {{parent.DummyRenderCam.haperture}}\n  GodRaysProjectorVolumeKernel_renderCamVaperture {{parent.DummyRenderCam.vaperture}}\n  GodRaysProjectorVolumeKernel_projCamMatrix {\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n    }\n  GodRaysProjectorVolumeKernel_projCamFocal {{parent.DummyProjCam.focal}}\n  GodRaysProjectorVolumeKernel_projCamHaperture {{parent.DummyProjCam.haperture x37 0.976}}\n  GodRaysProjectorVolumeKernel_projCamVaperture {{parent.DummyProjCam.vaperture}}\n  GodRaysProjectorVolumeKernel_depthMin 1\n  GodRaysProjectorVolumeKernel_depthMax 10\n  GodRaysProjectorVolumeKernel_iterations 10\n  GodRaysProjectorVolumeKernel_projDistSkew 1\n  GodRaysProjectorVolumeKernel_EnableSourceDarken true\n  GodRaysProjectorVolumeKernel_NoiseOctaves 1\n  GodRaysProjectorVolumeKernel_NoisePersistence 0.5\n  GodRaysProjectorVolumeKernel_NoiseScale 1\n  GodRaysProjectorVolumeKernel_NoiseGamma 0.25\n  GodRaysProjectorVolumeKernel_axisMatrix {\n      {{parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix}}\n      {{parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix}}\n      {{parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix}}\n      {{parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix} {parent.Axis1.world_matrix}}\n    }\n  GodRaysProjectorVolumeKernel_NoiseMix 1\n  GodRaysProjectorVolumeKernel_toColour 1\n  GodRaysProjectorVolumeKernel_fromColour 1\n  GodRaysProjectorVolumeKernel_toFromGamma 0.5\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 254\n  ypos 220\n }\n Multiply {\n  channels rgba\n  value 4\n  name Multiply1\n  xpos 254\n  ypos 280\n  disable {{1-parent.BlinkScript1.useGPUIfAvailable}}\n }\n Clamp {\n  channels alpha\n  minimum_enable false\n  name Clamp1\n  xpos 254\n  ypos 306\n  disable {{1-clampAlpha}}\n  addUserKnob {20 User}\n  addUserKnob {6 clampAlpha l \"clamp alpha\" +STARTLINE}\n  clampAlpha true\n }\n GodRays {\n  channels rgba\n  scale {{1+parallelScaleBlur}}\n  center {{parent.Reconcile3D1.output} {parent.Reconcile3D1.output}}\n  steps 8\n  name GodRays1\n  xpos 254\n  ypos 391\n  disable {{scale==1}}\n  addUserKnob {20 User}\n  addUserKnob {6 bidirectional +STARTLINE}\n  bidirectional true\n  addUserKnob {7 parallelScaleBlur l \"parallel scale blur\"}\n }\n GodRays {\n  channels rgba\n  scale {{1/parent.GodRays1.scale}}\n  center {{parent.GodRays1.center} {parent.GodRays1.center}}\n  steps 8\n  name GodRays2\n  xpos 254\n  ypos 417\n  disable {{\"max(parent.GodRays1.disable, 1-GodRays1.bidirectional)\" x5 1}}\n }\n Blur {\n  channels rgba\n  name Blur1\n  xpos 254\n  ypos 491\n  disable {{\"size == 0\"}}\n  addUserKnob {20 User}\n  addUserKnob {6 blurShadow l \"blur shadow\" +STARTLINE}\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  bbox B\n  name Merge1\n  xpos 254\n  ypos 656\n  disable {{1-enableShadow}}\n  addUserKnob {20 User}\n  addUserKnob {6 enableShadow l \"enable shadow\" +STARTLINE}\n }\n Dot {\n  name Dot3\n  xpos 288\n  ypos 709\n }\nset N602aa800 [stack 0]\n Dot {\n  name Dot2\n  xpos -291\n  ypos 709\n }\npush $N62544c00\n Dot {\n  name Dot7\n  xpos -410\n  ypos 155\n }\nset N602aa000 [stack 0]\n Dot {\n  name Dot8\n  xpos -548\n  ypos 155\n }\n BlinkScript {\n  recompileCount 149\n  ProgramGroup 1\n  KernelDescription \"2 \\\"GodRaysProjectorDeepBackKernel\\\" iterate pixelWise b2d9280d746340d99b0c7d6e1708f2c867926bf38e3e6d63f84aa6bfe80deed0 2 \\\"src\\\" Read Point \\\"dst\\\" Write Random 12 \\\"renderCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"renderCamFocal\\\" Float 1 AAAAAA== \\\"renderCamHaperture\\\" Float 1 AAAAAA== \\\"renderCamVaperture\\\" Float 1 AAAAAA== \\\"projCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"projCamFocal\\\" Float 1 AAAAAA== \\\"projCamHaperture\\\" Float 1 AAAAAA== \\\"projCamVaperture\\\" Float 1 AAAAAA== \\\"depthMin\\\" Float 1 AAAAAA== \\\"depthMax\\\" Float 1 AAAAAA== \\\"iterations\\\" Int 1 AAAAAA== \\\"projDistSkew\\\" Float 1 AAAAAA== 12 \\\"renderCamMatrix\\\" 16 1 \\\"renderCamFocal\\\" 1 1 \\\"renderCamHaperture\\\" 1 1 \\\"renderCamVaperture\\\" 1 1 \\\"projCamMatrix\\\" 16 1 \\\"projCamFocal\\\" 1 1 \\\"projCamHaperture\\\" 1 1 \\\"projCamVaperture\\\" 1 1 \\\"depthMin\\\" 1 1 \\\"depthMax\\\" 1 1 \\\"iterations\\\" 1 1 \\\"projDistSkew\\\" 1 1 2 \\\"resolution\\\" Float 2 1 AAAAAAAAAAA= \\\"posData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"inline float4 matrixTransform(float4 image, float4x4 matrix)\\{\\n\\n    float4 matrixTransformsOutput;\\n\\n    matrixTransformsOutput.x = image.x * matrix\\[0]\\[0] + image.y * matrix\\[0]\\[1] + image.z * matrix\\[0]\\[2] + matrix\\[0]\\[3];\\n    matrixTransformsOutput.y = image.x * matrix\\[1]\\[0] + image.y * matrix\\[1]\\[1] + image.z * matrix\\[1]\\[2] + matrix\\[1]\\[3];\\n    matrixTransformsOutput.z = image.x * matrix\\[2]\\[0] + image.y * matrix\\[2]\\[1] + image.z * matrix\\[2]\\[2] + matrix\\[2]\\[3];\\n    matrixTransformsOutput.w = image.x * matrix\\[3]\\[0] + image.y * matrix\\[3]\\[1] + image.z * matrix\\[3]\\[2] + matrix\\[3]\\[3];\\n\\n\\n    return matrixTransformsOutput;\\n\\n\\}\\n\\ninline float4 matrixToScreenspace(float4 image, float focal, float haperture, float vaperture, int2 resolution)\\{\\n\\n    image.x = 0.5f - ((image.x) * (focal/haperture))/image.z;\\n    image.y = 0.5f - ((image.y) * (focal/vaperture))/image.z;\\n    image.z = -image.z;\\n\\n    image.x = image.x * (resolution.x) - 1.0f;\\n    image.y = image.y * (resolution.y) - 1.0f;\\n\\n\\n    return image;\\n\\n\\}\\n\\nkernel GodRaysProjectorDeepBackKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeNone> src; // the input image\\n  Image<eWrite, eAccessRandom> dst; // the output image\\n\\n  param:\\n\\n    //projection cam world matrix\\n    float4x4 renderCamMatrix;\\n\\n    //projection cam settings\\n    float renderCamFocal;\\n    float renderCamHaperture;\\n    float renderCamVaperture;\\n\\n\\n    //projection cam world matrix\\n    float4x4 projCamMatrix;\\n\\n    //projection cam settings\\n    float projCamFocal;\\n    float projCamHaperture;\\n    float projCamVaperture;\\n\\n    //distance of card from camera\\n    float depthMin;\\n    float depthMax;\\n\\n    //number of samples\\n    int iterations;\\n    float projDistSkew;\\n\\n  local:\\n\\n    float2 resolution;\\n    float4 posData;\\n\\n  void define() \\{\\n    \\n  \\}\\n\\n  void init() \\{\\n\\n    //defining resolution\\n    resolution.x = src.bounds.width();\\n    resolution.y = src.bounds.height();   \\n    \\n  \\}\\n\\n  void process(int2 pos) \\{\\n    \\n    float Z;\\n    \\n\\n\\n    //looping for each iterations\\n    for(int i = 0; i < iterations; i++)\\{\\n\\n      //iterating from min to max deep over time\\n      Z = iterations == 1 ? depthMin : depthMin + (depthMax - depthMin)*pow(float(i)/(iterations-1.0f),projDistSkew);    \\n\\n      //creating virtual card\\n      posData.x = ((((pos.x+.5f))/resolution.x-.5f)*projCamHaperture/projCamFocal)*Z;\\n      posData.y = ((((pos.y+.5f))/resolution.y-.5f)*(resolution.y/resolution.x)*projCamHaperture/projCamFocal)*Z;\\n      posData.z = -Z;  \\n\\n      //transforming card using projection cam\\n      posData = matrixTransform(posData, projCamMatrix);      \\n\\n      //transforming card using render cam\\n      posData = matrixTransform(posData, renderCamMatrix.invert());\\n\\n      //creating screenspace UV coordinates using render cam data\\n      posData = matrixToScreenspace(posData, renderCamFocal, renderCamHaperture, renderCamVaperture, resolution);        \\n\\n      //assigns depth data if it is closer than current value\\n      if(posData.x <= (resolution.x) && posData.x >= 0.0f && posData.y <= (resolution.y) && posData.y >= 0.0f) \\{\\n        dst(posData.x, posData.y) = dst(posData.x, posData.y).x == 0.0f || dst(posData.x, posData.y).x < posData.z ? posData.z : dst(posData.x, posData.y).x;  \\n      \\}\\n\\n    \\}\\n\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  vectorize {{parent.BlinkScript1.vectorize}}\n  rebuild \"\"\n  GodRaysProjectorDeepBackKernel_renderCamMatrix {\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n    }\n  GodRaysProjectorDeepBackKernel_renderCamFocal {{parent.DummyRenderCam.focal}}\n  GodRaysProjectorDeepBackKernel_renderCamHaperture {{parent.DummyRenderCam.haperture}}\n  GodRaysProjectorDeepBackKernel_renderCamVaperture {{parent.DummyRenderCam.vaperture}}\n  GodRaysProjectorDeepBackKernel_projCamMatrix {\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n    }\n  GodRaysProjectorDeepBackKernel_projCamFocal {{parent.DummyProjCam.focal}}\n  GodRaysProjectorDeepBackKernel_projCamHaperture {{parent.DummyProjCam.haperture}}\n  GodRaysProjectorDeepBackKernel_projCamVaperture {{parent.DummyProjCam.vaperture}}\n  GodRaysProjectorDeepBackKernel_depthMin {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMin}}\n  GodRaysProjectorDeepBackKernel_depthMax {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMax}}\n  GodRaysProjectorDeepBackKernel_iterations {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_iterations}}\n  GodRaysProjectorDeepBackKernel_projDistSkew {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projDistSkew}}\n  rebuild_finalise \"\"\n  name BlinkScript4\n  label \"deep back\"\n  xpos -582\n  ypos 246\n }\n Dot {\n  name Dot6\n  xpos -548\n  ypos 362\n }\npush $N602aa000\n BlinkScript {\n  recompileCount 150\n  ProgramGroup 1\n  KernelDescription \"2 \\\"GodRaysProjectorDeepFrontKernel\\\" iterate pixelWise db8732d7db620ffee3a5d75c1843aeeff690d4bc4ef2286e6d3285d82ce4d06f 2 \\\"src\\\" Read Point \\\"dst\\\" Write Random 12 \\\"renderCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"renderCamFocal\\\" Float 1 AAAAAA== \\\"renderCamHaperture\\\" Float 1 AAAAAA== \\\"renderCamVaperture\\\" Float 1 AAAAAA== \\\"projCamMatrix\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"projCamFocal\\\" Float 1 AAAAAA== \\\"projCamHaperture\\\" Float 1 AAAAAA== \\\"projCamVaperture\\\" Float 1 AAAAAA== \\\"depthMin\\\" Float 1 AAAAAA== \\\"depthMax\\\" Float 1 AAAAAA== \\\"iterations\\\" Int 1 AAAAAA== \\\"projDistSkew\\\" Float 1 AAAAAA== 12 \\\"renderCamMatrix\\\" 16 1 \\\"renderCamFocal\\\" 1 1 \\\"renderCamHaperture\\\" 1 1 \\\"renderCamVaperture\\\" 1 1 \\\"projCamMatrix\\\" 16 1 \\\"projCamFocal\\\" 1 1 \\\"projCamHaperture\\\" 1 1 \\\"projCamVaperture\\\" 1 1 \\\"depthMin\\\" 1 1 \\\"depthMax\\\" 1 1 \\\"iterations\\\" 1 1 \\\"projDistSkew\\\" 1 1 2 \\\"resolution\\\" Float 2 1 AAAAAAAAAAA= \\\"posData\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"inline float4 matrixTransform(float4 image, float4x4 matrix)\\{\\n\\n    float4 matrixTransformsOutput;\\n\\n    matrixTransformsOutput.x = image.x * matrix\\[0]\\[0] + image.y * matrix\\[0]\\[1] + image.z * matrix\\[0]\\[2] + matrix\\[0]\\[3];\\n    matrixTransformsOutput.y = image.x * matrix\\[1]\\[0] + image.y * matrix\\[1]\\[1] + image.z * matrix\\[1]\\[2] + matrix\\[1]\\[3];\\n    matrixTransformsOutput.z = image.x * matrix\\[2]\\[0] + image.y * matrix\\[2]\\[1] + image.z * matrix\\[2]\\[2] + matrix\\[2]\\[3];\\n    matrixTransformsOutput.w = image.x * matrix\\[3]\\[0] + image.y * matrix\\[3]\\[1] + image.z * matrix\\[3]\\[2] + matrix\\[3]\\[3];\\n\\n\\n    return matrixTransformsOutput;\\n\\n\\}\\n\\ninline float4 matrixToScreenspace(float4 image, float focal, float haperture, float vaperture, int2 resolution)\\{\\n\\n    image.x = 0.5f - ((image.x) * (focal/haperture))/image.z;\\n    image.y = 0.5f - ((image.y) * (focal/vaperture))/image.z;\\n    image.z = -image.z;\\n\\n    image.x = image.x * (resolution.x) - 1.0f;\\n    image.y = image.y * (resolution.y) - 1.0f;\\n\\n\\n    return image;\\n\\n\\}\\n\\nkernel GodRaysProjectorDeepFrontKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeNone> src; // the input image\\n  Image<eWrite, eAccessRandom> dst; // the output image\\n\\n  param:\\n\\n    //projection cam world matrix\\n    float4x4 renderCamMatrix;\\n\\n    //projection cam settings\\n    float renderCamFocal;\\n    float renderCamHaperture;\\n    float renderCamVaperture;\\n\\n\\n    //projection cam world matrix\\n    float4x4 projCamMatrix;\\n\\n    //projection cam settings\\n    float projCamFocal;\\n    float projCamHaperture;\\n    float projCamVaperture;\\n\\n    //distance of card from camera\\n    float depthMin;\\n    float depthMax;\\n\\n    //number of samples\\n    int iterations;\\n    float projDistSkew;\\n\\n  local:\\n\\n    float2 resolution;\\n    float4 posData;\\n\\n  void define() \\{\\n    \\n  \\}\\n\\n  void init() \\{\\n\\n    //defining resolution\\n    resolution.x = src.bounds.width();\\n    resolution.y = src.bounds.height();   \\n    \\n  \\}\\n\\n  void process(int2 pos) \\{\\n    \\n    float Z;\\n    \\n\\n\\n    //looping for each iterations\\n    for(int i = 0; i < iterations; i++)\\{\\n\\n      //iterating from min to max deep over time\\n      Z = iterations == 1 ? depthMin : depthMin + (depthMax - depthMin)*pow(float(i)/(iterations-1.0f),projDistSkew);    \\n\\n      //creating virtual card\\n      posData.x = ((((pos.x+.5f))/resolution.x-.5f)*projCamHaperture/projCamFocal)*Z;\\n      posData.y = ((((pos.y+.5f))/resolution.y-.5f)*(resolution.y/resolution.x)*projCamHaperture/projCamFocal)*Z;\\n      posData.z = -Z;  \\n\\n      //transforming card using projection cam\\n      posData = matrixTransform(posData, projCamMatrix);      \\n\\n      //transforming card using render cam\\n      posData = matrixTransform(posData, renderCamMatrix.invert());\\n\\n      //creating screenspace UV coordinates using render cam data\\n      posData = matrixToScreenspace(posData, renderCamFocal, renderCamHaperture, renderCamVaperture, resolution);        \\n\\n      //assigns depth data if it is closer than current value\\n      if(posData.x <= (resolution.x) && posData.x >= 0.0f && posData.y <= (resolution.y) && posData.y >= 0.0f) \\{\\n        dst(posData.x, posData.y) = dst(posData.x, posData.y).x == 0.0f || dst(posData.x, posData.y).x > posData.z ? posData.z : dst(posData.x, posData.y).x;  \\n      \\}\\n\\n    \\}\\n\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  vectorize {{parent.BlinkScript1.vectorize}}\n  rebuild \"\"\n  GodRaysProjectorDeepFrontKernel_renderCamMatrix {\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n      {{parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix} {parent.DummyRenderCam.world_matrix}}\n    }\n  GodRaysProjectorDeepFrontKernel_renderCamFocal {{parent.DummyRenderCam.focal}}\n  GodRaysProjectorDeepFrontKernel_renderCamHaperture {{parent.DummyRenderCam.haperture}}\n  GodRaysProjectorDeepFrontKernel_renderCamVaperture {{parent.DummyRenderCam.vaperture}}\n  GodRaysProjectorDeepFrontKernel_projCamMatrix {\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n      {{parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix} {parent.DummyProjCam.world_matrix}}\n    }\n  GodRaysProjectorDeepFrontKernel_projCamFocal {{parent.DummyProjCam.focal}}\n  GodRaysProjectorDeepFrontKernel_projCamHaperture {{parent.DummyProjCam.haperture}}\n  GodRaysProjectorDeepFrontKernel_projCamVaperture {{parent.DummyProjCam.vaperture}}\n  GodRaysProjectorDeepFrontKernel_depthMin {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMin}}\n  GodRaysProjectorDeepFrontKernel_depthMax {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_depthMax}}\n  GodRaysProjectorDeepFrontKernel_iterations {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_iterations}}\n  GodRaysProjectorDeepFrontKernel_projDistSkew {{parent.BlinkScript1.GodRaysProjectorVolumeKernel_projDistSkew}}\n  rebuild_finalise \"\"\n  name BlinkScript3\n  label \"deep front\"\n  xpos -444\n  ypos 248\n }\n Expression {\n  channel0 none\n  channel1 none\n  channel2 none\n  channel3 alpha\n  expr3 \"r != 0 || g != 0\"\n  name Expression1\n  xpos -444\n  ypos 300\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.green\n  name Copy1\n  xpos -444\n  ypos 352\n }\n Remove {\n  operation keep\n  channels {rgba.red rgba.green -rgba.blue rgba.alpha}\n  name Remove1\n  xpos -444\n  ypos 390\n }\n FilterErode {\n  channels rgba\n  size -3\n  name FilterErode1\n  xpos -444\n  ypos 468\n  disable {{parent.GodRays1.disable x5 1}}\n }\n GodRays {\n  channels {rgba.red rgba.green -rgba.blue rgba.alpha}\n  scale {{parent.GodRays1.scale}}\n  center {{parent.GodRays1.center} {parent.GodRays1.center}}\n  steps 8\n  max true\n  name GodRays3\n  xpos -444\n  ypos 494\n  disable {{scale==1}}\n }\n GodRays {\n  channels {rgba.red rgba.green -rgba.blue rgba.alpha}\n  scale {{1/parent.GodRays3.scale}}\n  center {{parent.GodRays1.center} {parent.GodRays1.center}}\n  steps 8\n  max true\n  name GodRays4\n  xpos -444\n  ypos 532\n  disable {{parent.GodRays2.disable x5 1}}\n }\n Blur {\n  channels rgba\n  size {{parent.Blur1.size}}\n  name Blur3\n  xpos -444\n  ypos 588\n  disable {{parent.Blur1.disable}}\n  addUserKnob {20 User}\n  addUserKnob {6 blurShadow l \"blur shadow\" +STARTLINE}\n }\n Unpremult {\n  channels {rgba.red rgba.green -rgba.blue none}\n  name Unpremult1\n  xpos -444\n  ypos 614\n  disable {{\"Blur1.size == 0 \"}}\n }\n DeepFromImage {\n  premult true\n  name DeepFromImage1\n  xpos -444\n  ypos 661\n }\n DeepExpression {\n  chans1 deep\n  deep.front r\n  deep.back g\n  name DeepExpression1\n  xpos -444\n  ypos 687\n }\n Dot {\n  name Dot5\n  xpos -410\n  ypos 793\n }\n DeepRecolor {\n  inputs 2\n  targetInputAlpha true\n  name DeepRecolor1\n  xpos -325\n  ypos 789\n }\n DeepReformat {\n  type \"to box\"\n  box_width {{Reformat1.input0.width}}\n  box_height {{Reformat1.input0.height}}\n  box_fixed true\n  scale {{1/parent.Reformat1.scale} {1/parent.Reformat1.scale}}\n  pbb true\n  name DeepReformat1\n  xpos -325\n  ypos 815\n  disable {{parent.Reformat1.disable}}\n }\n Dot {\n  name Dot1\n  xpos -291\n  ypos 863\n }\npush $N602aa800\n Reformat {\n  type \"to box\"\n  box_width {{Reformat1.input0.width}}\n  box_height {{Reformat1.input0.height}}\n  box_fixed true\n  scale {{1/parent.Reformat1.scale} {1/parent.Reformat1.scale}}\n  filter notch\n  name Reformat2\n  xpos 254\n  ypos 782\n  disable {{parent.Reformat1.disable}}\n }\n Switch {\n  inputs 2\n  which {{\"parent.outputMode == 1\"}}\n  name Switch1\n  label \"deep output switch\"\n  xpos 254\n  ypos 853\n }\n Switch {\n  inputs 2\n  which {{\"parent.outputMode == 2\"}}\n  name Switch2\n  label \"shadow only switch\"\n  xpos 254\n  ypos 961\n }\n Output {\n  name Output1\n  xpos 254\n  ypos 1101\n }\n Group {\n  inputs 0\n  name GetGPUName\n  label \"This just grabs the GPU name\"\n  xpos 529\n  ypos 28\n  disable true\n  addUserKnob {20 GodRaysProjectorVolumeKernel}\n  addUserKnob {41 \"Local GPU: \" T BlinkScript1.gpuName}\n  addUserKnob {41 \"Use GPU if Available\" T BlinkScript1.useGPUIfAvailable}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 84\n   ypos 418\n  }\n  BlinkScript {\n   recompileCount 201\n   ProgramGroup 1\n   KernelDescription \"2 \\\"BlankKernel\\\" iterate pixelWise 555f8bedff5787bfff38741a5cf42e9ba1f3e68c81d54c15322b81680fbf2e6e 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n   kernelSource \"\\nkernel BlankKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src; // the input image\\n  Image<eWrite> dst; // the output image\\n  void process() \\{\\n    \\n    // Write the result to the output image\\n    dst() = src();\\n  \\}\\n\\};\\n\"\n   useGPUIfAvailable false\n   rebuild \"\"\n   rebuild_finalise \"\"\n   name BlinkScript1\n   xpos 84\n   ypos 478\n   disable true\n  }\n  Output {\n   name Output1\n   xpos 84\n   ypos 558\n  }\n end_group\n Axis2 {\n  inputs 0\n  name Axis1\n  label \"4D Noise Transform\"\n  xpos 522\n  ypos 189\n }\n Input {\n  inputs 0\n  name projectionCam\n  xpos -33\n  ypos -40\n  number 2\n }\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {{\"\\[expression \\[value the_cam]far(\\[value the_frame])]\"}}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyProjCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nadrianpueyo.com, 2019-2020\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label projCam\n  xpos -23\n  ypos 3\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.1. Updated 5 April 2020.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 April 2020\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2020</span>\"}\n }\n Dot {\n  name Dot9\n  xpos 1\n  ypos 324\n }\n Input {\n  inputs 0\n  name renderCam\n  xpos 63\n  ypos -41\n  number 1\n }\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {{\"\\[expression \\[value the_cam]far(\\[value the_frame])]\"}}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyRenderCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nadrianpueyo.com, 2019-2020\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label renderCam\n  xpos 73\n  ypos 4\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.1. Updated 5 April 2020.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 April 2020\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2020</span>\"}\n }\npush $N62544c00\n Reconcile3D {\n  inputs 3\n  calc_output true\n  name Reconcile3D1\n  label \"calculates the 2D screenspace coordinate of the projection cam\"\n  xpos 63\n  ypos 307\n  disable {{parent.GodRays1.disable x1 1}}\n }\npush $N32615c00\n Viewer {\n  frame_range 1-100\n  name Viewer1\n  xpos 254\n  ypos 130\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GradMagic.gizmo",
    "content": "Group {\n name GradMagic\n help \"Creates a 4 point gradient that samples corners from the input. Ability to bake color results. Outputs Grad over BG or Grad Only.\\n\\nSet corners to:\\n- default\\n- format\\n- input bbox\\n- bbox from viewer\\n- color Ssample box\\n\\n- can link or bake to exisiting\\n cornerpin node, and you can use\\n manually adjust points to further\\n tweak the position of the ramp.\\n\\nChoose between output colors that are:\\n- Live\\n- Baked on current frame\\n- Baked framerange\\n\\nCan adjust edge blur of gradient\"\n tile_color 0x621d5aff\n gl_color 0xbffffff\n note_font \"Verdana Bold\"\n note_font_color 0x73e6e2ff\n selected true\n addUserKnob {20 GradMagic}\n addUserKnob {4 output1 l \"<b><font color= white>Output:\" M {\"Grad Over BG \" \"Grad Only \" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {41 sampleSize l \"| Sample Size\" t \"Sample size will be used as the area to average the colors from on each cornerpoint\" -STARTLINE T Settings.sampleSize}\n addUserKnob {26 \"\"}\n addUserKnob {20 points l \"Corner Points\" n 1}\n addUserKnob {26 setPointsTo l \"<b> <font color=white>Set Points To:\" t \"Sets points to a small box in bottom left corner of screen\" T \" \"}\n addUserKnob {22 setToDefault l Default -STARTLINE T \"#gather nodes\\n\\nn = nuke.thisNode()\\ns = nuke.toNode(\\\"Settings\\\")\\n\\n#gather settings points knobs\\nsetRefFrame = n.knob('setRefFrame')\\n\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\n#set topLeft\\nsettl.clearAnimated()\\nsettl.setValue(100, 0)\\nsettl.setValue(400, 1)\\n\\n#set topRight\\nsettr.clearAnimated()\\nsettr.setValue(400, 0)\\nsettr.setValue(400, 1)\\n\\n#set bottomLeft\\nsetbl.clearAnimated()\\nsetbl.setValue(100, 0)\\nsetbl.setValue(100, 1)\\n\\n#set bottomRight\\nsetbr.clearAnimated()\\nsetbr.setValue(400, 0)\\nsetbr.setValue(100, 1)\\n\\nsetRefFrame.execute()\"}\n addUserKnob {22 setToFormat l Format t \"Sets points to input format\\nif nothing is plugged into the input, takes root.format of the script\" -STARTLINE T \"#gather nodes\\ngif = nuke.toNode(\\\"getInputFormat\\\")\\ns = nuke.toNode(\\\"Settings\\\")\\nn = nuke.thisNode()\\n\\nsetRefFrame = n.knob('setRefFrame')\\n\\n#gather format values\\nfx = int(gif.knob(\\\"box\\\").getValue(0))\\nfy = int(gif.knob(\\\"box\\\").getValue(1))\\nfr = int(gif.knob(\\\"box\\\").getValue(2))\\nft = int(gif.knob(\\\"box\\\").getValue(3))\\n\\n#gather settings points knobs\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\n#set topLeft\\nsettl.clearAnimated()\\nsettl.setValue(fx, 0)\\nsettl.setValue(ft, 1)\\n\\n#set topRight\\nsettr.clearAnimated()\\nsettr.setValue(fr, 0)\\nsettr.setValue(ft, 1)\\n\\n#set bottomLeft\\nsetbl.clearAnimated()\\nsetbl.setValue(fx, 0)\\nsetbl.setValue(fy, 1)\\n\\n#set bottomRight\\nsetbr.clearAnimated()\\nsetbr.setValue(fr, 0)\\nsetbr.setValue(fy, 1)\\n\\nsetRefFrame.execute()\"}\n addUserKnob {22 setToInputBbox l \"Input Bbox\" t \"Sets points to the input bbox\" T \"#gather nodes\\ngib = nuke.toNode(\\\"getInputBbox\\\")\\ns = nuke.toNode(\\\"Settings\\\")\\nn = nuke.thisNode()\\n\\nsetRefFrame = n.knob('setRefFrame')\\n\\n#gather format values\\nfx = int(gib.knob(\\\"box\\\").getValue(0))\\nfy = int(gib.knob(\\\"box\\\").getValue(1))\\nfr = int(gib.knob(\\\"box\\\").getValue(2))\\nft = int(gib.knob(\\\"box\\\").getValue(3))\\n\\n#gather settings points knobs\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\n#set topLeft\\nsettl.clearAnimated()\\nsettl.setValue(fx, 0)\\nsettl.setValue(ft, 1)\\n\\n#set topRight\\nsettr.clearAnimated()\\nsettr.setValue(fr, 0)\\nsettr.setValue(ft, 1)\\n\\n#set bottomLeft\\nsetbl.clearAnimated()\\nsetbl.setValue(fx, 0)\\nsetbl.setValue(fy, 1)\\n\\n#set bottomRight\\nsetbr.clearAnimated()\\nsetbr.setValue(fr, 0)\\nsetbr.setValue(fy, 1)\\n\\nsetRefFrame.execute()\" +STARTLINE}\n addUserKnob {22 setToViewerBBox l \"Viewer BBox\" t \"Sets points to the bbox of whatever is being viewed and is displayed in the viewer\" -STARTLINE T \"n = nuke.thisNode()\\ns = nuke.toNode(\\\"Settings\\\")\\n\\nsetRefFrame = n.knob('setRefFrame')\\n\\nbbox = nuke.activeViewer().node().input(nuke.activeViewer().activeInput()).bbox()\\nvbbx = bbox.x()\\nvbby = bbox.y()\\nvbbr = (bbox.x()+bbox.w())\\nvbbt = (bbox.y()+bbox.h())\\n\\nwith n:\\n    s\\[\\\"topLeft\\\"].clearAnimated()\\n    s\\[\\\"topLeft\\\"].setValue(vbbx, 0)\\n    s\\[\\\"topLeft\\\"].setValue(vbbt, 1)\\n\\n    s\\[\\\"topRight\\\"].clearAnimated()\\n    s\\[\\\"topRight\\\"].setValue(vbbr, 0)\\n    s\\[\\\"topRight\\\"].setValue(vbbt, 1)\\n\\n    s\\[\\\"bottomLeft\\\"].clearAnimated()\\n    s\\[\\\"bottomLeft\\\"].setValue(vbbx, 0)\\n    s\\[\\\"bottomLeft\\\"].setValue(vbby, 1)\\n\\n    s\\[\\\"bottomRight\\\"].clearAnimated()\\n    s\\[\\\"bottomRight\\\"].setValue(vbbr, 0)\\n    s\\[\\\"bottomRight\\\"].setValue(vbby, 1)\\n\\nsetRefFrame.execute()\"}\n addUserKnob {22 colorSampleBox l \"Color Sample Box\" t \"Sets points to the color sample box that the user has set\" -STARTLINE T \"if nuke.activeViewer().node().input(0):\\n    myNode = nuke.activeViewer().node().input(0)\\n    if not nuke.selectedNodes(): #Trying to be smart by assuming that you don't want to add a node to nothing.\\n        myNode.setSelected(1)\\nelse:\\n    myNode = nuke.activeViewer().node()\\n\\nbboxinfo = nuke.activeViewer().node()\\['colour_sample_bbox'].value()    #Get the position info from the colour sample bbox\\naspect = float(myNode.width()*myNode.pixelAspect())/float(myNode.height())  #Calcualte the aspect (thanks Tom van Dop for notifying and Jelmen Palsterman for the correction!)\\ncornerA = \\[(bboxinfo\\[0]*0.5+0.5)*myNode.width(),(((bboxinfo\\[1]*0.5)+(0.5/aspect))*aspect)*myNode.height()] #Get the button left corner\\ncornerB = \\[(bboxinfo\\[2]*0.5+0.5)*myNode.width(),(((bboxinfo\\[3]*0.5)+(0.5/aspect))*aspect)*myNode.height()] #Get the top right corner\\narea_WH = \\[cornerB\\[0]-cornerA\\[0],cornerB\\[1]-cornerA\\[1]] #Get the width and height of the bbox\\narea_Mid = \\[cornerA\\[0]+(area_WH\\[0]/2),cornerA\\[1]+(area_WH\\[1]/2)] #Get the center of the bbox\\n\\nn = nuke.thisNode()\\nn\\['bottomLeft'].setValue(\\[cornerA\\[0],cornerA\\[1]])\\nn\\['bottomRight'].setValue(\\[cornerB\\[0],cornerA\\[1]])\\nn\\['topRight'].setValue(\\[cornerB\\[0],cornerB\\[1]])\\nn\\['topLeft'].setValue(\\[cornerA\\[0],cornerB\\[1]])\"}\n addUserKnob {26 \"\"}\n addUserKnob {22 linkCornerPin l \"<font color=lightgreen> Link CornerPin\" t \"Select a corner pin or node with \\\"to\\\" points to link animation to\" T \"n = nuke.thisNode()\\nwith nuke.root():\\n    try:\\n        s = nuke.selectedNode()\\n        sn = s.name()\\n\\n        tl = n.knob(\\\"topLeft\\\")\\n        tr = n.knob('topRight')\\n        bl = n.knob(\\\"bottomLeft\\\")\\n        br = n.knob(\\\"bottomRight\\\")\\n        \\n        if s.knob(\\\"to1\\\") and s.knob(\\\"to2\\\") and s.knob(\\\"to3\\\") and s.knob(\\\"to4\\\"):\\n            to1 = s.knob(\\\"to1\\\")\\n            to1v = to1.getValue()\\n            to2 = s.knob(\\\"to2\\\")\\n            to2v = to2.getValue()\\n            to3 = s.knob(\\\"to3\\\")\\n            to3v = to3.getValue()\\n            to4 = s.knob(\\\"to4\\\")\\n            to4v = to4.getValue()\\n            \\n            tl.clearAnimated()\\n            tl.setExpression( sn + \\\".\\\" + to4.name() )\\n            \\n            tr.clearAnimated()\\n            tr.setExpression( sn + \\\".\\\" + to3.name() )\\n            \\n            bl.clearAnimated()\\n            bl.setExpression( sn + \\\".\\\" + to1.name() )\\n            \\n            br.clearAnimated()\\n            br.setExpression( sn + \\\".\\\" + to2.name() )\\n        \\n        else:\\n            nuke.message(\\\"Please select node with valid 'to' points\\\")\\n\\n    except:\\n        nuke.message(\\\"Please select node\\\")\" +STARTLINE}\n addUserKnob {22 bakeCornerPin l \"<font color=lightgreen> Bake CornerPin\" t \"Select a corner pin or node with \\\"to\\\" points to bake animation from\" -STARTLINE T \"n = nuke.thisNode()\\nwith nuke.root():\\n    try:\\n        s = nuke.selectedNode()\\n        \\n        sn = s.name()\\n\\n        tl = n.knob(\\\"topLeft\\\")\\n        tr = n.knob('topRight')\\n        bl = n.knob(\\\"bottomLeft\\\")\\n        br = n.knob(\\\"bottomRight\\\")\\n        \\n        if s.knob(\\\"to1\\\") and s.knob(\\\"to2\\\") and s.knob(\\\"to3\\\") and s.knob(\\\"to4\\\"):\\n            to1 = s.knob(\\\"to1\\\")\\n            to1v = to1.getValue()\\n            to2 = s.knob(\\\"to2\\\")\\n            to2v = to2.getValue()\\n            to3 = s.knob(\\\"to3\\\")\\n            to3v = to3.getValue()\\n            to4 = s.knob(\\\"to4\\\")\\n            to4v = to4.getValue()\\n            \\n            if to1.hasExpression() or to2.hasExpression() or to3.hasExpression() or to4.hasExpression():\\n                \\n                first_frame = int(nuke.Root()\\['first_frame'].getValue())\\n                last_frame = int(nuke.Root()\\['last_frame'].getValue())\\n                # Grab first and last frame from root\\n                \\n                p = nuke.Panel(\\\"Execute on FrameRange\\\")\\n                p.addSingleLineInput('First Frame', first_frame)\\n                p.addSingleLineInput('Last Frame', last_frame)\\n                p.addSingleLineInput('Increment', 1)\\n                result = p.show()\\n                if result:\\n                    \\n                    # Create user input panel\\n                    \\n                    ff = int(p.value(\\\"First Frame\\\"))\\n                    lf = int(p.value(\\\"Last Frame\\\"))\\n                    i = int(p.value(\\\"Increment\\\"))\\n                    # Define first, last, increment from user input panel\\n                \\n                    tl.clearAnimated()\\n                    tl.fromScript(to4.toScript())\\n                    \\n                    tr.clearAnimated()\\n                    tr.fromScript(to3.toScript())\\n                    \\n                    bl.clearAnimated()\\n                    bl.fromScript(to1.toScript())\\n                    \\n                    br.clearAnimated()\\n                    br.fromScript(to2.toScript())\\n                    \\n                    nuke.animation( n.name() + \\\".\\\" + \\\"topLeft.x\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"topLeft\\\"))\\n                    nuke.animation( n.name() + \\\".\\\" + \\\"topLeft.y\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"topLeft\\\"))\\n                \\n                    nuke.animation( n.name() + \\\".\\\" + \\\"topRight.x\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"topRight\\\"))\\n                    nuke.animation( n.name() + \\\".\\\" + \\\"topRight.y\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"topRight\\\"))\\n                \\n                    nuke.animation( n.name() + \\\".\\\" + \\\"bottomLeft.x\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"bottomLeft\\\"))\\n                    nuke.animation( n.name() + \\\".\\\" + \\\"bottomLeft.y\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"bottomLeft\\\"))\\n                \\n                    nuke.animation( n.name() + \\\".\\\" + \\\"bottomRight.x\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"bottomRight\\\"))\\n                    nuke.animation( n.name() + \\\".\\\" + \\\"bottomRight.y\\\", \\\"generate\\\", (str(ff), str(lf), str(i), \\\"y\\\", \\\"bottomRight\\\"))\\n                else:\\n                    pass\\n                \\n            else:\\n                tl.clearAnimated()\\n                tl.fromScript(to4.toScript())\\n                \\n                tr.clearAnimated()\\n                tr.fromScript(to3.toScript())\\n                \\n                bl.clearAnimated()\\n                bl.fromScript(to1.toScript())\\n                \\n                br.clearAnimated()\\n                br.fromScript(to2.toScript())\\n        else:\\n            nuke.message(\\\"Please select node with valid 'to' points\\\")\\n\\n    except:\\n        nuke.message(\\\"Please select node\\\") \\n    \\n\"}\n addUserKnob {26 adjustPointsDesc l \"       \" T \"<font color=white> If using adjust points, set ref frame to align to main points.\"}\n addUserKnob {22 setRefFrame l \"Set Adjust Ref Frame\" t \"Set the reference frame to snap the adjust points to where the main points are on the current frame.  This will make it easier to adjust the points from that reference point\" T \"n = nuke.thisNode()\\npo = nuke.toNode(\\\"PointsOffset\\\")\\n\\n# Gather Knobs\\nrf    = n.knob('refFrame')\\n\\nsPosTL  = po.knob('startPosTL')\\nfhPosTL = po.knob('frameHoldPosTL')\\naPosTL  = n.knob('adjustPosTL')\\n\\nsPosTR  = po.knob('startPosTR')\\nfhPosTR = po.knob('frameHoldPosTR')\\naPosTR  = n.knob('adjustPosTR')\\n\\nsPosBL  = po.knob('startPosBL')\\nfhPosBL = po.knob('frameHoldPosBL')\\naPosBL  = n.knob('adjustPosBL')\\n\\nsPosBR  = po.knob('startPosBR')\\nfhPosBR = po.knob('frameHoldPosBR')\\naPosBR  = n.knob('adjustPosBR')\\n\\n# Get Current Frame\\ncurentFrame = nuke.frame()\\n\\n# Set frameHold frame from current frame\\nrf.setValue(curentFrame)\\n\\n# grab start position from current frame\\nstartPosTL_X = sPosTL.getValueAt( curentFrame, 0 )\\nstartPosTL_Y = sPosTL.getValueAt( curentFrame, 1 )\\n\\nstartPosTR_X = sPosTR.getValueAt( curentFrame, 0 )\\nstartPosTR_Y = sPosTR.getValueAt( curentFrame, 1 )\\n\\nstartPosBL_X = sPosBL.getValueAt( curentFrame, 0 )\\nstartPosBL_Y = sPosBL.getValueAt( curentFrame, 1 )\\n\\nstartPosBR_X = sPosBR.getValueAt( curentFrame, 0 )\\nstartPosBR_Y = sPosBR.getValueAt( curentFrame, 1 )\\n\\n# set frameHold Position\\nfhPosTL.setValue(startPosTL_X, 0)\\nfhPosTL.setValue(startPosTL_Y, 1)\\n\\nfhPosTR.setValue(startPosTR_X, 0)\\nfhPosTR.setValue(startPosTR_Y, 1)\\n\\nfhPosBL.setValue(startPosBL_X, 0)\\nfhPosBL.setValue(startPosBL_Y, 1)\\n\\nfhPosBR.setValue(startPosBR_X, 0)\\nfhPosBR.setValue(startPosBR_Y, 1)\\n\\n# set adjusted Position \\naPosTL.setValue(startPosTL_X, 0)\\naPosTL.setValue(startPosTL_Y+10, 1)\\naPosTL.clearAnimated()\\n\\naPosTR.setValue(startPosTR_X, 0)\\naPosTR.setValue(startPosTR_Y+10, 1)\\naPosTR.clearAnimated()\\n\\naPosBL.setValue(startPosBL_X, 0)\\naPosBL.setValue(startPosBL_Y+10, 1)\\naPosBL.clearAnimated()\\n\\naPosBR.setValue(startPosBR_X, 0)\\naPosBR.setValue(startPosBR_Y+10, 1)\\naPosBR.clearAnimated()\\n\\n\\n\" +STARTLINE}\n addUserKnob {3 refFrame l \"\" -STARTLINE +DISABLED}\n refFrame 1001\n addUserKnob {26 viewerUI l \"<b> <font color=white>Viewer UI:\" T \" \"}\n addUserKnob {22 toggleMainPoints l \"<font color = white>Hide Main Points\" t \"Toggle the visiblity in viewer of main points UI\" -STARTLINE T \"n = nuke.thisNode()\\n\\ntl = n.knob(\\\"topLeft\\\")\\ntr = n.knob(\\\"topRight\\\")\\nbl = n.knob(\\\"bottomLeft\\\")\\nbr = n.knob(\\\"bottomRight\\\")\\n\\ntmp = n.knob(\\\"toggleMainPoints\\\")\\nts = n.knob(\\\"mainToggleStatus\\\")\\ncurrState = ts.getValue()\\n\\nif currState == 0:\\n    tl.clearFlag(0x0000000000008000)\\n    tr.clearFlag(0x0000000000008000)\\n    bl.clearFlag(0x0000000000008000)\\n    br.clearFlag(0x0000000000008000)\\n    ts.setValue(1)\\n    tmp.setLabel(\\\"<font color = white>Hide Main Points\\\")\\n    \\n\\nelse:\\n    tl.setFlag(0x0000000000008000)\\n    tr.setFlag(0x0000000000008000)\\n    bl.setFlag(0x0000000000008000)\\n    br.setFlag(0x0000000000008000)\\n    ts.setValue(0)\\n    tmp.setLabel(\\\"<font color = white>Show Main Points\\\")\"}\n addUserKnob {22 toggleAdjustKnobs l \"<font color = skyblue>Show Adjust Points\" t \"Toggle the visibilty of knobs and viewer UI of adjustment points\" -STARTLINE T \"n = nuke.thisNode()\\n\\natl = n.knob(\\\"adjustPosTL\\\")\\natr = n.knob(\\\"adjustPosTR\\\")\\nabl = n.knob(\\\"adjustPosBL\\\")\\nabr = n.knob(\\\"adjustPosBR\\\")\\n\\ntak = n.knob(\\\"toggleAdjustKnobs\\\")\\ncurrState = atl.visible()\\n\\nif currState == False:\\n    atl.setVisible(True)\\n    atr.setVisible(True)\\n    abl.setVisible(True)\\n    abr.setVisible(True)\\n    \\n    atl.clearFlag(0x0000000000008000)\\n    atr.clearFlag(0x0000000000008000)\\n    abl.clearFlag(0x0000000000008000)\\n    abr.clearFlag(0x0000000000008000)\\n    tak.setLabel(\\\"<font color = skyblue>Hide Adjust Points\\\")\\n\\n\\nelse:\\n    atl.setVisible(False)\\n    atr.setVisible(False)\\n    abl.setVisible(False)\\n    abr.setVisible(False)\\n\\n    atl.setFlag(0x0000000000008000)\\n    atr.setFlag(0x0000000000008000)\\n    abl.setFlag(0x0000000000008000)\\n    abr.setFlag(0x0000000000008000)\\n    tak.setLabel(\\\"<font color = skyblue>Show Adjust Points\\\")\"}\n addUserKnob {41 topLeft T Settings.topLeft}\n addUserKnob {12 adjustPosTL l \"adjust TL\" -STARTLINE +HIDDEN}\n adjustPosTL {100 410}\n addUserKnob {41 topRight T Settings.topRight}\n addUserKnob {12 adjustPosTR l \"adjust TR\" -STARTLINE +HIDDEN}\n adjustPosTR {400 410}\n addUserKnob {41 bottomLeft T Settings.bottomLeft}\n addUserKnob {12 adjustPosBL l \"adjust BL\" -STARTLINE +HIDDEN}\n adjustPosBL {100 110}\n addUserKnob {41 bottomRight T Settings.bottomRight}\n addUserKnob {12 adjustPosBR l \"adjust BR\" -STARTLINE +HIDDEN}\n adjustPosBR {400 110}\n addUserKnob {3 mainToggleStatus +INVISIBLE}\n mainToggleStatus 1\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {22 makeLive l \"Make Live\" t \"make the points sample from input live\" T \"n = nuke.thisNode()\\nbc = nuke.toNode(\\\"BakeColors\\\")\\nl = \\\"<b> <font color=lime> Is Live\\\"\\nk = \\\"status\\\"\\nbcg = n.knob(\\\"bakeColors\\\")\\n\\nct1 = nuke.toNode(\\\"CurveToolTopLeft\\\")\\nct2 = nuke.toNode(\\\"CurveToolTopRight\\\")\\nct3 = nuke.toNode(\\\"CurveToolBottomLeft\\\")\\nct4 = nuke.toNode(\\\"CurveToolBottomRight\\\")\\n\\ncol_tl = nuke.toNode(\\\"TopLeftColor\\\").knob(\\\"value\\\")\\ncol_tr = nuke.toNode(\\\"TopRightColor\\\").knob(\\\"value\\\")\\ncol_bl = nuke.toNode(\\\"BottomLeftColor\\\").knob(\\\"value\\\")\\ncol_br = nuke.toNode(\\\"BottomRightColor\\\").knob(\\\"value\\\")\\n\\nn\\[k].setValue(l)\\n\\nwith n:\\n    bc.knob(\\\"makeLive\\\").execute()\\n\\nn.knob(\\\"topLeftColor\\\").setEnabled(False)\\nn.knob(\\\"topRightColor\\\").setEnabled(False)\\nn.knob(\\\"bottomLeftColor\\\").setEnabled(False)\\nn.knob(\\\"bottomRightColor\\\").setEnabled(False)\\n\\ncol_tl.setValue(0, 0)\\ncol_tl.setValue(0, 1)\\ncol_tl.setValue(0, 2)\\ncol_tl.setValue(0, 3)\\ncol_tl.clearAnimated()\\n\\ncol_tr.setValue(0, 0)\\ncol_tr.setValue(0, 1)\\ncol_tr.setValue(0, 2)\\ncol_tr.setValue(0, 3)\\ncol_tr.clearAnimated()\\n\\ncol_bl.setValue(0, 0)\\ncol_bl.setValue(0, 1)\\ncol_bl.setValue(0, 2)\\ncol_bl.setValue(0, 3)\\n\\ncol_bl.clearAnimated()\\ncol_br.setValue(0, 0)\\ncol_br.setValue(0, 1)\\ncol_br.setValue(0, 2)\\ncol_br.setValue(0, 3)\\ncol_br.clearAnimated()\\n\\n\\nn\\[\\\"bakedColors\\\"].setValue(False)\\n\\nct1\\[\\\"intensitydata\\\"].clearAnimated()\\nct1\\[\\\"intensitydata\\\"].setValue(0, 0)\\nct1\\[\\\"intensitydata\\\"].setValue(0, 1)\\nct1\\[\\\"intensitydata\\\"].setValue(0, 2)\\nct1\\[\\\"intensitydata\\\"].setValue(0, 3)\\n\\nct2\\[\\\"intensitydata\\\"].clearAnimated()\\nct2\\[\\\"intensitydata\\\"].setValue(0, 0)\\nct2\\[\\\"intensitydata\\\"].setValue(0, 1)\\nct2\\[\\\"intensitydata\\\"].setValue(0, 2)\\nct2\\[\\\"intensitydata\\\"].setValue(0, 3)\\n\\nct3\\[\\\"intensitydata\\\"].clearAnimated()\\nct3\\[\\\"intensitydata\\\"].setValue(0, 0)\\nct3\\[\\\"intensitydata\\\"].setValue(0, 1)\\nct3\\[\\\"intensitydata\\\"].setValue(0, 2)\\nct3\\[\\\"intensitydata\\\"].setValue(0, 3)\\n\\nct4\\[\\\"intensitydata\\\"].clearAnimated()\\nct4\\[\\\"intensitydata\\\"].setValue(0, 0)\\nct4\\[\\\"intensitydata\\\"].setValue(0, 1)\\nct4\\[\\\"intensitydata\\\"].setValue(0, 2)\\nct4\\[\\\"intensitydata\\\"].setValue(0, 3)\\n\" +STARTLINE}\n addUserKnob {26 status l \"<b> <font size=4>Status:   \" -STARTLINE T \"<b> <font color=lime> Is Live\"}\n addUserKnob {22 bakeCurrentFrame l \"<font color=violet> Bake Current Frame\" t \"bake a single color for each corner point on this frame\" T \"n = nuke.thisNode()\\nf = nuke.frame()\\n\\nbcg = n.knob(\\\"bakeColors\\\")\\n\\ncol_tl = nuke.toNode(\\\"TopLeftColor\\\")\\ncol_tr = nuke.toNode(\\\"TopRightColor\\\")\\ncol_bl = nuke.toNode(\\\"BottomLeftColor\\\")\\ncol_br = nuke.toNode(\\\"BottomRightColor\\\")\\n\\nptl = nuke.toNode(\\\"PickerTL\\\")\\nptr = nuke.toNode(\\\"PickerTR\\\")\\npbl = nuke.toNode(\\\"PickerBL\\\")\\npbr = nuke.toNode(\\\"PickerBR\\\")\\n\\nswtl = nuke.toNode(\\\"LiveSwitchTopLeft\\\")\\nswtr = nuke.toNode(\\\"LiveSwitchTopRight\\\")\\nswbl = nuke.toNode(\\\"LiveSwitchBottomLeft\\\")\\nswbr = nuke.toNode(\\\"LiveSwitchBottomRight\\\")\\n\\nk = \\\"status\\\"\\nl = \\\"<b> <font color=red> Is Baked on Frame:\\\" + \\\" \\\" + str(f)\\n\\nwith n:\\n    swtl.knob(\\\"which\\\").setValue(0)\\n    swtr.knob(\\\"which\\\").setValue(0)\\n    swbl.knob(\\\"which\\\").setValue(0)\\n    swbr.knob(\\\"which\\\").setValue(0)\\n\\n    col_tl\\[\\\"value\\\"].clearAnimated()\\n    col_tr\\[\\\"value\\\"].clearAnimated()\\n    col_bl\\[\\\"value\\\"].clearAnimated()\\n    col_br\\[\\\"value\\\"].clearAnimated()\\n\\n    ptl.knob(\\\"generateColors\\\").execute()\\n    ptr.knob(\\\"generateColors\\\").execute()\\n    pbl.knob(\\\"generateColors\\\").execute()\\n    pbr.knob(\\\"generateColors\\\").execute()\\n\\n    swtl.knob(\\\"which\\\").setValue(1)\\n    swtr.knob(\\\"which\\\").setValue(1)\\n    swbl.knob(\\\"which\\\").setValue(1)\\n    swbr.knob(\\\"which\\\").setValue(1)\\n\\nn\\[k].setValue(l)\\n\\nn\\[\\\"topLeftColor\\\"].setEnabled(True)\\nn\\[\\\"topRightColor\\\"].setEnabled(True)\\nn\\[\\\"bottomLeftColor\\\"].setEnabled(True)\\nn\\[\\\"bottomRightColor\\\"].setEnabled(True)\\n\\nn\\[\\\"bakedColors\\\"].setValue(True)\" +STARTLINE}\n addUserKnob {22 bakeFrameRange l \"<font color=violet>Bake FrameRange\" t \"bake a framerange for the cornerpoints\" -STARTLINE T \"import time\\nimport threading\\n\\nn = nuke.thisNode()\\n#Define this node\\n\\nct1 = nuke.toNode(\\\"CurveToolTopLeft\\\")\\nct2 = nuke.toNode(\\\"CurveToolTopRight\\\")\\nct3 = nuke.toNode(\\\"CurveToolBottomLeft\\\")\\nct4 = nuke.toNode(\\\"CurveToolBottomRight\\\")\\nctL = \\[ct1,ct2,ct3,ct4]\\n# Define curveTool nodes\\n\\nbcg = n.knob(\\\"bakeColors\\\")\\n\\ncol_tl = nuke.toNode(\\\"TopLeftColor\\\")\\ncol_tr = nuke.toNode(\\\"TopRightColor\\\")\\ncol_bl = nuke.toNode(\\\"BottomLeftColor\\\")\\ncol_br = nuke.toNode(\\\"BottomRightColor\\\")\\n# Define color constant nodes\\n\\nfirst_frame = int(nuke.Root()\\['first_frame'].getValue())\\nlast_frame = int(nuke.Root()\\['last_frame'].getValue())\\n# Grab first and last frame from root\\n\\np = nuke.Panel(\\\"Execute on FrameRange\\\")\\np.addSingleLineInput('First Frame', first_frame)\\np.addSingleLineInput('Last Frame', last_frame)\\np.addSingleLineInput('Increment', 1)\\nif p.show():\\n    \\n    # Create user input panel\\n    \\n    ff = int(p.value(\\\"First Frame\\\"))\\n    lf = int(p.value(\\\"Last Frame\\\"))\\n    i = int(p.value(\\\"Increment\\\"))\\n    # Define first, last, increment from user input panel\\n    \\n    k = \\\"status\\\"\\n    l = \\\"<b> <font color=red> Is Baked on Frames:\\\" + \\\" \\\" + str(ff) + \\\"-\\\" + str(lf)\\n    # Change status of node\\n    \\n    with n:\\n        \\n        ct1\\[\\\"intensitydata\\\"].clearAnimated()\\n        ct2\\[\\\"intensitydata\\\"].clearAnimated()\\n        ct3\\[\\\"intensitydata\\\"].clearAnimated()\\n        ct4\\[\\\"intensitydata\\\"].clearAnimated()\\n        # Clear any intensitydata from all CurveTool nodes\\n    \\n        def executeCT(first,last,inc):\\n            runMe = True\\n            while runMe == True:\\n                nuke.execute(ct1,first,last,inc)  \\n                nuke.execute(ct2,first,last,inc)\\n                nuke.execute(ct3,first,last,inc)\\n                nuke.execute(ct4,first,last,inc)\\n                stop_event.set()\\n                runMe = False\\n                #print('CurveTools done')\\n                break\\n            # Define CurveTool execution function\\n    \\n    \\n        global stop_event \\n        stop_event = threading.Event()\\n        threading.Thread(target=executeCT, kwargs=dict(first=ff,last=lf,inc=i) ).start() \\n        while not stop_event.is_set():\\n            time.sleep(0.1)\\n        # run CurveTools with threading\\n    \\n        swtl = nuke.toNode(\\\"LiveSwitchTopLeft\\\")\\n        swtr = nuke.toNode(\\\"LiveSwitchTopRight\\\")\\n        swbl = nuke.toNode(\\\"LiveSwitchBottomLeft\\\")\\n        swbr = nuke.toNode(\\\"LiveSwitchBottomRight\\\")\\n        # Define Switchs\\n    \\n        swtl.knob(\\\"which\\\").setValue(1)\\n        swtr.knob(\\\"which\\\").setValue(1)\\n        swbl.knob(\\\"which\\\").setValue(1)\\n        swbr.knob(\\\"which\\\").setValue(1)\\n        # Switch output type to animated constants\\n    \\n        col_tl\\[\\\"value\\\"].copyAnimations(ct1\\[\\\"intensitydata\\\"].animations())\\n        col_tr\\[\\\"value\\\"].copyAnimations(ct2\\[\\\"intensitydata\\\"].animations())\\n        col_bl\\[\\\"value\\\"].copyAnimations(ct3\\[\\\"intensitydata\\\"].animations())\\n        col_br\\[\\\"value\\\"].copyAnimations(ct4\\[\\\"intensitydata\\\"].animations())\\n        # copy curveTool intensity values over to the constant colors\\n    \\n    n\\[k].setValue(l)\\n    # Change Status of Node\\n    \\n    n\\[\\\"topLeftColor\\\"].setEnabled(True)\\n    n\\[\\\"topRightColor\\\"].setEnabled(True)\\n    n\\[\\\"bottomLeftColor\\\"].setEnabled(True)\\n    n\\[\\\"bottomRightColor\\\"].setEnabled(True)\\n    # Unlock Color knobs from property bin\\n    \\n    n\\[\\\"bakedColors\\\"].setValue(True)\"}\n addUserKnob {20 bakedColors l \"Baked Colors:\" n 1}\n bakedColors 0\n addUserKnob {41 topLeftColor l \"Top Left Color\" T TopLeftColor.value}\n addUserKnob {41 topRightColor l \"Top Right Color\" T TopRightColor.value}\n addUserKnob {41 bottomLeftColor l \"Bottom Left Color\" T BottomLeftColor.value}\n addUserKnob {41 bottomRightColor l \"Bottom Right Color\" T BottomRightColor.value}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 size l \"Edge Blur Size\" T Blur1.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge3.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge3.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge3.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge3.fringe}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T GradMagic}\n addUserKnob {26 ver l Version: T v05}\n}\n NoOp {\n  inputs 0\n  name BakeColors\n  xpos -388\n  ypos 8\n  addUserKnob {20 User}\n  addUserKnob {22 bakeCurrentFrame l \"Bake Current Frame\" T \"#Running Curvetool on current frame and baking color\\n\\n#grab current frame\\nf = int(nuke.frame())\\n\\n#execute on top left point color\\n\\ncttl = nuke.toNode(\\\"CurveToolTopLeft\\\")\\ncol_tl = nuke.toNode(\\\"TopLeftColor\\\")\\nswtl = nuke.toNode(\\\"LiveSwitchTopLeft\\\")\\n\\nnuke.execute(cttl, f, f)\\ncol_tl\\[\\\"value\\\"].copyAnimations(cttl\\[\\\"intensitydata\\\"].animations())\\ncol_tl\\[\\\"value\\\"].clearAnimated()\\nswtl\\[\\\"which\\\"].setValue(1)\\n\\n#execute on top right point color\\n\\ncttr = nuke.toNode(\\\"CurveToolTopRight\\\")\\ncol_tr = nuke.toNode(\\\"TopRightColor\\\")\\nswtr = nuke.toNode(\\\"LiveSwitchTopRight\\\")\\n\\nnuke.execute(cttr, f, f)\\ncol_tr\\[\\\"value\\\"].copyAnimations(cttr\\[\\\"intensitydata\\\"].animations())\\ncol_tr\\[\\\"value\\\"].clearAnimated()\\nswtr\\[\\\"which\\\"].setValue(1)\\n\\n#execute on bottom left point color\\n\\nctbl = nuke.toNode(\\\"CurveToolBottomLeft\\\")\\ncol_bl = nuke.toNode(\\\"BottomLeftColor\\\")\\nswbl = nuke.toNode(\\\"LiveSwitchBottomLeft\\\")\\n\\nnuke.execute(ctbl, f, f)\\ncol_bl\\[\\\"value\\\"].copyAnimations(ctbl\\[\\\"intensitydata\\\"].animations())\\ncol_bl\\[\\\"value\\\"].clearAnimated()\\nswbl\\[\\\"which\\\"].setValue(1)\\n\\n#execute on bottom right point color\\n\\nctbr = nuke.toNode(\\\"CurveToolBottomRight\\\")\\ncol_br = nuke.toNode(\\\"BottomRightColor\\\")\\nswbr = nuke.toNode(\\\"LiveSwitchBottomRight\\\")\\n\\nnuke.execute(ctbr, f, f)\\ncol_br\\[\\\"value\\\"].copyAnimations(ctbr\\[\\\"intensitydata\\\"].animations())\\ncol_br\\[\\\"value\\\"].clearAnimated()\\nswbr\\[\\\"which\\\"].setValue(1)\" +STARTLINE}\n  addUserKnob {22 bakeCurrentFrame02 l \"Quick Bake Current Frame\" T \"tls = nuke.toNode(\\\"BlurTopLeft\\\")\\ntlc = nuke.toNode(\\\"TopLeftColor\\\")\\n\\ntlRed = nuke.sample(tls, \\\"red\\\", 1, 1, 1, 1)\\ntlGreen = nuke.sample(tls, \\\"green\\\", 1, 1, 1, 1)\\ntlBlue = nuke.sample(tls, \\\"blue\\\", 1, 1, 1, 1)\\ntlcolor = \\[tlRed,tlGreen,tlBlue,0]\\n\\n#tlc\\[\\\"value\\\"].setValue(tlcolor)\\n\\n\" +STARTLINE}\n  addUserKnob {22 test T \"ptl = nuke.toNode(\\\"PickerTL\\\")\\nktl = ptl.knob(\\\"GenerateColors\\\")\\ncol_tl = nuke.toNode(\\\"TopLeftColor\\\")\\n\\nktl.execute()\\ncolors = ptl.knob(\\\"TLColors\\\")\\ncol_tl\\[\\\"value\\\"].setValue(colors)\" +STARTLINE}\n  addUserKnob {22 makeLive l \"Make Live\" T \"swtl = nuke.toNode(\\\"LiveSwitchTopLeft\\\")\\nswtr = nuke.toNode(\\\"LiveSwitchTopRight\\\")\\nswbl = nuke.toNode(\\\"LiveSwitchBottomLeft\\\")\\nswbr = nuke.toNode(\\\"LiveSwitchBottomRight\\\")\\n\\nswtl\\[\\\"which\\\"].setValue(0)\\nswtr\\[\\\"which\\\"].setValue(0)\\nswbl\\[\\\"which\\\"].setValue(0)\\nswbr\\[\\\"which\\\"].setValue(0)\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name SetPoints\n  xpos -282\n  ypos -54\n  addUserKnob {20 User}\n  addUserKnob {22 setToFormat l \"Set To Format\" T \"#gather nodes\\ngif = nuke.toNode(\\\"getInputFormat\\\")\\ns = nuke.toNode(\\\"Settings\\\")\\nn = nuke.thisNode()\\n\\n#gather format values\\nfx = int(gif.knob(\\\"box\\\").getValue(0))\\nfy = int(gif.knob(\\\"box\\\").getValue(1))\\nfr = int(gif.knob(\\\"box\\\").getValue(2))\\nft = int(gif.knob(\\\"box\\\").getValue(3))\\n\\n#gather settings points knobs\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\natl = n.knob(\\\"atl\\\")\\natr = n.knob(\\\"atr\\\")\\nabl = n.knob(\\\"abl\\\")\\nabr = n.knob(\\\"abr\\\")\\n\\n#set topLeft\\nsettl.clearAnimated()\\nsettl.setValue(fx, 0)\\nsettl.setValue(ft, 1)\\n\\natl.clearAnimated()\\natl.setValue(0,0)\\natl.setValue(0,1)\\n\\n#set topRight\\nsettr.clearAnimated()\\nsettr.setValue(fr, 0)\\nsettr.setValue(ft, 1)\\n\\natr.clearAnimated()\\natr.setValue(0,0)\\natr.setValue(0,1)\\n\\n#set bottomLeft\\nsetbl.clearAnimated()\\nsetbl.setValue(fx, 0)\\nsetbl.setValue(fy, 1)\\n\\nabl.clearAnimated()\\nabl.setValue(0,0)\\nabl.setValue(0,1)\\n\\n#set bottomRight\\nsetbr.clearAnimated()\\nsetbr.setValue(fr, 0)\\nsetbr.setValue(fy, 1)\\n\\nabr.clearAnimated()\\nabr.setValue(0,0)\\nabr.setValue(0,1)\" +STARTLINE}\n  addUserKnob {22 setToInputBbox l \"Set To Input BBox\" -STARTLINE T \"#gather nodes\\ngib = nuke.toNode(\\\"getInputBbox\\\")\\ns = nuke.toNode(\\\"Settings\\\")\\nn = nuke.thisNode()\\n\\n#gather format values\\nfx = int(gib.knob(\\\"box\\\").getValue(0))\\nfy = int(gib.knob(\\\"box\\\").getValue(1))\\nfr = int(gib.knob(\\\"box\\\").getValue(2))\\nft = int(gib.knob(\\\"box\\\").getValue(3))\\n\\n#gather settings points knobs\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\natl = n.knob(\\\"atl\\\")\\natr = n.knob(\\\"atr\\\")\\nabl = n.knob(\\\"abl\\\")\\nabr = n.knob(\\\"abr\\\")\\n\\n#set topLeft\\nsettl.clearAnimated()\\nsettl.setValue(fx, 0)\\nsettl.setValue(ft, 1)\\n\\natl.clearAnimated()\\natl.setValue(0,0)\\natl.setValue(0,1)\\n\\n#set topRight\\nsettr.clearAnimated()\\nsettr.setValue(fr, 0)\\nsettr.setValue(ft, 1)\\n\\natr.clearAnimated()\\natr.setValue(0,0)\\natr.setValue(0,1)\\n\\n#set bottomLeft\\nsetbl.clearAnimated()\\nsetbl.setValue(fx, 0)\\nsetbl.setValue(fy, 1)\\n\\nabl.clearAnimated()\\nabl.setValue(0,0)\\nabl.setValue(0,1)\\n\\n#set bottomRight\\nsetbr.clearAnimated()\\nsetbr.setValue(fr, 0)\\nsetbr.setValue(fy, 1)\\n\\nabr.clearAnimated()\\nabr.setValue(0,0)\\nabr.setValue(0,1)\"}\n  addUserKnob {22 setPointsToDefault l \"Set To Default\" T \"#gather nodes\\n\\nn = nuke.thisNode()\\ns = nuke.toNode(\\\"Settings\\\")\\n\\n#gather settings points knobs\\natl = n.knob(\\\"atl\\\")\\natr = n.knob(\\\"atr\\\")\\nabl = n.knob(\\\"abl\\\")\\nabr = n.knob(\\\"abr\\\")\\n\\nsettl = s.knob(\\\"topLeft\\\")\\nsettr = s.knob(\\\"topRight\\\")\\nsetbl = s.knob(\\\"bottomLeft\\\")\\nsetbr = s.knob(\\\"bottomRight\\\")\\n\\natl.clearAnimated()\\natr.clearAnimated()\\nabl.clearAnimated()\\nabr.clearAnimated()\" +STARTLINE}\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 174\n  ypos 1371\n  number 1\n }\n Invert {\n  name Invert1\n  xpos 174\n  ypos 1464\n }\nset N116e68b0 [stack 0]\npush $N116e68b0\npush 0\n Crop {\n  inputs 0\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatBottomRight2\n  xpos 1175\n  ypos 493\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels4\n  xpos 1175\n  ypos 517\n }\n Add {\n  channels rgb\n  value {0 0 0 0}\n  name BottomRightColor\n  xpos 1175\n  ypos 541\n }\n Input {\n  inputs 0\n  name Input\n  xpos 0\n  ypos -90\n }\n AddChannels {\n  channels rgba\n  name AddChannels5\n  xpos 0\n  ypos -44\n  disable {{\"\\[exists parent.input0]\"}}\n }\n Reformat {\n  name Reformat1\n  xpos 0\n  ypos -20\n  disable {{\"\\[exists parent.input0]\"}}\n }\n Dot {\n  name Dot7\n  note_font_size 31\n  xpos 34\n  ypos 122\n }\nset N12be8f20 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 31\n  xpos 375\n  ypos 122\n }\nset N13d90510 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 31\n  xpos 760\n  ypos 122\n }\nset N13d6f700 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 31\n  xpos 1122\n  ypos 122\n }\n Dot {\n  name Dot2\n  label \"Bottom Right\"\n  note_font_size 31\n  xpos 1122\n  ypos 245\n }\n Crop {\n  box {{PointsOffset.finalPosBR.x-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBR.y-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBR.x+(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBR.y+(parent.Settings.sampleSize/2)}}\n  reformat true\n  intersect true\n  crop false\n  name sampleRegionBottomRight\n  xpos 1088\n  ypos 299\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size {{parent.Settings.sampleSize*10}}\n  name BlurBottomRight\n  label \"\\[value size]\"\n  xpos 1088\n  ypos 323\n }\n Dot {\n  name Dot14\n  note_font_size 31\n  xpos 1122\n  ypos 396\n }\nset N13c54f20 [stack 0]\n NoOp {\n  name PickerBR\n  xpos 1020\n  ypos 446\n  addUserKnob {20 User}\n  addUserKnob {7 searcharea l INVISIBLE +INVISIBLE R 0 30}\n  searcharea {{parent.Settings.sampleSize}}\n  addUserKnob {22 generateColors l GenerateColors T \"area = 1\\nBRs = nuke.thisNode()\\nBRc = nuke.toNode(\\\"BottomRightColor\\\")\\nswbr = nuke.toNode(\\\"LiveSwitchBottomRight\\\")\\nswbr\\[\\\"which\\\"].setValue(0)\\n\\nBR = BRs.knob(\\\"BR\\\").getValue()\\nBRx = BR\\[0]\\nBRy = BR\\[1]\\nBRred = nuke.sample(BRs, \\\"red\\\" , BRx, BRy, area, area)\\nBRgrn = nuke.sample(BRs, \\\"green\\\" , BRx, BRy, area, area)\\nBRblu = nuke.sample(BRs, \\\"blue\\\" , BRx, BRy, area, area)\\nBRcolor = \\[BRred,BRgrn,BRblu,0]\\n\\nBRs\\[\\\"brColor\\\"].setValue(BRcolor)\\nBRc\\[\\\"value\\\"].setValue(BRcolor)\\nswbr\\[\\\"which\\\"].setValue(1)\" +STARTLINE}\n  addUserKnob {12 BR}\n  BR {{searcharea/2} {searcharea/2}}\n  addUserKnob {19 brColor l BRColor}\n  brColor {0.0574003458 0.0481092073 0.04007726908 0}\n  addUserKnob {6 brColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Crop {\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatBottomRight1\n  xpos 1020\n  ypos 470\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Switch {\n  inputs 2\n  name LiveSwitchBottomRight\n  xpos 1088\n  ypos 580\n }\n Expression {\n  expr3 x/width\n  name WidthRamp2\n  xpos 1088\n  ypos 624\n }\n Premult {\n  name Premult2\n  xpos 1088\n  ypos 648\n }\n Crop {\n  inputs 0\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatBottomLeft2\n  xpos 804\n  ypos 498\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels3\n  xpos 804\n  ypos 522\n }\n Add {\n  channels rgb\n  value {0 0 0 0}\n  name BottomLeftColor\n  xpos 804\n  ypos 546\n }\npush $N13d6f700\n Dot {\n  name Dot1\n  label \"Bottom Left\"\n  note_font_size 31\n  xpos 760\n  ypos 243\n }\n Crop {\n  box {{PointsOffset.finalPosBL.x-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBL.y-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBL.x+(parent.Settings.sampleSize/2)} {PointsOffset.finalPosBL.y+(parent.Settings.sampleSize/2)}}\n  reformat true\n  intersect true\n  crop false\n  name sampleRegionBottomLeft\n  xpos 726\n  ypos 298\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size {{parent.Settings.sampleSize*10}}\n  name BlurBottomLeft\n  label \"\\[value size]\"\n  xpos 726\n  ypos 322\n }\n Dot {\n  name Dot13\n  note_font_size 31\n  xpos 760\n  ypos 397\n }\nset N13d6d350 [stack 0]\n NoOp {\n  name PickerBL\n  xpos 664\n  ypos 449\n  addUserKnob {20 User}\n  addUserKnob {7 searcharea l INVISIBLE +INVISIBLE R 0 30}\n  searcharea {{parent.Settings.sampleSize}}\n  addUserKnob {22 generateColors l GenerateColors T \"area = 1\\nBLs = nuke.thisNode()\\nBLc = nuke.toNode(\\\"BottomLeftColor\\\")\\nswbl = nuke.toNode(\\\"LiveSwitchBottomLeft\\\")\\nswbl\\[\\\"which\\\"].setValue(0)\\n\\nBL = BLs.knob(\\\"BL\\\").getValue()\\nBLx = BL\\[0]\\nBLy = BL\\[1]\\nBLred = nuke.sample(BLs, \\\"red\\\" , BLx, BLy, area, area)\\nBLgrn = nuke.sample(BLs, \\\"green\\\" , BLx, BLy, area, area)\\nBLblu = nuke.sample(BLs, \\\"blue\\\" , BLx, BLy, area, area)\\nBLcolor = \\[BLred,BLgrn,BLblu,0]\\n\\nBLs\\[\\\"blColor\\\"].setValue(BLcolor)\\nBLc\\[\\\"value\\\"].setValue(BLcolor)\\nswbl\\[\\\"which\\\"].setValue(1)\" +STARTLINE}\n  addUserKnob {12 BL}\n  BL {{searcharea/2} {searcharea/2}}\n  addUserKnob {19 blColor l BLColor}\n  blColor {0.03392057866 0.02863720059 0.02191788703 0}\n  addUserKnob {6 blColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Crop {\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatBottomLeft1\n  xpos 664\n  ypos 473\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Switch {\n  inputs 2\n  name LiveSwitchBottomLeft\n  xpos 733\n  ypos 601\n }\n Merge2 {\n  inputs 2\n  name MergeCombineBottomLeftBottomRight\n  xpos 733\n  ypos 648\n }\n Expression {\n  expr3 1-y/height\n  name HeightRamp\n  xpos 733\n  ypos 688\n }\n Premult {\n  name Premult3\n  xpos 733\n  ypos 712\n }\n Crop {\n  inputs 0\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatTopRight2\n  xpos 428\n  ypos 483\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 428\n  ypos 507\n }\n Add {\n  channels rgb\n  value {0 0 0 0}\n  name TopRightColor\n  xpos 428\n  ypos 531\n }\npush $N13d90510\n Dot {\n  name Dot6\n  label \"Top Right\"\n  note_font_size 31\n  xpos 375\n  ypos 245\n }\n Crop {\n  box {{PointsOffset.finalPosTR.x-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTR.y-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTR.x+(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTR.y+(parent.Settings.sampleSize/2)}}\n  reformat true\n  intersect true\n  crop false\n  name sampleRegionTopRight\n  xpos 341\n  ypos 297\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size {{parent.Settings.sampleSize*10}}\n  name BlurTopRight\n  label \"\\[value size]\"\n  xpos 341\n  ypos 321\n }\n Dot {\n  name Dot12\n  note_font_size 31\n  xpos 375\n  ypos 397\n }\nset N2e301de0 [stack 0]\n NoOp {\n  name PickerTR\n  xpos 283\n  ypos 468\n  addUserKnob {20 User}\n  addUserKnob {7 searcharea l INVISIBLE +INVISIBLE R 0 30}\n  searcharea {{parent.Settings.sampleSize}}\n  addUserKnob {22 generateColors l GenerateColors T \"area = 1\\ntrs = nuke.thisNode()\\ntrc = nuke.toNode(\\\"TopRightColor\\\")\\nswtr = nuke.toNode(\\\"LiveSwitchTopRight\\\")\\nswtr\\[\\\"which\\\"].setValue(0)\\n\\nTR = trs.knob(\\\"TR\\\").getValue()\\nTRx = TR\\[0]\\nTRy = TR\\[1]\\nTRred = nuke.sample(trs, \\\"red\\\" , TRx, TRy, area, area)\\nTRgrn = nuke.sample(trs, \\\"green\\\" , TRx, TRy, area, area)\\nTRblu = nuke.sample(trs, \\\"blue\\\" , TRx, TRy, area, area)\\nTRcolor = \\[TRred,TRgrn,TRblu,0]\\n\\ntrs\\[\\\"trColor\\\"].setValue(TRcolor)\\ntrc\\[\\\"value\\\"].setValue(TRcolor)\\nswtr\\[\\\"which\\\"].setValue(1)\" +STARTLINE}\n  addUserKnob {12 TR}\n  TR {{searcharea/2} {searcharea/2}}\n  addUserKnob {19 trColor l TRColor}\n  trColor {0.03820500523 0.03160730004 0.02090981975 0}\n  addUserKnob {6 trColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Crop {\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatTopRight1\n  xpos 283\n  ypos 492\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Switch {\n  inputs 2\n  name LiveSwitchTopRight\n  xpos 338\n  ypos 587\n }\n Expression {\n  expr3 x/width\n  name WidthRamp1\n  xpos 338\n  ypos 633\n }\n Premult {\n  name Premult1\n  xpos 338\n  ypos 657\n }\n Crop {\n  inputs 0\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatTopLeft2\n  xpos 79\n  ypos 476\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 79\n  ypos 500\n }\n Add {\n  channels rgb\n  value {0 0 0 0}\n  name TopLeftColor\n  xpos 79\n  ypos 524\n }\npush $N12be8f20\n Dot {\n  name Dot5\n  label \"Top Left\"\n  note_font_size 31\n  xpos 34\n  ypos 243\n }\n Crop {\n  box {{PointsOffset.finalPosTL.x-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTL.y-(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTL.x+(parent.Settings.sampleSize/2)} {PointsOffset.finalPosTL.y+(parent.Settings.sampleSize/2)}}\n  reformat true\n  crop false\n  name sampleRegionTopLeft\n  xpos 0\n  ypos 288\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size {{parent.Settings.sampleSize*10}}\n  name BlurTopLeft\n  label \"\\[value size]\"\n  xpos 0\n  ypos 312\n }\n Dot {\n  name Dot10\n  note_font_size 31\n  xpos 34\n  ypos 396\n }\nset N13d49000 [stack 0]\n NoOp {\n  name PickerTL\n  xpos -73\n  ypos 467\n  addUserKnob {20 User}\n  addUserKnob {7 searcharea l INVISIBLE +INVISIBLE R 0 30}\n  searcharea {{parent.Settings.sampleSize}}\n  addUserKnob {22 generateColors l GenerateColors T \"area = 1\\ntls = nuke.thisNode()\\ntlc = nuke.toNode(\\\"TopLeftColor\\\")\\nswtl = nuke.toNode(\\\"LiveSwitchTopLeft\\\")\\nswtl\\[\\\"which\\\"].setValue(0)\\n\\nTL = tls.knob(\\\"TL\\\").getValue()\\nTLx = TL\\[0]\\nTLy = TL\\[1]\\nTLred = nuke.sample(tls, \\\"red\\\" , TLx, TLy, area, area)\\nTLgrn = nuke.sample(tls, \\\"green\\\" , TLx, TLy, area, area)\\nTLblu = nuke.sample(tls, \\\"blue\\\" , TLx, TLy, area, area)\\nTLcolor = \\[TLred,TLgrn,TLblu,0]\\n\\ntls\\[\\\"tlColor\\\"].setValue(TLcolor)\\ntlc\\[\\\"value\\\"].setValue(TLcolor)\\nswtl\\[\\\"which\\\"].setValue(1)\" +STARTLINE}\n  addUserKnob {12 TL}\n  TL {{searcharea/2} {searcharea/2}}\n  addUserKnob {19 tlColor l TLColor}\n  tlColor {0.04360837862 0.03884135559 0.03016782366 0}\n  addUserKnob {6 tlColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Crop {\n  box {{parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box} {parent.getInputFormat.box}}\n  reformat true\n  crop false\n  name CropRestoreFormatTopLeft1\n  xpos -73\n  ypos 491\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Switch {\n  inputs 2\n  name LiveSwitchTopLeft\n  xpos -5\n  ypos 591\n }\n Merge2 {\n  inputs 2\n  name MergeCombineTopLeftTopRight\n  xpos -5\n  ypos 657\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -5\n  ypos 712\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos -5\n  ypos 1065\n }\n CornerPin2D {\n  to1 {{parent.PointsOffset.finalPosBL} {parent.PointsOffset.finalPosBL}}\n  to2 {{parent.PointsOffset.finalPosBR} {parent.PointsOffset.finalPosBR}}\n  to3 {{parent.PointsOffset.finalPosTR} {parent.PointsOffset.finalPosTR}}\n  to4 {{parent.PointsOffset.finalPosTL} {parent.PointsOffset.finalPosTL}}\n  invert false\n  from1 {0 0}\n  from2 {{parent.getInputFormat.box.r} 0}\n  from3 {{parent.getInputFormat.box.r} {parent.getInputFormat.box.t}}\n  from4 {0 {parent.getInputFormat.box.t}}\n  name CornerPin\n  xpos -5\n  ypos 1111\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T cornerPinZero()}\n  addUserKnob {22 \"set reference frame_1\" l \"set reference frame\" -STARTLINE T cornerPinZero()}\n }\n Blur {\n  channels rgba\n  name Blur1\n  label \"\\[value size]\"\n  xpos -5\n  ypos 1195\n }\n Multiply {\n  channels rgba\n  value {{parent.mix}}\n  name Multiply1\n  xpos -5\n  ypos 1364\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox intersection\n  name Merge3\n  xpos -5\n  ypos 1468\n  disable {{\"!\\[exists parent.input1]\"}}\n }\nset N2e0038f0 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  bbox intersection\n  name Merge4\n  xpos 174\n  ypos 1519\n }\npush $N2e0038f0\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -5\n  ypos 1519\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot11\n  note_font_size 31\n  xpos 29\n  ypos 1641\n }\nset N2e1211c0 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 31\n  xpos 29\n  ypos 1730\n }\npush $N2e1211c0\npush $N12be8f20\n Dot {\n  name Dot9\n  note_font_size 31\n  xpos -561\n  ypos 122\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -595\n  ypos 1638\n }\n Switch {\n  inputs 2\n  which {{parent.output1}}\n  name SwitchOutput\n  xpos -595\n  ypos 1727\n }\n Output {\n  name Output1\n  xpos -595\n  ypos 2064\n }\npush $N13d6d350\n CurveTool {\n  avgframes 1\n  ROI {0 0 1 1}\n  autocropdata {512 389 1536 1167}\n  intensitydata {0 0 0 0}\n  name CurveToolBottomLeft\n  xpos 806\n  ypos 441\n }\npush $N13c54f20\n CurveTool {\n  avgframes 1\n  ROI {0 0 1 1}\n  autocropdata {512 389 1536 1167}\n  intensitydata {0 0 0 0}\n  name CurveToolBottomRight\n  xpos 1175\n  ypos 441\n }\npush $N13d49000\n CurveTool {\n  avgframes 1\n  ROI {0 0 1 1}\n  autocropdata {512 389 1536 1167}\n  intensitydata {0 0 0 0}\n  name CurveToolTopLeft\n  xpos 83\n  ypos 419\n }\n NoOp {\n  inputs 0\n  name Settings\n  xpos -178\n  ypos -13\n  addUserKnob {20 User}\n  addUserKnob {3 sampleSize l \"Sample Size\"}\n  sampleSize 4\n  addUserKnob {26 \"\"}\n  addUserKnob {12 topLeft}\n  topLeft {100 400}\n  addUserKnob {12 topRight}\n  topRight {400 400}\n  addUserKnob {12 bottomLeft}\n  bottomLeft {100 100}\n  addUserKnob {12 bottomRight}\n  bottomRight {400 100}\n }\n NoOp {\n  inputs 0\n  name PointsOffset\n  xpos -445\n  ypos -70\n  addUserKnob {20 PointsOffset}\n  addUserKnob {12 startPosTL}\n  startPosTL {{parent.Settings.topLeft} {parent.Settings.topLeft}}\n  addUserKnob {12 frameHoldPosTL}\n  frameHoldPosTL {100 400}\n  addUserKnob {12 amountMovedTL}\n  amountMovedTL {{frameHoldPosTL-adjustPosTL} {frameHoldPosTL-adjustPosTL+10}}\n  addUserKnob {12 finalPosTL}\n  finalPosTL {{startPosTL-amountMovedTL} {startPosTL-amountMovedTL}}\n  addUserKnob {26 \"\"}\n  addUserKnob {12 startPosTR}\n  startPosTR {{parent.Settings.topRight} {parent.Settings.topRight}}\n  addUserKnob {12 frameHoldPosTR}\n  frameHoldPosTR {400 400}\n  addUserKnob {12 amountMovedTR}\n  amountMovedTR {{frameHoldPosTR-adjustPosTR} {frameHoldPosTR-adjustPosTR+10}}\n  addUserKnob {12 finalPosTR}\n  finalPosTR {{startPosTR-amountMovedTR} {startPosTR-amountMovedTR}}\n  addUserKnob {26 \"\"}\n  addUserKnob {12 startPosBL}\n  startPosBL {{parent.Settings.bottomLeft} {parent.Settings.bottomLeft}}\n  addUserKnob {12 frameHoldPosBL}\n  frameHoldPosBL {100 100}\n  addUserKnob {12 amountMovedBL}\n  amountMovedBL {{frameHoldPosBL-adjustPosBL} {frameHoldPosBL-adjustPosBL+10}}\n  addUserKnob {12 finalPosBL}\n  finalPosBL {{startPosBL-amountMovedBL} {startPosBL-amountMovedBL}}\n  addUserKnob {26 \"\"}\n  addUserKnob {12 startPosBR}\n  startPosBR {{parent.Settings.bottomRight} {parent.Settings.bottomRight}}\n  addUserKnob {12 frameHoldPosBR}\n  frameHoldPosBR {400 100}\n  addUserKnob {12 amountMovedBR}\n  amountMovedBR {{frameHoldPosBR-adjustPosBR} {frameHoldPosBR-adjustPosBR+10}}\n  addUserKnob {12 finalPosBR}\n  finalPosBR {{startPosBR-amountMovedBR} {startPosBR-amountMovedBR}}\n }\npush $N2e301de0\n CurveTool {\n  avgframes 1\n  ROI {0 0 1 1}\n  autocropdata {512 389 1536 1167}\n  intensitydata {0 0 0 0}\n  name CurveToolTopRight\n  xpos 429\n  ypos 423\n }\n Crop {\n  inputs 0\n  box {0 0 {\"\\[exists parent.input0] ? parent.input.width : \\[value root.format.w]\"} {\"\\[exists parent.input0] ? parent.input.height : \\[value root.format.h]\"}}\n  name getInputFormat\n  xpos 230\n  ypos -12\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Crop {\n  inputs 0\n  box {{\"\\[exists parent.input0] == 1 ? parent.input.bbox.x : 0\"} {\"\\[exists parent.input0] == 1 ? parent.input.bbox.y : 0\"} {\"\\[exists parent.input0] == 1 ? parent.input.bbox.r : 0\"} {\"\\[exists parent.input0] == 1 ? parent.input.bbox.t : 0\"}}\n  name getInputBbox\n  selected true\n  xpos 118\n  ypos -13\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GradeLayerPass.gizmo",
    "content": "Group {\n name GradeLayerPass\n help \"Select a lighting pass layer to minus from CG beauty input, do your color corrections, and plus the pass, with corrections.\\n\\nalso injects and replaces layer back into the stream.  If you shuffle it out later, will include these color corrections.\"\n tile_color 0x5c7fc0ff\n label \"(\\[value channel])\"\n note_font \"Arial Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 GradeLayerPass}\n addUserKnob {4 output2 l output M {\"Final Output\" \"Channel Changed\" \"Channel Original\" \"\"}}\n addUserKnob {41 channel l channels T Shuffle64.in}\n addUserKnob {26 \"\"}\n addUserKnob {41 red l Exposure T Exposure16.red}\n addUserKnob {41 multiply T Grade159.multiply}\n addUserKnob {41 gamma T Grade159.gamma}\n addUserKnob {41 saturation T Saturation1.saturation}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: t \"Select a lighting pass layer to minus from CG beauty input, do your color corrections, and plus the pass, with corrections.\\n\\nalso injects and replaces layer back into the stream.  If you shuffle it out later, will include these color corrections.\" T GradeLayerPass}\n addUserKnob {26 ver l Version T v03}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 381\n  ypos -676\n }\n Dot {\n  name Dot374\n  note_font_size 41\n  xpos 415\n  ypos -526\n }\nset N33233460 [stack 0]\n Shuffle {\n  in rgb\n  name Shuffle64\n  label \"\\[value in]\"\n  xpos 662\n  ypos -533\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove10\n  xpos 662\n  ypos -501\n }\n Dot {\n  name Dot375\n  note_font_size 41\n  xpos 696\n  ypos -436\n }\nset N331f5730 [stack 0]\n Dot {\n  name Dot380\n  note_font_size 41\n  xpos 806\n  ypos -436\n }\n Dot {\n  name Dot381\n  note_font_size 41\n  xpos 806\n  ypos -127\n }\n Dot {\n  name Dot382\n  note_font_size 41\n  xpos 497\n  ypos -127\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 896\n  ypos -687\n  number 1\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 930\n  ypos -338\n }\npush $N331f5730\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 528\n  ypos -436\n }\nset N3341c8e0 [stack 0]\n EXPTool {\n  mode Stops\n  green {{red x1001 -2.6}}\n  blue {{red x1001 -2.6}}\n  name Exposure16\n  xpos 494\n  ypos -391\n }\n Grade {\n  name Grade159\n  xpos 494\n  ypos -367\n }\n Saturation {\n  name Saturation1\n  xpos 494\n  ypos -341\n }\npush $N331f5730\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  mix {{parent.mix}}\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  selected true\n  xpos 662\n  ypos -341\n }\n Dot {\n  name Dot377\n  note_font_size 41\n  xpos 696\n  ypos -276\n }\nset N30ce7670 [stack 0]\n Shuffle {\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out2 {{{parent.Shuffle64.in}}}\n  name Shuffle72\n  label \"\\[value in]\"\n  xpos 662\n  ypos -232\n }\n Dot {\n  name Dot376\n  note_font_size 41\n  xpos 696\n  ypos -178\n }\nset N3343b490 [stack 0]\n Dot {\n  name Dot379\n  note_font_size 41\n  xpos 696\n  ypos -89\n }\npush $N3343b490\npush $N30ce7670\npush $N3341c8e0\npush $N33233460\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge152\n  xpos 381\n  ypos -439\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge153\n  xpos 381\n  ypos -279\n }\n ShuffleCopy {\n  inputs 2\n  in2 none\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out none\n  out2 {{{parent.Shuffle64.in}}}\n  name ShuffleCopy1\n  xpos 381\n  ypos -181\n }\n Switch {\n  inputs 3\n  which {{parent.output2}}\n  name Switch7\n  xpos 381\n  ypos -93\n }\n Output {\n  name Output1\n  xpos 381\n  ypos 14\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Grain_Advanced.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name GrainAdvanced\n help \"Adds synthetic grain. \\n\\nThe defaults are setup to simulate an HD Alexa plate's grain.\\n\\nYou can adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue separately.\"\n tile_color 0x323232ff\n note_font_color 0xb80045ff\n selected true\n addUserKnob {20 grain_tab l Grain}\n addUserKnob {3 seed t \"Change this value to make different instances of this operator produce different noise\"}\n seed 134\n addUserKnob {26 \"\" l \"@b;Size\"}\n addUserKnob {14 red_size l red R 0 100}\n red_size 0.4\n addUserKnob {14 green_size l green R 0 100}\n green_size 0.6\n addUserKnob {14 blue_size l blue R 0 100}\n blue_size 1.6\n addUserKnob {7 irregularity}\n irregularity 0.6\n addUserKnob {26 Intensity l \"@b;Intensity Bright\"}\n addUserKnob {7 red_m l red t \"Amount of grain to add to a white pixel\"}\n red_m 0.15\n addUserKnob {7 green_m l green}\n green_m 0.15\n addUserKnob {7 blue_m l blue}\n blue_m 0.2\n addUserKnob {26 Darks l \"@b;Intensity Darks\"}\n addUserKnob {7 red_i l red R 0 0.2}\n red_i 0.025\n addUserKnob {7 green_i l green R 0 0.2}\n green_i 0.01\n addUserKnob {7 blue_i l blue R 0 0.2}\n blue_i 0.03\n addUserKnob {26 Softness l \"@b;Softness\"}\n addUserKnob {7 red_soft l red R 0 2}\n red_soft 1.3\n addUserKnob {7 green_soft l green R 0 2}\n green_soft 1.1\n addUserKnob {7 blue_soft l blue R 0 2}\n blue_soft 1.3\n addUserKnob {26 Globals l \"@b;Global Controls\"}\n addUserKnob {7 saturation l \"Grain Saturation\" t \"Control how saturated the grain appears\"}\n saturation 0.85\n addUserKnob {7 aspect_ratio l \"Aspect Ratio\" t \"Edit the aspect ratio of the grain to match anamorphic plates.\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {4 ar_filter l \" \" t \"Set the filter on the aspect ratio transform\" -STARTLINE M {Impulse Cubic \"\"}}\n ar_filter Cubic\n addUserKnob {6 apply_alpha l \"Apply only through alpha\" +STARTLINE}\n addUserKnob {6 invert_alpha l \"Invert alpha\" -STARTLINE}\n addUserKnob {6 invert_mask l \"Invert mask\" -STARTLINE}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nGrain_Advanced\\nVersion 1.1\\n2017\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.1 - 2017 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Input {\n  inputs 0\n  name mask\n  xpos 368\n  ypos 675\n  number 1\n }\n Input {\n  inputs 0\n  name img\n  xpos 34\n  ypos -150\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 68\n  ypos -58\n }\nset Na44a0240 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0xcccccc00\n  xpos -75\n  ypos -58\n }\nset Na44a3d70 [stack 0]\n Dot {\n  name Dot6\n  tile_color 0xcccccc00\n  xpos -146\n  ypos -58\n }\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  xpos -146\n  ypos 679\n }\npush $Na44a3d70\n Shuffle {\n  alpha white\n  name Shuffle1\n  xpos -109\n  ypos 86\n  disable {{parent.apply_alpha}}\n }\n Dot {\n  name Dot4\n  tile_color 0x9e3c6300\n  xpos -76\n  ypos 557\n }\npush $Na44a0240\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 164\n  ypos -58\n }\nset Na44c1190 [stack 0]\n Noise {\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  cliptype none\n  replace true\n  size {{parent.red_size.w} {parent.red_size.h}}\n  zoffset {{frame+seed+(irregularity/2)}}\n  octaves 2\n  gamma 1\n  xrotate {{irregularity*45}}\n  yrotate {{irregularity*45}}\n  name red\n  xpos 252\n  ypos -62\n }\n Noise {\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  cliptype none\n  replace true\n  size {{parent.green_size.w} {parent.green_size.h}}\n  zoffset {{frame+6+seed+(irregularity/2)}}\n  octaves 2\n  gamma 1\n  xrotate {{irregularity*45}}\n  yrotate {{irregularity*45}}\n  name green\n  xpos 252\n  ypos -19\n }\n Noise {\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  cliptype none\n  replace true\n  size {{parent.blue_size.w} {parent.blue_size.h}}\n  zoffset {{frame+3*seed+(irregularity/2)}}\n  octaves 2\n  gamma 1\n  xrotate {{irregularity*45}}\n  yrotate {{irregularity*45}}\n  name blue\n  xpos 252\n  ypos 20\n }\n Transform {\n  scale {{parent.aspect_ratio>1?parent.aspect_ratio:1 x3 0} {parent.aspect_ratio<1?1/parent.aspect_ratio:1 x3 0}}\n  filter {{parent.ar_filter}}\n  shutteroffset centred\n  name Scale_Ratio\n  xpos 252\n  ypos 62\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{parent.red_soft}}\n  name Blur1\n  label \"size \\[value size]\"\n  xpos 252\n  ypos 122\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{parent.green_soft}}\n  name Blur2\n  label \"size \\[value size]\"\n  xpos 252\n  ypos 173\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{parent.blue_soft}}\n  name Blur3\n  label \"size \\[value size]\"\n  xpos 252\n  ypos 223\n }\n Grade {\n  multiply 2\n  add -1\n  black_clamp false\n  name Grade1\n  xpos 252\n  ypos 295\n }\npush $Na44c1190\n Grade {\n  black {{parent.red_i} {parent.green_i} {parent.blue_i} {curve}}\n  white {{parent.red_m} {parent.green_m} {parent.blue_m} {curve}}\n  name Grade4\n  xpos 130\n  ypos 422\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge3\n  xpos 252\n  ypos 422\n }\n Saturation {\n  saturation {{parent.saturation}}\n  name Saturation1\n  xpos 252\n  ypos 465\n }\n Dot {\n  name Dot3\n  tile_color 0x7aa9ff00\n  xpos 286\n  ypos 557\n }\npush $Na44a0240\n Merge2 {\n  inputs 2+1\n  operation plus\n  bbox B\n  output rgb\n  invert_mask {{invert_alpha}}\n  mix {{parent.mix}}\n  name Merge4\n  xpos 34\n  ypos 553\n }\n Keymix {\n  inputs 3\n  invertMask {{!invert_mask}}\n  name Keymix1\n  xpos 34\n  ypos 669\n  disable {{\"!\\[exists parent.input1] \"}}\n }\n Output {\n  name Output1\n  xpos 34\n  ypos 758\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GuidedBlur.gizmo",
    "content": "Group {\n inputs 2\n name GuidedBlur\n help \"Description:\\n\\nThe guided filter is an edge-preserving blur,\\nuseful to add details to the edges of a roto/matte\\nusing a second image as a guide. \\n\\nHow to use:\\n\\nConnect the alpha to the 'matte' input\\nand the 'guide' image to the 'img' input.\\n\\nControl the amount of detail using\\nthe 'edge detail' slider.\\n\\n---\\n\\nThe filter is an implementation of the\\n 'Guided Image Filtering', by Kaiming He. \\nMore details at http://kaiminghe.com/eccv10/\\n\"\n tile_color 0xcc804eff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 GuidedBlur}\n addUserKnob {6 replaceRGB l \"Replace RGB with img\" +STARTLINE}\n addUserKnob {41 blur_size l \"blur size\" T Blur1.size}\n addUserKnob {41 tolerance l \"edge detail\" t \"Control the amount of detail that will be preserved. \\n\\nA value close to 0 makes the filter behave like a regular blur. \\n\\nValues close to 6 or 7 can introduce artifacts, identifying grain \\\"as edges\\\". \\n\\nRecommended values are between 2.5 and 4.\" T Constant_eps.multiplier}\n addUserKnob {41 filter T Blur1.filter}\n addUserKnob {41 quality l \"\" -STARTLINE T Blur1.quality}\n addUserKnob {26 \"\"}\n addUserKnob {41 amount l \"sharpen amount\" T Sharpen1.amount}\n addUserKnob {41 size l \"sharpen size\" T Sharpen1.size}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge21.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge21.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge21.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge21.fringe}\n addUserKnob {41 mix T Merge21.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 versionInfo l \"\" +STARTLINE T \"\\nCreated by Rafael Silva\\nwww.rafael.ai\\nrafael@rafael.ai\\n\\nVersion 1.3\\nLast Updated: August 16th, 2020\\n\\nUpdated by Nikolai Wüstemann 2021\\n\\nToronto, Canada\\n\\n---\\n\\nHelp and more information:\\nwww.rafael.ai/guided_blur\"}\n addUserKnob {26 \"\"}\n}\n Input {\n  inputs 0\n  name matte\n  label p\n  xpos 2050\n  ypos 95\n }\nset N7bf79600 [stack 0]\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 1737\n  ypos 3701\n }\nset N76b77900 [stack 0]\n Blur {\n  size 10\n  filter box\n  name Blur1\n  xpos 289\n  ypos 3691\n }\n set C7bf78100 [stack 0]\n Input {\n  inputs 0\n  name Inputmask\n  xpos 644\n  ypos 3893\n  number 2\n }\n Input {\n  inputs 0\n  name img\n  label i\n  xpos -40\n  ypos 5\n  number 1\n }\n Sharpen {\n  amount 0\n  name Sharpen1\n  xpos -40\n  ypos 158\n }\n Clamp {\n  maximum 1000\n  name Clamp1\n  xpos -40\n  ypos 194\n }\n Dot {\n  name Dot16\n  xpos -6\n  ypos 330\n }\nset N78f94f00 [stack 0]\n Dot {\n  name Dot4\n  xpos 544\n  ypos 498\n }\nset N78f94800 [stack 0]\n Dot {\n  name Dot6\n  xpos 654\n  ypos 498\n }\nset N78f94100 [stack 0]\n Dot {\n  name Dot7\n  xpos 874\n  ypos 498\n }\nset N7bf7b900 [stack 0]\n Dot {\n  name Dot8\n  xpos 984\n  ypos 498\n }\nset N7bf7b200 [stack 0]\n Dot {\n  name Dot15\n  xpos 2194\n  ypos 498\n }\nset N7bf7ab00 [stack 0]\n Dot {\n  name Dot3\n  xpos 2744\n  ypos 498\n }\n NoOp {\n  name I1\n  xpos 2710\n  ypos 1695\n }\npush $N7bf79600\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle5\n  xpos 2050\n  ypos 543\n }\nset N7bf78f00 [stack 0]\npush $N7bf7ab00\n Merge {\n  inputs 2\n  operation mult\n  name Merge5\n  xpos 2160\n  ypos 591\n }\nclone $C7bf78100 {\n  xpos 2160\n  ypos 635\n  selected false\n }\n NoOp {\n  name mean_Ip\n  xpos 2160\n  ypos 711\n }\npush $N78f94800\nclone $C7bf78100 {\n  xpos 510\n  ypos 659\n  selected false\n }\n NoOp {\n  name mean_I\n  xpos 510\n  ypos 735\n }\n Dot {\n  name Dot9\n  xpos 544\n  ypos 786\n }\nset N78956400 [stack 0]\n Dot {\n  name Dot13\n  xpos 874\n  ypos 810\n }\nset N78955d00 [stack 0]\n Dot {\n  name Dot14\n  xpos 1424\n  ypos 834\n }\nset N78955600 [stack 0]\npush $N7bf78f00\nclone $C7bf78100 {\n  xpos 2050\n  ypos 635\n  selected false\n }\n NoOp {\n  name mean_p\n  xpos 2050\n  ypos 687\n }\nset N78954800 [stack 0]\n Merge {\n  inputs 2\n  operation mult\n  name Merge8\n  xpos 1940\n  ypos 951\n }\n Merge {\n  inputs 2\n  operation minus\n  name Merge9\n  xpos 1940\n  ypos 1023\n }\n NoOp {\n  name cov_Ip\n  xpos 1940\n  ypos 1095\n }\nset N786d3200 [stack 0]\n Constant {\n  inputs 0\n  channels rgb\n  color {{\"1/pow(10, multiplier)\"}}\n  name Constant_eps\n  xpos 400\n  ypos 1095\n  addUserKnob {20 User}\n  addUserKnob {7 multiplier R 1 6}\n  multiplier 5\n }\nset N786d2b00 [stack 0]\npush $N78f94100\npush $N7bf7b900\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge18\n  label I*I\n  xpos 730\n  ypos 611\n }\nclone $C7bf78100 {\n  xpos 730\n  ypos 683\n  selected false\n }\nset N786d1600 [stack 0]\n Dot {\n  name Dot5\n  xpos 2634\n  ypos 834\n }\n NoOp {\n  name mean_II\n  xpos 2600\n  ypos 1023\n }\npush $N78955600\n Dot {\n  name Dot1\n  xpos 2524\n  ypos 882\n }\nset N786d0100 [stack 0]\npush $N786d0100\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge4\n  label \"mean I * mean I\"\n  xpos 2490\n  ypos 1019\n }\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge2\n  xpos 2490\n  ypos 1095\n }\n NoOp {\n  name var_I\n  xpos 2490\n  ypos 1167\n }\n Merge {\n  inputs 2\n  operation plus\n  bbox B\n  name Merge13\n  xpos 2490\n  ypos 1287\n }\n Merge {\n  inputs 2\n  operation divide\n  bbox B\n  name Merge14\n  xpos 2490\n  ypos 1407\n }\n NoOp {\n  name a_mono\n  label a\n  xpos 2490\n  ypos 1475\n }\nset N6eb99600 [stack 0]\nclone $C7bf78100 {\n  xpos 2600\n  ypos 1691\n  selected false\n }\n Merge {\n  inputs 2\n  operation mult\n  bbox B\n  name Merge17\n  xpos 2600\n  ypos 1815\n }\npush $N78954800\n Dot {\n  name Dot19\n  xpos 2084\n  ypos 1410\n }\nset N6eb98100 [stack 0]\npush $N78955600\npush $N6eb99600\n Merge {\n  inputs 2\n  operation mult\n  bbox B\n  name Merge15\n  xpos 2490\n  ypos 1551\n }\n Merge {\n  inputs 2\n  operation minus\n  bbox B\n  name Merge7\n  xpos 2490\n  ypos 1671\n }\n NoOp {\n  name b_mono\n  xpos 2490\n  ypos 1743\n }\nclone $C7bf78100 {\n  xpos 2490\n  ypos 1811\n  selected false\n }\n NoOp {\n  name mean_b_mono_\n  xpos 2490\n  ypos 1887\n }\n Merge {\n  inputs 2\n  operation plus\n  bbox B\n  name Merge16\n  xpos 2490\n  ypos 1959\n }\n Dot {\n  name Dot18\n  xpos 2524\n  ypos 2922\n }\npush $N6eb98100\n Dot {\n  name Dot10\n  xpos 1314\n  ypos 2346\n }\n Dot {\n  name Dot2\n  xpos 1314\n  ypos 2562\n }\npush $N786d2b00\npush $N786d1600\npush $N78956400\n Expression {\n  expr0 r*r\n  expr1 g*g\n  expr2 b*b\n  name Expression3\n  label \"I*I (rr, gg, bb)\"\n  xpos 510\n  ypos 995\n }\n Merge {\n  inputs 2\n  operation minus\n  name Merge11\n  xpos 730\n  ypos 1119\n }\n Merge {\n  inputs 2\n  operation plus\n  bbox B\n  name Merge12\n  xpos 730\n  ypos 1215\n }\n NoOp {\n  name I___\n  label \"rr, gg, bb\"\n  xpos 730\n  ypos 1283\n }\nset N4824e400 [stack 0]\npush $N7bf7b200\n Expression {\n  expr0 r*g\n  expr1 r*b\n  expr2 g*b\n  name Expression2\n  label \"rg, rb, gb\"\n  xpos 950\n  ypos 611\n }\nclone $C7bf78100 {\n  xpos 950\n  ypos 683\n  selected false\n }\npush $N78955d00\n Expression {\n  expr0 r*g\n  expr1 r*b\n  expr2 g*b\n  name Expression4\n  label \"rg, rb, gb\"\n  xpos 840\n  ypos 1019\n }\n Merge {\n  inputs 2\n  operation minus\n  name Merge10\n  xpos 950\n  ypos 1095\n }\n NoOp {\n  name I____\n  label \"rg, rb, gb\"\n  xpos 950\n  ypos 1283\n }\nset N4824c100 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Ar*Ab-Bg*Bg\n  expr1 Bg*Br-Ar*Bb\n  expr2 Ar*Ag-Br*Br\n  name MergeExpression2\n  label \"invgg, invgb, invbb\"\n  xpos 730\n  ypos 1691\n }\npush $N4824e400\npush $N4824c100\n MergeExpression {\n  inputs 2\n  expr0 Ag*Ab-Bb*Bb\n  expr1 Bb*Bg-Br*Ab\n  expr2 Br*Bb-Ag*Bg\n  name MergeExpression1\n  label \"invrr, invrg, invrb\"\n  xpos 510\n  ypos 1403\n }\nset N3437b200 [stack 0]\npush $N4824c100\n MergeExpression {\n  inputs 2\n  expr0 Ab*Bg\n  expr1 0\n  expr2 0\n  name MergeExpression5\n  label invrb*I_rb\n  xpos 1170\n  ypos 1475\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle8\n  xpos 1170\n  ypos 1551\n }\npush 0\npush $N3437b200\npush $N4824e400\n MergeExpression {\n  inputs 2\n  expr0 Ar*Br\n  expr1 0\n  expr2 0\n  name MergeExpression3\n  label invrr*I_rr\n  xpos 620\n  ypos 1475\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle2\n  xpos 620\n  ypos 1527\n }\npush $N3437b200\npush $N4824c100\n MergeExpression {\n  inputs 2\n  expr0 Ag*Br\n  expr1 0\n  expr2 0\n  name MergeExpression4\n  label invrg*I_rg\n  xpos 950\n  ypos 1499\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  xpos 950\n  ypos 1551\n }\n Merge2 {\n  inputs 3+1\n  operation plus\n  name Merge1\n  label covDet\n  xpos 950\n  ypos 1691\n }\nset N34378100 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Ar/Br\n  expr1 Ag/Bg\n  expr2 Ab/Bb\n  expr3 0\n  name MergeExpression7\n  label \"invgg, invgb, invbb\"\n  xpos 730\n  ypos 1883\n }\nset N5b47f900 [stack 0]\npush $N3437b200\npush $N34378100\n MergeExpression {\n  inputs 2\n  expr0 Ar/Br\n  expr1 Ag/Bg\n  expr2 Ab/Bb\n  expr3 0\n  name MergeExpression6\n  label \"invrr, invrg, invrb\"\n  xpos 510\n  ypos 1883\n }\nset N5b47f200 [stack 0]\n ShuffleCopy {\n  inputs 2\n  red blue2\n  green green\n  blue blue\n  alpha black\n  name ShuffleCopy1\n  label \"invrb, invgb, invbb\"\n  xpos 840\n  ypos 2099\n }\npush $N786d3200\n NoOp {\n  name cov_Ip1\n  xpos 950\n  ypos 1887\n }\n Dot {\n  name Dot17\n  xpos 984\n  ypos 1986\n }\nset N5b47dd00 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Ar*Bb\n  expr1 Ag*Bb\n  expr2 Ab*Bb\n  name MergeExpression10\n  xpos 840\n  ypos 2175\n }\npush 0\npush $N5b47f200\npush $N5b47dd00\n MergeExpression {\n  inputs 2\n  expr0 Ar*Br\n  expr1 Ag*Br\n  expr2 Ab*Br\n  name MergeExpression8\n  xpos 620\n  ypos 2175\n }\npush $N5b47f900\npush $N5b47f200\n ShuffleCopy {\n  inputs 2\n  red green2\n  green red\n  blue green\n  alpha black\n  name ShuffleCopy2\n  label \"invrg, invgg, invgb\"\n  xpos 730\n  ypos 2099\n }\npush $N5b47dd00\n MergeExpression {\n  inputs 2\n  expr0 Ar*Bg\n  expr1 Ag*Bg\n  expr2 Ab*Bg\n  name MergeExpression9\n  xpos 730\n  ypos 2175\n }\n Merge2 {\n  inputs 3+1\n  operation plus\n  name A\n  label \"a_r, a_g, a_b\\n-\"\n  xpos 730\n  ypos 2262\n }\nset Na6063900 [stack 0]\npush $N78955600\n NoOp {\n  name NoOp2\n  label mean_I\n  xpos 1390\n  ypos 2411\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge22\n  xpos 1390\n  ypos 2487\n }\nset Na6062b00 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name a_r_mult_mean_I_r\n  xpos 1390\n  ypos 2559\n }\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge6\n  xpos 1390\n  ypos 2679\n }\npush $Na6062b00\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name a_g_mult_mean_I_g\n  xpos 1500\n  ypos 2559\n }\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge19\n  xpos 1500\n  ypos 2727\n }\npush $Na6062b00\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name a_b_mult_mean_I_b\n  xpos 1610\n  ypos 2559\n }\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge20\n  xpos 1610\n  ypos 2775\n }\n NoOp {\n  name NoOp4\n  label B\n  xpos 1610\n  ypos 2819\n }\nclone $C7bf78100 {\n  xpos 1610\n  ypos 2915\n  selected false\n }\n NoOp {\n  name NoOp5\n  label boxfilter(b)\n  xpos 1610\n  ypos 2987\n }\npush $Na6063900\nclone $C7bf78100 {\n  xpos 730\n  ypos 2363\n  selected false\n }\npush $N78f94f00\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge3\n  xpos -40\n  ypos 2799\n }\n NoOp {\n  name NoOp6\n  label \"boxfilter(a_\\[rgb])\"\n  xpos -40\n  ypos 3227\n }\nset N7809d600 [stack 0]\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name ab2\n  xpos 180\n  ypos 3327\n }\npush 0\npush $N7809d600\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name ar2\n  label \"boxfiler(a_r,r) * I_r\"\n  xpos -40\n  ypos 3323\n }\npush $N7809d600\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name ag2\n  xpos 70\n  ypos 3327\n }\n Merge2 {\n  inputs 4+1\n  operation plus\n  name Merge25\n  xpos -40\n  ypos 3448\n }\n Dot {\n  name Dot11\n  xpos -6\n  ypos 3546\n }\n Switch {\n  inputs 2\n  name Switch1\n  xpos -40\n  ypos 3616\n }\nset N7ad6eb00 [stack 0]\npush $N78f94f00\n Dot {\n  name Dot12\n  xpos -172\n  ypos 450\n }\n Dot {\n  name Dot20\n  xpos -189\n  ypos 3610\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -124\n  ypos 3685\n }\npush $N7ad6eb00\n Switch {\n  inputs 2\n  which {{replaceRGB}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -40\n  ypos 3757\n }\npush $N76b77900\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge21\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  selected true\n  xpos -40\n  ypos 3847\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"\\nntn = nuke.thisNode()\\nall = nuke.allNodes()\\na = ntn.input(1)\\nx = int(ntn\\['xpos'].value())\\nb = ntn.input(0)\\ny = int(ntn\\['ypos'].value())\\nwith nuke.Root():\\n    ma = nuke.nodes.NST_MergeAll()\\n    ma.setXYpos(x,y)\\n    # copy all values\\n    ak = ntn.knobs()\\n    for knoB in ma.knobs():\\n      try:\\n        if knoB not in \\[\\\"name\\\",\\\"tile_color\\\", \\\"also_merge\\\"]:\\n          ma\\[knoB].setValue(ntn\\[knoB].value())\\n          with ma:\\n            newMerge = nuke.toNode(\\\"MergeAllChannels\\\")\\n            if ntn\\[\\\"mix\\\"].isAnimated():\\n                newMerge\\[\\\"mix\\\"].copyAnimations(ntn\\[\\\"mix\\\"].animations())\\n            else:\\n                newMerge\\['mix'].setValue(ntn\\['mix'].value())\\n            newMerge.knob('also_merge').setValue('all')\\n\\n      except:\\n        pass\\n  \\n    # try to reconnect\\n    try:\\n        ma.setInput(0,b);ma.setInput(1,a)\\n        for one in all:\\n            for i in range(one.inputs()):\\n                if one.input(i) == ntn:\\n                    one.setInput(i,ma)\\n    except:\\n        pass\\n    nuke.delete(ntn)\\n\"}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -40\n  ypos 3929\n  disable {{replaceRGB}}\n }\n Output {\n  name Output1\n  xpos -40\n  ypos 4032\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HSL_Tool.gizmo",
    "content": "Group {\n name HSL_Tool\n tile_color 0xe2f1ff\n selected true\n addUserKnob {20 hue}\n addUserKnob {41 lut l \"\" -STARTLINE T HUE_key.lut}\n addUserKnob {20 sat}\n addUserKnob {41 lut_1 l \"\" -STARTLINE T SAT_key.lut}\n addUserKnob {20 lum}\n addUserKnob {41 lut_2 l \"\" -STARTLINE T LUM_key.lut}\n addUserKnob {20 Settings}\n addUserKnob {6 displayAlpha l \"display Mask in Alpha\" +STARTLINE}\n displayAlpha true\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge5.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge5.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge5.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge5.fringe}\n addUserKnob {41 mix T Merge5.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 565\n  ypos 920\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 420\n  ypos 425\n }\n Dot {\n  name Dot1\n  xpos 454\n  ypos 547\n }\nset N9c565e20 [stack 0]\n Dot {\n  name Dot2\n  xpos 700\n  ypos 547\n }\nset N9c542480 [stack 0]\n Dot {\n  name Dot3\n  xpos 813\n  ypos 547\n }\nset N9c546090 [stack 0]\n Dot {\n  name Dot4\n  xpos 923\n  ypos 547\n }\n HueKeyer {\n  lut {amount {curve 1 1 1 1 1 1 1}\n    sat_thrsh {curve 0 0 0 0 0 0 0}}\n  invert false\n  name LUM_key\n  xpos 889\n  ypos 597\n }\n Shuffle {\n  red white\n  green white\n  blue alpha\n  name Shuffle3\n  xpos 889\n  ypos 700\n }\npush $N9c546090\n HueKeyer {\n  lut {amount {curve 1 1 0.3495025039 0.3495025039 0.3495025039 1 1}\n    sat_thrsh {curve 0 0 0 0 0 0 0}}\n  invert false\n  name SAT_key\n  xpos 779\n  ypos 597\n }\n Shuffle {\n  red white\n  green alpha\n  blue white\n  name Shuffle2\n  xpos 779\n  ypos 664\n }\npush $N9c542480\n HueKeyer {\n  lut {amount {curve 1 1 1 1 1 1 1}\n    sat_thrsh {curve 0 0 0 0 0 0 0}}\n  invert false\n  name HUE_key\n  xpos 666\n  ypos 598\n }\n Shuffle {\n  red alpha\n  green black\n  blue black\n  name Shuffle1\n  xpos 666\n  ypos 634\n }\npush $N9c565e20\n Colorspace {\n  colorspace_out HSL\n  name Colorspace1\n  xpos 420\n  ypos 597\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge1\n  xpos 420\n  ypos 634\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge2\n  xpos 420\n  ypos 664\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos 420\n  ypos 700\n }\n Colorspace {\n  colorspace_in HSL\n  name Colorspace2\n  xpos 420\n  ypos 757\n }\nset N7e480490 [stack 0]\npush $N9c565e20\n Dot {\n  name Dot5\n  xpos 315\n  ypos 547\n }\nset N7e491ff0 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  name Merge4\n  xpos 281\n  ypos 757\n }\n Expression {\n  expr3 abs(red)+abs(green)+abs(blue)\n  name Expression1\n  xpos 281\n  ypos 822\n }\npush $N7e480490\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  mix {{parent.displayAlpha}}\n  name Copy1\n  xpos 420\n  ypos 816\n }\npush $N7e491ff0\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 78\n  ypos 547\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 78\n  ypos 923\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge5\n  xpos 420\n  ypos 920\n }\n Output {\n  name Output1\n  xpos 420\n  ypos 1018\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Halation.gizmo",
    "content": "Group {\n name Halation\n tile_color 0xcc804eff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 Halation}\n addUserKnob {4 outputView l \"Output View\" M {\"Final Output\" \"Luma Key\" \"Effect Only\"}}\n addUserKnob {26 key l Key:}\n addUserKnob {7 black l blackpoint R 0 10}\n black 2\n addUserKnob {7 white l whitepoint R 0 10}\n white 6\n addUserKnob {41 size_1 l size T Glow1.size}\n addUserKnob {26 \"\"}\n addUserKnob {7 red R 0 4}\n red 1\n addUserKnob {7 green R 0 4}\n green 0.25\n addUserKnob {7 blue R 0 4}\n blue 0.08\n addUserKnob {7 globalAmount l \"Global Amount\" R 0 4}\n globalAmount 1\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: T Halation}\n addUserKnob {26 ver l Version: T v01}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -852\n  ypos 177\n }\n Dot {\n  name Dot45\n  note_font_size 41\n  xpos -818\n  ypos 236\n }\nset Ne27f76c0 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos -661\n  ypos 233\n }\n Grade {\n  blackpoint {{parent.black}}\n  whitepoint {{parent.white}}\n  white_clamp true\n  name Grade2\n  xpos -661\n  ypos 257\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos -661\n  ypos 291\n }\n Dot {\n  name Dot48\n  note_font_size 41\n  xpos -627\n  ypos 352\n }\nset Ne2790040 [stack 0]\npush $Ne2790040\n Dot {\n  name Dot49\n  note_font_size 41\n  xpos -420\n  ypos 352\n }\nset Ne4e48d30 [stack 0]\n Dot {\n  name Dot51\n  note_font_size 41\n  xpos -310\n  ypos 352\n }\nset Ne4432470 [stack 0]\n Dot {\n  name Dot52\n  note_font_size 41\n  xpos -200\n  ypos 352\n }\nset Ne279cea0 [stack 0]\n Glow2 {\n  effect_only true\n  size {{parent.Glow1.size.w*4} {parent.Glow1.size.h*4}}\n  name Glow3\n  xpos -234\n  ypos 403\n }\n Dot {\n  name Dot54\n  note_font_size 41\n  xpos -200\n  ypos 496\n }\npush $Ne4432470\n Glow2 {\n  effect_only true\n  size {{parent.Glow1.size.w*2} {parent.Glow1.size.h*2}}\n  name Glow2\n  xpos -344\n  ypos 404\n }\n Dot {\n  name Dot53\n  note_font_size 41\n  xpos -310\n  ypos 453\n }\npush $Ne4e48d30\n Glow2 {\n  effect_only true\n  size 1.2\n  name Glow1\n  xpos -454\n  ypos 401\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge8\n  xpos -454\n  ypos 449\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge13\n  xpos -454\n  ypos 492\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge9\n  xpos -661\n  ypos 492\n }\n Clamp {\n  channels rgba\n  maximum_enable false\n  name Clamp4\n  xpos -661\n  ypos 529\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  label \"\\[value in]\"\n  xpos -661\n  ypos 555\n }\n Dot {\n  name Dot50\n  note_font_size 41\n  xpos -627\n  ypos 628\n }\nset Ne452d3f0 [stack 0]\n Dot {\n  name Dot55\n  note_font_size 41\n  xpos -517\n  ypos 628\n }\n Blur {\n  channels rgba\n  size {{parent.Glow1.size.w} {parent.Glow1.size.h}}\n  name Blur11\n  label \"\\[value size]\"\n  xpos -551\n  ypos 681\n }\npush $Ne452d3f0\n Merge2 {\n  inputs 2\n  operation max\n  name Merge7\n  xpos -661\n  ypos 687\n }\n Grade {\n  multiply {{parent.red} {parent.green} {parent.blue} 1}\n  gamma {1 1 1 1}\n  name Grade17\n  xpos -661\n  ypos 754\n }\n Multiply {\n  channels rgba\n  value {{parent.globalAmount}}\n  name Multiply2\n  label \"\\[value value]\"\n  xpos -661\n  ypos 795\n }\n Shuffle {\n  alpha black\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos -661\n  ypos 867\n }\n Dot {\n  name Dot57\n  note_font_size 41\n  xpos -627\n  ypos 961\n }\nset Ne4ff28b0 [stack 0]\n Multiply {\n  value {{parent.Merge1.mix}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -661\n  ypos 1136\n }\npush $Ne279cea0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 48\n  ypos 352\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 48\n  ypos 1284\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos -380\n  ypos 686\n  number 1\n }\n Dot {\n  name Dot60\n  xpos -346\n  ypos 1042\n }\npush $Ne4ff28b0\npush $Ne27f76c0\n Dot {\n  name Dot56\n  note_font_size 41\n  xpos -818\n  ypos 617\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  name Merge14\n  xpos -852\n  ypos 957\n }\npush $Ne27f76c0\n Dot {\n  name Dot58\n  note_font_size 41\n  xpos -969\n  ypos 236\n }\n Dot {\n  name Dot59\n  note_font_size 41\n  xpos -962\n  ypos 1042\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  mix {{parent.mix}}\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  selected true\n  xpos -852\n  ypos 1039\n }\n Switch {\n  inputs 3\n  which {{parent.outputView}}\n  name OutputView\n  label \"\\[value which]\"\n  xpos -852\n  ypos 1277\n }\n Output {\n  name Output1\n  xpos -852\n  ypos 1437\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HeatWave.gizmo",
    "content": "Group {\n name HeatWave\n knobChanged \"n = nuke.thisNode()\\n\\nif n.input(2) !=None :\\n    n\\['evolutionspeed'].setEnabled(False)\\n    n\\['Base'].setEnabled(False)\\n    n\\['Detail'].setEnabled(False)\\n    n\\['basesize'].setEnabled(False)\\n    n\\['basedistortion'].setEnabled(False)\\n    n\\['detailsize'].setEnabled(False)\\n    n\\['detaildistortion'].setEnabled(False)\\n    n\\['windstrength'].setEnabled(False)\\nelse:\\n    n\\['evolutionspeed'].setEnabled(True)\\n    n\\['Base'].setEnabled(True)\\n    n\\['Detail'].setEnabled(True)\\n    n\\['basesize'].setEnabled(True)\\n    n\\['basedistortion'].setEnabled(True)\\n    n\\['detailsize'].setEnabled(True)\\n    n\\['detaildistortion'].setEnabled(True)\\n    n\\['windstrength'].setEnabled(True)\"\n tile_color 0xe0000ff\n gl_color 0xff5b5bff\n note_font_color 0xe24a4aff\n selected true\n addUserKnob {20 User l HeatWave}\n addUserKnob {41 channels l Channels T STMap1.channels}\n addUserKnob {41 POS l Position T Ramp1.POS}\n addUserKnob {41 WIND l \"Wind Angle\" T Ramp1.WIND}\n addUserKnob {26 __________________________ l \"<b><span style=\\\"color:#E44747;\\\">Distortion\"}\n addUserKnob {7 globaldistortion l \"Global Distortion\" R 0 100}\n globaldistortion 50\n addUserKnob {7 distortionresponse l Response R 0 2}\n distortionresponse 1\n addUserKnob {7 evolutionspeed l \"Turbulence Speed\" t \"Noise Z offset speed over time.\" R 0 100}\n evolutionspeed 50\n addUserKnob {20 Base l BASE n 1}\n addUserKnob {7 basesize l \"Base Size\" R 0 100}\n basesize 50\n addUserKnob {7 basedistortion l \"Base Distortion\" R 0 100}\n basedistortion 50\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 Detail l DETAIL n 1}\n addUserKnob {7 detailsize l \"Detail Size\" R 0 100}\n detailsize 50\n addUserKnob {7 detaildistortion l \"Detail Distortion\" R 0 100}\n detaildistortion 50\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 ________________________________ l \"<b><span style=\\\"color:#E44747;\\\">Haze Blur\"}\n addUserKnob {7 hazeamount l \"Blur Size\" R 0 100}\n hazeamount 50\n addUserKnob {7 hazeresponse l Response R 0 2}\n hazeresponse 1\n addUserKnob {26 ___________________________ l \"<b><span style=\\\"color:#E44747;\\\">Wind\"}\n addUserKnob {41 useslider l \"Use slider instead of point\" T Ramp1.useslider}\n addUserKnob {41 rotation l \"Wind Angle\" T Ramp1.rotation}\n addUserKnob {7 windstrength l Strength R 0 100}\n windstrength 50\n addUserKnob {26 \"\"}\n addUserKnob {7 mix l Mix}\n mix 1\n addUserKnob {6 limittobb l \"Limit to Bounding Box    \" t \"Limits distortion and blur calculations to 'Mask' or 'Custom' inputs bounding boxes.\" +STARTLINE}\n limittobb true\n addUserKnob {6 fillframeedges l \"Fill Frame Edges   \" t \"Adds a fake overscan to avoid black borders around the frame.\\n\\nEnable this if your input image has no overscan.\\n\\nOverscan size can be adjusted with the Overscan slider located in the \\\"Extras\\\" tab.\\n\\nIf a Roto is being used for the Mask input, remember to set it to \\\"no clip\\\" in the Roto's \\\"clip to\\\" knob to avoid bounding box cropping.\" -STARTLINE}\n addUserKnob {6 previewnoisemap l \"Preview Noise Map         \" -STARTLINE}\n addUserKnob {26 credits l \" \" T \"<font size=\\\"5\\\"><span style=\\\"color:#575757;\\\">HeatWave <font size=\\\"2\\\"><span style=\\\"color:#5a5a5a;\\\"> v4.0 &nbsp; │ &nbsp; <font size=\\\"1\\\">B Y &nbsp; D A M I A N &nbsp; B I N D E R\"}\n addUserKnob {20 Extras}\n addUserKnob {26 ______________________ l <b>Extras}\n addUserKnob {7 ca l \"Chromatic Aberration\" R -1 1}\n addUserKnob {7 detailwindmult l \"Detail Wind Strength Mult\" t \"Wind strength multiplier that affects only the DETAIL noise. Can be used to reduce flickering or add parallax between BASE and DETAIL noise.\" R 0 2}\n detailwindmult 1\n addUserKnob {7 overscan l Overscan t \"Check \\\"Fill Frame Edges\\\" in the main tab.\" R 0 400}\n overscan 200\n}\n Ramp {\n  inputs 0\n  output none\n  p0 {{POS} {POS}}\n  p1 {{\"parent.useslider==0 ? WIND : p0.x + (p0.x - p0.x) * cos(rotation*pi/-180) - ((p0.y+(Image.width/8)) - p0.y) * sin(rotation*pi/-180)\"} {\"parent.useslider==0 ? WIND : p0.y + (p0.x - p0.x) * sin(rotation*pi/-180) + ((p0.y+(Image.width/8)*Image.pixel_aspect) - p0.y) * cos(rotation*pi/-180)\"}}\n  name Ramp1\n  knobChanged \"n = nuke.thisNode()\\n\\nif n\\['useslider'].getValue() == 1:\\n    n\\['WIND'].setEnabled(False)\\n    n\\['rotation'].setEnabled(True)\\nelse:\\n    n\\['WIND'].setEnabled(True)\\n    n\\['rotation'].setEnabled(False)\\n    \\nn.knob('p0').setEnabled(False)\\nn.knob('p1').setEnabled(False)\"\n  gl_color 0xff5b5bff\n  xpos 1770\n  ypos 175\n  hide_input true\n  addUserKnob {20 User}\n  addUserKnob {12 POS}\n  POS {500 300}\n  addUserKnob {12 WIND}\n  WIND {500 800}\n  addUserKnob {7 rotation +DISABLED R -360 360}\n  addUserKnob {6 useslider +STARTLINE}\n }\n Input {\n  inputs 0\n  name Mask\n  xpos 2292\n  ypos -456\n  number 1\n }\n BlackOutside {\n  name BlackOutside5\n  xpos 2292\n  ypos -428\n }\n AdjBBox {\n  numpixels 24\n  name AdjBBox1\n  xpos 2292\n  ypos -402\n }\n Input {\n  inputs 0\n  name Image\n  xpos 82\n  ypos -464\n }\n Dot {\n  name Dot14\n  xpos 116\n  ypos -401\n }\nset N6c835c00 [stack 0]\n Crop {\n  box {0 0 {width} {height}}\n  crop false\n  name Crop2\n  xpos 82\n  ypos -370\n  disable {{!fillframeedges}}\n }\nset N6c835800 [stack 0]\n Crop {\n  box {{-parent.overscan} {-parent.overscan} {width+parent.overscan} {height+parent.overscan}}\n  name Crop3\n  xpos 190\n  ypos -370\n  disable {{!fillframeedges}}\n }\n Dot {\n  name Dot15\n  xpos 224\n  ypos -137\n }\nset N6c835000 [stack 0]\n Remove {\n  name Remove2\n  xpos 1929\n  ypos -147\n }\nset N6c834c00 [stack 0]\n Merge2 {\n  inputs 2\n  bbox intersection\n  name Merge10\n  xpos 2292\n  ypos -141\n }\n Dot {\n  name Dot10\n  xpos 2326\n  ypos -13\n }\nset N6c834400 [stack 0]\n Dot {\n  name Dot13\n  xpos 2326\n  ypos 651\n }\nset N6c7e7c00 [stack 0]\n Dot {\n  name Dot34\n  xpos 2326\n  ypos 798\n }\nset N6c7e7800 [stack 0]\n Dot {\n  name Dot33\n  xpos 2327\n  ypos 1720\n }\nset N6c7e7400 [stack 0]\npush $N6c835000\n Dot {\n  name Dot51\n  xpos 224\n  ypos 51\n }\n Input {\n  inputs 0\n  name Custom\n  xpos 765\n  ypos -457\n  number 2\n }\n AdjBBox {\n  numpixels 24\n  name AdjBBox2\n  xpos 765\n  ypos -431\n }\n Merge2 {\n  inputs 2\n  bbox A\n  output none\n  name Merge11\n  xpos 765\n  ypos 41\n  disable {{parent.limittobb}}\n }\n Dot {\n  name Dot40\n  xpos 799\n  ypos 158\n }\nset N6c7e6000 [stack 0]\n Dot {\n  name Dot42\n  xpos 1061\n  ypos 158\n }\nset N6c7e5c00 [stack 0]\n Multiply {\n  value 0.1\n  name Multiply6\n  xpos 1027\n  ypos 402\n }\n Gamma {\n  value {{parent.distortionresponse}}\n  name Gamma1\n  xpos 1027\n  ypos 440\n }\n Dot {\n  name Dot41\n  xpos 1061\n  ypos 723\n }\npush $N6c834400\npush $N6c834c00\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 1929\n  ypos -17\n  disable {{\"!parent.limittobb+!\\[exists parent.input1]*!\\[exists parent.input2]\"}}\n }\n AdjBBox {\n  numpixels 1\n  name AdjBBox3\n  xpos 1929\n  ypos 55\n }\n Dot {\n  name Dot5\n  xpos 1963\n  ypos 133\n }\nset N6c7e4400 [stack 0]\n Dot {\n  name Dot3\n  xpos 1637\n  ypos 133\n }\n Noise {\n  cliptype bbox\n  size 1000\n  zoffset {{(frame-root.first_frame)*(evolutionspeed/400)}}\n  octaves 1\n  gain 0.1\n  translate {{(frame-root.first_frame)*(windstrength*4)+Ramp1.p0} {Ramp1.p0}}\n  rotate {{atan2((Ramp1.p1.y/pixel_aspect)-Ramp1.p0.y/pixel_aspect,(Ramp1.p1.x)-Ramp1.p0.x)*(180/pi)}}\n  scale {{parent.basesize/32} {parent.basesize/32*pixel_aspect}}\n  center {{Ramp1.p0.x-translate} {Ramp1.p0.y-translate}}\n  name Noise10\n  xpos 1603\n  ypos 181\n }\n Clamp {\n  maximum_enable false\n  name Clamp2\n  xpos 1603\n  ypos 207\n }\n Dot {\n  name Dot8\n  xpos 1637\n  ypos 275\n }\nset N6c79f000 [stack 0]\n Gamma {\n  value {{parent.distortionresponse}}\n  name Gamma2\n  xpos 1603\n  ypos 407\n }\nset N6c79ec00 [stack 0]\npush $N6c7e4400\n Noise {\n  cliptype bbox\n  size {{parent.detailsize*20}}\n  zoffset {{(frame-root.first_frame)*evolutionspeed/20000}}\n  octaves 8\n  gain 0.55\n  translate {{(frame-root.first_frame)*(windstrength*detailwindmult)+Ramp1.p0} {Ramp1.p0}}\n  rotate {{atan2((Ramp1.p1.y/pixel_aspect)-Ramp1.p0.y/pixel_aspect,(Ramp1.p1.x)-Ramp1.p0.x)*(180/pi)}}\n  scale {1 {pixel_aspect}}\n  center {{Ramp1.p0.x-translate} {Ramp1.p0.y-translate}}\n  name Noise3\n  xpos 1929\n  ypos 181\n }\n Clamp {\n  maximum_enable false\n  name Clamp1\n  xpos 1929\n  ypos 209\n }\n Multiply {\n  value {{(parent.detailsize/100)*(parent.detaildistortion/100*2)}}\n  name Multiply4\n  xpos 1929\n  ypos 355\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge5\n  xpos 1929\n  ypos 413\n }\n Dot {\n  name Dot6\n  xpos 1963\n  ypos 510\n }\npush $N6c79ec00\n Multiply {\n  value {{(parent.basedistortion/2)*pow(parent.basesize/100,1.5)}}\n  name Multiply3\n  xpos 1603\n  ypos 455\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge3\n  xpos 1603\n  ypos 506\n }\n BlackOutside {\n  name BlackOutside6\n  xpos 1603\n  ypos 549\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input2]\"}}\n  name Switch4\n  xpos 1603\n  ypos 719\n }\n Dot {\n  name Dot7\n  xpos 1637\n  ypos 937\n }\nset N6c79c800 [stack 0]\n Multiply {\n  value 0.08\n  name Multiply2\n  xpos 1374\n  ypos 927\n  disable {{\"\\[exists parent.input2]\"}}\n }\n Dot {\n  name Dot30\n  xpos 1188\n  ypos 937\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge9\n  xpos 1154\n  ypos 1716\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot29\n  xpos 1188\n  ypos 3060\n }\n Shuffle {\n  in alpha\n  name Shuffle1\n  xpos 249\n  ypos 3056\n }\npush $N6c7e5c00\n Dot {\n  name Dot9\n  xpos 1275\n  ypos 158\n }\npush $N6c7e7800\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos 1241\n  ypos 794\n }\n Dot {\n  name Dot35\n  xpos 1004\n  ypos 798\n }\nset N6c73a400 [stack 0]\n Dot {\n  name Dot37\n  xpos 1004\n  ypos 2940\n }\n Expression {\n  channel0 {-rgba.red -rgba.green -rgba.blue none}\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr3 !a>0\n  name Expression2\n  xpos 247\n  ypos 2936\n }\npush $N6c835000\npush $N6c835800\n Mirror {\n  Horizontal true\n  Vertical true\n  name Mirror1\n  xpos 82\n  ypos -344\n  disable {{!fillframeedges}}\n }\n Reformat {\n  type scale\n  scale 3\n  filter impulse\n  name Reformat11\n  xpos 82\n  ypos -318\n  disable {{!fillframeedges}}\n }\n Tile {\n  rows 3\n  mirrorRows true\n  columns 3\n  mirrorCols true\n  filter impulse\n  name Tile2\n  xpos 82\n  ypos -292\n  disable {{!fillframeedges}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{Image.width}}\n  box_height {{Image.height}}\n  box_fixed true\n  box_pixel_aspect {{Image.pixel_aspect}}\n  filter impulse\n  name Reformat12\n  xpos 82\n  ypos -266\n  disable {{!fillframeedges}}\n }\n Transform {\n  translate {-1 -1}\n  scale 3\n  center {{\"width / 2\"} {\"height / 2\"}}\n  filter impulse\n  black_outside false\n  name Transform4\n  xpos 82\n  ypos -240\n  disable {{!fillframeedges}}\n }\npush $N6c835c00\n Dot {\n  name Dot22\n  xpos 36\n  ypos -401\n }\n Dot {\n  name Dot24\n  xpos 36\n  ypos -189\n }\n Dissolve {\n  inputs 2\n  which 1\n  name Dissolve3\n  xpos 82\n  ypos -199\n  disable {{!fillframeedges}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox3\n  xpos 82\n  ypos -141\n  disable {{!fillframeedges}}\n }\n Dot {\n  name Dot39\n  xpos 116\n  ypos 575\n }\nset N6c6f2800 [stack 0]\n Dot {\n  name Dot38\n  xpos -191\n  ypos 575\n }\n Dot {\n  name Dot36\n  xpos -191\n  ypos 2940\n }\npush $N6c7e7400\n Dot {\n  name Dot12\n  xpos 2327\n  ypos 1876\n }\npush $N6c79c800\n Dot {\n  name Dot11\n  xpos 1637\n  ypos 1247\n }\nset N6c6f1800 [stack 0]\n Position {\n  translate {0 1}\n  name Position2\n  xpos 1715\n  ypos 1243\n }\npush $N6c6f1800\n Merge2 {\n  inputs 2\n  operation from\n  name Merge6\n  xpos 1656\n  ypos 1303\n }\n Multiply {\n  value {{pixel_aspect**2}}\n  name Multiply8\n  xpos 1656\n  ypos 1345\n }\n Dot {\n  name Dot60\n  xpos 1690\n  ypos 1407\n }\npush $N6c6f1800\n Position {\n  translate {1 0}\n  name Position1\n  xpos 1491\n  ypos 1243\n }\npush $N6c6f1800\n Merge2 {\n  inputs 2\n  operation from\n  name Merge4\n  xpos 1548\n  ypos 1303\n }\n Dot {\n  name Dot61\n  xpos 1582\n  ypos 1407\n }\n ShuffleCopy {\n  inputs 2\n  red alpha2\n  green alpha\n  blue black\n  alpha black\n  name ShuffleCopy1\n  xpos 1604\n  ypos 1403\n }\n Multiply {\n  value {{2*(globaldistortion/50)*parent.mix}}\n  name Multiply1\n  xpos 1604\n  ypos 1438\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge7\n  xpos 1604\n  ypos 1872\n  disable {{\"!\\[exists parent.input1]\"}}\n }\nset N6c69ec00 [stack 0]\n Dot {\n  name Dot50\n  xpos 1097\n  ypos 1876\n }\n Dot {\n  name Dot49\n  xpos 1097\n  ypos 2327\n }\n Multiply {\n  value {{parent.ca>0?parent.ca:-parent.ca}}\n  name Multiply5\n  xpos 852\n  ypos 2317\n }\n Dot {\n  name Dot52\n  xpos 732\n  ypos 2327\n }\nset N6c69dc00 [stack 0]\n Dot {\n  name Dot48\n  xpos 642\n  ypos 2327\n }\npush $N6c73a400\npush $N6c6f2800\n CopyBBox {\n  inputs 2\n  name CopyBBox5\n  xpos 82\n  ypos 794\n  disable {{\"!parent.limittobb+!\\[exists parent.input1]*!\\[exists parent.input2]\"}}\n }\n Dot {\n  name Dot27\n  xpos 116\n  ypos 1388\n }\nset N6c69d000 [stack 0]\n Dot {\n  name Dot31\n  xpos 763\n  ypos 1388\n }\n Dot {\n  name Dot32\n  xpos 763\n  ypos 2076\n }\nset N6c69c800 [stack 0]\n Remove {\n  name Remove1\n  xpos 1294\n  ypos 2066\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+0.5)/height\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression1\n  xpos 1447\n  ypos 2049\n  postage_stamp true\n }\npush $N6c69ec00\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  name Merge1\n  xpos 1604\n  ypos 2072\n }\n BlackOutside {\n  name BlackOutside4\n  xpos 1604\n  ypos 2139\n }\n Dot {\n  name Dot28\n  xpos 1638\n  ypos 2499\n }\n Dot {\n  name Dot45\n  xpos 923\n  ypos 2499\n }\nset N6c662c00 [stack 0]\n Dot {\n  name Dot47\n  xpos 923\n  ypos 2440\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge12\n  xpos 608\n  ypos 2436\n }\npush $N6c69c800\npush $N6c7e7c00\npush $N6c7e6000\npush $N6c79f000\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input2]\"}}\n  name Switch3\n  xpos 765\n  ypos 271\n }\n Dot {\n  name Dot4\n  xpos 569\n  ypos 275\n }\n BlackOutside {\n  name BlackOutside2\n  xpos 535\n  ypos 407\n }\n Gamma {\n  value {{parent.hazeresponse}}\n  name Gamma3\n  xpos 535\n  ypos 433\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge8\n  xpos 535\n  ypos 647\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot2\n  xpos 569\n  ypos 1525\n }\nset N6c661000 [stack 0]\n Dot {\n  name Dot16\n  xpos 569\n  ypos 1570\n }\nset N6c660c00 [stack 0]\n Dot {\n  name Dot17\n  xpos 569\n  ypos 1617\n }\nset N6c660800 [stack 0]\n Dot {\n  name Dot18\n  xpos 569\n  ypos 1664\n }\nset N6c660400 [stack 0]\n Dot {\n  name Dot19\n  xpos 569\n  ypos 1709\n }\nset N6c607c00 [stack 0]\n Dot {\n  name Dot20\n  xpos 569\n  ypos 1754\n }\nset N6c607800 [stack 0]\n Dot {\n  name Dot21\n  xpos 569\n  ypos 1801\n }\nset N6c607400 [stack 0]\n Dot {\n  name Dot23\n  xpos 569\n  ypos 1847\n }\nset N6c607000 [stack 0]\n Dot {\n  name Dot25\n  xpos 569\n  ypos 1896\n }\nset N6c606c00 [stack 0]\n Dot {\n  name Dot26\n  xpos 569\n  ypos 1946\n }\n Grade {\n  channels alpha\n  blackpoint 0.9\n  white_clamp true\n  name Grade12\n  xpos 312\n  ypos 1936\n }\npush $N6c606c00\n Grade {\n  channels alpha\n  blackpoint 0.7\n  whitepoint 0.9\n  white_clamp true\n  name Grade11\n  xpos 312\n  ypos 1886\n }\npush $N6c607000\n Grade {\n  channels alpha\n  blackpoint 0.5\n  whitepoint 0.7\n  white_clamp true\n  name Grade8\n  xpos 312\n  ypos 1837\n }\npush $N6c607400\n Grade {\n  channels alpha\n  blackpoint 0.3\n  whitepoint 0.5\n  white_clamp true\n  name Grade6\n  xpos 312\n  ypos 1791\n }\npush $N6c607800\n Grade {\n  channels alpha\n  blackpoint 0.25\n  whitepoint 0.3\n  white_clamp true\n  name Grade5\n  xpos 312\n  ypos 1744\n }\npush $N6c607c00\n Grade {\n  channels alpha\n  blackpoint 0.2\n  whitepoint 0.25\n  white_clamp true\n  name Grade15\n  xpos 312\n  ypos 1699\n }\npush $N6c660400\n Grade {\n  channels alpha\n  blackpoint 0.15\n  whitepoint 0.2\n  white_clamp true\n  name Grade10\n  xpos 312\n  ypos 1654\n }\npush $N6c660800\n Grade {\n  channels alpha\n  blackpoint 0.1\n  whitepoint 0.15\n  white_clamp true\n  name Grade18\n  xpos 311\n  ypos 1607\n }\npush $N6c660c00\n Grade {\n  channels alpha\n  blackpoint 0.05\n  whitepoint 0.1\n  white_clamp true\n  name Grade17\n  xpos 311\n  ypos 1560\n }\npush $N6c661000\n Grade {\n  channels alpha\n  whitepoint 0.05\n  white_clamp true\n  name Grade14\n  xpos 311\n  ypos 1515\n }\npush $N6c69d000\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.05}}\n  name Blur2\n  xpos 82\n  ypos 1521\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.1}}\n  name Blur3\n  xpos 82\n  ypos 1566\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.15}}\n  name Blur4\n  xpos 82\n  ypos 1613\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.2}}\n  name Blur5\n  xpos 82\n  ypos 1660\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.25}}\n  quality 8\n  name Blur6\n  xpos 82\n  ypos 1705\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.3}}\n  quality 8\n  name Blur7\n  xpos 82\n  ypos 1750\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.4}}\n  quality 8\n  name Blur8\n  xpos 82\n  ypos 1797\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.6}}\n  quality 8\n  name Blur10\n  xpos 82\n  ypos 1843\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.8}}\n  quality 8\n  name Blur12\n  xpos 82\n  ypos 1892\n }\n Blur {\n  inputs 1+1\n  channels {{{STMap1.channels}}}\n  size {{parent.hazeamount*parent.mix*0.9}}\n  quality 8\n  name Blur13\n  xpos 82\n  ypos 1942\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox4\n  xpos 82\n  ypos 2072\n }\n BlackOutside {\n  name BlackOutside3\n  xpos 82\n  ypos 2147\n }\n Dot {\n  name Dot59\n  xpos 116\n  ypos 2261\n }\nset N6ad04800 [stack 0]\n Dot {\n  name Dot56\n  xpos 381\n  ypos 2261\n }\n Dot {\n  name Dot1\n  xpos 381\n  ypos 2327\n }\nset N6ac9fc00 [stack 0]\n Dot {\n  name Dot44\n  xpos 508\n  ypos 2327\n }\n Remove {\n  operation keep\n  channels {-rgba.red -rgba.green rgba.blue none}\n  name Remove5\n  xpos 474\n  ypos 2377\n }\n STMap {\n  inputs 2\n  channels {{{STMap1.channels}}}\n  uv rgb\n  name STMap3\n  xpos 474\n  ypos 2436\n }\n Dot {\n  name Dot54\n  xpos 508\n  ypos 2613\n }\npush 0\npush $N6c69dc00\n Multiply {\n  value 0.5\n  name Multiply7\n  xpos 698\n  ypos 2374\n }\nset N6ac9e800 [stack 0]\n Dot {\n  name Dot58\n  xpos 834\n  ypos 2384\n }\npush $N6c662c00\n Dot {\n  name Dot46\n  xpos 923\n  ypos 2556\n }\nset N6ac9e000 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  name Merge15\n  xpos 800\n  ypos 2552\n  disable {{-parent.ca<0}}\n }\npush $N6ac9fc00\n Dot {\n  name Dot43\n  xpos 248\n  ypos 2327\n }\n Remove {\n  operation keep\n  channels {rgba.red -rgba.green -rgba.blue none}\n  name Remove3\n  xpos 214\n  ypos 2377\n }\n STMap {\n  inputs 2\n  channels {{{STMap1.channels}}}\n  uv rgb\n  name STMap2\n  xpos 214\n  ypos 2552\n }\n Dot {\n  name Dot53\n  xpos 248\n  ypos 2613\n }\npush $N6ac9e800\npush $N6c662c00\n Merge2 {\n  inputs 2\n  operation from\n  name Merge13\n  xpos 698\n  ypos 2495\n  disable {{parent.ca<0}}\n }\npush $N6ac9fc00\n Remove {\n  operation keep\n  channels {-rgba.red rgba.green -rgba.blue none}\n  name Remove4\n  xpos 347\n  ypos 2378\n }\n STMap {\n  inputs 2\n  channels {{{STMap1.channels}}}\n  uv rgb\n  name STMap4\n  xpos 347\n  ypos 2495\n }\n Merge2 {\n  inputs 3+1\n  operation plus\n  name Merge14\n  xpos 347\n  ypos 2609\n }\n Dot {\n  name Dot55\n  xpos 381\n  ypos 2768\n }\npush $N6ac9e000\n Dot {\n  name Dot57\n  xpos 923\n  ypos 2665\n }\npush $N6ad04800\n STMap {\n  inputs 2\n  channels rgb\n  uv rgb\n  name STMap1\n  xpos 82\n  ypos 2661\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.green\n  to1 rgba.green\n  from2 rgba.blue\n  to2 rgba.blue\n  name Copy1\n  xpos 82\n  ypos 2745\n  disable {{parent.ca==0}}\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 82\n  ypos 2930\n  disable {{\"!parent.limittobb+!\\[exists parent.input1]*!\\[exists parent.input2]\"}}\n }\n Switch {\n  inputs 2\n  which {{parent.previewnoisemap}}\n  name Switch2\n  xpos 82\n  ypos 3056\n }\n Output {\n  name Output1\n  xpos 82\n  ypos 3184\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HexColor.gizmo",
    "content": "Group {\n inputs 0\n name HexColor\n knobChanged \"\\ndef int2hex(x):\\n    val = hex(x)\\[2:]\\n    val = \\\"0\\\"+val if len(val)<2 else val \\n    return val.upper()\\n\\nn = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nwith n:\\n    sample_forth = nuke.toNode(\\\"ColorspaceForth\\\")\\n    sample_back = nuke.toNode(\\\"ColorspaceBack\\\")\\n    \\nif k.name() == \\\"color_float\\\":\\n    corrected_forth_r = nuke.sample(sample_forth, 'red', 0, 0)\\n    corrected_forth_g = nuke.sample(sample_forth, 'green', 0, 0)\\n    corrected_forth_b = nuke.sample(sample_forth, 'blue', 0, 0)\\n    \\n    n\\['color_8bit_r'].setValue(int(round(corrected_forth_r*255)))\\n    n\\['color_8bit_g'].setValue(int(round(corrected_forth_g*255)))\\n    n\\['color_8bit_b'].setValue(int(round(corrected_forth_b*255)))\\n    \\n    n\\['color_hex'].setValue(\\\"#\\\" + int2hex(int(round(255*corrected_forth_r))) + int2hex(int(round(255*corrected_forth_g))) + int2hex(int(round(255*corrected_forth_b))))\\n    \\nelif k.name() == \\\"color_8bit_r\\\":\\n    corrected_back_r = nuke.sample(sample_back, 'red', 0, 0)\\n    n\\['color_float'].setValue(corrected_back_r, 0)\\n    n\\['color_hex'].setValue(\\\"#\\\" + int2hex(int(n\\['color_8bit_r'].getValue())) + int2hex(int(n\\['color_8bit_g'].getValue())) + int2hex(int(n\\['color_8bit_b'].getValue())))\\n    \\nelif k.name() == \\\"color_8bit_g\\\":\\n    corrected_back_g = nuke.sample(sample_back, 'green', 0, 0)\\n    n\\['color_float'].setValue(corrected_back_g, 1)\\n    n\\['color_hex'].setValue(\\\"#\\\" + int2hex(int(n\\['color_8bit_r'].getValue())) + int2hex(int(n\\['color_8bit_g'].getValue())) + int2hex(int(n\\['color_8bit_b'].getValue())))\\n    \\nelif k.name() == \\\"color_8bit_b\\\":\\n    corrected_back_b = nuke.sample(sample_back, 'blue', 0, 0)\\n    n\\['color_float'].setValue(corrected_back_b, 2)\\n    n\\['color_hex'].setValue(\\\"#\\\" + int2hex(int(n\\['color_8bit_r'].getValue())) + int2hex(int(n\\['color_8bit_g'].getValue())) + int2hex(int(n\\['color_8bit_b'].getValue())))\\n\\nelif k.name() == \\\"color_hex\\\":\\n    hex_r = n\\['color_hex'].getValue()\\[1:3]\\n    hex_g = n\\['color_hex'].getValue()\\[3:5]\\n    hex_b = n\\['color_hex'].getValue()\\[5:7]\\n    \\n    int_r = int(hex_r, 16)\\n    int_g = int(hex_g, 16)\\n    int_b = int(hex_b, 16)\\n    \\n    n\\['color_8bit_r'].setValue(int_r)\\n    n\\['color_8bit_g'].setValue(int_g)\\n    n\\['color_8bit_b'].setValue(int_b)\\n    \\n    corrected_back_r = nuke.sample(sample_back, 'red', 0, 0)\\n    corrected_back_g = nuke.sample(sample_back, 'green', 0, 0)\\n    corrected_back_b = nuke.sample(sample_back, 'blue', 0, 0)\\n    \\n    n\\['color_float'].setValue(corrected_back_r, 0)\\n    n\\['color_float'].setValue(corrected_back_g, 1)\\n    n\\['color_float'].setValue(corrected_back_b, 2)\\n\\nmyHex = n\\['color_hex'].getValue()\\[1:] + \\\"00\\\"\\nnukeHex = int(myHex, 16)\\nn.knob('tile_color').setValue(nukeHex)\\n\"\n tile_color 0xff000000\n label \"\\[value this.color_hex]\"\n note_font_color 0xff\n selected true\n addUserKnob {20 User l \"Color Modes\"}\n addUserKnob {26 title l \"\" +STARTLINE T \"<font color=#ff8300 size=\\\"5\\\">HexColor</font><font color=#ff8300 size=\\\"2\\\"> v1.0</font>\"}\n addUserKnob {26 divider_general l \" \"}\n addUserKnob {41 format l Format T OutputColor.format}\n addUserKnob {41 colorspace l Colorspace t \"sRGB should work in the most cases. I.E. converting a web #hex color to Nuke's linear workspace.\\nChanging the colorspace does not update the colors immediately since the reference point is missing. Change a color value to apply the changes to the other color values respectively.\" T ColorspaceForth.colorspace_out}\n addUserKnob {26 divider_color l \" \"}\n addUserKnob {1 color_hex l Hex t \"requires a hashtag # at the beginning\"}\n color_hex #FF0000\n addUserKnob {18 color_float l Float t \"This value is used to color the output image\"}\n color_float {1 0 0}\n addUserKnob {6 color_float_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 color_8bit_label l 8bit T \"\"}\n addUserKnob {3 color_8bit_r l \"<font color=#c34b4b>R</font>\" -STARTLINE}\n color_8bit_r 255\n addUserKnob {3 color_8bit_g l \"<font color=#5b9c5b>G</font>\" -STARTLINE}\n addUserKnob {3 color_8bit_b l \"<font color=#3367a9>B</font>\" -STARTLINE}\n addUserKnob {20 About}\n addUserKnob {26 title_1 l \"\" +STARTLINE T \"<font color=#ff8300 size=\\\"5\\\">HexColor</font><font color=#ff8300 size=\\\"2\\\"> v1.0</font>\"}\n addUserKnob {26 author l \"\" +STARTLINE T \"by Nikolai Wüstemann\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 description l Description T \"- This Node workes like a regular Constant.\\n- Changing one color value changes all other values respectively \\n- Colorspace conversions are taken into consideration\\n- This is necessary to produce a valid represtation of  i.E. web #hex colors in Nuke.\"}\n}\n Constant {\n  inputs 0\n  channels rgb\n  color {{\"\\[value this.parent.color_8bit_r]/255\"} {\"\\[value this.parent.color_8bit_g]/255\"} {\"\\[value this.parent.color_8bit_b]/255\"} 0}\n  name ConversionColor\n  xpos 394\n  ypos -112\n }\n Colorspace {\n  colorspace_in sRGB\n  name ColorspaceBack\n  selected true\n  xpos 394\n  ypos 9\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{\"\\[value this.parent.color_float.r]\"} {\"\\[value this.parent.color_float.g]\"} {\"\\[value this.parent.color_float.b]\"} {\"\\[value this.parent.color_float.a]\"}}\n  name OutputColor\n  xpos 557\n  ypos -116\n }\nset Nfbef7900 [stack 0]\n Colorspace {\n  colorspace_out sRGB\n  name ColorspaceForth\n  knobChanged \"id = nuke.thisNode().knob(\\\"colorspace_out\\\").getValue()\\nnuke.toNode(\\\"ColorspaceBack\\\").knob(\\\"colorspace_in\\\").setValue(int(id))\"\n  xpos 557\n  ypos 11\n }\npush $Nfbef7900\n Output {\n  name Output1\n  xpos 741\n  ypos 14\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HighPass.gizmo",
    "content": "Group {\n name HighPass\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'output1':\\n    if n.knob('output1').getValue() == 0:\\n        n.knob('HighPassAmount').setVisible(False)\\n        n.knob('HighContrastAmount').setVisible(True)\\n    else:\\n        n.knob('HighPassAmount').setVisible(True)\\n        n.knob('HighContrastAmount').setVisible(False)\"\n tile_color 0xcc804eff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 HighPass}\n addUserKnob {41 channels T MergeKeymix.also_merge}\n addUserKnob {4 output1 l Operation t \"High Contrast, Makes details pop out while still maintaining some color\\n\\nHigh Pass, Makes details pop out more but becomes more grayscale\" M {\"High Contrast\" \"High Pass\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {41 blurSize l \"Blur Size\" t \"controls the blur amount of the input before the difference operation is calculated\" T Blur6.size}\n addUserKnob {7 HighContrastAmount l Amount t \"controls a multiply on the input before the difference is calculated\\n\\n(only works when operation is set to high contrast)\" R 0.6 1}\n HighContrastAmount 0.8\n addUserKnob {7 HighPassAmount l Amount t \"controls an offset (add) on the input before the difference is calculated\\n\\n(only works when operation is set to high pass)\" +HIDDEN R -0.3 0}\n HighPassAmount -0.01\n addUserKnob {7 postMult l \"Post Mult\" R 0 4}\n postMult 1\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"blurs image and minuses with original, producing a sharpened highpass image\\n\\nGood for use as a sharpen tool\\nvery useful as an aid to trackers and as a viewer input to check for errors\" T HighPass}\n addUserKnob {26 ver l Version: T v05}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 99\n  ypos 428\n  number 1\n }\n Dot {\n  name Dot4\n  label Mask\n  note_font_size 41\n  xpos 133\n  ypos 481\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 133\n  ypos 581\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -273\n  ypos -335\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -273\n  ypos -264\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -239\n  ypos -114\n }\nset Ne5199a80 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -239\n  ypos 43\n }\nset Ne519d820 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -367\n  ypos 43\n }\n Blur {\n  size 8\n  name Blur6\n  xpos -401\n  ypos 84\n }\nset Ne27e6090 [stack 0]\n Grade {\n  channels all\n  add {{parent.HighPassAmount}}\n  black_clamp false\n  name Grade11\n  xpos -504\n  ypos 139\n }\npush $Ne27e6090\n Grade {\n  channels all\n  multiply {{parent.HighContrastAmount}}\n  black_clamp false\n  name Grade1\n  xpos -401\n  ypos 138\n }\n Switch {\n  inputs 2\n  which {{\"parent.output1==1 ? 1 : 0\"}}\n  name Switch1\n  xpos -401\n  ypos 192\n }\n Dot {\n  name Dot5\n  xpos -367\n  ypos 244\n }\npush $Ne519d820\n Merge2 {\n  inputs 2\n  operation from\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -273\n  ypos 237\n }\n Multiply {\n  value {{parent.postMult*4}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -273\n  ypos 300\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos -239\n  ypos 493\n }\npush $Ne5199a80\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -580\n  ypos -114\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -580\n  ypos 490\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -580\n  ypos 581\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  name MergeKeymix\n  xpos -273\n  ypos 574\n }\n Output {\n  name Output1\n  xpos -273\n  ypos 650\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HighlightSuppress.gizmo",
    "content": "Group {\n name HighlightSuppress\n tile_color 0x5c7fc0ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 LazyTonemap}\n addUserKnob {41 in l channels T Shuffle3.in}\n addUserKnob {26 \"\"}\n addUserKnob {7 wp l Whitepoint R 1 10}\n wp 4\n addUserKnob {41 white l gain T Grade1.white}\n addUserKnob {41 gamma T Grade1.gamma}\n addUserKnob {26 \"\"}\n addUserKnob {7 affectedArea l \"Limit Affected Area\"}\n addUserKnob {6 reverse +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 unpremult l \"(un)premult? by\" T Unpremult1.alpha}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 createdBy l \"Created By: \" T \"Iiro Harra - Lazy_Tonemap\"}\n addUserKnob {26 modifiedBy l \"Modified By:\" T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: t \"Limits and normalizes highlights of image, simulating a soft white falloff.  \\n\\nHigher the whitepoint, the darker the whites\\n\\nCan limit effect to not affect lower values\" T HighlightSuppress}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 402\n  ypos 309\n  number 1\n }\n Dot {\n  name Dot5\n  label Mask\n  note_font_size 41\n  xpos 436\n  ypos 442\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 436\n  ypos 542\n }\n Input {\n  inputs 0\n  name Input\n  xpos 0\n  ypos -471\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 34\n  ypos -375\n }\nset N3154ebb0 [stack 0]\n Unpremult {\n  channels all\n  alpha -rgba.alpha\n  name Unpremult1\n  xpos 0\n  ypos -290\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 34\n  ypos -237\n }\nset N315594e0 [stack 0]\n Shuffle {\n  in rgb\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  name Shuffle3\n  label \"\\[value in]\"\n  xpos 0\n  ypos -187\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos 0\n  ypos -155\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 34\n  ypos -107\n }\nset N31571d60 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 182\n  ypos -107\n }\n Keyer {\n  operation \"luminance key\"\n  range {0 {parent.affectedArea} 1 1}\n  name Keyer1\n  xpos 148\n  ypos -18\n }\nset N30d740f0 [stack 0]\npush $N31571d60\n Grade {\n  black_clamp false\n  name Grade1\n  xpos 0\n  ypos -49\n  disable {{parent.reverse}}\n }\n Colorspace {\n  colorspace_out CIE-Yxy\n  name Colorspace4\n  xpos 0\n  ypos -25\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 23\n }\nset N314cc070 [stack 0]\n Expression {\n  inputs 1+1\n  expr0 \"(parent.knob.wp*((((r**2)-2*r+1)*(parent.knob.wp**2)+4*r)**.5) + (r-1) * (parent.knob.wp**2)) / 2\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  expr1 \"(parent.knob.wp*((((g**2)-2*g+1)*(parent.knob.wp**2)+4*g)**.5) + (g-1) * (parent.knob.wp**2)) / 2\"\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 \"(parent.knob.wp*((((b**2)-2*b+1)*(parent.knob.wp**2)+4*b)**.5) + (b-1) * (parent.knob.wp**2)) / 2\"\n  expr3 a\n  name Tonemap_whitepoint1\n  xpos 60\n  ypos 71\n }\npush $N30d740f0\npush $N314cc070\n Expression {\n  inputs 1+1\n  expr0 \"(r*(1+(r/(parent.knob.wp**2))) ) / (1+r)\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  expr1 \"(g*(1+(g/(parent.knob.wp**2))) ) / (1+g)\"\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 \"(b*(1+(b/(parent.knob.wp**2))) ) / (1+b)\"\n  expr3 a\n  name Tonemap_whitepoint\n  xpos -63\n  ypos 71\n }\n Switch {\n  inputs 2\n  which {{parent.reverse}}\n  name Switch3\n  xpos 0\n  ypos 138\n }\n Colorspace {\n  colorspace_in CIE-Yxy\n  name Colorspace3\n  xpos 0\n  ypos 186\n }\n Grade {\n  white {{parent.Grade1.white}}\n  gamma {{parent.Grade1.gamma}}\n  reverse true\n  black_clamp false\n  name Grade2\n  xpos 0\n  ypos 210\n  disable {{!parent.reverse}}\n }\npush $N315594e0\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -123\n  ypos -237\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -123\n  ypos 304\n }\n ShuffleCopy {\n  inputs 2\n  in2 none\n  alpha alpha2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out none\n  out2 {{{parent.Shuffle3.in}}}\n  name ShuffleCopy1\n  selected true\n  xpos 0\n  ypos 301\n }\n Premult {\n  channels all\n  alpha {{{parent.Unpremult1.alpha}}}\n  name Premult1\n  xpos 0\n  ypos 346\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 454\n }\npush $N3154ebb0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -351\n  ypos -375\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -351\n  ypos 451\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -351\n  ypos 542\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name MergeKeymix\n  xpos 0\n  ypos 535\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 716\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ID_Extractor.gizmo",
    "content": "Group {\n name ID_Extractor\n tile_color 0x3d3d3dff\n label \"<big><font color=\\\"white\\\">\\[value Achannels]\\n<font color=\\\"Red\\\">\\[value Red]\\n<font color=\\\"Green\\\">\\[value Green]\\n<font color=\\\"royal blue\\\">\\[value Blue]\"\n note_font \"Verdana Bold\"\n note_font_color 0xb8d2dfff\n selected true\n addUserKnob {20 ID_Extract}\n addUserKnob {41 Achannels l \"ID channel\" t \"Pick the layer you want to extract from\" T ID2.Achannels}\n addUserKnob {26 text l \" \" T \"<font color = gray>Name your channels something:\"}\n addUserKnob {1 Red l \"<font color = orangered>Red\" t \"Enter a name for your red channel\"}\n addUserKnob {1 Green l \"<font color = limegreen>Green\" t \"Enter a name for your green channel\"}\n addUserKnob {1 Blue l \"<font color = dodgerblue>Blue\" t \"Enter a name for your blue channel\"}\n addUserKnob {26 text_1 l \" \" T \"<font color = gray>Extract your channels into Stamps:\"}\n addUserKnob {22 extractRed l \"<font color = orangered>Extract Red\" t \"Extract Red Channel into Stamp\" T \"import NST_ID_Extractor\\nNST_ID_Extractor.extractRed()\" +STARTLINE}\n addUserKnob {22 extractGreen l \" <font color = limegreen>Extract Green\" t \"Extract Blue Channel into Stamp\" -STARTLINE T \"import NST_ID_Extractor\\nNST_ID_Extractor.extractGreen()\"}\n addUserKnob {22 extractBlue l \"<font color = dodgerblue>Extract Blue\" t \"Extract Blue Channel into Stamp\" -STARTLINE T \"import NST_ID_Extractor\\nNST_ID_Extractor.extractBlue()\"}\n addUserKnob {26 \"\"}\n addUserKnob {22 extractAll l \"<big><font color = limegreen>Extract All\" t \"Extract all 3 Channels at once\" T \"import NST_ID_Extractor\\nNST_ID_Extractor.extractAll()\" +STARTLINE}\n addUserKnob {22 set l \"<big><font color = skyblue>Set Names\" t \"Reset the names of Existing Stamp outputs\" -STARTLINE T \"import NST_ID_Extractor\\nNST_ID_Extractor.set()\"}\n addUserKnob {22 reset l \"<font color = orange><big>Clear Names\" t \"Clear all 3 name text input fields\" -STARTLINE T \"import NST_ID_Extractor\\nNST_ID_Extractor.reset()\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -576\n  ypos -418\n }\n Dot {\n  name Dot1\n  xpos -542\n  ypos -354\n }\nset N4be96400 [stack 0]\npush $N4be96400\n Dot {\n  name Dot2\n  xpos -667\n  ypos -354\n }\n Remove {\n  name Remove1\n  xpos -701\n  ypos -209\n }\n Merge2 {\n  inputs 2\n  Achannels rgb\n  Bchannels none\n  output rgb\n  name ID2\n  tile_color 0xffffffff\n  label \"R=\\[value Red]\\nG=\\[value Green]\\nB=\\[value Blue]\\nframe \\[value postage_stamp_frame]\"\n  note_font_size 15\n  xpos -576\n  ypos -234\n  postage_stamp_frame 1001\n }\n Output {\n  name Output1\n  xpos -576\n  ypos -124\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_IIDistort.gizmo",
    "content": "Group {\n inputs 2\n name IIDistort\n help \"Recursuve IDistort Node, the vectors advect themselves multiple times, creating more different patterns than a regular IDistort node.\"\n addUserKnob {20 iidistort_tab l IIDistort}\n addUserKnob {7 scale l Scale t \"Amount of vector advection\" R 0 10}\n scale 1\n addUserKnob {3 samples l \"Number of Samples\" t \"Add samples for a smoother curve, reduce for faster results.\"}\n samples 10\n addUserKnob {26 \"\"}\n addUserKnob {4 output l Output t \"Choose the desired output.\\n\\nDistorted image: Image from img input distorted by vectors.\\nModified Vectors: Vectors modified so that feeding these in a regular IDistort would produce the same result as this node's distorted image.\\nSTMap: An STMap whch would match this node's distortion.\" M {\"Distorted image\" \"Modified Vectors\" STMap}}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.1 -  Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectors\n  xpos 223\n  ypos -56\n  number 1\n }\n BlinkScript {\n  ProgramGroup 1\n  KernelDescription \"2 \\\"FlowKernel\\\" iterate pixelWise 831e6c85b5efa3aa8b859b0c422c683ec13d73f561e57321e66c972e8e807f77 2 \\\"vectors\\\" Read Random \\\"dst\\\" Write Point 2 \\\"samples\\\" Int 1 AAAAAA== \\\"strength\\\" Float 1 AAAAAA== 2 \\\"samples\\\" 1 1 \\\"strength\\\" 1 1 0\"\n  kernelSource \"kernel FlowKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> vectors; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    int samples;\\n    float strength;\\n\\n  void process(int2 pos) \\{\\n    float2 fpos = float2(pos.x, pos.y);\\n    float4 disp;\\n\\n    for (int i=0; i<samples; i++)\\n    \\{\\n      disp = bilinear(vectors, fpos.x, fpos.y);\\n      fpos += float2(disp.x, disp.y)*strength/samples;\\n    \\}\\n\\n    // Write the result to the output image\\n    float2 result = fpos - float2(pos.x, pos.y);\\n    dst() = float4(result.x, result.y, 0.0f, 0.0f);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  FlowKernel_samples {{parent.samples}}\n  FlowKernel_strength {{parent.scale}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 223\n  ypos 59\n }\nset Ne07e6000 [stack 0]\n Group {\n  name Vector2ToSTMap\n  xpos 362\n  ypos 65\n  addUserKnob {20 VtoU l \"Vector2 to STMap\"}\n  addUserKnob {41 in l Vector_Layer t \"Pick the layer containing your motion vectors.\" T UV_Channel.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -303\n   ypos 114\n  }\nset Ne07e7c00 [stack 0]\n  Shuffle {\n   name UV_Channel\n   xpos -163\n   ypos 114\n  }\n  Expression {\n   expr0 (r+x+0.5)/width\n   expr1 (g+y+0.5)/height\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Vectors_to_UV\n   xpos -163\n   ypos 228\n  }\npush $Ne07e7c00\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   alpha black\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos -303\n   ypos 228\n  }\n  Output {\n   name Output1\n   xpos -303\n   ypos 299\n  }\n end_group\nset Nf9650480 [stack 0]\npush $Nf9650480\npush $Ne07e6000\n Dot {\n  name Dot1\n  xpos 257\n  ypos 171\n }\npush $Nf9650480\n Input {\n  inputs 0\n  name img\n  xpos 515\n  ypos -53\n }\n STMap {\n  inputs 2\n  uv rgb\n  name STMap1\n  xpos 515\n  ypos 59\n }\n Switch {\n  inputs 3\n  which {{parent.output}}\n  name Switch1\n  xpos 515\n  ypos 167\n }\n Output {\n  name Output1\n  xpos 515\n  ypos 249\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ITransformU.gizmo",
    "content": "Group {\n name ITransformU\n tile_color 0xa57aaaff\n selected true\n addUserKnob {20 \"\" l Transform}\n addUserKnob {14 AdjBBox1_numpixels l \"Add Pixels\" +INVISIBLE R 0 100}\n AdjBBox1_numpixels 1024\n addUserKnob {41 channels T IDistort2.channels}\n addUserKnob {6 blackOutside_1 l \"Black Outside Before?\" +STARTLINE}\n addUserKnob {41 matrix T Transform1.matrix}\n addUserKnob {41 translate T Transform1.translate}\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform1.skewY}\n addUserKnob {41 center T Transform1.center}\n addUserKnob {22 setCenter l \"Set Center\" -STARTLINE T \"n = nuke.thisGroup()\\nw= n.width()\\nh=n.height()\\nn\\['center'].setValue(\\[w/2,h/2])\"}\n addUserKnob {41 filter_1 l filter T IDistort2.filter}\n addUserKnob {41 clamp T Transform1.clamp}\n addUserKnob {26 \"\"}\n addUserKnob {6 cropToFormat l \"Crop To Format\" +STARTLINE}\n addUserKnob {6 blackOutside2 l \"Black Outside After\" -STARTLINE}\n addUserKnob {14 addPixels l \"Add Pixels\" R 0 100}\n addUserKnob {41 mix T Transform3.mix}\n}\n Input {\n  inputs 0\n  name ctrlMask\n  xpos -40\n  ypos -338\n  number 1\n }\nset Nb4dbd80 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  alpha black\n  name Shuffle1\n  xpos -40\n  ypos -25\n }\nset Nb4e0070 [stack 0]\n Input {\n  inputs 0\n  name img\n  xpos -517\n  ypos -411\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -517\n  ypos -357\n  disable {{!parent.blackOutside_1}}\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -483\n  ypos -294\n }\nset Nb4fd6b0 [stack 0]\n Remove {\n  name Remove1\n  xpos -210\n  ypos -304\n }\nset Nb502b80 [stack 0]\npush $Nb4dbd80\n Merge2 {\n  inputs 2\n  Achannels {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -111\n  ypos -258\n }\n AdjBBox {\n  numpixels {{parent.AdjBBox1_numpixels}}\n  name AdjBBox1\n  xpos -111\n  ypos -232\n }\npush $Nb502b80\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos -210\n  ypos -232\n }\n Expression {\n  expr0 x\n  expr1 y\n  name Expression1\n  xpos -210\n  ypos -176\n }\nset Nb52e070 [stack 0]\n Dot {\n  name Dot2\n  xpos -286\n  ypos -172\n }\n TransformMasked {\n  channels rgba\n  translate {{parent.Transform1.translate} {parent.Transform1.translate}}\n  rotate {{parent.Transform1.rotate}}\n  scale {{parent.Transform1.scale} {parent.Transform1.scale}}\n  skewX {{parent.Transform1.skewX}}\n  skewY {{parent.Transform1.skewY}}\n  skew_order {{Transform1.skew_order}}\n  center {{parent.Transform1.center} {parent.Transform1.center}}\n  filter {{Transform1.filter}}\n  motionblur {{parent.Transform1.motionblur}}\n  shutter {{parent.Transform1.shutter}}\n  shutteroffset {{Transform1.shutteroffset}}\n  shuttercustomoffset {{parent.Transform1.shuttercustomoffset}}\n  name Transform3\n  xpos -320\n  ypos -121\n }\npush $Nb52e070\n Merge2 {\n  inputs 2\n  operation minus\n  bbox B\n  name Merge1\n  xpos -210\n  ypos -121\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge2\n  xpos -210\n  ypos -25\n }\nset Nb564c80 [stack 0]\n Dot {\n  name Dot1\n  xpos -270\n  ypos -21\n }\n Dot {\n  name Dot3\n  xpos -270\n  ypos 423\n }\npush $Nb4fd6b0\n Dot {\n  name Dot4\n  xpos -483\n  ypos 46\n }\nset Nb57e7a0 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.green\n  to1 rgba.green\n  name Copy2\n  xpos -517\n  ypos 407\n }\n IDistort {\n  channels none\n  name IDistort1\n  xpos -517\n  ypos 457\n }\npush $Nb4fd6b0\npush $Nb4fd6b0\n TransformMasked {\n  channels rgba\n  translate {{parent.Transform1.translate} {parent.Transform1.translate}}\n  rotate {{parent.Transform1.rotate}}\n  scale {{parent.Transform1.scale} {parent.Transform1.scale}}\n  skewX {{parent.Transform1.skewX}}\n  skewY {{parent.Transform1.skewY}}\n  skew_order {{Transform1.skew_order}}\n  center {{parent.Transform1.center} {parent.Transform1.center}}\n  filter {{Transform1.filter}}\n  motionblur {{parent.Transform1.motionblur}}\n  shutter {{parent.Transform1.shutter}}\n  shutteroffset {{Transform1.shutteroffset}}\n  shuttercustomoffset {{parent.Transform1.shuttercustomoffset}}\n  name Transform2\n  xpos -446\n  ypos -202\n }\n Merge2 {\n  inputs 2\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -446\n  ypos -123\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  name Crop1\n  xpos -446\n  ypos 182\n  disable {{!parent.cropToFormat}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AdjBBox {\n  numpixels {{parent.addPixels} {parent.addPixels}}\n  name AdjBBox3\n  xpos -446\n  ypos 208\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -412\n  ypos 364\n }\npush $Nb4e0070\npush $Nb564c80\npush $Nb57e7a0\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.green\n  to1 forward.v\n  bbox A\n  name Copy1\n  xpos -210\n  ypos 30\n }\nset Nb13fce0 [stack 0]\n Merge2 {\n  inputs 2\n  Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -40\n  ypos 108\n }\npush $Nb13fce0\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -210\n  ypos 114\n }\n AdjBBox {\n  numpixels {{parent.addPixels} {parent.addPixels}}\n  name AdjBBox2\n  xpos -210\n  ypos 140\n }\n IDistort {\n  uv forward\n  name IDistort2\n  selected true\n  xpos -210\n  ypos 187\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox3\n  xpos -210\n  ypos 360\n }\n Remove {\n  channels none\n  name Remove2\n  xpos -210\n  ypos 419\n }\n Copy {\n  inputs 2\n  from0 -rgba.alpha\n  to0 -rgba.alpha\n  bbox B\n  name Copy3\n  xpos -210\n  ypos 457\n }\n BlackOutside {\n  name BlackOutside2\n  xpos -210\n  ypos 538\n  disable {{!parent.blackOutside2}}\n }\n Output {\n  name Output1\n  xpos -210\n  ypos 634\n }\n Transform {\n  inputs 0\n  center {1220 901}\n  black_outside false\n  name Transform1\n  label \"expresison link this\\nto avoid st map overlay\"\n  xpos 51\n  ypos -201\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ImagePlane3D.gizmo",
    "content": "Group {\n name ImagePlane3D\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'inputChange':\\n    n\\['distanceAxis'].setVisible(n\\[\\\"isOn\\\"].value())\\n    n.knob('distance').setVisible(not n\\[\\\"isOn\\\"].value())\\n    \\nif k.name() == 'result':\\n    result = n.knob('result').getValue()\\n    if result == 0:\\n        n.knob('samples').setVisible(True)\\n        n.knob('motionblur').setVisible(False)\\n    elif result == 1 or result == 2 or result == 3 :\\n        n.knob('samples').setVisible(False)\\n        n.knob('motionblur').setVisible(True)\\n\"\n tile_color 0x634966ff\n label \"dist: \\[value distance]\"\n note_font \"DejaVu Sans\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 imagePlane3D l ImagePlane3D}\n addUserKnob {26 instructions l Instructions: T \"1.) Choose preview (Result) method.\\n2.) Set Ref Frame and Distance\\n3.) Bake FrameRange\\n4.) Export CornerPin\\n\\nUse this like cardToTrack, for exports\\nNot recommended to be plugged into stream\"}\n addUserKnob {26 text_1 l \" \" T \" \"}\n addUserKnob {4 output l \"<b><font color=skyblue>Output:\" M {Stabilize Matchmove \"\" \"\" \"\"}}\n addUserKnob {4 result l Result: M {\"3D Projection Setup (slow, accurate)\" \"Card3D Setup (fast, inaccurate)\" \"Live (Reconcile3D) (fast, buggy)\" \"Baked (Cornerpin) (best)\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 status l \" Status:\" T \"<font color=salmon> Is NOT Baked\"}\n addUserKnob {3 refFrame l \"Ref Frame\"}\n refFrame 1001\n addUserKnob {22 setRefFrame l \"Set Ref Frame\" -STARTLINE T \"n = nuke.thisNode()\\nref = n.knob('refFrame')\\nframe = nuke.frame()\\n\\nref.setValue(frame)\"}\n addUserKnob {1 operation +INVISIBLE}\n operation \"\\[value refFrame]\"\n addUserKnob {7 distance l DistanceFromCam R 0 1000}\n distance 500\n addUserKnob {22 bakeFramerange l \"<font color = lime>Bake FrameRange\" T \"import time\\nimport threading\\n\\nn = nuke.thisNode()\\n#Define this node\\n\\nstatus = n.knob(\\\"status\\\")\\nresult = n.knob('result')\\n\\nr1 = nuke.toNode(\\\"Reconcile3DTL\\\")\\nr2 = nuke.toNode(\\\"Reconcile3DTR\\\")\\nr3 = nuke.toNode(\\\"Reconcile3DBL\\\")\\nr4 = nuke.toNode(\\\"Reconcile3DBR\\\")\\nrL = \\[r1,r2,r3,r4]\\n# Define reconcile3D nodes\\n\\n#bcg = n.knob(\\\"bakeColors\\\")\\n\\ncps = nuke.toNode(\\\"CornerPin2DBakedStabilize\\\")\\ncpm = nuke.toNode(\\\"CornerPin2DBakedMatchmove\\\")\\n# Define cornerpin node\\n\\nfirst_frame = int(nuke.Root()\\['first_frame'].getValue())\\nlast_frame = int(nuke.Root()\\['last_frame'].getValue())\\n# Grab first and last frame from root\\n\\np = nuke.Panel(\\\"Execute on FrameRange\\\")\\np.addSingleLineInput('First Frame', first_frame)\\np.addSingleLineInput('Last Frame', last_frame)\\np.addSingleLineInput('Increment', 1)\\nif p.show():\\n# Create user input panel\\n    \\n    ff = int(p.value(\\\"First Frame\\\"))\\n    lf = int(p.value(\\\"Last Frame\\\"))\\n    i = int(p.value(\\\"Increment\\\"))\\n    # Define first, last, increment from user input panel\\n    \\n    #k = \\\"status\\\"\\n    l = \\\"<b> <font color=lime> Is Baked on Frames:\\\" + \\\" \\\" + str(ff) + \\\"-\\\" + str(lf)\\n    status.setValue(l)\\n    # Change status of node\\n    \\n    result.setValue(3)\\n    \\n    with n:\\n        r1\\[\\\"calc_output\\\"].setValue(0)\\n        r2\\[\\\"calc_output\\\"].setValue(0)\\n        r3\\[\\\"calc_output\\\"].setValue(0)\\n        r4\\[\\\"calc_output\\\"].setValue(0)\\n        # turn off live status of reconcile3Ds\\n        \\n        r1\\[\\\"output\\\"].clearAnimated()\\n        r1\\[\\\"outputxyz\\\"].clearAnimated()\\n        r2\\[\\\"output\\\"].clearAnimated()\\n        r2\\[\\\"outputxyz\\\"].clearAnimated()\\n        r3\\[\\\"output\\\"].clearAnimated()\\n        r3\\[\\\"outputxyz\\\"].clearAnimated()\\n        r4\\[\\\"output\\\"].clearAnimated()\\n        r4\\[\\\"outputxyz\\\"].clearAnimated()\\n        # Clear any data from all Reconcile3D nodes\\n    \\n        def execute(first,last,inc):\\n            runMe = True\\n            while runMe == True:\\n                nuke.execute(r1,first,last,inc)  \\n                nuke.execute(r2,first,last,inc)\\n                nuke.execute(r3,first,last,inc)\\n                nuke.execute(r4,first,last,inc)\\n                stop_event.set()\\n                runMe = False\\n                print ('Reconcile3Ds done')\\n                break\\n            # Define Reconcile3D execution function\\n    \\n        global stop_event \\n        stop_event = threading.Event()\\n        threading.Thread(target=execute, kwargs=dict(first=ff,last=lf,inc=i) ).start() \\n        while not stop_event.is_set():\\n            time.sleep(0.1)\\n        # run Reconcile3Ds with threading\\n    \\n        cps\\[\\\"from4\\\"].copyAnimations(r1\\[\\\"output\\\"].animations())\\n        cps\\[\\\"from3\\\"].copyAnimations(r2\\[\\\"output\\\"].animations())\\n        cps\\[\\\"from1\\\"].copyAnimations(r3\\[\\\"output\\\"].animations())\\n        cps\\[\\\"from2\\\"].copyAnimations(r4\\[\\\"output\\\"].animations())\\n        \\n        cpm\\[\\\"to4\\\"].copyAnimations(r1\\[\\\"output\\\"].animations())\\n        cpm\\[\\\"to3\\\"].copyAnimations(r2\\[\\\"output\\\"].animations())\\n        cpm\\[\\\"to1\\\"].copyAnimations(r3\\[\\\"output\\\"].animations())\\n        cpm\\[\\\"to2\\\"].copyAnimations(r4\\[\\\"output\\\"].animations())\\n        # copy reconcile3D values over to cornerpins\\n        \\n        r1\\[\\\"output\\\"].clearAnimated()\\n        r1\\[\\\"outputxyz\\\"].clearAnimated()\\n        r2\\[\\\"output\\\"].clearAnimated()\\n        r2\\[\\\"outputxyz\\\"].clearAnimated()\\n        r3\\[\\\"output\\\"].clearAnimated()\\n        r3\\[\\\"outputxyz\\\"].clearAnimated()\\n        r4\\[\\\"output\\\"].clearAnimated()\\n        r4\\[\\\"outputxyz\\\"].clearAnimated()\\n        # clear animation from live reconcile3Ds\\n        \\n        r1\\[\\\"calc_output\\\"].setValue(1)\\n        r2\\[\\\"calc_output\\\"].setValue(1)\\n        r3\\[\\\"calc_output\\\"].setValue(1)\\n        r4\\[\\\"calc_output\\\"].setValue(1)\\n        # make reconcile3ds live again\\n    \" +STARTLINE}\n addUserKnob {22 clearBaked l \"<font color = orangered>Clear Baked\" -STARTLINE T \"n = nuke.thisNode()\\nw = n.width()\\nh = n.height()\\nresult = n.knob('result')\\n\\ncps = nuke.toNode(\\\"CornerPin2DBakedStabilize\\\")\\ncpm = nuke.toNode(\\\"CornerPin2DBakedMatchmove\\\")\\nstatus = n.knob(\\\"status\\\")\\n\\ncpsfrom1 = cps.knob(\\\"from1\\\")\\ncpsfrom2 = cps.knob(\\\"from2\\\")\\ncpsfrom3 = cps.knob(\\\"from3\\\")\\ncpsfrom4 = cps.knob(\\\"from4\\\")\\n\\ncpmto1 = cpm.knob(\\\"to1\\\")\\ncpmto2 = cpm.knob(\\\"to2\\\")\\ncpmto3 = cpm.knob(\\\"to3\\\")\\ncpmto4 = cpm.knob(\\\"to4\\\")\\n\\ncpsfrom1.clearAnimated()\\ncpsfrom2.clearAnimated()\\ncpsfrom3.clearAnimated()\\ncpsfrom4.clearAnimated()\\ncpmto1.clearAnimated()\\ncpmto2.clearAnimated()\\ncpmto3.clearAnimated()\\ncpmto4.clearAnimated()\\n\\ncpsfrom1.setValue(0,0)\\ncpsfrom1.setValue(0,1)\\ncpsfrom2.setValue(w,0)\\ncpsfrom2.setValue(0,1)\\ncpsfrom3.setValue(w,0)\\ncpsfrom3.setValue(h,1)\\ncpsfrom4.setValue(0,0)\\ncpsfrom4.setValue(h,1)\\n\\ncpmto1.setValue(0,0)\\ncpmto1.setValue(0,1)\\ncpmto2.setValue(w,0)\\ncpmto2.setValue(0,1)\\ncpmto3.setValue(w,0)\\ncpmto3.setValue(h,1)\\ncpmto4.setValue(0,0)\\ncpmto4.setValue(h,1)\\n\\nstatus.setValue(\\\"<font color=salmon> Is NOT Baked\\\")\\nresult.setValue(2)\"}\n addUserKnob {22 exportBakedTrack l \"<font color = violet>Export Baked CornerPin\" T \"n = nuke.thisNode()\\n\\ncps = nuke.toNode(\\\"CornerPin2DBakedStabilize\\\")\\ncpsName = str(n.name())\\nrefFrame = int(n.knob(\\\"refFrame\\\").value())\\ndist = n.knob(\\\"distance\\\").value()\\noutput = n.knob('output').getValue()\\n\\ncpsfrom1 = cps.knob(\\\"from1\\\")\\ncpsfrom2 = cps.knob(\\\"from2\\\")\\ncpsfrom3 = cps.knob(\\\"from3\\\")\\ncpsfrom4 = cps.knob(\\\"from4\\\")\\n\\ncpsto1 = cps.knob(\\\"to1\\\")\\ncpsto2 = cps.knob(\\\"to2\\\")\\ncpsto3 = cps.knob(\\\"to3\\\")\\ncpsto4 = cps.knob(\\\"to4\\\")\\n\\nwith nuke.Root():\\n    posX = n.knob(\\\"xpos\\\").value()\\n    posY = n.knob(\\\"ypos\\\").value()\\n    nukescripts.clear_selection_recursive()\\n    \\n    cpn = None\\n    \\n    try: \\n        cpn = nuke.createNode('CProject')\\n        cpn.setName(\\\"CP_\\\" + cpsName + \\\"_\\\")\\n        cpn.knob('xpos').setValue(posX +100)\\n        cpn.knob('ypos').setValue(posY +70)\\n        cpn.autoplace()\\n        cpn.setInput(0, None)\\n        \\n        cpnto1 = cpn.knob('to1')\\n        cpnto2 = cpn.knob('to2')\\n        cpnto3 = cpn.knob('to3')\\n        cpnto4 = cpn.knob('to4')\\n        \\n        cpnfrom1 = cpn.knob('from1')\\n        cpnfrom2 = cpn.knob('from2')\\n        cpnfrom3 = cpn.knob('from3')\\n        cpnfrom4 = cpn.knob('from4')\\n        \\n        cpn.knob('refFrame').setValue(refFrame)\\n        \\n        cpnto1.copyAnimations(cpsfrom1.animations())\\n        cpnto2.copyAnimations(cpsfrom2.animations())\\n        cpnto3.copyAnimations(cpsfrom3.animations())\\n        cpnto4.copyAnimations(cpsfrom4.animations())\\n        \\n        cpnfrom1.setValue(cpsto1.getValueAt(refFrame))\\n        cpnfrom2.setValue(cpsto2.getValueAt(refFrame))\\n        cpnfrom3.setValue(cpsto3.getValueAt(refFrame))\\n        cpnfrom4.setValue(cpsto4.getValueAt(refFrame))\\n        \\n        cpn.knob('note_font_size').setValue(11)\\n        cpn\\['label'].setValue('dist: \\{\\}'.format(dist))\\n        cpn.knob('stabilize').setValue(1)\\n        cpn.knob('stabilize').setValue(1-output)\\n        cpn.knob('element').setValue(cpsName)\\n        \\n    except RuntimeError:\\n        pass\\n    \\n    if not cpn:\\n        cpn = nuke.createNode('CornerPin2D')\\n        cpn.setName(cpsName + \\\"_CnrPin\\\")\\n        cpn.knob('xpos').setValue(posX +100)\\n        cpn.knob('ypos').setValue(posY +70)\\n        cpn.autoplace()\\n        cpn.setInput(0, None)\\n        \\n        cpnto1 = cpn.knob('to1')\\n        cpnto2 = cpn.knob('to2')\\n        cpnto3 = cpn.knob('to3')\\n        cpnto4 = cpn.knob('to4')\\n        \\n        cpnfrom1 = cpn.knob('from1')\\n        cpnfrom2 = cpn.knob('from2')\\n        cpnfrom3 = cpn.knob('from3')\\n        cpnfrom4 = cpn.knob('from4')\\n        \\n        cpnfrom1.copyAnimations(cpsfrom1.animations())\\n        cpnfrom2.copyAnimations(cpsfrom2.animations())\\n        cpnfrom3.copyAnimations(cpsfrom3.animations())\\n        cpnfrom4.copyAnimations(cpsfrom4.animations())\\n        \\n        tab = nuke.Tab_Knob('settings', 'Settings')\\n        \\n        setCurrentFrameBtn = nuke.PyScript_Knob(\\\"setCurrentFrame\\\", \\\"Set to Current Frame\\\")\\n        setCurrentFrameBtn.setCommand('n = nuke.thisNode()\\\\nrefFrame = n.knob(\\\"refFrame\\\")\\\\nrefFrame.setValue(nuke.frame())\\\\nrefFrame = refFrame.getValue()\\\\noutput = n.knob(\\\"output\\\")\\\\nto1 = n.knob(\\\"to1\\\")\\\\nto2 = n.knob(\\\"to2\\\")\\\\nto3 = n.knob(\\\"to3\\\")\\\\nto4 = n.knob(\\\"to4\\\")\\\\nfrom1 = n.knob(\\\"from1\\\")\\\\nfrom2 = n.knob(\\\"from2\\\")\\\\nfrom3 = n.knob(\\\"from3\\\")\\\\nfrom4 = n.knob(\\\"from4\\\")\\\\nif output.getValue() == 0:\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\nif output.getValue() == 1:\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))')\\n        \\n        setFrameBtn = nuke.PyScript_Knob('setFrame', 'Set Frame')\\n        setFrameBtn.setCommand('n = nuke.thisNode()\\\\nrefFrame = n.knob(\\\\\\\"refFrame\\\\\\\").getValue()\\\\noutput = n.knob(\\\\\\\"output\\\\\\\")\\\\nto1 = n.knob(\\\\\\\"to1\\\\\\\")\\\\nto2 = n.knob(\\\\\\\"to2\\\\\\\")\\\\nto3 = n.knob(\\\\\\\"to3\\\\\\\")\\\\nto4 = n.knob(\\\\\\\"to4\\\\\\\")\\\\nfrom1 = n.knob(\\\\\\\"from1\\\\\\\")\\\\nfrom2 = n.knob(\\\\\\\"from2\\\\\\\")\\\\nfrom3 = n.knob(\\\\\\\"from3\\\\\\\")\\\\nfrom4 = n.knob(\\\\\\\"from4\\\\\\\")\\\\nif output.getValue() == 0:\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\nif output.getValue() == 1:\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))')\\n        \\n        StabBtn = nuke.PyScript_Knob(\\\"stabilize\\\", \\\"<font color=lime>Stabilize\\\")\\n        StabBtn.setFlag(nuke.STARTLINE)\\n        StabBtn.setCommand('n = nuke.thisNode()\\\\nstab = n.knob(\\\"stabilize\\\")\\\\nmatch = n.knob(\\\"matchmove\\\")\\\\noutput = n.knob(\\\"output\\\")\\\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\\\nif output.getValue() == 1:\\\\n    stab.setLabel(\\\"<font color=lime>Stabilize\\\")\\\\n    match.setLabel(\\\"<font color=salmon>Matchmove\\\")\\\\n    to1 = n.knob(\\\"to1\\\")\\\\n    to2 = n.knob(\\\"to2\\\")\\\\n    to3 = n.knob(\\\"to3\\\")\\\\n    to4 = n.knob(\\\"to4\\\")\\\\n    from1 = n.knob(\\\"from1\\\")\\\\n    from2 = n.knob(\\\"from2\\\")\\\\n    from3 = n.knob(\\\"from3\\\")\\\\n    from4 = n.knob(\\\"from4\\\")\\\\n    from1.copyAnimations(to1.animations())\\\\n    from2.copyAnimations(to2.animations())\\\\n    from3.copyAnimations(to3.animations())\\\\n    from4.copyAnimations(to4.animations())\\\\n    to1.clearAnimated()\\\\n    to2.clearAnimated()\\\\n    to3.clearAnimated()\\\\n    to4.clearAnimated()\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\n    output.setValue(0)')\\n        \\n        MatchBtn = nuke.PyScript_Knob(\\\"matchmove\\\", \\\"<font color=salmon>Matchmove\\\")\\n        MatchBtn.setCommand('n = nuke.thisNode()\\\\nstab = n.knob(\\\"stabilize\\\")\\\\nmatch = n.knob(\\\"matchmove\\\")\\\\noutput = n.knob(\\\"output\\\")\\\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\\\nif output.getValue() == 0:\\\\n    stab.setLabel(\\\"<font color=salmon>Stabilize\\\")\\\\n    match.setLabel(\\\"<font color=lime>Matchmove\\\")\\\\n    to1 = n.knob(\\\"to1\\\")\\\\n    to2 = n.knob(\\\"to2\\\")\\\\n    to3 = n.knob(\\\"to3\\\")\\\\n    to4 = n.knob(\\\"to4\\\")\\\\n    from1 = n.knob(\\\"from1\\\")\\\\n    from2 = n.knob(\\\"from2\\\")\\\\n    from3 = n.knob(\\\"from3\\\")\\\\n    from4 = n.knob(\\\"from4\\\")\\\\n    to1.copyAnimations(from1.animations())\\\\n    to2.copyAnimations(from2.animations())\\\\n    to3.copyAnimations(from3.animations())\\\\n    to4.copyAnimations(from4.animations())\\\\n    from1.clearAnimated()\\\\n    from2.clearAnimated()\\\\n    from3.clearAnimated()\\\\n    from4.clearAnimated()\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))\\\\n    output.setValue(1)')\\n        \\n        pulldownStatus = nuke.Enumeration_Knob('output', 'Output', \\['Stabilized', 'Matchmoved'])\\n        \\n        intFrame = nuke.Int_Knob(\\\"refFrame\\\", \\\"Ref Frame\\\")\\n        intFrame.setFlag(nuke.STARTLINE)\\n        cpn.addKnob(tab)\\n        \\n        cpn.addKnob(setCurrentFrameBtn)\\n        cpn.addKnob(intFrame)\\n        cpn.knob(\\\"refFrame\\\").setValue(refFrame)\\n        \\n        cpn.addKnob(setFrameBtn)\\n        \\n        cpn.addKnob(StabBtn)\\n        cpn.addKnob(MatchBtn)\\n        \\n        cpn.addKnob(pulldownStatus)\\n        cpn.knob('output').setVisible(False)\\n        \\n        cpnto1.setValue(cpnfrom1.getValueAt(refFrame))\\n        cpnto2.setValue(cpnfrom2.getValueAt(refFrame))\\n        cpnto3.setValue(cpnfrom3.getValueAt(refFrame))\\n        cpnto4.setValue(cpnfrom4.getValueAt(refFrame))\\n        \\n        cpn\\['label'].setValue('rf: \\[value refFrame] dist: \\{\\}'.format(dist))\\n        \" +STARTLINE}\n addUserKnob {22 exportLinkedTrack l \"<font color = violet>Export Linked CornerPin\" -STARTLINE T \"n = nuke.thisNode()\\n\\ncps = nuke.toNode(\\\"CornerPin2DBakedStabilize\\\")\\nnName = str(n.name())\\ncpsName = str(cps.name())\\nrefFrame = int(n.knob(\\\"refFrame\\\").value())\\ndist = n.knob(\\\"distance\\\").value()\\noutput = n.knob('output').getValue()\\n\\ncpsfrom1 = cps.knob(\\\"from1\\\")\\ncpsfrom2 = cps.knob(\\\"from2\\\")\\ncpsfrom3 = cps.knob(\\\"from3\\\")\\ncpsfrom4 = cps.knob(\\\"from4\\\")\\n\\nwith nuke.Root():\\n    posX = n.knob(\\\"xpos\\\").value()\\n    posY = n.knob(\\\"ypos\\\").value()\\n    \\n\\n    cpn = None\\n    try: \\n        cpn = nuke.createNode('CProject')\\n        cpn.setName(\\\"CP_\\\" + nName + \\\"_\\\")\\n        cpn.knob('xpos').setValue(posX +100)\\n        cpn.knob('ypos').setValue(posY +70)\\n        cpn.autoplace()\\n        cpn.setInput(0, None)\\n        \\n        cpnto1 = cpn.knob('to1')\\n        cpnto2 = cpn.knob('to2')\\n        cpnto3 = cpn.knob('to3')\\n        cpnto4 = cpn.knob('to4')\\n        \\n        cpnfrom1 = cpn.knob('from1')\\n        cpnfrom2 = cpn.knob('from2')\\n        cpnfrom3 = cpn.knob('from3')\\n        cpnfrom4 = cpn.knob('from4')\\n        \\n        cpn.knob('refFrame').setValue(refFrame)\\n        \\n        cpnto1.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from1\\\")\\n        cpnto2.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from2\\\")\\n        cpnto3.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from3\\\")\\n        cpnto4.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from4\\\")\\n        \\n        cpnfrom1.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"to1\\\")\\n        cpnfrom2.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"to2\\\")\\n        cpnfrom3.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"to3\\\")\\n        cpnfrom4.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"to4\\\")\\n    \\n        \\n        cpn.knob('note_font_size').setValue(11)\\n        cpn\\['label'].setValue('dist: \\[value \\{\\}.distance]'.format(nName))\\n        cpn.knob('stabilize').setValue(1)\\n        cpn.knob('stabilize').setValue(1-output)\\n        cpn.knob('element').setValue(nName)\\n        \\n        \\n    except RuntimeError:\\n        pass\\n    \\n    if not cpn:\\n        cpn = nuke.createNode('CornerPin2D')\\n        cpn.setName(nName + \\\"_CrnPn\\\")\\n        cpn.knob('xpos').setValue(posX +100)\\n        cpn.knob('ypos').setValue(posY +70)\\n        cpn.autoplace()\\n        cpn.setInput(0, None)\\n        \\n        cpnto1 = cpn.knob('to1')\\n        cpnto2 = cpn.knob('to2')\\n        cpnto3 = cpn.knob('to3')\\n        cpnto4 = cpn.knob('to4')\\n        \\n        cpnfrom1 = cpn.knob('from1')\\n        cpnfrom2 = cpn.knob('from2')\\n        cpnfrom3 = cpn.knob('from3')\\n        cpnfrom4 = cpn.knob('from4')\\n        \\n        cpnfrom1.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from1\\\")\\n        cpnfrom2.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from2\\\")\\n        cpnfrom3.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from3\\\")\\n        cpnfrom4.setExpression(nName + \\\".\\\" + cpsName + \\\".\\\" + \\\"from4\\\")\\n        \\n        tab = nuke.Tab_Knob('settings', 'Settings')\\n        \\n        setCurrentFrameBtn = nuke.PyScript_Knob(\\\"setCurrentFrame\\\", \\\"Set to Current Frame\\\")\\n        setCurrentFrameBtn.setCommand('n = nuke.thisNode()\\\\nrefFrame = n.knob(\\\"refFrame\\\")\\\\nrefFrame.setValue(nuke.frame())\\\\nrefFrame = refFrame.getValue()\\\\noutput = n.knob(\\\"output\\\")\\\\nto1 = n.knob(\\\"to1\\\")\\\\nto2 = n.knob(\\\"to2\\\")\\\\nto3 = n.knob(\\\"to3\\\")\\\\nto4 = n.knob(\\\"to4\\\")\\\\nfrom1 = n.knob(\\\"from1\\\")\\\\nfrom2 = n.knob(\\\"from2\\\")\\\\nfrom3 = n.knob(\\\"from3\\\")\\\\nfrom4 = n.knob(\\\"from4\\\")\\\\nif output.getValue() == 0:\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\nif output.getValue() == 1:\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))')\\n        \\n        setFrameBtn = nuke.PyScript_Knob('setFrame', 'Set Frame')\\n        setFrameBtn.setCommand('n = nuke.thisNode()\\\\nrefFrame = n.knob(\\\\\\\"refFrame\\\\\\\").getValue()\\\\noutput = n.knob(\\\\\\\"output\\\\\\\")\\\\nto1 = n.knob(\\\\\\\"to1\\\\\\\")\\\\nto2 = n.knob(\\\\\\\"to2\\\\\\\")\\\\nto3 = n.knob(\\\\\\\"to3\\\\\\\")\\\\nto4 = n.knob(\\\\\\\"to4\\\\\\\")\\\\nfrom1 = n.knob(\\\\\\\"from1\\\\\\\")\\\\nfrom2 = n.knob(\\\\\\\"from2\\\\\\\")\\\\nfrom3 = n.knob(\\\\\\\"from3\\\\\\\")\\\\nfrom4 = n.knob(\\\\\\\"from4\\\\\\\")\\\\nif output.getValue() == 0:\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\nif output.getValue() == 1:\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))')\\n        \\n        StabBtn = nuke.PyScript_Knob(\\\"stabilize\\\", \\\"<font color=lime>Stabilize\\\")\\n        StabBtn.setFlag(nuke.STARTLINE)\\n        StabBtn.setCommand('n = nuke.thisNode()\\\\nstab = n.knob(\\\"stabilize\\\")\\\\nmatch = n.knob(\\\"matchmove\\\")\\\\noutput = n.knob(\\\"output\\\")\\\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\\\nif output.getValue() == 1:\\\\n    stab.setLabel(\\\"<font color=lime>Stabilize\\\")\\\\n    match.setLabel(\\\"<font color=salmon>Matchmove\\\")\\\\n    to1 = n.knob(\\\"to1\\\")\\\\n    to2 = n.knob(\\\"to2\\\")\\\\n    to3 = n.knob(\\\"to3\\\")\\\\n    to4 = n.knob(\\\"to4\\\")\\\\n    from1 = n.knob(\\\"from1\\\")\\\\n    from2 = n.knob(\\\"from2\\\")\\\\n    from3 = n.knob(\\\"from3\\\")\\\\n    from4 = n.knob(\\\"from4\\\")\\\\n    from1.copyAnimations(to1.animations())\\\\n    from2.copyAnimations(to2.animations())\\\\n    from3.copyAnimations(to3.animations())\\\\n    from4.copyAnimations(to4.animations())\\\\n    to1.clearAnimated()\\\\n    to2.clearAnimated()\\\\n    to3.clearAnimated()\\\\n    to4.clearAnimated()\\\\n    to1.setValue(from1.getValueAt(refFrame))\\\\n    to2.setValue(from2.getValueAt(refFrame))\\\\n    to3.setValue(from3.getValueAt(refFrame))\\\\n    to4.setValue(from4.getValueAt(refFrame))\\\\n    output.setValue(0)')\\n        \\n        MatchBtn = nuke.PyScript_Knob(\\\"matchmove\\\", \\\"<font color=salmon>Matchmove\\\")\\n        MatchBtn.setCommand('n = nuke.thisNode()\\\\nstab = n.knob(\\\"stabilize\\\")\\\\nmatch = n.knob(\\\"matchmove\\\")\\\\noutput = n.knob(\\\"output\\\")\\\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\\\nif output.getValue() == 0:\\\\n    stab.setLabel(\\\"<font color=salmon>Stabilize\\\")\\\\n    match.setLabel(\\\"<font color=lime>Matchmove\\\")\\\\n    to1 = n.knob(\\\"to1\\\")\\\\n    to2 = n.knob(\\\"to2\\\")\\\\n    to3 = n.knob(\\\"to3\\\")\\\\n    to4 = n.knob(\\\"to4\\\")\\\\n    from1 = n.knob(\\\"from1\\\")\\\\n    from2 = n.knob(\\\"from2\\\")\\\\n    from3 = n.knob(\\\"from3\\\")\\\\n    from4 = n.knob(\\\"from4\\\")\\\\n    to1.copyAnimations(from1.animations())\\\\n    to2.copyAnimations(from2.animations())\\\\n    to3.copyAnimations(from3.animations())\\\\n    to4.copyAnimations(from4.animations())\\\\n    from1.clearAnimated()\\\\n    from2.clearAnimated()\\\\n    from3.clearAnimated()\\\\n    from4.clearAnimated()\\\\n    from1.setValue(to1.getValueAt(refFrame))\\\\n    from2.setValue(to2.getValueAt(refFrame))\\\\n    from3.setValue(to3.getValueAt(refFrame))\\\\n    from4.setValue(to4.getValueAt(refFrame))\\\\n    output.setValue(1)')\\n    \\n        pulldownStatus = nuke.Enumeration_Knob('output', 'Output', \\['Stabilized', 'Matchmoved'])\\n        \\n        intFrame = nuke.Int_Knob(\\\"refFrame\\\", \\\"Ref Frame\\\")\\n        intFrame.setFlag(nuke.STARTLINE)\\n        cpn.addKnob(tab)\\n        \\n        cpn.addKnob(setCurrentFrameBtn)\\n        cpn.addKnob(intFrame)\\n        cpn.knob(\\\"refFrame\\\").setValue(refFrame)\\n        \\n        cpn.addKnob(setFrameBtn)\\n        \\n        cpn.addKnob(StabBtn)\\n        cpn.addKnob(MatchBtn)\\n        \\n        cpn.addKnob(pulldownStatus)\\n        cpn.knob('output').setVisible(False)\\n        \\n        cpnto1.setValue(cpnfrom1.getValueAt(refFrame))\\n        cpnto2.setValue(cpnfrom2.getValueAt(refFrame))\\n        cpnto3.setValue(cpnfrom3.getValueAt(refFrame))\\n        cpnto4.setValue(cpnfrom4.getValueAt(refFrame))\\n        \\n        cpn\\['label'].setValue('rf: \\[value refFrame] dist: \\{\\}'.format(dist))\"}\n addUserKnob {41 isOn +INVISIBLE T isON.isOn}\n addUserKnob {7 distanceAxis l DistanceToAxis +HIDDEN R 0 1000}\n distanceAxis {{AxisDistance.NoOp1.distance}}\n addUserKnob {26 overscanSettings l \"<b><font color=skyblue>Overscan\"}\n addUserKnob {7 overscan l Overscan R 0 200}\n addUserKnob {26 mBlurSettings l \"<b><font color=skyblue>MotionBlur\"}\n addUserKnob {7 samples R 1 10}\n samples 1\n addUserKnob {7 motionblur +HIDDEN}\n addUserKnob {7 shutter R 0 2}\n shutter 0.5\n addUserKnob {41 shutteroffset l \"shutter offset\" T TimeBlur.shutteroffset}\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {26 info l \" \" T \"<span style=\\\"color:#666\\\"><b>ImagePlane3D v2.0</b> | <a style=\\\"color:#666;text-decoration: none;\\\">Tony Lyons</a> 2021</span>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x57614e00\n  label Live\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 1893\n  ypos 398\n  bdwidth 301\n  bdheight 350\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x3c472700\n  label Baked\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 2354\n  ypos 382\n  bdwidth 300\n  bdheight 358\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x5e443cff\n  label Card3D\n  note_font_size 100\n  note_font_color 0xffffffff\n  xpos 1129\n  ypos -908\n  bdwidth 400\n  bdheight 1690\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x686b5900\n  label \"Projection 3D setup\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos -13\n  ypos -827\n  bdwidth 735\n  bdheight 1748\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x44573100\n  label \"Corners of Cards \\nfor Reconcile 3D\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 1771\n  ypos -1109\n  bdwidth 763\n  bdheight 1355\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x555f6b00\n  label \"input cam\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 929\n  ypos -1247\n  bdwidth 267\n  bdheight 232\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode8\n  tile_color 0x4b5a2e00\n  label Camera\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos -638\n  ypos -401\n  bdwidth 442\n  bdheight 1189\n }\n Input {\n  inputs 0\n  name Inputcam\n  xpos -598\n  ypos -300\n  number 1\n }\nset Ndb8948a0 [stack 0]\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {10000}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  xpos 972\n  ypos -1126\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 993\n  ypos -974\n }\nset Ndbedd50 [stack 0]\n Dot {\n  name Dot23\n  label cam\n  note_font_size 41\n  xpos 1317\n  ypos -974\n }\n Axis2 {\n  translate {0 0 {-parent.Settings.camDistance}}\n  name CameraDistance\n  label \"dist to cam : \\[value translate.z]\"\n  xpos 1293\n  ypos -665\n }\n Axis2 {\n  uniform_scale {{(DummyCam.haperture/DummyCam.focal)*Settings.camDistance}}\n  name ScaleToFilmGateAxis\n  label \"uniform Scale : \\[value uniform_scale]\"\n  xpos 1293\n  ypos -539\n }\nset N2436b100 [stack 0]\n Axis2 {\n  scaling {1 {DummyCam.vaperture/parent.DummyCam.haperture} 1}\n  name AspectRatioScaleY\n  label \"scale Y : \\[value scaling.y]\"\n  xpos 2131\n  ypos -539\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 2155\n  ypos -419\n }\nset N256636e0 [stack 0]\n Card2 {\n  inputs 0\n  image_aspect false\n  rows 4\n  columns 4\n  control_points {3 3 3 6 \n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0} \n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0} \n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0} \n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0} \n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0} \n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0} \n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0} \n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0} \n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name ProjectionPlane\n  xpos 442\n  ypos -505\n }\n TransformGeo {\n  inputs 2\n  name AlignProjectionPlane1\n  xpos 442\n  ypos -422\n }\n FrameHold {\n  firstFrame {{parent.refFrame}}\n  name FrameHold1\n  xpos 442\n  ypos -345\n }\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 476\n  ypos -62\n }\nset Nebe4d210 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 296\n  ypos -62\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 296\n  ypos 1345\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 849\n  ypos 174\n }\n Reformat {\n  format {{{parent.input0.format}}}\n  pbb true\n  name Reformat1\n  xpos 849\n  ypos 250\n }\n Dot {\n  name Dot12\n  label img\n  note_font_size 41\n  xpos 883\n  ypos 333\n }\nset Nd6e98960 [stack 0]\n Dot {\n  name Dot7\n  label img\n  note_font_size 41\n  xpos 1686\n  ypos 333\n }\nset Nc81917a0 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 1967\n  ypos 334\n }\nset Ne1c9aa80 [stack 0]\n Dot {\n  name Dot6\n  label img\n  note_font_size 41\n  xpos 2428\n  ypos 334\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos 2428\n  ypos 482\n }\nset N7c6fb240 [stack 0]\n CornerPin2D {\n  to1 {0 0}\n  to2 {1920 0}\n  to3 {1920 1080}\n  to4 {0 1080}\n  invert false\n  motionblur {{parent.motionblur}}\n  shutter {{parent.shutter}}\n  shutteroffset {{parent.shutteroffset}}\n  from1 {{to1(refFrame)} {to1(refFrame)}}\n  from2 {{to2(refFrame)} {to2(refFrame)}}\n  from3 {{to3(refFrame)} {to3(refFrame)}}\n  from4 {{to4(refFrame)} {to4(refFrame)}}\n  name CornerPin2DBakedMatchmove\n  xpos 2535\n  ypos 572\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T \"import addOnCreateUU; addOnCreateUU.cornerPinZero()\"}\n }\npush $N7c6fb240\n CornerPin2D {\n  to1 {{from1(refFrame)} {from1(refFrame)}}\n  to2 {{from2(refFrame)} {from2(refFrame)}}\n  to3 {{from3(refFrame)} {from3(refFrame)}}\n  to4 {{from4(refFrame)} {from4(refFrame)}}\n  invert false\n  motionblur {{parent.motionblur}}\n  shutter {{parent.shutter}}\n  shutteroffset {{parent.shutteroffset}}\n  from1 {0 0}\n  from2 {1920 0}\n  from3 {1920 1080}\n  from4 {0 1080}\n  name CornerPin2DBakedStabilize\n  xpos 2394\n  ypos 572\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T \"import addOnCreateUU; addOnCreateUU.cornerPinZero()\"}\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch7\n  xpos 2394\n  ypos 650\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 2428\n  ypos 1281\n }\npush $Ne1c9aa80\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 1967\n  ypos 498\n }\nset N8c6f4770 [stack 0]\n CornerPin2D {\n  to1 {{parent.Reconcile3DBL.output} {parent.Reconcile3DBL.output}}\n  to2 {{parent.Reconcile3DBR.output} {parent.Reconcile3DBR.output}}\n  to3 {{parent.Reconcile3DTR.output} {parent.Reconcile3DTR.output}}\n  to4 {{parent.Reconcile3DTL.output} {parent.Reconcile3DTL.output}}\n  invert false\n  motionblur {{parent.motionblur}}\n  shutter {{parent.shutter}}\n  shutteroffset {{parent.shutteroffset}}\n  from1 {{to1(refFrame)} {to1(refFrame)}}\n  from2 {{to2(refFrame)} {to2(refFrame)}}\n  from3 {{to3(refFrame)} {to3(refFrame)}}\n  from4 {{to4(refFrame)} {to4(refFrame)}}\n  name CornerPin2DLiveMatchmove\n  xpos 2073\n  ypos 582\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T \"import addOnCreateUU; addOnCreateUU.cornerPinZero()\"}\n }\npush $N8c6f4770\n CornerPin2D {\n  to1 {{parent.Reconcile3DBL.output(refFrame)} {parent.Reconcile3DBL.output(refFrame)}}\n  to2 {{parent.Reconcile3DBR.output(refFrame)} {parent.Reconcile3DBR.output(refFrame)}}\n  to3 {{parent.Reconcile3DTR.output(refFrame)} {parent.Reconcile3DTR.output(refFrame)}}\n  to4 {{parent.Reconcile3DTL.output(refFrame)} {parent.Reconcile3DTL.output(refFrame)}}\n  invert false\n  motionblur {{parent.motionblur}}\n  shutter {{parent.shutter}}\n  shutteroffset {{parent.shutteroffset}}\n  from1 {{parent.Reconcile3DBL.output} {parent.Reconcile3DBL.output}}\n  from2 {{parent.Reconcile3DBR.output} {parent.Reconcile3DBR.output}}\n  from3 {{parent.Reconcile3DTR.output} {parent.Reconcile3DTR.output}}\n  from4 {{parent.Reconcile3DTL.output} {parent.Reconcile3DTL.output}}\n  name CornerPin2DLiveStabilize\n  xpos 1933\n  ypos 583\n  addUserKnob {20 User}\n  addUserKnob {22 \"set reference frame\" -STARTLINE T \"import addOnCreateUU; addOnCreateUU.cornerPinZero()\"}\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch5\n  xpos 1933\n  ypos 644\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 1967\n  ypos 785\n }\npush $N2436b100\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 1317\n  ypos -361\n }\nset Ne8192410 [stack 0]\npush $Ne8192410\n FrameHold {\n  firstFrame {{parent.refFrame}}\n  name FrameHold4\n  xpos 1418\n  ypos -293\n }\n Switch {\n  inputs 2\n  which {{!output}}\n  name Switch6\n  label \"\\[value which]\"\n  xpos 1283\n  ypos -224\n }\npush $Ndb8948a0\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -564\n  ypos -54\n }\nset N3330d7b0 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -564\n  ypos 271\n }\nset N2fd660 [stack 0]\n FrameHold {\n  firstFrame {{parent.refFrame}}\n  name FrameHold2\n  xpos -454\n  ypos 264\n }\nset Ne8392930 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -420\n  ypos 536\n }\npush $N2fd660\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -564\n  ypos 442\n }\nset Ncecf0100 [stack 0]\n Switch {\n  inputs 2\n  which {{!output}}\n  name Switch3\n  label \"\\[value which]\"\n  xpos -598\n  ypos 529\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -564\n  ypos 629\n }\nset N94c949b0 [stack 0]\npush $Nd6e98960\n Card3D {\n  inputs 3\n  translate {0 0 0}\n  format {{{parent.Reformat1.format}}}\n  shutter {{parent.shutter}}\n  shutteroffset {{parent.shutteroffset}}\n  name Card3D1\n  xpos 1283\n  ypos 625\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 1317\n  ypos 725\n }\npush $N94c949b0\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -564\n  ypos 736\n }\npush $Ne8392930\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos -282\n  ypos 271\n }\npush $Ncecf0100\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -316\n  ypos 435\n }\npush $Nd6e98960\n Dot {\n  name Dot29\n  label img\n  note_font_size 41\n  xpos 626\n  ypos 333\n }\n Project3D2 {\n  inputs 2\n  crop false\n  name Project3D1\n  xpos 592\n  ypos 432\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 626\n  ypos 520\n }\npush $Nebe4d210\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos 442\n  ypos 517\n }\n Reformat {\n  inputs 0\n  format {{{parent.input0.format}}}\n  resize none\n  pbb true\n  name Reformat2\n  xpos 591\n  ypos 733\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  overscan {{parent.overscan}}\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 442\n  ypos 733\n }\n TimeBlur {\n  divisions {{parent.samples}}\n  shutter {{parent.shutter}}\n  shutteroffset centred\n  shuttercustomoffset 0\n  name TimeBlur\n  xpos 442\n  ypos 833\n  disable {{\"divisions == 1 ? 1 : 0\"}}\n }\n Switch {\n  inputs 4\n  which {{\"result == 2 && !\\$gui == 1 ? 0 : result\"}}\n  name Switch1\n  xpos 442\n  ypos 1277\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch4\n  xpos 442\n  ypos 1342\n  disable true\n }\n Output {\n  name Output1\n  xpos 442\n  ypos 1423\n }\npush $N256636e0\n FrameHold {\n  firstFrame {{parent.refFrame}}\n  name FrameHold3\n  xpos 2121\n  ypos -309\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 2155\n  ypos -250\n }\nset N29568c60 [stack 0]\n Axis2 {\n  translate {0.5 0.5 0}\n  name TopRight\n  xpos 2043\n  ypos -178\n }\nset Ne8b853d0 [stack 0]\npush $Ndbedd50\n Dot {\n  name Dot20\n  label cam\n  note_font_size 41\n  xpos 993\n  ypos 11\n }\n Dot {\n  name Dot17\n  label cam\n  note_font_size 41\n  xpos 1837\n  ypos 11\n }\nset N2038c3c0 [stack 0]\npush $Nc81917a0\n Reconcile3D {\n  inputs 3\n  calc_output true\n  output {1201.555786 1134.033569}\n  outputxyz {-112.3282394 153.2042542 810.4436035}\n  name Reconcile3DTR\n  xpos 2033\n  ypos 103\n }\npush $N29568c60\n Axis2 {\n  translate {-0.5 -0.5 0}\n  name BottomLeft\n  xpos 2219\n  ypos -178\n }\nset Nd93484a0 [stack 0]\npush $N2038c3c0\npush $Nc81917a0\n Reconcile3D {\n  inputs 3\n  calc_output true\n  output {-433.5252991 34.41772079}\n  outputxyz {-20.63001251 54.64735413 679.4829102}\n  name Reconcile3DBL\n  xpos 2209\n  ypos 99\n }\npush $N29568c60\n Axis2 {\n  translate {0.5 -0.5 0}\n  name BottomRight\n  xpos 2358\n  ypos -184\n }\nset Nd7d973f0 [stack 0]\npush $N2038c3c0\npush $Nc81917a0\n Reconcile3D {\n  inputs 3\n  calc_output true\n  output {1267.329224 198.26091}\n  outputxyz {-120.8343277 61.53775787 808.7359009}\n  name Reconcile3DBR\n  xpos 2348\n  ypos 101\n }\npush $N29568c60\n Axis2 {\n  translate {-0.5 0.5 0}\n  name TopLeft\n  xpos 1883\n  ypos -180\n }\nset Nda020630 [stack 0]\npush $N2038c3c0\npush $Nc81917a0\n Reconcile3D {\n  inputs 3\n  calc_output true\n  output {-512.678894 1042.547974}\n  outputxyz {-12.12392426 146.3138428 681.1906128}\n  name Reconcile3DTL\n  xpos 1873\n  ypos 99\n }\npush $Nebe4d210\npush $Nd7d973f0\npush $Nd93484a0\npush $Ne8b853d0\npush $Nda020630\n Scene {\n  inputs 5\n  name SceneTest\n  xpos 2124\n  ypos -86\n }\n Input {\n  inputs 0\n  name InputAxis\n  xpos -382\n  ypos -301\n  number 2\n }\n NoOp {\n  name isON\n  xpos -382\n  ypos -248\n  addUserKnob {20 User}\n  addUserKnob {6 isOn +STARTLINE}\n  isOn {{\"\\[exists input2]\"}}\n }\npush $N3330d7b0\n Group {\n  inputs 2\n  name AxisDistance\n  tile_color 0x9c0000ff\n  xpos -382\n  ypos -57\n  addUserKnob {20 tab1 l TNT_AxisDistance}\n  addUserKnob {41 distance T NoOp1.distance}\n }\n  Output {\n   inputs 0\n   name Output1\n   xpos 488\n   ypos 194\n  }\n  Input {\n   inputs 0\n   name axis2\n   xpos 740\n   ypos -220\n   number 1\n  }\n  Axis2 {\n   name A2\n   xpos 750\n   ypos -150\n  }\n  NoOp {\n   inputs 0\n   name NoOp1\n   xpos 620\n   ypos -70\n   addUserKnob {20 User}\n   addUserKnob {7 distance R 0 100}\n   distance {{sqrt((pow2(parent.A1.world_matrix.3-parent.A2.world_matrix.3))+(pow2(parent.A1.world_matrix.7-parent.A2.world_matrix.7))+(pow2(parent.A1.world_matrix.11-parent.A2.world_matrix.11)))}}\n  }\n  Input {\n   inputs 0\n   name axis1\n   xpos 500\n   ypos -220\n  }\n  Axis2 {\n   name A1\n   xpos 510\n   ypos -150\n  }\n end_group\n NoOp {\n  name Settings\n  xpos -382\n  ypos 35\n  addUserKnob {20 User}\n  addUserKnob {7 camDistance l \"Camera Distance\" R 0 2000}\n  camDistance {{\"isOn == 0 ? parent.distance : AxisDistance.distance\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InjectMatteChannel.gizmo",
    "content": "Group {\n name InjectMatteChannel\n help \"this node creates a new single channel\\n<NewChannelName>.red and injects it into the stream before a deep recolor.\\n\\nThis workflow is to create single channel mattes for your elements in your deep combine tree.  which you can later pull out with a shuffle node after you have pre-rendered.\\n\\nThe benifit: you know what your elements look like deep combined, as a sanity check reference, and the pre-render itself has all the matte channels needed to recreate the deep render.\\n\\nWhen replacing your alpha, remember to unpremult(all), copy the holdout alpha, and premult(all)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'addPrefix':\\n    if n.knob('addPrefix').value() == 1:\\n        n.knob('prefix').setVisible(True)\\n    else:\\n        n.knob('prefix').setVisible(False)\\n\\nif k.name() == 'addPostfix':\\n    if n.knob('addPostfix').value() == 1:\\n        n.knob('postfix').setVisible(True)\\n    else:\\n        n.knob('postfix').setVisible(False)\"\n tile_color 0x272727ff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 InjectMatteChannel}\n addUserKnob {22 grabTitle l \"<b><font color = lightskyblue>Grab Title</font color = lightskyblue></b>\" t \"grabs title from either a stamp or a read node from the 'color' stream and fills in the 'new channel name' field\" T \"from stamps_config import defaultTitle\\n\\nn = nuke.thisNode()\\nncn = n.knob('newChannelName')\\n\\niNode = nuke.thisNode()\\n\\ndef upstream(iNode):\\n    found = False\\n    name = ''\\n    while found == False:\\n        \\n        if iNode.input(1) != None:\\n\\n            if iNode.input(1).Class() in \\['Read']:\\n                found = True\\n                name  = defaultTitle(iNode.input(0))\\n                \\n    \\n            elif iNode.input(1).Class() in \\['NoOp','PostageStamp']:   \\n                \\n                try: \\n                    found = True \\n                    name = iNode.input(1)\\['title'].value()           \\n                    \\n                except:\\n                    iNode = iNode.input(1)\\n            \\n                            \\n            else:\\n                iNode = iNode.input(1)\\n        else:\\n            nuke.message('please connect a read node or a stamp')\\n            found = True\\n            \\n    return name\\n      \\nname = upstream(iNode)\\nncn.setValue(name)\" +STARTLINE}\n addUserKnob {22 injectNewChannel l \"<b><font color = salmon>Inject New Channel</font color = salmon></b>\" t \"Copies the alpha from the color stream into a new channel <newChannel>.red into the stream  to be used as a matte when pulled out later down the stream.\" -STARTLINE T \"n = nuke.thisNode()\\ncd = n.knob('channelDisplay')\\ncs = n.knob('channel_select').value()\\nncn = n.knob('newChannelName').getValue()\\n\\nif n.knob('addPrefix').value() == 1 and n.knob('prefix').getValue() != '':\\n    prefix = n.knob('prefix').value() + '_'\\nelse:\\n    prefix = ''\\n    \\nif n.knob('addPostfix').value() == 1 and n.knob('postfix').getValue() != '':\\n    postfix = '_' + n.knob('postfix').value()\\nelse:\\n    postfix = ''\\n\\nchannelName = prefix+ncn+postfix\\n\\nwith n:\\n    nodeName = n.name()\\n    copy = nuke.toNode('Copy1')\\n    if channelName != '':\\n        channelName = ''.join(channelName.split('.'))\\n        channelName = '_'.join(channelName.split(' '))\\n        fullChannelName = channelName + '.red'\\n        nuke.Layer('\\{\\}'.format(channelName), \\[fullChannelName])\\n        copy.knob('from0').setValue('rgba.'+cs)\\n        copy.knob('to0').setValue(fullChannelName)\\n        copy.knob('tile_color').setValue(437918463)\\n        copy.knob('note_font_color').setValue(4280090879)\\n        \\ncd.setValue(fullChannelName)\\ncd.setVisible(True)\\nn.knob('note_font_color').setValue(4280090879)\\nn.knob('label').setValue('\\{\\} --> \\{\\}.red'.format(cs, channelName))\"}\n addUserKnob {22 reset l \"<b><font color = limegreen>Reset</font color = limegreen></b>\" t \"resets the node to default values\" -STARTLINE T \"n = nuke.thisNode()\\nncn = n.knob('newChannelName')\\ncd = n.knob('channelDisplay')\\nwith n:\\n    copy = nuke.toNode('Copy1')\\n    copy.knob('from0').setValue('rgba.alpha')\\n    copy.knob('to0').setValue('rgba.alpha')\\n    copy.knob('tile_color').setValue(2654757632)\\n    copy.knob('note_font_color').setValue(235802367)\\ncd.setValue('')\\ncd.setVisible(False)\\nncn.setValue('')\\nn.knob('note_font_color').setValue(4294967295)\\nn.knob('label').setValue('')\\nn.knob('addPrefix').setValue(0)\\nn.knob('addPostfix').setValue(0)\\nn.knob('prefix').setValue('ID')\\nn.knob('postfix').setValue('')\\nn.knob('channel_select').setValue('alpha')\"}\n addUserKnob {1 newChannelName l \"New Channel Name\"}\n addUserKnob {83 channel_select l \"Input Matte Channel\" M {red green blue alpha}}\n channel_select alpha\n addUserKnob {6 addPrefix l \"Add Prefix\" +STARTLINE}\n addUserKnob {6 addPostfix l \"Add Postfix\" -STARTLINE}\n addUserKnob {1 prefix +HIDDEN}\n prefix ID\n addUserKnob {1 postfix +HIDDEN}\n addUserKnob {1 channelDisplay l ---> +INVISIBLE}\n addUserKnob {41 bbox l \"Set BBox to \" T Copy1.bbox}\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {26 info l \" \" T \"<span style=\\\"color:#666\\\"><b>InjectMatteChannel v1.2</b> | <a style=\\\"color:#666;text-decoration: none;\\\">Tony Lyons</a> 2020</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmatte\n  xpos 192\n  ypos 456\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 378\n  ypos 319\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  tile_color 0x9e3c6300\n  note_font_color 0xe0e0eff\n  xpos 378\n  ypos 450\n }\n Output {\n  name Output1\n  xpos 378\n  ypos 641\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InverseMatrix33.gizmo",
    "content": "Group {\n inputs 0\n name InverseMatrix33_\n tile_color 0x337f4cff\n addUserKnob {20 tab_general l General}\n addUserKnob {1 knob_path}\n addUserKnob {26 \"\"}\n addUserKnob {41 id T assignID.matrix}\n addUserKnob {26 \"\"}\n addUserKnob {20 tab_math l math n 1}\n tab_math 0\n addUserKnob {7 m l determinant}\n m {{\"\\[value \\[value knob_path].\\[value id.0]] * \\n(( \\[value \\[value knob_path].\\[value id.4]] * \\[value \\[value knob_path].\\[value id.8]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.5]] * \\[value \\[value knob_path].\\[value id.7]] ))\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.1]] * \\n(( \\[value \\[value knob_path].\\[value id.3]] * \\[value \\[value knob_path].\\[value id.8]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.5]] * \\[value \\[value knob_path].\\[value id.6]] ))\\n\\n+\\n\\n\\[value \\[value knob_path].\\[value id.2]] * \\n(( \\[value \\[value knob_path].\\[value id.3]] * \\[value \\[value knob_path].\\[value id.7]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.4]] * \\[value \\[value knob_path].\\[value id.6]] ))\"}}\n addUserKnob {41 a l cofactor T co.matrix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 iMatrix T result.matrix}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.1}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"live&nbsp;inverse&nbsp;matrix<br>iMatrix33<br>iMatrix44\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Matrix {\n  inputs 0\n  matrix {\n      {0 1 2}\n      {4 5 6}\n      {8 9 10}\n    }\n  name assignID\n  xpos -40\n  ypos 65\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{\"pow(-1,0+0) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]]\\n)\"} {\"pow(-1,0+1) * (\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]\\n)\"} {\"pow(-1,0+2) * (\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]\\n)\"}}\n      {{\"pow(-1,1+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]\\n)\"} {\"pow(-1,1+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.6]]\\n)\"} {\"pow(-1,1+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]\\n)\"}}\n      {{\"pow(-1,2+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]\\n)\"} {\"pow(-1,2+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]\\n)\"} {\"pow(-1,2+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]]\\n)\"}}\n    }\n  name co\n  xpos 70\n  ypos 65\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{\"a.0==0 || m==0 ? 0 : a.0/m\"} {\"a.3==0 || m==0 ? 0 : a.3/m\"} {\"a.6==0 || m==0 ? 0 : a.6/m\"}}\n      {{\"a.1==0 || m==0 ? 0 : a.1/m\"} {\"a.4==0 || m==0 ? 0 : a.4/m\"} {\"a.7==0 || m==0 ? 0 : a.7/m\"}}\n      {{\"a.2==0 || m==0 ? 0 : a.2/m\"} {\"a.5==0 || m==0 ? 0 : a.5/m\"} {\"a.8==0 || m==0 ? 0 : a.8/m\"}}\n    }\n  name result\n  xpos 180\n  ypos 65\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InverseMatrix44.gizmo",
    "content": "Group {\n inputs 0\n name InverseMatrix44_\n tile_color 0x337f4cff\n addUserKnob {20 tab_general l General}\n addUserKnob {1 knob_path}\n addUserKnob {26 \"\"}\n addUserKnob {41 id T assignID.matrix}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_math l math n 1}\n grp_math 0\n addUserKnob {7 m l determinant}\n m {{\"\\[value \\[value knob_path].\\[value id.0]] * \\n(\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.1]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n+\\n\\n\\[value \\[value knob_path].\\[value id.2]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.3]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\"}}\n addUserKnob {41 a l cofactor T co.matrix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 iMatrix T result.matrix}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.1}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"live&nbsp;inverse&nbsp;matrix<br>iMatrix33<br>iMatrix44\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n Matrix {\n  inputs 0\n  matrix {\n      {0 1 2 3}\n      {4 5 6 7}\n      {8 9 10 11}\n      {12 13 14 15}\n    }\n  name assignID\n  xpos -150\n  ypos -255\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{\"pow(-1,0+0) * (\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+1) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+2) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+3) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n      {{\"pow(-1,1+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n      {{\"pow(-1,2+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n      {{\"pow(-1,3+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"} {\"pow(-1,3+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"}}\n    }\n  name co\n  xpos -44\n  ypos -255\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{\"a.0==0 || m==0 ? 0 : a.0/m\"} {\"a.4==0 || m==0 ? 0 : a.4/m\"} {\"a.8==0 || m==0 ? 0 : a.8/m\"} {\"a.12==0 || m==0 ? 0 : a.12/m\"}}\n      {{\"a.1==0 || m==0 ? 0 : a.1/m\"} {\"a.5==0 || m==0 ? 0 : a.5/m\"} {\"a.9==0 || m==0 ? 0 : a.9/m\"} {\"a.13==0 || m==0 ? 0 : a.13/m\"}}\n      {{\"a.2==0 || m==0 ? 0 : a.2/m\"} {\"a.6==0 || m==0 ? 0 : a.6/m\"} {\"a.10==0 || m==0 ? 0 : a.10/m\"} {\"a.14==0 || m==0 ? 0 : a.14/m\"}}\n      {{\"a.3==0 || m==0 ? 0 : a.3/m\"} {\"a.7==0 || m==0 ? 0 : a.7/m\"} {\"a.11==0 || m==0 ? 0 : a.11/m\"} {\"a.15==0 || m==0 ? 0 : a.15/m\"}}\n    }\n  name result\n  xpos 56\n  ypos -254\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InvertAxis.gizmo",
    "content": "Group {\n name InvertAxis\n help \"Inverts an input Axis\"\n tile_color 0x9c0000ff\n addUserKnob {20 InvertAxis l \"Invert Axis\"}\n addUserKnob {41 world_matrix l \"\" -STARTLINE T Out_Axis.world_matrix}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.1 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Axis2 {\n  inputs 0\n  useMatrix true\n  matrix {\n      {{Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15}}\n      {{Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15}}\n      {{Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15}}\n      {{Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} {Mid_Axis.matrix/Mid_Axis.matrix.15} 1}\n    }\n  name Out_Axis\n  xpos 816\n  ypos 668\n }\n Output {\n  name Output1\n  xpos 806\n  ypos 780\n }\n Input {\n  inputs 0\n  name Inputaxis\n  xpos 806\n  ypos 434\n }\n Axis2 {\n  name In_Axis\n  xpos 816\n  ypos 499\n }\n Axis2 {\n  inputs 0\n  useMatrix true\n  matrix {\n      {{In_Axis.world_matrix.5*In_Axis.world_matrix.10*In_Axis.world_matrix.15+In_Axis.world_matrix.6*In_Axis.world_matrix.11*In_Axis.world_matrix.13+In_Axis.world_matrix.7*In_Axis.world_matrix.9*In_Axis.world_matrix.14-In_Axis.world_matrix.5*In_Axis.world_matrix.11*In_Axis.world_matrix.14-In_Axis.world_matrix.6*In_Axis.world_matrix.9*In_Axis.world_matrix.15-In_Axis.world_matrix.7*In_Axis.world_matrix.10*In_Axis.world_matrix.13} {In_Axis.world_matrix.1*In_Axis.world_matrix.11*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.9*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.10*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.10*In_Axis.world_matrix.15-In_Axis.world_matrix.2*In_Axis.world_matrix.11*In_Axis.world_matrix.13-In_Axis.world_matrix.3*In_Axis.world_matrix.9*In_Axis.world_matrix.14} {In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.15+In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.13+In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.14-In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.13} {In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.10+In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.11+In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.9-In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.11-In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.9-In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.10}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.11*In_Axis.world_matrix.14+In_Axis.world_matrix.6*In_Axis.world_matrix.8*In_Axis.world_matrix.15+In_Axis.world_matrix.7*In_Axis.world_matrix.10*In_Axis.world_matrix.12-In_Axis.world_matrix.4*In_Axis.world_matrix.10*In_Axis.world_matrix.15-In_Axis.world_matrix.6*In_Axis.world_matrix.11*In_Axis.world_matrix.12-In_Axis.world_matrix.7*In_Axis.world_matrix.8*In_Axis.world_matrix.14} {In_Axis.world_matrix.0*In_Axis.world_matrix.10*In_Axis.world_matrix.15+In_Axis.world_matrix.2*In_Axis.world_matrix.11*In_Axis.world_matrix.12+In_Axis.world_matrix.3*In_Axis.world_matrix.8*In_Axis.world_matrix.14-In_Axis.world_matrix.0*In_Axis.world_matrix.11*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.8*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.10*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.15-In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.12-In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.14} {In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.11+In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.8+In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.10-In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.10-In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.11-In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.8}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.9*In_Axis.world_matrix.15+In_Axis.world_matrix.5*In_Axis.world_matrix.11*In_Axis.world_matrix.12+In_Axis.world_matrix.7*In_Axis.world_matrix.8*In_Axis.world_matrix.13-In_Axis.world_matrix.4*In_Axis.world_matrix.11*In_Axis.world_matrix.13-In_Axis.world_matrix.5*In_Axis.world_matrix.8*In_Axis.world_matrix.15-In_Axis.world_matrix.7*In_Axis.world_matrix.9*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.11*In_Axis.world_matrix.13+In_Axis.world_matrix.1*In_Axis.world_matrix.8*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.9*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.9*In_Axis.world_matrix.15-In_Axis.world_matrix.1*In_Axis.world_matrix.11*In_Axis.world_matrix.12-In_Axis.world_matrix.3*In_Axis.world_matrix.8*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.15+In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.12+In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.13-In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.9+In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.11+In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.8-In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.11-In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.8-In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.9}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.10*In_Axis.world_matrix.13+In_Axis.world_matrix.5*In_Axis.world_matrix.8*In_Axis.world_matrix.14+In_Axis.world_matrix.6*In_Axis.world_matrix.9*In_Axis.world_matrix.12-In_Axis.world_matrix.4*In_Axis.world_matrix.9*In_Axis.world_matrix.14-In_Axis.world_matrix.5*In_Axis.world_matrix.10*In_Axis.world_matrix.12-In_Axis.world_matrix.6*In_Axis.world_matrix.8*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.9*In_Axis.world_matrix.14+In_Axis.world_matrix.1*In_Axis.world_matrix.10*In_Axis.world_matrix.12+In_Axis.world_matrix.2*In_Axis.world_matrix.8*In_Axis.world_matrix.13-In_Axis.world_matrix.0*In_Axis.world_matrix.10*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.8*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.9*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.13+In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.14-In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.12-In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.10+In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.8+In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.9-In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.9-In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.10-In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.8}}\n    }\n  name Mid_Axis\n  xpos 700\n  ypos 601\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InvertMatrix4.gizmo",
    "content": "Group {\n name InvertMatrix4_\n help \"Invert a pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n knobChanged \"node = nuke.thisNode()\\nknob = nuke.thisKnob()\\n\\nif knob.name() == \\\"inputChange\\\":\\n    with node:\\n        format_knob = nuke.toNode('Constant1')\\['format']\\n    if node.input(0):\\n        format_knob.setEnabled(False)\\n    else:\\n        format_knob.setEnabled(True)\\n\"\n selected true\n xpos -2208\n ypos 688\n addUserKnob {20 Matrix4 l InvertMatrix4}\n addUserKnob {26 Description l \"\" +STARTLINE T \"Invert matrix channels\"}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Inputmatrix\n  xpos 276\n  ypos 144\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 310\n  ypos 296\n }\nset N120b6ee0 [stack 0]\n Dot {\n  name Dot20\n  tile_color 0xcccccc00\n  xpos 456\n  ypos 296\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Shuffle {\n  in matrix0\n  name Shuffle1\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 422\n  ypos 343\n }\nset N14561c90 [stack 0]\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Shuffle {\n  in matrix1\n  name Shuffle2\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 422\n  ypos 383\n }\nset N1c218280 [stack 0]\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Shuffle {\n  in matrix2\n  name Shuffle3\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 422\n  ypos 419\n }\nset N1c736ac0 [stack 0]\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Shuffle {\n  in matrix3\n  name Shuffle4\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 422\n  ypos 456\n }\n Dot {\n  name Dot8\n  tile_color 0x9e3c6300\n  xpos 707\n  ypos 465\n }\nset N142755e0 [stack 0]\n Dot {\n  name Dot11\n  tile_color 0x9e3c6300\n  xpos 831\n  ypos 465\n }\nset N11330380 [stack 0]\n Dot {\n  name Dot12\n  tile_color 0x9e3c6300\n  xpos 965\n  ypos 465\n }\nset N1b902700 [stack 0]\n Dot {\n  name Dot16\n  tile_color 0x9e3c6300\n  xpos 1113\n  ypos 465\n }\npush $N1c736ac0\n Dot {\n  name Dot7\n  tile_color 0x9e3c6300\n  xpos 666\n  ypos 428\n }\nset N1c6f5ac0 [stack 0]\n Dot {\n  name Dot10\n  tile_color 0x9e3c6300\n  xpos 821\n  ypos 428\n }\nset N1e8d5010 [stack 0]\n Dot {\n  name Dot13\n  tile_color 0x9e3c6300\n  xpos 949\n  ypos 428\n }\nset N1133ec50 [stack 0]\n Dot {\n  name Dot17\n  tile_color 0x9e3c6300\n  xpos 1100\n  ypos 428\n }\npush $N1c218280\n Dot {\n  name Dot6\n  tile_color 0x9e3c6300\n  xpos 637\n  ypos 392\n }\nset N1c7017f0 [stack 0]\n Dot {\n  name Dot9\n  tile_color 0x9e3c6300\n  xpos 808\n  ypos 392\n }\nset N11323810 [stack 0]\n Dot {\n  name Dot14\n  tile_color 0x9e3c6300\n  xpos 927\n  ypos 392\n }\nset N1eabc3d0 [stack 0]\n Dot {\n  name Dot18\n  tile_color 0x9e3c6300\n  xpos 1084\n  ypos 392\n }\npush $N14561c90\n Dot {\n  name Dot5\n  tile_color 0x9e3c6300\n  xpos 592\n  ypos 352\n }\nset N1e9a4770 [stack 0]\n Dot {\n  name Dot4\n  tile_color 0x9e3c6300\n  xpos 776\n  ypos 352\n }\nset N1c087c20 [stack 0]\n Dot {\n  name Dot15\n  tile_color 0x9e3c6300\n  xpos 905\n  ypos 352\n }\nset N1ec479e0 [stack 0]\n Dot {\n  name Dot19\n  tile_color 0x9e3c6300\n  xpos 1068\n  ypos 352\n }\n BlinkScript {\n  inputs 4\n  recompileCount 14\n  ProgramGroup 1\n  KernelDescription \"2 \\\"InvertMatrix4\\\" iterate pixelWise 24c0b57d50e6fc4d3de1ddabffc2c534b1cd8bf00f432f09e06cab24b7b23d50 5 \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"matrix3\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n  kernelSource \"kernel InvertMatrix4 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix3; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n    SampleType(matrix3) m3 = matrix3();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float4x4  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[0]\\[3] = m0.w;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[1]\\[3] = m1.w;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n    matrix\\[2]\\[3] = m2.w;\\n    matrix\\[3]\\[0] = m3.x;\\n    matrix\\[3]\\[1] = m3.y;\\n    matrix\\[3]\\[2] = m3.z;\\n    matrix\\[3]\\[3] = m3.w;\\n\\n    // Inverse the matrix\\n    matrix = matrix.invert();\\n\\n    // Write the result to the output image\\n    dst() = float4(matrix\\[3]\\[0], matrix\\[3]\\[1], matrix\\[3]\\[2], matrix\\[3]\\[3]);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript4\n  xpos 1034\n  ypos 579\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 1068\n  ypos 866\n }\npush $N1b902700\npush $N1133ec50\npush $N1eabc3d0\npush $N1ec479e0\n BlinkScript {\n  inputs 4\n  recompileCount 14\n  ProgramGroup 1\n  KernelDescription \"2 \\\"InvertMatrix4\\\" iterate pixelWise 18ad5fdc0440a3820ed7a9939c0cfbbf7fad1323aed420c38542f1e186aa8c86 5 \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"matrix3\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n  kernelSource \"kernel InvertMatrix4 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix3; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n    SampleType(matrix3) m3 = matrix3();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float4x4  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[0]\\[3] = m0.w;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[1]\\[3] = m1.w;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n    matrix\\[2]\\[3] = m2.w;\\n    matrix\\[3]\\[0] = m3.x;\\n    matrix\\[3]\\[1] = m3.y;\\n    matrix\\[3]\\[2] = m3.z;\\n    matrix\\[3]\\[3] = m3.w;\\n\\n    // Inverse the matrix\\n    matrix = matrix.invert();\\n\\n    // Write the result to the output image\\n    dst() = float4(matrix\\[2]\\[0], matrix\\[2]\\[1], matrix\\[2]\\[2], matrix\\[2]\\[3]);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript3\n  xpos 871\n  ypos 585\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 905\n  ypos 776\n }\npush $N11330380\npush $N1e8d5010\npush $N11323810\npush $N1c087c20\n BlinkScript {\n  inputs 4\n  recompileCount 14\n  ProgramGroup 1\n  KernelDescription \"2 \\\"InvertMatrix4\\\" iterate pixelWise e9f630cc235826bda0787271e2c79d1689a8462ddf208e8692d52b548c8b67e3 5 \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"matrix3\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n  kernelSource \"kernel InvertMatrix4 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix3; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n    SampleType(matrix3) m3 = matrix3();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float4x4  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[0]\\[3] = m0.w;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[1]\\[3] = m1.w;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n    matrix\\[2]\\[3] = m2.w;\\n    matrix\\[3]\\[0] = m3.x;\\n    matrix\\[3]\\[1] = m3.y;\\n    matrix\\[3]\\[2] = m3.z;\\n    matrix\\[3]\\[3] = m3.w;\\n\\n    // Inverse the matrix\\n    matrix = matrix.invert();\\n\\n    // Write the result to the output image\\n    dst() = float4(matrix\\[1]\\[0], matrix\\[1]\\[1], matrix\\[1]\\[2], matrix\\[1]\\[3]);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos 742\n  ypos 581\n }\n Dot {\n  name Dot37\n  tile_color 0xcccccc00\n  xpos 776\n  ypos 692\n }\npush $N142755e0\npush $N1c6f5ac0\npush $N1c7017f0\npush $N1e9a4770\n BlinkScript {\n  inputs 4\n  recompileCount 15\n  ProgramGroup 1\n  KernelDescription \"2 \\\"InvertMatrix4\\\" iterate pixelWise 13aa95e9193320b60408dcef52f07d536b6bc8570746ebe3a513989e032825a7 5 \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"matrix3\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n  kernelSource \"kernel InvertMatrix4 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix3; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n    SampleType(matrix3) m3 = matrix3();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float4x4  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[0]\\[3] = m0.w;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[1]\\[3] = m1.w;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n    matrix\\[2]\\[3] = m2.w;\\n    matrix\\[3]\\[0] = m3.x;\\n    matrix\\[3]\\[1] = m3.y;\\n    matrix\\[3]\\[2] = m3.z;\\n    matrix\\[3]\\[3] = m3.w;\\n\\n    // Inverse the matrix\\n    matrix = matrix.invert();\\n\\n    // Write the result to the output image\\n    dst() = float4(matrix\\[0]\\[0], matrix\\[0]\\[1], matrix\\[0]\\[2], matrix\\[0]\\[3]);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript1\n  selected true\n  xpos 558\n  ypos 588\n }\npush $N120b6ee0\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix0.0\n  from1 rgba.green\n  to1 matrix0.1\n  from2 rgba.blue\n  to2 matrix0.2\n  from3 rgba.alpha\n  to3 matrix0.3\n  bbox B\n  name Copy2\n  xpos 276\n  ypos 569\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix1.0\n  from1 rgba.green\n  to1 matrix1.1\n  from2 rgba.blue\n  to2 matrix1.2\n  from3 rgba.alpha\n  to3 matrix1.3\n  bbox B\n  name Copy1\n  xpos 276\n  ypos 664\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix2.0\n  from1 rgba.green\n  to1 matrix2.1\n  from2 rgba.blue\n  to2 matrix2.2\n  from3 rgba.alpha\n  to3 matrix2.3\n  bbox B\n  name Copy4\n  xpos 276\n  ypos 748\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix3.0\n  from1 rgba.green\n  to1 matrix3.1\n  from2 rgba.blue\n  to2 matrix3.2\n  from3 rgba.alpha\n  to3 matrix3.3\n  bbox B\n  name Copy5\n  xpos 276\n  ypos 838\n }\n Output {\n  name Output1\n  xpos 276\n  ypos 1059\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KeyChew.gizmo",
    "content": "Group {\n name KeyChew\n help \"Cheaply dilates and erodes a matte\"\n onCreate \"n = nuke.thisNode()\\nn.knob(\\\"shrinkDilate\\\").setRange(-50,50)\\n\"\n tile_color 0x878787ff\n selected true\n addUserKnob {20 User l Keychew}\n addUserKnob {14 shrinkDilate l \"Shrink / Dilate\" R -50 50}\n addUserKnob {41 filter l \"\" -STARTLINE T Blur1.filter}\n addUserKnob {7 contrast l Contrast R 0 10}\n addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n addUserKnob {41 filter_1 l \"\" -STARTLINE T Blur11.filter}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 created l created: T \"1/1/2015 by <a href=\\\\'http://movingimagearts.com'> Rafal Kaniewski</a>\"}\n addUserKnob {26 adjustments l \"adjustments by:\" T \"Igor Gama + Tony Lyons\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 327\n  ypos 707\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 180\n  ypos 104\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 214\n  ypos 161\n }\nset Nea18d320 [stack 0]\n Blur {\n  channels alpha\n  size {{abs(shrinkDilate) x1004 8} {abs(shrinkDilate) x1004 8}}\n  filter quadratic\n  crop false\n  name Blur1\n  xpos 180\n  ypos 221\n  addUserKnob {20 User}\n  addUserKnob {7 Chew R -300 300}\n  Chew 106\n }\n Invert {\n  channels alpha\n  name Invert2\n  xpos 180\n  ypos 320\n  disable {{parent.Invert3.disable}}\n }\n Grade {\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  white {{abs(shrinkDilate)+1 x1004 1.32}}\n  gamma {{1/abs(abs(shrinkDilate)/(1-contrast+10)+1)}}\n  black_clamp false\n  name Grade3\n  xpos 180\n  ypos 371\n }\n Invert {\n  channels alpha\n  name Invert3\n  xpos 180\n  ypos 424\n  disable {{shrinkDilate>0?1:0}}\n }\n Clamp {\n  channels alpha\n  name Clamp5\n  xpos 180\n  ypos 494\n }\n Blur {\n  channels alpha\n  size {{parent.postBlur} {parent.postBlur}}\n  crop false\n  name Blur11\n  xpos 180\n  ypos 594\n }\npush $Nea18d320\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 63\n  ypos 161\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 63\n  ypos 710\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge rgba\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 180\n  ypos 707\n }\n Output {\n  name Output1\n  xpos 180\n  ypos 772\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KeymixBBox.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n inputs 3\n name KeymixBBox\n tile_color 0x4b5ec6ff\n selected true\n addUserKnob {20 KeymixBBox}\n addUserKnob {41 channels T Keymix8.channels}\n addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n addUserKnob {41 mix T Keymix8.mix}\n addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 531\n  ypos -493\n  number 2\n }\nset N8e543ea0 [stack 0]\n Input {\n  inputs 0\n  name InputA\n  xpos 189\n  ypos -485\n  number 1\n }\nset Ncfd3cc70 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  bbox intersection\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 285\n  ypos -410\n }\nset Nc1bc290 [stack 0]\npush $N8e543ea0\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos 531\n  ypos -350\n }\npush $Nc1bc290\npush $Ncfd3cc70\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 189\n  ypos -350\n }\n Input {\n  inputs 0\n  name InputB\n  xpos 378\n  ypos -493\n }\n Keymix {\n  inputs 3\n  channels rgba\n  name Keymix8\n  selected true\n  xpos 378\n  ypos -350\n }\n Output {\n  name Output1\n  xpos 378\n  ypos -249\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KillOutline.gizmo",
    "content": "Group {\n name KillOutline\n help \"KillOutline reduces unwanted outlines from keyed footage.\\n\\nerode controls: erode the alpha in for the amount of the visible outline.\\n\\nexpand controls: expand outer pixels of eroded image out again until it reaches the edge of the original alpha.\\n\\ntransition treatment: if needed, blur the transition between original image and extension.\"\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 Settings}\n addUserKnob {26 title l \"\" +STARTLINE T \"KillOutline by Andreas Frickinger\"}\n addUserKnob {26 expectation l \"\" +STARTLINE T \"expects premultiplied input.\"}\n addUserKnob {26 text_2 l \"Erode Controls\"}\n addUserKnob {41 erodeSize l \"erode size\" t \"alpha gets eroded in by this amount.\" T GizmoControl.erodeSize}\n addUserKnob {26 text l \"Expand Controls\"}\n addUserKnob {41 slices T EdgeExtend2.slices}\n addUserKnob {41 slice_width l \"slice width\" T EdgeExtend2.slice_width}\n addUserKnob {41 expandSize l \"expand size\" t \"outer pixels of eroded image gets dilated out by this amount. \" T EdgeExtend2.blurResult}\n addUserKnob {26 text_1 l \"Transition Treatment\"}\n addUserKnob {41 transitionTreatmentSwitch l on/off T GizmoControl.transitionTreatmentSwitch}\n addUserKnob {41 edgeSize l \"edge size\" t \"size of transition edge.\" T GizmoControl.edgeSize}\n addUserKnob {41 edgeBlur l \"edge blur\" t \"blur size of transition edge.\" T GizmoControl.edgeBlur}\n addUserKnob {41 size l \"image blur\" t \"blur size of image, masked out by transition edge.\" T TransitionBlur.size}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 mix l Mix}\n mix 1\n}\n NoOp {\n  inputs 0\n  name GizmoControl\n  xpos 1425\n  ypos 254\n  addUserKnob {20 User}\n  addUserKnob {6 transitionTreatmentSwitch l on/off +STARTLINE}\n  transitionTreatmentSwitch true\n  addUserKnob {7 edgeBlur l \"edge blur\" R 0 100}\n  edgeBlur 3\n  addUserKnob {7 edgeSize l \"edge size\" R -1 10}\n  edgeSize 1\n  addUserKnob {7 erodeSize l \"erode size\" R 0 10}\n  erodeSize 1.25\n }\n Input {\n  inputs 0\n  name mask\n  xpos 1465\n  ypos 775\n  number 1\n }\n Invert {\n  name Invert1\n  xpos 1465\n  ypos 829\n }\nset N5ebf700 [stack 0]\n Dot {\n  name Dot17\n  xpos 1499\n  ypos 1152\n }\n Input {\n  inputs 0\n  name img\n  xpos 833\n  ypos -395\n }\n Dot {\n  name Dot5\n  xpos 867\n  ypos -311\n }\nset N1b631370 [stack 0]\n Unpremult {\n  name UnpremultInput\n  xpos 833\n  ypos -241\n }\n Dot {\n  name Dot3\n  xpos 867\n  ypos -144\n }\nset N1b63ca60 [stack 0]\n Dot {\n  name Dot4\n  xpos 867\n  ypos 371\n }\n Dot {\n  name Dot1\n  xpos 923\n  ypos 370\n }\nset N5e11630 [stack 0]\n Dot {\n  name Dot2\n  xpos 923\n  ypos 671\n }\nset N5e15260 [stack 0]\n Dot {\n  name Dot18\n  xpos 923\n  ypos 1061\n }\npush $N1b63ca60\n Shuffle {\n  red black\n  green black\n  blue black\n  name AlphaOnly\n  xpos 1250\n  ypos -147\n }\n Erode {\n  size {{GizmoControl.erodeSize i}}\n  name ErodeShrink\n  xpos 1250\n  ypos 38\n }\nset N5e37a90 [stack 0]\n Dot {\n  name Dot10\n  xpos 1657\n  ypos 47\n }\n EdgeDetectWrapper {\n  channels alpha\n  erodesize {{GizmoControl.edgeSize*-1 i}}\n  blursize {{abs(erodesize) i} {abs(erodesize)*3 i}}\n  name EdgeDetectWrapper1\n  xpos 1623\n  ypos 257\n }\n Blur {\n  size {{GizmoControl.edgeBlur i}}\n  name EdgeBlur\n  xpos 1623\n  ypos 321\n }\n Dot {\n  name Dot14\n  xpos 1657\n  ypos 572\n }\nset N1b2dc4f0 [stack 0]\npush $N5e37a90\npush $N5e11630\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 1250\n  ypos 362\n }\n Premult {\n  name Premult2\n  xpos 1250\n  ypos 457\n }\nset N5e8d4b0 [stack 0]\n Dot {\n  name Dot12\n  xpos 1102\n  ypos 460\n }\n Blur {\n  inputs 1+1\n  size {{parent.TransitionBlur.size i}}\n  name TransitionBlur1\n  xpos 1068\n  ypos 563\n  disable {{(GizmoControl.transitionTreatmentSwitch-1)*-1 i}}\n }\npush $N5e15260\n Expression {\n  expr3 a==0?0:a\n  name Expression1\n  xpos 982\n  ypos 668\n }\nset N5e7f060 [stack 0]\n Dot {\n  name Dot19\n  xpos 1016\n  ypos 981\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge3\n  xpos 1068\n  ypos 978\n }\npush $N1b2dc4f0\n Dot {\n  name Dot9\n  xpos 1657\n  ypos 605\n }\nset N5ed5b20 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge4\n  xpos 1623\n  ypos 978\n }\n Clamp {\n  channels alpha\n  name Clamp1\n  xpos 1623\n  ypos 1002\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Max\n  xpos 1623\n  ypos 1058\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge5\n  xpos 1623\n  ypos 1149\n }\n Dot {\n  name Dot13\n  xpos 1657\n  ypos 1226\n }\npush $N5ebf700\npush $N1b631370\n Dot {\n  name Dot6\n  xpos 585\n  ypos -311\n }\n Dot {\n  name Dot7\n  xpos 585\n  ypos 839\n }\n Dot {\n  name Dot8\n  xpos 1170\n  ypos 838\n }\nset N5c76ab0 [stack 0]\npush $N5e7f060\npush $N5ed5b20\npush $N5e8d4b0\npush $N5e8d4b0\n Group {\n  inputs 2\n  name EdgeExtend2\n  help \"EdgeExtend repeatedly blurs and unpremuliplies the image to extend edges outward while trying to preserve the original source colour\"\n  xpos 1250\n  ypos 515\n  addUserKnob {20 \"\" l User}\n  addUserKnob {4 premult l \"input is\" M {premultiplied unpremultiplied}}\n  addUserKnob {3 slices t \"How many times the edges are blurred and unpremuliplied.\\nThis is the fine control for slightly better quality. The current maximum is 10.\"}\n  slices 4\n  addUserKnob {3 slice_width l \"slice width\" t \"Blur amount that is applied before unpremultiplying the result per slice.\\nThis is the brute force control and should be kept at 1 if possible.\\nOnly increase this if the maximum amount of slices (10) doesn't cover the area you need.\"}\n  slice_width 1\n  addUserKnob {7 blurResult l \"blur slices\" R 0 10}\n  blurResult 5\n }\n  Input {\n   inputs 0\n   name img\n   xpos -590\n   ypos -509\n  }\nset N5c81cd0 [stack 0]\n  Dot {\n   name Dot1\n   xpos -556\n   ypos 978\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos -358\n   ypos -653\n   number 1\n  }\npush $N5c81cd0\n  Unpremult {\n   name Unpremult11\n   xpos -468\n   ypos -509\n   disable {{parent.premult}}\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels alpha\n   name Copy2\n   xpos -358\n   ypos -516\n  }\n  Premult {\n   name Premult1\n   xpos -358\n   ypos -450\n  }\n  Shuffle {\n   black alpha\n   out2 depth\n   name Shuffle1\n   label alpha>depth\n   xpos -223\n   ypos -413\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult1\n   xpos -223\n   ypos -373\n  }\nset N5c0c880 [stack 0]\n  Dot {\n   name Dot2\n   xpos -189\n   ypos -214\n  }\nset N2007d4d0 [stack 0]\npush $N5c0c880\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.slice_width}}\n   name Blur1\n   xpos -25\n   ypos -373\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle3\n   label depth>alpha\n   xpos -25\n   ypos -333\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult3\n   xpos -25\n   ypos -293\n  }\n  Blur {\n   channels rgba\n   size {{parent.blurResult}}\n   name Blur10\n   xpos -25\n   ypos -241\n  }\n  set C5c63600 [stack 0]\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge1\n   xpos -25\n   ypos -218\n  }\nset N5c6e060 [stack 0]\n  Dot {\n   name Dot3\n   xpos 9\n   ypos -73\n  }\nset N200c2d90 [stack 0]\npush $N5c6e060\n  Blur {\n   channels rgba\n   size {{parent.slice_width}}\n   name Blur2\n   xpos 159\n   ypos -218\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle5\n   label alpha>depth\n   xpos 159\n   ypos -180\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult2\n   xpos 159\n   ypos -140\n  }\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.blurResult}}\n   name Blur3\n   xpos 159\n   ypos -101\n  }\n  set C1b20ac30 [stack 0]\n  Merge2 {\n   inputs 2\n   name Merge2\n   xpos 159\n   ypos -73\n  }\nset N20093730 [stack 0]\n  Dot {\n   name Dot4\n   xpos 193\n   ypos 103\n  }\nset N2008df10 [stack 0]\npush $N20093730\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle2\n   label depth>alpha\n   xpos 342\n   ypos -24\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult4\n   xpos 342\n   ypos 16\n  }\nset N200de320 [stack 0]\nclone $C5c63600 {\n   xpos 342\n   ypos 68\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge3\n   xpos 342\n   ypos 103\n  }\n  Dot {\n   name Dot5\n   xpos 373\n   ypos 226\n  }\nset N5e206e0 [stack 0]\npush $N200de320\n  Blur {\n   channels rgba\n   size {{parent.slice_width}}\n   name Blur5\n   xpos 503\n   ypos 23\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle4\n   label alpha>depth\n   xpos 503\n   ypos 65\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult5\n   xpos 503\n   ypos 105\n  }\nset N1b6d0ab0 [stack 0]\nclone $C1b20ac30 {\n   xpos 503\n   ypos 174\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   name Merge4\n   xpos 503\n   ypos 226\n  }\n  Dot {\n   name Dot6\n   xpos 537\n   ypos 321\n  }\nset N5e25a50 [stack 0]\npush $N1b6d0ab0\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.slice_width}}\n   name Blur7\n   xpos 689\n   ypos 105\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle6\n   label depth>alpha\n   xpos 689\n   ypos 145\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult6\n   xpos 689\n   ypos 185\n  }\nset N1b6f5cd0 [stack 0]\nclone $C5c63600 {\n   xpos 684\n   ypos 272\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge5\n   xpos 689\n   ypos 321\n  }\n  Dot {\n   name Dot7\n   xpos 723\n   ypos 448\n  }\nset N191cc770 [stack 0]\npush $N1b6f5cd0\n  Blur {\n   channels rgba\n   size {{parent.slice_width}}\n   name Blur9\n   xpos 856\n   ypos 200\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle7\n   label alpha>depth\n   xpos 856\n   ypos 280\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult7\n   xpos 856\n   ypos 320\n  }\nset N19141860 [stack 0]\nclone $C1b20ac30 {\n   xpos 852\n   ypos 405\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   name Merge6\n   xpos 856\n   ypos 448\n  }\n  Dot {\n   name Dot8\n   xpos 890\n   ypos 514\n  }\nset N19115c50 [stack 0]\npush $N19141860\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.slice_width}}\n   name Blur12\n   xpos 1042\n   ypos 320\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle8\n   label depth>alpha\n   xpos 1042\n   ypos 393\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult8\n   xpos 1042\n   ypos 433\n  }\nset N880a710 [stack 0]\nclone $C5c63600 {\n   xpos 1046\n   ypos 484\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge7\n   xpos 1042\n   ypos 514\n  }\n  Dot {\n   name Dot9\n   xpos 1076\n   ypos 579\n  }\nset N8829a90 [stack 0]\npush $N880a710\n  Blur {\n   channels rgba\n   size {{parent.slice_width}}\n   name Blur14\n   xpos 1205\n   ypos 440\n  }\n  Shuffle {\n   in2 depth\n   black alpha\n   out2 depth\n   name Shuffle9\n   label alpha>depth\n   xpos 1205\n   ypos 466\n  }\n  Unpremult {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   name Unpremult9\n   xpos 1205\n   ypos 506\n  }\nset N8846200 [stack 0]\nclone $C1b20ac30 {\n   xpos 1206\n   ypos 551\n   selected false\n  }\n  Merge2 {\n   inputs 2\n   name Merge8\n   xpos 1205\n   ypos 579\n  }\n  Dot {\n   name Dot10\n   xpos 1239\n   ypos 664\n  }\nset N88653f0 [stack 0]\npush $N8846200\n  Blur {\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size {{parent.slice_width}}\n   name Blur16\n   xpos 1421\n   ypos 506\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle11\n   label depth>alpha\n   xpos 1421\n   ypos 546\n  }\n  Unpremult {\n   channels rgba\n   alpha depth.Z\n   name Unpremult10\n   xpos 1421\n   ypos 586\n  }\nclone $C5c63600 {\n   xpos 1421\n   ypos 638\n   selected true\n  }\n  Merge2 {\n   inputs 2\n   Achannels {rgba.red rgba.green rgba.blue depth.Z}\n   name Merge9\n   xpos 1421\n   ypos 664\n  }\npush $N88653f0\npush $N8829a90\npush $N19115c50\npush $N191cc770\npush $N5e25a50\npush $N5e206e0\npush $N2008df10\npush $N200c2d90\npush $N2007d4d0\npush $N5c81cd0\n  Switch {\n   inputs 11\n   which {{parent.slices}}\n   name Switch1\n   xpos 689\n   ypos 827\n  }\n  Shuffle {\n   in2 depth\n   alpha red2\n   out2 depth\n   name Shuffle10\n   label depth>alpha\n   xpos 689\n   ypos 865\n  }\n  Remove {\n   channels depth\n   name Remove1\n   xpos 689\n   ypos 905\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels depth\n   name Copy1\n   xpos 689\n   ypos 960\n  }\n  Output {\n   name Output1\n   xpos 689\n   ypos 1290\n  }\n  Blur {\n   inputs 0\n   channels {rgba.red rgba.green rgba.blue depth.Z}\n   size 8.5\n   name Blur18\n   xpos 299\n   ypos -61\n  }\n end_group\n Blur {\n  inputs 1+1\n  size 2.1\n  name TransitionBlur\n  xpos 1250\n  ypos 596\n  disable {{(GizmoControl.transitionTreatmentSwitch-1)*-1 i}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos 1250\n  ypos 662\n }\n Premult {\n  name Premult3\n  xpos 1250\n  ypos 777\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 1250\n  ypos 829\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 mask.a\n  name Copy3\n  xpos 1250\n  ypos 1217\n }\npush $N5c76ab0\n Dot {\n  name Dot11\n  xpos 1170\n  ypos 1343\n }\n Dissolve {\n  inputs 2\n  which {{parent.mix i}}\n  name Dissolve1\n  xpos 1250\n  ypos 1334\n }\n Output {\n  name Output1\n  xpos 1250\n  ypos 1433\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LabelFromRead.gizmo",
    "content": "Group {\n name LabelFromRead\n tile_color 0x1f1f1fff\n label \"\\[ expr \\{ \\[value splitPath] ? \\[value finalFilePath] : \\[] \\} ]\\n\\[value inputDesc]\"\n note_font \"Verdana Bold\"\n note_font_color 0xe5e500ff\n selected true\n addUserKnob {20 LabelFromRead}\n addUserKnob {1 inputName +INVISIBLE}\n inputName \"\\[file tail \\[value \\[topnode].file]] \\n\"\n addUserKnob {1 fullPath +INVISIBLE}\n fullPath \"\\[value \\[topnode].file]\"\n addUserKnob {6 filenameCheck l \"Include FIle Name?\" +STARTLINE}\n filenameCheck true\n addUserKnob {4 pathType l \"\" -STARTLINE M {\"Full Path\" Tail}}\n pathType Tail\n addUserKnob {6 splitPath l \"Split Path\" -STARTLINE}\n addUserKnob {1 whichPath +INVISIBLE}\n whichPath \"\\[ expr  \\{ \\[value pathType] == \\\"Full Path\\\" ? \\[value fullPath] : \\[value inputName] \\} ]\"\n addUserKnob {3 rangeStart l range}\n rangeStart 1\n addUserKnob {3 rangeEnd l \" -  \" -STARTLINE}\n rangeEnd 2\n addUserKnob {1 splitText l \"Split with\" -STARTLINE}\n splitText _\n addUserKnob {1 fileRange +INVISIBLE}\n fileRange \"\\[ expr \\{ \\[value splitPath] ? \\[ expr \\{ \\[value filenameCheck] ? \\[lrange \\[split \\[value whichPath] \\[value splitText] ] \\[value rangeStart] \\[value rangeEnd] ] : \\[] \\} ] : \\[value whichPath] \\} ]\"\n addUserKnob {1 finalFilePath +INVISIBLE}\n finalFilePath \"\\[value fileRange]\"\n addUserKnob {6 descCheck l \"Include Description?\" +STARTLINE}\n addUserKnob {1 inputDesc l Description}\n addUserKnob {26 \"\"}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {18 color l \"Text Color\"}\n color {1 1 0}\n addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 borderColor l \"Border Color\"}\n borderColor {0 0 0}\n addUserKnob {6 borderColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 borderColor_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 borderSize l \"Border Size\" R 0 5}\n borderSize 2\n addUserKnob {6 enableBackground l \"Enable Background\" +INVISIBLE +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 font n 1}\n font 0\n addUserKnob {41 fileFront l \"File Font\" T FileName.font}\n addUserKnob {41 descFont l \"Description Font\" T Description.font}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 xjustify l Justify T FileName.xjustify}\n addUserKnob {41 yjustify l \"\" -STARTLINE T FileName.yjustify}\n addUserKnob {7 size l \"Overall Size\" R -50 50}\n addUserKnob {7 x_pos l \"X Pos\" R -100 100}\n addUserKnob {7 YPos l \"Y Pos\" R -100 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Takes the last section of the filename and displays in on the top of frame\\n\\n- Can toggle dsiplay of a User Description\\n- Can adjust size and position of Text\" T LabelFromRead}\n addUserKnob {26 text l Version: T v06}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -195\n  ypos -608\n }\n Dot {\n  name Dot1\n  xpos -161\n  ypos -550\n }\nset N36754800 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -339\n  ypos -553\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos -339\n  ypos -529\n }\n Text2 {\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"\\[value parent.inputDesc]\"\n  old_expression_markers {{0 -1}\n    }\n  box {0 {input.height-(input.height/5)} {input.width} {input.height-(input.height/37.25)}}\n  xjustify {{parent.FileName.xjustify}}\n  yjustify {{parent.FileName.yjustify}}\n  transforms {{0 2}\n    }\n  global_font_scale {{(input.width/35+parent.size)/100}}\n  scale {1 1}\n  cursor_initialised true\n  autofit_bbox false\n  initial_cursor_position {{0 1556}\n    }\n  group_animations {{0} imported: 0 selected: items: \"root transform\"}\n  animation_layers {{1 11 0 {input.height-(input.height/7)} {\"input.width/40+ parent.x_pos\"} {parent.YPos} 1 1 0 0 0 0}\n    }\n  color {{parent.color} {parent.color} {parent.color} 1}\n  background_border_x 0\n  background_border_y 0\n  enable_shadows true\n  shadow_color {{parent.borderColor} {parent.borderColor} {parent.borderColor} 1}\n  shadow_opacity 1\n  shadow_distance 0\n  shadow_size {{parent.borderSize}}\n  name Description\n  selected true\n  xpos -339\n  ypos -453\n  disable {{!parent.descCheck}}\n }\n Text2 {\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"\\n\\[value parent.finalFilePath]\"\n  old_message {{10 78 111 116 104 105 110 103 32 105 115 32 110 97 109 101 100 32 34 110 111 100 101 49 51 54 55 55 54 98 48 48 46 102 105 108 101 34}\n    }\n  old_expression_markers {{1 37}\n    }\n  box {0 {input.height-(input.height/5)} {input.width} {input.height-(input.height/37.25)}}\n  transforms {{0 2}\n    }\n  cursor_position 1\n  global_font_scale {{(input.width/35+parent.size)/100}}\n  scale {1 1}\n  cursor_initialised true\n  autofit_bbox false\n  initial_cursor_position {{0 1556}\n    }\n  group_animations {{0} imported: 0 selected: items: \"root transform\"}\n  animation_layers {{1 11 0 {input.height-(input.height/7)} {\"input.width/40+ parent.x_pos\"} {\"descCheck == 1 ? parent.YPos : input.height/20 + parent.YPos\"} 1 1 0 0 0 0}\n    }\n  color {{parent.color} {parent.color} {parent.color} 1}\n  enable_background {{parent.enableBackground}}\n  background_border_x 0\n  background_border_y 0\n  enable_shadows true\n  shadow_color {{parent.borderColor} {parent.borderColor} {parent.borderColor} 1}\n  shadow_opacity 1\n  shadow_distance 0\n  shadow_size {{parent.borderSize}}\n  name FileName\n  xpos -339\n  ypos -408\n  disable {{!parent.filenameCheck}}\n }\n Dot {\n  name Dot2\n  xpos -305\n  ypos -342\n }\npush $N36754800\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge1\n  xpos -195\n  ypos -345\n }\n Output {\n  name Output1\n  xpos -195\n  ypos -201\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LensEngine.gizmo",
    "content": "Group {\n name LensEngine\n selected true\n addUserKnob {20 mainTab l main}\n addUserKnob {26 headline l \"\" +STARTLINE T \"<font color=#8cb5ff><font size=7>Lens Engine</font> v1.3 </font>\"}\n addUserKnob {26 headline2 l \"\" +STARTLINE T \"<font color=#8cb5ff><font size=2>by Kyran Bishop</font></font>\"}\n addUserKnob {26 formatSettings l \"<b><font color=#70EE70>project format</font><b>\"}\n addUserKnob {41 format T backdropConstant.format}\n addUserKnob {26 flareTranslateHeader l \"<b><font color=#70EE70>flare translate</font><b>\"}\n addUserKnob {12 flarePos l \"flare position\"}\n flarePos {960 540}\n addUserKnob {16 flareCoreSize l size}\n flareCoreSize 1\n addUserKnob {26 lensDirtHeader l \"<b><font color=#70EE70>lens dirt</font><b>\"}\n addUserKnob {6 lensDirtEnable l enable +STARTLINE}\n addUserKnob {4 lensDirtCalculation l \"calculation type\" M {simple \"normals based\"}}\n lensDirtCalculation \"normals based\"\n addUserKnob {4 lensDirtPicker l type M {water \"water clumpy\" scratches streaks \"\\[custom dirt]\"}}\n addUserKnob {4 lensDirtBlurType l \"blur type\" M {\"basic blur\" \"bokeh blur\"}}\n addUserKnob {14 lensDirtBlur l softness R 0 100}\n lensDirtBlur 1\n addUserKnob {7 lensBlurAspectRatio l \"aspect ratio\" R 1 2}\n lensBlurAspectRatio 1\n addUserKnob {7 lensDirtMix l mix}\n lensDirtMix 1\n addUserKnob {7 lensDirtBoost l boost R 0 10}\n lensDirtBoost 1\n addUserKnob {6 lensDirtRangePreview l \"preview range\" +STARTLINE}\n addUserKnob {7 lensDirtRangeFalloff l falloff R 0 2000}\n lensDirtRangeFalloff 200\n addUserKnob {7 lensDirtFalloffSteepness l \"falloff clamp\" R 0 0.25}\n lensDirtFalloffSteepness 0.03\n addUserKnob {26 UIcontrolheader l \"<b><font color=#70EE70>UI controls</font><b>\"}\n addUserKnob {22 resetAll l \"reset all\" T \"import nuke\\n\\n# template\\n#nuke.thisNode()\\[''].setValue()\\n\\n# env variables\\nf = nuke.root().format()\\nfw = f.width()\\nfh = f.height()\\n\\nif nuke.ask('Are you sure you want to reset the flare? This action cannot be undone!'):\\n\\t\\n\\t# main\\n\\t# translate\\n\\tnuke.thisNode()\\['flarePos'].setValue(fw/2, 0)\\n\\tnuke.thisNode()\\['flarePos'].setValue(fh/2, 1)\\n\\tnuke.thisNode()\\['flareCoreSize'].setValue(1)\\n\\t# lens dirt\\n\\tnuke.thisNode()\\['lensDirtEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensDirtPicker'].setValue(0)\\n\\tnuke.thisNode()\\['lensDirtBlurType'].setValue(0)\\n\\tnuke.thisNode()\\['lensDirtBlur'].setValue(1)\\n\\tnuke.thisNode()\\['lensBlurAspectRatio'].setValue(1)\\n\\tnuke.thisNode()\\['lensDirtMix'].setValue(1)\\n\\tnuke.thisNode()\\['lensDirtBoost'].setValue(1)\\n\\tnuke.thisNode()\\['lensDirtRangePreview'].setValue(0)\\n\\tnuke.thisNode()\\['lensDirtRangeFalloff'].setValue(200)\\n\\tnuke.thisNode()\\['lensDirtFalloffSteepness'].setValue(0.03)\\n\\n\\t# cores\\n\\t# core\\n\\tnuke.thisNode()\\['altCoreDisable'].setValue(1)\\n\\tnuke.thisNode()\\['coreSize'].setValue(1)\\n\\tnuke.thisNode()\\['coreOffsetSlider'].setValue(0, 0)\\n\\tnuke.thisNode()\\['coreOffsetSlider'].setValue(0, 1)\\n\\tnuke.thisNode()\\['coreRotation'].setValue(0)\\n\\tnuke.thisNode()\\['coreTypePick'].setValue(0)\\n\\tnuke.thisNode()\\['coreColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['coreColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['coreColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['coreBlur'].setValue(0)\\n\\tnuke.thisNode()\\['coreMix'].setValue(1)\\n\\t# core rays\\n\\tnuke.thisNode()\\['coreRaysEnable'].setValue(1)\\n\\tnuke.thisNode()\\['coreRaysSize'].setValue(1)\\n\\tnuke.thisNode()\\['coreRaysRotation'].setValue(0)\\n\\tnuke.thisNode()\\['coreRaysThickness'].setValue(0)\\n\\tnuke.thisNode()\\['coreRaysType'].setValue(0)\\n\\tnuke.thisNode()\\['coreRaysColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['coreRaysColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['coreRaysColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['coreRaysBlur'].setValue(0)\\n\\tnuke.thisNode()\\['coreRaysMix'].setValue(0.2)\\n\\tnuke.thisNode()\\['coreRaysSeed'].setValue(0)\\n\\t# core extra\\n\\tnuke.thisNode()\\['coreCoronaAlt'].setValue(1)\\n\\tnuke.thisNode()\\['coreCoronaSize'].setValue(1)\\n\\tnuke.thisNode()\\['coronaOffsetSlider'].setValue(0, 0)\\n\\tnuke.thisNode()\\['coronaOffsetSlider'].setValue(0, 1)\\n\\tnuke.thisNode()\\['coreCoronaRotation'].setValue(0)\\n\\tnuke.thisNode()\\['coreCoronaType'].setValue(3)\\n\\tnuke.thisNode()\\['coreCoronaNoise'].setValue(0)\\n\\tnuke.thisNode()\\['coreCoronaTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['coreCoronaTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['coreCoronaTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['coreCoronaBlur'].setValue(0)\\n\\tnuke.thisNode()\\['coreCoronaMix'].setValue(1)\\n\\t# corona\\n\\tnuke.thisNode()\\['coronaExtraEnable'].setValue(1)\\n\\tnuke.thisNode()\\['coronaExtraSize'].setValue(1)\\n\\tnuke.thisNode()\\['coronaExtraOffset'].setValue(0, 0)\\n\\tnuke.thisNode()\\['coronaExtraOffset'].setValue(0, 1)\\n\\tnuke.thisNode()\\['coronaExtraRotation'].setValue(0)\\n\\tnuke.thisNode()\\['coronaExtraType'].setValue(1)\\n\\tnuke.thisNode()\\['coronaExtraNoise'].setValue(0)\\n\\tnuke.thisNode()\\['coronaExtraColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['coronaExtraColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['coronaExtraColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['coronaExtraBlur'].setValue(0)\\n\\tnuke.thisNode()\\['coronaExtraMix'].setValue(0.5)\\n\\n\\t# anomalies\\n\\t# anomaly\\n\\tnuke.thisNode()\\['lensAnomalyEnable'].setValue(0)\\n\\tnuke.thisNode()\\['anomalySize'].setValue(1)\\n\\tnuke.thisNode()\\['anomalyPosOffset'].setValue(0, 0)\\n\\tnuke.thisNode()\\['anomalyPosOffset'].setValue(0, 1)\\n\\tnuke.thisNode()\\['coronaOffsetSlider'].setValue(0, 1)\\n\\tnuke.thisNode()\\['anomalyRotOffset'].setValue(0)\\n\\tnuke.thisNode()\\['anomalyAnamorph'].setValue(1)\\n\\tnuke.thisNode()\\['anomalyType'].setValue(0)\\n\\tnuke.thisNode()\\['anomalyColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['anomalyColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['anomalyColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['anomalyPresat'].setValue(1)\\n\\tnuke.thisNode()\\['anomalyBlur'].setValue(0)\\n\\tnuke.thisNode()\\['anomalyMix'].setValue(1)\\n\\t# dog schidt\\n\\tnuke.thisNode()\\['dogSchidtEnableAlt'].setValue(0)\\n\\tnuke.thisNode()\\['coreDogschidtMix'].setValue(1)\\n\\tnuke.thisNode()\\['dogSchidtSize'].setValue(1)\\n\\tnuke.thisNode()\\['dogSchidtRotation'].setValue(0)\\n\\tnuke.thisNode()\\['dogSchidtAnamorph'].setValue(1)\\n\\tnuke.thisNode()\\['dogSchidtThickness'].setValue(0.5)\\n\\tnuke.thisNode()\\['dogSchidtType'].setValue(0)\\n\\tnuke.thisNode()\\['dogSchidtTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['dogSchidtTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['dogSchidtTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['dogSchidtFalloff'].setValue(500, 0, 500, 1)\\n\\tnuke.thisNode()\\['dogSchidtBlur'].setValue(0.2)\\n\\t# frame ghosting\\n\\tnuke.thisNode()\\['frameGhostEnable'].setValue(0)\\n\\tnuke.thisNode()\\['ghostCalc'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostQuality'].setValue(0.15)\\n\\tnuke.thisNode()\\['frameGhostPreview'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostSelectionPreview'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostSelection'].setValue(0.2)\\n\\tnuke.thisNode()\\['frameGhostGamma'].setValue(0.4)\\n\\tnuke.thisNode()\\['frameGhostSat'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostOverallColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['frameGhostOverallColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['frameGhostOverallColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['frameGhostBlur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostMix'].setValue(1)\\t\\n\\t# frame ghosting - flare 1\\n\\tnuke.thisNode()\\['frameGhostFlare1Enable'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare1Size'].setValue(5)\\n\\tnuke.thisNode()\\['frameGhostFlare1PosOffset'].setValue(-1)\\n\\tnuke.thisNode()\\['frameGhostFlare1Colour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['frameGhostFlare1Colour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['frameGhostFlare1Colour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['frameGhostFlare1Blur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare1Mix'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare1Shape'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare1DiaphragmSize'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare1DiaphragmRot'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare1NoiseOpac'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare1Noise'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare1ReflRotation'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare1ReflBlur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare1ReflGamma'].setValue(1)\\n\\t# frame ghosting - flare 2\\n\\tnuke.thisNode()\\['frameGhostFlare2Enable'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2Size'].setValue(5)\\n\\tnuke.thisNode()\\['frameGhostFlare2PosOffset'].setValue(-0.2)\\n\\tnuke.thisNode()\\['frameGhostFlare2Colour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['frameGhostFlare2Colour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['frameGhostFlare2Colour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['frameGhostFlare2Blur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2Mix'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare2Shape'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2DiaphragmSize'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare2DiaphragmRot'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2NoiseOpac'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare2Noise'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare2ReflRotation'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2ReflBlur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare2ReflGamma'].setValue(1)\\n\\t# frame ghosting - flare 3\\n\\tnuke.thisNode()\\['frameGhostFlare3Enable'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare3Size'].setValue(3)\\n\\tnuke.thisNode()\\['frameGhostFlare3PosOffset'].setValue(-1)\\n\\tnuke.thisNode()\\['frameGhostFlare3Colour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['frameGhostFlare3Colour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['frameGhostFlare3Colour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['frameGhostFlare3Blur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare3Mix'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare3Shape'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare3DiaphragmSize'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare3DiaphragmRot'].setValue(0)\\t\\n\\tnuke.thisNode()\\['frameGhostFlare3NoiseOpac'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare3Noise'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare3ReflRotation'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare3ReflBlur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare3ReflGamma'].setValue(1)\\n\\t# frame ghosting - flare 4\\n\\tnuke.thisNode()\\['frameGhostFlare4Enable'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4Size'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare4PosOffset'].setValue(0.2)\\n\\tnuke.thisNode()\\['frameGhostFlare4Colour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['frameGhostFlare4Colour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['frameGhostFlare4Colour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['frameGhostFlare4Blur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4Mix'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare4Shape'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4DiaphragmSize'].setValue(1)\\n\\tnuke.thisNode()\\['frameGhostFlare4DiaphragmRot'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4NoiseOpac'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare4Noise'].setValue(0.5)\\n\\tnuke.thisNode()\\['frameGhostFlare4ReflRotation'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4ReflBlur'].setValue(0)\\n\\tnuke.thisNode()\\['frameGhostFlare4ReflGamma'].setValue(1)\\n\\n\\t#lens pieces\\n\\t#lens pieces\\n\\tnuke.thisNode()\\['lensPieceMainEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainSize'].setValue(1)\\n\\tnuke.thisNode()\\['lensPieceMainSizeVariation'].setValue(1)\\n\\tnuke.thisNode()\\['lensPieceMainOffset'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainAdditional'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainSeed'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainType'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['lensPieceMainColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['lensPieceMainColour'].setValue(1, 2)\\n\\tnuke.thisNode()\\['lensPieceMainBlur'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceMainMix'].setValue(0.25)\\n\\t#big pieces\\n\\tnuke.thisNode()\\['lensPieceBigEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceBigOffset'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceBigSeed'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceBigPicker'].setValue(3)\\n\\tnuke.thisNode()\\['lensPieceBigTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['lensPieceBigTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['lensPieceBigTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['lensPieceBigBlur'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceBigMix'].setValue(0.25)\\n\\t#rings\\n\\tnuke.thisNode()\\['lensPieceRingsEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceRingsRotation'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceRingsPicker'].setValue(3)\\n\\tnuke.thisNode()\\['lensPieceRingsTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['lensPieceRingsTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['lensPieceRingsTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['lensPieceRingsMix'].setValue(0.4)\\n\\t#lines\\n\\tnuke.thisNode()\\['lensPieceLinesEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceLinesStretch'].setValue(1)\\n\\tnuke.thisNode()\\['lensPieceLinesOffset'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceLinesPicker'].setValue(0)\\n\\tnuke.thisNode()\\['lensPieceLinesTint'].setValue(1, 0)\\n\\tnuke.thisNode()\\['lensPieceLinesTint'].setValue(1, 1)\\n\\tnuke.thisNode()\\['lensPieceLinesTint'].setValue(1, 2)\\n\\tnuke.thisNode()\\['lensPieceLinesMix'].setValue(0.05)\\n\\n\\t# screen space fx\\n\\t# regions\\n\\tnuke.thisNode()\\['previewEdgeArea'].setValue(0)\\n\\tnuke.thisNode()\\['bloomFalloffCrush'].setValue(0)\\n\\tnuke.thisNode()\\['previewCenterSelection'].setValue(0)\\n\\tnuke.thisNode()\\['centerFalloffAdjust'].setValue(0)\\n\\t# center frame bloom\\n\\tnuke.thisNode()\\['centerFrameBloomAlt'].setValue(1)\\n\\tnuke.thisNode()\\['centerFrameBloomMix'].setValue(1)\\n\\tnuke.thisNode()\\['centerFrameBloomGrade'].setValue(1, 0)\\n\\tnuke.thisNode()\\['centerFrameBloomGrade'].setValue(1, 1)\\n\\tnuke.thisNode()\\['centerFrameBloomGrade'].setValue(1, 2)\\n\\t# edge shimmer\\n\\tnuke.thisNode()\\['edgeShimmerAlt'].setValue(0)\\n\\tnuke.thisNode()\\['edgeShimmerIntensity'].setValue(1)\\n\\tnuke.thisNode()\\['shimmerColour'].setValue(1)\\n\\tnuke.thisNode()\\['edgeShimmerColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['edgeShimmerColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['edgeShimmerColour'].setValue(1, 2)\\n\\t# edge bloom\\n\\tnuke.thisNode()\\['edgeBloomAlt'].setValue(0)\\n\\tnuke.thisNode()\\['edgeBloomIntensity'].setValue(1)\\n\\tnuke.thisNode()\\['edgeBloomColour'].setValue(1, 0)\\n\\tnuke.thisNode()\\['edgeBloomColour'].setValue(1, 1)\\n\\tnuke.thisNode()\\['edgeBloomColour'].setValue(1, 2)\\n\\n\\t# lens FX\\n\\t# chroma shift\\n\\tnuke.thisNode()\\['lensChromaEnable'].setValue(1)\\n\\tnuke.thisNode()\\['chromaShiftType'].setValue(0)\\n\\tnuke.thisNode()\\['chromaShiftAmountSlider'].setValue(0.007)\\n\\tnuke.thisNode()\\['chromaR'].setValue(0)\\n\\tnuke.thisNode()\\['chromaG'].setValue(0)\\n\\tnuke.thisNode()\\['chromaB'].setValue(1)\\n\\t# lens distortion\\n\\tnuke.thisNode()\\['lensDistortionEnable'].setValue(0)\\n\\tnuke.thisNode()\\['lensFXDistortionAmount'].setValue(0)\\n\\tnuke.thisNode()\\['lensFXDistortionAmount2'].setValue(0)\\n\\t# edge blur\\n\\tnuke.thisNode()\\['edgeBlurEnable'].setValue(0)\\n\\tnuke.thisNode()\\['edgeBlurAmount'].setValue(0)\\n\\tnuke.thisNode()\\['previewEdgeBlur'].setValue(0)\\n\\tnuke.thisNode()\\['edgeBlurRegionScale'].setValue(1.7)\\n\\tnuke.thisNode()\\['edgeBlurRegionClamp'].setValue(0.3)\\n\\t# vignetting\\n\\tnuke.thisNode()\\['vignettingEnable'].setValue(0)\\n\\tnuke.thisNode()\\['vignettingAmountSlider'].setValue(0)\\n\\tnuke.thisNode()\\['vignettingRegionPreview'].setValue(0)\\n\\tnuke.thisNode()\\['vignettingRegionScale'].setValue(1.7)\\n\\tnuke.thisNode()\\['vignettingRegionClamp'].setValue(0.3)\\n\\t#bloom\\n\\tnuke.thisNode()\\['bloomEnable'].setValue(0)\\n\\tnuke.thisNode()\\['bloomType'].setValue(1)\\n\\tnuke.thisNode()\\['bloomPreview'].setValue(0)\\n\\tnuke.thisNode()\\['bloomTolerance'].setValue(0.6)\\n\\tnuke.thisNode()\\['bloomAmount'].setValue(20)\\n\\tnuke.thisNode()\\['bloomRatio'].setValue(0.25)\\n\\tnuke.thisNode()\\['bloomStrength'].setValue(1)\\n\\tnuke.thisNode()\\['bloomNoiseSize'].setValue(300)\\n\\tnuke.thisNode()\\['bloomNoiseEnable'].setValue(0)\\n\\tnuke.thisNode()\\['bloomNoiseAmount'].setValue(0.9)\\n\\tnuke.thisNode()\\['bloomNoiseGain'].setValue(0.45)\\n\\n\\t#anim\\n\\t#anim options\\n\\tnuke.thisNode()\\['enable_animation'].setValue(0)\\n\\tnuke.thisNode()\\['WaveSeed'].setValue(0)\\n\\tnuke.thisNode()\\['squared'].setValue(0)\\n\\tnuke.thisNode()\\['minVal'].setValue(1)\\n\\tnuke.thisNode()\\['maxVal'].setValue(3)\\n\\tnuke.thisNode()\\['speed'].setValue(60)\\n\\tnuke.thisNode()\\['slide'].setValue(0)\\t\\n\\n\\tnuke.message('Flare Successfully Reset...')\" +STARTLINE}\n addUserKnob {20 coreTab l cores}\n addUserKnob {26 coreOptHeader l \"<b><font color=#70EE70>core options</font><b>\"}\n addUserKnob {20 coreGrp l \"@b;core\" n 1}\n coreGrp 0\n addUserKnob {6 coreDisable l INVISIBLE +INVISIBLE +STARTLINE}\n coreDisable {{!altCoreDisable}}\n addUserKnob {6 altCoreDisable l enable +STARTLINE}\n altCoreDisable true\n addUserKnob {7 coreSize l size R 0 4}\n coreSize 1\n addUserKnob {14 coreOffsetSlider l offset R 0 100}\n coreOffsetSlider {0 0}\n addUserKnob {12 coreOffset l INVISIBLE +INVISIBLE}\n coreOffset {{parent.coreOffsetSlider.w} {parent.coreOffsetSlider.h}}\n addUserKnob {7 coreRotation l rotation R 0 360}\n addUserKnob {26 \"\"}\n addUserKnob {4 coreTypePick l \"core type\" M {\"white orb\" anamorphic \"hot orb\" prism}}\n addUserKnob {19 coreColour l tint}\n coreColour {1 1 1 0}\n addUserKnob {6 coreColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 coreBlur l blur R 0 100}\n addUserKnob {7 coreMix l mix}\n coreMix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 coreRaysGrp l \"core rays\" n 1}\n coreRaysGrp 0\n addUserKnob {6 coreRaysEnable l enable +STARTLINE}\n coreRaysEnable true\n addUserKnob {7 coreRaysSize l size R -4 4}\n coreRaysSize 1\n addUserKnob {7 coreRaysRotation l rotation R -180 180}\n addUserKnob {7 coreRaysThickness l thickness R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {4 coreRaysType l \"core rays type\" M {basic irregular hectic anamorphic \"blue crisp\" \"soft volume rays\" \"halo star\" \"anamorph spike\" \"blue crush\" \"penta star\" \"rainbow burst\" \"blue flame\" \"banded streak\"}}\n addUserKnob {18 coreRaysColour l colour}\n coreRaysColour {1 1 1}\n addUserKnob {6 coreRaysColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 coreRaysBlur l blur R 0 100}\n addUserKnob {7 coreRaysMix l mix}\n coreRaysMix 0.2\n addUserKnob {3 coreRaysSeed l seed}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_11 l endGroup n -1}\n addUserKnob {20 coreCoronaGrp l \"core extra shape\" n 1}\n coreCoronaGrp 0\n addUserKnob {6 coreCoronaDisable l INVISIBLE +INVISIBLE +STARTLINE}\n coreCoronaDisable {{!coreCoronaAlt}}\n addUserKnob {6 coreCoronaAlt l enable +STARTLINE}\n coreCoronaAlt true\n addUserKnob {7 coreCoronaSize l size R 0 4}\n coreCoronaSize 1\n addUserKnob {14 coronaOffsetSlider l offset R 0 100}\n coronaOffsetSlider {0 0}\n addUserKnob {12 coreCoronaOffset l INVISIBLE +INVISIBLE}\n coreCoronaOffset {{parent.coronaOffsetSlider.w} {parent.coronaOffsetSlider.h}}\n addUserKnob {7 coreCoronaRotation l rotation R 0 360}\n addUserKnob {26 \"\"}\n addUserKnob {4 coreCoronaType l \"shape type\" M {\"single ring\" \"double ring\" \"glass hoops\" \"chroma hoops\" \"vertical stripes\" \"horizontal stripes\" \"horizontal chunky stripes\" \"chroma glows\"}}\n coreCoronaType \"chroma hoops\"\n addUserKnob {6 coreCoronaNoise l \"noisy shape\" +STARTLINE}\n addUserKnob {19 coreCoronaTint l tint}\n coreCoronaTint {1 1 1 0}\n addUserKnob {6 coreCoronaTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 coreCoronaBlur l blur R 0 100}\n addUserKnob {7 coreCoronaMix l mix}\n coreCoronaMix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 coronaExtraGroup l corona n 1}\n coronaExtraGroup 0\n addUserKnob {6 coronaExtraEnable l enable +STARTLINE}\n coronaExtraEnable true\n addUserKnob {14 coronaExtraSize l size R 0 100}\n coronaExtraSize 1\n addUserKnob {14 coronaExtraOffset l offset R 0 100}\n coronaExtraOffset {0 0}\n addUserKnob {7 coronaExtraRotation l rotation R 0 360}\n addUserKnob {26 \"\"}\n addUserKnob {4 coronaExtraType l \"corona type\" M {\"double cloud\" aura \"stepping cloud\" \"noisy cloud\" \"soft noise\" ??? \"saturated aura\" \"\" \"\"}}\n coronaExtraType aura\n addUserKnob {6 coronaExtraNoise l \"noisy corona\" +STARTLINE}\n addUserKnob {19 coronaExtraColour l tint}\n coronaExtraColour {1 1 1 0}\n addUserKnob {6 coronaExtraColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 coronaExtraBlur l blur R 0 100}\n addUserKnob {7 coronaExtraMix l mix}\n coronaExtraMix 0.5\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {20 lensAnomaliesTab l anomalies}\n addUserKnob {26 anomalyOptHeader l \"<b><font color=#70EE70>anomaly options</font><b>\"}\n addUserKnob {20 anomalyGrp l \"anomaly controls\" n 1}\n anomalyGrp 0\n addUserKnob {6 lensAnomalyEnable l enable +STARTLINE}\n addUserKnob {7 anomalySize l size R 0 15}\n anomalySize 1\n addUserKnob {14 anomalyPosOffset l \"positional offset\" R 0 100}\n anomalyPosOffset {0 0}\n addUserKnob {7 anomalyRotOffset l \"screen space offset\" R -5 5}\n addUserKnob {7 anomalyAnamorph l anamorph R -10 10}\n anomalyAnamorph 1\n addUserKnob {26 \"\"}\n addUserKnob {4 anomalyType l \"anomaly type\" M {\"thick stripes \" \"thin stripes\" \"super thick \" \"single stripe\" \"soft clouds\" \"edge glow\" \"chroma rings\" \"blue spike\" \"soft offset chroma ring\" \"\"}}\n addUserKnob {18 anomalyColour l tint}\n anomalyColour {1 1 1}\n addUserKnob {6 anomalyColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 anomalyPresat l pre-sat R 0 4}\n anomalyPresat 1\n addUserKnob {14 anomalyBlur l blur R 0 100}\n addUserKnob {7 anomalyMix l mix}\n anomalyMix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {20 dogSchidtGrp l \"dog schidt optics\" n 1}\n dogSchidtGrp 0\n addUserKnob {6 dogSchidtControl l INVISIBLE +INVISIBLE +STARTLINE}\n dogSchidtControl {{!dogSchidtEnableAlt}}\n addUserKnob {6 dogSchidtEnableAlt l enable +STARTLINE}\n addUserKnob {7 dogSchidtSize l size R 1 15}\n dogSchidtSize 1\n addUserKnob {7 dogSchidtRotation l rotation R 0 360}\n addUserKnob {7 dogSchidtAnamorph l anamoprh R -10 10}\n dogSchidtAnamorph 1\n addUserKnob {7 dogSchidtThickness l thickness R 0 5}\n dogSchidtThickness 0.5\n addUserKnob {26 \"\"}\n addUserKnob {4 dogSchidtType l \"dog schidt type\" M {\"lens tearing\" \"water tearing\"}}\n addUserKnob {18 dogSchidtTint l tint}\n dogSchidtTint {1 1 1}\n addUserKnob {6 dogSchidtTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 dogSchidtFalloff l falloff R 0 100}\n dogSchidtFalloff {500 500}\n addUserKnob {14 dogSchidtBlur l blur R 0 100}\n dogSchidtBlur 0.2\n addUserKnob {7 coreDogschidtMix l mix}\n coreDogschidtMix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 frameGhostTab l \"frame ghosting\" n 1}\n frameGhostTab 0\n addUserKnob {6 frameGhostEnable l enable +STARTLINE}\n addUserKnob {4 ghostCalc l calculation M {pre-flare post-flare}}\n addUserKnob {7 frameGhostQuality l quality}\n frameGhostQuality 0.15\n addUserKnob {6 frameGhostPreview l \"preview FX only\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {6 frameGhostSelectionPreview l \"preview selection\" +STARTLINE}\n addUserKnob {7 frameGhostSelection l \"selection range\"}\n frameGhostSelection 0.2\n addUserKnob {7 frameGhostGamma l \"gamma crush\"}\n frameGhostGamma 0.4\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostSat l \"overall saturation\" R 0 5}\n frameGhostSat 1\n addUserKnob {7 frameGhostNoiseMult l \"overall noise mult\"}\n frameGhostNoiseMult 1\n addUserKnob {18 frameGhostOverallColour l \"overall colour\"}\n frameGhostOverallColour {1 1 1}\n addUserKnob {6 frameGhostOverallColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 frameGhostBlur l blur R 0 100}\n addUserKnob {7 frameGhostMix l mix}\n frameGhostMix 1\n addUserKnob {26 \"\"}\n addUserKnob {20 frameGhostFlare1Grp l \"flare 1\" n 1}\n frameGhostFlare1Grp 0\n addUserKnob {6 frameGhostFlare1Enable l enable +STARTLINE}\n frameGhostFlare1Enable true\n addUserKnob {14 frameGhostFlare1Size l size R 0 100}\n frameGhostFlare1Size 5\n addUserKnob {7 frameGhostFlare1PosOffset l \"pos offset\" R -3 3}\n frameGhostFlare1PosOffset -1\n addUserKnob {18 frameGhostFlare1Colour l colour}\n frameGhostFlare1Colour {1 1 1}\n addUserKnob {6 frameGhostFlare1Colour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 frameGhostFlare1Blur l blur R 0 50}\n addUserKnob {7 frameGhostFlare1Mix l mix}\n frameGhostFlare1Mix 1\n addUserKnob {26 \"\"}\n addUserKnob {4 frameGhostFlare1Shape l \"convolve shape\" M {pentagon hexagon heptagon octagon decagon \"\"}}\n addUserKnob {7 frameGhostFlare1DiaphragmSize l \"diaphragm size\"}\n frameGhostFlare1DiaphragmSize 1\n addUserKnob {7 frameGhostFlare1DiaphragmRot l \"diaphragm rot\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare1NoiseOpac l \"noise opacity\"}\n frameGhostFlare1NoiseOpac 0.5\n addUserKnob {7 frameGhostFlare1Noise l \"noise gain\"}\n frameGhostFlare1Noise 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare1ReflRotation l \"refl rotation\" R -180 180}\n addUserKnob {7 frameGhostFlare1ReflBlur l \"refl blur\" R 0 100}\n addUserKnob {18 frameGhostFlare1ReflGamma l \"refl gamma\" R 0 5}\n frameGhostFlare1ReflGamma 1\n addUserKnob {6 frameGhostFlare1ReflGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup_7 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 frameGhostFlare2Grp l \"flare 2\" n 1}\n frameGhostFlare2Grp 0\n addUserKnob {6 frameGhostFlare2Enable l enable +STARTLINE}\n addUserKnob {14 frameGhostFlare2Size l size R 0 100}\n frameGhostFlare2Size 5\n addUserKnob {7 frameGhostFlare2PosOffset l \"pos offset\" R -3 3}\n frameGhostFlare2PosOffset -0.2\n addUserKnob {18 frameGhostFlare2Colour l colour}\n frameGhostFlare2Colour {1 1 1}\n addUserKnob {6 frameGhostFlare2Colour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 frameGhostFlare2Blur l blur R 0 50}\n addUserKnob {7 frameGhostFlare2Mix l mix}\n frameGhostFlare2Mix 1\n addUserKnob {26 \"\"}\n addUserKnob {4 frameGhostFlare2Shape l \"convolve shape\" M {pentagon hexagon hectagon octagon decagon \"\" \"\" \"\"}}\n addUserKnob {7 frameGhostFlare2DiaphragmSize l \"diaphragm size\"}\n frameGhostFlare2DiaphragmSize 1\n addUserKnob {7 frameGhostFlare2DiaphragmRot l \"diaphragm rot\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare2NoiseOpac l \"noise opacity\"}\n frameGhostFlare2NoiseOpac 0.5\n addUserKnob {7 frameGhostFlare2Noise l \"noise gain\"}\n frameGhostFlare2Noise 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare2ReflRotation l \"refl rotation\" R -180 180}\n addUserKnob {16 frameGhostFlare2ReflBlur l \"refl blur\"}\n addUserKnob {18 frameGhostFlare2ReflGamma l \"refl gamma\" R 0 5}\n frameGhostFlare2ReflGamma 1\n addUserKnob {6 frameGhostFlare2ReflGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup_6 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 frameGhostFlare3Grp l \"flare 3\" n 1}\n frameGhostFlare3Grp 0\n addUserKnob {6 frameGhostFlare3Enable l enable +STARTLINE}\n addUserKnob {14 frameGhostFlare3Size l size R 0 100}\n frameGhostFlare3Size 3\n addUserKnob {7 frameGhostFlare3PosOffset l \"pos offset\" R -3 3}\n frameGhostFlare3PosOffset -1\n addUserKnob {18 frameGhostFlare3Colour l colour}\n frameGhostFlare3Colour {1 1 1}\n addUserKnob {6 frameGhostFlare3Colour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 frameGhostFlare3Blur l blur R 0 50}\n addUserKnob {7 frameGhostFlare3Mix l mix}\n frameGhostFlare3Mix 1\n addUserKnob {26 \"\"}\n addUserKnob {4 frameGhostFlare3Shape l \"convolve shape\" M {pentagon hexagon heptagon octagon decagon}}\n addUserKnob {7 frameGhostFlare3DiaphragmSize l \"diaphragm size\"}\n frameGhostFlare3DiaphragmSize 1\n addUserKnob {7 frameGhostFlare3DiaphragmRot l \"diaphragm rot\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare3NoiseOpac l \"noise opacity\"}\n frameGhostFlare3NoiseOpac 0.5\n addUserKnob {7 frameGhostFlare3Noise l \"noise gain\"}\n frameGhostFlare3Noise 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare3ReflRotation l \"refl rotation\" R -180 180}\n addUserKnob {7 frameGhostFlare3ReflBlur l \"refl blur\"}\n addUserKnob {18 frameGhostFlare3ReflGamma l \"refl gamma\" R 0 5}\n frameGhostFlare3ReflGamma 1\n addUserKnob {6 frameGhostFlare3ReflGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup_8 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 frameGhostFlare4Grp l \"flare 4\" n 1}\n frameGhostFlare4Grp 0\n addUserKnob {6 frameGhostFlare4Enable l enable +STARTLINE}\n addUserKnob {14 frameGhostFlare4Size l size R 0 100}\n frameGhostFlare4Size 1\n addUserKnob {7 frameGhostFlare4PosOffset l \"pos offset\" R -3 3}\n frameGhostFlare4PosOffset 0.2\n addUserKnob {18 frameGhostFlare4Colour l colour}\n frameGhostFlare4Colour {1 1 1}\n addUserKnob {6 frameGhostFlare4Colour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 frameGhostFlare4Blur l blur R 0 100}\n addUserKnob {7 frameGhostFlare4Mix l mix}\n frameGhostFlare4Mix 1\n addUserKnob {26 \"\"}\n addUserKnob {4 frameGhostFlare4Shape l \"convolve shape\" M {pentagon hexagon heptagon octagon decagon}}\n addUserKnob {7 frameGhostFlare4DiaphragmSize l \"diaphragm size\"}\n frameGhostFlare4DiaphragmSize 1\n addUserKnob {7 frameGhostFlare4DiaphragmRot l \"diaphragm rot\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare4NoiseOpac l \"noise opacity\"}\n frameGhostFlare4NoiseOpac 0.5\n addUserKnob {7 frameGhostFlare4Noise l \"noise gain\"}\n frameGhostFlare4Noise 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 frameGhostFlare4ReflRotation l \"refl rotation\" R -180 180}\n addUserKnob {7 frameGhostFlare4ReflBlur l \"refl blur\"}\n addUserKnob {18 frameGhostFlare4ReflGamma l \"refl gamma\" R 0 5}\n frameGhostFlare4ReflGamma 1\n addUserKnob {6 frameGhostFlare4ReflGamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup_9 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {20 lensPieceTab l \"lens pieces\"}\n addUserKnob {26 lensPieceOptions l \"<b><font color=#70EE70>lens piece options</font><b>\"}\n addUserKnob {20 lensPieceMainGrp l \"lens pieces\" n 1}\n lensPieceMainGrp 0\n addUserKnob {6 lensPieceMainEnable l enable +STARTLINE}\n addUserKnob {7 lensPieceMainSize l size R -4 4}\n lensPieceMainSize 1\n addUserKnob {7 lensPieceMainSizeVariation l \"size variation\" R -5 5}\n lensPieceMainSizeVariation 1\n addUserKnob {7 lensPieceMainOffset l offset R -5 5}\n addUserKnob {7 lensPieceMainAdditional l \"additional pieces\" R 0 10}\n addUserKnob {3 lensPieceMainSeed l seed}\n addUserKnob {26 \"\"}\n addUserKnob {4 lensPieceMainType l type M {\"white bokeh\" \"photo bokeh\" \"varied bokeh\" \"soft white bokeh\" \"green tris\" \"squashed bokeh\" \"ring halos\" \"chroma sphere\" \"bubbly bokeh\" \"crisp bokeh\" \"\" \"\" \"\"}}\n addUserKnob {18 lensPieceMainColour l tint}\n lensPieceMainColour {1 1 1}\n addUserKnob {6 lensPieceMainColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 lensPieceMainBlur l blur R 0 100}\n addUserKnob {7 lensPieceMainMix l mix}\n lensPieceMainMix 0.25\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_10 l endGroup n -1}\n addUserKnob {20 lensPieceBigGrp l \"big pieces\" n 1}\n lensPieceBigGrp 0\n addUserKnob {6 lensPieceBigEnable l enable +STARTLINE}\n addUserKnob {7 lensPieceBigOffset l offset R -5 5}\n addUserKnob {3 lensPieceBigSeed l seed}\n addUserKnob {26 \"\"}\n addUserKnob {4 lensPieceBigPicker l type M {\"big blue\" \"soft blue\" \"squashed chroma\" \"saturated blue\" \"penta shapes\" \"white curves\" \"crisp bokehs\" \"\"}}\n lensPieceBigPicker \"saturated blue\"\n addUserKnob {18 lensPieceBigTint l tint}\n lensPieceBigTint {1 1 1}\n addUserKnob {6 lensPieceBigTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {14 lensPieceBigBlur l blur R 0 100}\n addUserKnob {7 lensPieceBigMix l mix}\n lensPieceBigMix 0.25\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_12 l endGroup n -1}\n addUserKnob {20 lensPieceRingsGrp l rings n 1}\n lensPieceRingsGrp 0\n addUserKnob {6 lensPieceRingsEnable l enable +STARTLINE}\n addUserKnob {7 lensPieceRingsRotation l rotation R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {4 lensPieceRingsPicker l type M {\"chroma sticks\" \"chroma hoop\" \"whitewashed hoops\" \"photographic glows\" \"\"}}\n lensPieceRingsPicker \"photographic glows\"\n addUserKnob {18 lensPieceRingsTint l tint}\n lensPieceRingsTint {1 1 1}\n addUserKnob {6 lensPieceRingsTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 lensPieceRingsMix l mix}\n lensPieceRingsMix 0.4\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_13 l endGroup n -1}\n addUserKnob {20 lensPieceLinesGrp l lines n 1}\n lensPieceLinesGrp 0\n addUserKnob {6 lensPieceLinesEnable l enable +STARTLINE}\n addUserKnob {7 lensPieceLinesStretch l stretch R 1 20}\n lensPieceLinesStretch 1\n addUserKnob {7 lensPieceLinesOffset l offset R -5 5}\n addUserKnob {26 \"\"}\n addUserKnob {4 lensPieceLinesPicker l type M {\"sharp lines\" \"ripped squares\" \"single thin stripe\" \"long squares\" \"blue stripes\" \"checkered stripes\" \"double thin stripe\"}}\n addUserKnob {18 lensPieceLinesTint l tint}\n lensPieceLinesTint {1 1 1}\n addUserKnob {6 lensPieceLinesTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 lensPieceLinesMix l mix}\n lensPieceLinesMix 0.05\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_14 l endGroup n -1}\n addUserKnob {20 dynamicFXTab l \"screen space FX\"}\n addUserKnob {26 selectionRegionHeader l \"<b><font color=#70EE70>selection region</font><b>\"}\n addUserKnob {6 previewEdgeArea l \"preview edge selection\" +STARTLINE}\n addUserKnob {7 bloomFalloffCrush l \"edge falloff adjust\" R -1 1}\n addUserKnob {6 previewCenterSelection l \"preview center selection\" +STARTLINE}\n addUserKnob {7 centerFalloffAdjust l \"center falloff adjust\" R -1 1}\n addUserKnob {26 centerFrameBloomHeader l \"<b><font color=#70EE70>center frame bloom</font><b>\"}\n addUserKnob {6 centerFrameBloomDisable l INVISIBLE +INVISIBLE +STARTLINE}\n centerFrameBloomDisable {{!centerFrameBloomAlt}}\n addUserKnob {6 centerFrameBloomAlt l enable +STARTLINE}\n centerFrameBloomAlt true\n addUserKnob {7 centerFrameBloomMix l mix}\n centerFrameBloomMix 1\n addUserKnob {18 centerFrameBloomGrade l tint}\n centerFrameBloomGrade {1 1 1}\n addUserKnob {6 centerFrameBloomGrade_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 edgeShimmerHeader l \"<b><font color=#70EE70>edge shimmer</font><b>\"}\n addUserKnob {6 edgeShimmerDisable l INVISIBLE +INVISIBLE +STARTLINE}\n edgeShimmerDisable {{!edgeShimmerAlt}}\n addUserKnob {6 edgeShimmerAlt l enable +STARTLINE}\n addUserKnob {7 edgeShimmerIntensity l intensity R 0 5}\n edgeShimmerIntensity 1\n addUserKnob {6 shimmerColour l \"coloured shimmer\" +STARTLINE}\n shimmerColour true\n addUserKnob {18 edgeShimmerColour l tint}\n edgeShimmerColour {1 1 1}\n addUserKnob {6 edgeShimmerColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 edgeBloomHeader l \"<b><font color=#70EE70>edge bloom</font><b>\"}\n addUserKnob {6 edgeBloomDisable l INVISIBLE +INVISIBLE +STARTLINE}\n edgeBloomDisable {{!edgeBloomAlt}}\n addUserKnob {6 edgeBloomAlt l enable +STARTLINE}\n addUserKnob {7 edgeBloomIntensity l intensity}\n edgeBloomIntensity 1\n addUserKnob {18 edgeBloomColour l tint}\n edgeBloomColour {1 1 1}\n addUserKnob {6 edgeBloomColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 lensFxTab l \"lens FX\"}\n addUserKnob {26 chromaHeader l \"<b><font color=#70EE70>chroma shift</font><b>\"}\n addUserKnob {6 lensChromaEnable l enable +STARTLINE}\n lensChromaEnable true\n addUserKnob {4 chromaShiftType l type M {blur scale}}\n addUserKnob {7 chromaShiftAmountSlider l amount R 0 0.25}\n chromaShiftAmountSlider 0.007\n addUserKnob {6 chromaR l R +STARTLINE}\n addUserKnob {6 chromaG l G -STARTLINE}\n addUserKnob {6 chromaB l B -STARTLINE}\n chromaB true\n addUserKnob {26 distortionHeader l \"<b><font color=#70EE70>lens distortion</font><b>\"}\n addUserKnob {6 lensDistortionEnable l enable +STARTLINE}\n addUserKnob {7 lensFXDistortionAmount l \"first radial\" R -0.3 0.3}\n addUserKnob {7 lensFXDistortionAmount2 l \"second radial\" R -0.3 0.3}\n addUserKnob {26 edgeBlurHeader l \"<b><font color=#70EE70>edge blur</font><b>\"}\n addUserKnob {6 edgeBlurEnable l enable +STARTLINE}\n addUserKnob {14 edgeBlurAmount l amount R 0 100}\n addUserKnob {6 previewEdgeBlur l \"preview region\" +STARTLINE}\n addUserKnob {14 edgeBlurRegionScale l \"region scale\" R 0 100}\n edgeBlurRegionScale 1.7\n addUserKnob {7 edgeBlurRegionClamp l \"region clamp\"}\n edgeBlurRegionClamp 0.3\n addUserKnob {26 vignettingHeader l \"<b><font color=#70EE70>vignetting</font><b>\"}\n addUserKnob {6 vignettingEnable l enable +STARTLINE}\n addUserKnob {7 vignettingAmountSlider l amount}\n addUserKnob {6 vignettingRegionPreview l \"preview region\" +STARTLINE}\n addUserKnob {14 vignettingRegionScale l \"region scale\" R 0 100}\n vignettingRegionScale 1.7\n addUserKnob {7 vignettingRegionClamp l \"region clamp\"}\n vignettingRegionClamp 0.3\n addUserKnob {26 bloomHeader l \"<b><font color=#70EE70>photographic bloom</font><b>\"}\n addUserKnob {6 bloomEnable l enable +STARTLINE}\n addUserKnob {4 bloomTypeAlt l \"bloom type\" M {\"radial bloom\" \"striped bloom\" \"\"}}\n addUserKnob {4 bloomType l \"bloom calculation\" M {pre-flare post-flare \"\"}}\n bloomType post-flare\n addUserKnob {4 bloomPreview l preview M {\"\\[none]\" \"selection region\" \"bloom FX only\"}}\n addUserKnob {7 bloomTolerance l tolerance}\n bloomTolerance 0.6\n addUserKnob {14 bloomAmount l size R 0 100}\n bloomAmount 20\n addUserKnob {7 bloomRatio l \"sharp/soft ratio\" R 0.1 1}\n bloomRatio 0.25\n addUserKnob {26 sharpSoftText l \"\" +STARTLINE T \"(sharp) < - - - > (soft)\"}\n addUserKnob {7 bloomStrength l strength}\n bloomStrength 1\n addUserKnob {20 bloomNoiseGrp l \"noise controls\" n 1}\n bloomNoiseGrp 0\n addUserKnob {6 bloomNoiseEnable l \"noise enable\" +STARTLINE}\n addUserKnob {7 bloomNoiseAmount l \"noise mult\"}\n bloomNoiseAmount 0.9\n addUserKnob {7 bloomNoiseGain l \"noise gain\"}\n bloomNoiseGain 0.45\n addUserKnob {7 bloomNoiseSize l \"noise size\" R 0 1000}\n bloomNoiseSize 300\n addUserKnob {20 endGroup_15 l endGroup n -1}\n addUserKnob {20 animTab l animation}\n addUserKnob {26 animLabel l \"<b><font color=#70EE70>animation options</font><b>\"}\n addUserKnob {6 enable_animation l \"enable animation\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {4 WaveSeed l seed M {sine bounce rand tri saw sawPara sawPara_reversed \"\" \"\" \"\"}}\n addUserKnob {6 squared -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {3 minVal l min}\n minVal 1\n addUserKnob {3 maxVal l max -STARTLINE}\n maxVal 3\n addUserKnob {26 \"\"}\n addUserKnob {7 speed R 0.1 100}\n speed 60\n addUserKnob {26 animSpeedLabel l \"\" +STARTLINE T \"(faster) < - - > (slower)\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 slide R -50 50}\n addUserKnob {26 \"\"}\n addUserKnob {22 applyAnim l \"apply animation\" T \"type = nuke.thisNode().knob(\\\"WaveSeed\\\").value()\\nsquareExp = \\\" > ((maxVal/2)+(minVal/2)) ? maxVal : minVal\\\"\\nwcontrol = nuke.thisNode().knob(\\\"waveController\\\").value()\\n\\nsineExp1 = \\\"((sin(((frame*(pi*2/(speed/2)+slide)/2)))+1)/2)\\\"\\nbounceExp1 = \\\"(sin(((frame/speed)*pi)+slide)>0?sin(((frame/speed)*pi)+slide):cos((((frame/speed)*pi)+slide)+(pi/2)))\\\"\\nrandExp1 = \\\"(random((frame/speed)+slide))\\\"\\nnoiseExp1 = \\\"((1*(noise((frame/speed)+slide))+1 ) /2 )\\\"\\ntriExp1 = \\\"((((2*asin(sin(2*pi*(frame/speed)+slide)))/pi) / 2)+0.5)\\\"\\nsawExp1 = \\\"(1/speed)*(((frame-1)+slide) % speed)\\\"\\nsawParaExp1 = \\\"(sin((1/(pi/2))*(((frame-1)+slide)/(speed/2.46666666)) % (pi/2)))>0.99999?1:(sin((1/(pi/2))*(((frame-1)+slide)/(speed/2.46666666)) % (pi/2)))\\\"\\nsawParaRExp1 = \\\"(cos((1/(pi/2))*(((frame-1)+slide)/(speed/2.46666666)) % (pi/2)))>0.99999?1:(cos((1/(pi/2))*(((frame-1)+slide)/(speed/2.46666666)) % (pi/2)))\\\"\\nsawExpoExp1 = \\\"(((((exp((1/(pi/2))*(((frame-1)+slide)/(speed/4.934802)) % pi*2)))/534.5)) - 0.00186741)>0.999987?1:(((((exp((1/(pi/2))*(((frame-1)+slide)/(speed/4.934802)) % pi*2)))/534.5)) - 0.00186741)\\\"\\n\\nmaxMinExp =  \\\" * (maxVal-minVal) ) + minVal\\\"\\n\\nsineExp2 = \\\"(\\\" + sineExp1 + maxMinExp\\nbounceExp2 = \\\"(\\\" + bounceExp1 + maxMinExp\\nrandomExp2 = \\\"(\\\" + randExp1 + maxMinExp\\nnoiseExp2 = \\\"(\\\" + noiseExp1 + maxMinExp\\ntriExp2 = \\\"(\\\" + triExp1 + maxMinExp\\nsawExp2 = \\\"(\\\" + sawExp1 + maxMinExp\\nsawParaExp2 = \\\"(\\\" + sawParaExp1 + maxMinExp\\nsawParaRExp2 = \\\"(\\\" + sawParaRExp1 + maxMinExp\\nsawExpoExp2 = \\\"(\\\" + sawExpoExp1 + maxMinExp\\n\\nmaxMinCexp = \\\" * ((maxVal-((maxVal - minVal)*result2))-(minVal+((maxVal - minVal)*result2))))+(minVal+((maxVal - minVal)*result2))\\\"\\n\\nsineCexp = \\\"(\\\" + sineExp1 + maxMinCexp\\nbounceCexp = \\\"(\\\" + bounceExp1 + maxMinCexp\\nrandCexp = \\\"(\\\" + randExp1 + maxMinCexp\\nnoiseCexp = \\\"(\\\" + noiseExp1 + maxMinCexp\\ntriCexp = \\\"(\\\" + triExp1 + maxMinCexp\\nsawCexp = \\\"(\\\" + sawExp1 + maxMinCexp\\nsawParaCexp = \\\"(\\\" + sawParaExp1 + maxMinCexp\\nsawParaRCexp = \\\"(\\\" + sawParaRExp1 + maxMinCexp\\nsawExpoCexp = \\\"(\\\" + sawExpoExp1 + maxMinCexp\\n\\nsineComboExp = \\\"waveController ? (\\\" + sineCexp + \\\") : (\\\" + sineExp2 + \\\")\\\"\\nbounceComboExp = \\\"waveController ? (\\\" + bounceCexp + \\\") : (\\\" + bounceExp2 + \\\")\\\"\\nrandomComboExp = \\\"waveController ? (\\\" + randCexp + \\\") : (\\\" + randomExp2 + \\\")\\\"\\nnoiseComboExp = \\\"waveController ? (\\\" + noiseCexp + \\\") : (\\\" + noiseExp2 + \\\")\\\"\\ntriComboExp = \\\"waveController ? (\\\" + triCexp + \\\") : (\\\" + triExp2 + \\\")\\\"\\nsawComboExp = \\\"waveController ? (\\\" + sawCexp + \\\") : (\\\" + sawExp2 + \\\")\\\"\\nsawParaComboExp = \\\"waveController ? (\\\" + sawParaCexp + \\\") : (\\\" + sawParaExp2 + \\\")\\\"\\nsawParaRComboExp = \\\"waveController ? (\\\" + sawParaRCexp + \\\") : (\\\" + sawParaRExp2 + \\\")\\\"\\nsawExpoComboExp = \\\"waveController ? (\\\" + sawExpoCexp + \\\") : (\\\" + sawExpoExp2 + \\\")\\\"\\n\\n\\nif (type==\\\"sine\\\"):\\n\\texp = \\\"squared ? ((\\\" + sineComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + sineComboExp + \\\")\\\"\\nelif (type==\\\"bounce\\\"):\\n\\texp = \\\"squared ? ((\\\" + bounceComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + bounceComboExp + \\\")\\\"\\nelif (type==\\\"rand\\\"):\\n\\texp = \\\"squared ? ((\\\" + randomComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + randomComboExp + \\\")\\\"\\nelif (type==\\\"noise\\\"):\\n\\texp = \\\"squared ? ((\\\" + noiseComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + noiseComboExp + \\\")\\\"\\nelif (type==\\\"tri\\\"):\\n\\texp = \\\"squared ? ((\\\" + triComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + triComboExp + \\\")\\\"\\nelif (type==\\\"saw\\\"):\\n\\texp = \\\"squared ? ((\\\" + sawComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + sawComboExp + \\\")\\\"\\nelif (type==\\\"sawPara\\\"):\\n\\texp = \\\"squared ? ((\\\" + sawParaComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + sawParaComboExp + \\\")\\\"\\nelif (type==\\\"sawPara_reversed\\\"):\\n\\texp = \\\"squared ? ((\\\" + sawParaRComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + sawParaRComboExp + \\\")\\\"\\nelif (type==\\\"sawExp\\\"):\\n\\texp = \\\"squared ? ((\\\" + sawExpoComboExp + \\\")\\\" +  squareExp + \\\") : (\\\" + sawExpoComboExp + \\\")\\\"\\n\\n\\nnuke.thisNode().knob(\\\"result\\\").setExpression(exp)\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {6 waveController l INVISIBLE +INVISIBLE +STARTLINE}\n waveController {{\"squared ? ((waveController ? ((((sin(((frame*(pi*2/(animSpeed/2)+animSlide)/2)))+1)/2) * ((maxVal-((maxVal - minVal)*result2))-(minVal+((maxVal - minVal)*result2))))+(minVal+((maxVal - minVal)*result2))) : ((((sin(((frame*(pi*2/(animSpeed/2)+animSlide)/2)))+1)/2) * (maxVal-minVal) ) + minVal)) > ((maxVal/2)+(minVal/2)) ? maxVal : minVal) : (waveController ? ((((sin(((frame*(pi*2/(animSpeed/2)+animSlide)/2)))+1)/2) * ((maxVal-((maxVal - minVal)*result2))-(minVal+((maxVal - minVal)*result2))))+(minVal+((maxVal - minVal)*result2))) : ((((sin(((frame*(pi*2/(animSpeed/2)+animSlide)/2)))+1)/2) * (maxVal-minVal) ) + minVal))\"}}\n addUserKnob {7 result l \"animation curve\" R 0 10}\n result {{\"squared ? ((waveController ? ((((sin(((frame*(pi*2/(speed/2)+slide)/2)))+1)/2) * ((maxVal-((maxVal - minVal)*result2))-(minVal+((maxVal - minVal)*result2))))+(minVal+((maxVal - minVal)*result2))) : ((((sin(((frame*(pi*2/(speed/2)+slide)/2)))+1)/2) * (maxVal-minVal) ) + minVal)) > ((maxVal/2)+(minVal/2)) ? maxVal : minVal) : (waveController ? ((((sin(((frame*(pi*2/(speed/2)+slide)/2)))+1)/2) * ((maxVal-((maxVal - minVal)*result2))-(minVal+((maxVal - minVal)*result2))))+(minVal+((maxVal - minVal)*result2))) : ((((sin(((frame*(pi*2/(speed/2)+slide)/2)))+1)/2) * (maxVal-minVal) ) + minVal))\"}}\n addUserKnob {26 \"\"}\n}\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {0 0 55.87}\n  size_mult {{\"parent.flareCoreSize * 3.4\"}}\n  anamorph 1.1\n  ring_color 0.3720190227\n  inner_color 0.1795123965\n  inner_falloff 7.4\n  flattening 0.15\n  corners_angle -16\n  asym_falloff 0.45018\n  asym_angle -180\n  asym_angle_add true\n  mult_num 2\n  mult_offset 0.3\n  mult_size -0.28\n  name Flare167\n  label \"Center Bloom\"\n  xpos 605\n  ypos 16098\n }\nset N8fe56000 [stack 0]\n Blur {\n  size 8.5\n  name Blur1\n  xpos 605\n  ypos 16195\n }\nset N8fe56800 [stack 0]\n Blur {\n  size 200\n  name Blur2\n  xpos 605\n  ypos 16233\n }\n Constant {\n  inputs 0\n  channels rgb\n  name backdropConstant\n  xpos 908\n  ypos 22841\n }\n Radial {\n  inputs 0\n  area {0 0 {root.width} {root.height}}\n  softness {{\"1 - parent.vignettingRegionClamp\"}}\n  plinear true\n  name Radial4\n  xpos 1230\n  ypos 22163\n }\n Transform {\n  scale {{\"1 + parent.vignettingRegionScale\"}}\n  center {{root.width/2} {root.height/2}}\n  name Transform10\n  xpos 1230\n  ypos 22200\n }\n Invert {\n  clamp true\n  name Invert3\n  xpos 1230\n  ypos 22247\n }\nset N8fe57c00 [stack 0]\n Grade {\n  multiply {1 0 0 1}\n  multiply_panelDropped true\n  name Grade18\n  xpos 1230\n  ypos 22305\n }\n Dot {\n  name Dot26\n  xpos 1264\n  ypos 22366\n }\npush $N8fe57c00\n Radial {\n  inputs 0\n  area {0 0 {root.width} {root.height}}\n  softness {{\"1 - parent.edgeBlurRegionClamp\"}}\n  plinear true\n  name Radial3\n  xpos 1230\n  ypos 21636\n }\n Transform {\n  scale {{\"1 + parent.edgeBlurRegionScale\"}}\n  center {960 540}\n  name Transform8\n  xpos 1230\n  ypos 21690\n }\n Invert {\n  clamp true\n  name Invert1\n  xpos 1230\n  ypos 21737\n }\nset N884f2c00 [stack 0]\n Grade {\n  multiply {1 0 0 1}\n  multiply_panelDropped true\n  name Grade17\n  xpos 1230\n  ypos 21796\n }\n Dot {\n  name Dot36\n  xpos 1264\n  ypos 21856\n }\npush $N884f2c00\n Noise {\n  inputs 0\n  size {{parent.bloomNoiseSize}}\n  gain {{parent.bloomNoiseGain}}\n  center {960 540}\n  name Noise26\n  xpos 1500\n  ypos 20956\n }\n Dot {\n  name Dot167\n  xpos 1534\n  ypos 21090\n }\nset N884f1c00 [stack 0]\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 0 227.56}\n  size_mult {{parent.flareCoreSize/10}}\n  anamorph 1.01\n  ring_color {0.7653999925 0.7450000048 1}\n  inner_color 1\n  outer_falloff 2\n  name Flare1\n  xpos 525\n  ypos 610\n  disable {{parent.Flare340.disable}}\n }\n Dot {\n  name Dot8\n  xpos 559\n  ypos 699\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 0 227.56}\n  size_mult {{parent.flareCoreSize/10}}\n  anamorph 1.01\n  ring_color {0.7653999925 0.7450000048 1}\n  inner_color 1\n  outer_falloff 2\n  name Flare340\n  xpos 436\n  ypos 585\n  disable {{\"parent.coreTypePick == 3 ? 0 : 1\"}}\n }\n Flare {\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 3.97 21.06}\n  size_mult {{parent.flareCoreSize*3}}\n  anamorph 1.728\n  ring_color 0.2300000191\n  inner_color 1\n  outer_falloff 9\n  inner_falloff 2\n  chroma_spread 0.02\n  vis_mask -rgba.alpha\n  name Flare341\n  xpos 436\n  ypos 647\n  disable {{parent.Flare340.disable}}\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge287\n  xpos 436\n  ypos 695\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 17.54 30.69}\n  size_mult {{parent.flareCoreSize}}\n  inner_color 1\n  outer_falloff 2.8\n  inner_falloff 10\n  name mainCore_V3\n  label \"core 3\"\n  xpos 332\n  ypos 617\n  disable {{\"parent.coreTypePick == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 2\n  crop false\n  name Blur162\n  xpos 332\n  ypos 655\n  disable {{parent.mainCore_V3.disable}}\n }\n Glow {\n  tint {0.22 0.055 0.034}\n  tint_panelDropped true\n  brightness 3\n  size 25\n  crop false\n  name Glow42\n  xpos 332\n  ypos 701\n  disable {{parent.mainCore_V3.disable}}\n }\n Dot {\n  name Dot3\n  xpos 366\n  ypos 760\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 7.61 10.51}\n  size_mult {{parent.flareCoreSize} {parent.flareCoreSize}}\n  anamorph 2\n  inner_color 1\n  name mainCore_V2\n  label \"core 2\"\n  xpos 224\n  ypos 611\n  disable {{\"parent.coreTypePick == 1 ? 0 : 1\"}}\n }\n Glow {\n  brightness 0.64\n  size 25\n  crop false\n  name Glow43\n  xpos 224\n  ypos 655\n  disable {{parent.mainCore_V2.disable}}\n }\n Blur {\n  size 4.2\n  crop false\n  name Blur159\n  xpos 224\n  ypos 696\n  disable {{parent.mainCore_V2.disable}}\n }\n Dot {\n  name Dot2\n  xpos 258\n  ypos 773\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  radius {0 17.54 30.69}\n  size_mult {{parent.flareCoreSize}}\n  inner_color 1\n  outer_falloff 2.8\n  inner_falloff 10\n  name mainCore_V1\n  label \"core 1\"\n  xpos 104\n  ypos 602\n  disable {{\"parent.coreTypePick == 0 ? 0 : 1\"}}\n }\n Glow {\n  brightness 3\n  size 25\n  crop false\n  name Glow44\n  xpos 104\n  ypos 656\n  disable {{parent.mainCore_V1.disable}}\n }\n Blur {\n  size 25\n  crop false\n  name Blur160\n  xpos 104\n  ypos 692\n  disable {{parent.mainCore_V1.disable}}\n }\n Dot {\n  name Dot1\n  xpos 138\n  ypos 793\n }\n Switch {\n  inputs 4\n  which {{parent.coreTypePick}}\n  name coreSel\n  xpos 528\n  ypos 789\n }\n Transform {\n  rotate {{parent.coreRotation}}\n  scale {{parent.coreSize}}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  black_outside false\n  name Transform1\n  xpos 528\n  ypos 830\n }\n Blur {\n  size {{parent.coreBlur}}\n  name coreMainBlur\n  xpos 528\n  ypos 866\n }\n Grade {\n  multiply {{parent.coreColour.r} {parent.coreColour.g} {parent.coreColour.b} 1}\n  name lens_core_grade\n  xpos 528\n  ypos 922\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coreOffsetSlider.w) >root.width ? ((-1*parent.coreSize) * (root.width - parent.flarePos.x + parent.coreOffsetSlider.w)) : 0\"} {\"(parent.flarePos.y + parent.coreOffsetSlider.h) >root.height ? ((-1*parent.coreSize) * (root.height - parent.flarePos.y + parent.coreOffsetSlider.h)) : 0\"}}\n  center {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  black_outside false\n  name trans_compensate2\n  xpos 528\n  ypos 962\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coreOffsetSlider.w) <0 ? ((-1*parent.coreSize) * (0 - parent.flarePos.x + parent.coreOffsetSlider.w)) : 0\"} {\"(parent.flarePos.y + parent.coreOffsetSlider.h) <0 ? ((-1*parent.coreSize) * (0 - parent.flarePos.y + parent.coreOffsetSlider.h)) : 0\"}}\n  center {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  black_outside false\n  name neg_trans_compensate2\n  xpos 528\n  ypos 997\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop4\n  xpos 528\n  ypos 1038\n }\n Dot {\n  name Dot4\n  xpos 562\n  ypos 1089\n }\n Dot {\n  name Dot42\n  xpos 699\n  ypos 1089\n }\nset Nd50e1800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation4\n  xpos 665\n  ypos 1121\n }\npush $Nd50e1800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy6\n  xpos 798\n  ypos 1078\n  disable true\n }\nset Nd50e1000 [stack 0]\n Dot {\n  name Dot43\n  xpos 918\n  ypos 1058\n }\n Dot {\n  name Dot27\n  xpos 1444\n  ypos 1058\n }\n Blur {\n  size {{\"parent.lensDirtRangeFalloff * 3\"}}\n  name Blur5\n  xpos 1410\n  ypos 14988\n }\n Grade {\n  whitepoint 0.14\n  white 2\n  multiply 4\n  gamma 1.18\n  name Grade11\n  xpos 1410\n  ypos 15040\n }\n Grade {\n  blackpoint {{parent.lensDirtFalloffSteepness}}\n  name Grade15\n  xpos 1410\n  ypos 15118\n }\n Dot {\n  name Dot22\n  xpos 1444\n  ypos 15187\n }\nset Ne180b400 [stack 0]\n Dot {\n  name Dot25\n  xpos 1245\n  ypos 15187\n }\n Grade {\n  white {1 0 0 1}\n  white_panelDropped true\n  name Grade14\n  xpos 1211\n  ypos 15226\n }\n Shuffle {\n  alpha red\n  name Shuffle2\n  xpos 1211\n  ypos 16333\n }\n Dot {\n  name Dot15\n  xpos 1245\n  ypos 16777\n }\n Constant {\n  inputs 0\n  channels rgb\n  name Constant1\n  xpos 1573\n  ypos 16477\n }\npush $Ne180b400\n Input {\n  inputs 0\n  name customDirt\n  xpos 1523\n  ypos 14731\n  number 1\n }\n Saturation {\n  saturation 0\n  name Saturation12\n  xpos 1523\n  ypos 14767\n }\n Grade {\n  blackpoint 0.12\n  whitepoint 1.65\n  name Grade52\n  xpos 1523\n  ypos 14804\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"1920 1080 0 0 1920 1080 1 HD_1080\"\n  name Constant5\n  xpos 2022\n  ypos 14581\n }\nset Ne1809000 [stack 0]\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Blur6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438c8000 x4479c000 x3cc00000}\n       {x438a8000 x447ac000 x3e600000}\n       {x43a58000 x446b0000 x3ea5000d}\n       {x43928000 x446e0000 x3f252008}\n       {x438f0000 x44824000 x3f325ffa}\n       {x438c8000 x4482c000 x3f346003}\n       {x439b0000 x4467c000 x3f389ff9}\n       {x43898000 x446a8000 x3f3d5ffe}\n       {x43030000 x44828000 x3f3ce001}\n       {x42180000 x44854000 x3f39dffc}\n       {x426c0000 x4468c000 x3f39dffc}\n       {x42e00000 x44580000 x3f3b9ffd}\n       {x42500000 x446d4000 x3f3ce001}\n       {x426c0000 x44808000 x3f389ff9}\n       {x42580000 x44564000 x3f3aa002}\n       {x42aa0000 x44340000 x3f3edff8}\n       {xc1300000 x444b8000 x3f3edff8}\n       {xc1900000 x44690000 x3f3c6003}\n       {x41c80000 x44460000 x3f3c6003}\n       {x42a60000 x441d0000 x3f401ffb}\n       {x42000000 x44124000 x3f40e001}\n       {x42240000 x440d4000 x3f3f1fff}\n       {x42880000 x43eb0000 x3f3ea002}\n       {x42600000 x43d48000 x3f3f1fff}\n       {x42480000 x43c38000 x3f3ddffc}\n       {x42740000 x43dc8000 x3f292008}\n       {x42a20000 x44094000 x3f212008}\n       {x42c20000 x43e58000 x3f246003}\n       {x429e0000 x438c8000 x3f2d5ffe}\n       {x42900000 x43510000 x3f2fe005}\n       {x42ca0000 x43630000 x3f262004}\n       {x42d00000 x43980000 x3f0c1ffb}\n       {x433b0000 x43800000 x3f11a006}\n       {x43838000 x431b0000 x3f2be005}\n       {x43910000 x42ea0000 x3f2d5ffe}\n       {x43730000 x431d0000 x3f2c1ffb}\n       {x43980000 x42e00000 x3f2b9ffd}\n       {x43cd0000 x41b00000 x3f34e001}\n       {x43f88000 xc2820000 x3f31dffc}\n       {x44004000 xc2c60000 x3f21dffc}\n       {x43f68000 xc2be0000 x3eb28006}}}\n     {t\n   {{x41300000 x432bd439}}\n   {{x41300000 x4411f6a8}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43838000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442a0000 x44618000 x3da20005}\n       {x442a0000 x44608000 x3e770004}\n       {x44258000 x44690000 x3ef1fff8}\n       {x4424c000 x44698000 x3f215ffe}\n       {x4424c000 x44690000 x3f239ffd}\n       {x44114000 x447ac000 x3f24e001}\n       {x44108000 x447b0000 x3f2be005}\n       {x44108000 x447a4000 x3f2b1fff}\n       {x441d8000 x44650000 x3f2d2008}\n       {x441a0000 x44634000 x3f309ff9}\n       {x44028000 x4481a000 x3f36dff8}\n       {x43f98000 x44862000 x3f3a2004}\n       {x44030000 x44804000 x3f3c6003}\n       {x440c8000 x4471c000 x3f42a002}\n       {x43fb0000 x447dc000 x3f452008}\n       {x43ee8000 x44882000 x3f446003}\n       {x43f20000 x44856000 x3f465ffa}\n       {x44060000 x447d0000 x3f46dff8}\n       {x44004000 x447c0000 x3f479ffd}\n       {x43e68000 x44856000 x3f479ffd}\n       {x43c28000 x448e6000 x3f476007}\n       {x43bd0000 x448d8000 x3f02a002}}}\n     {t\n   {{x41300000 x440a4ba6}}\n   {{x41300000 x447ab70a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43838000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449b8000 x442f8000 x3dbc0003}\n       {x449ac000 x4432c000 x3edafff3}\n       {x44968000 x44494000 x3d8dfffb}}}\n     {t\n   {{x41300000 x44999571}}\n   {{x41300000 x44392ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43838000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44904000 x44068000 x3da3fffd}\n       {x44904000 x44078000 x3ebf7ff1}\n       {x448fc000 x440d4000 x3eeb8002}\n       {x44928000 x44060000 x3f1b6007}\n       {x44932000 x44054000 x3f1ea002}\n       {x44920000 x440d4000 x3f206003}\n       {x44920000 x440dc000 0}}}\n     {t\n   {{x41300000 x44916948}}\n   {{x41300000 x44095b75}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43838000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44698000 x44704000 x3ebc0011}\n       {x44690000 x4471c000 x3ee1fff8}\n       {x4479c000 x4459c000 x3f046003}\n       {x447c0000 x44538000 x3f30e001}\n       {x4471c000 x44610000 x3f35a006}\n       {x44618000 x447c8000 x3f362004}\n       {x44770000 x445b4000 x3f3aa002}\n       {x4462c000 x447f8000 x3f43e005}\n       {x44620000 x44808000 x3f455ffe}\n       {x4479c000 x44618000 x3f4d5ffe}\n       {x447ac000 x445c0000 x3f515ffe}\n       {x44674000 x44780000 x3f51a006}\n       {x44658000 x447d0000 x3f509ff9}\n       {x446fc000 x44720000 x3f40e001}}}\n     {t\n   {{x41300000 x446e4db2}}\n   {{x41300000 x446c5b75}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43838000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4480c000 x444c4000 x3cb0000d}\n       {x44812000 x444cc000 x3d27fff9}\n       {x44804000 x444f8000 x3ef70004}\n       {x447ac000 x4456c000 x3f265ffa}\n       {x4470c000 x4463c000 x3f2e5ffa}\n       {x446d4000 x44698000 x3f352008}\n       {x44684000 x44714000 x3f362004}\n       {x44658000 x44740000 x3f3a2004}\n       {x4463c000 x44770000 x3f3a2004}\n       {x44620000 x44788000 x3f376007}\n       {x44618000 x44788000 x3e6cffeb}}}\n     {t\n   {{x41300000 x44702e87}}\n   {{x41300000 x44654000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efe000 x44338000 x3cc00000}\n       {x44efa000 x44380000 x3d6c0003}}}\n     {t\n   {{x41300000 x44efc000}}\n   {{x41300000 x4435c000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eba000 x442c0000 x3d67fff9}\n       {x44eb6000 x442c0000 x3e01001d}\n       {x44eb6000 x442c4000 x3e828006}\n       {x44ede000 x4431c000 x3eb9800a}}}\n     {t\n   {{x41300000 x44ec1000}}\n   {{x41300000 x442d8000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44514000 x43e80000 x3d000000}\n       {x44514000 x43ed8000 x3d30000d}\n       {x44514000 x43fc0000 x3ef28006}\n       {x44504000 x43fe0000 x3a7ffff7}}}\n     {t\n   {{x41300000 x44510000}}\n   {{x41300000 x43f3e000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441f4000 x42ea0000 x3d8dfffb}\n       {x4420c000 x43030000 x3e6afff3}\n       {x442b8000 x433d0000 x3ec67ff6}\n       {x44374000 x436c0000 x3f089ff9}\n       {x443d0000 x43850000 x3f195ffe}\n       {x443fc000 x43938000 x3f241ffb}\n       {x44428000 x439e8000 x3f295ffe}\n       {x444cc000 x43c80000 x3f2d5ffe}}}\n     {t\n   {{x41300000 x4435d800}}\n   {{x41300000 x4373e000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442d4000 x43100000 x3c800000}\n       {x442f8000 x43220000 x3c980007}}}\n     {t\n   {{x41300000 x442e6000}}\n   {{x41300000 x43190000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44228000 x42b40000 x3d13fffd}\n       {x44398000 x43560000 x3d6c0003}}}\n     {t\n   {{x41300000 x442e0000}}\n   {{x41300000 x43180000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4424c000 x42f40000 x3d67fff9}\n       {x4423c000 x42c60000 x3d600000}}}\n     {t\n   {{x41300000 x44244000}}\n   {{x41300000 x42dd0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44270000 x43020000 x3e9d000d}\n       {x4428c000 x427c0000 x3eb9fff8}\n       {x44284000 x426c0000 x3e977ff1}}}\n     {t\n   {{x41300000 x44280000}}\n   {{x41300000 x42a80000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442a0000 x43020000 x3dbdfffb}\n       {x442a0000 x42e20000 x3e9c7ffe}\n       {x442a8000 x42ce0000 x3ee8800f}\n       {x442a0000 x42600000 x3ee9800a}}}\n     {t\n   {{x41300000 x442a2000}}\n   {{x41300000 x42c90000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4427c000 x43140000 x3db00000}\n       {x44270000 x42900000 x3ee9fff8}}}\n     {t\n   {{x41300000 x44276000}}\n   {{x41300000 x42dc0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44308000 x43340000 x3d180007}\n       {x44314000 x430e0000 x3ebf7ff1}\n       {x44324000 x42ea0000 x3f0a2004}\n       {x4430c000 x42ac0000 x3f09dffc}}}\n     {t\n   {{x41300000 x44313000}}\n   {{x41300000 x43034000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44314000 x434a0000 x3db80007}\n       {x4431c000 x434b0000 x3eb1fff8}\n       {x44338000 x43380000 x3eff0004}\n       {x44390000 x43000000 x3f1be005}\n       {x44398000 x42f20000 x3ef77ff1}\n       {x44388000 x42f40000 x3d580007}}}\n     {t\n   {{x41300000 x44359550}}\n   {{x41300000 x43200000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44398000 x43610000 x3d8dfffb}\n       {x443ec000 x43360000 x3e9afff3}\n       {x443e0000 x43220000 x3f1ddffc}\n       {x443a4000 x43540000 x3f1e2004}\n       {x443ac000 x435a0000 x3f1ce001}\n       {x443c0000 x43290000 x3f1ea002}\n       {x443b4000 x43260000 x3f209ff9}\n       {x443ac000 x43290000 x3f1da006}\n       {x44388000 x43530000 x3f1c1ffb}\n       {x44388000 x43650000 x3f155ffe}\n       {x44380000 x43320000 x3f171fff}\n       {x44354000 x430c0000 x3f1b6007}\n       {x4430c000 x43290000 x3f1c1ffb}\n       {x44300000 x43440000 x3f189ff9}\n       {x44308000 x434a0000 x3f176007}\n       {x44330000 x433b0000 x3f176007}\n       {x44348000 x432b0000 x3f179ffd}\n       {x44364000 x43360000 x3f0ddffc}\n       {x44364000 x43410000 x3dd80022}}}\n     {t\n   {{x41300000 x44379e56}}\n   {{x41300000 x433b6bc7}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444dc000 x43860000 x3e847ffe}\n       {x444dc000 x43948000 x3eb0fffc}}}\n     {t\n   {{x41300000 x444dc000}}\n   {{x41300000 x438d4000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44494000 x43660000 x3d1bfff6}\n       {x444cc000 x438d8000 x3eaafff3}\n       {x444dc000 x43900000 x3e21fff8}}}\n     {t\n   {{x41300000 x444beab0}}\n   {{x41300000 x43858000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44468000 x43420000 x3ecb8002}\n       {x444a0000 x43870000 x3ef00000}\n       {x44494000 x43850000 x3db9fffe}}}\n     {t\n   {{x41300000 x44489550}}\n   {{x41300000 x4373553f}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443fc000 x43300000 x3e2afff3}\n       {x44404000 x433d0000 x3ec60008}\n       {x44408000 x435a0000 x3f089ff9}\n       {x44418000 x43360000 x3f081ffb}\n       {x44434000 x435a0000 x3ef67ff6}\n       {x44458000 x436c0000 x3f0e2004}}}\n     {t\n   {{x41300000 x4441cab0}}\n   {{x41300000 x434b2ac1}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443c8000 x43270000 x3ec00000}\n       {x443e4000 x43580000 x3ee3ffef}}}\n     {t\n   {{x41300000 x443d6000}}\n   {{x41300000 x433f8000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443b4000 x43140000 x3e977ff1}\n       {x443a4000 x432d0000 x3eef0004}\n       {x443a4000 x43460000 x3f039ffd}}}\n     {t\n   {{x41300000 x443a9550}}\n   {{x41300000 x432d0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44408000 x42fc0000 x3ecd7ffa}\n       {x443d8000 x43360000 x3ef0800f}}}\n     {t\n   {{x41300000 x443f0000}}\n   {{x41300000 x431a0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443c0000 x42b80000 x3edd7ffa}\n       {x443f4000 x43260000 x3eee7ff6}}}\n     {t\n   {{x41300000 x443da000}}\n   {{x41300000 x43010000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44364000 x428c0000 x3ee0800f}\n       {x44330000 x42bc0000 x3ef47ffe}\n       {x44380000 x43190000 x3f079ffd}\n       {x44398000 x43200000 x3eb9800a}}}\n     {t\n   {{x41300000 x4436b000}}\n   {{x41300000 x42ee8000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44308000 x42900000 x3eee7ff6}\n       {x442f8000 x42940000 1}\n       {x442f8000 x43150000 x3f02a002}\n       {x442f8000 x431b0000 x3f036007}\n       {x442f0000 x43170000 x3e9a8006}}}\n     {t\n   {{x41300000 x442f999a}}\n   {{x41300000 x42f06666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44300000 x427c0000 x3e7e0008}\n       {x442e8000 x42be0000 x3ebb8002}\n       {x442f8000 x43000000 x3f276007}\n       {x442f8000 x43030000 x3f0e2004}}}\n     {t\n   {{x41300000 x442f6000}}\n   {{x41300000 x42d08000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4439c000 x42940000 x3d900000}\n       {x44378000 x429e0000 x3e947ffe}\n       {x44324000 x42ca0000 x3f101ffb}\n       {x4430c000 x42e00000 x3f2a5ffa}\n       {x442f0000 x42f80000 x3f2d5ffe}\n       {x442e8000 x42f40000 0}}}\n     {t\n   {{x41300000 x4432f550}}\n   {{x41300000 x42cc0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43120000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44180000 x41e80000 x3e180022}\n       {x441c8000 x42600000 x3ea70004}\n       {x442a8000 x42f20000 x3f0ea002}\n       {x441d8000 x41f80000 x3f25dffc}\n       {x441d8000 x42ac0000 x3f365ffa}\n       {x4428c000 x431b0000 x3f36a002}\n       {x44220000 x41100000 x3f3edff8}\n       {x44210000 x423c0000 x3f49a006}\n       {x4423c000 x434b0000 x3f455ffe}\n       {x441fc000 x42080000 x3f58e001}\n       {x44180000 x42d40000 x3f576007}\n       {x440e4000 x43610000 x3f522004}\n       {x44220000 x42000000 x3f601ffb}\n       {x44108000 x42580000 x3f5c6003}\n       {x44054000 x43420000 x3f59a006}\n       {x441d8000 x42940000 x3f615ffe}\n       {x4405c000 x42aa0000 x3f595ffe}\n       {x440e4000 x43440000 x3f58e001}\n       {x4420c000 x41c80000 x3f609ff9}\n       {x44068000 x42880000 x3f615ffe}\n       {x44204000 x43380000 x3f5f9ffd}\n       {x44220000 x42500000 x3f6be005}\n       {x440d4000 x43340000 x3f665ffa}\n       {x44324000 x43808000 x3f61dffc}\n       {x44230000 x42f20000 x3f6adff8}\n       {x440a4000 x43120000 x3f5be005}\n       {x44338000 x438a8000 x3f57e005}\n       {x4428c000 x43200000 x3f5edff8}\n       {x4417c000 x434a0000 x3f612008}\n       {x442a0000 x43a00000 x3f5be005}\n       {x44268000 x437c0000 x3f5adff8}\n       {x441d0000 x43290000 x3f5c9ff9}\n       {x442c4000 x43a10000 x3f5c9ff9}\n       {x4430c000 x43b50000 x3f576007}\n       {x4428c000 x43610000 x3f5b1fff}\n       {x4423c000 x438c8000 x3f5be005}\n       {x443d0000 x43e90000 x3f565ffa}\n       {x443ac000 x43da8000 x3f54e001}\n       {x44244000 x439e8000 x3f58e001}\n       {x442b8000 x43c60000 x3f579ffd}\n       {x4436c000 x43f78000 x3f522004}\n       {x44338000 x43bf0000 x3f52dff8}\n       {x4430c000 x432d0000 x3f546003}\n       {x4431c000 x43650000 x3f571fff}\n       {x44578000 x43800000 x3f4fe005}\n       {x443d0000 x428c0000 x3f579ffd}\n       {x44450000 x437a0000 x3f5f9ffd}\n       {x44588000 x438e0000 x3f539ffd}\n       {x44474000 x42100000 x3f5f6007}\n       {x44418000 x429e0000 x3f5be005}\n       {x44578000 x43860000 x3f595ffe}\n       {x44528000 x43510000 x3f5e2004}\n       {x44378000 xc0a00000 x3f5ea002}\n       {x44450000 x42ea0000 x3f5c9ff9}\n       {x445ac000 x434f0000 x3f581ffb}\n       {x443e0000 x42240000 x3f62a002}\n       {x44284000 x40000000 x3f652008}\n       {x4442c000 x43530000 x3f615ffe}\n       {x444cc000 x43440000 x3f61dffc}\n       {x442c0000 x42180000 x3f689ff9}\n       {x4432c000 x430b0000 x3f6aa002}\n       {x44548000 x43808000 x3f65a006}\n       {x44350000 x426c0000 x3f66dff8}\n       {x441fc000 xc1500000 x3f6b1fff}\n       {x44410000 x438c8000 x3f69a006}\n       {x4448c000 x43980000 x3f34e001}}}\n     {t\n   {{x41300000 x442ce000}}\n   {{x41300000 x432e8f9e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x435b0000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441d8000 x426c0000 x3ea2fff3}\n       {x44218000 x426c0000 x3eb77ff1}\n       {x44354000 x42ca0000 x3f0a5ffa}\n       {x4424c000 x42440000 x3f0c9ff9}\n       {x441ec000 x42100000 x3f11a006}\n       {x44164000 x41800000 x3f15a006}\n       {x44268000 x427c0000 x3f18e001}\n       {x442a8000 x42900000 x3f192008}\n       {x442e8000 x429a0000 x3f192008}\n       {x442a8000 x422c0000 x3f195ffe}\n       {x441a0000 x40000000 x3f1c6003}\n       {x44254000 x422c0000 x3f215ffe}\n       {x442e4000 x42740000 x3f20e001}\n       {x4436c000 x42680000 x3f20e001}\n       {x4429c000 x41d80000 x3f22a002}\n       {x441c8000 x41500000 x3f239ffd}\n       {x4423c000 x42180000 x3f222004}\n       {x44278000 x423c0000 x3f222004}\n       {x44398000 x42940000 x3f222004}\n       {x44388000 x42880000 x3f22dff8}\n       {x44234000 x41f80000 x3f236007}\n       {x441d0000 x41c80000 x3f241ffb}\n       {x44258000 x42860000 x3f231fff}\n       {x442f0000 x42b00000 x3f222004}\n       {x442e4000 x42980000 x3f222004}\n       {x44258000 x42440000 x3f236007}\n       {x44220000 x42340000 x3f246003}\n       {x44284000 x42880000 x3f22dff8}\n       {x4432c000 x42ce0000 x3f22dff8}\n       {x44308000 x42c60000 x3f22dff8}\n       {x442cc000 x42d00000 x3f236007}\n       {x442e4000 x42f80000 x3f222004}\n       {x442dc000 x42fc0000 x3efd000d}}}\n     {t\n   {{x41300000 x4428ae87}}\n   {{x41300000 x4273c1f2}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44140000 x42100000 x3e8afff3}\n       {x44158000 x42600000 x3ea1fff8}\n       {x44188000 x428c0000 x3ee00000}\n       {x4430c000 x43100000 x3ee3ffef}\n       {x442e4000 x42e60000 x3ec1800a}}}\n     {t\n   {{x41300000 x44203333}}\n   {{x41300000 x42a86666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44164000 x42440000 x3d4c0003}\n       {x441fc000 x42dc0000 x3d7bfff6}\n       {x442dc000 x432b0000 x3ef0800f}}}\n     {t\n   {{x41300000 x44214000}}\n   {{x41300000 x42dc0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44150000 x41c80000 x3de2003b}\n       {x44420000 x43838000 x3ec9fff8}\n       {x443e4000 x437a0000 x3d860002}}}\n     {t\n   {{x41300000 x4431c000}}\n   {{x41300000 x4333553f}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ab0000 x436f0000 x3d04000a}\n       {x44a94000 x43818000 x3d44000a}\n       {x449d4000 x43c98000 x3f041ffb}\n       {x449dc000 x43c88000 x3f076007}\n       {x449f4000 x43c08000 x3cf7ffec}}}\n     {t\n   {{x41300000 x44a2e666}}\n   {{x41300000 x43a8b333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44af0000 x43680000 x3d67fff9}\n       {x44ae2000 x436f0000 x3e838002}\n       {x44a84000 x43938000 x3ee8800f}\n       {x44a06000 x43bd0000 x3f11dffc}\n       {x449ee000 x43c60000 x3f15a006}}}\n     {t\n   {{x41300000 x44a75333}}\n   {{x41300000 x439a0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ae2000 x43530000 x3d0ffff3}\n       {x44af4000 x43510000 x3d33fffd}\n       {x44acc000 x43680000 x3ece0008}\n       {x44a8c000 x43860000 x3f1c9ff9}\n       {x44a36000 x43a88000 x3f209ff9}\n       {x44a32000 x43aa0000 x3f236007}\n       {x44a48000 x43a48000 x3f0be005}}}\n     {t\n   {{x41300000 x44a8d6b8}}\n   {{x41300000 x4389924e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44982000 x43f08000 x3d4c0003}\n       {x4497e000 x43f10000 x3da60002}\n       {x448f8000 x44180000 x3e857ffa}\n       {x448ee000 x441c8000 x3f0adff8}\n       {x448e0000 x44230000 x3f089ff9}\n       {x448d8000 x44244000 x3eb5000d}}}\n     {t\n   {{x41300000 x4491a571}}\n   {{x41300000 x44121550}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44974000 x43f58000 x3d900000}\n       {x44948000 x44020000 x3eb80000}\n       {x448e0000 x44220000 x3f0adff8}\n       {x448d8000 x44234000 x3f0a2004}}}\n     {t\n   {{x41300000 x4491d000}}\n   {{x41300000 x44108000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44976000 x43e90000 x3d580007}\n       {x44974000 x43ea0000 x3e770004}\n       {x44956000 x43f50000 x3ec77ff1}\n       {x448f8000 x4412c000 x3f106003}\n       {x448e4000 x44180000 x3f22a002}\n       {x448dc000 x441a0000 x3f215ffe}}}\n     {t\n   {{x41300000 x44929571}}\n   {{x41300000 x4406cab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a04000 x44140000 x3dcfffbd}\n       {x449f4000 x44190000 x3e9c0011}\n       {x4498c000 x4439c000 x3f049ff9}\n       {x4491a000 x446fc000 x3f255ffe}\n       {x4490e000 x446f8000 0}}}\n     {t\n   {{x41300000 x44988ccd}}\n   {{x41300000 x44413333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a0a000 x44124000 x3d64000a}\n       {x44a0a000 x44140000 x3eb28006}\n       {x449a6000 x4429c000 x3f101ffb}\n       {x4493e000 x4447c000 x3f2d2008}\n       {x448e6000 x44608000 x3f36dff8}\n       {x448e0000 x4463c000 x3f376007}\n       {x448e0000 x44648000 x3f2da006}}}\n     {t\n   {{x41300000 x4495fb85}}\n   {{x41300000 x4440124e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44866000 x44460000 x3d400000}\n       {x4485e000 x44474000 x3e7c0011}\n       {x44854000 x4448c000 x3f076007}\n       {x44800000 x44548000 x3f0ea002}\n       {x44778000 x44644000 x3f239ffd}\n       {x446d4000 x4471c000 x3f2b1fff}\n       {x446c4000 x44740000 x3f2f9ffd}\n       {x446bc000 x44754000 x3f301ffb}\n       {x446b4000 x44754000 x3f309ff9}\n       {x446d8000 x44738000 x3f2f9ffd}\n       {x4470c000 x446f8000 x3f2f9ffd}\n       {x447dc000 x445c8000 x3f2ddffc}\n       {x44836000 x4450c000 x3f2da006}\n       {x4487e000 x4443c000 x3f2da006}\n       {x44886000 x44428000 x3f2c9ff9}\n       {x44866000 x44470000 x3f2c9ff9}\n       {x44828000 x444dc000 x3f2d5ffe}\n       {x446fc000 x44650000 x3f2e2004}\n       {x4466c000 x446f0000 x3f306003}\n       {x44608000 x44764000 x3f306003}\n       {x4467c000 x446e8000 x3f2da006}\n       {x44740000 x445fc000 x3f2c9ff9}\n       {x4483e000 x44498000 x3f2c1ffb}\n       {x4483a000 x444a0000 x3f2c6003}\n       {x44780000 x445e4000 x3f2b1fff}\n       {x44704000 x44684000 x3f2c9ff9}\n       {x446c4000 x446f8000 x3f2d5ffe}\n       {x44754000 x44650000 x3f2d5ffe}\n       {x447b8000 x445dc000 x3f2d5ffe}\n       {x447d4000 x4459c000 x3f2d2008}\n       {x4478c000 x445f4000 x3f2e5ffa}\n       {x446a0000 x4471c000 x3f2edff8}\n       {x44650000 x4475c000 x3f2edff8}\n       {x44634000 x44770000 x3f1fe005}}}\n     {t\n   {{x41300000 x4477fa5e}}\n   {{x41300000 x446030f6}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44854000 x444b8000 x3d180007}\n       {x44854000 x444b0000 x3d2c0003}\n       {x44856000 x44484000 x3e100000}\n       {x44808000 x4450c000 x3f0b9ffd}\n       {x44780000 x445d0000 x3f246003}\n       {x446cc000 x446d8000 x3f2e2004}\n       {x44690000 x44720000 x3f376007}\n       {x44658000 x44794000 x3f389ff9}\n       {x4462c000 x447b8000 x3f3b9ffd}\n       {x44618000 x447d0000 x3f3c6003}\n       {x44618000 x447c0000 x3f249ff9}}}\n     {t\n   {{x41300000 x4473cba6}}\n   {{x41300000 x44654000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42ba0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446e8000 x442f8000 x3d04000a}\n       {x446e0000 x44380000 x3d380007}}}\n     {t\n      {{x41300000 x446e4000}}\n      {{x41300000 x4433c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4470c000 x4429c000 x3d4c0003}\n       {x44714000 x442a8000 x3e45ffe7}\n       {x44704000 x44300000 x3e700000}}}\n     {t\n      {{x41300000 x4470c000}}\n      {{x41300000 x442c1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448d8000 x4416c000 x3d400000}\n       {x448e0000 x441c8000 x3d4ffff3}}}\n     {t\n      {{x41300000 x448dc000}}\n      {{x41300000 x4419a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ee000 x440b8000 x3d0c0003}\n       {x448e6000 x440d4000 x3d2c0003}}}\n     {t\n      {{x41300000 x448ea000}}\n      {{x41300000 x440c6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ea000 x44070000 x3dc9fffe}\n       {x448e4000 x440a4000 x3e65ffe7}}}\n     {t\n      {{x41300000 x448e7000}}\n      {{x41300000 x4408a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448d4000 x44084000 x3d200000}\n       {x448d4000 x44080000 x3d9c0003}\n       {x448d4000 x44078000 0}}}\n     {t\n      {{x41300000 x448d4000}}\n      {{x41300000 x4407eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44832000 x4412c000 x3e4afff3}\n       {x44832000 x4411c000 x3e6a0019}}}\n     {t\n      {{x41300000 x44832000}}\n      {{x41300000 x44124000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4435c000 x4471c000 x3cc80014}\n       {x4436c000 x446b4000 x3d780007}\n       {x4439c000 x44624000 x3e000000}\n       {x443c8000 x44600000 x3d980007}\n       {x443bc000 x44580000 x3dadfffb}\n       {x443c8000 x44528000 x3dddffc5}\n       {x443fc000 x444b8000 x3e070004}\n       {x44408000 x44450000 x3e530015}\n       {x44420000 x443e0000 x3e53ffef}\n       {x44420000 x44378000 x3e53ffef}\n       {x44470000 x44308000 x3e2afff3}\n       {x44498000 x442b0000 x3e31001d}\n       {x444a8000 x44284000 x3e61001d}\n       {x444e0000 x441c8000 x3e61001d}\n       {x4451c000 x44164000 x3dcc0003}\n       {x44588000 x440c0000 x3db3fffd}}}\n     {t\n      {{x41300000 x44432800}}\n      {{x41300000 x444123f8}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442e8000 x4443c000 x3c60001b}\n       {x4431c000 x443fc000 x3cd80007}\n       {x44340000 x44364000 x3d000000}\n       {x44390000 x442e8000 x3d04000a}\n       {x443d0000 x4424c000 x3dc60002}\n       {x443e4000 x44218000 x3e070004}\n       {x443f4000 x441d0000 x3ca7fff9}}}\n     {t\n      {{x41300000 x4437f6d9}}\n      {{x41300000 x442f5b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d4000 x44768000 x3cc80014}\n       {x440dc000 x44778000 x3d180007}\n       {x440f0000 x44780000 x3e35000d}\n       {x44100000 x44770000 x3e960008}\n       {x44198000 x446f0000 x3e99800a}\n       {x441d8000 x4463c000 x3ea77ff1}\n       {x44218000 x445b4000 x3ea1fff8}\n       {x44254000 x4459c000 x3e9c0011}\n       {x442a8000 x44564000 x3e99fff8}\n       {x442e4000 x44540000 x3e900000}\n       {x442e4000 x44524000 x3e11fff8}}}\n     {t\n      {{x41300000 x441cfa2d}}\n      {{x41300000 x4465ee87}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44134000 x44390000 x3d07fff9}\n       {x44140000 x44380000 x3e430015}\n       {x44180000 x44324000 x3ea0800f}\n       {x44188000 x4430c000 0}}}\n     {t\n      {{x41300000 x4415f000}}\n      {{x41300000 x44350000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fc0000 x44204000 x3d0c0003}\n       {x43fd0000 x441ac000 x3d47fff9}}}\n     {t\n      {{x41300000 x43fc8000}}\n      {{x41300000 x441d8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f68000 x442f8000 x3ccffff3}\n       {x43fe0000 x44278000 x3d180007}\n       {x43fa0000 x44234000 x3d4ffff3}\n       {x43f88000 x44220000 x3d53fffd}}}\n     {t\n      {{x41300000 x43f9c000}}\n      {{x41300000 x44271000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f40000 x4435c000 x3cd80007}\n       {x43f50000 x4435c000 x3d9c0003}\n       {x43f50000 x44324000 x3e11001d}}}\n     {t\n      {{x41300000 x43f4aaa0}}\n      {{x41300000 x44349550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cd0000 x43a30000 x3cb7ffec}\n       {x43c40000 x43aa0000 x3d33fffd}\n       {x43c38000 x43ae8000 x3d7bfff6}}}\n     {t\n      {{x41300000 x43c6d560}}\n      {{x41300000 x43a92aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44004000 x43a10000 x3d2c0003}\n       {x43fa0000 x439e8000 x3d33fffd}}}\n     {t\n      {{x41300000 x43fd4000}}\n      {{x41300000 x439fc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44078000 x43970000 x3d04000a}\n       {x44068000 x43980000 x3d27fff9}}}\n     {t\n      {{x41300000 x44070000}}\n      {{x41300000 x43978000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44260000 x43ef8000 x3c980007}\n       {x4429c000 x43e20000 x3d0ffff3}\n       {x44254000 x43cd0000 x3e08fffc}}}\n     {t\n      {{x41300000 x44270000}}\n      {{x41300000 x43df8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44260000 x44158000 x3ca7fff9}\n       {x442b0000 x440b8000 x3d13fffd}\n       {x442b8000 x4409c000 x3affffd5}}}\n     {t\n      {{x41300000 x44298000}}\n      {{x41300000 x440e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44174000 x44244000 x3ca7fff9}\n       {x44164000 x44230000 x3cf0000d}\n       {x4415c000 x44218000 x3d1bfff6}}}\n     {t\n      {{x41300000 x44166ab0}}\n      {{x41300000 x4422eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ff8000 x44374000 x3c60001b}\n       {x43fc0000 x44380000 x3ccffff3}\n       {x43f88000 x443e4000 x3e01001d}\n       {x43fa0000 x44428000 x3e1afff3}\n       {x43fe8000 x44434000 x3df9ffd6}\n       {x44028000 x44444000 x3df1fff8}\n       {x44084000 x44410000 x3e21fff8}\n       {x440c8000 x443d0000 x3db00000}}}\n     {t\n      {{x41300000 x4401b000}}\n      {{x41300000 x443eb000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44114000 x44100000 x3cc80014}\n       {x440dc000 x44150000 x3cf0000d}}}\n     {t\n      {{x41300000 x440f8000}}\n      {{x41300000 x44128000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440f0000 x440d4000 x3cd80007}\n       {x44108000 x440e4000 x3d0ffff3}}}\n     {t\n      {{x41300000 x440fc000}}\n      {{x41300000 x440dc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d4000 x44084000 x3cc00000}\n       {x440dc000 x440a8000 x3d27fff9}}}\n     {t\n      {{x41300000 x440d8000}}\n      {{x41300000 x44096000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440a4000 x43e80000 x3d07fff9}\n       {x440c0000 x43e68000 x3d380007}\n       {x440c8000 x43e68000 0}}}\n     {t\n      {{x41300000 x440b9550}}\n      {{x41300000 x43e70000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44060000 x43f40000 x3ce7fff9}\n       {x4408c000 x43ef8000 x3d180007}\n       {x4408c000 x43ed8000 x3dd5ffe7}}}\n     {t\n      {{x41300000 x4407d550}}\n      {{x41300000 x43f05560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43db8000 x440f8000 x3cc00000}\n       {x43de8000 x44108000 x3d180007}\n       {x43e48000 x4411c000 x3e130015}\n       {x43e58000 x44114000 x3de3ffef}\n       {x43ec0000 x440dc000 x3da20005}\n       {x43ee8000 x440c8000 0}}}\n     {t\n      {{x41300000 x43e51560}}\n      {{x41300000 x440f8ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ad8000 x42880000 x3ce7fff9}\n       {x43c38000 x422c0000 x3d000000}}}\n     {t\n      {{x41300000 x43b88000}}\n      {{x41300000 x425e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43890000 x42e00000 x3cb7ffec}\n       {x43968000 x42dc0000 x3d07fff9}\n       {x43a40000 x42bc0000 x3e13ffef}\n       {x43ac0000 x428c0000 x3e38fffc}}}\n     {t\n      {{x41300000 x439be000}}\n      {{x41300000 x42c10000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43480000 x42e60000 x3cc00000}\n       {x43560000 x42ce0000 x3d04000a}}}\n     {t\n      {{x41300000 x434f0000}}\n      {{x41300000 x42da0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43340000 x43050000 x3c6fffd8}\n       {x43380000 x42e20000 x3cd80007}\n       {x43380000 x42d80000 x3cb7ffec}}}\n     {t\n      {{x41300000 x4336aac1}}\n      {{x41300000 x42ec0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d00000 x40e00000 x3c8ffff3}\n       {x43d00000 x40800000 x3b9ffffb}}}\n     {t\n      {{x41300000 x43d00000}}\n      {{x41300000 x40b00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c98000 x42240000 x3cd80007}\n       {x43c98000 x42000000 x3d000000}}}\n     {t\n      {{x41300000 x43c98000}}\n      {{x41300000 x42120000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b88000 x42ca0000 x3cd80007}\n       {x43bc0000 x42c20000 x3d13fffd}\n       {x43bd0000 x42bc0000 x3dcc0003}}}\n     {t\n      {{x41300000 x43bb2aa0}}\n      {{x41300000 x42c2aaa6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e20000 x43ad8000 x3cc80014}\n       {x43050000 x43ad0000 x3d07fff9}\n       {x43140000 x43a40000 x3e1e0008}\n       {x430e0000 x439c8000 x3e380022}\n       {x43020000 x43958000 x3e500000}\n       {x430e0000 x439b0000 x3e500000}\n       {x43410000 x439b8000 x3e47ffde}\n       {x433f0000 x438f0000 x3e500000}\n       {x43300000 x43828000 x3e53ffef}\n       {x43340000 x43808000 x3e21fff8}\n       {x43440000 x43770000 x3e100000}\n       {x434a0000 x436a0000 x3e180022}\n       {x434a0000 x43660000 x3e18fffc}\n       {x434a0000 x434d0000 x3dce0008}\n       {x435c0000 x43540000 x3d70000d}\n       {x43848000 x434b0000 x3d70000d}\n       {x43880000 x433f0000 x3e3c0011}\n       {x438f0000 x432d0000 x3e3afff3}\n       {x43948000 x43200000 x3debffce}\n       {x43980000 x43100000 x3e130015}}}\n     {t\n      {{x41300000 x4347b333}}\n      {{x41300000 x437cd99a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c38000 x44380000 x3c800000}\n       {x43c40000 x44348000 x3cf0000d}}}\n     {t\n      {{x41300000 x43c3c000}}\n      {{x41300000 x44364000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bc0000 x44554000 x3d4c0003}\n       {x43b78000 x4451c000 x3d4ffff3}}}\n     {t\n      {{x41300000 x43b9c000}}\n      {{x41300000 x44538000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439d8000 x446a8000 x3ccffff3}\n       {x43990000 x446d4000 x3d04000a}\n       {x439d8000 x44728000 x3de00000}\n       {x43a40000 x44740000 x3e82fff3}\n       {x43b08000 x44720000 x3e80fffc}\n       {x43b18000 x446f0000 x3e580022}\n       {x43b20000 x446cc000 x3e63ffef}\n       {x43b30000 x446c4000 x3e200000}\n       {x43b08000 x44644000 x3e31001d}}}\n     {t\n      {{x41300000 x43a8d560}}\n      {{x41300000 x446dd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x4478c000 x3d180007}\n       {x422c0000 x44728000 x3d800000}\n       {x42240000 x44620000 x3e23ffef}\n       {x42100000 x44588000 x3e4a0019}\n       {x42100000 x44474000 x3e61fff8}\n       {x42180000 x4439c000 x3e430015}\n       {x42240000 x44350000 x3d64000a}}}\n     {t\n      {{x41300000 x421adb71}}\n      {{x41300000 x44564000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42dc0000 x445c8000 x3d24000a}\n       {x42e00000 x445c8000 x3d4ffff3}\n       {x42e20000 x445e4000 x3dd5ffe7}\n       {x42ce0000 x4467c000 x3e91800a}\n       {x42b00000 x4470c000 x3e947ffe}\n       {x42480000 x447b0000 x3e98fffc}}}\n     {t\n      {{x41300000 x42c00000}}\n      {{x41300000 x44672000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43860000 x445c0000 x3dc3fffd}\n       {x43800000 x445b8000 x3e860008}\n       {x437e0000 x44618000 x3e98fffc}}}\n     {t\n      {{x41300000 x4381aaa0}}\n      {{x41300000 x445daab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43260000 x44540000 x3d2c0003}\n       {x43270000 x44548000 x3d47fff9}\n       {x43340000 x44570000 x3df00043}\n       {x43380000 x44580000 0}}}\n     {t\n      {{x41300000 x432e4000}}\n      {{x41300000 x4455e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43270000 x44278000 x3c6fffd8}\n       {x43260000 x44258000 x3c880014}}}\n     {t\n      {{x41300000 x43268000}}\n      {{x41300000 x44268000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431e0000 x443c8000 x3cf7ffec}\n       {x43240000 x44398000 x3d1bfff6}\n       {x43220000 x44338000 x3e967ff6}\n       {x43260000 x442d4000 x3e78fffc}}}\n     {t\n      {{x41300000 x43228000}}\n      {{x41300000 x4435b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43020000 x44460000 x3ce7fff9}\n       {x42f40000 x444bc000 x3d04000a}\n       {x42d40000 x444bc000 x3d3bfff6}\n       {x42c60000 x444b0000 x3e11001d}\n       {x42b00000 x444e8000 x3e25000d}\n       {x42ac0000 x444e8000 x3e8d000d}\n       {x42b80000 x44538000 x3e8f0004}\n       {x42be0000 x44564000 x3e9a8006}\n       {x42e20000 x4459c000 x3e9a8006}\n       {x42f80000 x44590000 x3e98800f}\n       {x43120000 x44528000 x3e91800a}\n       {x43170000 x44514000 0}}}\n     {t\n      {{x41300000 x42e15581}}\n      {{x41300000 x44507ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42580000 x4423c000 x3cf0000d}\n       {x42580000 x44244000 x3d600000}\n       {x42480000 x4435c000 x3d960002}\n       {x42b00000 x44418000 x3e11001d}\n       {x42be0000 x44428000 0}}}\n     {t\n      {{x41300000 x42886666}}\n      {{x41300000 x44338ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x43050000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44504000 x43990000 x3da7fff9}\n       {x444f8000 x43a58000 x3db80007}}}\n     {t\n      {{x41300000 x444fe000}}\n      {{x41300000 x439f4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441ac000 xc0e00000 x3d04000a}\n       {x441ac000 xc0a00000 x3d3bfff6}\n       {x441e8000 x40e00000 x3d64000a}\n       {x442cc000 x423c0000 x3e600000}\n       {x44314000 x42600000 x3e65000d}\n       {x44364000 x42820000 x3e65ffe7}\n       {x44380000 x428c0000 x3e63ffef}\n       {x443c0000 x42d80000 x3e630015}\n       {x443f4000 x42f20000 x3e5afff3}\n       {x44428000 x43000000 x3e5a0019}\n       {x44420000 x43050000 x3e51fff8}\n       {x44450000 x43200000 x3e4effe3}\n       {x44460000 x43220000 x3e3a0019}\n       {x4447c000 x43270000 x3e3e0008}\n       {x4442c000 x43320000 x3e01001d}\n       {x44428000 x43480000 x3e31001d}\n       {x44474000 x434d0000 x3e2afff3}\n       {x444b0000 x434f0000 x3e08fffc}\n       {x444b0000 x43510000 x3e18fffc}\n       {x444bc000 x43580000 x3e18fffc}\n       {x444dc000 x435f0000 x3e180022}\n       {x444e0000 x43650000 x3e270004}\n       {x444e8000 x43710000 x3e13ffef}\n       {x444e0000 x437c0000 x3e070004}\n       {x444dc000 x43890000 x3de7ffde}}}\n     {t\n      {{x41300000 x443f0000}}\n      {{x41300000 x4311d70a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44108000 xc1100000 x3d3bfff6}\n       {x4416c000 x42340000 x3d5bfff6}\n       {x441d8000 x42ca0000 x3e15ffe7}\n       {x44210000 x43000000 x3e15ffe7}\n       {x44278000 x43270000 x3e180022}\n       {x442a0000 x43380000 x3e05000d}\n       {x4430c000 x435a0000 x3e130015}\n       {x44300000 x43630000 x3da7fff9}\n       {x44338000 x43800000 x3e03ffef}\n       {x44350000 x43828000 x3dfdffc5}\n       {x443d0000 x438b8000 x3e000000}\n       {x443e4000 x438d8000 x3da7fff9}\n       {x44418000 x439a0000 x3e03ffef}\n       {x4444c000 x43a88000 x3dfdffc5}\n       {x44474000 x43b30000 x3da3fffd}}}\n     {t\n      {{x41300000 x442f8ccd}}\n      {{x41300000 x43518873}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4411c000 xc1800000 x3cd80007}\n       {x44114000 xc1800000 x3d0ffff3}\n       {x44124000 xc1500000 x3d13fffd}\n       {x44124000 xc1300000 x3df9ffd6}\n       {x44124000 x40800000 x3e1c0011}\n       {x4411c000 x41b00000 x3e800000}\n       {x44108000 x42740000 x3e82fff3}\n       {x44108000 x429e0000 x3e80800f}\n       {x44100000 x42ac0000 x3e78fffc}\n       {x44108000 x42ac0000 x3e5c0011}\n       {x44114000 x42c60000 x3e58fffc}\n       {x44138000 x42ea0000 x3e5cffeb}\n       {x44148000 x43000000 x3e370004}\n       {x44140000 x43030000 x3e38fffc}\n       {x4416c000 x43190000 x3e3afff3}\n       {x44188000 x43200000 x3e5afff3}\n       {x44188000 x43290000 x3e61001d}\n       {x441a0000 x433d0000 x3e5cffeb}\n       {x441bc000 x43510000 x3e55000d}\n       {x441e0000 x435f0000 x3e3a0019}\n       {x44204000 x43730000 x3d6c0003}\n       {x441fc000 x43780000 x3d89fffe}\n       {x44218000 x43898000 x3da3fffd}\n       {x44210000 x438c8000 x3d900000}\n       {x44228000 x43980000 x3db00000}\n       {x44228000 x439b0000 x3d13fffd}\n       {x44230000 x43a10000 x3d1bfff6}\n       {x44234000 x43a68000 x3d380007}\n       {x44230000 x43b68000 x3d380007}\n       {x44230000 x43bf0000 x3cc80014}\n       {x44234000 x43c38000 x3c980007}}}\n     {t\n      {{x41300000 x44192f7d}}\n      {{x41300000 x432b6b44}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449a2000 x44364000 x3cd80007}\n       {x449b8000 x442cc000 x3d04000a}\n       {x449be000 x442a8000 x3e270004}\n       {x449c2000 x442a0000 x3e18fffc}\n       {x449c2000 x4428c000 x3e15ffe7}\n       {x449c2000 x44278000 x3e0a0019}\n       {x449c6000 x44258000 x3e0cffeb}\n       {x449c2000 x44260000 x3e1afff3}\n       {x449b0000 x442a8000 x3e400000}\n       {x449ac000 x442b8000 x3e7effe3}\n       {x449a6000 x442f0000 x3e800000}\n       {x449a2000 x4431c000 x3e80800f}\n       {x449a6000 x4432c000 x3e80800f}\n       {x449a6000 x44348000 x3e80800f}\n       {x44994000 x443ac000 x3e80800f}\n       {x44988000 x443c8000 x3e53ffef}\n       {x4497e000 x443e0000 x3dc9fffe}}}\n     {t\n      {{x41300000 x449ac3d7}}\n      {{x41300000 x442f70f6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449ac000 x44340000 x3d180007}\n       {x449ac000 x44350000 x3d3bfff6}\n       {x449a2000 x44380000 x3e2c0011}\n       {x4499e000 x443ac000 x3e400000}\n       {x4498c000 x44408000 x3e41001d}\n       {x44988000 x44418000 x3e130015}\n       {x44988000 x4443c000 x3d8c0003}\n       {x44986000 x44450000 x3da20005}\n       {x44982000 x44474000 x3d960002}}}\n     {t\n      {{x41300000 x44994e14}}\n      {{x41300000 x443df8e5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42700000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44948000 x44570000 x3d1bfff6}\n       {x44940000 x44570000 x3d53fffd}\n       {x4493a000 x44564000 x3e31001d}}}\n     {t\n      {{x41300000 x44940a8f}}\n      {{x41300000 x4456c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42ba0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44928000 x445c0000 x3d13fffd}\n       {x44920000 x445c8000 x3d600000}}}\n     {t\n      {{x41300000 x44924000}}\n      {{x41300000 x445c4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44940000 x4456c000 x3d400000}\n       {x44940000 x44578000 x3d580007}\n       {x4493e000 x44590000 x3d8dfffb}}}\n     {t\n      {{x41300000 x4493f571}}\n      {{x41300000 x4457c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44952000 x44514000 x3c8ffff3}\n       {x44944000 x44540000 x3d04000a}\n       {x44940000 x44554000 x3d9dfffb}}}\n     {t\n      {{x41300000 x44947571}}\n      {{x41300000 x44538000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449b8000 x44308000 x3c9fffe5}\n       {x449ac000 x44330000 x3dbc0003}\n       {x4499e000 x44390000 x3e15ffe7}\n       {x44998000 x443bc000 x3e18fffc}\n       {x4498c000 x443fc000 x3e1e0008}\n       {x44986000 x44420000 x3e1effe3}\n       {x4497a000 x44458000 x3e21fff8}\n       {x44976000 x4447c000 x3e1c0011}\n       {x44970000 x444a8000 x3dfdffc5}\n       {x4496c000 x444b0000 x3affffd5}}}\n     {t\n      {{x41300000 x4498c000}}\n      {{x41300000 x443faccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d9a000 x40800000 x3ce7fff9}\n       {x44d9c000 x40800000 x3d04000a}}}\n     {t\n      {{x41300000 x44d9b000}}\n      {{x41300000 x40800000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d3c000 0 x3cf0000d}\n       {x44d40000 x40000000 x3db20005}\n       {x44d40000 x40800000 x3e0c0011}\n       {x44d42000 x40e00000 x3e300000}\n       {x44d4e000 x40e00000 x3e8e0008}\n       {x44d52000 x40e00000 x3e9e0008}\n       {x44d6a000 x41100000 x3e55ffe7}\n       {x44d8e000 x40e00000 x3e5a0019}\n       {x44da8000 xc0000000 x3e55ffe7}}}\n     {t\n      {{x41300000 x44d5c385}}\n      {{x41300000 x4091c726}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f04000 x44378000 x3d30000d}\n       {x44f02000 x4436c000 x3dac0003}}}\n     {t\n      {{x41300000 x44f03000}}\n      {{x41300000 x44372000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eaa000 x442b0000 x3cb7ffec}\n       {x44eb2000 x442c0000 x3e8c0011}\n       {x44eb6000 x442c0000 x3e8c0011}\n       {x44ebc000 x442c0000 x3e8b8002}\n       {x44ec0000 x442b8000 x3e900000}\n       {x44ecc000 x442c4000 x3e61001d}\n       {x44ee0000 x44300000 x3e1cffeb}}}\n     {t\n      {{x41300000 x44ebf23d}}\n      {{x41300000 x442c648b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a36000 x43150000 x3c6fffd8}\n       {x44a3a000 x43170000 x3d13fffd}\n       {x44a40000 x43170000 x3d6c0003}\n       {x44aa6000 x423c0000 x3e27ffde}\n       {x44a9e000 x42080000 x3d9c0003}}}\n     {t\n      {{x41300000 x44a64000}}\n      {{x41300000 x42d4cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44974000 x43200000 x3cf7ffec}\n       {x44986000 x432b0000 x3d33fffd}}}\n     {t\n      {{x41300000 x4497d000}}\n      {{x41300000 x43258000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44990000 x42e60000 x3cf7ffec}\n       {x44974000 x43020000 x3d33fffd}}}\n     {t\n      {{x41300000 x44982000}}\n      {{x41300000 x42f50000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449a2000 x42480000 x3cb7ffec}\n       {x449a6000 x42a20000 x3d24000a}}}\n     {t\n      {{x41300000 x449a4000}}\n      {{x41300000 x42830000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44968000 x42000000 x3d0ffff3}\n       {x44976000 x42200000 x3db9fffe}\n       {x44998000 x42480000 x3e38fffc}}}\n     {t\n      {{x41300000 x4497ca8f}}\n      {{x41300000 x4222aab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44808000 x42b40000 x3d3bfff6}\n       {x44820000 x43050000 x3d70000d}\n       {x44828000 x430c0000 x3dbc0003}\n       {x44832000 x43220000 x3d87fff9}\n       {x44832000 x433b0000 x3d83fffd}\n       {x44836000 x43440000 x3dd40032}\n       {x44836000 x434f0000 x3dfdffc5}\n       {x44836000 x43660000 x3df40032}\n       {x4483a000 x436f0000 x3d580007}}}\n     {t\n      {{x41300000 x4482c70a}}\n      {{x41300000 x43300000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44824000 x42100000 x3d33fffd}\n       {x44812000 x42340000 x3d6c0003}\n       {x44800000 x42740000 x3df1fff8}\n       {x447f8000 x42860000 x3d1bfff6}}}\n     {t\n      {{x41300000 x4480c800}}\n      {{x41300000 x42510000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ae000 x43580000 x3d33fffd}\n       {x448b0000 x43530000 x3d47fff9}\n       {x448b0000 x43510000 x3db80007}\n       {x448b4000 x43440000 x3db3fffd}\n       {x448b8000 x43300000 x3d900000}\n       {x448b8000 x43200000 x3d900000}\n       {x448bc000 x43100000 x3dc3fffd}\n       {x448b8000 x43090000 x3e61001d}\n       {x448b4000 x42e20000 x3e7a0019}\n       {x448c0000 x42a20000 x3e7effe3}\n       {x448c6000 x42500000 x3e0e0008}\n       {x448d2000 x41e80000 x3dc60002}\n       {x448dc000 xc0a00000 x3d87fff9}\n       {x448e0000 xc1b80000 x3da7fff9}\n       {x448e0000 xc1d80000 x3d960002}}}\n     {t\n      {{x41300000 x448c0f0a}}\n      {{x41300000 x42de88b4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448c2000 x43910000 x3d30000d}\n       {x448c0000 x438f0000 x3e25000d}}}\n     {t\n      {{x41300000 x448c1000}}\n      {{x41300000 x43900000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448b8000 x43cb8000 x3cd80007}\n       {x448b4000 x43ca8000 x3d3bfff6}}}\n     {t\n      {{x41300000 x448b6000}}\n      {{x41300000 x43cb0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44886000 x43c50000 x3d180007}\n       {x44882000 x43c50000 x3d33fffd}\n       {x44878000 x43cb8000 x3e500000}\n       {x4487a000 x43d00000 x3e78fffc}\n       {x44898000 x43d28000 x3e730015}\n       {x448aa000 x43d00000 x3df9ffd6}}}\n     {t\n      {{x41300000 x4488a000}}\n      {{x41300000 x43cc0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44554000 x446d8000 x3d7bfff6}\n       {x4454c000 x446e8000 x3e18fffc}\n       {x44570000 x446e8000 x3e9f7ff1}}}\n     {t\n      {{x41300000 x4455aab0}}\n      {{x41300000 x446e2ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44620000 x44590000 x3e05000d}\n       {x44610000 x44588000 x3e31fff8}\n       {x44608000 x44594000 x3e4effe3}\n       {x44610000 x445b4000 x3e5a0019}\n       {x44610000 x445b8000 x3e847ffe}}}\n     {t\n      {{x41300000 x4461199a}}\n      {{x41300000 x4459e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446b4000 x446c4000 x3d64000a}\n       {x446b4000 x446bc000 x3e25ffe7}\n       {x446b4000 x446b4000 0}}}\n     {t\n      {{x41300000 x446b4000}}\n      {{x41300000 x446bc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44738000 x445f4000 x3cf0000d}\n       {x44740000 x44608000 x3d87fff9}}}\n     {t\n      {{x41300000 x4473c000}}\n      {{x41300000 x445fe000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44764000 x445c8000 x3d4c0003}\n       {x44754000 x445ec000 x3d73fffd}\n       {x4474c000 x445ec000 x3d27fff9}}}\n     {t\n      {{x41300000 x44756ab0}}\n      {{x41300000 x445e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44794000 x44590000 x3d400000}\n       {x4478c000 x4459c000 x3dc60002}\n       {x44788000 x445a4000 x3d4c0003}}}\n     {t\n      {{x41300000 x4478d550}}\n      {{x41300000 x4459aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447b0000 x4455c000 x3c8ffff3}\n       {x447a4000 x44578000 x3d5bfff6}\n       {x44794000 x44588000 x3e4a0019}}}\n     {t\n      {{x41300000 x447a2ae1}}\n      {{x41300000 x44574000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447d0000 x44538000 x3d0ffff3}\n       {x447c8000 x44548000 x3d27fff9}}}\n     {t\n      {{x41300000 x447cc000}}\n      {{x41300000 x44540000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449d0000 x441ec000 x3cf0000d}\n       {x449d0000 x441fc000 x3e380022}\n       {x449be000 x44234000 x3e45000d}\n       {x449b8000 x44234000 x3e370004}\n       {x449b8000 x44244000 x3e180022}\n       {x449b4000 x44244000 x3ca7fff9}\n       {x449b4000 x4424c000 0}}}\n     {t\n      {{x41300000 x449be948}}\n      {{x41300000 x44229b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449dc000 x44210000 x3ccffff3}\n       {x449e0000 x44218000 x3dd5ffe7}\n       {x449d4000 x44254000 x3e21001d}\n       {x449d4000 x44260000 x3dd1fff8}\n       {x449d8000 x44278000 x3d93fffd}\n       {x449d4000 x442a0000 x3e330015}}}\n     {t\n      {{x41300000 x449d8000}}\n      {{x41300000 x44253550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b3c000 x44624000 x3d0ffff3}\n       {x44b38000 x44624000 x3de7ffde}\n       {x44b32000 x4462c000 x3e4e0008}\n       {x44b2e000 x44658000 x3e91fff8}\n       {x44b2e000 x44668000 x3ed38002}\n       {x44b2a000 x44674000 x3ede0008}}}\n     {t\n      {{x41300000 x44b32000}}\n      {{x41300000 x44646ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ecccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c14000 x4447c000 x3d180007}\n       {x44c0e000 x4448c000 x3e61fff8}}}\n     {t\n      {{x41300000 x44c11000}}\n      {{x41300000 x44484000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c20000 x4427c000 x3d07fff9}\n       {x44c1c000 x4427c000 x3de3ffef}\n       {x44c18000 x44284000 x3e47ffde}\n       {x44c14000 x4428c000 x3e6a0019}\n       {x44c14000 x4429c000 x3ea1800a}}}\n     {t\n      {{x41300000 x44c18ccd}}\n      {{x41300000 x44287333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e30000 x43d00000 x3d400000}\n       {x44e30000 x43d58000 x3e8f0004}\n       {x44e34000 x43d70000 x3e6effe3}\n       {x44e3c000 x43da0000 x3e92fff3}\n       {x44e3c000 x43da8000 x3e828006}}}\n     {t\n      {{x41300000 x44e3599a}}\n      {{x41300000 x43d6999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b00000 x43540000 x3cd80007}\n       {x44afc000 x43530000 x3d27fff9}\n       {x44ae6000 x43560000 x3e80fffc}\n       {x44ade000 x435d0000 x3e98fffc}\n       {x44ade000 x435f0000 x3eb8fffc}\n       {x44adc000 x43610000 x3ebf0004}\n       {x44ad0000 x43710000 x3ebe7ff6}\n       {x44aba000 x43750000 x3ea8800f}\n       {x44a9e000 x43838000 x3ea70004}\n       {x44a9a000 x43850000 x3ea67ff6}\n       {x44a90000 x438d8000 x3e90800f}\n       {x44a90000 x438f0000 x3e470004}\n       {x44a8c000 x43928000 x3e600000}\n       {x44a88000 x43968000 x3d180007}}}\n     {t\n      {{x41300000 x44abedc3}}\n      {{x41300000 x4378db64}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4429c000 x43b98000 x3d04000a}\n       {x4429c000 x43ba8000 x3e01fff8}\n       {x442e4000 x43c18000 x3e330015}\n       {x44308000 x43c18000 x3e51fff8}\n       {x442f8000 x43c28000 x3e5afff3}\n       {x44300000 x43c98000 x3e5afff3}\n       {x4430c000 x43cc8000 x3e5afff3}\n       {x44300000 x43cc8000 x3e5e0008}\n       {x442e8000 x43cd0000 x3e5e0008}\n       {x442e4000 x43d28000 x3e51001d}}}\n     {t\n      {{x41300000 x442e5333}}\n      {{x41300000 x43c5f333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44538000 x43a30000 x3ca7fff9}\n       {x44538000 x43a40000 x3d1bfff6}\n       {x44538000 x43a30000 x3eb8800f}\n       {x44530000 x43a30000 x3e770004}\n       {x44528000 x43a40000 x3e2afff3}}}\n     {t\n      {{x41300000 x44533333}}\n      {{x41300000 x43a36666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44528000 x43e80000 x3c60001b}\n       {x44528000 x43eb0000 x3e28fffc}\n       {x44514000 x43f08000 x3ea9800a}\n       {x4450c000 x43f08000 x3ebd000d}\n       {x44504000 x43f10000 x3eb2fff3}\n       {x444f0000 x43f78000 x3eb0fffc}\n       {x444dc000 x43fb0000 x3eaf7ff1}\n       {x444dc000 x43fc0000 x3e68fffc}}}\n     {t\n      {{x41300000 x44503800}}\n      {{x41300000 x43f27000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44962000 x43fa0000 x3d64000a}\n       {x44962000 x43fb0000 x3d87fff9}\n       {x44950000 x44018000 x3e7afff3}}}\n     {t\n      {{x41300000 x4495c000}}\n      {{x41300000 x43fd5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4497a000 x43ee8000 x3d0c0003}\n       {x44976000 x43ee8000 x3d33fffd}\n       {x44968000 x43f98000 x3e3cffeb}\n       {x44962000 x43fa0000 x3d64000a}}}\n     {t\n      {{x41300000 x4496e800}}\n      {{x41300000 x43f42000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449f2000 x4415c000 x3d0ffff3}\n       {x449f8000 x44148000 x3dd5ffe7}\n       {x449e6000 x4417c000 x3eb80000}\n       {x449dc000 x441a0000 x3ecb8002}\n       {x449e2000 x44190000 x3e730015}\n       {x449e2000 x441b4000 x3e33ffef}\n       {x449dc000 x441c8000 x3e35000d}\n       {x449d4000 x441d8000 x3e51001d}\n       {x449c6000 x441f4000 x3d580007}}}\n     {t\n      {{x41300000 x449e0a8f}}\n      {{x41300000 x4419f1cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4485a000 x44460000 x3cc00000}\n       {x4485a000 x44458000 x3d13fffd}\n       {x4485e000 x44458000 x3d30000d}\n       {x44850000 x44468000 x3ec70004}\n       {x4483a000 x4448c000 x3f086003}\n       {x44836000 x444a0000 x3f0a5ffa}\n       {x4484c000 x44470000 x3f0b6007}\n       {x44848000 x44468000 x3f0b9ffd}\n       {x44836000 x44494000 x3f0d2008}\n       {x4482c000 x444cc000 x3f0d2008}\n       {x44832000 x444b0000 x3f0d2008}\n       {x44820000 x444bc000 x3f0ddffc}\n       {x44812000 x444e0000 x3f0ce001}\n       {x4480e000 x44500000 x3f076007}\n       {x44816000 x444f0000 x3ecc7ffe}\n       {x447ec000 x4450c000 x3e6e0008}\n       {x447d4000 x44528000 x3d99fffe}}}\n     {t\n      {{x41300000 x44830000}}\n      {{x41300000 x444aa1db}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {selectAll {\n  { selectAll bs 263 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 15 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.4 bs 133 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur bs 263 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 23 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 21 }\n  { smear bs 146 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 22 }\n} }\n  toolbar_brush_size 263\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_effect_parameter1 15\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  lifetime_type \"all frames\"\n  lifetime_start 39\n  lifetime_end 39\n  motionblur_on true\n  brush_type smear\n  brush_size 93\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  effect_parameter1 1\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint5\n  xpos 2100\n  ypos 14768\n  disable {{\"parent.lensDirtPicker == 3 ? 0 : 1\"}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a}\n    {cubiccurve Smear35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448dc000 x42b00000 x3e670004}\n       {x448e4000 x42aa0000 x3e99fff8}\n       {x448f2000 x42980000 x3e957ffa}}}\n     {t\n      {{x41300000 x448e6000}}\n      {{x41300000 x42a60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4431c000 x43b98000 x3d5bfff6}\n       {x44314000 x43b78000 x3e98fffc}\n       {x4430c000 x43ae8000 x3ee57ffa}\n       {x4431c000 x439f8000 x3f086003}\n       {x4430c000 x438f0000 x3f0ea002}\n       {x44308000 x438a8000 x3f11a006}\n       {x44300000 x43828000 x3f11dffc}\n       {x44300000 x43750000 x3f11dffc}\n       {x442f8000 x43580000 x3f11a006}\n       {x44300000 x43420000 x3f101ffb}\n       {x44308000 x43270000 x3efa8006}}}\n     {t\n      {{x41300000 x44309d1f}}\n      {{x41300000 x438aba3d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441bc000 x44230000 x3cc00000}\n       {x441e0000 x44244000 x3d380007}\n       {x441e0000 x44254000 x3e9f0004}\n       {x441d8000 x4427c000 x3ec00000}\n       {x441c4000 x442a0000 x3ede7ff6}\n       {x44150000 x442e8000 x3ef8fffc}\n       {x4415c000 x4430c000 x3f09a006}\n       {x441a0000 x44330000 x3f089ff9}\n       {x441a4000 x44330000 0}}}\n     {t\n      {{x41300000 x441ab8e5}}\n      {{x41300000 x442b0e35}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44134000 x440f8000 x3d0c0003}\n       {x44140000 x44100000 x3d380007}\n       {x4412c000 x4412c000 x3eb0800f}\n       {x4411c000 x44174000 x3f022004}\n       {x4411c000 x441ac000 x3f092008}\n       {x44114000 x441b4000 x3f0a2004}}}\n     {t\n      {{x41300000 x44127550}}\n      {{x41300000 x44154000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ed8000 x44094000 x3d24000a}\n       {x43ee8000 x4409c000 x3e18fffc}\n       {x43e90000 x44110000 x3e78fffc}\n       {x43df0000 x441ac000 x3f11a006}\n       {x43d80000 x4420c000 x3f1be005}\n       {x43c80000 x442c0000 x3f1ea002}\n       {x43c08000 x442f8000 x3f209ff9}\n       {x43bc0000 x4431c000 x3f1f9ffd}}}\n     {t\n      {{x41300000 x43d81000}}\n      {{x41300000 x441d9800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4408c000 x43808000 x3d67fff9}\n       {x44094000 x43808000 x3e91800a}\n       {x440c8000 x43750000 x3eac7ffe}\n       {x44100000 x43610000 x3f08e001}\n       {x44150000 x43480000 x3f0f9ffd}\n       {x441a0000 x43290000 x3f125ffa}\n       {x441d0000 x43100000 x3f12a002}\n       {x441d8000 x43090000 x3ef70004}}}\n     {t\n      {{x41300000 x44130000}}\n      {{x41300000 x434c4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e20000 x43a30000 x3ce0001b}\n       {x43e48000 x43a48000 x3d2c0003}\n       {x43e90000 x43a40000 x3e9d7ffa}\n       {x43ec8000 x439d8000 x3ef38002}\n       {x43f50000 x43900000 x3f04e001}\n       {x43f58000 x438d8000 x3f092008}\n       {x43f98000 x43850000 x3f095ffe}\n       {x43ff8000 x43770000 x3f0a5ffa}\n       {x43ff8000 x43750000 x3d780007}}}\n     {t\n      {{x41300000 x43f1aaa0}}\n      {{x41300000 x4391f1cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 ltt x40000000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush352 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44030000 x43948000 x3cc00000}\n       {x44060000 x438f0000 x3d0ffff3}\n       {x44068000 x438e0000 x3e0c0011}\n       {x4409c000 x438b8000 x3e1c0011}\n       {x4409c000 x43898000 x3e33ffef}\n       {x440a8000 x437e0000 x3e35000d}}}\n     {t\n      {{x41300000 x44079550}}\n      {{x41300000 x438b9560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush351 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fe8000 x43780000 x3c60001b}\n       {x43fe0000 x43710000 x3c6fffd8}\n       {x43fe8000 x43650000 x3c6fffd8}}}\n     {t\n      {{x41300000 x43fe5560}}\n      {{x41300000 x436f553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush350 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f08000 x43910000 x3c880014}\n       {x43fc0000 x43850000 x3d000000}}}\n     {t\n      {{x41300000 x43f64000}}\n      {{x41300000 x438b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush349 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fc0000 x43a90000 x3cb0000d}\n       {x43f78000 x43ab0000 x3d0ffff3}\n       {x43f20000 x43aa0000 x3e65000d}\n       {x43f40000 x43a90000 x3e370004}\n       {x43fb0000 x43a78000 x3e38fffc}\n       {x43f98000 x43a68000 x3e6c0011}\n       {x43f50000 x43a68000 x3e6c0011}\n       {x43f30000 x43a48000 x3e770004}\n       {x43f20000 x439e8000 x3e75ffe7}\n       {x43f30000 x439a0000 x3e3e0008}\n       {x43f30000 x43990000 0}}}\n     {t\n      {{x41300000 x43f5a2f2}}\n      {{x41300000 x43a48000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush348 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fe0000 x44014000 x3cf0000d}\n       {x43fa0000 x44044000 x3d3bfff6}\n       {x43f58000 x44080000 x3e7effe3}\n       {x43f20000 x440a8000 x3db3fffd}\n       {x43f08000 x440c0000 x3e3afff3}\n       {x43eb0000 x440d4000 x3e877ff1}\n       {x43e78000 x440f8000 x3e870004}\n       {x43e20000 x4411c000 x3e870004}\n       {x43e20000 x44134000 x3e55000d}\n       {x43df0000 x44138000 x3e0effe3}\n       {x43dd8000 x44134000 x3df5ffe7}\n       {x43db8000 x44148000 x3dadfffb}\n       {x43da0000 x4415c000 x3d8dfffb}\n       {x43d90000 x44164000 x3e3a0019}\n       {x43d18000 x44198000 x3e41fff8}\n       {x43cc8000 x441d0000 x3e33ffef}\n       {x43ca8000 x441e0000 x3c6fffd8}\n       {x43c88000 x441f4000 0}}}\n     {t\n      {{x41300000 x43e1eaa0}}\n      {{x41300000 x4411d1cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush347 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44258000 x43b68000 x3d000000}\n       {x44268000 x43b08000 x3d27fff9}\n       {x44268000 x43ad0000 x3e45000d}\n       {x44260000 x43a40000 x3d960002}}}\n     {t\n      {{x41300000 x44262000}}\n      {{x41300000 x43ae0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush346 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442b8000 x43a40000 x3cb7ffec}\n       {x442b8000 x43a30000 x3cf0000d}\n       {x442b0000 x439e8000 x3d1bfff6}\n       {x442b0000 x439b0000 x3c400036}}}\n     {t\n      {{x41300000 x442b4000}}\n      {{x41300000 x43a02000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush345 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4432c000 x43d80000 x3d44000a}\n       {x44348000 x43c88000 x3e370004}\n       {x44340000 x43c40000 x3e78fffc}\n       {x44324000 x43be0000 x3e370004}\n       {x4431c000 x43bb0000 x3e01001d}\n       {x4430c000 x43b78000 x3d89fffe}\n       {x44300000 x43b60000 x3c9fffe5}}}\n     {t\n      {{x41300000 x44324927}}\n      {{x41300000 x43c1924e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush344 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44270000 x43c70000 x3cf0000d}\n       {x4427c000 x43c38000 x3d400000}\n       {x44284000 x43bf8000 x3d820005}}}\n     {t\n      {{x41300000 x4427aab0}}\n      {{x41300000 x43c35560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush343 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44254000 x43d00000 x3d380007}\n       {x44284000 x43cc8000 x3e2effe3}\n       {x4428c000 x43cc8000 x3ea9fff8}\n       {x44294000 x43cb8000 x3ea9800a}\n       {x442a0000 x43cb8000 x3e928006}\n       {x442a8000 x43c88000 x3e957ffa}\n       {x44278000 x43c70000 x3e960008}\n       {x44270000 x43c70000 x3b40000b}}}\n     {t\n      {{x41300000 x44285000}}\n      {{x41300000 x43cad000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush342 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44190000 x43f10000 x3ca7fff9}\n       {x441a0000 x43ef8000 x3cf0000d}}}\n     {t\n      {{x41300000 x44198000}}\n      {{x41300000 x43f04000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush341 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440f8000 x4405c000 x3d000000}\n       {x44114000 x44014000 x3d13fffd}}}\n     {t\n      {{x41300000 x44106000}}\n      {{x41300000 x44038000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush340 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440f8000 x440e4000 x3cf0000d}\n       {x440f8000 x440dc000 x3e870004}\n       {x44100000 x440c0000 x3e89800a}\n       {x44110000 x440c8000 x3e89800a}\n       {x4411c000 x440c0000 x3eab8002}\n       {x44114000 x44094000 x3eb9fff8}\n       {x4411c000 x440a4000 x3eac7ffe}\n       {x4412c000 x44080000 x3eae0008}\n       {x44134000 x44078000 x3e98fffc}\n       {x4412c000 x44070000 x3d83fffd}\n       {x44124000 x44068000 x3d7bfff6}}}\n     {t\n      {{x41300000 x44116e87}}\n      {{x41300000 x440a45d3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush339 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441d8000 x44278000 x3d33fffd}\n       {x441d0000 x44278000 x3e0a0019}\n       {x441d0000 x4427c000 x3e900000}\n       {x441c4000 x4428c000 x3ead000d}}}\n     {t\n      {{x41300000 x441cf000}}\n      {{x41300000 x4427e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush338 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44138000 x4428c000 x3d04000a}\n       {x44138000 x4429c000 x3d400000}\n       {x44134000 x44294000 x3ef1fff8}}}\n     {t\n      {{x41300000 x44136ab0}}\n      {{x41300000 x44294000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush337 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44108000 x441ac000 x3d53fffd}\n       {x44108000 x441c8000 x3e800000}}}\n     {t\n      {{x41300000 x44108000}}\n      {{x41300000 x441ba000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush336 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440ec000 x44148000 x3d1bfff6}\n       {x440b8000 x44180000 x3e130015}}}\n     {t\n      {{x41300000 x440d2000}}\n      {{x41300000 x44164000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush335 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44138000 x44100000 x3cf0000d}\n       {x44138000 x44110000 x3e100000}\n       {x44108000 x44110000 x3eac7ffe}\n       {x44108000 x4411c000 x3ebc0011}\n       {x44114000 x44138000 x3ecc0011}\n       {x44100000 x44150000 x3ef00000}\n       {x440c0000 x4415c000 x3ef47ffe}\n       {x440b8000 x44158000 x3e78fffc}}}\n     {t\n      {{x41300000 x44101800}}\n      {{x41300000 x4412f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush334 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441fc000 x441e8000 x3d380007}\n       {x441e0000 x4420c000 x3e6a0019}\n       {x441d8000 x44218000 x3e6a0019}\n       {x441c8000 x44218000 x3e8c0011}}}\n     {t\n      {{x41300000 x441df000}}\n      {{x41300000 x44209000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush333 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44218000 x44138000 x3cc00000}\n       {x44218000 x44140000 x3d0ffff3}\n       {x44218000 x44180000 x3d27fff9}}}\n     {t\n      {{x41300000 x44218000}}\n      {{x41300000 x44152ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush332 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4411c000 x440a4000 x3cd80007}\n       {x4411c000 x440a8000 x3d0ffff3}\n       {x44134000 x44094000 x3e8c7ffe}\n       {x44150000 x44070000 x3e8d7ffa}\n       {x44188000 x44028000 x3d900000}\n       {x44198000 x4400c000 x3d87fff9}\n       {x441b4000 x43fd0000 x3d99fffe}\n       {x441c4000 x43fa0000 x3d70000d}\n       {x441c8000 x43f68000 x3d33fffd}}}\n     {t\n      {{x41300000 x44174e35}}\n      {{x41300000 x440371cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush331 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44038000 x43f40000 x3cb7ffec}\n       {x44038000 x43f50000 x3d180007}\n       {x44020000 x43fe0000 x3d380007}\n       {x43fb0000 x4403c000 x3e8d7ffa}}}\n     {t\n      {{x41300000 x4401a000}}\n      {{x41300000 x43fba000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush330 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44134000 x43a78000 x3d13fffd}\n       {x44140000 x43a88000 x3d47fff9}}}\n     {t\n      {{x41300000 x4413a000}}\n      {{x41300000 x43a80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush329 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44020000 x43aa0000 x3d3bfff6}\n       {x44028000 x43ac0000 x3d400000}\n       {x4403c000 x43a90000 x3eac7ffe}\n       {x44060000 x43a68000 x3eca8006}\n       {x44094000 x43a30000 x3ecf0004}\n       {x440a8000 x43a20000 x3ecb8002}\n       {x440cc000 x43a30000 x3ec9fff8}\n       {x440e4000 x43a30000 x3ec2fff3}\n       {x44100000 x43a48000 x3eb38002}\n       {x44110000 x43a48000 x3ea5000d}\n       {x44114000 x43a58000 x3e90fffc}}}\n     {t\n      {{x41300000 x440a1d1f}}\n      {{x41300000 x43a5ba3d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush328 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44020000 x43aa0000 x3d000000}\n       {x44030000 x43ab0000 x3d1bfff6}\n       {x44044000 x43a88000 x3e89fff8}\n       {x44060000 x43a48000 x3e9e0008}}}\n     {t\n      {{x41300000 x4403d000}}\n      {{x41300000 x43a88000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush327 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fb0000 x44038000 x3d400000}\n       {x43f98000 x44044000 x3d64000a}}}\n     {t\n      {{x41300000 x43fa4000}}\n      {{x41300000 x4403e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush326 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fe8000 x43fe8000 x3c6fffd8}\n       {x43fd0000 x44038000 x3d1bfff6}\n       {x43fb0000 x44030000 x3eae7ff6}}}\n     {t\n      {{x41300000 x43fcd560}}\n      {{x41300000 x4401eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush325 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440dc000 x43d18000 x3d07fff9}\n       {x440dc000 x43d28000 x3dc00000}\n       {x440cc000 x43d60000 x3e780022}\n       {x44094000 x43e10000 x3eaf7ff1}\n       {x44078000 x43e78000 x3eb67ff6}\n       {x44044000 x43f10000 x3eb57ffa}\n       {x44038000 x43f40000 x3e9e7ff6}\n       {x44018000 x43f78000 x3e2e0008}}}\n     {t\n      {{x41300000 x44084800}}\n      {{x41300000 x43e3e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush324 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44210000 x44138000 x3d1bfff6}\n       {x44204000 x44158000 x3d33fffd}\n       {x441fc000 x4417c000 x3e9afff3}\n       {x441fc000 x44190000 x3c0ffffd}}}\n     {t\n      {{x41300000 x44203000}}\n      {{x41300000 x44167000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush323 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44198000 x44028000 x3cf7ffec}\n       {x441a0000 x44020000 x3d2c0003}\n       {x441c4000 x43fc0000 x3e1c0011}\n       {x441e8000 x43f40000 x3e4c0011}\n       {x44218000 x43e78000 x3e38fffc}\n       {x44228000 x43e38000 x3e65000d}\n       {x44230000 x43df0000 x3e80800f}\n       {x44230000 x43dd8000 x3e860008}\n       {x4423c000 x43da8000 x3e8b8002}\n       {x44244000 x43d80000 x3e88800f}\n       {x4424c000 x43d58000 x3e880000}\n       {x4424c000 x43d48000 x3e61001d}\n       {x4423c000 x43d80000 x3d0c0003}\n       {x4420c000 x43e20000 x3dea0019}\n       {x441c4000 x43f58000 x3e41001d}\n       {x441ac000 x43fa0000 x3e5afff3}\n       {x44190000 x44014000 x3e6effe3}\n       {x44180000 x44030000 x3e75ffe7}\n       {x4416c000 x44044000 x3e7a0019}\n       {x44158000 x4405c000 x3e80800f}\n       {x44138000 x44080000 x3e7effe3}\n       {x44134000 x4408c000 x3e81800a}\n       {x4411c000 x440c0000 x3e80800f}}}\n     {t\n      {{x41300000 x441d0000}}\n      {{x41300000 x43f35375}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush322 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44204000 x440b0000 x3d04000a}\n       {x44218000 x440d4000 x3d27fff9}\n       {x44210000 x440ec000 x3da7fff9}\n       {x44210000 x440f0000 x3e4c0011}\n       {x44204000 x4412c000 x3e4effe3}\n       {x441fc000 x44140000 x3dc00000}\n       {x441fc000 x44150000 x3dcc0003}\n       {x441f4000 x44140000 x3e670004}\n       {x4420c000 x44114000 x3e880000}\n       {x4424c000 x44084000 x3e91fff8}\n       {x44270000 x4403c000 x3ea1fff8}\n       {x44284000 x44020000 x3ea9800a}\n       {x4429c000 x43fe8000 x3ea8fffc}\n       {x442a8000 x43fb0000 x3ea8800f}\n       {x442b8000 x43f68000 x3eaa8006}\n       {x442c4000 x43f30000 x3eaa8006}\n       {x442dc000 x43ed8000 x3eaf7ff1}\n       {x442e8000 x43ec0000 x3eb0fffc}\n       {x442f8000 x43e80000 x3eb0fffc}\n       {x44300000 x43e68000 x3e81fff8}\n       {x4431c000 x43df0000 x3dddffc5}\n       {x44330000 x43d90000 x3d4c0003}\n       {x44340000 x43d58000 x3cc00000}}}\n     {t\n      {{x41300000 x44280000}}\n      {{x41300000 x44022429}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush321 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4420c000 x44080000 x3c980007}\n       {x44204000 x4408c000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44208000}}\n      {{x41300000 x44086000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush320 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441a4000 x43fc0000 x3cc80014}\n       {x441e8000 x43ff8000 x3d180007}\n       {x44220000 x44014000 x3ebb8002}\n       {x44228000 x44014000 x3eb8800f}\n       {x44230000 x44018000 x3ea38002}\n       {x44230000 x44020000 x3dcfffbd}\n       {x44234000 x44030000 x3d99fffe}}}\n     {t\n      {{x41300000 x4420edb2}}\n      {{x41300000 x4400f6d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush319 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4409c000 x43de8000 x3c9fffe5}\n       {x4408c000 x43e48000 x3cf7ffec}\n       {x44084000 x43e80000 x3d800000}}}\n     {t\n      {{x41300000 x4408eab0}}\n      {{x41300000 x43e3aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush318 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4404c000 x43a40000 x3d07fff9}\n       {x440ec000 x43a78000 x3d47fff9}}}\n     {t\n      {{x41300000 x4409c000}}\n      {{x41300000 x43a5c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush317 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4404c000 x43f20000 x3c980007}\n       {x440c0000 x43da0000 x3d27fff9}\n       {x440f0000 x43ce0000 x3ec0fffc}\n       {x440f8000 x43ca8000 x3ed9fff8}\n       {x44110000 x43c40000 x3edc0011}\n       {x4411c000 x43bf8000 x3edc7ffe}\n       {x4412c000 x43ba8000 x3edd000d}\n       {x4412c000 x43b78000 x3edf7ff1}\n       {x44134000 x43b30000 x3ee1fff8}\n       {x44138000 x43b08000 x3ee28006}\n       {x44138000 x43ac0000 x3ee3ffef}\n       {x44124000 x43aa0000 x3ee67ff6}\n       {x44108000 x43a88000 x3ee8800f}\n       {x440f0000 x43a68000 x3ee3ffef}\n       {x440b8000 x43a48000 x3ecf7ff1}\n       {x440a4000 x43a48000 x3c9fffe5}}}\n     {t\n      {{x41300000 x440f93f8}}\n      {{x41300000 x43bab810}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3ec7ae14 g x3ec7ae14 b x3ec7ae14 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush316 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44198000 x43fa0000 x3cf7ffec}\n       {x44190000 x43fb0000 x3d1bfff6}\n       {x441a4000 x43fd0000 x3ec2fff3}\n       {x44230000 x44030000 x3edc0011}\n       {x44218000 x44018000 x3ee9fff8}\n       {x441f4000 x44004000 x3eeafff3}\n       {x441e0000 x43ff8000 x3ee9fff8}\n       {x441d8000 x43fe8000 x3eea8006}\n       {x441ec000 x4400c000 x3eea8006}\n       {x44230000 x44038000 x3ef3ffef}\n       {x4424c000 x44044000 x3ef80000}\n       {x4424c000 x4405c000 x3ef9fff8}\n       {x44244000 x4408c000 x3efc0011}\n       {x44228000 x440e4000 x3efd7ffa}\n       {x44220000 x4411c000 x3eff7ff1}\n       {x44220000 x44140000 x3eff7ff1}\n       {x44218000 x44140000 x3f00e001}\n       {x44218000 x44164000 x3f006003}\n       {x4420c000 x44198000 x3f006003}\n       {x441f4000 x441e8000 x3f006003}\n       {x441f4000 x441d8000 x3f031fff}\n       {x44220000 x44138000 x3f025ffa}\n       {x44254000 x44084000 x3f049ff9}\n       {x4428c000 x43fd0000 x3f04e001}\n       {x44294000 x43fa0000 x3f046003}\n       {x442a0000 x43f58000 x3f041ffb}\n       {x442a8000 x43f50000 x3f036007}\n       {x442b0000 x43f30000 x3f036007}\n       {x442c0000 x43ee8000 x3f036007}\n       {x442c4000 x43ec8000 x3f01dffc}\n       {x442dc000 x43e78000 x3efc0011}\n       {x442e4000 x43e58000 x3eed000d}\n       {x442f0000 x43e30000 x3eed000d}\n       {x442f0000 x43e20000 x3edafff3}\n       {x442f8000 x43e00000 x3eda8006}\n       {x44314000 x43da0000 x3ed3ffef}\n       {x4431c000 x43d70000 x3ed1fff8}\n       {x4431c000 x43d60000 x3df80022}}}\n     {t\n      {{x41300000 x442590d5}}\n      {{x41300000 x440175e3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush315 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440c8000 x440ec000 x3cd80007}\n       {x440c0000 x440f8000 x3d0ffff3}\n       {x440f8000 x44084000 x3eaf0004}\n       {x44134000 x44028000 x3eb3ffef}\n       {x44190000 x43ef8000 x3ecf0004}\n       {x441ac000 x43e78000 x3ee28006}\n       {x441c8000 x43df0000 x3ee3ffef}\n       {x441c8000 x43de8000 x3ee70004}\n       {x441d0000 x43db8000 x3ee70004}\n       {x441c8000 x43dd8000 x3ee60008}\n       {x441a0000 x43e80000 x3ee80000}\n       {x4417c000 x43f40000 x3ee8800f}\n       {x44138000 x44030000 x3ee9800a}\n       {x44110000 x44084000 x3ee9fff8}\n       {x440dc000 x440f0000 x3ee9800a}\n       {x440cc000 x44110000 x3ee9800a}\n       {x440d4000 x4411c000 x3ee80000}\n       {x440e4000 x440f8000 x3ee8800f}\n       {x44134000 x4404c000 x3ee8800f}\n       {x4416c000 x43fc0000 x3eed000d}\n       {x441c4000 x43e48000 x3ef5000d}\n       {x441d8000 x43db8000 x3f00e001}\n       {x441e8000 x43d70000 x3f01a006}\n       {x441d8000 x43da0000 x3f025ffa}\n       {x44180000 x43ee8000 x3f02a002}\n       {x44138000 x4400c000 x3f02dff8}\n       {x440dc000 x440e4000 x3f02dff8}\n       {x440c8000 x44110000 x3f031fff}\n       {x440c8000 x44108000 x3f03e005}\n       {x440e4000 x440d4000 x3f036007}\n       {x44150000 x43ff8000 x3f036007}\n       {x44198000 x43f10000 x3f055ffe}\n       {x441d0000 x43e48000 x3f055ffe}\n       {x441c4000 x43e58000 x3da7fff9}}}\n     {t\n      {{x41300000 x44155873}}\n      {{x41300000 x43fda1ec}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush314 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440cc000 x440c8000 x3cc00000}\n       {x441d8000 x43d60000 x3d07fff9}\n       {x441d0000 x43d90000 x3ef38002}\n       {x441bc000 x43db8000 x3edf7ff1}\n       {x441b4000 x43dc8000 x3d980007}}}\n     {t\n      {{x41300000 x44194000}}\n      {{x41300000 x43e66666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush313 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fa0000 x43b40000 x3c9fffe5}\n       {x440b0000 x43a10000 x3d13fffd}\n       {x4412c000 x43a48000 x3eb0fffc}\n       {x44138000 x43ad0000 x3ed38002}\n       {x44110000 x43bb0000 x3ed70004}\n       {x440ec000 x43c18000 x3ee9800a}\n       {x440ec000 x43c28000 x3ef0fffc}\n       {x440f8000 x43bf0000 x3ef0fffc}\n       {x440f8000 x43ba8000 x3ef60008}\n       {x440f8000 x43b68000 x3eef7ff1}\n       {x440f8000 x43b88000 x3eee7ff6}\n       {x440ec000 x43c28000 x3ef60008}\n       {x440e4000 x43c70000 x3efafff3}\n       {x440c8000 x43d18000 x3efa8006}\n       {x440b0000 x43d60000 x3efa8006}\n       {x44084000 x43de8000 x3ef77ff1}\n       {x44078000 x43e30000 x3ee0fffc}\n       {x44054000 x43eb0000 x3ed1fff8}\n       {x44044000 x43ee8000 x3ebd000d}\n       {x44018000 x43fd0000 x3eb28006}\n       {x44004000 x44018000 x3e9f7ff1}\n       {x43fe0000 x44044000 x3d860002}}}\n     {t\n      {{x41300000 x440a9a2d}}\n      {{x41300000 x43cd345a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush312 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4405c000 x43f30000 x3cf0000d}\n       {x44044000 x43ed8000 x3d1bfff6}\n       {x44038000 x43f20000 x3e88800f}\n       {x4403c000 x43f50000 x3ea60008}\n       {x44054000 x43f08000 x3eb2fff3}\n       {x4409c000 x43e00000 x3eb9fff8}\n       {x440b8000 x43d80000 x3e980000}\n       {x440cc000 x43d10000 x3e960008}\n       {x440ec000 x43c70000 x3e93ffef}\n       {x440f0000 x43c18000 x3e947ffe}\n       {x44110000 x43bb0000 x3e967ff6}\n       {x44108000 x43b78000 x3ea1800a}\n       {x440f8000 x43b18000 x3ea8800f}\n       {x440ec000 x43ab0000 x3eb3ffef}\n       {x440e4000 x43a48000 x3ec0fffc}\n       {x440d4000 x43a20000 x3ecc0011}\n       {x440a4000 x43a10000 x3ed3ffef}\n       {x44068000 x43a40000 x3eeafff3}\n       {x4400c000 x43a90000 x3eee0008}\n       {x44004000 x43aa0000 x3eee7ff6}\n       {x4403c000 x43a58000 x3ee8fffc}\n       {x4404c000 x43a40000 x3ed8fffc}\n       {x4403c000 x43a78000 x3ed77ff1}\n       {x43fe8000 x43ac0000 x3ed9fff8}\n       {x43f68000 x43af8000 x3eda8006}\n       {x43f58000 x43af8000 x3ed77ff1}\n       {x43f88000 x43b08000 x3ed1fff8}\n       {x43f98000 x43b18000 x3ecc7ffe}\n       {x43f68000 x43ae8000 x3ebe7ff6}\n       {x43f58000 x43af8000 x3eb0fffc}\n       {x43f58000 x43b20000 x3eb00000}\n       {x43f78000 x43b20000 x3ea0fffc}\n       {x43f68000 x43b20000 x3df5ffe7}\n       {x43f68000 x43b30000 0}}}\n     {t\n      {{x41300000 x4404ba5e}}\n      {{x41300000 x43bc1e14}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush311 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4404c000 x43f40000 x3ca7fff9}\n       {x44060000 x43f08000 x3d180007}\n       {x4408c000 x43e38000 x3e2effe3}\n       {x440b0000 x43d90000 x3e80800f}\n       {x440c8000 x43d48000 x3e828006}\n       {x440c0000 x43d38000 x3e870004}\n       {x440c8000 x43cc8000 x3e88800f}\n       {x440cc000 x43c88000 x3e81fff8}\n       {x440e4000 x43c38000 x3e730015}\n       {x440ec000 x43c08000 x3e4e0008}\n       {x440f8000 x43b98000 x3e55ffe7}\n       {x440f8000 x43b60000 x3e7a0019}\n       {x44100000 x43b20000 x3e8a8006}\n       {x44100000 x43af8000 x3ea0800f}\n       {x44100000 x43aa0000 x3ead7ffa}\n       {x440f0000 x43a68000 x3ec28006}\n       {x440a8000 x43a58000 x3ed67ff6}\n       {x44084000 x43a68000 x3ee57ffa}\n       {x44054000 x43a90000 x3eec7ffe}\n       {x4404c000 x43ac0000 x3eed000d}\n       {x44038000 x43b18000 x3eed000d}\n       {x44030000 x43b20000 x3eed7ffa}\n       {x44054000 x43ae8000 x3eed000d}\n       {x44078000 x43aa0000 x3eed000d}\n       {x440c0000 x43a58000 x3eed000d}\n       {x440d4000 x43a58000 x3eed000d}\n       {x44108000 x43a88000 x3eed000d}\n       {x44114000 x43ad0000 x3eed000d}\n       {x44108000 x43b50000 x3eec7ffe}\n       {x440f0000 x43ba8000 x3ee9800a}\n       {x440ec000 x43c18000 x3ee2fff3}\n       {x440ec000 x43c38000 x3ebd000d}\n       {x440ec000 x43cc8000 x3ea28006}\n       {x440d4000 x43d00000 x3e580022}\n       {x440a8000 x43d90000 x3e5afff3}\n       {x440a4000 x43dc8000 x3e65000d}\n       {x4408c000 x43e00000 x3e7afff3}\n       {x44080000 x43e48000 x3e8e0008}\n       {x44080000 x43e68000 x3e8d7ffa}\n       {x44078000 x43e68000 x3e92fff3}\n       {x44080000 x43eb0000 x3e91fff8}\n       {x44084000 x43ec8000 x3e8e0008}\n       {x44080000 x43ec8000 x3e8e7ff6}\n       {x44080000 x43ed8000 x3ddc0011}\n       {x44078000 x43f08000 x3df9ffd6}\n       {x44078000 x43f10000 x3dfc0011}\n       {x44060000 x43f10000 x3da20005}}}\n     {t\n      {{x41300000 x440ac158}}\n      {{x41300000 x43c8c979}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3df5c28f g x3df5c28f b x3df5c28f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush310 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e00000 x44110000 x3cc00000}\n       {x42ee0000 x44014000 x3ce0001b}}}\n     {t\n      {{x41300000 x42e70000}}\n      {{x41300000 x44092000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush309 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43050000 x441d0000 x3cf0000d}\n       {x430b0000 x44164000 x3d180007}}}\n     {t\n      {{x41300000 x43080000}}\n      {{x41300000 x4419a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush308 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42aa0000 x44434000 x3c800000}\n       {x42dc0000 x442e8000 x3d04000a}}}\n     {t\n      {{x41300000 x42c30000}}\n      {{x41300000 x4438e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush307 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42680000 x446a0000 x3c800000}\n       {x42860000 x445d8000 x3d000000}\n       {x42900000 x44588000 x3e2e0008}\n       {x42900000 x44590000 x3e23ffef}\n       {x42940000 x444d4000 x3e2e0008}\n       {x429a0000 x44494000 x3d400000}}}\n     {t\n      {{x41300000 x428c0000}}\n      {{x41300000 x4457eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush306 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bf8000 x447b0000 x3d27fff9}\n       {x43c08000 x447c8000 x3e2a0019}\n       {x43bf0000 x447c8000 0}}}\n     {t\n      {{x41300000 x43bfaaa0}}\n      {{x41300000 x447c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush305 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43630000 x4470c000 x3cc00000}\n       {x43610000 x44730000 x3d30000d}\n       {x435d0000 x4474c000 x3e1cffeb}\n       {x434d0000 x447e4000 x3e4afff3}}}\n     {t\n      {{x41300000 x435b8000}}\n      {{x41300000 x4475b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush304 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438d8000 x44674000 x3cc00000}\n       {x438d8000 x4466c000 x3d24000a}\n       {x438a8000 x446b0000 x3e25000d}\n       {x438b8000 x445fc000 x3eb9fff8}\n       {x43938000 x44514000 x3ee70004}\n       {x439c8000 x443d8000 x3ee8800f}\n       {x43a30000 x44330000 x3ee8fffc}\n       {x43a78000 x4429c000 x3ee8800f}\n       {x43a88000 x44278000 x3ebf7ff1}\n       {x43a90000 x44260000 x3c980007}}}\n     {t\n      {{x41300000 x43994ccd}}\n      {{x41300000 x44482ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush303 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43818000 x444a8000 x3c8ffff3}\n       {x43828000 x444a8000 x3d27fff9}\n       {x43928000 x4439c000 x3df00043}\n       {x43958000 x44364000 x3e947ffe}\n       {x43980000 x443c0000 x3e99fff8}\n       {x43a00000 x444d4000 x3eb00000}\n       {x43a20000 x44514000 x3ec77ff1}\n       {x43a20000 x4451c000 x3ecd7ffa}\n       {x439e8000 x44540000 x3eb1800a}\n       {x43958000 x44620000 x3eaf7ff1}\n       {x43948000 x44668000 x3eb3ffef}\n       {x43938000 x44714000 x3eab8002}\n       {x43920000 x44738000 x3d860002}}}\n     {t\n      {{x41300000 x4395626f}}\n      {{x41300000 x4452a75c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush302 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dc4000 x42bc0000 x3d47fff9}\n       {x44e58000 x42860000 x3e1afff3}\n       {x44e58000 x42440000 x3ec8fffc}}}\n     {t\n      {{x41300000 x44e26a8f}}\n      {{x41300000 x428c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush301 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cfa000 x430c0000 x3d4c0003}\n       {x44d60000 x42d80000 x3e330015}\n       {x44d78000 x42ca0000 x3d33fffd}}}\n     {t\n      {{x41300000 x44d46000}}\n      {{x41300000 x42e8aa7f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush300 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4499e000 x40800000 x3d4ffff3}\n       {x449e6000 xc0000000 x3d64000a}}}\n     {t\n      {{x41300000 x449c2000}}\n      {{x41300000 1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush299 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44800000 x42ce0000 x3df40032}\n       {x448e0000 x42080000 x3e58fffc}}}\n     {t\n      {{x41300000 x44870000}}\n      {{x41300000 x42890000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush298 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44684000 x42440000 x3d70000d}\n       {x446b4000 x42aa0000 x3e11fff8}\n       {x446a0000 x42be0000 x3eba8006}\n       {x44698000 x42ce0000 x3ee9800a}\n       {x4466c000 x430b0000 x3ee9fff8}\n       {x4466c000 x430e0000 x3ee9fff8}\n       {x44690000 x43100000 x3ede7ff6}}}\n     {t\n      {{x41300000 x4468c927}}\n      {{x41300000 x42d84937}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush297 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44404000 x42180000 x3ccffff3}\n       {x44434000 x41500000 x3dfc0011}\n       {x44420000 xc1800000 x3edf7ff1}\n       {x4444c000 xc0800000 x3ee0800f}\n       {x44498000 xc1500000 x3edf7ff1}\n       {x4451c000 xc2080000 x3ee0fffc}}}\n     {t\n      {{x41300000 x44464000}}\n      {{x41300000 xc02aaab9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush296 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44340000 x434a0000 x3d07fff9}\n       {x442dc000 x42900000 x3d180007}\n       {x442c4000 x427c0000 x3e0a0019}\n       {x44284000 x42000000 x3e100000}\n       {x4427c000 x41b00000 x3dd1fff8}}}\n     {t\n      {{x41300000 x442c6666}}\n      {{x41300000 x429c6666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush295 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44410000 x43510000 x3d53fffd}\n       {x44364000 x43070000 x3d33fffd}\n       {x4435c000 x43070000 x3df00043}\n       {x44354000 x43140000 x3d8c0003}}}\n     {t\n      {{x41300000 x44389000}}\n      {{x41300000 x431cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush294 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4447c000 x439c8000 x3cd80007}\n       {x44484000 x43968000 x3d2c0003}\n       {x4447c000 x43958000 x3e4e0008}\n       {x44460000 x438e0000 x3e4e0008}\n       {x44450000 x438d8000 0}}}\n     {t\n      {{x41300000 x4446f333}}\n      {{x41300000 x43940000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush293 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443d0000 x43c50000 x3cd80007}\n       {x443d0000 x43bc0000 x3d0ffff3}\n       {x443bc000 x43ba8000 x3e6cffeb}\n       {x4439c000 x43b18000 x3e92fff3}\n       {x4439c000 x43b60000 x3e900000}\n       {x44388000 x43b78000 x3e5afff3}\n       {x44374000 x43b50000 x3e91800a}\n       {x44338000 x43ae8000 x3e9a8006}\n       {x44330000 x43b08000 x3e9d000d}\n       {x44348000 x43ca8000 x3e9b8002}\n       {x4435c000 x43d48000 x3e9a8006}\n       {x44354000 x43cc8000 x3ea00000}\n       {x44330000 x43c70000 x3ea77ff1}\n       {x4432c000 x43c88000 x3eac0011}\n       {x44330000 x43d00000 x3eaa8006}\n       {x442e4000 x43b20000 x3eac0011}\n       {x442b0000 x439c8000 x3e7afff3}\n       {x4424c000 x43880000 x3e330015}}}\n     {t\n      {{x41300000 x4434c396}}\n      {{x41300000 x43b9c72b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush292 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4442c000 x440b0000 x3d4c0003}\n       {x443ec000 x44158000 x3e03ffef}\n       {x443e4000 x4416c000 x3ea1800a}\n       {x443d0000 x44188000 x3e947ffe}}}\n     {t\n      {{x41300000 x443f3000}}\n      {{x41300000 x4413f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush291 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444d4000 x43f78000 x3c880014}\n       {x444d4000 x43f58000 x3df00043}\n       {x444b8000 x43f30000 x3e7afff3}\n       {x444c4000 x43f68000 x3e8e0008}\n       {x444c4000 x43f88000 x3e960008}\n       {x444c4000 x43ef8000 x3eb1800a}\n       {x444d4000 x43ee8000 x3eb00000}\n       {x444dc000 x43ee8000 x3eb0fffc}\n       {x444e8000 x43ed8000 x3e9f0004}\n       {x444e0000 x43ec8000 x3df00043}\n       {x444e0000 x43e90000 x3e61001d}\n       {x444e0000 x43e80000 x3e8c7ffe}\n       {x444dc000 x43e80000 x3ecc0011}\n       {x444e0000 x43ee8000 x3ecd7ffa}\n       {x444e8000 x43f08000 x3ed1800a}\n       {x4450c000 x43f20000 x3ed1fff8}\n       {x44504000 x43f40000 x3edafff3}\n       {x444f0000 x43f78000 x3ee2fff3}\n       {x444e0000 x43fd0000 x3ee3ffef}\n       {x444dc000 x43f98000 x3ee67ff6}\n       {x444e8000 x43f68000 x3ee77ff1}\n       {x444e8000 x43f78000 x3ee67ff6}\n       {x444bc000 x43fc0000 x3ed67ff6}\n       {x444a8000 x43fe0000 x3d53fffd}}}\n     {t\n      {{x41300000 x444da550}}\n      {{x41300000 x43f31000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush290 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b0e000 x442dc000 x3d000000}\n       {x44acc000 x44380000 x3e51001d}}}\n     {t\n      {{x41300000 x44aed000}}\n      {{x41300000 x4432e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush289 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ab0000 x441e0000 x3d0c0003}\n       {x44ab0000 x441ec000 x3d1bfff6}\n       {x44ab0000 x44218000 x3d44000a}\n       {x44abe000 x44260000 x3e030015}}}\n     {t\n      {{x41300000 x44ab3800}}\n      {{x41300000 x44211000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush288 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449d8000 x43e80000 x3e8b8002}\n       {x449b8000 x43da0000 x3ea8800f}\n       {x44a18000 x43da0000 x3ed47ffe}\n       {x44a4e000 x43d18000 x3ebf0004}\n       {x44ab4000 x43ca8000 x3e95000d}\n       {x44ab8000 x43c88000 x3ed57ffa}\n       {x44abe000 x43bf8000 x3eda8006}\n       {x44acc000 x43bf8000 x3cf0000d}\n       {x44ad8000 x43b88000 x3e7c0011}\n       {x44af4000 x43b30000 x3eb9800a}\n       {x44af8000 x43b20000 0}}}\n     {t\n      {{x41300000 x44a845c3}}\n      {{x41300000 x43c8745a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush287 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c4a000 x4462c000 x3d04000a}\n       {x44c46000 x44668000 0}}}\n     {t\n      {{x41300000 x44c48000}}\n      {{x41300000 x4464a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush286 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c8c000 x442e8000 x3d64000a}\n       {x44ca4000 x44398000 x3d8dfffb}}}\n     {t\n      {{x41300000 x44c98000}}\n      {{x41300000 x44340000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush285 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e1a000 x444f0000 x3d27fff9}\n       {x44e30000 x4455c000 x3dfdffc5}\n       {x44e30000 x4459c000 x3ea38002}\n       {x44e8a000 x44650000 x3eae0008}\n       {x44e92000 x4467c000 x3e860008}\n       {x44ed6000 x446fc000 x3df5ffe7}\n       {x44ebc000 x446d8000 x3e4c0011}}}\n     {t\n      {{x41300000 x44e736b8}}\n      {{x41300000 x446136d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush284 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f16000 x43d18000 x3d180007}\n       {x44efe000 x43d00000 x3d5bfff6}}}\n     {t\n      {{x41300000 x44f0a000}}\n      {{x41300000 x43d0c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush283 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f22000 x43340000 x3d07fff9}\n       {x44f30000 x43260000 x3d30000d}}}\n     {t\n      {{x41300000 x44f29000}}\n      {{x41300000 x432d0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush282 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef6000 x43710000 x3cd80007}\n       {x44f02000 x43610000 x3d2c0003}}}\n     {t\n      {{x41300000 x44efc000}}\n      {{x41300000 x43690000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush281 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eb6000 x43910000 x3ce0001b}\n       {x44ece000 x43818000 x3d580007}}}\n     {t\n      {{x41300000 x44ec2000}}\n      {{x41300000 x43894000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush280 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e6e000 x43bc0000 x3d200000}\n       {x44e72000 x43bc0000 x3e100000}\n       {x44e80000 x43b60000 x3e500000}\n       {x44e9c000 x439e8000 x3e88fffc}\n       {x44ea0000 x439a0000 0}}}\n     {t\n      {{x41300000 x44e8599a}}\n      {{x41300000 x43ae199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush279 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bf8000 x433b0000 x3d1bfff6}\n       {x44bda000 x43290000 x3d7bfff6}\n       {x44c06000 x42d40000 x3d180007}\n       {x44c02000 x426c0000 x3e23ffef}\n       {x44c10000 x42240000 x3d70000d}}}\n     {t\n      {{x41300000 x44bfb99a}}\n      {{x41300000 x42e0cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush278 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bb6000 x43980000 x3c800000}\n       {x44bba000 x43818000 x3d44000a}}}\n     {t\n      {{x41300000 x44bb8000}}\n      {{x41300000 x438cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush277 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b9a000 x43f58000 x3d33fffd}\n       {x44b90000 x43fe0000 x3dfdffc5}\n       {x44b90000 x43fb0000 x3e600000}\n       {x44bac000 x43b50000 x3e670004}\n       {x44bb4000 x43a78000 x3c400036}}}\n     {t\n      {{x41300000 x44b9eccd}}\n      {{x41300000 x43dbcccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush276 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d4e000 x435c0000 x3d1bfff6}\n       {x44ce2000 x439b0000 x3dadfffb}\n       {x44cba000 x43ba8000 x3e8c7ffe}\n       {x44cba000 x43bc0000 x3e25ffe7}\n       {x44c8c000 x43c38000 x3cc80014}}}\n     {t\n      {{x41300000 x44cd6666}}\n      {{x41300000 x43a70000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush275 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43780000 x43100000 x3d1bfff6}\n       {x43710000 x43220000 x3d27fff9}\n       {x43968000 x429e0000 x3e6a0019}\n       {x43980000 x42580000 x3e970004}\n       {x43848000 x42a60000 x3ea28006}\n       {x438d8000 x42820000 x3ec00000}\n       {x43968000 x41b00000 x3ec2fff3}\n       {x438d8000 x41c80000 x3ec70004}\n       {x436f0000 x422c0000 x3ec1fff8}\n       {x43770000 x42000000 x3ebe7ff6}\n       {x43770000 x41300000 x3eb80000}\n       {x43680000 x41300000 x3eb8fffc}\n       {x43440000 x41c80000 x3eb8800f}\n       {x43580000 x41300000 x3eb8800f}\n       {x437e0000 xc2100000 x3eb70004}\n       {x437e0000 xc1f80000 x3eb38002}\n       {x43970000 xc1800000 x3e91800a}\n       {x43ae8000 xc1600000 x3d7bfff6}\n       {x43b60000 xc1b00000 x3d67fff9}\n       {x43c08000 xc2340000 x3e8f7ff1}\n       {x43cb8000 xc27c0000 x3e880000}}}\n     {t\n      {{x41300000 x438ce7ae}}\n      {{x41300000 x41cdb6e3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush274 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f08000 x43ef8000 x3d2c0003}\n       {x44100000 x43770000 x3e4c0011}}}\n     {t\n      {{x41300000 x44042000}}\n      {{x41300000 x43b58000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush273 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d38000 x4404c000 x3c60001b}\n       {x43d48000 x44020000 x3d0ffff3}\n       {x43d58000 x44014000 x3df00043}\n       {x43c98000 x440c0000 x3df5ffe7}\n       {x43bf8000 x44138000 x3e700000}\n       {x43c40000 x44110000 x3e980000}\n       {x43bf0000 x44150000 x3e960008}\n       {x43ba8000 x4417c000 x3ea3ffef}\n       {x43c80000 x440f8000 x3eb57ffa}\n       {x43d48000 x4409c000 x3eb67ff6}\n       {x43c28000 x4411c000 x3eb70004}\n       {x43bc0000 x44150000 x3e99800a}\n       {x43bd0000 x44140000 x3c980007}}}\n     {t\n      {{x41300000 x43c713b6}}\n      {{x41300000 x440e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush272 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fa0000 x43c80000 x3ca7fff9}\n       {x43d80000 x4408c000 x3d27fff9}\n       {x43d58000 x44084000 x3e01fff8}\n       {x43d48000 x44080000 x3e100000}\n       {x43cf0000 x440a4000 x3e400000}\n       {x43d28000 x44054000 x3e3afff3}}}\n     {t\n      {{x41300000 x43da4000}}\n      {{x41300000 x44021550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush271 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44030000 x43ce0000 x3cf0000d}\n       {x44078000 x43ac0000 x3d47fff9}}}\n     {t\n      {{x41300000 x44054000}}\n      {{x41300000 x43bd0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush270 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f08000 x43f68000 x3d13fffd}\n       {x43f08000 x43fe0000 x3da00000}\n       {x43fd0000 x43e10000 x3e89fff8}\n       {x44038000 x43d00000 x3dd5ffe7}}}\n     {t\n      {{x41300000 x43f94000}}\n      {{x41300000 x43e96000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush269 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43de8000 x447b0000 x3d1bfff6}\n       {x43df0000 x44778000 x3d380007}\n       {x43dc8000 x44668000 x3e35ffe7}\n       {x43da8000 x445fc000 x3ea0fffc}\n       {x43da8000 x445dc000 x3e9d7ffa}\n       {x43d80000 x445ac000 x3e55000d}\n       {x43d70000 x444cc000 x3e630015}\n       {x43d80000 x4448c000 x3e68fffc}\n       {x43dd8000 x44428000 x3e500000}\n       {x43e00000 x44398000 x3e51fff8}\n       {x43de8000 x442f0000 x3e6e0008}\n       {x43df0000 x442cc000 x3e7effe3}\n       {x43e10000 x44260000 x3e800000}\n       {x43e48000 x44190000 x3e80fffc}\n       {x43e78000 x44114000 x3e5a0019}}}\n     {t\n      {{x41300000 x43ddbbc7}}\n      {{x41300000 x4447621d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush268 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x443d0000 x3d1bfff6}\n       {x446f8000 x44410000 x3db3fffd}\n       {x446b4000 x4447c000 x3e9f0004}}}\n     {t\n      {{x41300000 x446ed550}}\n      {{x41300000 x4441eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush267 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4474c000 x44648000 x3d2c0003}\n       {x44764000 x44650000 x3d580007}\n       {x44788000 x44650000 x3e48fffc}\n       {x44754000 x445b4000 x3eb0fffc}\n       {x44768000 x445d0000 x3e8f7ff1}\n       {x44738000 x445dc000 x3e880000}\n       {x4471c000 x445c8000 x3e8c0011}\n       {x446e8000 x44620000 x3e91800a}\n       {x446b4000 x44644000 x3ea8800f}\n       {x446bc000 x44608000 x3eac0011}\n       {x446cc000 x445d8000 x3ea77ff1}\n       {x446cc000 x4459c000 x3ea2fff3}\n       {x446d4000 x4454c000 x3d900000}\n       {x44738000 x444a0000 x3e0cffeb}\n       {x4475c000 x44484000 x3dee0008}\n       {x447a4000 x44444000 x3e03ffef}\n       {x4478c000 x44408000 x3eb3ffef}}}\n     {t\n      {{x41300000 x4472a5a2}}\n      {{x41300000 x44591a5e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush266 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4492e000 x444b8000 x3d44000a}\n       {x44936000 x444bc000 x3e7c0011}\n       {x4493a000 x444c4000 x3ec38002}\n       {x44950000 x444d4000 x3edc7ffe}\n       {x44948000 x444f0000 x3f052008}\n       {x4494c000 x4451c000 x3f04e001}\n       {x44964000 x44564000 x3f049ff9}\n       {x44956000 x44514000 x3f092008}\n       {x44948000 x44530000 x3f0a2004}\n       {x44936000 x4459c000 x3f092008}\n       {x44928000 x445ec000 x3f092008}\n       {x44928000 x445e4000 x3f07e005}\n       {x44920000 x445e4000 x3f065ffa}\n       {x44920000 x44618000 x3f07e005}\n       {x4490e000 x44620000 x3f0a2004}\n       {x44900000 x445d0000 x3f101ffb}\n       {x448f6000 x44514000 x3f112008}\n       {x448f6000 x4451c000 x3f125ffa}\n       {x448f6000 x44564000 x3f11a006}\n       {x448fc000 x44500000 x3f112008}\n       {x44908000 x4444c000 x3f0ea002}\n       {x448f8000 x44420000 x3f06dff8}\n       {x44904000 x44404000 x3f06a002}\n       {x4491a000 x443fc000 x3f062004}\n       {x44928000 x443ac000 x3f065ffa}\n       {x4493e000 x443a4000 x3ee77ff1}\n       {x4498c000 x44460000 x3edf7ff1}\n       {x44998000 x444a8000 x3edd7ffa}\n       {x44988000 x44470000 x3ee60008}\n       {x44982000 x443fc000 x3ee70004}\n       {x44974000 x44398000 x3ee0800f}\n       {x44974000 x443a4000 x3e960008}\n       {x44974000 x443b4000 x3dbdfffb}}}\n     {t\n      {{x41300000 x449385c3}}\n      {{x41300000 x444cfe14}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3b83126f g x3b83126f b x3b83126f ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush265 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44830000 x44494000 x3e938002}\n       {x44830000 x44498000 x3eac7ffe}\n       {x4480c000 x44500000 x3ef67ff6}}}\n     {t\n      {{x41300000 x44824000}}\n      {{x41300000 x444b9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush264 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x44674000 x3d73fffd}\n       {x44730000 x44660000 x3de2003b}\n       {x447e4000 x4459c000 x3eee0008}\n       {x44812000 x4455c000 x3f125ffa}\n       {x44812000 x4454c000 x3f16a002}\n       {x44812000 x44548000 x3f176007}\n       {x44828000 x444e8000 x3f16dff8}\n       {x44832000 x444e0000 x3f0adff8}\n       {x44828000 x444f8000 x3e03ffef}}}\n     {t\n      {{x41300000 x447f551f}}\n      {{x41300000 x44575550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush263 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44936000 x44554000 x3d580007}\n       {x44936000 x44564000 x3e51001d}\n       {x44948000 x445d8000 x3eac0011}\n       {x4493e000 x445d0000 0}}}\n     {t\n      {{x41300000 x4493c800}}\n      {{x41300000 x44598000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush262 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44994000 x443b4000 x3da20005}\n       {x44994000 x4436c000 x3e48fffc}\n       {x449a6000 x44390000 x3efb8002}\n       {x44990000 x44348000 x3f139ffd}\n       {x44994000 x4435c000 x3f0b6007}\n       {x4499e000 x44338000 x3f07e005}\n       {x4499a000 x44338000 0}}}\n     {t\n      {{x41300000 x4499847b}}\n      {{x41300000 x4436524e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush261 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448f8000 x44594000 x3c6fffd8}\n       {x448f8000 x445a4000 x3d0ffff3}\n       {x448ee000 x44600000 x3d1bfff6}\n       {x448ea000 x44618000 x3e67ffde}\n       {x44900000 x445c8000 x3f07e005}\n       {x44932000 x444f0000 x3f186003}\n       {x4494c000 x44498000 x3f1aa002}\n       {x44956000 x44484000 x3f1ce001}\n       {x44962000 x444a0000 x3f1da006}\n       {x4495e000 x44468000 x3f1e5ffa}\n       {x44956000 x44444000 x3f22dff8}\n       {x44976000 x4448c000 x3f22a002}\n       {x4497a000 x44470000 x3f22a002}\n       {x4497a000 x4443c000 x3f21dffc}\n       {x44976000 x44434000 0}}}\n     {t\n      {{x41300000 x4493cf0a}}\n      {{x41300000 x444ec883}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush260 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44acc000 x43730000 x3de3ffef}\n       {x44ad4000 x43680000 x3e98fffc}\n       {x44b02000 x43420000 x3f041ffb}}}\n     {t\n      {{x41300000 x44ae0a8f}}\n      {{x41300000 x435f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush259 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a44000 x43a58000 x3d800000}\n       {x44a40000 x43a78000 x3d960002}\n       {x44a3c000 x43a88000 x3e370004}\n       {x44a5e000 x439c8000 x3ed8fffc}\n       {x44a64000 x43980000 x3f0d2008}\n       {x44a7e000 x438c8000 x3f0fe005}\n       {x44ab4000 x43780000 x3f162004}\n       {x44ac2000 x436f0000 x3f1f1fff}\n       {x44ad4000 x43630000 x3f21dffc}\n       {x44ad8000 x435f0000 x3f22dff8}\n       {x44adc000 x435f0000 x3f231fff}\n       {x44adc000 x435d0000 x3edafff3}\n       {x44ade000 x435d0000 0}}}\n     {t\n      {{x41300000 x44a98000}}\n      {{x41300000 x4386bb23}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3da3d70a g x3da3d70a b x3da3d70a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush258 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ae2000 x43510000 x3c800000}\n       {x44ae2000 x434b0000 x3d2c0003}}}\n     {t\n      {{x41300000 x44ae2000}}\n      {{x41300000 x434e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush257 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aa2000 x43828000 x3d33fffd}\n       {x44adc000 x43680000 x3e2c0011}\n       {x44b02000 x43390000 x3ec8fffc}\n       {x44b06000 x43380000 x3eb8800f}\n       {x44af4000 x43440000 x3e0afff3}}}\n     {t\n      {{x41300000 x44ae5333}}\n      {{x41300000 x4353999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush256 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a5a000 x43b30000 x3ce0001b}\n       {x44a56000 x43b30000 x3d13fffd}\n       {x44a52000 x43b30000 x3d30000d}\n       {x44a68000 x43a78000 x3e8f7ff1}\n       {x44a72000 x43a30000 x3ed80000}\n       {x44a96000 x43948000 x3ed80000}\n       {x44ae2000 x43750000 x3ed2fff3}\n       {x44b00000 x43580000 x3ecb8002}\n       {x44b36000 x43340000 x3ec1800a}\n       {x44b38000 x43300000 0}}}\n     {t\n      {{x41300000 x44aad000}}\n      {{x41300000 x438e7333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43490000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ab8000 x43750000 x3d70000d}\n       {x44aa6000 x43828000 x3e838002}\n       {x44a7e000 x439a0000 x3edafff3}\n       {x44a82000 x439a0000 x3f25dffc}\n       {x44ab0000 x438a8000 x3f286003}\n       {x44aac000 x43898000 x3f2aa002}\n       {x44a64000 x43a00000 x3f2aa002}\n       {x44a3c000 x43b30000 x3f2da006}\n       {x44a3c000 x43b50000 x3f31a006}\n       {x44a4c000 x43b18000 x3f381ffb}\n       {x44a8c000 x43a00000 x3f389ff9}\n       {x44aa6000 x43980000 x3f38e001}\n       {x44a94000 x439d8000 x3f1b6007}}}\n     {t\n      {{x41300000 x44a83148}}\n      {{x41300000 x439a276d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b4e000 x42980000 x3d980007}\n       {x44b6e000 x423c0000 x3eb57ffa}}}\n     {t\n      {{x41300000 x44b5e000}}\n      {{x41300000 x42760000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449d8000 x43360000 x3edc0011}\n       {x44a40000 x43140000 x3ee67ff6}}}\n     {t\n      {{x41300000 x44a0c000}}\n      {{x41300000 x43250000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449d0000 x42c60000 x3db80007}\n       {x449d0000 x42be0000 x3ead000d}\n       {x449e2000 x42600000 x3ebe0008}\n       {x449e6000 x41c80000 x3ee9fff8}\n       {x449ce000 x41900000 x3ed00000}\n       {x44998000 x41b00000 x3ecf7ff1}}}\n     {t\n      {{x41300000 x449cd000}}\n      {{x41300000 x42520000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448d4000 x43460000 x3d380007}\n       {x448e6000 x43380000 x3ebc0011}\n       {x448f6000 x43220000 x3f0a5ffa}}}\n     {t\n      {{x41300000 x448e5571}}\n      {{x41300000 x4335553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44836000 x43030000 x3e27ffde}\n       {x44836000 x43050000 x3ec00000}\n       {x44874000 x43630000 x3ee3ffef}\n       {x4488a000 x439e8000 x3f3ea002}\n       {x4487e000 x439b8000 x3f452008}\n       {x44878000 x43838000 x3f44e001}\n       {x44874000 x43780000 x3f452008}\n       {x4486c000 x43710000 x3f452008}\n       {x44874000 x43610000 x3f1c1ffb}\n       {x44874000 x435f0000 x3dc3fffd}}}\n     {t\n      {{x41300000 x4486a666}}\n      {{x41300000 x4367e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4486c000 x43580000 x3dc7fff9}\n       {x44874000 x43580000 x3eac7ffe}\n       {x44890000 x43360000 x3ef28006}\n       {x448a2000 x43120000 x3f2be005}\n       {x44890000 x43120000 x3f255ffe}\n       {x44886000 x43190000 x3ee28006}\n       {x4482c000 x43680000 x3ee8800f}\n       {x44828000 x43938000 x3f2a5ffa}\n       {x44842000 x43a48000 x3f431fff}\n       {x44836000 x43a58000 x3f492008}\n       {x44812000 x43980000 x3f4e5ffa}\n       {x4480e000 x43958000 x3f4f6007}\n       {x4480e000 x439b8000 x3f4f1fff}\n       {x44816000 x43a48000 x3f506003}\n       {x4481e000 x43a10000 x3f50e001}\n       {x4483a000 x43800000 x3f56a002}\n       {x44832000 x43870000 x3f581ffb}\n       {x44828000 x43928000 x3f592008}\n       {x4482c000 x43948000 x3f592008}\n       {x44868000 x434d0000 x3f59dffc}\n       {x44854000 x43510000 x3f5a2004}\n       {x44836000 x43580000 x3f589ff9}\n       {x44844000 x43460000 x3f52dff8}\n       {x44848000 x435f0000 x3f3f9ffd}\n       {x4482c000 x43900000 x3f3c9ff9}\n       {x4481e000 x43bb0000 x3f3f6007}\n       {x44820000 x43bf0000 x3f47e005}\n       {x44830000 x43d00000 x3f481ffb}\n       {x44828000 x43d28000 x3f2aa002}\n       {x44824000 x43d18000 0}}}\n     {t\n      {{x41300000 x4483fccd}}\n      {{x41300000 x4389f76d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44800000 x42d00000 x3d900000}\n       {x44808000 x42c60000 x3ea80000}\n       {x44836000 x42200000 x3f041ffb}\n       {x4483a000 x41600000 x3f1d2008}\n       {x44848000 x40e00000 x3f092008}\n       {x4484c000 x40a00000 0}}}\n     {t\n      {{x41300000 x4482ca8f}}\n      {{x41300000 x4233554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44674000 x436c0000 x3ee8800f}\n       {x44684000 x43660000 x3f0d2008}}}\n     {t\n      {{x41300000 x4467c000}}\n      {{x41300000 x43690000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446a0000 x43300000 x3ead7ffa}\n       {x446a8000 x43320000 x3ecf0004}\n       {x446b4000 x43410000 x3f186003}\n       {x446a0000 x43120000 x3f19a006}\n       {x446c4000 x431b0000 x3f181ffb}\n       {x446b4000 x433b0000 x3f179ffd}\n       {x446bc000 x43390000 x3f1f9ffd}\n       {x446a8000 x43320000 x3f21a006}\n       {x446a0000 x43320000 0}}}\n     {t\n      {{x41300000 x446ad550}}\n      {{x41300000 x432f1c6a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445c0000 x42820000 x3d4c0003}\n       {x44594000 x42900000 x3e6c0011}\n       {x445c0000 x42c20000 x3ea28006}\n       {x445f4000 x42580000 x3f1d2008}\n       {x445ec000 x426c0000 x3d83fffd}}}\n     {t\n      {{x41300000 x445ca666}}\n      {{x41300000 x428acccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44210000 x43420000 x3e48fffc}\n       {x44244000 x43260000 x3e928006}\n       {x442e8000 x42680000 x3ec1800a}}}\n     {t\n      {{x41300000 x44269550}}\n      {{x41300000 x430b553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4405c000 x44138000 x3e100000}\n       {x44190000 x43af8000 x3ea60008}\n       {x441c8000 x43980000 x3f101ffb}}}\n     {t\n      {{x41300000 x4413c000}}\n      {{x41300000 x43cf8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f50000 x43fe0000 x3e7effe3}\n       {x43fe0000 x43a10000 x3ebb8002}\n       {x44044000 x43900000 x3f165ffa}}}\n     {t\n      {{x41300000 x43fe8000}}\n      {{x41300000 x43ba5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cf0000 x44148000 x3e9c0011}\n       {x43da8000 x44094000 x3ec9800a}\n       {x43ec8000 x44028000 x3f281ffb}}}\n     {t\n      {{x41300000 x43dcaaa0}}\n      {{x41300000 x440ac000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a68000 x4459c000 x3cc00000}\n       {x43880000 x44474000 x3e67ffde}\n       {x43a58000 x44474000 x3f0c6003}\n       {x439b8000 x443f4000 x3f1f6007}\n       {x43880000 x4435c000 x3f2adff8}\n       {x438b8000 x44338000 x3f3c9ff9}\n       {x43990000 x442d4000 x3f3ea002}\n       {x439d8000 x4428c000 x3f4aa002}\n       {x43980000 x441fc000 x3f4ce001}\n       {x439a0000 x441f4000 x3f4aa002}\n       {x43a00000 x44204000 x3eef7ff1}}}\n     {t\n      {{x41300000 x43985168}}\n      {{x41300000 x4434e8b4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b08000 x443fc000 x3d200000}\n       {x43b18000 x44404000 x3e48fffc}\n       {x43b40000 x444bc000 x3ec38002}\n       {x43c08000 x44618000 x3f0f6007}\n       {x43c60000 x446b0000 x3f239ffd}\n       {x43c98000 x44768000 x3f262004}\n       {x43c80000 x44778000 x3f115ffe}\n       {x43bf0000 x44788000 x3f0d5ffe}\n       {x43ad8000 x44788000 x3f0ddffc}\n       {x43a30000 x447c8000 x3f0ea002}\n       {x43ab0000 x44800000 x3f0e2004}\n       {x43af8000 x4480c000 x3ec28006}}}\n     {t\n      {{x41300000 x43b75560}}\n      {{x41300000 x4469c550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44028000 x4420c000 x3e05ffe7}\n       {x43fb0000 x442c4000 x3e80fffc}\n       {x43fa0000 x44308000 x3f215ffe}\n       {x43f98000 x444c4000 x3f252008}\n       {x43f40000 x446c4000 x3f2aa002}\n       {x43f30000 x44738000 x3f2ddffc}\n       {x43f40000 x44778000 x3f239ffd}}}\n     {t\n      {{x41300000 x43f8edb2}}\n      {{x41300000 x444ddb75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4424c000 x44514000 x3dcc0003}\n       {x44014000 x44720000 x3e7effe3}\n       {x43f30000 x447e4000 x3f14e001}\n       {x43ef8000 x44800000 x3ed9fff8}}}\n     {t\n      {{x41300000 x4405d000}}\n      {{x41300000 x44706000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44410000 x446d8000 x3d900000}\n       {x443c0000 x44764000 x3e8afff3}\n       {x44330000 x44856000 x3f01a006}\n       {x44324000 x44856000 0}}}\n     {t\n      {{x41300000 x44389000}}\n      {{x41300000 x447e5000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443e0000 x443d0000 x3d47fff9}\n       {x44388000 x4442c000 x3d9c0003}\n       {x44388000 x4443c000 x3ece7ff6}\n       {x44444000 x442d4000 x3eeb8002}\n       {x44624000 x44084000 x3f431fff}\n       {x446bc000 x43fa0000 x3f539ffd}\n       {x4475c000 x43e00000 x3f576007}\n       {x44768000 x43df0000 x3f5d5ffe}\n       {x446a8000 x43f78000 x3f5e2004}\n       {x445a4000 x44190000 x3f5c9ff9}\n       {x4439c000 x44470000 x3f595ffe}\n       {x4432c000 x4454c000 x3f512008}\n       {x44244000 x446f8000 x3f4b6007}\n       {x44220000 x44754000 x3f465ffa}\n       {x441f4000 x447f4000 x3f462004}\n       {x441ec000 x44804000 x3f441ffb}\n       {x441e8000 x44816000 x3f441ffb}\n       {x441ec000 x4483e000 x3f431fff}\n       {x441f4000 x4484c000 x3f0e2004}\n       {x441fc000 x44850000 0}}}\n     {t\n      {{x41300000 x443e5ccd}}\n      {{x41300000 x4446d333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441a0000 x42a20000 x3ea1800a}\n       {x44188000 x42ee0000 x3ec8fffc}\n       {x441c4000 x437c0000 x3f1aa002}\n       {x4423c000 x43a68000 x3f395ffe}\n       {x4436c000 x43ef8000 x3f3ea002}\n       {x443b4000 x43ff8000 x3f479ffd}\n       {x44468000 x44198000 x3f49a006}\n       {x44494000 x4427c000 x3f4c6003}\n       {x444a8000 x4429c000 x3ede0008}}}\n     {t\n      {{x41300000 x4431a396}}\n      {{x41300000 x43cfb8d5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442d4000 x41b00000 x3d7bfff6}\n       {x44434000 x43030000 x3e8e7ff6}\n       {x444cc000 x43540000 x3f339ffd}\n       {x445a4000 x43860000 x3f431fff}\n       {x446fc000 x43ad8000 x3f4d2008}\n       {x44770000 x43bd0000 x3f565ffa}\n       {x44812000 x43d48000 x3f59a006}\n       {x44832000 x43e00000 x3f59dffc}\n       {x4483a000 x43e58000 x3f552008}}}\n     {t\n      {{x41300000 x44651c6a}}\n      {{x41300000 x439571cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44180000 x42200000 x3e0afff3}\n       {x44188000 x42100000 x3e9b8002}\n       {x441b4000 x42180000 x3eb0fffc}\n       {x442b0000 x430b0000 x3f14e001}\n       {x443d8000 x43710000 x3f32dff8}\n       {x444f0000 x43b30000 x3f3ea002}\n       {x44554000 x43c50000 x3f4c1ffb}\n       {x445b4000 x43df0000 x3f4f1fff}\n       {x44620000 x4400c000 x3f501ffb}\n       {x44650000 x4404c000 x3f4e2004}\n       {x44648000 x4404c000 x3d93fffd}}}\n     {t\n      {{x41300000 x4442d74c}}\n      {{x41300000 x4394974c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431b0000 x43900000 x3da20005}\n       {x42fc0000 x43ad8000 x3eac7ffe}\n       {x429e0000 x43db8000 x3f3a5ffa}\n       {x42740000 x43f78000 x3f4a5ffa}\n       {x42200000 x440a8000 x3f4e5ffa}\n       {x42100000 x440ec000 x3f49dffc}\n       {x42100000 x44134000 x3f3b6007}\n       {x42180000 x44124000 x3ec5000d}}}\n     {t\n      {{x41300000 x428ec000}}\n      {{x41300000 x43f1c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42180000 x44794000 x3d0c0003}\n       {x42180000 x44780000 x3e300000}\n       {x41b80000 x44608000 x3eed000d}\n       {x41c80000 x44378000 x3f192008}}}\n     {t\n      {{x41300000 x41f80000}}\n      {{x41300000 x44625000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x423c0000 x443e4000 x3d27fff9}\n       {x42580000 x44254000 x3e65ffe7}\n       {x42680000 x44020000 x3f306003}\n       {x42600000 x43e10000 x3f362004}\n       {x42500000 x43c08000 x3f381ffb}\n       {x42580000 x43bc0000 x3f1da006}\n       {x42500000 x43ba8000 x3e07ffde}}}\n     {t\n      {{x41300000 x4255248f}}\n      {{x41300000 x43fbdb64}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43200000 x444e8000 x3cf7ffec}\n       {x43200000 x444f0000 x3d33fffd}\n       {x431e0000 x444b0000 x3ecafff3}\n       {x43240000 x443fc000 x3f11a006}\n       {x43320000 x442a8000 x3f209ff9}\n       {x43380000 x44220000 x3f2aa002}\n       {x43380000 x44110000 x3f2edff8}\n       {x43390000 x440b0000 x3f341ffb}\n       {x43420000 x44030000 x3f346003}\n       {x43440000 x44018000 x3f2c9ff9}\n       {x43410000 x44014000 x3f0e2004}}}\n     {t\n      {{x41300000 x4331d168}}\n      {{x41300000 x4424f45a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43170000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42980000 x44764000 x3db00000}\n       {x42980000 x44778000 x3ea38002}\n       {x42940000 x4478c000 x3ec9fff8}\n       {x42e60000 x44620000 x3f1f6007}\n       {x42e60000 x445d0000 x3f341ffb}\n       {x42b40000 x44720000 x3f3a2004}\n       {x42a60000 x44720000 x3f3b9ffd}\n       {x42ee0000 x445ec000 x3f3c9ff9}\n       {x42ce0000 x4468c000 x3f3f6007}\n       {x42b80000 x44754000 x3f3ddffc}\n       {x42d40000 x44668000 x3f3e2004}\n       {x43070000 x44594000 x3f3f6007}\n       {x42f20000 x445fc000 x3f32a002}\n       {x43000000 x444e8000 x3f1b1fff}\n       {x42f40000 x44420000 x3f2e2004}\n       {x42d00000 x443f4000 x3f365ffa}\n       {x42d40000 x44498000 x3f37e005}\n       {x42e00000 x443ac000 x3f3aa002}\n       {x42c60000 x44364000 x3f3ddffc}\n       {x42e20000 x4448c000 x3f3f6007}\n       {x43150000 x44470000 x3f3ea002}\n       {x43240000 x44300000 x3f3f9ffd}\n       {x430b0000 x44254000 x3f41a006}\n       {x43000000 x4417c000 x3f41a006}\n       {x42f40000 x4417c000 x3f35a006}\n       {x42ac0000 x44268000 x3f125ffa}\n       {x42880000 x442c4000 x3eee7ff6}\n       {x41b80000 x44554000 x3f049ff9}\n       {x41d80000 x446f0000 x3f165ffa}\n       {x41a00000 x447a4000 x3f1c1ffb}\n       {x41900000 x446e0000 x3f26a002}\n       {x41900000 x443ec000 x3f2ddffc}\n       {x41900000 x44380000 x3f376007}\n       {x41b80000 x44278000 x3f392008}\n       {x423c0000 x440b8000 x3f3b6007}\n       {x426c0000 x4403c000 x3f3d5ffe}\n       {x426c0000 x43f88000 x3f3e2004}\n       {x42580000 x43fc0000 x3ea00000}}}\n     {t\n      {{x41300000 x42ae4361}}\n      {{x41300000 x4447e1aa}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x430b0000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ce0000 x44728000 x3d900000}\n       {x42d00000 x44730000 x3e860008}\n       {x42ca0000 x44738000 x3eaafff3}\n       {x42d00000 x44738000 x3eee0008}\n       {x42ce0000 x44730000 x3f2b6007}\n       {x42ce0000 x44728000 x3f2f9ffd}\n       {x42ca0000 x4471c000 x3f079ffd}}}\n     {t\n      {{x41300000 x42cd6d91}}\n      {{x41300000 x4472d24e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush255 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44268000 x43e90000 x3e828006}\n       {x44220000 x43f88000 x3e730015}}}\n     {t\n      {{x41300000 x44244000}}\n      {{x41300000 x43f0c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush254 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442a0000 x43ca8000 x3d200000}\n       {x442a8000 x43c98000 x3d380007}\n       {x442c0000 x43c88000 x3e55000d}\n       {x442cc000 x43c88000 x3e838002}\n       {x442c0000 x43c70000 x3ef38002}\n       {x442b0000 x43cb8000 x3ef2fff3}\n       {x442a8000 x43cc8000 x3efc7ffe}\n       {x44294000 x43ce0000 x3efe0008}\n       {x44294000 x43d10000 x3ef77ff1}\n       {x44278000 x43cd0000 x3ef00000}\n       {x4427c000 x43d18000 x3ee77ff1}\n       {x4428c000 x43d28000 x3ed1800a}\n       {x44284000 x43d28000 x3e070004}\n       {x4428c000 x43da0000 x3e11001d}}}\n     {t\n      {{x41300000 x4429e000}}\n      {{x41300000 x43cdc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush253 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44350000 x43838000 x3cf7ffec}\n       {x44348000 x43838000 x3da20005}\n       {x4431c000 x437e0000 x3e61001d}}}\n     {t\n      {{x41300000 x4433c000}}\n      {{x41300000 x43820000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush252 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444a8000 x43a68000 x3cf7ffec}\n       {x444e8000 x439e8000 x3d27fff9}}}\n     {t\n      {{x41300000 x444c8000}}\n      {{x41300000 x43a28000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush251 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44420000 x44004000 x3d13fffd}\n       {x4444c000 x43f78000 x3d47fff9}}}\n     {t\n      {{x41300000 x44436000}}\n      {{x41300000 x43fc0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush250 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4435c000 x4411c000 x3d7bfff6}\n       {x44374000 x4411c000 x3e130015}}}\n     {t\n      {{x41300000 x44368000}}\n      {{x41300000 x4411c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush249 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445fc000 x441e8000 x3d73fffd}\n       {x44618000 x441ac000 x3e6effe3}\n       {x44620000 x441a0000 x3e3e0008}\n       {x44624000 x44190000 x3cc00000}}}\n     {t\n      {{x41300000 x44616000}}\n      {{x41300000 x441b1000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush248 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44580000 x441ac000 x3d07fff9}\n       {x44588000 x4417c000 x3d13fffd}\n       {x44590000 x44164000 0}}}\n     {t\n      {{x41300000 x44588000}}\n      {{x41300000 x44184000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush247 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4454c000 x44244000 x3cb0000d}\n       {x44564000 x441e8000 x3d1bfff6}}}\n     {t\n      {{x41300000 x44558000}}\n      {{x41300000 x44216000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush246 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4444c000 x44494000 x3d13fffd}\n       {x44468000 x44498000 x3d33fffd}\n       {x44474000 x44460000 x3e1e0008}\n       {x4447c000 x44410000 x3e5afff3}\n       {x4447c000 x443d8000 x3e9d000d}\n       {x4447c000 x443e4000 x3e900000}\n       {x4448c000 x44444000 x3e8a8006}\n       {x444a0000 x443d0000 x3e977ff1}\n       {x444bc000 x4435c000 x3e98fffc}\n       {x444b8000 x443a4000 x3e91800a}\n       {x444a8000 x443e0000 x3e947ffe}\n       {x444c4000 x44398000 x3eb00000}\n       {x444d4000 x44374000 x3eb28006}\n       {x44500000 x442f8000 x3eb28006}\n       {x44504000 x442f8000 x3eaafff3}\n       {x44504000 x4430c000 x3ea60008}\n       {x44514000 x442e8000 x3e9f0004}\n       {x44530000 x44284000 x3e80fffc}}}\n     {t\n      {{x41300000 x444b5c6a}}\n      {{x41300000 x443a71cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush245 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44450000 x44570000 x3c6fffd8}\n       {x44444000 x4451c000 x3c800000}}}\n     {t\n      {{x41300000 x4444a000}}\n      {{x41300000 x44546000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush244 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4443c000 x44658000 x3ccffff3}\n       {x4443c000 x44650000 x3d4c0003}\n       {x4444c000 x445a4000 x3db80007}\n       {x44460000 x445fc000 x3d9dfffb}\n       {x44470000 x44634000 x3e38fffc}\n       {x44484000 x445e4000 x3e6c0011}}}\n     {t\n      {{x41300000 x44459550}}\n      {{x41300000 x44610000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush243 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444e0000 x445fc000 x3ca7fff9}\n       {x444dc000 x445f4000 x3c8ffff3}}}\n     {t\n      {{x41300000 x444de000}}\n      {{x41300000 x445f8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush242 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444c4000 x44634000 x3d4ffff3}\n       {x444cc000 x4462c000 x3cd80007}\n       {x444d4000 x4462c000 0}}}\n     {t\n      {{x41300000 x444cc000}}\n      {{x41300000 x4462eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush241 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ed2000 x446b4000 x3da3fffd}\n       {x44ece000 x446b4000 x3e88800f}}}\n     {t\n      {{x41300000 x44ed0000}}\n      {{x41300000 x446b4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush240 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449e6000 x44658000 x3d380007}\n       {x449ee000 x44660000 x3e4c0011}}}\n     {t\n      {{x41300000 x449ea000}}\n      {{x41300000 x4465c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush239 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aca000 x44354000 x3cc80014}\n       {x44ad0000 x44374000 x3ccffff3}}}\n     {t\n      {{x41300000 x44acd000}}\n      {{x41300000 x44364000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush238 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a72000 x44374000 x3d3bfff6}\n       {x44a96000 x44330000 x3de3ffef}}}\n     {t\n      {{x41300000 x44a84000}}\n      {{x41300000 x44352000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush237 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a44000 x443d0000 x3ce7fff9}\n       {x44a48000 x443d0000 x3d33fffd}\n       {x44a4e000 x443c8000 x3e730015}\n       {x44a56000 x44398000 x3e947ffe}}}\n     {t\n      {{x41300000 x44a4c000}}\n      {{x41300000 x443c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush236 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d0c000 x443f4000 x3d820005}\n       {x44d1c000 x443d0000 x3e11001d}}}\n     {t\n      {{x41300000 x44d14000}}\n      {{x41300000 x443e2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush235 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d72000 x445b4000 x3d4c0003}\n       {x44d6a000 x445a4000 x3df80022}\n       {x44d6a000 x44594000 x3ec2fff3}\n       {x44d6e000 x4459c000 x3e07ffde}\n       {x44d6e000 x44590000 x3e5e0008}}}\n     {t\n      {{x41300000 x44d6d333}}\n      {{x41300000 x4459e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush234 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e18000 x43bc0000 x3e45ffe7}\n       {x44e30000 x43b40000 x3ed0800f}}}\n     {t\n      {{x41300000 x44e24000}}\n      {{x41300000 x43b80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush233 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ee4000 x43270000 x3e31001d}\n       {x44ef0000 x431d0000 x3eb3ffef}}}\n     {t\n      {{x41300000 x44eea000}}\n      {{x41300000 x43220000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush232 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e96000 x422c0000 x3e0e0008}\n       {x44e9c000 x42240000 x3e977ff1}\n       {x44e98000 x42000000 x3e88fffc}\n       {x44e98000 x42080000 x3ce0001b}\n       {x44ebc000 x41f80000 x3d83fffd}\n       {x44ec4000 x41e80000 0}}}\n     {t\n      {{x41300000 x44ea5a8f}}\n      {{x41300000 x420c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush231 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d92000 x438f0000 x3d64000a}\n       {x44da0000 x438a8000 x3d64000a}}}\n     {t\n      {{x41300000 x44d99000}}\n      {{x41300000 x438cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush230 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d5c000 x43970000 x3d70000d}\n       {x44d66000 x43958000 x3e7c0011}}}\n     {t\n      {{x41300000 x44d61000}}\n      {{x41300000 x43964000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush229 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cb6000 x43af8000 x3d53fffd}\n       {x44cba000 x43ae8000 x3dcfffbd}\n       {x44cbe000 x43ac0000 x3e838002}\n       {x44cc2000 x43ad8000 x3e99800a}\n       {x44cc4000 x43ad8000 x3d9c0003}\n       {x44ccc000 x43ad0000 x3e89fff8}\n       {x44ccc000 x43ac0000 x3d180007}}}\n     {t\n      {{x41300000 x44cc1b85}}\n      {{x41300000 x43ad6db2}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush228 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b9a000 x43380000 x3cb0000d}\n       {x44b9e000 x433d0000 x3dfc0011}\n       {x44bac000 x43390000 x3e838002}}}\n     {t\n      {{x41300000 x44ba1571}}\n      {{x41300000 x433a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush227 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a9e000 x43e68000 x3d47fff9}\n       {x44a88000 x43e90000 x3d47fff9}\n       {x44a84000 x43ea0000 x3e83ffef}\n       {x44a84000 x43ec0000 x3e9d7ffa}}}\n     {t\n      {{x41300000 x44a8b800}}\n      {{x41300000 x43e96000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush226 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44af4000 x43e20000 x3d24000a}\n       {x44ae6000 x43eb0000 x3e0e0008}\n       {x44af8000 x43ea0000 x3e91fff8}}}\n     {t\n      {{x41300000 x44af0a8f}}\n      {{x41300000 x43e7aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush225 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c80000 x44524000 x3d3bfff6}\n       {x44c8c000 x44514000 x3e1effe3}\n       {x44c92000 x4450c000 x3ecf0004}\n       {x44c8e000 x44504000 x3cd80007}}}\n     {t\n      {{x41300000 x44c8b000}}\n      {{x41300000 x44512000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush224 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b88000 x44740000 x3d0ffff3}\n       {x44b96000 x44740000 x3d2c0003}\n       {x44bbe000 x44728000 x3ea5000d}\n       {x44bc2000 x44714000 x3e9a8006}\n       {x44bd0000 x4470c000 x3d4c0003}}}\n     {t\n      {{x41300000 x44baf99a}}\n      {{x41300000 x44728000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush223 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44adc000 x4474c000 x3d53fffd}\n       {x44ae6000 x4474c000 x3e13ffef}\n       {x44ade000 x44744000 x3e53ffef}}}\n     {t\n      {{x41300000 x44ae0000}}\n      {{x41300000 x44749550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush222 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44594000 x44754000 x3d600000}\n       {x44530000 x4474c000 x3d6c0003}}}\n     {t\n      {{x41300000 x44562000}}\n      {{x41300000 x44750000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush221 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44674000 x44740000 x3ce7fff9}\n       {x44660000 x44754000 x3d1bfff6}}}\n     {t\n      {{x41300000 x4466a000}}\n      {{x41300000 x4474a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush220 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4474c000 x44728000 x3d4c0003}\n       {x446f8000 x44744000 x3d4ffff3}}}\n     {t\n      {{x41300000 x44722000}}\n      {{x41300000 x44736000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush219 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447b8000 x44714000 x3d70000d}\n       {x44794000 x44730000 x3e25000d}}}\n     {t\n      {{x41300000 x447a6000}}\n      {{x41300000 x44722000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush218 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44848000 x446b0000 x3d0c0003}\n       {x44836000 x446cc000 x3d13fffd}\n       {x44820000 x446e8000 x3d380007}}}\n     {t\n      {{x41300000 x44834a8f}}\n      {{x41300000 x446cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush217 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44720000 x44660000 x3d1bfff6}\n       {x4478c000 x445fc000 x3d380007}\n       {x4478c000 x445ac000 x3ed38002}\n       {x447a4000 x445b4000 x3d1bfff6}\n       {x447ac000 x445ac000 x3cc00000}}}\n     {t\n      {{x41300000 x4478199a}}\n      {{x41300000 x445e199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush216 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446e8000 x44650000 x3c800000}\n       {x446cc000 x44684000 x3d0ffff3}\n       {x446f0000 x446a8000 x3e92fff3}}}\n     {t\n      {{x41300000 x446e1550}}\n      {{x41300000 x4467eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush215 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44650000 x4447c000 x3d33fffd}\n       {x4463c000 x4448c000 x3e25000d}}}\n     {t\n      {{x41300000 x44646000}}\n      {{x41300000 x44484000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush214 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44644000 x44450000 x3d04000a}\n       {x44644000 x44460000 x3e100000}}}\n     {t\n      {{x41300000 x44644000}}\n      {{x41300000 x44458000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush213 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x442c4000 x3d27fff9}\n       {x4471c000 x442e4000 x3d580007}}}\n     {t\n      {{x41300000 x4471c000}}\n      {{x41300000 x442d4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush212 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44704000 x44374000 x3cf7ffec}\n       {x446f8000 x44374000 x3db00000}\n       {x446d8000 x44390000 x3e2e0008}\n       {x446d4000 x44388000 x3e877ff1}\n       {x446d8000 x44364000 x3e5afff3}\n       {x44714000 x44300000 x3e4e0008}\n       {x44720000 x442d4000 x3d27fff9}\n       {x44728000 x442d4000 x3d820005}\n       {x44728000 x442b8000 x3eb47ffe}\n       {x44728000 x442b0000 x3d4c0003}\n       {x44730000 x442b8000 x3d70000d}\n       {x44728000 x442b8000 x3ed38002}\n       {x4471c000 x442b8000 x3d70000d}}}\n     {t\n      {{x41300000 x4470c4ee}}\n      {{x41300000 x4430c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush211 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44976000 x43800000 x3d780007}\n       {x44990000 x43730000 x3e8e0008}}}\n     {t\n      {{x41300000 x44983000}}\n      {{x41300000 x43798000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush210 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ae000 x43910000 x3cf0000d}\n       {x44924000 x43880000 x3d53fffd}}}\n     {t\n      {{x41300000 x448e9000}}\n      {{x41300000 x438c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush209 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44868000 x438f0000 x3da20005}\n       {x44882000 x438e0000 x3e870004}}}\n     {t\n      {{x41300000 x44875000}}\n      {{x41300000 x438e8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush208 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44820000 x438a8000 x3d5bfff6}\n       {x44842000 x438d8000 x3dce0008}}}\n     {t\n      {{x41300000 x44831000}}\n      {{x41300000 x438c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush207 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446b0000 x42180000 x3d1bfff6}}}\n     {t\n      {{x41300000 x446b0000}}\n      {{x41300000 x42180000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush206 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44660000 x43610000 x3d6c0003}\n       {x4466c000 x435c0000 x3d200000}}}\n     {t\n      {{x41300000 x44666000}}\n      {{x41300000 x435e8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush205 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4462c000 x43660000 x3e947ffe}\n       {x4462c000 x43680000 x3eb8fffc}}}\n     {t\n      {{x41300000 x4462c000}}\n      {{x41300000 x43670000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush204 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446cc000 x43030000 x3d580007}\n       {x446d4000 x43070000 x3e0afff3}\n       {x446d8000 x43090000 x3e43ffef}\n       {x446cc000 x43090000 x3e75ffe7}\n       {x446b4000 x43090000 x3c800000}}}\n     {t\n      {{x41300000 x446cb333}}\n      {{x41300000 x43076666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush203 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44578000 x42860000 x3d07fff9}\n       {x44588000 x42860000 x3d33fffd}\n       {x44588000 x42740000 x3e9c0011}}}\n     {t\n      {{x41300000 x44582ab0}}\n      {{x41300000 x42820000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush202 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44634000 x429e0000 x3d1bfff6}\n       {x44650000 x42a60000 x3d33fffd}\n       {x44660000 x42a60000 x3c6fffd8}\n       {x4466c000 x42ac0000 x3da60002}}}\n     {t\n      {{x41300000 x44654000}}\n      {{x41300000 x42a58000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush201 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44690000 x43b98000 x3c6fffd8}\n       {x446d4000 x43ba8000 x3cd80007}}}\n     {t\n      {{x41300000 x446b2000}}\n      {{x41300000 x43ba0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush200 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44644000 x43c40000 x3ce7fff9}\n       {x44648000 x43c18000 x3d2c0003}}}\n     {t\n      {{x41300000 x44646000}}\n      {{x41300000 x43c2c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush199 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444a0000 x440ec000 x3d5bfff6}\n       {x444b0000 x440f0000 x3e4a0019}\n       {x444a0000 x440f0000 x3e51fff8}\n       {x4448c000 x44100000 x3bc0000b}}}\n     {t\n      {{x41300000 x4449f000}}\n      {{x41300000 x440f3000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush198 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4431c000 x43f30000 x3d3bfff6}\n       {x44354000 x44004000 x3dc7fff9}\n       {x44380000 x4404c000 x3ddc0011}}}\n     {t\n      {{x41300000 x44350000}}\n      {{x41300000 x43ff0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush197 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4428c000 x43b30000 x3cd80007}\n       {x44284000 x43d80000 x3d27fff9}\n       {x442b0000 x43e38000 x3da7fff9}}}\n     {t\n      {{x41300000 x44295550}}\n      {{x41300000 x43cf8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush196 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441f4000 x43968000 x3d04000a}\n       {x44234000 x43a20000 x3d380007}\n       {x4424c000 x43a48000 0}}}\n     {t\n      {{x41300000 x44226ab0}}\n      {{x41300000 x439f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush195 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444e0000 x43ca8000 x3c6fffd8}\n       {x4450c000 x43d90000 x3d27fff9}}}\n     {t\n      {{x41300000 x444f6000}}\n      {{x41300000 x43d1c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush194 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442e4000 x43290000 x3d400000}\n       {x44314000 x433b0000 x3d580007}\n       {x44374000 x435f0000 x3e88fffc}\n       {x4439c000 x43730000 x3ea0fffc}\n       {x443ec000 x43890000 x3ea1fff8}\n       {x44418000 x438d8000 x3e9d7ffa}\n       {x44428000 x438f0000 x3e99fff8}\n       {x44428000 x43938000 x3e82fff3}\n       {x4443c000 x439f8000 x3e570004}\n       {x44458000 x43a30000 x3e580022}\n       {x44460000 x43a88000 x3e580022}\n       {x44460000 x43aa0000 x3e55000d}\n       {x44484000 x43b40000 x3e570004}\n       {x4448c000 x43b60000 x3e1effe3}\n       {x4448c000 x43b68000 x3e15000d}\n       {x44494000 x43bb0000 x3d70000d}\n       {x44498000 x43bf0000 x3cf7ffec}\n       {x444a0000 x43c08000 x3dddffc5}\n       {x444b8000 x43c50000 x3dc7fff9}\n       {x444c4000 x43c70000 x3db3fffd}\n       {x444cc000 x43c80000 0}}}\n     {t\n      {{x41300000 x44435550}}\n      {{x41300000 x439f9e77}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush193 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4444c000 x430c0000 x3d24000a}\n       {x44498000 x43610000 x3d600000}\n       {x444a0000 x436a0000 x3eb3ffef}\n       {x444d4000 x43780000 x3eb38002}\n       {x444dc000 x437c0000 x3eb0fffc}\n       {x444f0000 x43870000 x3e847ffe}}}\n     {t\n      {{x41300000 x444b0ab0}}\n      {{x41300000 x43642ac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush192 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441a0000 x42ea0000 x3cc00000}\n       {x441a0000 x42fc0000 x3d0ffff3}\n       {x44220000 x43260000 x3eaafff3}\n       {x44218000 x43220000 x3ea9fff8}\n       {x441d8000 x42fc0000 x3ea60008}\n       {x441c4000 x42d00000 x3ead000d}\n       {x44188000 x42880000 x3eac7ffe}\n       {x44174000 x422c0000 x3eae7ff6}\n       {x4415c000 x41b80000 x3eae7ff6}\n       {x44148000 x41600000 x3ea60008}\n       {x4415c000 x41300000 x3e7e0008}\n       {x4416c000 x40a00000 x3e61001d}\n       {x441d8000 x42100000 x3e1afff3}\n       {x44278000 x42440000 x3e21001d}\n       {x44258000 x42080000 x3e93ffef}\n       {x44258000 x42200000 x3eac0011}\n       {x442cc000 x42980000 x3eac7ffe}\n       {x442f8000 x42980000 x3eb28006}\n       {x44294000 x42600000 x3eb2fff3}\n       {x442c0000 x42900000 x3eb1800a}\n       {x44314000 x42940000 x3e9c0011}\n       {x442c4000 x42480000 x3e67ffde}\n       {x44270000 x41e80000 x3e980000}\n       {x44278000 x41c80000 x3e9afff3}\n       {x442c0000 x41f80000 x3e9d7ffa}\n       {x442e4000 x41b00000 x3e970004}\n       {x442c4000 x41800000 x3e870004}\n       {x442f0000 x42080000 x3e867ff6}\n       {x44348000 x42240000 x3e6c0011}\n       {x44354000 x42240000 x3e89fff8}\n       {x44378000 x422c0000 x3e90800f}\n       {x44374000 x42200000 x3e900000}\n       {x443ac000 x42900000 x3e81800a}\n       {x443e4000 x42b00000 x3d73fffd}\n       {x44404000 x42dc0000 x3d200000}\n       {x4442c000 x43030000 x3d1bfff6}}}\n     {t\n      {{x41300000 x44286c6a}}\n      {{x41300000 x427a1c78}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush191 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43de8000 x43d80000 x3d0ffff3}\n       {x43e00000 x43d90000 x3d33fffd}\n       {x43e78000 x43d60000 x3db9fffe}}}\n     {t\n      {{x41300000 x43e20000}}\n      {{x41300000 x43d7aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush190 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440f8000 x43f30000 x3d0ffff3}\n       {x44134000 x43ed8000 x3d44000a}}}\n     {t\n      {{x41300000 x44116000}}\n      {{x41300000 x43f04000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush189 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440a4000 x43f30000 x3d200000}\n       {x440c0000 x43f08000 x3e15ffe7}\n       {x440c8000 x43ed8000 x3e070004}}}\n     {t\n      {{x41300000 x440b9550}}\n      {{x41300000 x43f05560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush188 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cf0000 x440d4000 x3d1bfff6}\n       {x43d00000 x440dc000 x3d3bfff6}\n       {x43d10000 x440b0000 x3e700000}\n       {x43d00000 x44054000 x3e860008}\n       {x43d10000 x44004000 x3e8c7ffe}\n       {x43d38000 x43f98000 x3e928006}\n       {x43d60000 x43f20000 x3e92fff3}\n       {x43d80000 x43e20000 x3e93ffef}}}\n     {t\n      {{x41300000 x43d25000}}\n      {{x41300000 x44024800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush187 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c70000 x441c4000 x3d70000d}\n       {x43c38000 x44234000 x3e41fff8}}}\n     {t\n      {{x41300000 x43c54000}}\n      {{x41300000 x441fc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush186 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43db8000 x4411c000 x3ca7fff9}\n       {x43dc8000 x44124000 x3d04000a}\n       {x43d90000 x44138000 x3eba8006}\n       {x43d90000 x44190000 x3eb1fff8}\n       {x43d48000 x441a0000 x3eb47ffe}\n       {x43cb8000 x441f4000 x3eb57ffa}}}\n     {t\n      {{x41300000 x43d70000}}\n      {{x41300000 x4416f550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush185 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4411c000 x437a0000 x3d580007}\n       {x440f8000 x438d8000 x3d70000d}}}\n     {t\n      {{x41300000 x4410a000}}\n      {{x41300000 x43854000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush184 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440a4000 x43920000 x3cc00000}\n       {x440cc000 x438b8000 x3d0ffff3}}}\n     {t\n      {{x41300000 x440b8000}}\n      {{x41300000 x438ec000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush183 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f88000 x43a30000 x3d64000a}\n       {x4400c000 x439f8000 x3e18fffc}\n       {x4403c000 x439d8000 x3e21fff8}}}\n     {t\n      {{x41300000 x44004000}}\n      {{x41300000 x43a00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush182 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f10000 x43920000 x3d67fff9}\n       {x43dd8000 x43a90000 x3e3cffeb}}}\n     {t\n      {{x41300000 x43e74000}}\n      {{x41300000 x439d8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush181 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4403c000 x43870000 x3d400000}\n       {x44030000 x43850000 x3d8c0003}}}\n     {t\n      {{x41300000 x44036000}}\n      {{x41300000 x43860000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush180 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f40000 x433b0000 x3cc00000}\n       {x43fd0000 x43410000 x3d24000a}\n       {x43ff8000 x43390000 x3e65000d}}}\n     {t\n      {{x41300000 x43fad560}}\n      {{x41300000 x433c553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush179 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e38000 x435c0000 x3d27fff9}\n       {x43eb0000 x43560000 x3d4ffff3}\n       {x43ec8000 x43530000 x3e33ffef}\n       {x43f10000 x433f0000 x3e25000d}\n       {x43f30000 x43380000 x3c8ffff3}}}\n     {t\n      {{x41300000 x43ec999a}}\n      {{x41300000 x434c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush178 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42a60000 x41500000 x3d400000}\n       {x42a60000 x41600000 x3e18fffc}}}\n     {t\n      {{x41300000 x42a60000}}\n      {{x41300000 x41580000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush177 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ac0000 x42b40000 x3d13fffd}\n       {x42bc0000 x42b80000 x3d5bfff6}}}\n     {t\n      {{x41300000 x42b40000}}\n      {{x41300000 x42b60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush176 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42bc0000 x42ca0000 x3d900000}\n       {x42bc0000 x42c60000 x3e63ffef}\n       {x42bc0000 x42c20000 x3eb0800f}\n       {x42b40000 x42bc0000 x3e6cffeb}}}\n     {t\n      {{x41300000 x42ba0000}}\n      {{x41300000 x42c38000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush175 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ee0000 x43530000 x3d1bfff6}\n       {x42f20000 x43580000 x3e530015}}}\n     {t\n      {{x41300000 x42f00000}}\n      {{x41300000 x43558000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush174 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43898000 x42200000 x3c980007}\n       {x438a8000 x42100000 x3ce7fff9}\n       {x43910000 x41a00000 x3ce7fff9}\n       {x43948000 x41300000 x3d2c0003}}}\n     {t\n      {{x41300000 x438e6000}}\n      {{x41300000 x41d60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush173 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431d0000 x42ee0000 x3cd80007}\n       {x431b0000 x42f40000 x3d3bfff6}\n       {x43200000 x42f80000 x3e500000}\n       {x43290000 x42f20000 x3e8d7ffa}}}\n     {t\n      {{x41300000 x43204000}}\n      {{x41300000 x42f30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush172 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43580000 x427c0000 x3d27fff9}\n       {x43610000 x426c0000 x3d4ffff3}\n       {x43630000 x42680000 x3e6e0008}\n       {x43818000 x41e80000 x3e6e0008}\n       {x43848000 x41c80000 x3d1bfff6}}}\n     {t\n      {{x41300000 x436e6666}}\n      {{x41300000 x423b3333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush171 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x434f0000 x41f80000 x3d0c0003}\n       {x43440000 x422c0000 x3e6cffeb}\n       {x43530000 x41b80000 x3eb60008}\n       {x43560000 x41100000 x3eab8002}\n       {x43390000 x41900000 x3eae0008}\n       {x431b0000 x41e80000 x3e6c0011}\n       {x43070000 x41e80000 x3e43ffef}\n       {x430b0000 x41d80000 x3d7bfff6}\n       {x42fc0000 x42080000 x3e880000}\n       {x42e20000 x42180000 x3ea8800f}\n       {x42e60000 x41b80000 x3ea38002}\n       {x42e00000 x41b80000 x3e98fffc}\n       {x42e20000 x41d80000 x3e9a8006}}}\n     {t\n      {{x41300000 x431b7646}}\n      {{x41300000 x41d9d8ae}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush170 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ba8000 x43b18000 x3e75000d}\n       {x43bc0000 x43af8000 x3eaf0004}}}\n     {t\n      {{x41300000 x43bb4000}}\n      {{x41300000 x43b08000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush169 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b88000 x43d60000 x3d180007}\n       {x43be0000 x43d48000 x3d64000a}\n       {x43c60000 x43d38000 x3ed38002}\n       {x43ce0000 x43d18000 x3da20005}\n       {x43d00000 x43d00000 x3e838002}\n       {x43d10000 x43d00000 x3e2afff3}\n       {x43d80000 x43d10000 x3e330015}\n       {x43df0000 x43cf0000 x3e967ff6}}}\n     {t\n      {{x41300000 x43cc5000}}\n      {{x41300000 x43d1f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush168 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439a0000 x43d80000 x3cd80007}\n       {x439a0000 x43d60000 x3d1bfff6}\n       {x43968000 x43d58000 x3e8b8002}\n       {x43928000 x43d70000 x3ec8800f}\n       {x43920000 x43d70000 x3f01dffc}\n       {x43928000 x43d58000 x3f022004}\n       {x439d8000 x43d58000 x3f001ffb}\n       {x43a78000 x43d60000 x3e41001d}\n       {x43ab0000 x43d60000 0}}}\n     {t\n      {{x41300000 x439ad560}}\n      {{x41300000 x43d6472b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush167 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43870000 x4466c000 x3cf7ffec}\n       {x43860000 x446a8000 x3d580007}}}\n     {t\n      {{x41300000 x43868000}}\n      {{x41300000 x4468a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush166 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438c8000 x44650000 x3ca7fff9}\n       {x43870000 x44660000 x3d0ffff3}}}\n     {t\n      {{x41300000 x4389c000}}\n      {{x41300000 x44658000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush165 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43928000 x443e0000 x3d0c0003}\n       {x43900000 x445b8000 x3d27fff9}}}\n     {t\n      {{x41300000 x43914000}}\n      {{x41300000 x444cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush164 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43970000 x445c8000 x3c880014}\n       {x43980000 x445c8000 x3d30000d}\n       {x439a0000 x445c8000 x3d99fffe}\n       {x439c8000 x445b4000 x3e31fff8}\n       {x439a0000 x44530000 x3e91800a}\n       {x43990000 x444d4000 x3ea9800a}\n       {x439b0000 x444cc000 x3e9c0011}\n       {x439b8000 x444cc000 x3e960008}\n       {x43990000 x4448c000 x3e970004}\n       {x43980000 x44468000 x3e928006}\n       {x43958000 x443f4000 x3e92fff3}\n       {x43958000 x443d0000 x3e3effe3}\n       {x43948000 x443b4000 x3e41fff8}\n       {x43928000 x44388000 x3e3cffeb}\n       {x43938000 x44364000 x3d30000d}}}\n     {t\n      {{x41300000 x4397d560}}\n      {{x41300000 x444aaab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush163 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b50000 x44524000 x3c60001b}\n       {x43b40000 x44540000 x3d0ffff3}\n       {x43ad0000 x4454c000 x3d47fff9}}}\n     {t\n      {{x41300000 x43b20000}}\n      {{x41300000 x4453aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush162 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b18000 x4456c000 x3d0ffff3}\n       {x43af8000 x445a4000 x3d400000}}}\n     {t\n      {{x41300000 x43b08000}}\n      {{x41300000 x44588000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush161 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c28000 x441c4000 x3cb7ffec}\n       {x43bf8000 x442e8000 x3d24000a}\n       {x43c08000 x44338000 x3e89fff8}\n       {x43bf8000 x44390000 x3ea38002}\n       {x43be0000 x443e4000 x3ea1fff8}\n       {x43bd0000 x4442c000 x3e070004}\n       {x43bd0000 x44450000 x3de3ffef}\n       {x43bb0000 x44450000 x3ea57ffa}\n       {x43bc0000 x44458000 x3ec38002}\n       {x43bd0000 x44484000 x3ebc7ffe}\n       {x43bc0000 x444b8000 x3eb9fff8}\n       {x43bc0000 x444cc000 x3ebc7ffe}\n       {x43ba8000 x44500000 x3e900000}\n       {x43b98000 x44530000 x3db9fffe}\n       {x43b60000 x4454c000 x3cf0000d}}}\n     {t\n      {{x41300000 x43bccccd}}\n      {{x41300000 x4442221d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush160 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43be0000 x442c0000 x3d2c0003}\n       {x43c18000 x44278000 x3d47fff9}}}\n     {t\n      {{x41300000 x43bfc000}}\n      {{x41300000 x4429c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush159 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae8000 x44300000 x3ca7fff9}\n       {x43b30000 x442f0000 x3d0ffff3}\n       {x43b30000 x442e8000 x3d73fffd}\n       {x43b30000 x442e4000 x3ca7fff9}}}\n     {t\n      {{x41300000 x43b1e000}}\n      {{x41300000 x442ef000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush158 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43968000 x44308000 x3d1bfff6}\n       {x43970000 x4430c000 x3d400000}\n       {x43980000 x44308000 x3e9c0011}\n       {x439a0000 x442f8000 x3ebb8002}\n       {x439c8000 x44300000 x3ebd000d}\n       {x43a10000 x442f0000 x3eaf7ff1}}}\n     {t\n      {{x41300000 x439a2aa0}}\n      {{x41300000 x44300ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e7ae148 g x3e7ae148 b x3e7ae148 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42a60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush157 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43980000 x441d0000 x3d780007}\n       {x43990000 x441d8000 x3e9afff3}\n       {x439b0000 x441e0000 x3eb60008}\n       {x439a0000 x441e0000 x3d24000a}}}\n     {t\n      {{x41300000 x43998000}}\n      {{x41300000 x441da000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush156 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a58000 x4404c000 x3d6c0003}\n       {x43a58000 x44054000 x3e960008}\n       {x43a40000 x44054000 x3da7fff9}}}\n     {t\n      {{x41300000 x43a50000}}\n      {{x41300000 x44051550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush155 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43300000 x43fa0000 x3d24000a}\n       {x43320000 x43fb0000 x3d9c0003}\n       {x43360000 x43fa0000 x3e43ffef}\n       {x43360000 x43f88000 x3df00043}\n       {x43380000 x43f98000 x3c000000}}}\n     {t\n      {{x41300000 x43346666}}\n      {{x41300000 x43f9cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush154 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43270000 x44140000 x3d400000}\n       {x43270000 x44158000 x3e43ffef}\n       {x43260000 x44148000 x3eb38002}}}\n     {t\n      {{x41300000 x4326aac1}}\n      {{x41300000 x4414aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush153 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x427c0000 x43f20000 x3d24000a}\n       {x42740000 x43f40000 x3d44000a}}}\n     {t\n      {{x41300000 x42780000}}\n      {{x41300000 x43f30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush152 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42200000 x44068000 x3d47fff9}\n       {x42240000 x44068000 x3d89fffe}\n       {x42240000 x4405c000 x3e88800f}}}\n     {t\n      {{x41300000 x4222aab3}}\n      {{x41300000 x44064000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush151 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x429a0000 x44070000 x3d64000a}\n       {x429e0000 x44078000 x3e25ffe7}\n       {x42a60000 x4408c000 x3e7afff3}\n       {x42b00000 x44068000 x3ea57ffa}\n       {x42b00000 x4405c000 x3e8c0011}\n       {x42b00000 x44070000 x3e83ffef}}}\n     {t\n      {{x41300000 x42a7aaa6}}\n      {{x41300000 x44071550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush150 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431b0000 x443d8000 x3d30000d}\n       {x431d0000 x443d8000 x3e08fffc}\n       {x431d0000 x443ac000 x3e51fff8}\n       {x431b0000 x44380000 x3e400000}}}\n     {t\n      {{x41300000 x431c0000}}\n      {{x41300000 x443b7000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush149 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43150000 x44460000 x3d24000a}\n       {x42fc0000 x445f4000 x3d33fffd}\n       {x42dc0000 x44634000 x3e99800a}\n       {x42ce0000 x4468c000 x3e9a8006}\n       {x42b00000 x44704000 x3e9afff3}\n       {x429e0000 x44714000 x3e90800f}\n       {x42860000 x44744000 x3e957ffa}\n       {x42740000 x44768000 x3e7c0011}}}\n     {t\n      {{x41300000 x42c3c000}}\n      {{x41300000 x4467b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush148 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43190000 x4443c000 x3d0ffff3}\n       {x43150000 x4442c000 x3d27fff9}}}\n     {t\n      {{x41300000 x43170000}}\n      {{x41300000 x44434000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush147 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42b40000 x44434000 x3d24000a}\n       {x42b40000 x4442c000 x3d380007}\n       {x42b40000 x44428000 x3e11fff8}\n       {x42b80000 x4442c000 x3e2cffeb}\n       {x42c60000 x444a0000 x3e7c0011}\n       {x42c60000 x444c4000 x3e780022}\n       {x42ca0000 x444f0000 x3e2effe3}\n       {x42d80000 x44514000 x3e55000d}\n       {x42f20000 x4455c000 x3e55ffe7}\n       {x42f80000 x4456c000 x3e838002}\n       {x43050000 x4451c000 x3e8e7ff6}\n       {x430b0000 x444f0000 x3d64000a}\n       {x430c0000 x444e8000 x3d8c0003}\n       {x430e0000 x444e8000 x3d99fffe}\n       {x430e0000 x444f0000 x3d000000}\n       {x43120000 x444b8000 x3d53fffd}\n       {x43140000 x44474000 x3cc80014}}}\n     {t\n      {{x41300000 x42ebc396}}\n      {{x41300000 x444c1a5e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush146 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42480000 x44380000 x3d04000a}\n       {x42480000 x442f8000 x3d4ffff3}\n       {x42440000 x44300000 x3e2cffeb}\n       {x42180000 x443d0000 x3e27ffde}\n       {x42100000 x44410000 x3e43ffef}\n       {x42340000 x44388000 x3e81fff8}\n       {x42500000 x44300000 x3e880000}\n       {x42480000 x442dc000 x3e7effe3}\n       {x423c0000 x442c4000 x3e6cffeb}\n       {x42340000 x442b0000 x3e5effe3}\n       {x42200000 x44270000 x3e61fff8}\n       {x42080000 x44234000 x3e1c0011}\n       {x41f80000 x441d8000 x3e170004}\n       {x41f80000 x441c8000 0}}}\n     {t\n      {{x41300000 x422adb71}}\n      {{x41300000 x442e3b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush145 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41c80000 x44600000 x3cc00000}\n       {x41d80000 x445c8000 x3d7bfff6}\n       {x42000000 x44548000 x3de7ffde}\n       {x42600000 x443e0000 x3e67ffde}\n       {x42680000 x443c0000 x3e3e0008}\n       {x42600000 x443c0000 x3de7ffde}\n       {x42680000 x443ac000 x3d180007}\n       {x42860000 x44364000 x3df9ffd6}\n       {x42820000 x44354000 x3dddffc5}}}\n     {t\n      {{x41300000 x4245554d}}\n      {{x41300000 x4445071b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush144 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42180000 x444c4000 x3d000000}\n       {x42080000 x4455c000 x3d380007}}}\n     {t\n      {{x41300000 x42100000}}\n      {{x41300000 x44510000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush143 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42240000 x446e0000 x3d24000a}\n       {x42200000 x446e0000 x3d44000a}\n       {x42200000 x446d8000 x3de00000}\n       {x42100000 x44668000 x3e75000d}\n       {x42000000 x44608000 x3e93ffef}\n       {x41d80000 x44524000 x3ea38002}\n       {x41e80000 x444e0000 x3ea9800a}\n       {x41e80000 x444f8000 x3e9f0004}\n       {x41d80000 x44500000 x3e8d000d}\n       {x41d80000 x444e8000 x3e8b8002}\n       {x41e80000 x444c4000 x3e8e7ff6}\n       {x42000000 x44470000 x3e90fffc}\n       {x42080000 x4444c000 x3e95000d}\n       {x42080000 x44458000 x3e93ffef}\n       {x42000000 x44470000 x3e870004}\n       {x42080000 x44494000 x3df80022}}}\n     {t\n      {{x41300000 x4202c000}}\n      {{x41300000 x4454c800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42100000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush142 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42240000 x44410000 x3cb7ffec}\n       {x42240000 x44408000 x3d5bfff6}\n       {x423c0000 x443e4000 x3dee0008}\n       {x42580000 x44398000 x3e35ffe7}}}\n     {t\n      {{x41300000 x42370000}}\n      {{x41300000 x443e5000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush141 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42000000 x444a0000 x3ce7fff9}\n       {x42100000 x44474000 x3d000000}}}\n     {t\n      {{x41300000 x42080000}}\n      {{x41300000 x4448a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush140 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42180000 x444d4000 x3ca7fff9}\n       {x42200000 x444c4000 x3d44000a}\n       {x42240000 x44484000 x3e7e0008}}}\n     {t\n      {{x41300000 x421eaab3}}\n      {{x41300000 x444b4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush139 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42200000 x44570000 x3cd80007}\n       {x42180000 x44548000 x3d1bfff6}}}\n     {t\n      {{x41300000 x421c0000}}\n      {{x41300000 x4455c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush138 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d80000 x446f0000 x3cf0000d}\n       {x42100000 x44704000 x3d2c0003}\n       {x42080000 x446b0000 x3dfc0011}\n       {x42000000 x44634000 x3df40032}\n       {x42180000 x44580000 x3df40032}\n       {x42200000 x44570000 0}}}\n     {t\n      {{x41300000 x420a0000}}\n      {{x41300000 x4464c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush137 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43410000 x4475c000 x3dce0008}\n       {x43390000 x44754000 x3e857ffa}\n       {x43390000 x44738000 x3eae0008}\n       {x433d0000 x44720000 x3e8e0008}}}\n     {t\n      {{x41300000 x433c0000}}\n      {{x41300000 x44742000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush136 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f40000 x44778000 x3d27fff9}\n       {x430b0000 x447b8000 x3d7bfff6}}}\n     {t\n      {{x41300000 x43028000}}\n      {{x41300000 x44798000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush135 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x430c0000 x446e8000 x3d0ffff3}\n       {x43070000 x44730000 x3d900000}\n       {x43030000 x44730000 x3e938002}\n       {x43020000 x44740000 x3e5afff3}\n       {x42ee0000 x4479c000 x3e63ffef}\n       {x42ea0000 x44794000 x3e88fffc}\n       {x42ea0000 x44780000 x3dcfffbd}}}\n     {t\n      {{x41300000 x42fe0000}}\n      {{x41300000 x4475124e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush134 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43270000 x44660000 x3d7bfff6}\n       {x43260000 x44660000 x3e0afff3}\n       {x431e0000 x44668000 x3e55000d}\n       {x43190000 x44668000 x3e80800f}\n       {x43120000 x446bc000 x3e9c7ffe}\n       {x430b0000 x446f0000 x3e9d000d}}}\n     {t\n      {{x41300000 x431ad53f}}\n      {{x41300000 x4468a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3edc28f6 g x3edc28f6 b x3edc28f6 ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush133 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44514000 x44198000 x3d07fff9}\n       {x44514000 x44188000 x3eac0011}\n       {x44514000 x44190000 x3ecb8002}\n       {x44514000 x44188000 x3efd7ffa}\n       {x4450c000 x4417c000 x3ef8800f}}}\n     {t\n      {{x41300000 x44512666}}\n      {{x41300000 x4418a666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44378000 x442f8000 x3c8ffff3}\n       {x4432c000 x443d0000 x3d24000a}\n       {x44324000 x443c8000 x3e670004}\n       {x4430c000 x443bc000 x3e48fffc}\n       {x44300000 x44408000 x3e960008}\n       {x442dc000 x44434000 x3e900000}}}\n     {t\n      {{x41300000 x4431d550}}\n      {{x41300000 x443c1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443d0000 x4423c000 x3c6fffd8}\n       {x443d8000 x4423c000 x3ce7fff9}\n       {x443d8000 x44234000 x3d0ffff3}\n       {x443d8000 x44230000 x3d27fff9}\n       {x443bc000 x44258000 x3e4cffeb}\n       {x443ac000 x44254000 x3edf7ff1}\n       {x443c0000 x44230000 x3ec0800f}\n       {x443a4000 x44254000 x3e75ffe7}\n       {x4436c000 x442e8000 x3eab8002}\n       {x4436c000 x442f8000 0}}}\n     {t\n      {{x41300000 x443b2ccd}}\n      {{x41300000 x44264666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44314000 x43f50000 x3d24000a}\n       {x44300000 x43f30000 x3e01fff8}\n       {x442dc000 x43f08000 x3e93ffef}\n       {x442d4000 x43e90000 x3e960008}\n       {x442cc000 x43dc8000 x3e8c0011}\n       {x442c4000 x43db8000 x3ce7fff9}}}\n     {t\n      {{x41300000 x442e3550}}\n      {{x41300000 x43e99560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442c0000 x44100000 x3d200000}\n       {x442cc000 x44100000 x3d44000a}\n       {x442e4000 x440d4000 x3eb70004}}}\n     {t\n      {{x41300000 x442d0000}}\n      {{x41300000 x440f1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442f8000 x440c8000 x3c8ffff3}\n       {x442e8000 x440d4000 x3d0c0003}\n       {x442e4000 x440e4000 x3d04000a}\n       {x442cc000 x44108000 x3d04000a}}}\n     {t\n      {{x41300000 x442e4000}}\n      {{x41300000 x440e2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f50000 x44698000 x3d5bfff6}}}\n     {t\n      {{x41300000 x43f50000}}\n      {{x41300000 x44698000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440ec000 x44580000 x3d70000d}\n       {x44084000 x44588000 x3dc60002}}}\n     {t\n      {{x41300000 x440b8000}}\n      {{x41300000 x44584000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fd0000 x444a0000 x3d0c0003}\n       {x43fc0000 x44498000 x3d13fffd}\n       {x43fc0000 x44468000 x3d1bfff6}\n       {x43fc0000 x4447c000 x3e0a0019}\n       {x43fe8000 x444bc000 x3e78fffc}\n       {x43fe8000 x444a8000 x3e977ff1}\n       {x4403c000 x444c4000 x3da3fffd}\n       {x44080000 x44500000 x3da9fffe}\n       {x440b8000 x444f8000 x3e15000d}\n       {x440c8000 x44500000 x3e5c0011}\n       {x440cc000 x44500000 x3e6cffeb}\n       {x440e4000 x4450c000 x3e770004}\n       {x440d4000 x444f8000 x3e99800a}\n       {x440e4000 x44528000 x3e21001d}\n       {x440e4000 x4454c000 x3e430015}\n       {x440ec000 x44564000 x3be00005}}}\n     {t\n      {{x41300000 x4406e3f8}}\n      {{x41300000 x444e1800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ff8000 x44524000 x3cb0000d}\n       {x44004000 x44528000 x3e13ffef}\n       {x43fe8000 x44514000 x3e8f0004}\n       {x43ff8000 x44570000 x3e838002}\n       {x43fe8000 x4456c000 x3e95000d}\n       {x43fe8000 x4455c000 x3e8e7ff6}\n       {x43fe0000 x4456c000 x3e860008}\n       {x43fc0000 x445b8000 x3e8d7ffa}\n       {x43fc0000 x445dc000 x3e67ffde}\n       {x43fc0000 x445c8000 x3e48fffc}}}\n     {t\n      {{x41300000 x43fe199a}}\n      {{x41300000 x44570000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44164000 x44420000 x3d44000a}\n       {x44150000 x44444000 x3e500000}}}\n     {t\n      {{x41300000 x4415a000}}\n      {{x41300000 x44432000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44140000 x44210000 x3d400000}\n       {x44148000 x44258000 x3e55ffe7}\n       {x44150000 x44260000 x3cf7ffec}\n       {x44158000 x4424c000 x3e4effe3}\n       {x44158000 x4427c000 x3ed70004}}}\n     {t\n      {{x41300000 x4414e666}}\n      {{x41300000 x44250000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d4000 x440e4000 x3d180007}\n       {x440dc000 x440f8000 x3d380007}\n       {x440c0000 x44198000 x3d3bfff6}\n       {x440c0000 x441ac000 x3d64000a}}}\n     {t\n      {{x41300000 x440cc000}}\n      {{x41300000 x44148000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440a4000 x43fd0000 x3cb0000d}\n       {x440a4000 x4403c000 x3d0c0003}\n       {x440c8000 x4408c000 x3d380007}\n       {x440c8000 x44084000 x3e3cffeb}\n       {x440dc000 x440a4000 x3d07fff9}\n       {x440d4000 x44094000 x3e43ffef}\n       {x440d4000 x44068000 x3e15000d}\n       {x440d4000 x4404c000 x3b800000}}}\n     {t\n      {{x41300000 x440c6000}}\n      {{x41300000 x44064000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440cc000 x43c88000 x3c60001b}\n       {x440d4000 x43bc0000 x3cc00000}\n       {x440dc000 x43b78000 x3d44000a}\n       {x440cc000 x43af8000 x3d47fff9}}}\n     {t\n      {{x41300000 x440d2000}}\n      {{x41300000 x43bae000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44068000 x43e10000 x3c8ffff3}\n       {x44030000 x43f40000 x3c9fffe5}\n       {x43fb0000 x44038000 x3dce0008}\n       {x43f78000 x44078000 x3e25ffe7}\n       {x43f68000 x44078000 x3e4effe3}\n       {x43f10000 x4409c000 x3e4cffeb}\n       {x43f08000 x440a8000 x3e51001d}\n       {x43ea0000 x440ec000 x3e58fffc}\n       {x43e90000 x440ec000 x3e8f7ff1}\n       {x43ec0000 x440dc000 x3dd80022}}}\n     {t\n      {{x41300000 x43f60ccd}}\n      {{x41300000 x44060ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44020000 x43fe8000 x3d07fff9}\n       {x44054000 x43f68000 x3d27fff9}\n       {x44080000 x43e80000 x3e03ffef}\n       {x44084000 x43e20000 x3df9ffd6}\n       {x44080000 x43dc8000 x3e947ffe}\n       {x4408c000 x43d60000 x3e3c0011}\n       {x44094000 x43d38000 x3d400000}\n       {x440a8000 x43cd0000 x3ca7fff9}}}\n     {t\n      {{x41300000 x44078000}}\n      {{x41300000 x43e24000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f68000 x435c0000 x3cf0000d}\n       {x43f98000 x433f0000 x3d0ffff3}\n       {x43f98000 x43380000 x3c880014}}}\n     {t\n      {{x41300000 x43f88000}}\n      {{x41300000 x4346553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d18000 x43a68000 x3c880014}\n       {x43d28000 x43a88000 x3d27fff9}}}\n     {t\n      {{x41300000 x43d20000}}\n      {{x41300000 x43a78000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43eb0000 x43828000 x3ca7fff9}\n       {x43ec0000 x43838000 x3d44000a}}}\n     {t\n      {{x41300000 x43eb8000}}\n      {{x41300000 x43830000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d60000 x43870000 x3cc00000}\n       {x43dc8000 x43848000 x3cf7ffec}}}\n     {t\n      {{x41300000 x43d94000}}\n      {{x41300000 x4385c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bf8000 x43ab0000 x3d180007}\n       {x43bf8000 x43ac0000 x3d400000}\n       {x43c28000 x43ab0000 x3e13ffef}\n       {x43cc8000 x43990000 x3e8b8002}\n       {x43c88000 x43938000 x3e430015}\n       {x43c50000 x43948000 x3e6c0011}\n       {x43c70000 x43928000 x3e6effe3}\n       {x43c80000 x438a8000 x3e3a0019}}}\n     {t\n      {{x41300000 x43c55000}}\n      {{x41300000 x439c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c08000 x43190000 x3d0c0003}\n       {x43d60000 x42ce0000 x3d1bfff6}}}\n     {t\n      {{x41300000 x43cb4000}}\n      {{x41300000 x43000000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b98000 x43320000 x3dcc0003}\n       {x43b98000 x432f0000 x3e7effe3}\n       {x43ba8000 x432d0000 x3e91800a}\n       {x43bf0000 x431b0000 x3e91800a}}}\n     {t\n      {{x41300000 x43bb2000}}\n      {{x41300000 x432a4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43898000 x43a58000 x3d04000a}\n       {x43860000 x43b18000 x3d1bfff6}\n       {x43838000 x43b78000 x3e0cffeb}\n       {x43818000 x43be0000 x3cf0000d}}}\n     {t\n      {{x41300000 x43852000}}\n      {{x41300000 x43b32000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a48000 x43750000 x3d1bfff6}\n       {x439f8000 x43800000 x3d67fff9}\n       {x43948000 x438c8000 x3eb70004}\n       {x43938000 x438d8000 x3d600000}\n       {x43900000 x43948000 x3e53ffef}\n       {x43900000 x43980000 x3d6c0003}}}\n     {t\n      {{x41300000 x43975560}}\n      {{x41300000 x438ad560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c88000 x43100000 x3d2c0003}\n       {x43c38000 x431e0000 x3d8c0003}\n       {x43be0000 x43200000 x3e31001d}}}\n     {t\n      {{x41300000 x43c35560}}\n      {{x41300000 x431a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4400c000 x42a60000 x3da20005}\n       {x44018000 x429e0000 x3ea0800f}\n       {x44028000 x42ac0000 x3eb60008}\n       {x4400c000 x42b00000 x3ea47ffe}\n       {x43fe8000 x42b40000 0}}}\n     {t\n      {{x41300000 x4400f333}}\n      {{x41300000 x42aa6666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e78000 x41d80000 x3d89fffe}\n       {x43e68000 x41d80000 x3e55000d}\n       {x43e80000 x41900000 x3ea1fff8}\n       {x43e78000 x41f80000 x3ed77ff1}\n       {x43e48000 x41b00000 x3ecc7ffe}\n       {x43e20000 x41f80000 x3e5cffeb}}}\n     {t\n      {{x41300000 x43e60000}}\n      {{x41300000 x41d00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437e0000 x42500000 x3cd80007}\n       {x43838000 x42240000 x3d200000}\n       {x438b8000 x41b80000 x3d27fff9}}}\n     {t\n      {{x41300000 x4384aaa0}}\n      {{x41300000 x421aaab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43560000 x42a20000 x3d33fffd}\n       {x436a0000 x42820000 x3d44000a}\n       {x436f0000 x42440000 x3e6cffeb}}}\n     {t\n      {{x41300000 x43650000}}\n      {{x41300000 x42820000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43340000 x41600000 x3d87fff9}\n       {x43390000 x41300000 x3e33ffef}}}\n     {t\n      {{x41300000 x43368000}}\n      {{x41300000 x41480000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42500000 x42940000 x3d70000d}\n       {x423c0000 x42880000 x3e03ffef}\n       {x42200000 x427c0000 x3e867ff6}\n       {x422c0000 x42880000 x3e847ffe}}}\n     {t\n      {{x41300000 x42360000}}\n      {{x41300000 x42888000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ac0000 x42000000 x3d8dfffb}\n       {x42bc0000 xc1300000 x3dac0003}}}\n     {t\n      {{x41300000 x42b40000}}\n      {{x41300000 x41280000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e00000 x42b80000 x3d89fffe}\n       {x42dc0000 x42600000 x3d960002}}}\n     {t\n      {{x41300000 x42de0000}}\n      {{x41300000 x42940000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43120000 x43070000 x3d2c0003}\n       {x43150000 x43090000 x3d580007}\n       {x43170000 x430e0000 x3e75ffe7}\n       {x431e0000 x430c0000 x3e7cffeb}\n       {x43140000 x43090000 x3e11fff8}\n       {x42f80000 x43030000 x3dfc0011}}}\n     {t\n      {{x41300000 x43120000}}\n      {{x41300000 x43090000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d80000 x43b68000 x3d73fffd}\n       {x41f80000 x43b60000 x3e33ffef}\n       {x41f80000 x43b50000 x3e8a8006}\n       {x42000000 x43b40000 x3dac0003}}}\n     {t\n      {{x41300000 x41f20000}}\n      {{x41300000 x43b56000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41f80000 x43808000 x3d0c0003}\n       {x42000000 x43800000 x3d70000d}\n       {x42500000 x43770000 x3d89fffe}\n       {x423c0000 x43808000 x3ebc7ffe}\n       {x42480000 x437e0000 x3ebd7ffa}}}\n     {t\n      {{x41300000 x4229999a}}\n      {{x41300000 x437e3333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x434a0000 x43c70000 x3e8d000d}\n       {x43460000 x43c60000 x3eb77ff1}\n       {x43480000 x43c60000 0}}}\n     {t\n      {{x41300000 x43480000}}\n      {{x41300000 x43c65560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42dc0000 x43d48000 x3d89fffe}\n       {x42dc0000 x43d58000 x3d960002}\n       {x42dc0000 x43d60000 x3e65ffe7}\n       {x42d80000 x43d48000 x3ede0008}\n       {x42e00000 x43d48000 x3eee7ff6}\n       {x42f20000 x43d58000 x3ede0008}\n       {x42f40000 x43d28000 x3ee0fffc}\n       {x42f80000 x43d28000 0}}}\n     {t\n      {{x41300000 x42e54000}}\n      {{x41300000 x43d47000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d58000 x44578000 x3ce0001b}\n       {x44d66000 x44588000 x3d0ffff3}\n       {x44d6e000 x44590000 x3e2e0008}}}\n     {t\n      {{x41300000 x44d64000}}\n      {{x41300000 x44585550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cc8000 x44338000 x3d000000}\n       {x44cc2000 x443fc000 x3d30000d}\n       {x44cc2000 x44314000 x3dc3fffd}}}\n     {t\n      {{x41300000 x44cc4000}}\n      {{x41300000 x4436d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cc2000 x44398000 x3cf7ffec}\n       {x44cc8000 x44380000 x3d13fffd}\n       {x44cd0000 x4430c000 x3dfc0011}}}\n     {t\n      {{x41300000 x44cc8a8f}}\n      {{x41300000 x44361550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c68000 x44554000 x3d67fff9}\n       {x44c5c000 x445b4000 x3d780007}\n       {x44c58000 x445b8000 x3cb7ffec}}}\n     {t\n      {{x41300000 x44c5ea8f}}\n      {{x41300000 x44595550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c6e000 x4450c000 x3d67fff9}\n       {x44c6a000 x4451c000 x3d780007}\n       {x44c68000 x44540000 x3e270004}}}\n     {t\n      {{x41300000 x44c6aa8f}}\n      {{x41300000 x44522ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c8e000 x44450000 x3c8ffff3}\n       {x44c8e000 x4444c000 x3cd80007}\n       {x44c8e000 x44460000 x3d180007}\n       {x44c8e000 x4448c000 x3e980000}\n       {x44c8c000 x444a0000 x3e1effe3}\n       {x44c88000 x444c4000 x3ea0fffc}\n       {x44c80000 x44500000 x3e928006}\n       {x44c7a000 x4450c000 x3e92fff3}\n       {x44c72000 x4450c000 x3d73fffd}}}\n     {t\n      {{x41300000 x44c86385}}\n      {{x41300000 x444ab1cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dfe000 x43958000 x3d400000}\n       {x44dfe000 x43968000 x3de3ffef}\n       {x44e30000 x439d8000 x3ecb8002}}}\n     {t\n      {{x41300000 x44e0ea8f}}\n      {{x41300000 x43988000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dec000 x438c8000 x3c800000}\n       {x44df0000 x438c8000 x3d0c0003}}}\n     {t\n      {{x41300000 x44dee000}}\n      {{x41300000 x438c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dd6000 x438c8000 x3d400000}\n       {x44dde000 x438b8000 x3d83fffd}\n       {x44dd6000 x438b8000 x3ec2fff3}\n       {x44dd6000 x438c8000 0}}}\n     {t\n      {{x41300000 x44dd8000}}\n      {{x41300000 x438c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42c60000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b72000 x43420000 x3d960002}\n       {x44b7e000 x433b0000 x3eb9800a}}}\n     {t\n      {{x41300000 x44b78000}}\n      {{x41300000 x433e8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b2a000 x427c0000 x3d0c0003}\n       {x44b38000 x42600000 x3dd40032}}}\n     {t\n      {{x41300000 x44b31000}}\n      {{x41300000 x426e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b4a000 x42e60000 x3d000000}\n       {x44b36000 x42ee0000 x3d04000a}\n       {x44b00000 x42f80000 x3cf7ffec}\n       {x44b06000 x42f80000 x3ede7ff6}\n       {x44b02000 x42f40000 x3d200000}}}\n     {t\n      {{x41300000 x44b1b333}}\n      {{x41300000 x42f1999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b48000 x43070000 x3cf0000d}\n       {x44b4e000 x43050000 x3e2a0019}\n       {x44b52000 x43020000 x3ea38002}\n       {x44b4e000 x43050000 x3e82fff3}\n       {x44b5c000 x42fc0000 x3e770004}\n       {x44b5c000 x42f80000 0}}}\n     {t\n      {{x41300000 x44b52571}}\n      {{x41300000 x43022ac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4470c000 x446a8000 x3d27fff9}\n       {x44704000 x44690000 x3d67fff9}}}\n     {t\n      {{x41300000 x44708000}}\n      {{x41300000 x4469c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446b4000 x44738000 x3d87fff9}\n       {x446bc000 x44740000 x3e5effe3}\n       {x446b0000 x44738000 x3bc0000b}}}\n     {t\n      {{x41300000 x446b5550}}\n      {{x41300000 x4473aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446d8000 x446f8000 x3d24000a}\n       {x446f8000 x44704000 x3d47fff9}\n       {x446d8000 x4470c000 x3e2e0008}}}\n     {t\n      {{x41300000 x446e2ab0}}\n      {{x41300000 x44702ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446f0000 x4462c000 x3cf7ffec}\n       {x446fc000 x445fc000 x3d33fffd}\n       {x446e0000 x4463c000 x3e9e7ff6}\n       {x446fc000 x4466c000 x3eaa8006}\n       {x44704000 x44668000 x3ea80000}\n       {x44698000 x446cc000 x3ea3ffef}}}\n     {t\n      {{x41300000 x446e6000}}\n      {{x41300000 x44656000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44780000 x44648000 x3d0c0003}\n       {x447b0000 x44624000 x3d1bfff6}\n       {x447c0000 x44618000 x3da60002}\n       {x447c0000 x44620000 x3e9d7ffa}\n       {x44788000 x44610000 x3ecc7ffe}\n       {x44780000 x44620000 x3ec1800a}\n       {x44768000 x4463c000 x3ec0800f}\n       {x44744000 x4462c000 x3e78fffc}}}\n     {t\n      {{x41300000 x4478c800}}\n      {{x41300000 x44627800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447ac000 x4455c000 x3cf0000d}\n       {x447b8000 x44554000 x3d1bfff6}\n       {x44794000 x44580000 x3e71fff8}\n       {x44788000 x4459c000 x3e600000}\n       {x44794000 x44594000 x3e6cffeb}\n       {x447c0000 x44570000 x3e957ffa}\n       {x447d0000 x44564000 x3e95000d}\n       {x447c0000 x4456c000 x3e7afff3}\n       {x447c0000 x44570000 x3e7effe3}\n       {x447dc000 x44554000 x3eaafff3}\n       {x447f8000 x44538000 x3ea57ffa}\n       {x447ec000 x4454c000 x3e8e7ff6}\n       {x447d4000 x44564000 x3e9d000d}\n       {x447e4000 x4454c000 x3eb00000}\n       {x44808000 x44528000 x3e8e0008}}}\n     {t\n      {{x41300000 x447c7333}}\n      {{x41300000 x4456221d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4428c000 x44704000 x3d180007}\n       {x4427c000 x4471c000 x3d380007}\n       {x44270000 x44728000 x3e31001d}\n       {x44270000 x4474c000 x3e530015}}}\n     {t\n      {{x41300000 x4427a000}}\n      {{x41300000 x44725000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442dc000 x44644000 x3d1bfff6}\n       {x44314000 x445ec000 x3d380007}\n       {x4431c000 x445d8000 x3dfc0011}\n       {x44348000 x44590000 x3e0cffeb}\n       {x44340000 x44594000 x3d07fff9}}}\n     {t\n      {{x41300000 x4431d99a}}\n      {{x41300000 x445d599a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44294000 x4468c000 x3d0ffff3}\n       {x44260000 x44728000 x3d400000}\n       {x4423c000 x447a4000 x3d70000d}\n       {x44218000 x447b8000 x3e55000d}\n       {x441e8000 x447c8000 x3e500000}\n       {x441d8000 x44800000 x3e4e0008}\n       {x441d8000 x447f4000 x3e6a0019}\n       {x441d8000 x447ec000 0}}}\n     {t\n      {{x41300000 x44217000}}\n      {{x41300000 x44797000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441d8000 x44768000 x3c800000}\n       {x44204000 x44770000 x3d380007}\n       {x44254000 x446b0000 x3e070004}\n       {x44260000 x44704000 x3e31fff8}\n       {x4427c000 x44600000 x3ec67ff6}\n       {x4427c000 x44648000 x3ea77ff1}\n       {x44270000 x44728000 x3ea70004}\n       {x44278000 x44738000 x3ea80000}\n       {x4429c000 x446a0000 x3ea77ff1}\n       {x4429c000 x44648000 x3df40032}}}\n     {t\n      {{x41300000 x4425d99a}}\n      {{x41300000 x446cf99a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44198000 x44780000 x3d180007}\n       {x44190000 x44788000 x3d3bfff6}\n       {x44180000 x447c0000 x3dd80022}\n       {x44188000 x447c8000 x3e130015}\n       {x441a4000 x447b0000 x3e6cffeb}\n       {x441c8000 x44780000 x3e3a0019}}}\n     {t\n      {{x41300000 x4419a000}}\n      {{x41300000 x447a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440b8000 x447d4000 x3cf0000d}\n       {x44084000 x447f4000 x3d0c0003}\n       {x44044000 x4480c000 x3d7bfff6}}}\n     {t\n      {{x41300000 x44080000}}\n      {{x41300000 x447f551f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441a0000 x445b4000 x3ce0001b}\n       {x44174000 x44634000 x3d200000}\n       {x44140000 x4467c000 x3ece0008}\n       {x44138000 x4468c000 x3ecd7ffa}\n       {x44114000 x446d8000 x3ec8fffc}\n       {x44108000 x446e8000 x3ecc7ffe}\n       {x440f8000 x446fc000 x3ecd000d}\n       {x440ec000 x44740000 x3ec60008}\n       {x440dc000 x44744000 x3ec1800a}\n       {x440dc000 x44768000 x3eb1800a}\n       {x440c8000 x447a4000 x3eb9800a}\n       {x4409c000 x447dc000 x3ebafff3}\n       {x4409c000 x447d0000 x3eb70004}\n       {x440c0000 x4478c000 x3e5e0008}}}\n     {t\n      {{x41300000 x4410048b}}\n      {{x41300000 x4470848b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442c0000 x440dc000 x3e170004}\n       {x442c0000 x440ec000 x3ee28006}}}\n     {t\n      {{x41300000 x442c0000}}\n      {{x41300000 x440e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44100000 x4428c000 x3d73fffd}\n       {x440f8000 x4428c000 x3e7c0011}\n       {x44100000 x4428c000 x3e8d000d}}}\n     {t\n      {{x41300000 x440fd550}}\n      {{x41300000 x4428c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44134000 x440f8000 x3d9c0003}\n       {x4412c000 x440f8000 x3eac0011}\n       {x44114000 x44110000 x3ed00000}\n       {x44110000 x44140000 x3ec70004}\n       {x44100000 x44140000 x3ef28006}}}\n     {t\n      {{x41300000 x4411a666}}\n      {{x41300000 x4411999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44070000 x43fe0000 x3d67fff9}\n       {x44078000 x43fc0000 x3d8c0003}\n       {x44080000 x43fe8000 x3e9c0011}}}\n     {t\n      {{x41300000 x44078000}}\n      {{x41300000 x43fd8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441e0000 x43e30000 x3d180007}\n       {x441d8000 x43e30000 x3d33fffd}\n       {x441c8000 x43e38000 x3d920005}\n       {x441ac000 x43e38000 x3ea67ff6}\n       {x441a0000 x43e68000 x3f025ffa}\n       {x44188000 x43e90000 x3f02dff8}}}\n     {t\n      {{x41300000 x441b8ab0}}\n      {{x41300000 x43e4c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d18000 x4403c000 x3d73fffd}\n       {x43d18000 x44054000 x3e81800a}}}\n     {t\n      {{x41300000 x43d18000}}\n      {{x41300000 x44048000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c40000 x441e8000 x3d87fff9}\n       {x43c70000 x441e0000 x3e0cffeb}\n       {x43c60000 x441d8000 x3e730015}}}\n     {t\n      {{x41300000 x43c5aaa0}}\n      {{x41300000 x441e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43970000 x441c4000 x3d24000a}\n       {x43980000 x441e8000 x3e4effe3}}}\n     {t\n      {{x41300000 x43978000}}\n      {{x41300000 x441d6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439c8000 x441bc000 x3d780007}\n       {x439b0000 x441bc000 x3d87fff9}\n       {x43980000 x441d8000 x3dc00000}\n       {x43970000 x441c4000 x3eb70004}}}\n     {t\n      {{x41300000 x4399a000}}\n      {{x41300000 x441c5000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a30000 x44080000 x3d33fffd}\n       {x43a10000 x4408c000 x3d5bfff6}\n       {x43a20000 x44078000 x3ed9800a}\n       {x43a20000 x4409c000 x3e4c0011}}}\n     {t\n      {{x41300000 x43a20000}}\n      {{x41300000 x44088000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43900000 x43f08000 x3da20005}\n       {x438e0000 x43f30000 x3e2e0008}\n       {x438e0000 x43f40000 x3e55ffe7}}}\n     {t\n      {{x41300000 x438eaaa0}}\n      {{x41300000 x43f28000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43420000 x4400c000 x3d89fffe}\n       {x43410000 x44014000 x3d9dfffb}\n       {x433b0000 x44020000 x3e4e0008}\n       {x43380000 x44028000 x3ea9800a}\n       {x43380000 x44020000 0}}}\n     {t\n      {{x41300000 x433c6666}}\n      {{x41300000 x4401b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43650000 x43e38000 x3df5ffe7}\n       {x43630000 x43e48000 x3e8d000d}\n       {x435f0000 x43e38000 x3ea5000d}\n       {x435d0000 x43e78000 x3e5a0019}\n       {x43630000 x43e68000 x3e9e7ff6}\n       {x43630000 x43e48000 x3dcc0003}}}\n     {t\n      {{x41300000 x4361aac1}}\n      {{x41300000 x43e50000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43010000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c80000 x43b08000 x3e2afff3}\n       {x43c70000 x43b18000 x3e82fff3}}}\n     {t\n      {{x41300000 x43c78000}}\n      {{x41300000 x43b10000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x431c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e90000 x439c8000 x3d780007}\n       {x43ea0000 x439e8000 x3d83fffd}\n       {x43ea0000 x439c8000 x3eb2fff3}\n       {x43e68000 x439f8000 x3e95000d}\n       {x43e68000 x43a40000 x3eb9800a}\n       {x43e58000 x43a30000 x3cf0000d}}}\n     {t\n      {{x41300000 x43e7eaa0}}\n      {{x41300000 x439faaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x431c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ce0000 x43990000 x3d3bfff6}\n       {x43cd0000 x439b0000 x3df80022}\n       {x43cc8000 x43970000 x3ec80000}\n       {x43cb8000 x43980000 x3eab8002}\n       {x43ce0000 x43948000 x3ed2fff3}\n       {x43ce0000 x43938000 x3ebb8002}}}\n     {t\n      {{x41300000 x43cd2aa0}}\n      {{x41300000 x43972aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x431c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c28000 x43b50000 x3d3bfff6}\n       {x43c38000 x43b30000 x3d53fffd}}}\n     {t\n      {{x41300000 x43c30000}}\n      {{x41300000 x43b40000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x431c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4417c000 x42940000 x3d89fffe}\n       {x44198000 x42940000 x3e08fffc}\n       {x44114000 x42b80000 x3e730015}\n       {x44114000 x42ce0000 x3c800000}}}\n     {t\n      {{x41300000 x4414f000}}\n      {{x41300000 x42ab8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4427c000 x42180000 x3d47fff9}\n       {x442e8000 x41600000 x3e15ffe7}\n       {x44324000 x41b00000 x3e9a8006}\n       {x4435c000 x41b80000 x3e977ff1}\n       {x4436c000 x41300000 x3e9c0011}\n       {x44388000 x41300000 x3e98800f}\n       {x443a4000 x41100000 x3e98fffc}}}\n     {t\n      {{x41300000 x4433648b}}\n      {{x41300000 x4192491d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441c4000 x42740000 x3d400000}\n       {x441c8000 x42740000 x3da60002}\n       {x441d8000 x429a0000 x3e530015}\n       {x44234000 x431d0000 x3e8a8006}\n       {x44234000 x43270000 x3e67ffde}\n       {x44230000 x43340000 x3e07ffde}\n       {x4423c000 x434f0000 x3e81fff8}\n       {x44244000 x435a0000 x3e88fffc}\n       {x44254000 x43630000 x3e8c7ffe}\n       {x44270000 x437a0000 x3e90fffc}}}\n     {t\n      {{x41300000 x44220000}}\n      {{x41300000 x43208000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441ec000 x422c0000 x3db9fffe}\n       {x441e8000 x422c0000 x3e4c0011}\n       {x441f4000 x42340000 x3e6a0019}\n       {x44258000 x42b00000 x3e98fffc}\n       {x442c4000 x43030000 x3ec1800a}\n       {x44340000 x42e60000 x3eb0800f}\n       {x44354000 x42d00000 x3eb1800a}\n       {x44398000 x42fc0000 x3ead000d}\n       {x4439c000 x42fc0000 x3eac7ffe}\n       {x4435c000 x42d00000 x3eaf7ff1}\n       {x44338000 x42bc0000 x3eb47ffe}\n       {x4430c000 x42ac0000 x3eb60008}\n       {x44330000 x42d40000 x3eb0fffc}\n       {x4436c000 x430e0000 x3eaf7ff1}\n       {x44380000 x43120000 x3eb2fff3}\n       {x44350000 x42fc0000 x3eb8800f}\n       {x4436c000 x43090000 x3eb77ff1}\n       {x443c8000 x43380000 x3eb57ffa}\n       {x44404000 x43480000 x3eb67ff6}\n       {x443ec000 x43300000 x3eb77ff1}\n       {x443d0000 x43240000 x3eb57ffa}\n       {x443d0000 x43260000 x3eb80000}\n       {x443fc000 x43440000 x3eb0fffc}\n       {x44408000 x43560000 x3eac0011}\n       {x44418000 x43580000 x3e630015}\n       {x44450000 x436a0000 x3e4effe3}\n       {x44460000 x436e0000 x3b40000b}}}\n     {t\n      {{x41300000 x443617ae}}\n      {{x41300000 x430ae396}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3e828f5c g x3e828f5c b x3e828f5c ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44294000 x437c0000 x3d33fffd}\n       {x44270000 x43650000 x3d53fffd}\n       {x44268000 x435d0000 x3ec8fffc}\n       {x44260000 x436c0000 x3ec77ff1}\n       {x4427c000 x43710000 x3ebf7ff1}\n       {x44278000 x432b0000 x3ec47ffe}}}\n     {t\n      {{x41300000 x44275550}}\n      {{x41300000 x43610000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443c8000 x43660000 x3e05000d}\n       {x443e0000 x436e0000 x3e73ffef}\n       {x443fc000 x436f0000 x3e8e7ff6}\n       {x44350000 x435f0000 x3eb60008}\n       {x4430c000 x434f0000 x3ecd000d}\n       {x442dc000 x43440000 x3da20005}}}\n     {t\n      {{x41300000 x4437a000}}\n      {{x41300000 x435e2ac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444b8000 x436c0000 x3d4c0003}\n       {x444c4000 x43860000 x3d87fff9}}}\n     {t\n      {{x41300000 x444be000}}\n      {{x41300000 x437c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44484000 x435f0000 x3d87fff9}\n       {x444a0000 x43660000 x3e75000d}\n       {x444b8000 x43770000 x3ebd000d}}}\n     {t\n      {{x41300000 x4449eab0}}\n      {{x41300000 x4369553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44268000 x42c20000 x3d0ffff3}\n       {x44260000 x42ca0000 x3d4c0003}\n       {x44260000 x42c60000 x3e90800f}\n       {x442a8000 x428c0000 x3e9d7ffa}\n       {x442a0000 x429e0000 x3f0be005}\n       {x442a0000 x42f40000 x3f0d2008}\n       {x442e4000 x42c60000 x3f186003}\n       {x442b8000 x42be0000 x3f1edff8}\n       {x442dc000 x43090000 x3f252008}\n       {x44300000 x42e60000 x3f24e001}\n       {x442b0000 x42bc0000 x3f286003}\n       {x442cc000 x43000000 x3f2c9ff9}\n       {x44338000 x43150000 x3f2be005}\n       {x442f0000 x42d40000 x3f2be005}\n       {x442e8000 x42d00000 x3f2c6003}\n       {x44388000 x43100000 x3f28e001}\n       {x443bc000 x43070000 x3f1c9ff9}\n       {x44374000 x42c20000 x3f101ffb}\n       {x4439c000 x42f20000 x3f0f6007}\n       {x44418000 x432d0000 x3f0d5ffe}\n       {x4444c000 x433f0000 x3f0ddffc}\n       {x4442c000 x43320000 x3f0ddffc}\n       {x44434000 x43320000 x3ec2fff3}\n       {x44450000 x434f0000 x3ea9800a}\n       {x44450000 x43510000 x3e857ffa}\n       {x44468000 x435f0000 x3e838002}\n       {x44470000 x43660000 x3d64000a}}}\n     {t\n      {{x41300000 x44351ed9}}\n      {{x41300000 x4308553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44060000 x42b00000 x3d2c0003}\n       {x44068000 x42b40000 x3e1afff3}\n       {x44080000 x429e0000 x3ed80000}\n       {x44080000 x429a0000 x3efb8002}\n       {x44044000 x42b80000 x3ef8fffc}\n       {x44044000 x42b00000 x3f071fff}\n       {x44070000 x42900000 x3f071fff}\n       {x4405c000 x42b00000 x3f06dff8}\n       {x44054000 x42dc0000 x3f0a2004}\n       {x4409c000 x42ca0000 x3f192008}\n       {x44108000 x42a60000 x3f179ffd}}}\n     {t\n      {{x41300000 x440762e1}}\n      {{x41300000 x42b00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d18000 x43a68000 x3d47fff9}\n       {x43d38000 x43a88000 x3e15ffe7}\n       {x43d10000 x43a68000 x3f015ffe}\n       {x43c60000 x439d8000 x3f146003}\n       {x43cc8000 x43a10000 x3f215ffe}\n       {x43db8000 x43900000 x3f252008}\n       {x43df0000 x438a8000 x3f2be005}\n       {x43df0000 x43870000 x3f2edff8}\n       {x43e00000 x43850000 x3f2e2004}\n       {x43e48000 x43770000 x3f189ff9}}}\n     {t\n      {{x41300000 x43d70ccd}}\n      {{x41300000 x43956666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d80000 x43c98000 x3d780007}\n       {x43e20000 x43c50000 x3e91800a}}}\n     {t\n      {{x41300000 x43dd0000}}\n      {{x41300000 x43c74000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bf8000 x43ca8000 x3d53fffd}\n       {x43bf0000 x43cf0000 x3e5afff3}\n       {x43bd0000 x43cf0000 x3ea9fff8}\n       {x43ba8000 x43d10000 x3ecf0004}\n       {x43bd0000 x43d10000 x3f149ff9}\n       {x43c28000 x43d10000 x3f17e005}\n       {x43c40000 x43ce0000 x3f1c9ff9}\n       {x43c88000 x43ce0000 x3f1c1ffb}\n       {x43cf0000 x43cb8000 x3f0e2004}\n       {x43d00000 x43cb8000 0}}}\n     {t\n      {{x41300000 x43c34ccd}}\n      {{x41300000 x43ce4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b78000 x4462c000 x3dc20005}\n       {x43b60000 x44660000 x3eb1800a}\n       {x43b40000 x4467c000 x3f162004}}}\n     {t\n      {{x41300000 x43b5d560}}\n      {{x41300000 x44658000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43928000 x44530000 x3e31fff8}\n       {x43920000 x44538000 x3ec77ff1}\n       {x43900000 x44528000 x3f006003}\n       {x43928000 x44530000 x3f06a002}}}\n     {t\n      {{x41300000 x4391c000}}\n      {{x41300000 x44530000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c38000 x4439c000 x3d70000d}\n       {x43c18000 x443c0000 x3d800000}\n       {x43c08000 x443e4000 x3eef7ff1}\n       {x43b98000 x44420000 x3f195ffe}\n       {x43b78000 x444b8000 x3ef47ffe}\n       {x43bb0000 x444f8000 x3f012008}\n       {x43b98000 x44504000 x3f165ffa}\n       {x43b98000 x4455c000 x3f149ff9}\n       {x43b68000 x44564000 x3d53fffd}}}\n     {t\n      {{x41300000 x43bbe396}}\n      {{x41300000 x44489550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439f8000 x4435c000 x3dc3fffd}\n       {x43a00000 x4435c000 x3e9d000d}\n       {x439c8000 x4435c000 x3f02a002}\n       {x439b0000 x44374000 x3e80fffc}\n       {x439b0000 x4436c000 x3f10e001}\n       {x43980000 x4435c000 x3f1ce001}}}\n     {t\n      {{x41300000 x439c5560}}\n      {{x41300000 x44362ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c28000 x441fc000 x3d87fff9}\n       {x43c40000 x441f4000 x3e48fffc}\n       {x43c50000 x441f4000 x3eeb8002}\n       {x43c60000 x441f4000 x3f15a006}\n       {x43c60000 x441fc000 x3f1a5ffa}\n       {x43c60000 x4420c000 x3f1aa002}\n       {x43c38000 x441fc000 x3ef8fffc}}}\n     {t\n      {{x41300000 x43c4b6e9}}\n      {{x41300000 x441fadb2}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43980000 x44190000 x3d99fffe}\n       {x43990000 x44198000 x3de00000}\n       {x43958000 x441a4000 x3ea00000}\n       {x43958000 x441b4000 x3ecc7ffe}\n       {x43970000 x44190000 x3eff0004}\n       {x43970000 x441a0000 x3efe7ff6}\n       {x43970000 x441ac000 x3eed7ffa}}}\n     {t\n      {{x41300000 x43970000}}\n      {{x41300000 x4419f6d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43430000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a90000 x4404c000 x3db9fffe}\n       {x43a90000 x44054000 x3e0effe3}\n       {x43a90000 x44060000 x3eae7ff6}\n       {x43a90000 x4403c000 x3ef8800f}\n       {x43a58000 x44054000 x3eee7ff6}\n       {x43a78000 x4405c000 x3ef8800f}\n       {x43aa0000 x4404c000 x3d580007}}}\n     {t\n      {{x41300000 x43a86db2}}\n      {{x41300000 x4405124e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x428e0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ce0000 x44204000 x3d27fff9}\n       {x43ce0000 x44210000 x3d780007}\n       {x43cf0000 x441f4000 x3edafff3}\n       {x43ce0000 x441e8000 x3ef47ffe}\n       {x43c98000 x44218000 x3ef47ffe}\n       {x43c98000 x44220000 x3f041ffb}\n       {x43ca8000 x44204000 x3ef77ff1}}}\n     {t\n      {{x41300000 x43cc5b64}}\n      {{x41300000 x4420648b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x428e0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43968000 x441fc000 x3dadfffb}\n       {x43970000 x441ec000 x3ece0008}\n       {x43980000 x441f4000 x3ed28006}\n       {x43980000 x441ec000 x3ee3ffef}\n       {x439a0000 x441d0000 x3ef60008}\n       {x439a0000 x441e8000 x3eea8006}\n       {x439a0000 x441e0000 x3eb8800f}}}\n     {t\n      {{x41300000 x43988000}}\n      {{x41300000 x441e924e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x428e0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43990000 x440f0000 x3de6002a}\n       {x439b0000 x44110000 x3de6002a}\n       {x43a20000 x440b8000 x3ec28006}\n       {x43a10000 x440b0000 x3ecf7ff1}\n       {x43a48000 x440a4000 x3ee9800a}\n       {x43a10000 x440c0000 x3ef38002}\n       {x43a00000 x440c8000 0}}}\n     {t\n      {{x41300000 x439f8000}}\n      {{x41300000 x440cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x422c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cb8000 x4424c000 x3d73fffd}\n       {x43c88000 x4423c000 x3d780007}\n       {x43c88000 x4424c000 x3ea0fffc}\n       {x43c60000 x441fc000 x3ede0008}\n       {x43c60000 x44220000 x3ecc0011}\n       {x43c60000 x44228000 x3e6effe3}}}\n     {t\n      {{x41300000 x43c7c000}}\n      {{x41300000 x4422eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x422c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43990000 x441f4000 x3d13fffd}\n       {x43990000 x441fc000 x3d8c0003}\n       {x43990000 x441f4000 x3e977ff1}\n       {x43990000 x441ec000 x3ebd7ffa}\n       {x439a0000 x441fc000 x3eb47ffe}\n       {x439b0000 x441ec000 x3eb8800f}\n       {x439b0000 x441e8000 0}}}\n     {t\n      {{x41300000 x4399b6e9}}\n      {{x41300000 x441f248b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x422c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a28000 x44620000 x3ca7fff9}\n       {x44a2e000 x44620000 x3d5bfff6}\n       {x44a3c000 x44610000 x3dd1fff8}\n       {x44a64000 x4467c000 x3e800000}\n       {x44a72000 x446d8000 x3e82fff3}}}\n     {t\n      {{x41300000 x44a48000}}\n      {{x41300000 x44654000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4487e000 x43920000 x3d1bfff6}\n       {x448c0000 x43838000 x3d820005}\n       {x448b8000 x43958000 x3e6a0019}\n       {x448d8000 x43800000 x3e9b8002}\n       {x448d4000 x43800000 x3e877ff1}\n       {x448f6000 x43730000 x3e3a0019}\n       {x44912000 x43650000 x3e380022}}}\n     {t\n      {{x41300000 x448cf23d}}\n      {{x41300000 x43834917}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44830000 x43928000 x3d27fff9}\n       {x44878000 x438d8000 x3d53fffd}}}\n     {t\n      {{x41300000 x44854000}}\n      {{x41300000 x43900000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44778000 x43ae8000 x3cf0000d}\n       {x4478c000 x43ab0000 x3d2c0003}\n       {x447c0000 x43a58000 x3d400000}\n       {x44800000 x43a30000 x3d380007}\n       {x4481a000 x439e8000 x3d3bfff6}}}\n     {t\n      {{x41300000 x447cb333}}\n      {{x41300000 x43a68000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446bc000 x43bc0000 x3d0ffff3}\n       {x446c4000 x43bf0000 x3d380007}\n       {x44740000 x43bd0000 x3e870004}\n       {x4475c000 x43b20000 x3da7fff9}}}\n     {t\n      {{x41300000 x44707000}}\n      {{x41300000 x43ba8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4444c000 x4431c000 x3d99fffe}\n       {x444cc000 x44218000 x3e15ffe7}}}\n     {t\n      {{x41300000 x4448c000}}\n      {{x41300000 x4429a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44866000 x44728000 x3d04000a}\n       {x4487a000 x44714000 x3d27fff9}\n       {x44856000 x446d8000 x3e80fffc}\n       {x44800000 x446d8000 x3e9c0011}\n       {x446f8000 x44728000 x3ea67ff6}\n       {x446e8000 x4474c000 x3ea0800f}\n       {x44660000 x446b0000 x3e977ff1}\n       {x44570000 x44668000 x3e800000}\n       {x444dc000 x44660000 x3e80fffc}\n       {x444a8000 x44624000 x3dc00000}\n       {x443d0000 x44564000 x3e2c0011}\n       {x443ac000 x44538000 x3e45ffe7}\n       {x443c8000 x44538000 x3e48fffc}\n       {x443ac000 x444b8000 x3e45000d}\n       {x443ac000 x44484000 0}}}\n     {t\n      {{x41300000 x445e1de3}}\n      {{x41300000 x44634000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d42000 x443c8000 x3d47fff9}\n       {x44d40000 x44404000 x3e070004}\n       {x44d06000 x44350000 x3ec2fff3}\n       {x44ce6000 x44314000 x3e7c0011}\n       {x44cb0000 x44340000 x3e900000}}}\n     {t\n      {{x41300000 x44d06000}}\n      {{x41300000 x4437cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f54000 x4455c000 x3d0c0003}\n       {x44f58000 x44564000 x3d4c0003}\n       {x44f50000 x445b8000 x3e51001d}\n       {x44f2c000 x44658000 x3ebe7ff6}\n       {x44f16000 x446b0000 x3ec8fffc}\n       {x44eb6000 x4466c000 x3ebd000d}\n       {x44e80000 x44648000 x3eae7ff6}\n       {x44e46000 x44644000 x3eb3ffef}\n       {x44e1a000 x44610000 x3eb28006}\n       {x44dda000 x44554000 x3eb3ffef}\n       {x44dcc000 x44540000 x3e99800a}\n       {x44dc0000 x44540000 x3c980007}}}\n     {t\n      {{x41300000 x44e9a28f}}\n      {{x41300000 x445dd000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f08000 x44060000 x3cf7ffec}\n       {x44f1e000 x44228000 x3d70000d}}}\n     {t\n      {{x41300000 x44f13000}}\n      {{x41300000 x44144000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eae000 x43a40000 x3d33fffd}\n       {x44ea0000 x43ab0000 x3d780007}\n       {x44e8e000 x43b98000 x3e81fff8}\n       {x44ec4000 x43ce0000 x3ec28006}\n       {x44ef2000 x43d18000 x3eca8006}\n       {x44f02000 x43fe0000 x3ec9fff8}}}\n     {t\n      {{x41300000 x44ec3571}}\n      {{x41300000 x43c65560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f14000 x426c0000 x3dc60002}\n       {x44f14000 x42680000 x3e7afff3}\n       {x44f1a000 x42240000 x3e9f0004}\n       {x44f3a000 x40800000 x3ebd000d}\n       {x44f38000 0 x3d83fffd}}}\n     {t\n      {{x41300000 x44f24000}}\n      {{x41300000 x4201999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ca4000 x43a48000 x3da9fffe}\n       {x44f6e000 x435a0000 x3e870004}\n       {x44f78000 x431b0000 x3e65000d}}}\n     {t\n      {{x41300000 x44e83571}}\n      {{x41300000 x436a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c38000 x42ac0000 x3d0c0003}\n       {x44c58000 x42180000 x3d580007}}}\n     {t\n      {{x41300000 x44c48000}}\n      {{x41300000 x42780000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a16000 x43f40000 x3d900000}\n       {x44a24000 x43fc0000 x3e5cffeb}\n       {x44b32000 x43e20000 x3ea1fff8}\n       {x44bc6000 x43db8000 x3ea67ff6}\n       {x44bac000 x43c08000 x3ead000d}\n       {x44b7e000 x43bd0000 x3ea67ff6}\n       {x44aea000 x43b50000 x3ea00000}\n       {x44a8c000 x43970000 x3e71fff8}\n       {x44b0a000 x438c8000 x3ea1fff8}\n       {x44ba8000 x43800000 x3e9d000d}\n       {x44b8c000 x436c0000 x3c980007}\n       {x44ad4000 x43410000 x3d800000}\n       {x44a7a000 x43440000 x3e2a0019}\n       {x44a68000 x43750000 x3e5e0008}\n       {x44a7a000 x436f0000 x3e58fffc}\n       {x44ac6000 x43320000 x3e8d000d}\n       {x44b06000 x432d0000 x3e7e0008}\n       {x44bea000 x43050000 x3e330015}\n       {x44bfc000 x42ea0000 x3e11001d}\n       {x44c10000 x42d40000 x3db60002}}}\n     {t\n      {{x41300000 x44b19b33}}\n      {{x41300000 x438d9333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aca000 x44070000 x3d7bfff6}\n       {x44abe000 x44028000 x3e2afff3}\n       {x44aa6000 x43fe0000 x3dadfffb}}}\n     {t\n      {{x41300000 x44aba000}}\n      {{x41300000 x4402d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44974000 x441a4000 x3d820005}\n       {x44974000 x441d0000 x3dd80022}\n       {x44962000 x44220000 x3e1c0011}\n       {x449ac000 x4430c000 x3e89fff8}\n       {x449f8000 x44388000 x3e98800f}\n       {x44a8c000 x44350000 x3ea0fffc}\n       {x44ad8000 x4424c000 x3e9d7ffa}}}\n     {t\n      {{x41300000 x449e723d}}\n      {{x41300000 x44289b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44378000 x44494000 x3da20005}\n       {x443bc000 x44578000 x3e31001d}}}\n     {t\n      {{x41300000 x4439a000}}\n      {{x41300000 x44506000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44564000 x43e20000 x3e3effe3}\n       {x4463c000 x43ca8000 x3e91fff8}}}\n     {t\n      {{x41300000 x445d0000}}\n      {{x41300000 x43d64000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442e4000 x445a4000 x3e5afff3}\n       {x442f0000 x44590000 x3e65ffe7}\n       {x443ac000 x44228000 x3e6c0011}\n       {x443f4000 x43fa0000 x3ed1fff8}\n       {x44420000 x43db8000 x3ec8fffc}\n       {x44474000 x43b18000 x3ebd7ffa}\n       {x4448c000 x43a40000 x3eb9fff8}\n       {x44468000 x43a10000 x3d07fff9}}}\n     {t\n      {{x41300000 x443df800}}\n      {{x41300000 x44077800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4403c000 x446fc000 x3ccffff3}\n       {x44018000 x44690000 x3e71001d}\n       {x4403c000 x441e0000 x3edf7ff1}\n       {x441ac000 x439f8000 x3f06dff8}\n       {x4423c000 x43800000 x3eff0004}\n       {x4427c000 x43510000 x3ee38002}}}\n     {t\n      {{x41300000 x44128ab0}}\n      {{x41300000 x4409cab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b50000 x4480e000 x3e61fff8}\n       {x43ab0000 x4478c000 x3e860008}\n       {x43a88000 x44740000 x3ee9fff8}\n       {x439f8000 x44514000 x3ef2fff3}\n       {x43b40000 x4404c000 x3f0adff8}\n       {x43d48000 x43b20000 x3f195ffe}\n       {x44038000 x43240000 x3f181ffb}\n       {x440e4000 x42ca0000 x3f112008}\n       {x441ac000 xc0800000 x3f089ff9}\n       {x44244000 xc2440000 x3ee5000d}\n       {x442a8000 xc2980000 x3e5e0008}}}\n     {t\n      {{x41300000 x43ec45c3}}\n      {{x41300000 x43dd0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43240000 x4400c000 x3e100000}\n       {x43460000 x43d28000 x3e41001d}\n       {x43b40000 x43140000 x3e99800a}\n       {x43ce0000 x426c0000 x3ece7ff6}\n       {x43e78000 xc1500000 x3ed80000}}}\n     {t\n      {{x41300000 x439fb333}}\n      {{x41300000 x43620000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x430e0000 x44866000 x3d44000a}\n       {x43100000 x4486c000 x3e3cffeb}\n       {x43120000 x44868000 x3e838002}\n       {x43100000 x44832000 x3ea0fffc}\n       {x43020000 x445dc000 x3ed9800a}\n       {x430c0000 x443d0000 x3f0d2008}\n       {x43170000 x4431c000 x3f131fff}\n       {x437a0000 x43ef8000 x3f149ff9}\n       {x43ad0000 x439a0000 x3f1c9ff9}\n       {x43e58000 x43050000 x3f1e2004}\n       {x43e90000 x42ea0000 x3f1a5ffa}\n       {x43f58000 x428c0000 x3f1a2004}\n       {x440f8000 xc1500000 x3f17e005}\n       {x441a0000 xc2440000 x3f0ddffc}\n       {x44278000 xc2b00000 x3f041ffb}\n       {x442b0000 xc2ca0000 x3ec67ff6}}}\n     {t\n      {{x41300000 x43ad87f0}}\n      {{x41300000 x43ea0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42b40000 x4478c000 x3d4c0003}\n       {x42b80000 x44788000 x3e1c0011}\n       {x42b80000 x44634000 x3ebb8002}\n       {x42940000 x44418000 x3ef57ffa}\n       {x42480000 x44068000 x3f086003}\n       {x426c0000 x43e48000 x3f181ffb}\n       {x42b40000 x43970000 x3f18e001}\n       {x42d40000 x43730000 x3f1da006}\n       {x43020000 x42f80000 x3f1d5ffe}\n       {x43030000 x42860000 x3f1be005}\n       {x431e0000 xc0e00000 x3f1b9ffd}\n       {x43320000 xc2480000 x3f18e001}\n       {x43630000 xc2ca0000 x3f181ffb}\n       {x43660000 xc2d40000 x3cb0000d}}}\n     {t\n      {{x41300000 x42f3dba6}}\n      {{x41300000 x43b78917}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3dd70a3d g x3dd70a3d b x3dd70a3d ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x43f40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {selectAll {\n  { selectAll bs 151 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0.39 g 0.39 b 0.39 opc 0.3 bs 49 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur bs 139 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 20 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear bs 151 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 25 }\n} }\n  toolbar_brush_size 151\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_effect_parameter1 1\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  color {0.2450000048 0.2450000048 0.2450000048 1}\n  colorOverlay {0 0 0 0}\n  opacity 0.3000000119\n  lifetime_type \"all frames\"\n  lifetime_start 11\n  lifetime_end 11\n  motionblur_on true\n  brush_size 83\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint6\n  xpos 2100\n  ypos 14820\n  disable {{parent.RotoPaint5.disable}}\n }\n FrameHold {\n  name FrameHold1\n  xpos 2100\n  ypos 14875\n }\n Noise {\n  inputs 0\n  size 7.6\n  center {960 540}\n  name Noise3\n  xpos 2398\n  ypos 14787\n }\n Noise {\n  inputs 0\n  size 185\n  center {960 540}\n  name Noise1\n  xpos 2398\n  ypos 14749\n }\npush $Ne1809000\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 0}\n    {t x44700000 x44070000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush213 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42c40000 x44150000 1}\n       {x42880000 x44168000 x3ef53d4f}\n       {x41b00000 x44198000 x3f25a96a}\n       {x42000000 x44198000 x3f29ea7b}\n       {x42c80000 x44150000 x3f39ee7c}\n       {x43200000 x44110000 x3f43b0ec}\n       {x43cd0000 x44008000 x3f51344d}\n       {x44460000 x43d40000 x3f5af6be}\n       {x445a0000 x43cb0000 x3f5ab6ae}\n       {x44888000 x43ae0000 x3f3f6fdc}\n       {x448fc000 x43980000 x3e703c0f}}}\n     {tx x42780000 x43da0000 x43fe745d}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush212 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2a80000 x43f50000 1}\n       {xc28c0000 x43f50000 x3ef83e10}\n       {xc2400000 x43f50000 x3efdbf70}\n       {x42a80000 x43ec0000 x3f14e539}\n       {x43120000 x43e80000 x3f23a8ea}\n       {x43910000 x43dc0000 x3f41304c}\n       {x43de0000 x43d00000 x3f5334cd}\n       {x443a0000 x43b60000 x3f62789e}\n       {x44490000 x43b00000 x3f62789e}\n       {x44710000 x43970000 x3f44310c}\n       {x447c8000 x438c0000 0}}}\n     {tx x42780000 x43c2ba2f x43cf45d1}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush211 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42600000 x43d90000 1}\n       {x43100000 x43cc0000 x3f24691a}\n       {x43780000 x43c50000 x3f3feffc}\n       {x439a0000 x43c20000 x3f4b32cd}\n       {x440f0000 x43bc0000 x3f5a368e}\n       {x44420000 x43bc0000 x3f30ec3b}\n       {x444d0000 x43bf0000 0}}}\n     {tx x42780000 x43d0db6e x43c50000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush210 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44038000 x43820000 1}\n       {x43fa0000 x437c0000 x3f0f23c9}\n       {x43cd0000 x435c0000 x3f18a62a}\n       {x43ba0000 x43500000 x3f1de77a}\n       {x43910000 x433c0000 x3f2aaaab}\n       {x42f00000 x430c0000 x3f3b6edc}\n       {x42a40000 x43000000 x3f3d2f4c}\n       {xc1a00000 x42c80000 x3f24a92a}\n       {xc2080000 x42d40000 0}}}\n     {tx x42780000 x43798e39 x43320000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush209 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c8c000 x445d0000 1}\n       {x44ca0000 x44600000 x3ec0300c}\n       {x44ca0000 x44608000 x3ed5354d}\n       {x44c58000 x445d8000 x3f1765d9}\n       {x44b9c000 x44500000 x3f2a2a8b}\n       {x44a1c000 x44308000 x3f41705c}\n       {x449a0000 x44258000 x3f46318c}\n       {x44690000 x43eb0000 x3f4df37d}\n       {x44288000 x43940000 x3f50b42d}\n       {x441b0000 x43830000 x3f51745d}\n       {x43fb0000 x43320000 x3f4bb2ed}\n       {x44060000 x43380000 x3e8d2349}}}\n     {tx x42780000 x448ea555 x44150aab}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush208 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44dac000 x446c0000 1}\n       {x44d80000 x446a0000 x3efebfb0}\n       {x44d18000 x44660000 x3f0721c8}\n       {x44cd8000 x44630000 x3f18661a}\n       {x44c20000 x445b0000 x3f386e1c}\n       {x44ba8000 x44558000 x3f41b06c}\n       {x449c8000 x443d0000 x3f5c771e}\n       {x444f0000 x440b0000 x3f6dbb6f}\n       {x44368000 x43fc0000 x3f6e3b8f}\n       {x43d00000 x43a70000 x3f5ef7be}\n       {x438c0000 x437a0000 x3f0ee3b9}\n       {x43890000 x43720000 0}}}\n     {tx x42780000 x448de555 x44285555}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush207 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440a8000 x44608000 1}\n       {x44120000 x44648000 x3f14a529}\n       {x44420000 x44738000 x3f24290a}\n       {x44528000 x44770000 x3f372dcb}\n       {x44884000 x44810000 x3f55755d}\n       {x44a78000 x44858000 x3f57f5fd}\n       {x44c1c000 x44878000 x3f396e5c}\n       {x44c50000 x44880000 x3f1da76a}\n       {x44c7c000 x44880000 0}}}\n     {tx x42780000 x4489a38e x447db8e4}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush206 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43480000 x443e0000 1}\n       {x43240000 x443d8000 x3f06e1b8}\n       {x42d00000 x443d0000 x3ee9ba6f}\n       {x42c40000 x443d8000 x3f106419}\n       {x42ec0000 x44428000 x3f2769da}\n       {x434e0000 x444b8000 x3f36edbb}\n       {x44060000 x44630000 x3f42f0bc}\n       {x441f8000 x44680000 x3f4af2bd}\n       {x4486c000 x447c0000 x3f5ff7fe}\n       {x44bbc000 x44824000 x3f4f33cd}\n       {x44c14000 x44824000 x3f3cef3c}\n       {x44c58000 x44818000 x3f18a62a}\n       {x44c74000 x44808000 0}}}\n     {tx x42780000 x443413b1 x445f6276}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush205 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42d00000 x445a8000 1}\n       {x43200000 x445a8000 1}\n       {x43680000 x445a8000 x3edfb7ee}\n       {x43cb0000 x445a8000 x3f106419}\n       {x43fb0000 x445a8000 x3f1ea7aa}\n       {x442c0000 x445a8000 x3f20a82a}\n       {x44550000 x44588000 0}}}\n     {tx x42780000 x43d24925 x445a36db}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush204 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc3480000 x445e0000 1}\n       {xc36c0000 x445d8000 x3ee2388e}\n       {xc3620000 x445d8000 x3f05a168}\n       {xc3260000 x445d8000 x3f1364d9}\n       {xc2f00000 x445d8000 x3f1a268a}\n       {xc2700000 x445d8000 x3f20280a}\n       {x41000000 x445e0000 x3f2beafb}\n       {x42ac0000 x445e8000 x3f346d1b}\n       {x43280000 x44600000 x3f3b6edc}\n       {x437a0000 x44608000 x3f44f13c}\n       {x43f60000 x44638000 x3f4eb3ad}\n       {x442e8000 x44640000 x3f2b6adb}\n       {x44338000 x44648000 x3f08a229}\n       {x44348000 x44648000 0}}}\n     {tx x42780000 x43186db7 x445fedb7}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush203 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43940000 x44438000 x3e46318c}\n       {x438e0000 x44480000 x3e46318c}\n       {x43890000 x444d0000 x3e812048}\n       {x43880000 x444f8000 x3ea0280a}\n       {x43880000 x44550000 x3ec9324d}\n       {x438a0000 x44590000 x3f006018}\n       {x43900000 x445a8000 x3f0de379}\n       {x43c00000 x44550000 x3f35ed7b}\n       {x44038000 x443e0000 x3f3b2ecc}\n       {x441a0000 x44318000 x3eeebbaf}\n       {x441c8000 x44310000 x3e89a269}}}\n     {tx x42780000 x43bb0000 x444945d1}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush202 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44230000 x444a0000 1}\n       {x44200000 x444b0000 x3e693a4f}\n       {x44198000 x444c8000 x3e22288a}\n       {x44158000 x444c8000 0}}}\n     {tx x42780000 x441c8000 x444b8000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush201 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43880000 x43b90000 1}\n       {x43830000 x43b90000 x3ef33ccf}\n       {x43830000 x43ba0000 x3ee7b9ee}\n       {x43c00000 x43dd0000 x3f0e6399}\n       {x44060000 x43fe0000 x3f2368da}\n       {x44610000 x44220000 x3f39ae6c}\n       {x44760000 x442a0000 x3f39ae6c}\n       {x44934000 x44380000 x3e49324d}}}\n     {tx x42780000 x44155000 x4400f000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush200 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43b60000 x43620000 1}\n       {x43a30000 x435a0000 x3f35ad6b}\n       {x43920000 x43600000 x3f362d8b}\n       {x43a40000 x43830000 x3f3a2e8c}\n       {x44100000 x43cc0000 x3f3c6f1c}\n       {x44250000 x43e30000 x3f3c2f0c}\n       {x44800000 x441d0000 x3f3caf2c}\n       {x44a38000 x443a0000 x3f1f27ca}\n       {x44a80000 x443d8000 x3efebfb0}\n       {x44aac000 x443f8000 0}}}\n     {tx x42780000 x443db333 x43ea6666}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush199 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43880000 x43080000 1}\n       {x43780000 x43040000 1}\n       {x435c0000 x43040000 x3f2deb7b}\n       {x43720000 x43120000 x3f2fabeb}\n       {x43c20000 x43660000 x3f322c8b}\n       {x44200000 x43b30000 x3f2e2b8b}\n       {x44814000 x44068000 x3f312c4b}\n       {x448d0000 x440f8000 x3f2e2b8b}\n       {x44a9c000 x44258000 x3ea1a86a}\n       {x44ac0000 x44260000 0}}}\n     {tx x42780000 x442ca666 x43b2999a}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush198 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44970000 x43880000 1}\n       {x44944000 x43840000 x3e4d334d}\n       {x448c0000 x43740000 x3e85a168}\n       {x44860000 x43680000 x3ea5a96a}\n       {x446c8000 x434a0000 x3efbbef0}\n       {x445a0000 x43380000 x3f11e479}\n       {x44308000 x430e0000 x3f2769da}\n       {x44198000 x42ec0000 x3f34ed3b}\n       {x43740000 x41c00000 x3f5d374e}\n       {x432a0000 x41000000 x3f62789e}\n       {xc2600000 xc2480000 x3f69ba6f}\n       {xc2e00000 xc2780000 x3f687a1f}\n       {xc1a00000 xc1d00000 x3f25695a}\n       {x41c00000 xc1400000 x3efebfb0}\n       {x42900000 x40800000 0}}}\n     {tx x42780000 x4406199a x42cdddde}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush197 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44650000 x43320000 1}\n       {x44580000 x432a0000 x3eb0ac2b}\n       {x44400000 x43180000 x3eb12c4b}\n       {x44350000 x43100000 x3ebfafec}\n       {x441f8000 x42f80000 x3eedbb6f}\n       {x44158000 x42e80000 x3f01a068}\n       {x44020000 x42c40000 x3f14a529}\n       {x43f40000 x42b80000 x3f18a62a}\n       {x43c10000 x42a00000 x3f152549}\n       {x43ba0000 x42a00000 x3f106419}\n       {x43b60000 x42a80000 x3efcbf30}\n       {x43cd0000 x42c40000 0}}}\n     {tx x42780000 x4412d555 x42ec0000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush196 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44bbc000 x43bb0000 1}\n       {x44bb0000 x43b90000 x3f056158}\n       {x44bd8000 x43970000 x3f326c9b}\n       {x44c10000 x436c0000 x3f41705c}\n       {x44c88000 x42d00000 x3f50b42d}\n       {x44ce8000 x41a00000 x3f58761e}\n       {x44d00000 x40800000 x3f57b5ed}\n       {x44d34000 xc1400000 x3f396e5c}\n       {x44d1c000 x41600000 x3e773dcf}}}\n     {tx x42780000 x44c74000 x431ce38e}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush195 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c2c000 x438f0000 x3f17e5f9}\n       {x44c20000 x43840000 1}\n       {x44c30000 x43780000 x3f17e5f9}\n       {x44c94000 x433e0000 x3f34ed3b}\n       {x44ce8000 x43180000 x3f44310c}\n       {x44d38000 x42ec0000 x3f48320d}\n       {x44d58000 x42d00000 x3f48721d}\n       {x44db8000 x42800000 x3f3eefbc}\n       {x44dc4000 x42900000 x3eeabaaf}\n       {x44dac000 x42a40000 0}}}\n     {tx x42780000 x44cf8000 x431e0000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush194 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44cd4000 x43cc0000 1}\n       {x44cd4000 x43c70000 1}\n       {x44cf4000 x43b90000 x3ed1344d}\n       {x44d1c000 x43b00000 x3f00e038}\n       {x44d78000 x43a00000 x3f1e679a}\n       {x44db0000 x43970000 x3f286a1b}\n       {x44e5c000 x43800000 x3f39ee7c}\n       {x44f20000 x434a0000 x3f3cef3c}\n       {x44f44000 x43300000 x3f09a269}\n       {x44f04000 x43360000 0}}}\n     {tx x42780000 x44ddd333 x43944ccd}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush193 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c80000 x44020000 1}\n       {x44c90000 x44020000 x3ec2b0ac}\n       {x44ca4000 x44020000 x3ec5314c}\n       {x44cdc000 x44020000 x3f026098}\n       {x44d20000 x44020000 x3f1fa7ea}\n       {x44d48000 x44010000 x3f2a2a8b}\n       {x44dd0000 x43ea0000 x3f3def7c}\n       {x44e68000 x43bf0000 x3f40300c}\n       {x44e8c000 x43b30000 x3f3d2f4c}\n       {x44ef0000 x43970000 x3f2368da}\n       {x44f18000 x43920000 x3f13a4e9}\n       {x44f58000 x43900000 0}}}\n     {tx x42780000 x44dc2555 x43d8eaab}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush192 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a08000 x43ad0000 1}\n       {x449f4000 x43ac0000 x3f19264a}\n       {x449ec000 x43ac0000 x3f086219}\n       {x44a0c000 x43b20000 x3ef43d0f}\n       {x44b2c000 x43d10000 x3f046118}\n       {x44c1c000 x43e60000 x3f06e1b8}\n       {x44c94000 x43f20000 x3f0da369}\n       {x44e40000 x440a8000 x3f19665a}\n       {x44f34000 x44150000 x3f0761d8}\n       {x44f48000 x44170000 0}}}\n     {tx x42780000 x44c0e000 x43e14ccd}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush191 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a38000 x43ba0000 x3e0a2289}\n       {x449d0000 x43b00000 x3e162589}\n       {x448b4000 x43960000 x3ea9aa6b}\n       {x44870000 x43900000 x3ec7b1ec}\n       {x44840000 x438c0000 x3ee6398e}\n       {x44828000 x438a0000 x3efb3ed0}\n       {x44898000 x43920000 x3ee739ce}\n       {x448c8000 x43960000 x3ed5b56d}\n       {x449b8000 x43aa0000 x3ea92a4b}\n       {x44ac0000 x43c20000 x3ef6bdaf}\n       {x44b0c000 x43ca0000 x3f0c6319}\n       {x44c88000 x43ec0000 x3f2d6b5b}\n       {x44e54000 x440b0000 x3f2ceb3b}\n       {x44ed0000 x44100000 x3f28aa2b}\n       {x45010000 x441b0000 x3f0da369}\n       {x4501a000 x441b0000 0}}}\n     {tx x42780000 x44b07800 x43c92000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush190 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44460000 x439a0000 x3eddb76e}\n       {x44450000 x43950000 1}\n       {x44430000 x43910000 x3edf37ce}\n       {x44428000 x43880000 x3f1be6fa}\n       {x44588000 x43980000 x3f27e9fa}\n       {x44668000 x43a30000 x3f27e9fa}\n       {x44988000 x43d90000 x3f20a82a}\n       {x44bc0000 x44018000 x3f20681a}\n       {x44c30000 x44050000 x3f1de77a}\n       {x44d18000 x440b0000 x3f05a168}\n       {x44d24000 x44090000 x3eaf2bcb}\n       {x44d0c000 x44048000 0}}}\n     {tx x42780000 x44945000 x43ccd555}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush189 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b88000 x443a0000 1}\n       {x44bb8000 x443c8000 x3eac2b0b}\n       {x44bcc000 x443d8000 x3ed9b66e}\n       {x44bc8000 x443d8000 x3f0de379}\n       {x44bb8000 x443c8000 x3f106419}\n       {x44ae8000 x44310000 x3f14a529}\n       {x44948000 x44160000 x3f18661a}\n       {x448c0000 x440d0000 x3f1b26ca}\n       {x44548000 x43d10000 x3f2aeabb}\n       {x44258000 x43960000 x3f1d675a}\n       {x441e8000 x438e0000 x3f16a5a9}\n       {x44138000 x43820000 x3ebd2f4c}\n       {x44230000 x43920000 x3e87a1e8}\n       {x442f0000 x43a00000 0}}}\n     {tx x42780000 x44887b6e x44062db7}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush188 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a28000 x44230000 1}\n       {x44a40000 x442a8000 x3ea5a96a}\n       {x44a58000 x442d0000 x3ea9aa6b}\n       {x44a90000 x44310000 x3ead2b4b}\n       {x44ad8000 x44350000 x3ead2b4b}\n       {x44b6c000 x443a8000 x3ea1284a}\n       {x44b90000 x443c0000 x3e9fa7ea}\n       {x44c18000 x44408000 x3ea1284a}\n       {x44c48000 x44438000 x3ead2b4b}\n       {x44bf0000 x44420000 x3ed1344d}\n       {x44bbc000 x44400000 x3ed2348d}\n       {x44a68000 x44300000 x3ed2b4ad}\n       {x4485c000 x44158000 x3ec4b12c}\n       {x44770000 x440e0000 x3ec6b1ac}\n       {x44318000 x43eb0000 x3ed334cd}\n       {x441a0000 x43da0000 0}}}\n     {tx x42780000 x44a00800 x44293000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush187 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44668000 x43d00000 1}\n       {x44668000 x43d30000 x3f02e0b8}\n       {x44680000 x43d80000 x3eceb3ad}\n       {x44848000 x43eb0000 x3e753d4f}\n       {x44904000 x43f70000 x3e703c0f}\n       {x449b8000 x44010000 x3e703c0f}\n       {x44a00000 x44038000 x3e4b32cd}}}\n     {tx x42780000 x44861b6e x43ea0000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush186 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x443f8000 x43c50000 1}\n       {x44390000 x43c00000 x3e7d3f50}\n       {x44308000 x43ba0000 x3eb92e4c}\n       {x442e8000 x43b80000 x3ed2b4ad}\n       {x442d8000 x43b40000 x3ef93e50}\n       {x44360000 x43b00000 x3f0da369}\n       {x44490000 x43ae0000 x3f06a1a8}\n       {x444f0000 x43af0000 x3eeebbaf}\n       {x44650000 x43b40000 x3dc6318c}\n       {x446c8000 x43b30000 x3e3f2fcc}\n       {x446d0000 x43b00000 x3e7d3f50}\n       {x44728000 x43a60000 x3ec6b1ac}\n       {x44820000 x43a30000 x3ee83a0f}\n       {x44850000 x43a30000 x3ee3b8ee}\n       {x448cc000 x43a90000 0}}}\n     {tx x42780000 x44583bbc x43b15555}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush185 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44140000 x43c50000 1}\n       {x44198000 x43ca0000 x3ee0b82e}\n       {x443a0000 x43de0000 x3ef5bd6f}\n       {x44498000 x43e60000 x3f0e2389}\n       {x446f0000 x43fb0000 x3f296a5b}\n       {x449ec000 x440f8000 x3f352d4b}\n       {x44bb8000 x44180000 x3eb4ad2b}\n       {x44bec000 x44180000 x3e3e2f8c}}}\n     {tx x42780000 x447a4000 x43f9a000}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush184 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44068000 x43ad0000 x3e2d2b4b}\n       {x44030000 x43aa0000 x3ead2b4b}\n       {x44010000 x43a90000 x3ec6b1ac}\n       {x44070000 x43b20000 x3eefbbef}\n       {x440e0000 x43b90000 x3efdbf70}\n       {x44228000 x43cc0000 x3f06a1a8}\n       {x442f0000 x43d70000 x3f09e279}\n       {x445f0000 x43fa0000 x3f25294a}\n       {x44708000 x44020000 x3f2769da}\n       {x44938000 x440f8000 x3ec6b1ac}}}\n     {tx x42780000 x4430c000 x43d1199a}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush183 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43b00000 x438c0000 x3e6739ce}\n       {x43c20000 x43980000 x3e8320c8}\n       {x43fd0000 x43b80000 x3ee2b8ae}\n       {x441b8000 x43d20000 x3effbff0}\n       {x442b0000 x43e00000 x3f05e178}\n       {x44498000 x43f80000 x3eea3a8f}\n       {x44580000 x44018000 0}}}\n     {tx x42780000 x4416c925 x43ca6db7}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush182 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43ef0000 x44030000 x3e3f2fcc}\n       {x43ec0000 x43f70000 x3eb0ac2b}\n       {x43e80000 x43e30000 x3ed735cd}\n       {x43e40000 x43d60000 x3eecbb2f}\n       {x43e00000 x43c70000 x3f0a2289}\n       {x43da0000 x43ba0000 1}\n       {x43be0000 x43840000 x3f1f27ca}\n       {x43a80000 x43440000 x3f1ce73a}\n       {x43a70000 x433e0000 x3f112449}\n       {x43a40000 x43380000 0}}}\n     {tx x42780000 x43ce999a x43af3333}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush181 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44020000 x44128000 x3dc8320d}\n       {x44010000 x44120000 x3e46318c}\n       {x43fe0000 x44100000 x3e733ccf}\n       {x43fd0000 x440f0000 x3e8ca329}\n       {x43fb0000 x440c8000 x3ea4290a}\n       {x43f70000 x44098000 x3eb5ad6b}\n       {x43ec0000 x43fd0000 x3ee1384e}\n       {x43e80000 x43f40000 x3eef3bcf}\n       {x43d00000 x43c20000 x3f0e2389}\n       {x43b40000 x43980000 x3f122489}\n       {x43b00000 x43940000 x3f0ba2e9}\n       {x43af0000 x438f0000 0}}}\n     {tx x42780000 x43e38000 x43ed6aab}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush180 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44310000 x443e0000 1}\n       {x44318000 x443e0000 x3e693a4f}\n       {x44318000 x443f0000 x3e902409}\n       {x44318000 x443e0000 x3e9f27ca}\n       {x44300000 x443a0000 x3eb12c4b}\n       {x442b0000 x44308000 x3ed1344d}\n       {x44270000 x442a0000 x3ee2b8ae}\n       {x440f0000 x44030000 x3f13e4f9}\n       {x43dd0000 x43ac0000 x3f21685a}\n       {x43a60000 x43400000 x3f1b26ca}\n       {x439e0000 x43280000 x3f15a569}\n       {x43980000 x43180000 x3f102409}\n       {x43960000 x43080000 x3e87a1e8}}}\n     {tx x42780000 x4409b13b x4400a762}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush179 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44400000 x44458000 1}\n       {x443e0000 x44428000 x3e713c4f}\n       {x443c0000 x443f0000 x3e91a469}\n       {x44310000 x442e0000 x3ec7b1ec}\n       {x44260000 x441d0000 x3ee0b82e}\n       {x441f0000 x44138000 x3ef53d4f}\n       {x440f0000 x43fa0000 x3f06e1b8}\n       {x43d20000 x43960000 x3f0c6319}\n       {x43bf0000 x43800000 x3f0be2f9}\n       {x43950000 x430e0000 x3eeabaaf}\n       {x43900000 x42ec0000 0}}}\n     {tx x42780000 x440e0000 x43fcd174}\n     {a r 0 g 0 b 0 ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush178 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc44f8000 x44510000 x3ec1b06c}}}\n     {tx x42780000 xc44f8000 x44510000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush177 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42f40000 x434c0000 1}\n       {x42ec0000 x434e0000 x3de4390e}\n       {x42c40000 x43500000 x3e82a0a8}\n       {x42ac0000 x43540000 x3ea2a8aa}\n       {x42a80000 x43540000 x3eb0ac2b}\n       {x42bc0000 x43560000 x3ed735cd}\n       {x435a0000 x43700000 x3edf37ce}\n       {x43840000 x437a0000 x3edf37ce}\n       {x43e30000 x43910000 x3dca328d}}}\n     {tx x42780000 x432ae38e x436238e4}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush176 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x435c0000 x42780000 1}\n       {x43780000 x428c0000 x3e292a4b}\n       {x438a0000 x42980000 x3e44310c}\n       {x43cc0000 x42d00000 x3e6a3a8f}}}\n     {tx x42780000 x43900000 x429c0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush175 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43380000 x43360000 1}\n       {x43380000 x43320000 x3e8fa3e9}\n       {x433e0000 x430c0000 x3ea2a8aa}\n       {x433e0000 x42e80000 x3ea7a9ea}\n       {x433e0000 x41d00000 x3eadab6b}\n       {x43380000 xc2800000 x3eb2acab}\n       {x43340000 xc3140000 x3d0c2309}}}\n     {tx x42780000 x433a0000 x4275b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush174 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43240000 x42680000 1}\n       {x43240000 x42700000 x3e312c4b}\n       {x43200000 x42700000 x3e52348d}\n       {x431e0000 x42700000 x3e5e378e}\n       {x431c0000 x42700000 x3e6a3a8f}\n       {x431a0000 x42680000 x3e743d0f}\n       {x43100000 x42480000 x3e8721c8}\n       {x42e80000 x42080000 x3e8721c8}\n       {x42dc0000 x41e00000 x3e773dcf}\n       {x42d40000 x41d00000 x3e44310c}\n       {x42d00000 x41b00000 0}}}\n     {tx x42780000 x430ba2e9 x423ba2e9}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush173 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44e8c000 x43ee0000 x3cf03c0f}\n       {x44e90000 x43ee0000 x3e58360e}\n       {x44ea0000 x43ec0000 x3e812048}\n       {x44ec8000 x43e90000 x3e98260a}\n       {x44ef0000 x43e40000 x3e9a268a}\n       {x44f10000 x43e30000 x3e96a5a9}\n       {x44f40000 x43e20000 x3dfc3f10}}}\n     {tx x42780000 x44ed2db7 x43e84925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush172 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44e38000 x43980000 1}\n       {x44e48000 x439d0000 x3e91a469}\n       {x44e60000 x43a00000 x3e912449}\n       {x44e98000 x43a60000 x3e2a2a8b}\n       {x44ed8000 x43ae0000 x3da6298a}}}\n     {tx x42780000 x44e76666 x43a1cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush171 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b20000 x42b80000 1}\n       {x44b24000 x42b80000 x3ea1a86a}\n       {x44b38000 x42b00000 x3ea6a9aa}\n       {x44b50000 x42b00000 x3eaa2a8b}\n       {x44ba4000 x42a80000 x3ea6a9aa}\n       {x44bb8000 x42a40000 x3e9aa6aa}\n       {x44bcc000 x42a00000 0}}}\n     {tx x42780000 x44b6c000 x42ad2492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush170 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x447e0000 x42680000 1}\n       {x44814000 x42700000 x3eacab2b}\n       {x44918000 x42a80000 x3eb0ac2b}\n       {x449c8000 x42c40000 x3eb8ae2c}\n       {x44adc000 x42ec0000 x3e52348d}}}\n     {tx x42780000 x44926666 x42a73333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush169 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44650000 x42480000 1}\n       {x44648000 x42380000 x3ce0380e}}}\n     {tx x42780000 x4464c000 x42400000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush168 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44728000 x42900000 1}\n       {x446d8000 x42800000 0}}}\n     {tx x42780000 x44700000 x42880000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush167 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x449d8000 x43360000 1}\n       {x44a0c000 x433e0000 x3e4f33cd}\n       {x44a50000 x43440000 x3e54350d}\n       {x44ba8000 x43740000 x3eba2e8c}\n       {x44c48000 x43840000 x3ea92a4b}\n       {x44c7c000 x43890000 0}}}\n     {tx x42780000 x44b1aaab x43610000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush166 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x449c4000 x43500000 1}\n       {x449ec000 x435a0000 x3e93a4e9}\n       {x44a24000 x43660000 x3e93a4e9}\n       {x44b0c000 x438a0000 x3ea1284a}\n       {x44bc0000 x439b0000 x3ea92a4b}\n       {x44cb8000 x43b30000 x3e5c370e}}}\n     {tx x42780000 x44ae4000 x43855555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush165 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b44000 x43b30000 1}\n       {x44b44000 x43960000 x3e952549}\n       {x44b50000 x435a0000 x3e842108}\n       {x44b54000 x43440000 x3e2a2a8b}}}\n     {tx x42780000 x44b4b000 x43860000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush164 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44d3c000 x4485c000 1}\n       {x44df0000 x44880000 x3e5f37ce}\n       {x44ea8000 x44890000 x3df83e10}}}\n     {tx x42780000 x44df1555 x44879555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush163 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x448d4000 x446f0000 1}\n       {x448a4000 x446d0000 x3eb02c0b}\n       {x44870000 x446b0000 x3ef8be30}\n       {x448a4000 x446f0000 x3f03a0e8}\n       {x44918000 x44750000 x3f05a168}\n       {x4495c000 x44788000 x3f05e178}\n       {x44adc000 x44848000 x3f07a1e8}\n       {x44c60000 x448b4000 x3ea5a96a}\n       {x44ca0000 x448bc000 x3e002008}}}\n     {tx x42780000 x449df8e4 x447bd555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush162 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44380000 x44540000 1}\n       {x44330000 x44520000 1}\n       {x441f0000 x444c0000 x3eaf2bcb}\n       {x441b8000 x444b8000 x3ed1b46d}\n       {x44210000 x444d0000 x3ee5394e}\n       {x44460000 x44570000 x3f012048}\n       {x44828000 x44618000 x3f096259}\n       {x448a8000 x44640000 x3f096259}\n       {x44a1c000 x44680000 x3e842108}}}\n     {tx x42780000 x4452e38e x44570000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush161 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44218000 x44300000 x3e5c370e}\n       {x44220000 x44308000 0}}}\n     {tx x42780000 x4421c000 x44304000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush160 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440d8000 x44378000 1}\n       {x44370000 x44488000 x3e25294a}\n       {x44440000 x444c8000 x3e25294a}\n       {x44510000 x44500000 x3e0b22c9}}}\n     {tx x42780000 x44366000 x44472000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush159 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43c50000 x441f8000 1}\n       {x43d60000 x44250000 x3d862188}}}\n     {tx x42780000 x43cd8000 x44224000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush158 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43480000 x44080000 1}\n       {x43540000 x440a0000 x3e0d2349}\n       {x437a0000 x44108000 x3e793e50}\n       {x439d0000 x44198000 x3e95a569}\n       {x44008000 x44318000 x3e9ea7aa}\n       {x440f0000 x44370000 x3e9ca72a}\n       {x441c0000 x443c8000 0}}}\n     {tx x42780000 x43bfdb6e x44202492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush157 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44060000 x44420000 1}\n       {x44090000 x44430000 x3e8aa2a9}\n       {x440e0000 x44450000 x3e882209}\n       {x44100000 x44450000 x3e8a2289}\n       {x44110000 x44450000 x3e9324c9}\n       {x44110000 x44438000 x3e9fa7ea}\n       {x440d8000 x443d8000 x3eb8ae2c}\n       {x43f20000 x442d8000 x3eb62d8b}\n       {x43e20000 x44278000 x3eb0ac2b}\n       {x43980000 x440d0000 x3e98260a}\n       {x433e0000 x43f80000 x3e312c4b}}}\n     {tx x42780000 x43f4ba2f x44332e8c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush156 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x444e0000 x44260000 1}\n       {x444b8000 x44218000 x3f04a128}\n       {x44430000 x44168000 x3f04e138}\n       {x44370000 x440b0000 x3f06e1b8}\n       {x44300000 x44048000 x3f09a269}\n       {x441f0000 x43ef0000 x3f0da369}\n       {x43ee0000 x43bb0000 x3f066198}\n       {x43da0000 x43b20000 x3ef9be70}\n       {x43bc0000 x43a60000 0}}}\n     {tx x42780000 x44208000 x43fc1c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush155 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x441f0000 x44288000 1}\n       {x441f8000 x44060000 x3ebdaf6c}\n       {x440f0000 x43c80000 x3ebbaeec}\n       {x43f70000 x43a20000 x3eb8ae2c}\n       {x43d90000 x43940000 0}}}\n     {tx x42780000 x440ab333 x43df0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush154 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43fd0000 x43c50000 1}\n       {x43f20000 x43d20000 x3ed6b5ad}\n       {x43ec0000 x43e60000 x3ed735cd}\n       {x43ec0000 x43f20000 x3ed9b66e}\n       {x43f20000 x44060000 x3ede378e}\n       {x43fa0000 x440c0000 x3ee1384e}\n       {x440f0000 x441e8000 x3ee1384e}\n       {x44280000 x44310000 x3eb0ac2b}\n       {x443a8000 x443e0000 x3eac2b0b}\n       {x443c8000 x44408000 x3ea729ca}\n       {x44370000 x44430000 x3dae2b8b}\n       {x44330000 x44430000 0}}}\n     {tx x42780000 x44142000 x4417caab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush153 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446f8000 x44188000 1}\n       {x44678000 x44130000 x3ef8be30}\n       {x444b8000 x43fe0000 x3efb3ed0}\n       {x44410000 x43f00000 x3f02e0b8}\n       {x44290000 x43d10000 x3f0b22c9}\n       {x441b8000 x43c10000 x3f0e6399}\n       {x43ca0000 x438f0000 x3f17a5e9}\n       {x43820000 x437a0000 x3eb8ae2c}\n       {x43700000 x437a0000 x3de4390e}}}\n     {tx x42780000 x441d8e39 x43d1c71c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush152 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x444f0000 x44190000 1}\n       {x44548000 x44110000 x3e51344d}\n       {x44690000 x43fa0000 x3ea1284a}\n       {x44708000 x43f00000 x3ea8aa2b}\n       {x447e8000 x43e20000 x3e9e278a}\n       {x44854000 x43d80000 x3e46318c}\n       {x44880000 x43d70000 0}}}\n     {tx x42780000 x4470db6e x43f90000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush151 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43b30000 x44330000 1}\n       {x43bb0000 x44310000 x3e8ca329}\n       {x43d10000 x44290000 x3ec6b1ac}\n       {x44070000 x440a0000 x3f0d2349}\n       {x440f0000 x44020000 x3f14a529}\n       {x442d0000 x43d20000 x3f156559}\n       {x44400000 x43bf0000 0}}}\n     {tx x42780000 x4404edb7 x440dedb7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush150 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43c20000 x43ae0000 1}\n       {x43b80000 x43a70000 x3e93a4e9}\n       {x43ae0000 x439b0000 x3ea6a9aa}\n       {x43b60000 x439d0000 x3eaa2a8b}\n       {x43c00000 x43a30000 x3eaa2a8b}\n       {x43e50000 x43d10000 x3e862188}\n       {x43f70000 x44068000 x3e9c270a}\n       {x43fa0000 x440d8000 x3ea9aa6b}\n       {x43f80000 x441f0000 x3ec0300c}\n       {x43f40000 x441f0000 x3eaa2a8b}\n       {x44070000 x44068000 x3ea92a4b}\n       {x440f0000 x43fd0000 x3ebd2f4c}\n       {x44318000 x43c50000 x3ec3b0ec}\n       {x444c0000 x43b00000 x3e8d2349}\n       {x444f0000 x43b00000 x3e5a368e}\n       {x44510000 x43b40000 0}}}\n     {tx x42780000 x44063800 x43d88000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush149 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44008000 x43e00000 1}\n       {x44070000 x43d40000 x3e9aa6aa}\n       {x44160000 x43bf0000 x3eb5ad6b}\n       {x44250000 x43b00000 x3eb9ae6c}\n       {x44380000 x43aa0000 x3e912449}\n       {x44420000 x43b00000 0}}}\n     {tx x42780000 x441f6aab x43bf8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush148 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43340000 x43df0000 1}\n       {x43320000 x43e50000 1}\n       {x43380000 x43e80000 x3ea0280a}\n       {x435c0000 x43ef0000 x3ea4290a}\n       {x43880000 x43f80000 x3eb82e0c}\n       {x43bc0000 x44070000 x3ec9b26d}\n       {x440b0000 x441d0000 x3e99264a}\n       {x44150000 x44228000 x3e6a3a8f}\n       {x441d0000 x44280000 0}}}\n     {tx x42780000 x43b138e4 x440638e4}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush147 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x438f0000 x43d40000 1}\n       {x43970000 x43cd0000 x3e9a268a}\n       {x43a30000 x43c20000 x3ec2b0ac}\n       {x43d60000 x439a0000 x3ef9be70}\n       {x43f80000 x437c0000 x3ef6bdaf}\n       {x44168000 x43340000 x3ebeafac}\n       {x441b0000 x432a0000 x3ea8aa2b}\n       {x441e8000 x43280000 0}}}\n     {tx x42780000 x43e6e000 x438fc000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush146 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43af0000 x43bf0000 1}\n       {x43c50000 x43c80000 x3e91a469}\n       {x44090000 x43f00000 x3ebd2f4c}\n       {x44228000 x44068000 x3ea4290a}\n       {x442e8000 x440d8000 0}}}\n     {tx x42780000 x44040000 x43ec999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush145 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43970000 x44080000 1}\n       {x43b80000 x43f40000 x3eb8ae2c}\n       {x43e30000 x43d70000 x3eecbb2f}\n       {x43fa0000 x43ca0000 x3efabeb0}\n       {x44130000 x43b50000 x3f012048}\n       {x441d0000 x43ad0000 x3f006018}\n       {x442f0000 x43a20000 0}}}\n     {tx x42780000 x43fcdb6e x43cf0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush144 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43b80000 x441b0000 1}\n       {x43c70000 x44140000 1}\n       {x43f10000 x44040000 x3ee338ce}\n       {x44040000 x43f70000 x3ef4bd2f}\n       {x441b0000 x43dd0000 x3f0320c8}\n       {x44260000 x43d20000 x3f0320c8}\n       {x44408000 x43bf0000 x3eea3a8f}\n       {x44510000 x43bb0000 x3e1b26ca}}}\n     {tx x42780000 x4411d000 x43f0c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush143 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43e40000 x44258000 1}\n       {x43f70000 x44220000 x3e8a2289}\n       {x441c0000 x440e0000 x3eb6adab}\n       {x44278000 x44070000 x3eb8ae2c}\n       {x443a0000 x43f50000 x3eb2acab}\n       {x44488000 x43e40000 x3e90a429}\n       {x44528000 x43d90000 0}}}\n     {tx x42780000 x44256db7 x4407a492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush142 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43980000 x43f80000 1}\n       {x43920000 x43f70000 x3e7a3e90}\n       {x43940000 x43fa0000 x3ea3a8ea}\n       {x43a90000 x44030000 x3eadab6b}\n       {x44090000 x44190000 x3eddb76e}\n       {x441a0000 x441f8000 x3ee83a0f}\n       {x445d0000 x44368000 x3edeb7ae}\n       {x44740000 x443c8000 0}}}\n     {tx x42780000 x4404f000 x44146000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush141 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43880000 x43e90000 1}\n       {x43940000 x43f10000 x3e9da76a}\n       {x43b60000 x44000000 x3eaf2bcb}\n       {x44168000 x44150000 x3eb92e4c}\n       {x44278000 x441a0000 x3ebbaeec}\n       {x44640000 x442e0000 x3ea2a8aa}\n       {x446f0000 x44310000 0}}}\n     {tx x42780000 x44116db7 x44119249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush140 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43ad0000 x43d90000 1}\n       {x43be0000 x43e40000 x3ea1284a}\n       {x43dd0000 x43f40000 x3eb9ae6c}\n       {x44100000 x440a0000 x3ef4bd2f}\n       {x44470000 x44248000 x3f0ae2b9}\n       {x44570000 x442a8000 x3f0c6319}\n       {x44814000 x44380000 x3dda368e}}}\n     {tx x42780000 x441e5b6e x440f1249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush139 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x442e8000 x44098000 1}\n       {x44250000 x44050000 x3dac2b0b}\n       {x44210000 x44030000 x3df03c0f}\n       {x44190000 x43fd0000 x3e3d2f4c}\n       {x440f8000 x43f10000 x3e6b3acf}\n       {x44158000 x43f60000 x3e6338ce}\n       {x441d0000 x43fd0000 x3e6739ce}\n       {x444e0000 x44130000 x3e59364e}\n       {x44858000 x442a0000 x3e19264a}}}\n     {tx x42780000 x442f2aab x44070000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush138 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x441a0000 x43c80000 x3eb9ae6c}\n       {x441b8000 x43e30000 1}\n       {x44240000 x43ef0000 x3eb2acab}\n       {x443f0000 x44068000 x3e8ca329}}}\n     {tx x42780000 x44262000 x43e9c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush137 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446a0000 x43f70000 x3eee3b8f}\n       {x444b8000 x43e80000 x3ef2bcaf}\n       {x44468000 x43e50000 x3ee0380e}\n       {x44480000 x43e50000 x3daa2a8b}}}\n     {tx x42780000 x44510000 x43ea4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush136 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a34000 x441e8000 1}\n       {x449f8000 x441b0000 x3e65394e}\n       {x44968000 x44110000 x3e9a268a}\n       {x44918000 x440c8000 x3eadab6b}\n       {x44860000 x44020000 x3ed8360e}\n       {x44720000 x43ef0000 x3ee6398e}\n       {x44640000 x43e40000 x3ee7b9ee}\n       {x44330000 x43bc0000 x3eed3b4f}\n       {x441c0000 x43af0000 x3e9c270a}\n       {x441c0000 x43b20000 x3e122489}}}\n     {tx x42780000 x4476a666 x43f6999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush135 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b5c000 x443d8000 1}\n       {x44b60000 x443d8000 x3e46318c}\n       {x44b60000 x443d0000 x3e8ea3a9}\n       {x44b60000 x443b0000 x3e9c270a}\n       {x44b54000 x44380000 x3ea328ca}\n       {x44af4000 x442b0000 x3eb92e4c}\n       {x44ac4000 x44250000 x3ebc2f0c}\n       {x449b0000 x44060000 x3edcb72e}\n       {x44860000 x43cc0000 x3f0b62d9}\n       {x4480c000 x43be0000 x3f0ba2e9}\n       {x445f0000 x439a0000 x3ecd334d}\n       {x445a0000 x43950000 0}}}\n     {tx x42780000 x449de555 x44127555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush134 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c5c000 x444e8000 x3e282a0b}\n       {x44c58000 x444e0000 x3ea92a4b}\n       {x44c4c000 x444c8000 x3eb7adeb}\n       {x44c18000 x44470000 x3ecd334d}\n       {x44b50000 x44348000 x3effbff0}\n       {x44b08000 x442e0000 x3f05a168}\n       {x44a20000 x44188000 x3f09a269}\n       {x449d8000 x44110000 x3f07e1f8}\n       {x44990000 x440a0000 x3f006018}\n       {x44914000 x43fa0000 0}}}\n     {tx x42780000 x44b01333 x442d199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush133 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x4495c000 x441b8000 1}\n       {x44958000 x441b8000 1}\n       {x4498c000 x441e0000 x3e95a569}\n       {x449f4000 x44230000 x3ea0280a}\n       {x44b08000 x44308000 x3dde378e}}}\n     {tx x42780000 x449d8ccd x4421b333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44930000 x441d0000 1}\n       {x44958000 x441f0000 x3e4a328d}\n       {x449ac000 x44228000 x3e56358d}\n       {x44a0c000 x44250000 x3e4d334d}\n       {x44a3c000 x44260000 0}}}\n     {tx x42780000 x449b2666 x4421e666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446e0000 x44210000 1}\n       {x44768000 x441f0000 x3ea5a96a}\n       {x4480c000 x441d0000 x3ed4b52d}\n       {x44938000 x441b0000 x3f086219}\n       {x449a0000 x441b0000 x3f086219}\n       {x44a50000 x441b0000 x3ef1bc6f}\n       {x44adc000 x441b0000 0}}}\n     {tx x42780000 x449076db x441cb6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44760000 x44320000 1}\n       {x44788000 x44320000 x3eb92e4c}\n       {x4480c000 x44308000 x3ecd334d}\n       {x44904000 x442a8000 x3ee0b82e}\n       {x44948000 x44290000 x3ee0b82e}\n       {x44a08000 x44260000 0}}}\n     {tx x42780000 x448a3555 x442d0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44368000 x442b8000 1}\n       {x443f8000 x441f0000 x3ebc2f0c}\n       {x444a0000 x440c0000 x3ee8ba2f}\n       {x445a8000 x43c70000 x3ebeafac}\n       {x445c0000 x43b50000 x3e59364e}}}\n     {tx x42780000 x444ae666 x4404199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x443e0000 x44300000 1}\n       {x44408000 x442c0000 x3e9725c9}\n       {x44438000 x44278000 x3ec0300c}\n       {x444b8000 x44198000 x3efbbef0}\n       {x444f8000 x44120000 x3f05a168}\n       {x44570000 x44020000 x3f08a229}\n       {x44590000 x43d00000 x3ed9b66e}\n       {x44588000 x43c70000 x3eb2acab}\n       {x44570000 x43be0000 0}}}\n     {tx x42780000 x444dd555 x440a2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x444c8000 x44360000 1}\n       {x444c8000 x44368000 x3e84a128}\n       {x444e8000 x44318000 x3ed334cd}\n       {x44510000 x442c0000 x3ee338ce}\n       {x44558000 x441c8000 x3ef23c8f}\n       {x44600000 x43f40000 x3ec9b26d}\n       {x44610000 x43e50000 x3ea6298a}\n       {x44620000 x43d80000 0}}}\n     {tx x42780000 x44562000 x4417e000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b78000 x441c8000 1}\n       {x44ba8000 x44030000 x3ea6a9aa}\n       {x44bbc000 x43fe0000 0}}}\n     {tx x42780000 x44b9eaab x440a2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a70000 x44220000 1}\n       {x44a7c000 x441c8000 x3eb5ad6b}\n       {x44a88000 x44170000 x3ebaaeac}\n       {x44acc000 x440a0000 x3ee7b9ee}\n       {x44ae8000 x44070000 x3ef5bd6f}\n       {x44b24000 x44030000 x3ee739ce}\n       {x44b50000 x44020000 x3dde378e}}}\n     {tx x42780000 x44acd249 x440f5b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x449d0000 x44180000 1}\n       {x449dc000 x440f0000 x3ebeafac}\n       {x44a08000 x44010000 x3ead2b4b}\n       {x44a10000 x43fe0000 x3e8320c8}\n       {x44a18000 x43fb0000 0}}}\n     {tx x42780000 x449f8ccd x44074ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44934000 x441f8000 1}\n       {x44948000 x441b0000 x3eba2e8c}\n       {x44958000 x44158000 x3ec0b02c}\n       {x44978000 x440a0000 x3ed2348d}\n       {x44988000 x44050000 x3ed2348d}\n       {x44998000 x43fb0000 x3eb02c0b}\n       {x449ac000 x43f20000 x3dba2e8c}}}\n     {tx x42780000 x44971249 x440c36db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44760000 x44348000 1}\n       {x44780000 x44300000 x3ec0b02c}\n       {x447b8000 x442b0000 x3eeabaaf}\n       {x44800000 x44250000 x3f06a1a8}\n       {x4482c000 x441e0000 x3f122489}\n       {x448d8000 x44018000 x3f14a529}\n       {x4491c000 x43e50000 0}}}\n     {tx x42780000 x44834000 x441c5b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446c8000 x44498000 1}\n       {x446f8000 x44438000 x3e8721c8}\n       {x44780000 x44320000 x3eba2e8c}\n       {x44814000 x441e0000 x3ed1b46d}\n       {x448a0000 x43f20000 x3ea729ca}\n       {x448b4000 x43e40000 x3e64390e}}}\n     {tx x42780000 x44801555 x44215555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44560000 x44458000 1}\n       {x44590000 x44410000 x3eac2b0b}\n       {x44630000 x44318000 x3ee2b8ae}\n       {x446e0000 x441d0000 x3ef63d8f}\n       {x4480c000 x43eb0000 x3eb02c0b}\n       {x44828000 x43dc0000 x3e0c2309}}}\n     {tx x42780000 x446bc000 x441ec000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x444d0000 x44330000 1}\n       {x44548000 x44270000 x3e882209}\n       {x445e0000 x44160000 x3e8d2349}\n       {x44670000 x44040000 x3e812048}\n       {x446d8000 x43e50000 0}}}\n     {tx x42780000 x445d999a x44148000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440a0000 x44458000 1}\n       {x440c0000 x44458000 x3e46318c}\n       {x44108000 x44438000 x3e6739ce}\n       {x44198000 x443d8000 x3ea2288a}\n       {x44330000 x442b0000 x3f002008}\n       {x446d8000 x44138000 x3f11e479}\n       {x447e8000 x440f8000 x3f106419}\n       {x449b8000 x44020000 x3d862188}}}\n     {tx x42780000 x4442c000 x442b8000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43ae0000 x441c0000 1}\n       {x43ae0000 x441e0000 x3e753d4f}\n       {x43c10000 x44228000 x3e7b3ed0}\n       {x43ec0000 x442a8000 x3ea5a96a}\n       {x443e0000 x44400000 x3f0de379}\n       {x44548000 x44460000 x3f12a4a9}\n       {x44930000 x44570000 x3ec4b12c}\n       {x44998000 x44588000 0}}}\n     {tx x42780000 x442e0000 x44379000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440a8000 x44218000 1}\n       {x44158000 x44258000 x3ea8aa2b}\n       {x443f0000 x44320000 x3eea3a8f}\n       {x444f8000 x44368000 x3efc3f10}\n       {x44618000 x443a8000 x3f02a0a8}\n       {x44848000 x44430000 x3f0721c8}\n       {x448e4000 x44470000 x3f0721c8}\n       {x44a58000 x444f8000 0}}}\n     {tx x42780000 x44601000 x44387000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42ec0000 x44550000 1}\n       {x432a0000 x445a8000 x3e5334cd}\n       {x43af0000 x446a8000 x3ebe2f8c}\n       {x43d20000 x446f8000 x3edbb6ee}\n       {x440d0000 x44798000 x3ef0bc2f}\n       {x442c0000 x44810000 x3eea3a8f}\n       {x44390000 x44828000 x3eb7adeb}\n       {x44438000 x44838000 0}}}\n     {tx x42780000 x43ef8000 x44722000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2bc0000 x44710000 x3e5334cd}\n       {xc2680000 x44708000 x3e95a569}\n       {x40000000 x44708000 x3ec5314c}\n       {x42bc0000 x44708000 x3ee739ce}\n       {x43140000 x44708000 x3efebfb0}\n       {x434e0000 x44708000 x3f0761d8}\n       {x43850000 x44708000 x3f092249}\n       {x43fe0000 x446c0000 x3ec0b02c}\n       {x440c0000 x446a0000 0}}}\n     {tx x42780000 x43355555 x446f5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x431e0000 x44520000 1}\n       {x432a0000 x44410000 x3ea3a8ea}\n       {x43400000 x442d0000 x3eb5ad6b}\n       {x43580000 x44160000 x3ebeafac}\n       {x43640000 x440a8000 x3eb8ae2c}\n       {x437e0000 x43ee0000 0}}}\n     {tx x42780000 x434b0000 x4423eaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc31a0000 x44338000 1}\n       {xc3140000 x44348000 x3eb12c4b}\n       {xc3040000 x44350000 x3eb12c4b}\n       {xc2d80000 x44370000 x3ebc2f0c}\n       {xc2a00000 x44398000 x3ecbb2ed}\n       {xc2180000 x443c8000 x3ed334cd}\n       {x40800000 x443f8000 x3ed5b56d}\n       {x42d40000 x44460000 x3ed7b5ed}\n       {x435a0000 x444b8000 x3ed9364e}\n       {x43d80000 x44510000 x3e60380e}}}\n     {tx x42780000 x41200000 x443e0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2e80000 x44070000 1}\n       {xc2bc0000 x44060000 1}\n       {xc1d00000 x44030000 x3ed8360e}\n       {x428c0000 x43fe0000 x3efbbef0}\n       {x42f80000 x43fc0000 x3f0761d8}\n       {x433c0000 x43f80000 x3f0b22c9}\n       {x437c0000 x43f50000 x3f0b22c9}\n       {x43f50000 x43e80000 x3d962589}}}\n     {tx x42780000 x42de0000 x43fde000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2100000 x43d90000 1}\n       {xc2380000 x43da0000 x3e5d374e}\n       {xc2500000 x43da0000 x3e9fa7ea}\n       {xc2600000 x43dc0000 x3eca328d}\n       {xc2480000 x43dd0000 x3edeb7ae}\n       {xc2100000 x43de0000 x3ee93a4f}\n       {xc1600000 x43df0000 x3efabeb0}\n       {x41800000 x43e00000 x3f0360d8}\n       {x42dc0000 x43e30000 x3f10e439}\n       {x43720000 x43e50000 x3f18e63a}\n       {x440c0000 x43e80000 x3f0ae2b9}\n       {x441d0000 x43e80000 x3ed1b46d}\n       {x442d0000 x43e60000 0}}}\n     {tx x42780000 x43169d8a x43e013b1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43fe0000 x43c80000 1}\n       {x43fe0000 x43ca0000 x3e9aa6aa}\n       {x44008000 x43ca0000 x3ebaaeac}\n       {x44040000 x43c60000 x3ed2348d}\n       {x440f8000 x43ba0000 x3efbbef0}\n       {x443d0000 x43980000 x3f1fa7ea}\n       {x447f0000 x437e0000 x3f25294a}\n       {x4486c000 x43720000 x3f1de77a}\n       {x44928000 x435c0000 0}}}\n     {tx x42780000 x4438f1c7 x43a671c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43ec0000 x434e0000 1}\n       {x43f40000 x434c0000 x3e0f23c9}\n       {x43fc0000 x434a0000 x3e54350d}\n       {x441c0000 x433e0000 x3ebc2f0c}\n       {x44348000 x43380000 x3edfb7ee}\n       {x44728000 x43360000 x3ecd334d}\n       {x447f8000 x43360000 x3e9ba6ea}}}\n     {tx x42780000 x442b8000 x4340db6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43cb0000 x43200000 1}\n       {x43ce0000 x43260000 x3e4a328d}\n       {x43d60000 x432c0000 x3e49324d}\n       {x43de0000 x43340000 x3e50340d}\n       {x43fe0000 x434c0000 x3eba2e8c}\n       {x44070000 x43560000 x3edc370e}\n       {x443a0000 x43840000 x3f0ba2e9}\n       {x44780000 x439c0000 x3efa3e90}\n       {x44828000 x43a10000 x3ed5354d}\n       {x44880000 x43a40000 0}}}\n     {tx x42780000 x44252666 x43683333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44450000 x44018000 1}\n       {x44420000 x44000000 x3e4a328d}\n       {x443e0000 x43fc0000 x3e6b3acf}\n       {x442b8000 x43df0000 x3eaf2bcb}\n       {x441e0000 x43c70000 x3ecdb36d}\n       {x44150000 x43b90000 x3edab6ae}\n       {x43ce0000 x436c0000 x3ee7b9ee}\n       {x43680000 x42d80000 x3e46318c}}}\n     {tx x42780000 x44189000 x43c14000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42200000 x42a40000 1}\n       {x42380000 x42b00000 x3e22288a}\n       {x42d00000 x43060000 x3e97a5e9}\n       {x43300000 x43340000 x3ed1344d}\n       {x43640000 x43500000 x3ee8ba2f}\n       {x44040000 x43ad0000 x3f0721c8}\n       {x444c0000 x43df0000 x3e9f27ca}}}\n     {tx x42780000 x438a6db7 x43540000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x434e0000 x43af0000 1}\n       {x43740000 x43ba0000 x3e3e2f8c}\n       {x43ac0000 x43d30000 x3e9f27ca}\n       {x43ec0000 x43ee0000 x3ec0b02c}\n       {x44080000 x43fb0000 x3ec6318c}\n       {x443f8000 x440f8000 0}}}\n     {tx x42780000 x43d6aaab x43e0aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc28c0000 x42f40000 x3dee3b8f}\n       {xc2880000 x42f40000 x3e352d4b}\n       {xc2780000 x43000000 x3e783e10}\n       {xc2500000 x430c0000 x3ea729ca}\n       {xc2380000 x43120000 x3ec0b02c}\n       {xc2100000 x431e0000 x3edab6ae}\n       {xc1c00000 x432a0000 x3ef0bc2f}\n       {x41200000 x434e0000 x3f0ca329}\n       {x42800000 x43820000 x3f1aa6aa}\n       {x43060000 x43a20000 x3f21284a}\n       {x439e0000 x43e60000 x3f1b26ca}\n       {x43b90000 x43f70000 0}}}\n     {tx x42780000 x4232aaab x43638000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc1c00000 x43020000 1}\n       {xc0800000 x43040000 x3e842108}\n       {x42480000 x43060000 x3ea7a9ea}\n       {x42f00000 x43080000 x3ec5314c}\n       {x431e0000 x430c0000 x3ec9324d}\n       {x43940000 x43140000 x3e7b3ed0}}}\n     {tx x42780000 x42c6aaab x4308aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42480000 x430e0000 1}\n       {x42400000 x430e0000 x3e372dcb}\n       {x42380000 x43100000 x3e8a2289}\n       {x42300000 x43100000 x3ea2288a}\n       {x42200000 x43120000 x3ee7b9ee}\n       {x42100000 x43140000 x3ef53d4f}\n       {x40800000 x43200000 x3f012048}\n       {xc0800000 x43240000 x3f01a068}\n       {xc2000000 x43280000 x3f016058}\n       {xc2080000 x432a0000 x3efebfb0}\n       {xc1c00000 x43280000 x3efcbf30}\n       {x42940000 x43000000 x3f046118}\n       {x437e0000 x42a80000 x3f0aa2a9}\n       {x439a0000 x42980000 x3f0a6299}\n       {x43b20000 x428c0000 x3f062188}\n       {x43c70000 x42880000 x3ee93a4f}\n       {x43d80000 x42780000 0}}}\n     {tx x42780000 x42ead2d3 x43007878}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x438a0000 x43060000 1}\n       {x43880000 x43080000 x3e89a269}\n       {x43880000 x43060000 x3eb5ad6b}\n       {x438b0000 x43000000 x3ec8320d}\n       {x43900000 x42e80000 x3ee4b92e}\n       {x43ac0000 x41e00000 x3f0e2389}\n       {x43cb0000 xc2480000 x3ee83a0f}\n       {x43d20000 xc2800000 x3eccb32d}\n       {x43df0000 xc2ac0000 0}}}\n     {tx x42780000 x43a6c71c x42538e39}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43580000 x43300000 1}\n       {x43640000 x43180000 x3ec1b06c}\n       {x436e0000 x43060000 x3ed8360e}\n       {x437a0000 x42e80000 x3edfb7ee}\n       {x43830000 x42bc0000 x3edfb7ee}\n       {x439e0000 x41800000 x3ea729ca}\n       {x43ad0000 xc1600000 0}}}\n     {tx x42780000 x43849249 x42c09249}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44818000 x43180000 1}\n       {x44814000 x43180000 x3e802008}\n       {x44824000 x43180000 x3e98260a}\n       {x44840000 x43180000 x3eaaaaab}\n       {x448a0000 x43200000 x3ecd334d}\n       {x449bc000 x43380000 x3ef03c0f}\n       {x44a10000 x43400000 x3ef03c0f}\n       {x44b20000 x43540000 x3e6e3b8f}}}\n     {tx x42780000 x44903800 x43298000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44850000 x43860000 1}\n       {x4485c000 x43830000 x3e60380e}\n       {x44884000 x43720000 x3e8c2309}\n       {x448c0000 x43540000 x3ebe2f8c}\n       {x448e8000 x433e0000 x3ed9364e}\n       {x4497c000 x42ac0000 x3f012048}\n       {x44a18000 xc0800000 x3e5d374e}}}\n     {tx x42780000 x448eadb7 x43336db7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x4491c000 x437a0000 1}\n       {x44920000 x43720000 x3e46318c}\n       {x44938000 x43540000 x3e902409}\n       {x44944000 x43440000 x3e902409}\n       {x44964000 x432c0000 x3e102409}}}\n     {tx x42780000 x44938ccd x43566666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44640000 x42d00000 1}\n       {x44630000 x42c80000 0}}}\n     {tx x42780000 x44638000 x42cc0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x442c0000 x41c00000 1}\n       {x44330000 x42080000 x3e51344d}\n       {x443b0000 x42380000 x3e5334cd}\n       {x44588000 x42a40000 x3e7e3f90}\n       {x446c8000 x42d00000 x3e882209}\n       {x44750000 x42e00000 x3e882209}\n       {x44800000 x42f80000 0}}}\n     {tx x42780000 x44552492 x42964925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44610000 x42c00000 1}\n       {x44678000 x42d00000 x3d802008}}}\n     {tx x42780000 x44644000 x42c80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43c10000 x41d00000 1}\n       {x43ca0000 x41e00000 x3e743d0f}\n       {x44048000 x42200000 x3edc370e}\n       {x441b0000 x42400000 x3ef9be70}\n       {x44460000 x42500000 x3ee9ba6f}\n       {x444f8000 x42500000 x3ea9aa6b}\n       {x44578000 x42500000 0}}}\n     {tx x42780000 x441e0000 x422a4925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43720000 xc1800000 1}\n       {x437e0000 xc0000000 x3e6739ce}\n       {x438a0000 x41000000 x3e8ca329}\n       {x439b0000 x41b00000 x3e9ea7aa}\n       {x43b30000 x42080000 x3eb62d8b}\n       {x43fc0000 x42a80000 x3eea3a8f}\n       {x440d0000 x42d00000 x3ef3bcef}\n       {x444c0000 x43320000 x3f022088}\n       {x445a0000 x43400000 x3eee3b8f}\n       {x446c8000 x434e0000 0}}}\n     {tx x42780000 x44008ccd x42a20000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44be0000 x440c0000 x3e52348d}\n       {x44be0000 x440b0000 x3e802008}\n       {x44c14000 x44010000 x3eb02c0b}\n       {x44c30000 x43f60000 x3ebdaf6c}\n       {x44c68000 x43d30000 x3ed3b4ed}\n       {x44cac000 x43a80000 x3eedbb6f}\n       {x44d20000 x43040000 x3efcbf30}\n       {x44d38000 x42a00000 x3efb3ed0}\n       {x44d9c000 xc2d40000 x3ea92a4b}\n       {x44dcc000 xc3260000 0}}}\n     {tx x42780000 x44caf333 x438d199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c1c000 x442d8000 1}\n       {x44c18000 x442e0000 x3dee3b8f}\n       {x44c28000 x442e0000 x3e6d3b4f}\n       {x44c44000 x442d8000 x3e89a269}\n       {x44c94000 x442b0000 x3eb7adeb}\n       {x44d18000 x44270000 x3ede378e}\n       {x44e5c000 x441f0000 x3ec9324d}\n       {x44eb0000 x441d0000 x3e9ea7aa}\n       {x44efc000 x441b8000 0}}}\n     {tx x42780000 x44d25c72 x44272aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2300000 x441f8000 1}\n       {xc2300000 x44218000 x3e9b26ca}\n       {xc2100000 x44230000 x3e9f27ca}\n       {x42200000 x442d0000 x3ec6b1ac}\n       {x42b00000 x44310000 x3ed5354d}\n       {x43100000 x44360000 x3ee2388e}\n       {x43500000 x443b0000 x3ee739ce}\n       {x438b0000 x44408000 x3ee9ba6f}\n       {x44050000 x44510000 x3ef0bc2f}\n       {x446c8000 x44650000 x3e8d2349}\n       {x44828000 x44690000 x3de2388e}}}\n     {tx x42780000 x438f745d x443bdd17}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc0800000 x441f0000 x3e362d8b}\n       {xc0000000 x441f0000 x3e4d334d}\n       {x41400000 x44210000 x3e9725c9}\n       {x41d00000 x44228000 x3ea5a96a}\n       {x42e80000 x442b8000 x3ecab2ad}\n       {x43a80000 x443f8000 x3efb3ed0}\n       {x43c80000 x44440000 x3f0320c8}\n       {x44260000 x44540000 x3d48320d}}}\n     {tx x42780000 x43418000 x44309000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc1400000 x44330000 x3b802008}}}\n     {tx x42780000 xc1400000 x44330000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x41200000 x44550000 1}\n       {x42100000 x44518000 1}\n       {x42e80000 x444a0000 x3ebcaf2c}\n       {x434e0000 x44438000 x3ecd334d}\n       {x437c0000 x44408000 x3edbb6ee}\n       {x43c20000 x44378000 x3e9a268a}\n       {x43cc0000 x44360000 0}}}\n     {tx x42780000 x434a4925 x4444db6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x41b00000 x445c0000 1}\n       {x42200000 x445a8000 x3dee3b8f}\n       {x42ac0000 x44578000 0}}}\n     {tx x42780000 x42455555 x445a0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42600000 x44630000 1}\n       {x42500000 x44630000 x3e952549}\n       {x42480000 x44630000 x3e9a268a}\n       {x42480000 x44638000 x3eaeabab}\n       {x42600000 x44650000 x3eaf2bcb}\n       {x42780000 x44680000 x3eb02c0b}\n       {x43000000 x44770000 x3eb12c4b}\n       {x43620000 x44850000 x3eb62d8b}\n       {x437e0000 x44870000 x3eb2acab}\n       {x43a20000 x448b8000 0}}}\n     {tx x42780000 x42fb999a x44732666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc30c0000 x44708000 1}\n       {xc3140000 x44700000 x3e8721c8}\n       {xc31c0000 x44700000 x3ebfafec}\n       {xc3120000 x44700000 x3ede378e}\n       {xc2bc0000 x44700000 x3eedbb6f}\n       {xc0800000 x446f8000 x3f05a168}\n       {x42600000 x446f8000 x3f0e2389}\n       {x43340000 x446f8000 x3f13e4f9}\n       {x43c20000 x44700000 x3eaeabab}\n       {x43d20000 x44708000 0}}}\n     {tx x42780000 x420e6666 x446ff333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44198000 x448d4000 x3dfc3f10}\n       {x441a0000 x448d4000 x3e3a2e8c}\n       {x441b0000 x448d4000 x3e59364e}\n       {x441b8000 x448d0000 x3e842108}\n       {x441c8000 x448bc000 x3ea2288a}\n       {x44220000 x44884000 x3ecab2ad}\n       {x44288000 x44820000 x3ee4390e}\n       {x44318000 x44760000 x3eef3bcf}\n       {x443a0000 x446a0000 x3eee3b8f}\n       {x44498000 x445b8000 x3e7a3e90}}}\n     {tx x42780000 x44270000 x44840ccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440d0000 x44768000 1}\n       {x44128000 x446f8000 x3e8721c8}\n       {x442a8000 x44530000 x3e9e278a}\n       {x443b0000 x443f0000 x3e9324c9}\n       {x44490000 x442d0000 0}}}\n     {tx x42780000 x44293333 x44543333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x447f8000 x447e8000 x3e0d2349}\n       {x447f8000 x447d0000 x3e52348d}\n       {x447f8000 x44710000 x3eb42d0b}\n       {x447f0000 x44698000 x3ec7b1ec}\n       {x447e8000 x44550000 x3ee9ba6f}\n       {x447d0000 x44240000 x3f09e279}\n       {x447c8000 x43e60000 x3ef0bc2f}\n       {x447e8000 x43ce0000 x3ec2308c}\n       {x44808000 x43b80000 0}}}\n     {tx x42780000 x447ec71c x443971c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44450000 x445b8000 1}\n       {x44438000 x445b8000 x3e392e4c}\n       {x44410000 x445b0000 x3e85a168}\n       {x44410000 x445a8000 x3e952549}\n       {x44420000 x445a0000 x3eaaaaab}\n       {x44438000 x445a0000 x3eb42d0b}\n       {x444d0000 x445a8000 x3ecdb36d}\n       {x44648000 x445d8000 x3ef43d0f}\n       {x446f0000 x445e8000 x3f0761d8}\n       {x4495c000 x44690000 x3f2328ca}\n       {x44ae0000 x44708000 x3eb5ad6b}\n       {x44b14000 x44710000 0}}}\n     {tx x42780000 x446ce000 x44602000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43560000 x43a90000 1}\n       {x43880000 x43ba0000 x3eaaaaab}\n       {x43b90000 x43d40000 x3ed7b5ed}\n       {x43d70000 x43e30000 x3eedbb6f}\n       {x443f8000 x44108000 x3f092249}\n       {x44904000 x442a8000 x3f0fa3e9}\n       {x44b98000 x443a8000 x3e9b26ca}}}\n     {tx x42780000 x44278000 x44005b6e}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x442c0000 x43d90000 1}\n       {x44300000 x43dc0000 x3e8e2389}\n       {x443b0000 x43e30000 x3ea328ca}\n       {x444e0000 x43ea0000 x3ed1344d}\n       {x44588000 x43ef0000 x3ee9ba6f}\n       {x44874000 x43fd0000 x3f18661a}\n       {x44a04000 x44030000 x3efa3e90}\n       {x44a3c000 x44030000 x3ea729ca}}}\n     {tx x42780000 x446a8000 x43ef4000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43680000 x43940000 x3eb8ae2c}\n       {x43680000 x43950000 x3ec4b12c}\n       {x43830000 x439e0000 x3ec4b12c}\n       {x43a10000 x43ad0000 x3ec9324d}\n       {x43b40000 x43b60000 x3ecd334d}\n       {x44188000 x43e30000 x3f02e0b8}\n       {x44720000 x44090000 x3f0fe3f9}\n       {x4483c000 x440d0000 x3f0ba2e9}\n       {x449d8000 x44150000 0}}}\n     {tx x42780000 x441338e4 x43d21c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43e30000 x43de0000 1}\n       {x43f60000 x43e60000 x3e9725c9}\n       {x440e0000 x43f00000 x3ec0b02c}\n       {x442c0000 x43fd0000 x3ee5394e}\n       {x443e0000 x44030000 x3ee7b9ee}\n       {x44858000 x44130000 x3dfe3f90}}}\n     {tx x42780000 x4427eaab x43fa2aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43920000 x43d30000 1}\n       {x43980000 x43d30000 x3dc6318c}}}\n     {tx x42780000 x43950000 x43d30000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43900000 x43e40000 1}\n       {x439b0000 x43e00000 x3e9f27ca}\n       {x43b80000 x43d80000 x3ea2a8aa}\n       {x43ca0000 x43d60000 x3eaaaaab}\n       {x43f50000 x43ce0000 x3ec4b12c}\n       {x442d0000 x43c70000 x3ed1b46d}\n       {x44550000 x43ca0000 x3e753d4f}}}\n     {tx x42780000 x43f32492 x43d4b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43a20000 x43b40000 1}\n       {x43a70000 x43b40000 x3eab2acb}\n       {x43ad0000 x43b50000 x3eaeabab}\n       {x43b80000 x43b60000 x3ebdaf6c}\n       {x43ec0000 x43b60000 x3edbb6ee}\n       {x44018000 x43b80000 x3eeabaaf}\n       {x442d8000 x43bb0000 x3ea5a96a}\n       {x44350000 x43bb0000 0}}}\n     {tx x42780000 x43ec4000 x43b6e000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43da0000 x43840000 1}\n       {x43dd0000 x43880000 x3e002008}\n       {x43e20000 x43910000 x3e4731cc}\n       {x43ea0000 x43a00000 x3e8721c8}\n       {x44050000 x43c70000 x3e9ea7aa}\n       {x440a8000 x43d20000 x3e9ea7aa}\n       {x44138000 x43e00000 0}}}\n     {tx x42780000 x43f82492 x43ac4925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44158000 x443d0000 1}\n       {x44160000 x443d0000 1}\n       {x44168000 x443d8000 x3e64390e}\n       {x44180000 x44378000 x3ef63d8f}\n       {x44180000 x44338000 x3efcbf30}\n       {x44180000 x442e8000 x3f016058}\n       {x44160000 x44188000 x3f0ca329}\n       {x440d8000 x43dc0000 x3f17e5f9}\n       {x44098000 x43c50000 x3f17e5f9}\n       {x43ee0000 x436e0000 x3f09a269}\n       {x43d90000 x432c0000 x3ebc2f0c}\n       {x43d80000 x432c0000 x3e91a469}\n       {x43d80000 x43320000 0}}}\n     {tx x42780000 x4408cec5 x43fec4ec}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44008000 x44378000 1}\n       {x44030000 x44380000 x3dbe2f8c}\n       {x44090000 x44390000 x3d922489}\n       {x440a8000 x44390000 x3d302c0b}\n       {x440c8000 x44390000 x3d042108}\n       {x440d8000 x44390000 x3cc8320d}\n       {x44108000 x443a0000 x3cb82e0c}\n       {x44130000 x443b0000 0}}}\n     {tx x42780000 x440a9000 x44391000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43eb0000 x441f0000 1}\n       {x43ee0000 x441d0000 x3de4390e}\n       {x43f80000 x440b0000 x3e9aa6aa}\n       {x43fd0000 x43f70000 x3eadab6b}\n       {x44010000 x43b30000 x3ecd334d}\n       {x44010000 x43a10000 x3ed0340d}\n       {x43fa0000 x43420000 x3ece338d}\n       {x43fd0000 x43260000 x3d8c2309}}}\n     {tx x42780000 x43f92000 x43d1a000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43980000 x441c0000 x3e94a529}\n       {x439c0000 x441b0000 x3e97a5e9}\n       {x43a10000 x44188000 x3e9ba6ea}\n       {x43c00000 x43fd0000 x3ed0b42d}\n       {x43ca0000 x43ea0000 x3edab6ae}\n       {x43f40000 x43940000 x3ef23c8f}\n       {x440f0000 x431a0000 x3ef1bc6f}\n       {x44130000 x43020000 x3ee83a0f}\n       {x441b8000 x42c00000 0}}}\n     {tx x42780000 x43de0000 x43c2aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x432a0000 x440c8000 x3de4390e}\n       {x43320000 x44098000 x3e842108}\n       {x434c0000 x44038000 x3eb92e4c}\n       {x43620000 x43fc0000 x3ed2b4ad}\n       {x43a80000 x43b80000 x3f00a028}\n       {x43e00000 x43480000 x3f09a269}\n       {x43ef0000 x431e0000 x3f09a269}\n       {x44120000 x41e00000 x3ed0b42d}\n       {x44170000 x41200000 0}}}\n     {tx x42780000 x43b35555 x43a171c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2180000 x439a0000 1}\n       {xc0000000 x43960000 x3e9b26ca}\n       {x42c40000 x438e0000 x3ece338d}\n       {x43640000 x43890000 x3eecbb2f}\n       {x43f60000 x438e0000 x3ef33ccf}\n       {x440a0000 x43900000 x3ecdb36d}\n       {x44180000 x43940000 0}}}\n     {tx x42780000 x438a6db7 x43914925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {0 x43a20000 x3e802008}\n       {x41400000 x43a20000 x3e9ea7aa}\n       {x42800000 x43a10000 x3ecc330d}\n       {x43180000 x439e0000 x3ef43d0f}\n       {x434c0000 x439d0000 x3f006018}\n       {x43e20000 x439c0000 x3f19264a}\n       {x44370000 x43a60000 x3f152549}\n       {x44468000 x43a90000 x3f012048}\n       {x44540000 x43ae0000 0}}}\n     {tx x42780000 x43b50000 x43a2c71c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc1000000 x43c50000 1}\n       {x42000000 x43c00000 x3e9c270a}\n       {x430e0000 x43b80000 x3eb5ad6b}\n       {x438c0000 x43b20000 x3ed5354d}\n       {x441a0000 x43af0000 x3ef4bd2f}\n       {x44308000 x43b00000 x3ef4bd2f}\n       {x447c0000 x43ba0000 x3dac2b0b}}}\n     {tx x42780000 x43c64925 x43b80000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2680000 x43cc0000 x3e743d0f}\n       {xc2680000 x43cd0000 x3e90a429}\n       {xc1c00000 x43d00000 x3e94a529}\n       {xc1200000 x43d00000 x3e97a5e9}\n       {x40800000 x43d00000 x3e9e278a}\n       {x41c00000 x43ce0000 x3ea3a8ea}\n       {x42380000 x43cc0000 x3eab2acb}\n       {x42900000 x43ca0000 x3eb4ad2b}\n       {x43580000 x43ba0000 x3ee338ce}\n       {x43c50000 x43b00000 x3ef53d4f}\n       {x43d80000 x43b00000 x3eeb3acf}\n       {x43fa0000 x43af0000 0}}}\n     {tx x42780000 x43002aab x43c48000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43fa0000 x44808000 x3d50340d}\n       {x43fa0000 x4480c000 x3e8a2289}\n       {x43f60000 x44800000 x3ec8b22d}\n       {x43f20000 x447e8000 x3ecdb36d}\n       {x43d40000 x446c0000 x3ed6b5ad}\n       {x43a00000 x44400000 x3f066198}\n       {x43900000 x44318000 x3f086219}\n       {x431e0000 x43ee0000 x3f04e138}\n       {x42c80000 x43880000 x3eaeabab}\n       {x42c00000 x43680000 x3e8aa2a9}\n       {x42c00000 x434a0000 0}}}\n     {tx x42780000 x439d2e8c x442f1746}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x438b0000 x43960000 1}\n       {x43880000 x43b90000 x3e5a368e}\n       {x43860000 x43e60000 x3e802008}\n       {x438e0000 x440e0000 x3e882209}\n       {x43970000 x441c8000 x3e892249}\n       {x43d40000 x44510000 x3ea1284a}\n       {x44048000 x446d0000 0}}}\n     {tx x42780000 x43a86db7 x4412b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x438a0000 x443f0000 x3da4290a}\n       {x438c0000 x443e0000 x3e18260a}\n       {x43940000 x44360000 x3e93a4e9}\n       {x439b0000 x44290000 x3ebdaf6c}\n       {x43af0000 x44018000 x3efbbef0}\n       {x43b60000 x43eb0000 x3f0360d8}\n       {x43d70000 x43860000 x3f09a269}\n       {x43fb0000 x42f40000 x3eb8ae2c}\n       {x44018000 x42d40000 x3e812048}}}\n     {tx x42780000 x43b8c71c x43f51c72}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x435a0000 x44278000 x3ce83a0f}\n       {x435a0000 x44260000 x3e112449}\n       {x435a0000 x44220000 x3e713c4f}\n       {x435a0000 x441b0000 x3eaaaaab}\n       {x437e0000 x43f70000 x3ef43d0f}\n       {x43860000 x43df0000 x3efdbf70}\n       {x43a40000 x436e0000 x3f1765d9}\n       {x43cd0000 x42680000 x3f18a62a}\n       {x43d70000 x41c00000 x3f1364d9}\n       {x43ee0000 xc2080000 0}}}\n     {tx x42780000 x4397e666 x43bf6666}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43b40000 x44090000 1}\n       {x43b60000 x44008000 x3e882209}\n       {x43bc0000 x43d90000 x3ea2a8aa}\n       {x43c10000 x43ac0000 x3eb82e0c}\n       {x43c70000 x432c0000 x3eca328d}\n       {x43ca0000 x430e0000 x3ebe2f8c}\n       {x43ce0000 x42d00000 0}}}\n     {tx x42780000 x43c0db6e x43a14925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x435a0000 x43900000 1}\n       {x43680000 x438f0000 x3e6d3b4f}\n       {x437e0000 x438c0000 x3e743d0f}\n       {x439b0000 x43860000 x3e892249}\n       {x43ad0000 x43850000 x3e8e2389}\n       {x43c10000 x43830000 x3e9725c9}\n       {x44160000 x43800000 x3ed0b42d}\n       {x44250000 x43800000 x3ed3b4ed}\n       {x44558000 x43860000 x3e8ea3a9}\n       {x445d8000 x43880000 0}}}\n     {tx x42780000 x43ed4ccd x4387199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44158000 x43100000 1}\n       {x44158000 x43120000 x3e6739ce}\n       {x44168000 x43180000 x3e7e3f90}\n       {x441e8000 x431e0000 x3ea4290a}\n       {x442d8000 x43200000 x3ec7b1ec}\n       {x445d8000 x432a0000 x3f062188}\n       {x446b0000 x432c0000 x3f062188}\n       {x44900000 x43360000 x3e912449}}}\n     {tx x42780000 x443ec000 x43208000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44578000 x43700000 1}\n       {x44530000 x436c0000 x3dda368e}\n       {x44500000 x43680000 x3dfe3f90}\n       {x444c8000 x43660000 x3e5e378e}\n       {x44518000 x43720000 x3ea8aa2b}\n       {x44558000 x437a0000 x3eb62d8b}\n       {x445b8000 x43820000 x3ebbaeec}\n       {x44620000 x43860000 x3ebbaeec}\n       {x447e8000 x439c0000 x3ea5294a}\n       {x44860000 x43a30000 0}}}\n     {tx x42780000 x445f0000 x4381cccd}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44988000 x43600000 1}\n       {x4497c000 x435c0000 x3ea2288a}\n       {x44974000 x435a0000 x3ea5a96a}\n       {x449ac000 x43700000 x3eb3aceb}\n       {x449c8000 x437a0000 x3e892249}\n       {x449e8000 x43800000 0}}}\n     {tx x42780000 x449a3555 x436aaaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44878000 x433e0000 1}\n       {x44874000 x43380000 x3e20280a}\n       {x44880000 x43360000 x3e2a2a8b}\n       {x448b8000 x433c0000 x3e1f27ca}\n       {x448d8000 x43420000 x3e1c270a}\n       {x44934000 x43540000 x3c882209}}}\n     {tx x42780000 x448b2aab x433faaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446a0000 x42f80000 1}\n       {x44730000 x43100000 x3e362d8b}\n       {x44858000 x43440000 x3e2b2acb}\n       {x448e8000 x436c0000 x3e5d374e}\n       {x449d4000 x43950000 x3e9b26ca}\n       {x449f4000 x43980000 x3e9b26ca}\n       {x449dc000 x43920000 x3d64390e}\n       {x449b8000 x438b0000 x3ce0380e}\n       {x44980000 x43840000 0}}}\n     {tx x42780000 x4490071c x436d5555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x445e8000 x42f00000 1}\n       {x44608000 x42f40000 x3e753d4f}\n       {x44640000 x43020000 x3e773dcf}\n       {x44680000 x43100000 x3e793e50}\n       {x447e0000 x43440000 x3e793e50}\n       {x44838000 x435a0000 x3e793e50}\n       {x44944000 x43950000 x3e8fa3e9}\n       {x4497c000 x439e0000 x3e8aa2a9}\n       {x449d8000 x43aa0000 0}}}\n     {tx x42780000 x4481f1c7 x43515555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446e0000 x43540000 1}\n       {x44720000 x43600000 x3e56358d}\n       {x44768000 x436e0000 x3e862188}\n       {x447c8000 x437e0000 x3e97a5e9}\n       {x448a0000 x439a0000 x3ebaaeac}\n       {x4491c000 x43a70000 x3ec2308c}\n       {x449a0000 x43b30000 x3d60380e}}}\n     {tx x42780000 x448476db x4389b6db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44934000 x43a80000 1}\n       {x44908000 x439a0000 x3dd2348d}}}\n     {tx x42780000 x4491e000 x43a10000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44ab4000 x43e60000 1}\n       {x44a88000 x43ce0000 x3ea729ca}\n       {x44a7c000 x43c40000 x3eb62d8b}\n       {x44a68000 x43b60000 x3ec6318c}\n       {x44a58000 x43a90000 x3ece338d}\n       {x44a1c000 x436c0000 x3eceb3ad}\n       {x449f8000 x43320000 x3e5a368e}}}\n     {tx x42780000 x44a5d249 x43aa0000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44a80000 x43f50000 1}\n       {x44a58000 x43e20000 x3e54350d}\n       {x44a24000 x43ca0000 x3e8e2389}\n       {x449e8000 x43ad0000 x3ead2b4b}\n       {x44934000 x43420000 x3ed334cd}\n       {x44904000 x431c0000 x3ed7b5ed}\n       {x44898000 x42100000 x3ece338d}\n       {x44898000 x41000000 0}}}\n     {tx x42780000 x44989800 x43826000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c2c000 x44248000 1}\n       {x44c28000 x44248000 1}\n       {x44c18000 x44240000 x3e743d0f}\n       {x44c04000 x44218000 x3e952549}\n       {x44bf8000 x441f8000 x3e9fa7ea}\n       {x44ba0000 x44108000 x3eba2e8c}\n       {x44af4000 x43ea0000 x3ed0b42d}\n       {x449c0000 x438c0000 x3eddb76e}\n       {x44948000 x43420000 0}}}\n     {tx x42780000 x44b55c72 x4404aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44930000 x437c0000 1}\n       {x44940000 x43840000 x3dc6318c}\n       {x44980000 x43950000 x3e3e2f8c}\n       {x449f8000 x43ac0000 x3e8aa2a9}\n       {x44b84000 x43f60000 x3ee0380e}\n       {x44d54000 x44160000 x3ee739ce}\n       {x44db8000 x441b8000 x3ed735cd}\n       {x44e58000 x44228000 0}}}\n     {tx x42780000 x44b5a000 x43dc2000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44bcc000 x443c0000 1}\n       {x44bc8000 x443c0000 x3e793e50}\n       {x44bd4000 x443c8000 x3ea5294a}\n       {x44bf0000 x443d0000 x3ead2b4b}\n       {x44c1c000 x443e0000 x3ebeafac}\n       {x44d38000 x44468000 x3efabeb0}\n       {x44d98000 x44498000 x3f002008}\n       {x44f00000 x44558000 x3e6e3b8f}}}\n     {tx x42780000 x44ca8800 x4442a000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b68000 x44170000 1}\n       {x44b68000 x44190000 x3e54350d}\n       {x44b9c000 x441e8000 x3e862188}\n       {x44bf8000 x44270000 x3ea92a4b}\n       {x44d3c000 x44430000 x3ed0340d}\n       {x44e88000 x44608000 x3ed5354d}\n       {x44ed4000 x44678000 x3ed5354d}\n       {x44fa0000 x44768000 x3ec3b0ec}\n       {x44fd8000 x44798000 x3eb7adeb}\n       {x45014000 x447e8000 0}}}\n     {tx x42780000 x44da9333 x444b199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b40000 x44798000 1}\n       {x44b40000 x447a0000 x3e5735cd}\n       {x44b40000 x44790000 x3e882209}\n       {x44b50000 x44770000 x3e9a268a}\n       {x44bd4000 x445d0000 x3ebbaeec}\n       {x44c4c000 x44400000 x3ec4310c}\n       {x44ca0000 x44330000 0}}}\n     {tx x42780000 x44bb0000 x4462c925}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x4498c000 x446d8000 1}\n       {x44980000 x446d8000 x3de0380e}\n       {x44970000 x446d0000 x3e20280a}\n       {x4495c000 x446c0000 x3e42308c}\n       {x44950000 x446a8000 x3e5a368e}\n       {x44914000 x44608000 x3e95a569}\n       {x448d4000 x44438000 x3ea328ca}\n       {x448a8000 x44248000 x3e842108}\n       {x448a8000 x441e8000 x3e282a0b}}}\n     {tx x42780000 x449271c7 x4455f1c7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x447a0000 x44240000 1}\n       {x447f8000 x44240000 1}\n       {x4483c000 x44240000 x3eaf2bcb}\n       {x44884000 x44240000 x3ec8b22d}\n       {x44930000 x44258000 x3ee0380e}\n       {x449e8000 x44280000 x3ee5394e}\n       {x44a80000 x442b0000 x3ed0b42d}\n       {x44ac0000 x442c0000 x3ea2288a}\n       {x44ae8000 x442d0000 0}}}\n     {tx x42780000 x4494f8e4 x4427471c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44798000 x44260000 1}\n       {x44768000 x44270000 x3da0280a}\n       {x44720000 x44270000 x3d2c2b0b}\n       {x446c0000 x44270000 x3d302c0b}\n       {x44680000 x44260000 x3d8a2289}\n       {x44570000 x44200000 x3e282a0b}\n       {x44450000 x44198000 x3e4d334d}\n       {x44410000 x44188000 x3e5334cd}\n       {x44380000 x44150000 x3e87a1e8}\n       {x443d0000 x44160000 x3e9ca72a}\n       {x44560000 x441f8000 x3ec7b1ec}\n       {x44608000 x44230000 x3edb36ce}\n       {x448bc000 x44350000 x3f0a6299}\n       {x44a88000 x44428000 x3ec9b26d}\n       {x44adc000 x44440000 x3e8721c8}}}\n     {tx x42780000 x446f199a x44262222}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x447c0000 x44060000 1}\n       {x447c0000 x44070000 x3dc0300c}\n       {x447d0000 x44098000 x3e6e3b8f}\n       {x447e0000 x440c8000 x3e822088}\n       {x4480c000 x44120000 x3dc8320d}}}\n     {tx x42780000 x447db333 x440a999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44690000 x43f70000 1}\n       {x446a8000 x43fb0000 x3e2f2bcb}\n       {x446d0000 x43fe0000 x3e5334cd}\n       {x44738000 x44048000 x3e95a569}\n       {x44780000 x44080000 x3eaf2bcb}\n       {x447e0000 x440c8000 x3ec0300c}\n       {x44824000 x44110000 x3ed2b4ad}\n       {x448a0000 x441c0000 x3eeb3acf}\n       {x44998000 x44340000 x3eeabaaf}\n       {x449d0000 x443a0000 x3ed5354d}\n       {x44a38000 x44470000 0}}}\n     {tx x42780000 x448562e9 x44161746}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44020000 x430e0000 1}\n       {x44020000 x43200000 x3e96a5a9}\n       {x44070000 x43440000 x3e9da76a}\n       {x44128000 x43720000 x3ea3a8ea}\n       {x44378000 x43b60000 x3ed1344d}\n       {x44428000 x43c70000 x3ed1b46d}\n       {x446a0000 x44030000 x3e5e378e}\n       {x44720000 x44090000 0}}}\n     {tx x42780000 x442e7000 x43a0e000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44160000 x43c20000 1}\n       {x44170000 x43c00000 x3ea0280a}\n       {x441b0000 x43bc0000 x3ea9aa6b}\n       {x44270000 x43b50000 x3ec6318c}\n       {x44360000 x43ae0000 x3ed2b4ad}\n       {x44570000 x43a90000 x3eceb3ad}\n       {x445e0000 x43a90000 x3ec6b1ac}\n       {x44700000 x43ac0000 0}}}\n     {tx x42780000 x44394000 x43b3e000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x440d8000 x44170000 1}\n       {x440d8000 x44180000 x3e693a4f}\n       {x440d8000 x44168000 x3e9fa7ea}\n       {x440e0000 x44140000 x3eae2b8b}\n       {x44100000 x44108000 x3eb9ae6c}\n       {x441e0000 x43e50000 x3ef23c8f}\n       {x442d8000 x43950000 x3f12e4b9}\n       {x443c8000 x432c0000 x3f152549}\n       {x44400000 x431c0000 x3f122489}\n       {x44470000 x43100000 x3dae2b8b}}}\n     {tx x42780000 x44222666 x43d2999a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43f20000 x441f0000 1}\n       {x43ef0000 x44218000 x3e9ba6ea}\n       {x43ee0000 x44228000 x3ec1b06c}\n       {x43f00000 x441e8000 x3eefbbef}\n       {x43f40000 x441a0000 x3efc3f10}\n       {x44000000 x440e0000 x3f06e1b8}\n       {x44138000 x43d00000 x3f17e5f9}\n       {x44260000 x437a0000 x3f1ce73a}\n       {x442a8000 x43580000 x3f1da76a}\n       {x44370000 x43100000 x3f0fe3f9}\n       {x443a0000 x43180000 0}}}\n     {tx x42780000 x440fdd17 x43e00000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44120000 x44190000 1}\n       {x44128000 x44130000 x3e5735cd}\n       {x44128000 x440c8000 x3e5735cd}\n       {x440c8000 x43fa0000 x3e9ea7aa}\n       {x440a8000 x43f20000 x3e9ea7aa}\n       {x44070000 x43e50000 0}}}\n     {tx x42780000 x440e2aab x44058000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43fb0000 x443d0000 x3e61384e}\n       {x43fb0000 x443c8000 x3e7e3f90}\n       {x43fb0000 x44390000 x3e952549}\n       {x43fb0000 x44330000 x3ea729ca}\n       {x43fb0000 x442e8000 x3eae2b8b}\n       {x44010000 x44190000 x3ebdaf6c}\n       {x44030000 x44090000 x3ebaaeac}\n       {x44038000 x44070000 x3ea2a8aa}\n       {x44040000 x44070000 0}}}\n     {tx x42780000 x43ffc71c x44240000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44078000 x447a0000 1}\n       {x44080000 x447b0000 x3dc6318c}\n       {x44080000 x447b8000 x3e19264a}\n       {x44070000 x44798000 x3e8a2289}\n       {x44050000 x44780000 x3e94a529}\n       {x44038000 x44708000 x3ea4290a}\n       {x44018000 x44548000 x3ec1b06c}\n       {x44018000 x444a0000 x3ec6318c}\n       {x43fc0000 x44190000 x3eca328d}\n       {x43f70000 x43df0000 x3dd6358d}}}\n     {tx x42780000 x44038ccd x4458f333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43fd0000 x446f0000 1}\n       {x43fc0000 x446f8000 x3e2d2b4b}\n       {x43fa0000 x446f8000 x3e8a2289}\n       {x43fa0000 x446e0000 x3eb5ad6b}\n       {x43fb0000 x446c0000 x3ebc2f0c}\n       {x44038000 x44618000 x3eccb32d}\n       {x44170000 x443f8000 x3ef7bdef}\n       {x441c0000 x44350000 x3f00a028}\n       {x442e0000 x440d8000 x3f04e138}\n       {x443a0000 x43e90000 x3eb62d8b}\n       {x443f0000 x43de0000 0}}}\n     {tx x42780000 x44130ba3 x444445d1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x446d8000 x448a0000 x3daa2a8b}\n       {x446d0000 x448a0000 x3e1324c9}\n       {x446c8000 x4489c000 x3e392e4c}\n       {x446c8000 x44898000 x3e49324d}\n       {x446a8000 x44878000 x3e6a3a8f}\n       {x44678000 x44848000 x3e91a469}\n       {x44638000 x44800000 x3eb02c0b}\n       {x44608000 x447b8000 x3ebc2f0c}\n       {x445d0000 x44760000 x3ec4b12c}\n       {x44580000 x44708000 x3ecc330d}\n       {x44438000 x445d0000 x3ec6318c}\n       {x443a8000 x44570000 0}}}\n     {tx x42780000 x445fb555 x447fb555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44610000 x44670000 1}\n       {x44610000 x44678000 x3e162589}\n       {x44648000 x446d0000 x3dfa3e90}\n       {x446e0000 x44770000 x3e49324d}\n       {x44760000 x447f8000 x3e94a529}\n       {x44770000 x44808000 x3e99264a}\n       {x44788000 x44814000 x3e9ba6ea}\n       {x44740000 x44808000 0}}}\n     {tx x42780000 x446dc000 x4476d000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44040000 x446d8000 1}\n       {x440c0000 x446b0000 1}\n       {x44158000 x44698000 x3e6d3b4f}\n       {x443b0000 x44608000 x3ea8aa2b}\n       {x44578000 x445a8000 x3ed2348d}\n       {x4488c000 x444e0000 x3ee338ce}\n       {x44a30000 x44488000 x3db82e0c}}}\n     {tx x42780000 x444b5b6e x445e36db}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43d80000 x44710000 1}\n       {x43e30000 x446e0000 x3e892249}\n       {x44018000 x44680000 x3eb42d0b}\n       {x44158000 x44640000 x3ec4b12c}\n       {x443d0000 x445e0000 x3ebaaeac}\n       {x44458000 x445d8000 x3ea328ca}\n       {x44510000 x445c0000 0}}}\n     {tx x42780000 x441c9249 x4464edb7}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43da0000 x447f8000 1}\n       {x43e30000 x447e0000 x3e86a1a8}\n       {x43fc0000 x44788000 x3eb62d8b}\n       {x440f0000 x44728000 x3ed9b66e}\n       {x44188000 x446f8000 x3ee0b82e}\n       {x44398000 x44678000 x3ed735cd}\n       {x44468000 x44668000 0}}}\n     {tx x42780000 x4412db6e x44732492}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43600000 x4485c000 1}\n       {x435c0000 x44860000 x3e352d4b}\n       {x435c0000 x4486c000 x3e87a1e8}\n       {x43720000 x44850000 x3ec9324d}\n       {x43820000 x44838000 x3ed9364e}\n       {x438b0000 x44818000 x3eddb76e}\n       {x43960000 x447f8000 x3edf37ce}\n       {x43c10000 x44728000 x3ecd334d}\n       {x43cb0000 x44700000 x3eb7adeb}\n       {x43d90000 x446c8000 0}}}\n     {tx x42780000 x43948000 x44806000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43a80000 x44760000 x3e703c0f}\n       {x43aa0000 x44770000 x3e8a2289}\n       {x43be0000 x447c8000 x3eacab2b}\n       {x43d00000 x4480c000 x3ebc2f0c}\n       {x43da0000 x44820000 x3ebfafec}\n       {x43f60000 x44844000 0}}}\n     {tx x42780000 x43c80000 x447e9555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42200000 x444f0000 1}\n       {x42100000 x444e8000 x3d962589}\n       {x42000000 x444e0000 x3e4f33cd}\n       {x42680000 x44510000 x3e902409}\n       {x43020000 x44590000 x3ea7a9ea}\n       {x431e0000 x445d0000 x3eb0ac2b}\n       {x43620000 x44638000 x3ec5314c}\n       {x43850000 x44678000 x3ece338d}\n       {x43d80000 x44780000 x3edeb7ae}\n       {x43ec0000 x447a0000 x3ed6b5ad}\n       {x44188000 x447f0000 x3daa2a8b}}}\n     {tx x42780000 x435fa2e9 x44615174}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42d80000 x445a8000 1}\n       {x42c80000 x44590000 x3d282a0b}\n       {x42c00000 x44580000 x3d18260a}\n       {x42b00000 x44570000 x3c40300c}}}\n     {tx x42780000 x42c40000 x4458a000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc0000000 x445a8000 1}\n       {xc1000000 x445a8000 x3e743d0f}\n       {xc1200000 x445a8000 x3e9a268a}\n       {xc1000000 x445a8000 x3e9b26ca}\n       {x41200000 x445a8000 x3e9da76a}\n       {x41800000 x445a8000 x3ea0280a}\n       {x42200000 x44580000 x3ebc2f0c}\n       {x431a0000 x444c0000 x3ef23c8f}\n       {x43980000 x44428000 x3f006018}\n       {x43ac0000 x44410000 x3f03a0e8}\n       {x43f60000 x443e0000 x3f06e1b8}\n       {x44138000 x443e0000 0}}}\n     {tx x42780000 x43202aab x44503555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {xc2600000 x44230000 1}\n       {xc2600000 x44220000 x3e783e10}\n       {xc2100000 x441f8000 x3e94a529}\n       {x40800000 x441c0000 x3eb0ac2b}\n       {x42080000 x44198000 x3eb8ae2c}\n       {x428c0000 x44170000 x3ebc2f0c}\n       {x42d80000 x44140000 x3ec6318c}\n       {x43950000 x44070000 x3edfb7ee}\n       {x43af0000 x44038000 x3ee4390e}\n       {x44130000 x43de0000 x3eef3bcf}\n       {x44480000 x43bb0000 x3ebfafec}\n       {x44560000 x43b20000 0}}}\n     {tx x42780000 x4376aaab x4409c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x41200000 x440f8000 x3e693a4f}\n       {x41b00000 x440e0000 x3ea1284a}\n       {x42400000 x440d0000 x3ec2308c}\n       {x43000000 x44098000 x3ed3b4ed}\n       {x43120000 x44098000 x3ebe2f8c}\n       {x43240000 x44098000 0}}}\n     {tx x42780000 x42acaaab x440bd555}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x430e0000 x443d0000 x3e6e3b8f}\n       {x430e0000 x443a0000 x3e90a429}\n       {x43120000 x44378000 x3e9b26ca}\n       {x431a0000 x44348000 x3ea328ca}\n       {x43480000 x44210000 x3eaf2bcb}\n       {x43580000 x441a0000 x3eb2acab}\n       {x438f0000 x43eb0000 x3ec1b06c}\n       {x43ae0000 x439b0000 x3ebeafac}\n       {x43bf0000 x43660000 0}}}\n     {tx x42780000 x43600000 x44112aab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x43890000 x441c0000 1}\n       {x438f0000 x441b8000 x3e6b3acf}\n       {x43960000 x44198000 x3e8b22c9}\n       {x43ac0000 x44158000 x3eb5ad6b}\n       {x43c70000 x440f8000 x3ebfafec}\n       {x44070000 x44000000 x3ec0b02c}\n       {x44128000 x43f50000 x3ec0b02c}\n       {x44440000 x43c00000 x3ed334cd}\n       {x44758000 x43850000 x3eeebbaf}\n       {x44908000 x43280000 x3ee739ce}\n       {x4494c000 x43140000 x3edeb7ae}\n       {x449d4000 x43000000 x3e6b3acf}}}\n     {tx x42780000 x4428b555 x43d5aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44e54000 x44470000 1}\n       {x44e48000 x44470000 x3e4d334d}\n       {x44e3c000 x44470000 x3e6d3b4f}\n       {x44e18000 x44470000 x3ea6a9aa}\n       {x44e0c000 x44480000 x3ead2b4b}\n       {x44de4000 x44488000 x3ebc2f0c}\n       {x44d64000 x44490000 x3ed1b46d}\n       {x44c68000 x44490000 x3edcb72e}\n       {x44c14000 x44488000 x3eddb76e}\n       {x44a88000 x44450000 x3ee0380e}\n       {x448a0000 x443d8000 x3ee3b8ee}\n       {x44814000 x443b0000 x3ee4390e}\n       {x443f8000 x442d8000 x3eedbb6f}\n       {x43fc0000 x441f8000 x3eedbb6f}\n       {x43e00000 x441d0000 x3ee83a0f}\n       {x43920000 x44168000 x3e93a4e9}\n       {x43860000 x44160000 0}}}\n     {tx x42780000 x449de969 x443a0f0f}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x448bc000 x44860000 1}\n       {x448cc000 x44860000 x3e6338ce}\n       {x44900000 x44858000 x3e952549}\n       {x44928000 x44854000 x3e9f27ca}\n       {x44988000 x4483c000 x3ea7a9ea}\n       {x44a80000 x44800000 x3eb3aceb}\n       {x44acc000 x447e0000 x3eb6adab}\n       {x44c28000 x44768000 x3ebc2f0c}\n       {x44da8000 x44708000 x3ec0300c}\n       {x44eb8000 x446d0000 x3d962589}}}\n     {tx x42780000 x44ab4666 x4480599a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44e14000 x44540000 1}\n       {x44e14000 x44500000 x3d942509}\n       {x44e24000 x444e0000 x3d9e278a}\n       {x44e2c000 x444d0000 x3d9e278a}\n       {x44e3c000 x444c8000 0}}}\n     {tx x42780000 x44e24000 x444f199a}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44de4000 x44710000 x3de0380e}\n       {x44de0000 x44710000 x3e352d4b}\n       {x44de4000 x44728000 x3e6d3b4f}\n       {x44df0000 x44738000 x3e922489}\n       {x44df8000 x44760000 x3ea1284a}\n       {x44e50000 x44838000 x3eab2acb}\n       {x44ea0000 x448bc000 x3e952549}\n       {x44ebc000 x448e4000 0}}}\n     {tx x42780000 x44e27800 x447f2000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44c28000 x44450000 1}\n       {x44c14000 x44430000 x3d342d0b}\n       {x44bec000 x44400000 x3dd4350d}\n       {x44bd0000 x443d8000 x3e122489}\n       {x44bc0000 x443d0000 x3e4f33cd}\n       {x44bd4000 x44400000 x3e5735cd}\n       {x44c40000 x444c8000 x3e952549}\n       {x44c70000 x44520000 x3e9da76a}\n       {x44d48000 x446b0000 x3ec0300c}\n       {x44e18000 x44820000 x3ebdaf6c}\n       {x44eb4000 x448bc000 x3d703c0f}}}\n     {tx x42780000 x44c92e8c x44550ba3}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b38000 x445e8000 1}\n       {x44b48000 x445d8000 x3e892249}\n       {x44bb8000 x445a8000 x3eb5ad6b}\n       {x44be8000 x44590000 x3ec1304c}\n       {x44c1c000 x44580000 x3ec5314c}\n       {x44c50000 x44570000 x3ec7b1ec}\n       {x44cb8000 x44548000 x3ec9324d}\n       {x44d3c000 x44530000 0}}}\n     {tx x42780000 x44c10000 x4458c000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44b68000 x44380000 1}\n       {x44b60000 x44380000 x3e64390e}\n       {x44b60000 x44390000 x3e802008}\n       {x44b60000 x443b0000 x3e922489}\n       {x44b78000 x44438000 x3eaaaaab}\n       {x44bec000 x445b0000 x3ee4390e}\n       {x44c58000 x44780000 x3ee93a4f}\n       {x44c88000 x44858000 0}}}\n     {tx x42780000 x44bb9800 x4450b000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x449c0000 x44720000 1}\n       {x449dc000 x446c8000 x3e5e378e}\n       {x44a28000 x445d8000 x3e783e10}\n       {x44a88000 x444a0000 x3e8da369}\n       {x44ac4000 x443f0000 x3ea92a4b}\n       {x44bcc000 x440c8000 x3efc3f10}\n       {x44d1c000 x43a60000 x3f096259}\n       {x44d70000 x43890000 x3f09a269}\n       {x44e74000 x428c0000 x3efb3ed0}\n       {x44ee0000 xc1b00000 0}}}\n     {tx x42780000 x44bdf99a x440bb333}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x449c8000 x43c00000 1}\n       {x449c0000 x43bc0000 x3e49324d}\n       {x449b8000 x43b80000 x3e8da369}\n       {x449b8000 x43b60000 x3ead2b4b}\n       {x449d8000 x43c60000 x3ee7b9ee}\n       {x44a94000 x43fe0000 x3f0de379}\n       {x44cc8000 x44360000 x3f23a8ea}\n       {x44ea8000 x44580000 x3f16a5a9}\n       {x44fd0000 x44690000 x3dc6318c}}}\n     {tx x42780000 x44b678e4 x4408aaab}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44958000 x447b8000 1}\n       {x44974000 x44790000 x3e292a4b}\n       {x44994000 x44760000 x3e65394e}\n       {x449c0000 x44720000 x3e8721c8}\n       {x44a28000 x44668000 x3eae2b8b}\n       {x44b20000 x44430000 x3ef33ccf}\n       {x44b68000 x44378000 x3effbff0}\n       {x44cc0000 x44040000 x3f14e539}\n       {x44e2c000 x43960000 x3f19665a}\n       {x44f78000 x42d00000 x3eccb32d}\n       {x44fd8000 x428c0000 0}}}\n     {tx x42780000 x44bbb45d x44280000}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x44288000 x443f0000 x3e042108}\n       {x442a8000 x443f0000 x3e6338ce}\n       {x44300000 x443d0000 x3e8b22c9}\n       {x44338000 x443c0000 x3e91a469}\n       {x44488000 x44310000 x3e9ca72a}\n       {x44710000 x441e0000 x3ea6298a}\n       {x44930000 x440f8000 x3ec1304c}\n       {x44b0c000 x44080000 x3ebd2f4c}\n       {x44b8c000 x44080000 x3eba2e8c}\n       {x44d90000 x44080000 x3e8721c8}\n       {x44ee8000 x44060000 x3c302c0b}}}\n     {tx x42780000 x448b45d1 x4421c5d1}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x42780000\n       {x42800000 x43500000 x3d0c2309}\n       {x42800000 x43560000 x3d8e2389}\n       {x42800000 x43620000 x3e102409}\n       {x428c0000 x43720000 x3e6e3b8f}\n       {x42900000 x43800000 x3e922489}\n       {x42e00000 x43b60000 x3efa3e90}\n       {x43740000 x44188000 x3f0ca329}\n       {x43c10000 x444f0000 x3f07e1f8}\n       {x44060000 x44788000 x3ee93a4f}\n       {x440f0000 x44800000 x3ebc2f0c}\n       {x44168000 x44830000 0}}}\n     {tx x42780000 x437d45d1 x4408ae8c}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f000000 bs x40a00000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x42780000 ltm x42780000 tt x41880000}}}}}}\n  toolbox {brush {\n  { selectAll r 0 g 0 b 0 opc 0.5 bs 5 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0 g 0 b 0 opc 0.5 bs 5 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 62 ltm 62 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_paint_color {0 0 0 1}\n  toolbar_opacity 0.5\n  toolbar_brush_size 5\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 62\n  toolbar_lifetime_end 62\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  colorOverlay {0 0 0 0}\n  opacity 0.5\n  lifetime_type \"all frames\"\n  lifetime_start 62\n  lifetime_end 62\n  brush_size 5\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_black_outside true\n  name RotoPaint7\n  xpos 2300\n  ypos 14735\n  disable {{\"parent.lensDirtPicker == 2 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge14\n  xpos 2300\n  ypos 14777\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge15\n  xpos 2300\n  ypos 14815\n }\n Sharpen {\n  name Sharpen1\n  xpos 2300\n  ypos 14848\n }\n FrameHold {\n  name FrameHold2\n  xpos 2300\n  ypos 14917\n }\npush $Ne1809000\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a}\n    {cubiccurve Blur1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42380000 x446b8000 x3c980007}\n       {x42380000 x446c0000 x3d200000}\n       {x42400000 x446b8000 x3e21001d}\n       {x42300000 x44644000 x3edafff3}\n       {x42380000 x44644000 x3f03e005}\n       {x42380000 x446b8000 x3f0ddffc}\n       {x42280000 x44694000 x3f1fe005}\n       {x42400000 x4461c000 x3f225ffa}\n       {x42300000 x44650000 x3f241ffb}\n       {x42140000 x446e8000 x3f24e001}\n       {x42240000 x44680000 x3f2a5ffa}\n       {x42300000 x44614000 x3f2c9ff9}\n       {x42140000 x4466c000 x3f2d5ffe}\n       {x42080000 x446e0000 x3f2da006}\n       {x421c0000 x4464c000 x3f2ea002}\n       {x42400000 x445c4000 x3f2e2004}\n       {x42280000 x445c8000 x3f2da006}\n       {x42080000 x445b0000 x3f2ddffc}\n       {x41980000 x44578000 x3f2ce001}\n       {x41200000 x44578000 x3f2d5ffe}\n       {x41200000 x44598000 x3f2c9ff9}\n       {x42240000 x44664000 x3f2c9ff9}\n       {x424c0000 x446f4000 x3f2c9ff9}\n       {x40000000 x44754000 x3f2c9ff9}\n       {xc1880000 x4474c000 x3f2da006}\n       {x41100000 x447a0000 x3f2c9ff9}\n       {x41a00000 x447ac000 x3f2b9ffd}\n       {x42700000 x44798000 x3f2c1ffb}\n       {x42240000 x44740000 x3f2d5ffe}\n       {x41100000 x44774000 x3f2ddffc}\n       {x42580000 x44808000 x3f2c9ff9}\n       {x429a0000 x447d4000 x3f2d5ffe}\n       {x41d00000 x4478c000 x3f309ff9}\n       {x42300000 x447fc000 x3f312008}\n       {x42a00000 x44820000 x3f2f9ffd}\n       {x42a00000 x447fc000 x3f31a006}\n       {x427c0000 x44828000 x3f336007}\n       {x42540000 x4483c000 x3f322004}\n       {x41f80000 x4486c000 x3f322004}\n       {x42000000 x44876000 x3f2fe005}\n       {x42440000 x44836000 x3f265ffa}\n       {x42540000 x4480c000 x3d780007}}}\n     {t\n   {{x41300000 x421e617c}}\n   {{x41300000 x44709862}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42b60000 bt x40000000 bu 1 src 1 spx 0 spy 0 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush262 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ee4000 x43880000 x3d1bfff6}\n       {x44ee0000 x438c8000 x3d27fff9}}}\n     {t\n      {{x41300000 x44ee2000}}\n      {{x41300000 x438a4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush261 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eea000 x43450000 x3d27fff9}\n       {x44ee6000 x43450000 x3cb0000d}}}\n     {t\n      {{x41300000 x44ee8000}}\n      {{x41300000 x43450000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush260 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ee4000 x42e40000 x3ccffff3}\n       {x44ef4000 x42ea0000 x3d000000}}}\n     {t\n      {{x41300000 x44eec000}}\n      {{x41300000 x42e70000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush259 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f6c000 xc1000000 x3ce7fff9}\n       {x44f6c000 xc1200000 x3ce0001b}}}\n     {t\n      {{x41300000 x44f6c000}}\n      {{x41300000 xc1100000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush258 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2a000 x42e80000 x3c880014}\n       {x44f34000 x42be0000 x3c9fffe5}\n       {x44f32000 x42880000 x3d0c0003}\n       {x44f2e000 x427c0000 x3e977ff1}\n       {x44f2a000 x42540000 x3eaa8006}\n       {x44f24000 x42140000 x3eaf7ff1}\n       {x44f28000 x41b00000 x3ea1fff8}\n       {x44f2a000 x41600000 x3e770004}\n       {x44f2a000 x40a00000 x3e48fffc}\n       {x44f2e000 x40000000 x3e4e0008}\n       {x44f34000 xc1600000 x3e58fffc}\n       {x44f32000 xc1880000 x3e65000d}}}\n     {t\n      {{x41300000 x44f2d000}}\n      {{x41300000 x42140000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush257 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cbc000 x43d80000 x3cf0000d}\n       {x44cca000 x43d58000 x3d87fff9}}}\n     {t\n      {{x41300000 x44cc3000}}\n      {{x41300000 x43d6c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush256 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bee000 x43340000 x3ca7fff9}\n       {x44bea000 x43360000 x3cb0000d}\n       {x44bea000 x433b0000 x3ca7fff9}\n       {x44bee000 x43420000 x3bc0000b}\n       {x44bee000 x43450000 x3d04000a}}}\n     {t\n      {{x41300000 x44bec666}}\n      {{x41300000 x433c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush255 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ba2000 x427c0000 x3cc80014}\n       {x44bb0000 x42b40000 x3cd80007}}}\n     {t\n      {{x41300000 x44ba9000}}\n      {{x41300000 x42990000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush254 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b70000 xc0e00000 x3c8ffff3}\n       {x44b6c000 xc0000000 x3cd80007}\n       {x44b72000 x41400000 x3dddffc5}\n       {x44b7a000 x41b00000 x3e070004}\n       {x44b7e000 x41d80000 x3debffce}\n       {x44b80000 x42000000 x3d000000}}}\n     {t\n      {{x41300000 x44b76571}}\n      {{x41300000 x41600000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush253 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449f6000 x444f0000 x3ca7fff9}\n       {x449f2000 x44528000 x3cf7ffec}\n       {x449f0000 x44564000 x3d4ffff3}\n       {x449f2000 x44584000 x3d3bfff6}\n       {x449f2000 x445bc000 x3d000000}\n       {x449f2000 x445d8000 x3d180007}\n       {x449f0000 x4460c000 x3d30000d}}}\n     {t\n      {{x41300000 x449f2000}}\n      {{x41300000 x44584927}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush252 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a28000 x44138000 x3cb7ffec}\n       {x44a26000 x44140000 x3d27fff9}}}\n     {t\n      {{x41300000 x44a27000}}\n      {{x41300000 x4413c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush251 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a0e000 x440e8000 x3d0c0003}\n       {x44a12000 x440f4000 x3d30000d}\n       {x44a14000 x440f4000 x3e200000}\n       {x44a14000 x44100000 x3e41001d}}}\n     {t\n      {{x41300000 x44a12000}}\n      {{x41300000 x440f4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush250 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a00000 x4409c000 x3c6fffd8}\n       {x44a08000 x440c4000 x3c980007}}}\n     {t\n      {{x41300000 x44a04000}}\n      {{x41300000 x440b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush249 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449fc000 x43d38000 x3cb7ffec}\n       {x44a04000 x43de8000 x3cd80007}\n       {x44a04000 x43e70000 x3e1cffeb}\n       {x44a00000 x43e90000 x3e4effe3}\n       {x449fc000 x43f30000 x3e4c0011}\n       {x449fc000 x43f80000 x3e3cffeb}\n       {x449fc000 x44004000 x3e3cffeb}\n       {x449fc000 x44014000 x3e3effe3}\n       {x449fa000 x44018000 x3e3e0008}\n       {x44a00000 x44044000 x3e3cffeb}\n       {x44a00000 x44058000 x3e33ffef}\n       {x449fc000 x44078000 x3e1e0008}\n       {x449fc000 x44080000 x3b9ffffb}}}\n     {t\n      {{x41300000 x449fe000}}\n      {{x41300000 x43f909db}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush248 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44950000 x434e0000 x3c8ffff3}\n       {x44952000 x434e0000 x3d000000}}}\n     {t\n      {{x41300000 x44951000}}\n      {{x41300000 x434e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush247 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449da000 x43050000 x3d0ffff3}\n       {x449da000 x43030000 x3d900000}\n       {x449e2000 x43030000 x3e130015}\n       {x449e2000 x43010000 0}}}\n     {t\n      {{x41300000 x449de000}}\n      {{x41300000 x43030000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush246 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449f2000 x42300000 x3c9fffe5}\n       {x44a00000 x42080000 x3d000000}\n       {x44a08000 x41700000 x3df00043}}}\n     {t\n      {{x41300000 x449fe000}}\n      {{x41300000 x41f80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush245 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4498c000 x41000000 x3d380007}\n       {x44990000 x41000000 x3e0cffeb}\n       {x4499a000 x40e00000 x3e27ffde}\n       {x449a4000 xc0000000 x3e400000}\n       {x449a8000 0 x3e3cffeb}\n       {x449ac000 x40a00000 x3e380022}\n       {x449a8000 x40a00000 x3e41001d}}}\n     {t\n      {{x41300000 x4499e948}}\n      {{x41300000 x408db6d8}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush244 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43710000 x40a00000 x3d83fffd}\n       {x43760000 x40a00000 x3ddc0011}}}\n     {t\n      {{x41300000 x43738000}}\n      {{x41300000 x40a00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush243 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43470000 x42300000 x3ce0001b}\n       {x43530000 x42240000 x3d0ffff3}\n       {x43560000 x42100000 x3db3fffd}}}\n     {t\n      {{x41300000 x43500000}}\n      {{x41300000 x4221554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush242 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e80000 x431c0000 x3d9c0003}\n       {x41f80000 x43190000 x3e35ffe7}\n       {x42000000 x43160000 x3dc3fffd}}}\n     {t\n      {{x41300000 x41f55567}}\n      {{x41300000 x43190000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush241 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42700000 x43690000 x3d400000}\n       {x42540000 x434f0000 x3e0effe3}}}\n     {t\n      {{x41300000 x42620000}}\n      {{x41300000 x435c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush240 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42960000 x43aa0000 x3cb0000d}\n       {x429a0000 x43a78000 x3d33fffd}}}\n     {t\n      {{x41300000 x42980000}}\n      {{x41300000 x43a8c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush239 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d00000 x43dd0000 x3ce0001b}\n       {x41d00000 x43dc0000 x3d200000}\n       {x42080000 x43d70000 x3e0c0011}\n       {x42380000 x43d00000 x3e100000}\n       {x42300000 x43cd0000 x3e03ffef}\n       {x42140000 x43cd8000 x3e070004}\n       {x41d80000 x43d30000 x3e0afff3}\n       {x42080000 x43d30000 x3e07ffde}\n       {x42400000 x43d00000 x3e01001d}}}\n     {t\n      {{x41300000 x420f1c78}}\n      {{x41300000 x43d39c6a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush238 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41f80000 x440a8000 x3d0ffff3}\n       {x41f80000 x440a0000 x3d380007}\n       {x42000000 x44074000 x3d64000a}\n       {x42300000 x44048000 x3dfc0011}}}\n     {t\n      {{x41300000 x420a0000}}\n      {{x41300000 x44081000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush237 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x428e0000 x44470000 x3c9fffe5}\n       {x42880000 x4444c000 x3ce0001b}}}\n     {t\n      {{x41300000 x428b0000}}\n      {{x41300000 x4445e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush236 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x427c0000 x44528000 x3ce7fff9}\n       {x42680000 x4450c000 x3d0c0003}}}\n     {t\n      {{x41300000 x42720000}}\n      {{x41300000 x4451a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush235 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d80000 x44534000 x3cb0000d}\n       {x41f80000 x44518000 x3cd80007}}}\n     {t\n      {{x41300000 x41e80000}}\n      {{x41300000 x44526000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush234 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d80000 x44578000 x3ca7fff9}\n       {x41d80000 x44568000 x3d7bfff6}\n       {x41b00000 x44550000 x3db20005}}}\n     {t\n      {{x41300000 x41caaa99}}\n      {{x41300000 x44565550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush233 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d00000 x4460c000 x3cb0000d}\n       {x41c00000 x4460c000 x3d30000d}\n       {x41e80000 x44614000 x3d83fffd}\n       {x41f80000 x44614000 x3e070004}\n       {x41e80000 x445f4000 x3e380022}\n       {x41f80000 x445d0000 x3cf0000d}}}\n     {t\n      {{x41300000 x41e2aa99}}\n      {{x41300000 x44600ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush232 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42300000 x44784000 x3d1bfff6}\n       {x421c0000 x44770000 x3dcfffbd}\n       {x42140000 x44760000 x3e130015}\n       {x42000000 x44754000 x3e21fff8}\n       {x42240000 x44768000 x3e4effe3}\n       {x42580000 x44790000 x3e65000d}\n       {x42280000 x4475c000 x3e9c7ffe}\n       {x421c0000 x44748000 x3ea0800f}\n       {x42240000 x44754000 x3ea5000d}\n       {x421c0000 x44760000 x3ea80000}\n       {x42140000 x4474c000 x3ea38002}\n       {x421c0000 x44738000 x3c400036}}}\n     {t\n      {{x41300000 x4221554d}}\n      {{x41300000 x4475fab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush231 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42960000 x44790000 x3d0c0003}\n       {x428c0000 x4475c000 x3d70000d}\n       {x42a40000 x4477c000 x3e8d000d}\n       {x42ae0000 x44790000 x3e8e7ff6}\n       {x42920000 x4475c000 x3ea8800f}\n       {x42820000 x44740000 x3eaa8006}\n       {x42820000 x44754000 x3ea5000d}\n       {x42680000 x44748000 x3ea1fff8}\n       {x42680000 x44730000 x3e07ffde}}}\n     {t\n      {{x41300000 x428caaa6}}\n      {{x41300000 x44760000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush230 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42000000 x446f4000 x3cd80007}\n       {x42080000 x446fc000 x3d600000}\n       {x42080000 x446e8000 x3dd1fff8}\n       {x42080000 x446fc000 x3db3fffd}\n       {x41c00000 x44768000 x3dc00000}\n       {x41b00000 x44784000 x3dc20005}\n       {x41c00000 x44774000 x3da00000}\n       {x41e80000 x4477c000 x3c8ffff3}\n       {x41d80000 x44774000 x3d30000d}\n       {x41c00000 x44774000 x3e27ffde}\n       {x41600000 x44784000 x3e3cffeb}\n       {x41700000 x44798000 x3e4effe3}\n       {x41880000 x4478c000 x3e500000}\n       {x41400000 x44784000 x3e6a0019}\n       {x41700000 x447b8000 x3e75ffe7}\n       {x41e80000 x447d0000 x3e71fff8}\n       {x42240000 x447a4000 x3e6afff3}\n       {x42280000 x447a0000 0}}}\n     {t\n      {{x41300000 x41d071de}}\n      {{x41300000 x4476b8e5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush229 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a90000 x445f4000 x3cb7ffec}\n       {x43a60000 x4455c000 x3cd80007}}}\n     {t\n      {{x41300000 x43a78000}}\n      {{x41300000 x445a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush228 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a40000 x44798000 x3cc00000}\n       {x43990000 x44738000 x3d580007}\n       {x43958000 x446f4000 x3dddffc5}\n       {x43950000 x446e0000 x3dddffc5}\n       {x438c8000 x44694000 x3dddffc5}\n       {x438a8000 x44680000 x3dddffc5}\n       {x43840000 x4463c000 x3de7ffde}\n       {x43810000 x44620000 x3df1fff8}\n       {x43780000 x445e4000 x3df00043}\n       {x43750000 x445c4000 x3df00043}\n       {x43730000 x445bc000 x3d89fffe}\n       {x43730000 x445b0000 0}}}\n     {t\n      {{x41300000 x43891560}}\n      {{x41300000 x4466e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush227 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b60000 x44710000 x3d1bfff6}\n       {x43b50000 x44710000 x3d93fffd}\n       {x43b60000 x44710000 x3dadfffb}\n       {x43bb0000 x446fc000 x3de00000}\n       {x43bc8000 x446ec000 0}}}\n     {t\n      {{x41300000 x43b8199a}}\n      {{x41300000 x44704ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush226 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44108000 x44550000 x3d180007}\n       {x440ec000 x4458c000 x3d73fffd}\n       {x440cc000 x445c4000 x3e130015}\n       {x440c4000 x445dc000 x3dbdfffb}}}\n     {t\n      {{x41300000 x440e1000}}\n      {{x41300000 x4459f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush225 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44060000 x44468000 x3ca7fff9}\n       {x44048000 x44474000 x3d400000}\n       {x4403c000 x4447c000 x3d89fffe}\n       {x44064000 x44488000 x3d200000}\n       {x44088000 x44488000 x3da9fffe}\n       {x440cc000 x44498000 x3d93fffd}}}\n     {t\n      {{x41300000 x4406f550}}\n      {{x41300000 x44480000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush224 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44034000 x44430000 x3d1bfff6}\n       {x44044000 x44440000 x3d380007}}}\n     {t\n      {{x41300000 x4403c000}}\n      {{x41300000 x44438000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush223 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f40000 x44330000 x3c60001b}\n       {x43f80000 x44348000 x3d200000}\n       {x43fd8000 x44388000 x3d53fffd}}}\n     {t\n      {{x41300000 x43f88000}}\n      {{x41300000 x44355550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush222 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43db8000 x4442c000 x3ccffff3}\n       {x43ea0000 x4441c000 x3d0ffff3}\n       {x43ec8000 x44408000 x3da7fff9}}}\n     {t\n      {{x41300000 x43e60000}}\n      {{x41300000 x4441aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush221 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d80000 x44330000 x3d000000}\n       {x43d98000 x44314000 x3d960002}\n       {x43d80000 x442f8000 x3df00043}\n       {x43d90000 x44300000 x3e170004}\n       {x43d98000 x44308000 x3e170004}\n       {x43d80000 x44358000 x3e18fffc}\n       {x43d60000 x44378000 x3e1e0008}\n       {x43d48000 x443cc000 x3e1cffeb}\n       {x43d48000 x443d8000 x3d7bfff6}}}\n     {t\n      {{x41300000 x43d771cb}}\n      {{x41300000 x4434d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush220 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b60000 x43cd0000 x3ca7fff9}\n       {x43b60000 x43cd8000 x3d780007}\n       {x43b38000 x43c80000 x3d8dfffb}}}\n     {t\n      {{x41300000 x43b52aa0}}\n      {{x41300000 x43cb8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush219 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b60000 x43d10000 x3ccffff3}\n       {x43b70000 x43cf8000 0}}}\n     {t\n      {{x41300000 x43b68000}}\n      {{x41300000 x43d04000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush218 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b88000 x43e80000 x3cf0000d}\n       {x43b88000 x43e40000 x3d27fff9}\n       {x43b78000 x43dd0000 x3dfc0011}}}\n     {t\n      {{x41300000 x43b82aa0}}\n      {{x41300000 x43e30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush217 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c38000 x43ef0000 x3d0c0003}\n       {x43c00000 x43ed0000 x3d0ffff3}}}\n     {t\n      {{x41300000 x43c1c000}}\n      {{x41300000 x43ee0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush216 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b60000 x43f90000 x3d400000}\n       {x43b78000 x43f78000 x3db20005}}}\n     {t\n      {{x41300000 x43b6c000}}\n      {{x41300000 x43f84000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush215 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bd8000 x441dc000 x3d2c0003}\n       {x43be8000 x441c8000 x3d380007}\n       {x43bf0000 x441cc000 x3dcfffbd}\n       {x43be8000 x441b8000 x3e3cffeb}\n       {x43b88000 x44174000 x3e51fff8}\n       {x43b40000 x44124000 x3e80fffc}\n       {x43b18000 x440fc000 x3e867ff6}\n       {x43ae8000 x440b8000 x3e870004}\n       {x43ae8000 x440a0000 x3e780022}\n       {x43ae8000 x44094000 x3e5afff3}\n       {x43ad8000 x4408c000 x3e11fff8}\n       {x43ac8000 x44064000 x3e15ffe7}\n       {x43ac8000 x44058000 x3e0a0019}\n       {x43ac8000 x44050000 0}}}\n     {t\n      {{x41300000 x43b3db64}}\n      {{x41300000 x44104927}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush214 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449e4000 x427c0000 x3cd80007}\n       {x449ec000 x42740000 x3d980007}}}\n     {t\n      {{x41300000 x449e8000}}\n      {{x41300000 x42780000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush213 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44986000 x41000000 x3cb7ffec}\n       {x44986000 x40e00000 x3db3fffd}}}\n     {t\n      {{x41300000 x44986000}}\n      {{x41300000 x40f00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush212 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a00000 x42880000 x3c880014}\n       {x44a00000 x428c0000 x3ce0001b}\n       {x44a08000 x42740000 x3de3ffef}\n       {x44a0a000 x42600000 x3dfc0011}\n       {x44a00000 x42240000 x3dfc0011}\n       {x44a00000 x42080000 x3e170004}\n       {x44a08000 x41d00000 x3e170004}\n       {x44a08000 x41880000 x3e0cffeb}\n       {x44a04000 x41400000 x3e100000}\n       {x44a04000 x41200000 x3df40032}\n       {x44a04000 x41000000 x3dc20005}}}\n     {t\n      {{x41300000 x44a042e1}}\n      {{x41300000 x42128bac}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush211 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a26000 x43d90000 x3cd80007}\n       {x44a26000 x43d80000 x3d04000a}\n       {x44a28000 x43d48000 x3d0ffff3}\n       {x44a28000 x43cd0000 x3e100000}\n       {x44a28000 x43c98000 x3e670004}\n       {x44a26000 x43c28000 x3e67ffde}\n       {x44a26000 x43bd8000 x3e6a0019}\n       {x44a28000 x43b88000 x3e6a0019}\n       {x44a28000 x43b40000 x3e65000d}\n       {x44a28000 x43ae0000 x3e530015}\n       {x44a28000 x43ac8000 x3e0c0011}\n       {x44a30000 x43a68000 x3d83fffd}}}\n     {t\n      {{x41300000 x44a28000}}\n      {{x41300000 x43c0caa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush210 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a12000 x44130000 x3d07fff9}\n       {x44a18000 x44128000 x3d200000}\n       {x44a1c000 x44128000 x3e58fffc}\n       {x44a1e000 x4411c000 x3e45ffe7}\n       {x44a1e000 x44110000 x3df00043}\n       {x44a1e000 x44108000 0}}}\n     {t\n      {{x41300000 x44a1aa8f}}\n      {{x41300000 x4411e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush209 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a4e000 x44314000 x3c880014}\n       {x44a52000 x44300000 x3d0ffff3}\n       {x44a56000 x442ec000 x3e7cffeb}\n       {x44a52000 x442ec000 0}}}\n     {t\n      {{x41300000 x44a52000}}\n      {{x41300000 x442fb000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush208 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a08000 x444b4000 x3c8ffff3}\n       {x44a08000 x44490000 x3cd80007}\n       {x44a08000 x44484000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44a08000}}\n      {{x41300000 x44498000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush207 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a00000 x445c8000 x3c9fffe5}\n       {x44a00000 x445a0000 x3cf0000d}\n       {x44a00000 x44580000 x3d380007}\n       {x44a00000 x44550000 x3d24000a}\n       {x44a00000 x44534000 x3d4c0003}\n       {x44a04000 x44518000 x3d3bfff6}\n       {x44a04000 x4450c000 x3d580007}\n       {x44a04000 x444f8000 x3d580007}\n       {x44a04000 x444f0000 0}}}\n     {t\n      {{x41300000 x44a01c7b}}\n      {{x41300000 x44546396}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush206 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a00000 x44710000 x3c8ffff3}\n       {x44a00000 x446fc000 x3cc00000}\n       {x44a00000 x446e0000 x3ca7fff9}}}\n     {t\n      {{x41300000 x44a00000}}\n      {{x41300000 x446f9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush205 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a00000 x44784000 x3cc00000}\n       {x44a00000 x4477c000 x3ce7fff9}\n       {x44a00000 x4475c000 x3d04000a}}}\n     {t\n      {{x41300000 x44a00000}}\n      {{x41300000 x44774000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e8f5c29 bs x42fa0000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush204 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f38000 x44770000 x3d580007}\n       {x44f46000 x44754000 x3d64000a}\n       {x44f50000 x44738000 x3de3ffef}}}\n     {t\n      {{x41300000 x44f44a8f}}\n      {{x41300000 x44754000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush203 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d70000 x4464c000 x3c800000}\n       {x44d6a000 x44644000 x3d200000}\n       {x44d70000 x4464c000 x3d99fffe}}}\n     {t\n      {{x41300000 x44d6e000}}\n      {{x41300000 x44649550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush202 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e14000 x44770000 x3cb7ffec}\n       {x44e18000 x44774000 x3d47fff9}}}\n     {t\n      {{x41300000 x44e16000}}\n      {{x41300000 x44772000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush201 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44df8000 x44730000 x3d400000}\n       {x44dee000 x4474c000 x3d4c0003}}}\n     {t\n      {{x41300000 x44df3000}}\n      {{x41300000 x4473e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush200 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e76000 x446fc000 x3d04000a}\n       {x44e6a000 x446f4000 x3d27fff9}\n       {x44e58000 x446fc000 x3d70000d}\n       {x44e5e000 x44718000 x3e51001d}\n       {x44e5e000 x44700000 x3e55000d}\n       {x44e66000 x446cc000 x3e580022}\n       {x44e8c000 x446b0000 x3e48fffc}\n       {x44e9c000 x446b8000 x3e48fffc}\n       {x44ea2000 x4469c000 x3e45ffe7}\n       {x44ea0000 x4469c000 0}}}\n     {t\n      {{x41300000 x44e7a000}}\n      {{x41300000 x446d8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush199 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f08000 x44620000 x3ce0001b}\n       {x44efe000 x44644000 x3cf0000d}\n       {x44efc000 x4466c000 x3c8ffff3}\n       {x44efc000 x44688000 x3d33fffd}\n       {x44efc000 x446a4000 x3d64000a}\n       {x44f02000 x446c0000 x3d6c0003}\n       {x44f02000 x446cc000 x3db3fffd}\n       {x44efe000 x446ec000 x3ddc0011}\n       {x44ef4000 x44700000 x3dea0019}\n       {x44ef8000 x44724000 x3df5ffe7}\n       {x44f06000 x44738000 x3dea0019}\n       {x44f14000 x4474c000 x3dea0019}\n       {x44f10000 x44754000 x3e100000}\n       {x44f08000 x44774000 x3e03ffef}\n       {x44f06000 x44784000 x3de7ffde}\n       {x44f0c000 x447b4000 x3dc7fff9}\n       {x44f14000 x447d4000 x3dbc0003}\n       {x44f14000 x447dc000 0}}}\n     {t\n      {{x41300000 x44f04a8f}}\n      {{x41300000 x4470b550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush198 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efe000 x44498000 x3cc00000}\n       {x44f08000 x44504000 x3d07fff9}\n       {x44f08000 x44554000 x3d600000}\n       {x44f08000 x445d0000 x3da20005}}}\n     {t\n      {{x41300000 x44f05800}}\n      {{x41300000 x44530000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush197 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef4000 x44454000 x3c9fffe5}\n       {x44ef8000 x44454000 x3cb0000d}}}\n     {t\n      {{x41300000 x44ef6000}}\n      {{x41300000 x44454000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush196 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f06000 x44578000 x3c60001b}\n       {x44f06000 x4458c000 x3c60001b}\n       {x44f08000 x445a8000 x3d30000d}\n       {x44f08000 x445bc000 x3d4c0003}\n       {x44f08000 x445dc000 x3d5bfff6}\n       {x44f08000 x445e4000 x3d7bfff6}\n       {x44f06000 x445d8000 x3d4c0003}\n       {x44f06000 x445c8000 x3d13fffd}\n       {x44f06000 x44578000 x3d13fffd}\n       {x44f06000 x44540000 x3d93fffd}\n       {x44f02000 x444fc000 x3d920005}\n       {x44f02000 x444e0000 x3db3fffd}\n       {x44f02000 x444c0000 x3db20005}\n       {x44efe000 x444b8000 x3db3fffd}\n       {x44efe000 x444ac000 x3db3fffd}\n       {x44f02000 x444ac000 x3d9c0003}\n       {x44f02000 x444a4000 x3d47fff9}}}\n     {t\n      {{x41300000 x44f045c3}}\n      {{x41300000 x4454878d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush195 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efe000 x44350000 x3c6fffd8}\n       {x44efe000 x4433c000 x3d07fff9}\n       {x44f02000 x44320000 x3d27fff9}\n       {x44efe000 x442b4000 x3d4ffff3}\n       {x44efc000 x442a0000 x3d47fff9}\n       {x44ef8000 x44294000 x3d4c0003}\n       {x44efc000 x44280000 x3d47fff9}\n       {x44efc000 x44294000 x3d9dfffb}\n       {x44efc000 x44298000 x3de00000}\n       {x44efe000 x442dc000 x3df00043}\n       {x44efe000 x442f8000 x3e0c0011}\n       {x44efe000 x4433c000 x3e0cffeb}\n       {x44efe000 x4436c000 x3e0e0008}\n       {x44efe000 x44394000 x3e0effe3}\n       {x44efe000 x443a8000 x3e0afff3}\n       {x44efc000 x443b0000 x3e0afff3}\n       {x44efc000 x443d0000 x3e0afff3}\n       {x44efc000 x443ec000 x3df40032}\n       {x44efc000 x443f4000 x3dd80022}\n       {x44efc000 x44418000 x3dd80022}\n       {x44efc000 x44430000 x3d24000a}\n       {x44efc000 x4444c000 x3cf0000d}}}\n     {t\n      {{x41300000 x44efce66}}\n      {{x41300000 x443508b4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush194 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f02000 x443e0000 x3c9fffe5}\n       {x44efe000 x443a4000 x3cc80014}}}\n     {t\n      {{x41300000 x44f00000}}\n      {{x41300000 x443c2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush193 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f02000 x443a8000 x3c8ffff3}\n       {x44f02000 x443e0000 x3cf0000d}\n       {x44f06000 x443e0000 x3cc00000}}}\n     {t\n      {{x41300000 x44f03571}}\n      {{x41300000 x443cd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush192 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efc000 x43fb8000 x3c6fffd8}\n       {x44f02000 x44020000 x3cf0000d}\n       {x44f02000 x44064000 x3d9c0003}\n       {x44efe000 x440a8000 x3df5ffe7}\n       {x44efe000 x44100000 x3dfc0011}\n       {x44efc000 x44130000 x3dfdffc5}\n       {x44ef8000 x44174000 x3dfc0011}\n       {x44ef4000 x44190000 x3e08fffc}\n       {x44ef4000 x441c0000 x3e11001d}\n       {x44ef4000 x441d4000 x3e130015}\n       {x44ef4000 x441fc000 x3e170004}\n       {x44ef4000 x44210000 x3e070004}\n       {x44ef0000 x4423c000 x3ddc0011}\n       {x44ef4000 x44264000 x3cd80007}\n       {x44ef4000 x44294000 x3c30000d}\n       {x44ef4000 x442bc000 x3c880014}\n       {x44ef8000 x442e4000 x3c6fffd8}\n       {x44ef8000 x44308000 x3c980007}\n       {x44ef8000 x44328000 x3c800000}}}\n     {t\n      {{x41300000 x44ef8000}}\n      {{x41300000 x441baf2b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush191 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef4000 x441a4000 x3ce7fff9}\n       {x44ef4000 x4419c000 x3d27fff9}\n       {x44ef8000 x44198000 x3d24000a}}}\n     {t\n      {{x41300000 x44ef5571}}\n      {{x41300000 x4419d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush190 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efe000 x44114000 x3cc80014}\n       {x44efe000 x4411c000 x3d04000a}\n       {x44efc000 x44130000 x3d0c0003}\n       {x44ef8000 x4414c000 x3d1bfff6}\n       {x44ef8000 x44170000 x3d2c0003}\n       {x44ef4000 x44190000 x3d4c0003}\n       {x44ef4000 x4419c000 x3d580007}}}\n     {t\n      {{x41300000 x44ef923d}}\n      {{x41300000 x441536d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush189 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f1e000 x42300000 x3ca7fff9}\n       {x44f20000 x421c0000 x3d04000a}\n       {x44f20000 x42100000 x3d24000a}\n       {x44f20000 x41980000 x3d400000}\n       {x44f20000 x41600000 x3df9ffd6}\n       {x44f24000 x41200000 x3e130015}\n       {x44f24000 x41000000 x3e130015}\n       {x44f2a000 x40a00000 x3e11fff8}\n       {x44f2e000 x40400000 x3e13ffef}\n       {x44f3c000 x40400000 x3e130015}\n       {x44f42000 x40e00000 x3de7ffde}\n       {x44f4a000 x41a00000 x3dddffc5}\n       {x44f4c000 x41d00000 x3de7ffde}\n       {x44f50000 x42080000 x3dee0008}\n       {x44f50000 x42240000 x3df1fff8}\n       {x44f50000 x42400000 x3debffce}\n       {x44f4c000 x42540000 x3dddffc5}\n       {x44f4a000 x42580000 x3dadfffb}\n       {x44f4a000 x42680000 x3d83fffd}}}\n     {t\n      {{x41300000 x44f37ae1}}\n      {{x41300000 x41dbca23}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush188 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f10000 x429c0000 x3c9fffe5}\n       {x44f10000 x42980000 x3ce0001b}\n       {x44f10000 x428c0000 x3d04000a}\n       {x44f1a000 x42440000 x3d27fff9}}}\n     {t\n      {{x41300000 x44f12800}}\n      {{x41300000 x42888000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush187 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f10000 x42d60000 x3cb7ffec}\n       {x44f10000 x42d20000 x3cf0000d}\n       {x44f10000 x42c80000 x3d04000a}\n       {x44f10000 x42bc0000 x3d1bfff6}}}\n     {t\n      {{x41300000 x44f10000}}\n      {{x41300000 x42cb0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush186 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f08000 x43858000 x3c880014}\n       {x44f08000 x43820000 x3ce7fff9}\n       {x44f08000 x43760000 x3d0c0003}\n       {x44f08000 x43700000 x3d07fff9}\n       {x44f0c000 x436c0000 x3c30000d}}}\n     {t\n      {{x41300000 x44f08ccd}}\n      {{x41300000 x4379cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush185 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef4000 x439d0000 x3c60001b}\n       {x44ef4000 x439e0000 x3c9fffe5}\n       {x44ef8000 x439c8000 x3e530015}\n       {x44efe000 x439a0000 x3e80800f}\n       {x44f06000 x43950000 x3e4afff3}\n       {x44f08000 x43918000 x3e1a0019}\n       {x44f10000 x438b8000 x3dfc0011}\n       {x44f14000 x438b8000 0}}}\n     {t\n      {{x41300000 x44f02000}}\n      {{x41300000 x4395e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush184 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f10000 x43ea8000 x3c6fffd8}\n       {x44f08000 x43e80000 x3c880014}}}\n     {t\n      {{x41300000 x44f0c000}}\n      {{x41300000 x43e94000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush183 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef8000 x4409c000 x3c60001b}\n       {x44efc000 x44080000 x3c4ffff3}\n       {x44efe000 x44060000 x3c000000}\n       {x44f02000 x44050000 x3be00005}}}\n     {t\n      {{x41300000 x44efd000}}\n      {{x41300000 x44073000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush182 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f06000 x446e0000 x3c60001b}\n       {x44f02000 x446c0000 x3c800000}\n       {x44efc000 x4469c000 x3cf0000d}}}\n     {t\n      {{x41300000 x44f01571}}\n      {{x41300000 x446beab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush181 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e96000 x446e0000 x3cc00000}\n       {x44e96000 x446d8000 x3d04000a}\n       {x44e8e000 x446d4000 x3c980007}}}\n     {t\n      {{x41300000 x44e93571}}\n      {{x41300000 x446d9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush180 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e04000 x44790000 x3cc00000}\n       {x44e0e000 x44798000 x3d0ffff3}\n       {x44e0a000 x4478c000 x3e1a0019}}}\n     {t\n      {{x41300000 x44e09571}}\n      {{x41300000 x44791550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush179 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448b0000 x44760000 x3d980007}\n       {x448ac000 x44760000 x3d920005}}}\n     {t\n      {{x41300000 x448ae000}}\n      {{x41300000 x44760000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush178 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44982000 x446fc000 x3ca7fff9}\n       {x44980000 x446fc000 x3cd80007}\n       {x44974000 x446ec000 x3d0ffff3}}}\n     {t\n      {{x41300000 x4497ca8f}}\n      {{x41300000 x446f6ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush177 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4489c000 x44660000 x3cf0000d}\n       {x44894000 x44660000 x3cf7ffec}\n       {x44892000 x44658000 x3d13fffd}}}\n     {t\n      {{x41300000 x44896000}}\n      {{x41300000 x4465d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush176 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445f4000 x442a8000 x3c8ffff3}\n       {x445e4000 x442a0000 x3d1bfff6}\n       {x445b0000 x44284000 x3df40032}\n       {x445bc000 x4428c000 x3df00043}\n       {x445c8000 x44294000 0}}}\n     {t\n      {{x41300000 x445cf333}}\n      {{x41300000 x4429599a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush175 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446ec000 x44294000 x3ca7fff9}\n       {x446ec000 x4428c000 x3d000000}\n       {x446ec000 x44264000 x3d3bfff6}\n       {x446f4000 x44268000 x3d13fffd}\n       {x446f4000 x44270000 x3d200000}\n       {x446e8000 x44264000 x3da7fff9}}}\n     {t\n      {{x41300000 x446ee000}}\n      {{x41300000 x44275550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush174 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bee000 x440ec000 x3c880014}\n       {x44bf8000 x44100000 x3cf0000d}}}\n     {t\n      {{x41300000 x44bf3000}}\n      {{x41300000 x440f6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush173 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b76000 x440c4000 x3cd80007}\n       {x44b76000 x440bc000 x3dc00000}\n       {x44b7a000 x440bc000 x3dd80022}\n       {x44b80000 x440cc000 x3da00000}}}\n     {t\n      {{x41300000 x44b79800}}\n      {{x41300000 x440c2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush172 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c1c000 x43840000 x3c6fffd8}}}\n     {t\n      {{x41300000 x44c1c000}}\n      {{x41300000 x43840000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush171 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44be0000 x43550000 x3d07fff9}\n       {x44be4000 x43580000 x3cf0000d}\n       {x44be6000 x435b0000 0}}}\n     {t\n      {{x41300000 x44be3571}}\n      {{x41300000 x43580000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush170 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bc8000 x43280000 x3c8ffff3}\n       {x44bce000 x43320000 x3d000000}\n       {x44bd8000 x433e0000 x3d200000}}}\n     {t\n      {{x41300000 x44bcf571}}\n      {{x41300000 x4332aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush169 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bd6000 x43120000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44bd6000}}\n      {{x41300000 x43120000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush168 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b8e000 x42b00000 x3c9fffe5}\n       {x44b92000 x42ae0000 x3cd80007}\n       {x44b94000 x42b80000 x3db60002}\n       {x44b92000 x42b40000 x3dfc0011}\n       {x44b8a000 x42b80000 x3df5ffe7}\n       {x44b8a000 x42be0000 x3dc7fff9}\n       {x44b8e000 x42c20000 x3b40000b}}}\n     {t\n      {{x41300000 x44b8edc3}}\n      {{x41300000 x42b7248f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush167 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cc0000 x42240000 x3cf7ffec}\n       {x44cc0000 x42000000 x3d04000a}\n       {x44cc4000 x41d00000 x3e2e0008}\n       {x44cc4000 x42000000 x3d67fff9}\n       {x44cce000 x41c00000 x3d89fffe}\n       {x44cd0000 x41b00000 x3dce0008}}}\n     {t\n      {{x41300000 x44cc6571}}\n      {{x41300000 x41ec0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush166 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44be4000 x42380000 x3cc80014}\n       {x44bdc000 x42380000 x3cf7ffec}\n       {x44bcc000 x42440000 x3d980007}\n       {x44bd6000 x42140000 x3df1fff8}\n       {x44be6000 x41e80000 x3e15ffe7}\n       {x44bfe000 x41d80000 x3e15000d}\n       {x44c04000 x41d80000 x3e130015}\n       {x44c1c000 x41b00000 x3e130015}\n       {x44c1c000 x41980000 x3e15ffe7}\n       {x44c32000 x41700000 x3e0effe3}\n       {x44c3e000 x41700000 x3d33fffd}}}\n     {t\n      {{x41300000 x44bfeb85}}\n      {{x41300000 x41f17454}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush165 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c16000 x42c20000 x3ce0001b}\n       {x44c1a000 x42be0000 x3d07fff9}\n       {x44c10000 x42b40000 x3e270004}\n       {x44c10000 x42b80000 x3e21fff8}\n       {x44c0c000 x42b40000 x3debffce}\n       {x44c08000 x42b40000 0}}}\n     {t\n      {{x41300000 x44c10a8f}}\n      {{x41300000 x42b8aaa6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush164 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cb0000 x432a0000 x3cb0000d}\n       {x44cb6000 x43280000 x3cf0000d}\n       {x44cbc000 x43250000 x3d2c0003}}}\n     {t\n      {{x41300000 x44cb6000}}\n      {{x41300000 x4327aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush163 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c80000 x43060000 x3d44000a}\n       {x44c82000 x43030000 x3d9c0003}}}\n     {t\n      {{x41300000 x44c81000}}\n      {{x41300000 x43048000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush162 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c90000 x43050000 x3cd80007}\n       {x44c8a000 x43010000 x3d99fffe}\n       {x44c82000 x43000000 x3d67fff9}\n       {x44c80000 x43010000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44c87000}}\n      {{x41300000 x4301c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush161 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dae000 x40e00000 x3d04000a}\n       {x44db8000 x40400000 x3d89fffe}}}\n     {t\n      {{x41300000 x44db3000}}\n      {{x41300000 x40a00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush160 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44da0000 x41a00000 x3d07fff9}\n       {x44da4000 x41200000 x3d33fffd}\n       {x44da4000 x40e00000 x3c6fffd8}}}\n     {t\n      {{x41300000 x44da2a8f}}\n      {{x41300000 x41455532}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush159 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d7e000 x42ae0000 x3d000000}\n       {x44d86000 x42a60000 x3d07fff9}\n       {x44d9a000 x42a60000 x3dc60002}\n       {x44da0000 x42a00000 x3e33ffef}\n       {x44d9a000 x42880000 x3e3a0019}\n       {x44d92000 x42880000 x3e100000}}}\n     {t\n      {{x41300000 x44d91a8f}}\n      {{x41300000 x429c555a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush158 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d00000 x42d20000 x3ca7fff9}\n       {x44d00000 x42d00000 x3ce7fff9}\n       {x44cfe000 x42c60000 x3e330015}}}\n     {t\n      {{x41300000 x44cff571}}\n      {{x41300000 x42cd5581}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush157 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d52000 x43030000 x3c980007}\n       {x44d5c000 x43010000 x3cf0000d}\n       {x44d5a000 x42f80000 x3e11001d}\n       {x44d5c000 x43000000 x3dd9ffd6}\n       {x44d60000 x43030000 x3dadfffb}\n       {x44d56000 x42f80000 x3dd5ffe7}\n       {x44d4c000 x42f40000 x3dd5ffe7}\n       {x44d48000 x42f80000 0}}}\n     {t\n      {{x41300000 x44d55c29}}\n      {{x41300000 x42fd4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush156 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dcc000 x438a8000 x3ce7fff9}\n       {x44dcc000 x43898000 x3d1bfff6}\n       {x44dd0000 x43880000 x3e05000d}\n       {x44dd0000 x43848000 x3e89fff8}\n       {x44dd0000 x43830000 x3e8afff3}\n       {x44dd4000 x43848000 x3e4e0008}\n       {x44dd0000 x43840000 x3dd80022}\n       {x44dd0000 x43810000 x3ca7fff9}}}\n     {t\n      {{x41300000 x44dcf800}}\n      {{x41300000 x4385a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush155 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44db4000 x43530000 x3c6fffd8}\n       {x44dbc000 x43550000 x3d33fffd}\n       {x44dc0000 x43580000 x3d580007}\n       {x44dc2000 x43580000 x3da7fff9}\n       {x44dc0000 x435d0000 x3ce7fff9}}}\n     {t\n      {{x41300000 x44dbd333}}\n      {{x41300000 x43576666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush154 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dae000 x43470000 x3cd80007}\n       {x44da8000 x43400000 x3d04000a}}}\n     {t\n      {{x41300000 x44dab000}}\n      {{x41300000 x43438000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush153 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44db8000 x43320000 x3c980007}\n       {x44db8000 x43390000 x3cc80014}\n       {x44db4000 x43360000 x3cb0000d}}}\n     {t\n      {{x41300000 x44db6a8f}}\n      {{x41300000 x4335aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush152 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e70000 x43690000 x3c9fffe5}\n       {x44e74000 x43670000 x3cf7ffec}\n       {x44e76000 x435f0000 x3d13fffd}\n       {x44e76000 x435d0000 x3d27fff9}\n       {x44e7a000 x435f0000 x3c4ffff3}\n       {x44e7e000 x43600000 x3d47fff9}\n       {x44e80000 x435a0000 x3dfc0011}\n       {x44e88000 x43560000 x3df9ffd6}}}\n     {t\n      {{x41300000 x44e7a000}}\n      {{x41300000 x435f6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush151 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e2c000 x43bb0000 x3cb0000d}\n       {x44e30000 x43bb0000 x3d07fff9}\n       {x44e28000 x43b60000 x3e31001d}\n       {x44e28000 x43b40000 x3e3a0019}\n       {x44e2c000 x43b50000 x3e070004}\n       {x44e30000 x43b70000 x3df00043}\n       {x44e30000 x43b50000 x3e27ffde}\n       {x44e30000 x43b38000 x3c4ffff3}}}\n     {t\n      {{x41300000 x44e2d000}}\n      {{x41300000 x43b69000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush150 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d92000 x43ae0000 x3d07fff9}\n       {x44d92000 x43ad8000 x3d30000d}\n       {x44d92000 x43ac8000 x3e400000}\n       {x44d92000 x43ab8000 0}}}\n     {t\n      {{x41300000 x44d92000}}\n      {{x41300000 x43ace000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush149 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dae000 x43c50000 x3c9fffe5}\n       {x44db2000 x43c50000 x3d0ffff3}\n       {x44db4000 x43c38000 x3e99800a}}}\n     {t\n      {{x41300000 x44db1571}}\n      {{x41300000 x43c48000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush148 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d90000 x43f50000 x3d04000a}\n       {x44d8c000 x43f58000 x3d27fff9}\n       {x44d7e000 x43f18000 x3e600000}\n       {x44d82000 x43f30000 x3e73ffef}\n       {x44d82000 x43f28000 x3eb28006}\n       {x44d82000 x43f18000 x3eb1fff8}\n       {x44d88000 x43f40000 x3e9c0011}\n       {x44d86000 x43f30000 x3ea70004}\n       {x44d82000 x43f30000 0}}}\n     {t\n      {{x41300000 x44d85571}}\n      {{x41300000 x43f338d5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush147 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e54000 x44058000 x3d0c0003}\n       {x44e58000 x44058000 x3db20005}\n       {x44e58000 x44050000 x3eb28006}\n       {x44e5c000 x44050000 x3e1effe3}\n       {x44e5e000 x44050000 x3e35000d}\n       {x44e62000 x44048000 x3e9f7ff1}\n       {x44e5e000 x44044000 0}}}\n     {t\n      {{x41300000 x44e5b23d}}\n      {{x41300000 x4404f6d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush146 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d56000 x44644000 x3d380007}\n       {x44d52000 x44644000 x3e530015}\n       {x44d52000 x4464c000 x3db9fffe}\n       {x44d5a000 x4464c000 x3e05000d}}}\n     {t\n      {{x41300000 x44d55000}}\n      {{x41300000 x44648000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush145 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d9c000 x44248000 x3cf0000d}\n       {x44d9c000 x44240000 x3d1bfff6}\n       {x44d9c000 x44234000 x3d4c0003}\n       {x44d9a000 x4422c000 x3ed70004}\n       {x44d96000 x4422c000 x3ea1800a}\n       {x44d9a000 x44234000 x3e470004}\n       {x44d96000 x4422c000 x3d33fffd}}}\n     {t\n      {{x41300000 x44d99b85}}\n      {{x41300000 x4423524e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush144 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44da4000 x44348000 x3d27fff9}\n       {x44daa000 x44358000 x3d4c0003}\n       {x44da8000 x44358000 x3eb67ff6}\n       {x44da8000 x44350000 x3e8e7ff6}\n       {x44da4000 x44350000 x3e4c0011}\n       {x44da8000 x44358000 x3e0effe3}\n       {x44da4000 x44358000 x3ecf0004}}}\n     {t\n      {{x41300000 x44da6948}}\n      {{x41300000 x443536d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush143 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d30000 x44438000 x3d0ffff3}\n       {x44d30000 x44430000 x3d33fffd}\n       {x44d30000 x44438000 0}}}\n     {t\n      {{x41300000 x44d30000}}\n      {{x41300000 x44435550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush142 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ba2000 x44218000 x3d180007}\n       {x44ba6000 x44218000 x3d47fff9}\n       {x44baa000 x4420c000 x3e330015}\n       {x44ba6000 x441f0000 x3e63ffef}\n       {x44baa000 x441fc000 x3e5e0008}\n       {x44baa000 x44204000 x3e92fff3}\n       {x44ba6000 x441f8000 x3e88fffc}}}\n     {t\n      {{x41300000 x44ba723d}}\n      {{x41300000 x4420524e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush141 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b3c000 x44268000 x3d04000a}\n       {x44b38000 x44268000 x3d24000a}\n       {x44b36000 x44268000 x3ec00000}\n       {x44b36000 x44264000 x3ebd000d}}}\n     {t\n      {{x41300000 x44b38000}}\n      {{x41300000 x44267000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush140 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ac2000 x441b0000 x3d0ffff3}\n       {x44ac8000 x441c0000 x3d580007}\n       {x44ac2000 x441c0000 x3ede0008}}}\n     {t\n      {{x41300000 x44ac4000}}\n      {{x41300000 x441baab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush139 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ae4000 x440cc000 x3c800000}\n       {x44ae4000 x440d0000 x3d0ffff3}\n       {x44ade000 x440cc000 x3ebc0011}}}\n     {t\n      {{x41300000 x44ae2000}}\n      {{x41300000 x440cd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush138 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a90000 x44020000 x3db20005}\n       {x44a92000 x44028000 x3dc3fffd}\n       {x44a92000 x44030000 x3e1effe3}}}\n     {t\n      {{x41300000 x44a91571}}\n      {{x41300000 x44028000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush137 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b10000 x43fb8000 x3d1bfff6}\n       {x44b1a000 x43fc8000 x3d780007}\n       {x44b1e000 x43fc8000 x3ec9800a}\n       {x44b1e000 x43fd8000 0}}}\n     {t\n      {{x41300000 x44b19800}}\n      {{x41300000 x43fc8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush136 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b00000 x43ea0000 x3db3fffd}\n       {x44afc000 x43ea0000 x3dc20005}\n       {x44af8000 x43ea0000 x3e83ffef}\n       {x44afc000 x43ec8000 x3e45000d}}}\n     {t\n      {{x41300000 x44afc000}}\n      {{x41300000 x43eaa000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush135 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b38000 x43d80000 x3d580007}\n       {x44b3c000 x43d80000 x3da7fff9}\n       {x44b3c000 x43d70000 x3e967ff6}\n       {x44b38000 x43d70000 x3e31001d}\n       {x44b3c000 x43d80000 x3e18fffc}\n       {x44b3c000 x43d90000 x3e230015}}}\n     {t\n      {{x41300000 x44b3aa8f}}\n      {{x41300000 x43d7d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush134 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bb0000 x43e40000 x3eb38002}\n       {x44ba6000 x43e10000 x3eb57ffa}}}\n     {t\n      {{x41300000 x44bab000}}\n      {{x41300000 x43e28000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush133 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bea000 x43f18000 x3c6fffd8}\n       {x44bea000 x43f28000 x3d2c0003}\n       {x44be4000 x43f08000 x3eac0011}}}\n     {t\n      {{x41300000 x44be8000}}\n      {{x41300000 x43f18000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bd6000 x43ff0000 x3cc00000}\n       {x44bdc000 x44000000 x3d0ffff3}\n       {x44bdc000 x43ff0000 x3e8e7ff6}\n       {x44bdc000 x43fc8000 x3ec00000}\n       {x44bdc000 x43fb8000 x3bc0000b}}}\n     {t\n      {{x41300000 x44bdaccd}}\n      {{x41300000 x43fe0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d1c000 x4406c000 x3d4c0003}\n       {x44d18000 x44058000 x3e977ff1}\n       {x44d18000 x44050000 x3ed0800f}\n       {x44d1c000 x44058000 x3dce0008}}}\n     {t\n      {{x41300000 x44d1a000}}\n      {{x41300000 x4405b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cf4000 x44188000 x3d33fffd}\n       {x44cf4000 x44190000 x3d860002}\n       {x44cf0000 x44174000 x3e8f0004}\n       {x44cf6000 x4417c000 x3e6cffeb}\n       {x44cfe000 x4417c000 x3e6afff3}\n       {x44cfe000 x44174000 0}}}\n     {t\n      {{x41300000 x44cf7000}}\n      {{x41300000 x4417eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cdc000 x44278000 x3d1bfff6}\n       {x44cdc000 x44280000 x3d380007}\n       {x44cdc000 x4428c000 x3dbc0003}\n       {x44cd8000 x44284000 x3e71fff8}\n       {x44cd4000 x44278000 x3ed9800a}\n       {x44cdc000 x44284000 x3ed3ffef}\n       {x44cde000 x44284000 x3ed9800a}\n       {x44cde000 x4425c000 x3ee1800a}}}\n     {t\n      {{x41300000 x44cdb000}}\n      {{x41300000 x4427c800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c8a000 x4436c000 x3d13fffd}\n       {x44c86000 x44364000 x3e5afff3}\n       {x44c86000 x44360000 x3ed67ff6}\n       {x44c8a000 x44360000 x3ecc0011}\n       {x44c86000 x44358000 0}}}\n     {t\n      {{x41300000 x44c8799a}}\n      {{x41300000 x4436199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bfe000 x442dc000 x3d44000a}\n       {x44bf8000 x442dc000 x3dd40032}\n       {x44bf4000 x442d0000 x3e9a8006}\n       {x44bfa000 x442dc000 x3e880000}\n       {x44bee000 x442c0000 x3eb1fff8}\n       {x44bea000 x442b4000 x3e9afff3}\n       {x44bee000 x442bc000 x3d400000}}}\n     {t\n      {{x41300000 x44bf3b85}}\n      {{x41300000 x442cc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3ec28f5c bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b88000 x435d0000 x3da60002}\n       {x44b80000 x435f0000 x3dd9ffd6}\n       {x44b80000 x435d0000 x3ebb8002}\n       {x44b7e000 x435a0000 x3eb57ffa}\n       {x44b7e000 x435b0000 x3e2afff3}\n       {x44b7e000 x435d0000 x3e230015}}}\n     {t\n      {{x41300000 x44b80571}}\n      {{x41300000 x435c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b8e000 x43a30000 x3dadfffb}\n       {x44b8a000 x43a28000 x3dcc0003}\n       {x44b80000 x43a08000 x3df5ffe7}\n       {x44b7e000 x43a00000 x3de6002a}\n       {x44b80000 x43a18000 x3e03ffef}\n       {x44b7e000 x43a18000 x3e75ffe7}\n       {x44b7a000 x439f0000 x3e82fff3}}}\n     {t\n      {{x41300000 x44b82000}}\n      {{x41300000 x43a1249c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d2a000 x43840000 x3d07fff9}\n       {x44d2a000 x43858000 x3d6c0003}\n       {x44d34000 x43858000 x3d99fffe}\n       {x44d38000 x43858000 x3da9fffe}\n       {x44d34000 x43848000 x3e58fffc}\n       {x44d2c000 x43830000 x3e75000d}\n       {x44d2a000 x43848000 x3e630015}\n       {x44d2a000 x43858000 0}}}\n     {t\n      {{x41300000 x44d2e800}}\n      {{x41300000 x4384c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f68000 x440d0000 x3d200000}\n       {x44f6c000 x440e0000 x3d89fffe}\n       {x44f68000 x440cc000 x3eaafff3}\n       {x44f6c000 x440a8000 x3ead7ffa}\n       {x44f6c000 x44094000 x3eac7ffe}\n       {x44f6c000 x440a0000 x3e9afff3}\n       {x44f68000 x440b8000 x3e9a8006}\n       {x44f68000 x440b0000 x3ea28006}\n       {x44f6e000 x44078000 x3e9b8002}}}\n     {t\n      {{x41300000 x44f6a70a}}\n      {{x41300000 x440b0e35}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44700000 x43c00000 x3cd80007}\n       {x44710000 x43c10000 x3d13fffd}\n       {x44708000 x43bf8000 x3ea9fff8}\n       {x44700000 x43bf8000 0}}}\n     {t\n      {{x41300000 x44706000}}\n      {{x41300000 x43c00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4487c000 x43b18000 x3d04000a}\n       {x44876000 x43b10000 x3e95000d}\n       {x4487a000 x43b18000 x3e977ff1}\n       {x4487a000 x43b10000 x3eb00000}\n       {x44872000 x43b00000 x3eb0800f}}}\n     {t\n      {{x41300000 x44878000}}\n      {{x41300000 x43b10000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b80000 x435f0000 x3ccffff3}\n       {x44b76000 x435d0000 x3ce7fff9}}}\n     {t\n      {{x41300000 x44b7b000}}\n      {{x41300000 x435e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d26000 x43890000 x3cf0000d}\n       {x44d26000 x43880000 x3e180022}\n       {x44d26000 x43890000 x3c400036}\n       {x44d26000 x43898000 x3d5bfff6}\n       {x44d2a000 x43880000 x3e33ffef}\n       {x44d26000 x43890000 x3b40000b}}}\n     {t\n      {{x41300000 x44d26a8f}}\n      {{x41300000 x4388c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b76000 x43a30000 x3ce7fff9}\n       {x44b76000 x43a40000 x3d07fff9}\n       {x44b7a000 x43a30000 x3c0ffffd}}}\n     {t\n      {{x41300000 x44b77571}}\n      {{x41300000 x43a35560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ce000 x43d90000 x3ce0001b}\n       {x448ce000 x43d80000 x3d0ffff3}\n       {x448ce000 x43d90000 x3ea57ffa}\n       {x448ce000 x43d80000 x3eab8002}\n       {x448ce000 x43d70000 x3ea70004}}}\n     {t\n      {{x41300000 x448ce000}}\n      {{x41300000 x43d83333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448f4000 x44048000 x3cb7ffec}\n       {x448fa000 x44050000 x3d24000a}\n       {x448fe000 x44048000 x3e180022}\n       {x44902000 x44034000 x3e9a8006}\n       {x44904000 x44030000 x3ea0800f}\n       {x44904000 x44044000 x3e870004}\n       {x44908000 x4403c000 x3e8a8006}\n       {x44908000 x44020000 x3dc60002}}}\n     {t\n      {{x41300000 x44900c29}}\n      {{x41300000 x4403c800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44770000 x44520000 x3ccffff3}\n       {x44774000 x44520000 x3d0ffff3}\n       {x4477c000 x44528000 x3d33fffd}\n       {x44784000 x44528000 x3e980000}\n       {x44784000 x44520000 x3e99fff8}\n       {x44784000 x44518000 x3e9a8006}\n       {x44788000 x44518000 x3e960008}\n       {x44788000 x44520000 x3e967ff6}\n       {x44790000 x44528000 x3d1bfff6}\n       {x44790000 x4452c000 0}}}\n     {t\n      {{x41300000 x44782ccd}}\n      {{x41300000 x44522000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444c8000 x44598000 x3cd80007}\n       {x444cc000 x44598000 x3d0ffff3}\n       {x444d4000 x44594000 x3e73ffef}\n       {x444dc000 x44594000 x3e73ffef}\n       {x444c8000 x4458c000 x3e8a8006}}}\n     {t\n      {{x41300000 x444cf333}}\n      {{x41300000 x44594000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c48000 x44658000 x3d900000}\n       {x43c50000 x44658000 x3d9c0003}\n       {x43c50000 x44660000 x3eac7ffe}}}\n     {t\n      {{x41300000 x43c4d560}}\n      {{x41300000 x4465aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e68000 x44584000 x3ccffff3}\n       {x43e80000 x44584000 x3d000000}\n       {x43ea8000 x44580000 x3d53fffd}\n       {x43ea0000 x44578000 x3e9c0011}\n       {x43ea0000 x44584000 x3ea0800f}\n       {x43ea8000 x44594000 x3e90fffc}\n       {x43eb8000 x4458c000 x3c9fffe5}\n       {x43ea8000 x44594000 0}}}\n     {t\n      {{x41300000 x43e9b000}}\n      {{x41300000 x44587000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d60000 x44358000 x3cd80007}}}\n     {t\n      {{x41300000 x43d60000}}\n      {{x41300000 x44358000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f78000 x44188000 x3d4c0003}\n       {x43f78000 x44190000 x3e83ffef}\n       {x43f68000 x44198000 x3e99fff8}}}\n     {t\n      {{x41300000 x43f72aa0}}\n      {{x41300000 x44190000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f18000 x44278000 x3c6fffd8}\n       {x43f18000 x44284000 x3d07fff9}\n       {x43f08000 x44284000 x3ea60008}\n       {x43ef8000 x44284000 x3ea0800f}\n       {x43ef8000 x4428c000 x3e8c7ffe}\n       {x43f08000 x4428c000 x3e91800a}\n       {x43f08000 x44284000 x3e9f0004}\n       {x43f08000 x44280000 x3b800000}}}\n     {t\n      {{x41300000 x43f08000}}\n      {{x41300000 x44284000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43858000 x44004000 x3ccffff3}\n       {x43858000 x4400c000 x3d2c0003}}}\n     {t\n      {{x41300000 x43858000}}\n      {{x41300000 x44008000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae0000 x43f78000 x3cb7ffec}\n       {x43ad8000 x43f80000 x3d1bfff6}\n       {x43a90000 x43f68000 x3ec1fff8}\n       {x43a88000 x43fa0000 x3eb57ffa}\n       {x43a68000 x43fa0000 x3ecafff3}\n       {x43a30000 x43fa0000 x3ecafff3}\n       {x43a30000 x43fb8000 x3ebe7ff6}\n       {x43a28000 x43fb8000 x3e80fffc}}}\n     {t\n      {{x41300000 x43a78000}}\n      {{x41300000 x43f96000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ac8000 x43ea0000 x3d1bfff6}\n       {x43ad8000 x43ea0000 x3dd1fff8}\n       {x43ad8000 x43ea8000 x3ead000d}}}\n     {t\n      {{x41300000 x43ad2aa0}}\n      {{x41300000 x43ea2aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d88000 x44028000 x3d200000}\n       {x43d88000 x44034000 x3d4c0003}\n       {x43d88000 x44030000 x3eb57ffa}\n       {x43d88000 x44034000 x3c4ffff3}\n       {x43d98000 x44044000 x3ca7fff9}\n       {x43d98000 x4403c000 x3da60002}}}\n     {t\n      {{x41300000 x43d8d560}}\n      {{x41300000 x44035550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e58000 x43c50000 x3d27fff9}\n       {x43e48000 x43c60000 x3e6a0019}\n       {x43e40000 x43c70000 x3e3a0019}\n       {x43e30000 x43c80000 x3ccffff3}}}\n     {t\n      {{x41300000 x43e44000}}\n      {{x41300000 x43c68000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d88000 x43e20000 x3cc00000}\n       {x43d98000 x43e08000 x3d1bfff6}\n       {x43d98000 x43df8000 x3e877ff1}\n       {x43d88000 x43df8000 x3e99800a}\n       {x43d98000 x43e18000 x3e99800a}\n       {x43d88000 x43df8000 x3eb28006}\n       {x43d88000 x43de0000 x3e80fffc}}}\n     {t\n      {{x41300000 x43d8edb2}}\n      {{x41300000 x43e0124e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d48000 x43920000 x3c880014}\n       {x43d70000 x438d0000 x3cc80014}\n       {x43d70000 x438c8000 x3eaafff3}\n       {x43d70000 x438b8000 x3eac7ffe}\n       {x43d70000 x43898000 x3e8d000d}\n       {x43d70000 x43890000 x3e3cffeb}}}\n     {t\n      {{x41300000 x43d69560}}\n      {{x41300000 x438c4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c38000 x439a8000 x3c8ffff3}\n       {x43c48000 x439a0000 x3cf0000d}}}\n     {t\n      {{x41300000 x43c40000}}\n      {{x41300000 x439a4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c38000 x43a28000 x3d07fff9}\n       {x43c28000 x43a00000 x3d380007}\n       {x43c28000 x439f0000 x3dadfffb}\n       {x43c38000 x439e0000 x3d99fffe}\n       {x43c38000 x439c8000 x3e8e7ff6}\n       {x43c28000 x439b8000 x3e2afff3}}}\n     {t\n      {{x41300000 x43c30000}}\n      {{x41300000 x439e9560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cb0000 x43b78000 x3ccffff3}\n       {x43cd0000 x43b78000 x3d180007}\n       {x43cc0000 x43b50000 x3e63ffef}\n       {x43cb0000 x43b40000 x3e55000d}\n       {x43cc0000 x43b40000 x3e31001d}\n       {x43cb0000 x43b40000 x3e7effe3}\n       {x43ca8000 x43b18000 x3e828006}\n       {x43ca8000 x43b28000 x3ca7fff9}\n       {x43ca8000 x43b18000 x3c1ffffb}}}\n     {t\n      {{x41300000 x43cb472b}}\n      {{x41300000 x43b42aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43aa0000 x43c80000 x3cc00000}\n       {x43ab0000 x43c80000 x3d27fff9}\n       {x43ab8000 x43c70000 x3e8afff3}\n       {x43ac8000 x43c60000 x3e928006}\n       {x43ad8000 x43c70000 x3e55000d}\n       {x43ae0000 x43c80000 x3dfc0011}\n       {x43ae0000 x43c70000 0}}}\n     {t\n      {{x41300000 x43ac5b64}}\n      {{x41300000 x43c74917}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a00000 x43a60000 x3d47fff9}\n       {x43a08000 x43a68000 x3e98fffc}\n       {x43a00000 x43a68000 x3ee60008}\n       {x43a00000 x43a78000 x3d1bfff6}\n       {x43a08000 x43a88000 x3e88fffc}}}\n     {t\n      {{x41300000 x43a03333}}\n      {{x41300000 x43a70000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43858000 x439a0000 x3d380007}\n       {x43880000 x439a8000 x3e0cffeb}\n       {x43898000 x439a8000 x3eb0800f}}}\n     {t\n      {{x41300000 x4387aaa0}}\n      {{x41300000 x439a5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439d0000 x438f0000 x3d4c0003}\n       {x439c8000 x438f0000 x3e8f0004}\n       {x439c8000 x438f8000 x3ea9800a}\n       {x439d0000 x438f8000 x3ebc7ffe}\n       {x439c8000 x438e0000 x3eb57ffa}}}\n     {t\n      {{x41300000 x439cb333}}\n      {{x41300000 x438f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x434f0000 x43820000 x3cb7ffec}\n       {x43540000 x43830000 x3d24000a}\n       {x43560000 x43808000 x3e8b8002}\n       {x43540000 x437f0000 x3cf0000d}\n       {x43530000 x437f0000 x3b40000b}}}\n     {t\n      {{x41300000 x43533333}}\n      {{x41300000 x4380e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438e0000 x43830000 x3cb0000d}\n       {x438f0000 x43840000 x3d1bfff6}\n       {x438f0000 x43830000 x3eab8002}\n       {x438f8000 x43848000 x3e9afff3}}}\n     {t\n      {{x41300000 x438ee000}}\n      {{x41300000 x4383a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e80000 x42ae0000 x3d30000d}\n       {x41e80000 x42aa0000 x3e530015}\n       {x41d80000 x42ae0000 x3ec67ff6}\n       {x41d80000 x42b40000 x3ea3ffef}\n       {x41d00000 x42b00000 x3d24000a}}}\n     {t\n      {{x41300000 x41dccccd}}\n      {{x41300000 x42aecccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41000000 x422c0000 x3cf0000d}\n       {x41000000 x42240000 x3e0a0019}\n       {x40e00000 x42140000 x3e970004}\n       {x40400000 x42140000 x3e65000d}\n       {x40400000 x422c0000 x3e6c0011}\n       {x40a00000 x42240000 x3eac7ffe}\n       {x40e00000 x42100000 x3eb8800f}\n       {x41000000 x42100000 x3e3effe3}}}\n     {t\n      {{x41300000 x40c40000}}\n      {{x41300000 x421d0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43750000 x41400000 x3d1bfff6}}}\n     {t\n      {{x41300000 x43750000}}\n      {{x41300000 x41400000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43400000 x421c0000 x3d27fff9}\n       {x43560000 x41e80000 x3e48fffc}\n       {x43560000 x41d80000 x3d44000a}\n       {x43620000 x41c00000 x3d1bfff6}\n       {x43700000 x41880000 x3e21fff8}\n       {x43710000 x41700000 x3e970004}}}\n     {t\n      {{x41300000 x435d2ac1}}\n      {{x41300000 x41c95567}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43080000 x41a00000 x3cf0000d}\n       {x43080000 x41b00000 x3d1bfff6}\n       {x43080000 x41d00000 x3d33fffd}\n       {x430b0000 x41d00000 x3e63ffef}\n       {x430d0000 x41b00000 x3eb8800f}\n       {x430f0000 x41980000 x3eb67ff6}\n       {x430f0000 x41b00000 x3ea28006}\n       {x43140000 x41980000 x3ea8800f}\n       {x43190000 x41400000 x3ebb8002}\n       {x43190000 x41600000 x3d4ffff3}}}\n     {t\n      {{x41300000 x430ecccd}}\n      {{x41300000 x41a1999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42da0000 x42a00000 x3d0ffff3}\n       {x42da0000 x429c0000 x3d580007}\n       {x42cc0000 x42a40000 x3eb00000}}}\n     {t\n      {{x41300000 x42d55581}}\n      {{x41300000 x42a00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f20000 x42600000 x3d0ffff3}\n       {x42f80000 x42600000 x3d580007}\n       {x42f40000 x42700000 x3e9c0011}}}\n     {t\n      {{x41300000 x42f4aa7f}}\n      {{x41300000 x4265554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x430d0000 x41e80000 x3cd80007}\n       {x43100000 x41c00000 x3d0ffff3}\n       {x43100000 x41b00000 x3bc0000b}}}\n     {t\n      {{x41300000 x430f0000}}\n      {{x41300000 x41c80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ae0000 x41200000 x3ca7fff9}\n       {x42ae0000 x41400000 x3d0ffff3}\n       {x42a00000 x41100000 x3d2c0003}\n       {x42980000 x41600000 x3e8d000d}\n       {x42960000 x41b00000 x3e8d7ffa}\n       {x42a60000 x41700000 x3e947ffe}\n       {x42ae0000 x41400000 x3e83ffef}\n       {x42ae0000 x41200000 0}}}\n     {t\n      {{x41300000 x42a58000}}\n      {{x41300000 x41500000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41600000 x43dc0000 x3d27fff9}\n       {x41400000 x43dc0000 x3d47fff9}}}\n     {t\n      {{x41300000 x41500000}}\n      {{x41300000 x43dc0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x421c0000 x43de0000 x3d1bfff6}\n       {x42240000 x43de8000 x3e33ffef}\n       {x42280000 x43df8000 x3e80800f}}}\n     {t\n      {{x41300000 x4222aab3}}\n      {{x41300000 x43deaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41f80000 x43bd8000 x3d400000}\n       {x42000000 x43bf8000 x3e93ffef}\n       {x42100000 x43bf8000 x3ea80000}}}\n     {t\n      {{x41300000 x42040000}}\n      {{x41300000 x43bed560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41200000 x438b8000 x3d64000a}\n       {x41000000 x438b8000 x3d4ffff3}}}\n     {t\n      {{x41300000 x41100000}}\n      {{x41300000 x438b8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42380000 x43750000 x3c8ffff3}\n       {x42400000 x43730000 x3d380007}\n       {x42400000 x43750000 x3c880014}}}\n     {t\n      {{x41300000 x423d554d}}\n      {{x41300000 x4374553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42000000 x435b0000 x3d13fffd}\n       {x42000000 x43580000 x3d400000}\n       {x41f80000 x435f0000 x3e400000}\n       {x41f80000 x43690000 x3d0c0003}\n       {x41e80000 x43670000 x3e9d000d}\n       {x42000000 x436b0000 x3e81800a}\n       {x42080000 x436c0000 x3ca7fff9}\n       {x42080000 x436e0000 x3c800000}}}\n     {t\n      {{x41300000 x41ff0000}}\n      {{x41300000 x4364e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41a00000 x43330000 x3cc00000}\n       {x41b00000 x43360000 x3d3bfff6}\n       {x41d80000 x43380000 x3e828006}\n       {x41d00000 x43420000 x3ce7fff9}}}\n     {t\n      {{x41300000 x41be0000}}\n      {{x41300000 x4338c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41d80000 x43470000 x3cb0000d}\n       {x41d80000 x43420000 x3d0ffff3}\n       {x41c00000 x43340000 x3de7ffde}}}\n     {t\n      {{x41300000 x41d00000}}\n      {{x41300000 x433f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x430b0000 x43200000 x3d04000a}\n       {x430d0000 x43220000 x3d53fffd}}}\n     {t\n      {{x41300000 x430c0000}}\n      {{x41300000 x43210000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ee0000 x43080000 x3c980007}\n       {x42ea0000 x430a0000 x3d8c0003}\n       {x42e40000 x43080000 x3ec0fffc}\n       {x42e00000 x43060000 x3ec9800a}\n       {x42da0000 x43030000 x3ec9fff8}\n       {x42d60000 x43010000 x3ec9fff8}\n       {x42da0000 x43080000 x3ec60008}\n       {x42e40000 x430f0000 x3ec60008}\n       {x42ea0000 x430f0000 x3ec38002}\n       {x42f20000 x430b0000 x3ec60008}\n       {x42f20000 x430d0000 x3ec38002}\n       {x42f80000 x43140000 x3ec2fff3}\n       {x42fc0000 x43160000 x3ea9800a}\n       {x42fe0000 x43160000 x3d0ffff3}}}\n     {t\n      {{x41300000 x42e9dba6}}\n      {{x41300000 x430b922d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx 0 spy 0 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x434d0000 x42d00000 x3d0ffff3}\n       {x43510000 x42dc0000 x3d580007}\n       {x43530000 x42e60000 x3dd80022}}}\n     {t\n      {{x41300000 x4350553f}}\n      {{x41300000 x42db5581}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x436f0000 x42880000 x3d000000}\n       {x43710000 x42940000 x3d47fff9}\n       {x436a0000 x429e0000 x3eaafff3}\n       {x435c0000 x42bc0000 x3e9f7ff1}\n       {x43530000 x42c60000 x3d73fffd}}}\n     {t\n      {{x41300000 x43650000}}\n      {{x41300000 x42a5999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43440000 x41600000 x3d0ffff3}\n       {x43440000 x41900000 x3d30000d}}}\n     {t\n      {{x41300000 x43440000}}\n      {{x41300000 x41800000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43410000 x42100000 x3cc00000}\n       {x43440000 x42180000 x3d0c0003}\n       {x43440000 x41d80000 x3d4ffff3}}}\n     {t\n      {{x41300000 x43430000}}\n      {{x41300000 x4206aab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43780000 x41300000 x3ce7fff9}\n       {x43770000 x41300000 x3d27fff9}}}\n     {t\n      {{x41300000 x43778000}}\n      {{x41300000 x41300000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43828000 x41900000 x3cf7ffec}\n       {x43828000 x41a00000 x3d33fffd}\n       {x43818000 x41a00000 x3e83ffef}\n       {x437e0000 x41800000 x3ea5000d}}}\n     {t\n      {{x41300000 x43816000}}\n      {{x41300000 x41940000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43948000 x42340000 x3ccffff3}\n       {x43958000 x42340000 x3d200000}\n       {x43928000 x42480000 x3e5e0008}\n       {x438d8000 x42580000 x3eb0800f}\n       {x438a8000 x42600000 x3e9f7ff1}\n       {x438b8000 x42680000 x3e65000d}\n       {x438a8000 x42680000 x3e6e0008}\n       {x43870000 x426c0000 x3e8a8006}\n       {x43870000 x427c0000 x3e8c7ffe}}}\n     {t\n      {{x41300000 x438d6396}}\n      {{x41300000 x4258e388}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cd0000 x42580000 x3d89fffe}\n       {x43ce0000 x42500000 x3e9a8006}}}\n     {t\n      {{x41300000 x43cd8000}}\n      {{x41300000 x42540000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae8000 x42440000 x3cf0000d}\n       {x43b08000 x42480000 x3d600000}\n       {x43b18000 x42180000 x3e73ffef}\n       {x43b08000 x42000000 x3e9d000d}\n       {x43ae8000 x42080000 x3e9b8002}\n       {x43af8000 x42100000 x3e9d7ffa}\n       {x43ae8000 x41c80000 x3eae0008}\n       {x43aa0000 x41900000 x3eb28006}\n       {x43a68000 x41500000 x3eb70004}\n       {x43a88000 x41900000 x3eb1fff8}\n       {x43b18000 x41300000 x3eb1fff8}\n       {x43b40000 x40a00000 x3ea57ffa}\n       {x43b68000 x41900000 x3e75000d}\n       {x43ba8000 x41a00000 x3e870004}\n       {x43bf0000 x41500000 x3e9a8006}\n       {x43bf8000 x41300000 x3ea3ffef}\n       {x43c28000 x41500000 x3e98fffc}\n       {x43c38000 x41100000 x3e8d7ffa}\n       {x43c50000 x40a00000 x3d980007}}}\n     {t\n      {{x41300000 x43b48d71}}\n      {{x41300000 x41b00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a88000 x42b40000 x3cc00000}\n       {x43a78000 x42b00000 x3d27fff9}\n       {x43a88000 x42b00000 x3e15000d}}}\n     {t\n      {{x41300000 x43a82aa0}}\n      {{x41300000 x42b1555a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b50000 x42fc0000 x3ccffff3}\n       {x43b30000 x42f20000 x3d27fff9}\n       {x43b20000 x42ea0000 x3ec5000d}\n       {x43b40000 x42ea0000 x3e15000d}\n       {x43b40000 x42e20000 x3d1bfff6}\n       {x43b20000 x42e20000 x3da20005}\n       {x43af8000 x42e00000 x3d900000}}}\n     {t\n      {{x41300000 x43b2c917}}\n      {{x41300000 x42ea0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d48000 x43260000 x3d24000a}\n       {x43d48000 x43270000 x3d6c0003}\n       {x43d58000 x43270000 x3e4cffeb}\n       {x43d58000 x43290000 x3e967ff6}\n       {x43d28000 x431e0000 x3ebc0011}\n       {x43d18000 x43220000 x3ec0800f}\n       {x43d00000 x431d0000 x3eca8006}\n       {x43cb8000 x431d0000 x3ec00000}}}\n     {t\n      {{x41300000 x43d27000}}\n      {{x41300000 x4322e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cc8000 x43380000 x3ce7fff9}\n       {x43cd0000 x43360000 x3d380007}\n       {x43cb8000 x43340000 x3e91800a}\n       {x43cc8000 x43360000 x3eb80000}\n       {x43cd0000 x43340000 x3dc60002}}}\n     {t\n      {{x41300000 x43cc8000}}\n      {{x41300000 x4335999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a58000 x43290000 x3d04000a}\n       {x43a78000 x432b0000 x3d400000}\n       {x43a78000 x432d0000 x3d7bfff6}\n       {x43a68000 x43320000 x3e670004}\n       {x43a78000 x43390000 x3e700000}\n       {x43aa0000 x433d0000 x3d1bfff6}\n       {x43a90000 x433f0000 x3e870004}\n       {x43a58000 x43460000 x3eb9fff8}\n       {x43a48000 x434f0000 x3ebc0011}\n       {x43a78000 x43580000 x3eb5000d}\n       {x43a90000 x43580000 x3eb5000d}\n       {x43aa0000 x435a0000 x3eb8fffc}\n       {x43ab0000 x435d0000 x3eb9800a}\n       {x43ac0000 x43610000 x3e1c0011}}}\n     {t\n      {{x41300000 x43a8124e}}\n      {{x41300000 x4344edd3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439c8000 x43150000 x3d04000a}\n       {x439d8000 x43120000 x3d380007}}}\n     {t\n      {{x41300000 x439d0000}}\n      {{x41300000 x43138000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43970000 x43090000 x3d200000}\n       {x43970000 x430b0000 x3d5bfff6}\n       {x43970000 x430c0000 x3e900000}\n       {x43990000 x43100000 x3e7effe3}\n       {x439a0000 x43100000 0}}}\n     {t\n      {{x41300000 x43980000}}\n      {{x41300000 x430ccccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43818000 x43120000 x3ccffff3}\n       {x43838000 x430e0000 x3d3bfff6}\n       {x43850000 x430b0000 x3e0e0008}\n       {x43880000 x430c0000 x3d900000}\n       {x438a8000 x43070000 x3e90800f}\n       {x438a8000 x43030000 x3ec8800f}\n       {x438c8000 x43070000 x3ea77ff1}}}\n     {t\n      {{x41300000 x43875b64}}\n      {{x41300000 x430a4937}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438b8000 x43510000 x3d04000a}\n       {x43898000 x434d0000 x3ec9fff8}\n       {x43890000 x43510000 x3eca8006}\n       {x438a8000 x43530000 x3ebb8002}}}\n     {t\n      {{x41300000 x438a2000}}\n      {{x41300000 x43508000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437c0000 x43390000 x3d1bfff6}\n       {x437a0000 x43380000 x3d44000a}\n       {x437c0000 x43390000 x3e9c7ffe}\n       {x437e0000 x43390000 x3ed77ff1}\n       {x437e0000 x43340000 x3ed9fff8}\n       {x437e0000 x43380000 x3ecafff3}\n       {x437e0000 x43390000 x3d800000}}}\n     {t\n      {{x41300000 x437cdb64}}\n      {{x41300000 x43380000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43510000 x43828000 x3d07fff9}\n       {x43510000 x43808000 x3d47fff9}\n       {x43510000 x43818000 x3e880000}}}\n     {t\n      {{x41300000 x43510000}}\n      {{x41300000 x43818000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43270000 x43360000 x3d2c0003}\n       {x432d0000 x43320000 x3d53fffd}\n       {x43300000 x43300000 x3e4e0008}\n       {x43320000 x432b0000 x3e900000}\n       {x43340000 x43270000 x3e83ffef}\n       {x43360000 x43290000 0}}}\n     {t\n      {{x41300000 x43300000}}\n      {{x41300000 x432dd53f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43190000 x43610000 x3d04000a}\n       {x431e0000 x43630000 x3d27fff9}\n       {x43290000 x435d0000 x3d67fff9}\n       {x43270000 x435c0000 x3e430015}\n       {x43200000 x435f0000 x3e5afff3}\n       {x43200000 x43650000 x3e7afff3}\n       {x43240000 x435c0000 x3e877ff1}\n       {x43240000 x43580000 x3e8c7ffe}\n       {x43200000 x435a0000 x3e780022}}}\n     {t\n      {{x41300000 x4321aac1}}\n      {{x41300000 x435e1c6a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42b80000 x43880000 x3d4c0003}\n       {x42bc0000 x43870000 x3d89fffe}\n       {x42b80000 x43860000 x3e0afff3}}}\n     {t\n      {{x41300000 x42b9555a}}\n      {{x41300000 x43870000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c20000 x439b0000 x3d0c0003}\n       {x42c20000 x439b8000 x3d33fffd}\n       {x42c60000 x439b8000 x3d600000}\n       {x42ce0000 x439b0000 x3e35ffe7}\n       {x42ca0000 x43990000 x3e75ffe7}\n       {x42ca0000 x439b0000 x3e65000d}}}\n     {t\n      {{x41300000 x42c7555a}}\n      {{x41300000 x439ad560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41b80000 x439f8000 x3c8ffff3}\n       {x41b80000 x43a00000 x3d30000d}\n       {x41b80000 x439f8000 x3e3e0008}\n       {x41a00000 x439e8000 x3e41001d}\n       {x41900000 x439f8000 x3e3cffeb}\n       {x41c80000 x439f8000 x3e400000}\n       {x41f80000 x439c8000 x3e41001d}\n       {x41e80000 x439b8000 x3e0cffeb}\n       {x41b00000 x439c8000 x3e330015}\n       {x41b00000 x439d8000 x3e3cffeb}}}\n     {t\n      {{x41300000 x41bccccd}}\n      {{x41300000 x439e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x40a00000 x43da0000 x3ccffff3}\n       {x41100000 x43d90000 x3d3bfff6}}}\n     {t\n      {{x41300000 x40e00000}}\n      {{x41300000 x43d98000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41a00000 x43d90000 x3d27fff9}\n       {x41a00000 x43da0000 x3d580007}\n       {x41900000 x43da0000 x3e0afff3}}}\n     {t\n      {{x41300000 x419aaa99}}\n      {{x41300000 x43d9aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42600000 x43e00000 x3c800000}\n       {x42740000 x43e00000 x3d1bfff6}\n       {x427c0000 x43e00000 x3e25000d}}}\n     {t\n      {{x41300000 x42700000}}\n      {{x41300000 x43e00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42dc0000 x43e10000 x3cc00000}\n       {x42ee0000 x43e20000 x3d13fffd}\n       {x42f40000 x43de8000 x3e80fffc}\n       {x42ee0000 x43de8000 x3e6afff3}\n       {x42ea0000 x43df0000 x3e6a0019}\n       {x42e60000 x43df0000 x3cf0000d}}}\n     {t\n      {{x41300000 x42ea0000}}\n      {{x41300000 x43dfaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43540000 x43db8000 x3c6fffd8}\n       {x434f0000 x43dc8000 x3ce0001b}\n       {x434d0000 x43de8000 x3df80022}\n       {x43510000 x43dd8000 x3e670004}\n       {x435c0000 x43da8000 x3e7e0008}\n       {x43580000 x43da0000 x3e7e0008}\n       {x43510000 x43da8000 x3e7cffeb}\n       {x434d0000 x43dc8000 x3e7a0019}\n       {x434d0000 x43de8000 x3e78fffc}\n       {x43510000 x43dd8000 x3e75ffe7}\n       {x434d0000 x43dd8000 x3e2e0008}}}\n     {t\n      {{x41300000 x435145e3}}\n      {{x41300000 x43dc745a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43540000 x43da8000 x3cd80007}\n       {x43560000 x43da8000 x3d33fffd}\n       {x435a0000 x43da8000 x3e61fff8}\n       {x43580000 x43da8000 x3df9ffd6}}}\n     {t\n      {{x41300000 x43570000}}\n      {{x41300000 x43da8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43770000 x43d90000 x3cf7ffec}\n       {x437a0000 x43d90000 x3d27fff9}}}\n     {t\n      {{x41300000 x43788000}}\n      {{x41300000 x43d90000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43730000 x43cc8000 x3d0ffff3}\n       {x43750000 x43cc8000 x3d4c0003}\n       {x43750000 x43cb8000 x3e58fffc}\n       {x436e0000 x43cc8000 x3e877ff1}\n       {x436e0000 x43ce0000 x3e83ffef}\n       {x43710000 x43cd0000 x3e8d000d}\n       {x43730000 x43ce0000 x3e90fffc}\n       {x43780000 x43cd0000 x3ea5000d}\n       {x43780000 x43ce0000 x3e98fffc}\n       {x43770000 x43ce0000 x3e630015}\n       {x43730000 x43ce0000 x3e35ffe7}\n       {x43710000 x43ce0000 x3d920005}\n       {x43710000 x43d18000 x3d900000}\n       {x43750000 x43d28000 x3e03ffef}\n       {x43780000 x43d48000 x3e0a0019}}}\n     {t\n      {{x41300000 x4373999a}}\n      {{x41300000 x43ce5dd3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43480000 x43aa0000 x3cb0000d}\n       {x43380000 x43a88000 x3d0c0003}\n       {x43360000 x43a88000 x3dadfffb}\n       {x43390000 x43a90000 x3dd1fff8}\n       {x43460000 x43aa0000 x3dd80022}\n       {x43460000 x43a68000 x3e23ffef}\n       {x43440000 x43a88000 x3e1e0008}\n       {x43460000 x43aa0000 x3e15ffe7}\n       {x43510000 x43ac0000 x3e15ffe7}\n       {x43560000 x43ac0000 x3e1afff3}\n       {x435f0000 x43ac0000 x3e1e0008}\n       {x435f0000 x43ad8000 x3e1a0019}\n       {x43610000 x43b18000 x3e180022}\n       {x43660000 x43b20000 x3e18fffc}\n       {x43680000 x43af8000 x3e2cffeb}\n       {x43680000 x43b08000 x3e330015}\n       {x43650000 x43b30000 x3e33ffef}\n       {x43630000 x43b40000 x3e3a0019}}}\n     {t\n      {{x41300000 x4352472b}}\n      {{x41300000 x43ac9c6a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43030000 x43bf0000 x3c8ffff3}\n       {x43050000 x43bf0000 x3ce0001b}\n       {x43030000 x43bc0000 x3e430015}\n       {x43030000 x43bb0000 x3e4cffeb}\n       {x43030000 x43be0000 x3e6cffeb}\n       {x43050000 x43bf8000 x3e89800a}\n       {x43070000 x43ba8000 x3e95000d}\n       {x43070000 x43b78000 x3e99fff8}\n       {x43070000 x43b60000 x3e9b8002}\n       {x43070000 x43b50000 x3e957ffa}\n       {x430c0000 x43b20000 x3e91800a}\n       {x430e0000 x43b18000 x3e88800f}\n       {x430e0000 x43ae8000 x3e877ff1}\n       {x43120000 x43ad0000 x3e780022}\n       {x43100000 x43ac0000 x3e7cffeb}\n       {x43090000 x43ad8000 x3e80fffc}\n       {x43070000 x43ad8000 x3e6e0008}\n       {x43100000 x43a90000 x3de00000}\n       {x43120000 x43a68000 x3ca7fff9}\n       {x43120000 x43a48000 x3c1ffffb}}}\n     {t\n      {{x41300000 x4309999a}}\n      {{x41300000 x43b3accd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3f333333 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e20000 x44094000 x3c980007}\n       {x42ca0000 x44038000 x3d1bfff6}\n       {x42d80000 x44020000 x3e43ffef}\n       {x42dc0000 x43fe0000 x3e4effe3}\n       {x42c20000 x43fc0000 x3e5c0011}\n       {x42c60000 x43fe0000 x3e770004}\n       {x42d40000 x43ff8000 x3e75000d}\n       {x42d80000 x43fe8000 x3d24000a}\n       {x42d00000 x43fe0000 x3ccffff3}}}\n     {t\n      {{x41300000 x42d238d5}}\n      {{x41300000 x4400f8e5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ea0000 x440d4000 x3ca7fff9}\n       {x42e60000 x440e4000 x3cf7ffec}}}\n     {t\n      {{x41300000 x42e80000}}\n      {{x41300000 x440dc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42a60000 x44100000 x3cf0000d}\n       {x42aa0000 x44100000 x3d33fffd}\n       {x42c20000 x44108000 x3d580007}\n       {x42e20000 x440f0000 x3df40032}\n       {x42ea0000 x440e4000 x3c4ffff3}}}\n     {t\n      {{x41300000 x42c60000}}\n      {{x41300000 x440f8ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43580000 x44004000 x3d07fff9}\n       {x435a0000 x44004000 x3dd5ffe7}}}\n     {t\n      {{x41300000 x43590000}}\n      {{x41300000 x44004000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43850000 x43ff8000 x3d07fff9}\n       {x43850000 x44004000 x3d53fffd}\n       {x43838000 x44004000 x3e6c0011}\n       {x43828000 x44004000 x3d99fffe}}}\n     {t\n      {{x41300000 x43840000}}\n      {{x41300000 x44002000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43610000 x440b8000 x3cd80007}\n       {x43630000 x440b0000 x3d27fff9}\n       {x43630000 x440a8000 x3e61001d}\n       {x43650000 x440a4000 x3e877ff1}\n       {x43660000 x4409c000 x3e870004}\n       {x43680000 x44094000 x3e81fff8}\n       {x436a0000 x44094000 x3de00000}}}\n     {t\n      {{x41300000 x4365249c}}\n      {{x41300000 x440a36d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a40000 x44260000 x3d1bfff6}\n       {x43a58000 x4424c000 x3d64000a}}}\n     {t\n      {{x41300000 x43a4c000}}\n      {{x41300000 x44256000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43970000 x44270000 x3d0ffff3}\n       {x43970000 x4427c000 x3d4ffff3}\n       {x43980000 x4428c000 x3e35000d}\n       {x439a0000 x44284000 x3e7e0008}}}\n     {t\n      {{x41300000 x43980000}}\n      {{x41300000 x4427f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43968000 x44150000 x3c6fffd8}\n       {x43968000 x44140000 x3cd80007}\n       {x43968000 x44138000 x3e07ffde}\n       {x43958000 x44140000 x3e947ffe}\n       {x43958000 x44148000 x3d3bfff6}}}\n     {t\n      {{x41300000 x4396199a}}\n      {{x41300000 x44143333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438a8000 x441b4000 x3ce7fff9}\n       {x438b8000 x441c4000 x3d2c0003}\n       {x438c8000 x441bc000 x3e31fff8}\n       {x438a8000 x441b4000 x3e80fffc}\n       {x438a8000 x441c8000 x3e73ffef}\n       {x438b8000 x441c4000 x3d000000}}}\n     {t\n      {{x41300000 x438b2aa0}}\n      {{x41300000 x441be000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a68000 x4430c000 x3d2c0003}\n       {x43a78000 x44308000 x3d580007}}}\n     {t\n      {{x41300000 x43a70000}}\n      {{x41300000 x4430a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a88000 x44350000 x3d73fffd}\n       {x43a78000 x44324000 x3e6cffeb}\n       {x43a68000 x44324000 0}}}\n     {t\n      {{x41300000 x43a78000}}\n      {{x41300000 x44332ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439a0000 x44408000 x3cf0000d}\n       {x439c8000 x44404000 x3d580007}\n       {x43a10000 x443d0000 x3e070004}\n       {x43a10000 x443c0000 x3e05ffe7}\n       {x43a10000 x443c8000 x3e000000}\n       {x43a20000 x443c8000 x3e1c0011}\n       {x43a40000 x443ac000 x3e45ffe7}\n       {x43a40000 x44398000 x3d64000a}}}\n     {t\n      {{x41300000 x43a07000}}\n      {{x41300000 x443ce000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439f8000 x44540000 x3cd80007}\n       {x439d8000 x44540000 x3d64000a}\n       {x439b0000 x44528000 x3e81fff8}\n       {x439c8000 x44528000 x3e6effe3}\n       {x439d8000 x44524000 x3d73fffd}}}\n     {t\n      {{x41300000 x439d3333}}\n      {{x41300000 x44530ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43850000 x444dc000 x3d30000d}\n       {x43880000 x44500000 x3d64000a}\n       {x43890000 x44500000 x3e15ffe7}\n       {x43880000 x44504000 x3d960002}}}\n     {t\n      {{x41300000 x43878000}}\n      {{x41300000 x444f8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43818000 x44484000 x3ca7fff9}\n       {x43808000 x44494000 x3d1bfff6}\n       {x43808000 x444b0000 x3d87fff9}}}\n     {t\n      {{x41300000 x4380d560}}\n      {{x41300000 x44498000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43780000 x4443c000 x3c980007}\n       {x43780000 x44444000 x3d200000}\n       {x437a0000 x44458000 x3d53fffd}\n       {x43770000 x44450000 x3e0cffeb}\n       {x43770000 x44460000 x3dd1fff8}\n       {x437a0000 x4447c000 x3e070004}\n       {x437c0000 x4447c000 x3e05ffe7}\n       {x437e0000 x44484000 x3e03ffef}\n       {x43808000 x4448c000 x3da20005}\n       {x43818000 x4448c000 0}}}\n     {t\n      {{x41300000 x437b3333}}\n      {{x41300000 x44469333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x434a0000 x44460000 x3c800000}\n       {x434a0000 x44470000 x3cf0000d}\n       {x434b0000 x4447c000 x3e070004}\n       {x434d0000 x44468000 x3e838002}\n       {x434f0000 x44460000 x3e80fffc}\n       {x43540000 x44474000 x3e780022}\n       {x43580000 x4444c000 x3e78fffc}\n       {x435a0000 x44444000 0}}}\n     {t\n      {{x41300000 x43502000}}\n      {{x41300000 x44463000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e00000 x4420c000 x3d0ffff3}\n       {x42e20000 x4420c000 x3d4ffff3}\n       {x42ea0000 x441ec000 x3debffce}}}\n     {t\n      {{x41300000 x42e40000}}\n      {{x41300000 x44201550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43190000 x44450000 x3cb7ffec}\n       {x431e0000 x4443c000 x3d24000a}\n       {x43270000 x443e4000 x3d580007}\n       {x43290000 x443d0000 x3d4c0003}\n       {x43200000 x44408000 x3d200000}\n       {x431d0000 x4442c000 x3dcc0003}\n       {x43220000 x44428000 x3de3ffef}\n       {x43260000 x443f4000 x3e0e0008}\n       {x43260000 x443d8000 x3e0effe3}\n       {x43220000 x443e4000 x3e11fff8}\n       {x43220000 x443d8000 x3e2effe3}\n       {x43270000 x443ac000 x3e27ffde}\n       {x43290000 x44388000 x3e01001d}\n       {x43290000 x44378000 x3e030015}\n       {x432b0000 x44350000 x3e030015}\n       {x43290000 x4432c000 x3e05ffe7}\n       {x43270000 x442f8000 x3e070004}\n       {x43240000 x442e4000 x3e0a0019}\n       {x431d0000 x442cc000 x3e180022}\n       {x43190000 x442c0000 x3e23ffef}\n       {x43170000 x442a8000 x3e21001d}\n       {x43190000 x4429c000 x3e0cffeb}\n       {x431b0000 x44284000 x3dce0008}\n       {x431b0000 x44270000 x3d04000a}\n       {x43170000 x44244000 x3d27fff9}\n       {x43150000 x44234000 x3d900000}\n       {x43150000 x44220000 x3d900000}\n       {x43150000 x4420c000 x3cc80014}\n       {x43120000 x441e0000 x3c9fffe5}}}\n     {t\n      {{x41300000 x431f845a}}\n      {{x41300000 x44338d3f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43070000 x447d0000 x3cd80007}\n       {x43070000 x447dc000 x3d0ffff3}\n       {x43070000 x447ec000 x3dd1fff8}\n       {x430b0000 x447d0000 x3e25000d}\n       {x43140000 x44778000 x3e23ffef}\n       {x43150000 x44740000 x3dc00000}\n       {x43190000 x446e0000 x3da20005}\n       {x431b0000 x446a0000 x3e1c0011}\n       {x43190000 x44684000 x3e3cffeb}\n       {x43150000 x44698000 x3e4c0011}\n       {x43100000 x446f0000 x3e4c0011}\n       {x43120000 x44738000 x3e4c0011}\n       {x43120000 x44730000 x3e4e0008}\n       {x43120000 x44714000 x3e53ffef}\n       {x43140000 x446b0000 x3e370004}\n       {x43140000 x44660000 x3e01001d}\n       {x43150000 x4462c000 x3e0a0019}\n       {x43140000 x44624000 x3e05ffe7}\n       {x43100000 x445fc000 x3dfc0011}\n       {x430e0000 x445d8000 x3dd9ffd6}\n       {x430e0000 x445ac000 x3ddc0011}\n       {x430b0000 x4459c000 x3dd80022}\n       {x43090000 x44580000 x3dd80022}\n       {x43070000 x4456c000 x3d4ffff3}\n       {x43000000 x44548000 x3d1bfff6}\n       {x43000000 x44540000 x3bc0000b}}}\n     {t\n      {{x41300000 x430f1d71}}\n      {{x41300000 x446949db}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42000000 x445b8000 x3d0ffff3}\n       {x42080000 x445c0000 x3d47fff9}\n       {x42100000 x445c0000 x3de3ffef}\n       {x42100000 x445e4000 x3e070004}\n       {x42100000 x44608000 x3e370004}\n       {x42100000 x4463c000 x3e48fffc}\n       {x42100000 x44660000 x3e51001d}\n       {x42100000 x4467c000 x3e51fff8}\n       {x42080000 x4467c000 x3e65000d}\n       {x42100000 x44660000 x3e75000d}\n       {x42100000 x44650000 x3e730015}\n       {x42240000 x44620000 x3e71fff8}\n       {x422c0000 x44600000 x3e65ffe7}\n       {x42340000 x445dc000 x3e470004}\n       {x42340000 x445d0000 x3da60002}\n       {x42340000 x445c0000 x3d64000a}\n       {x42340000 x445d0000 x3d93fffd}\n       {x42340000 x44600000 x3e4effe3}\n       {x42200000 x44634000 x3e95000d}\n       {x42180000 x44674000 x3e99fff8}\n       {x42180000 x4467c000 x3e9c0011}\n       {x42180000 x44644000 x3ea38002}\n       {x42200000 x445fc000 x3e9b8002}\n       {x42180000 x445d8000 x3e8f7ff1}\n       {x42180000 x445ec000 x3e98800f}\n       {x42100000 x44610000 x3eb0fffc}\n       {x42180000 x445ec000 x3ec1fff8}\n       {x42200000 x445b8000 x3eac7ffe}\n       {x42200000 x445c8000 x3e9d7ffa}\n       {x42200000 x445f4000 x3ea28006}\n       {x42240000 x445dc000 x3ea67ff6}\n       {x422c0000 x445ac000 x3e5afff3}\n       {x422c0000 x445b8000 x3e23ffef}\n       {x422c0000 x445c0000 x3e55000d}\n       {x422c0000 x445ec000 x3e63ffef}\n       {x42340000 x44634000 x3e8b8002}\n       {x42180000 x446b4000 x3e92fff3}\n       {x42080000 x446e0000 x3e95000d}\n       {x42000000 x446e0000 x3e980000}\n       {x42080000 x446b4000 x3e90800f}\n       {x42180000 x4463c000 x3e730015}\n       {x42180000 x44600000 x3e1c0011}\n       {x42200000 x445fc000 x3e3a0019}\n       {x42100000 x44618000 x3e83ffef}\n       {x42080000 x44658000 x3e98fffc}\n       {x42100000 x44690000 x3ea57ffa}\n       {x42000000 x446d8000 x3ea80000}\n       {x42000000 x446e8000 x3ea80000}\n       {x42100000 x446b0000 x3ea67ff6}\n       {x42180000 x44698000 x3e4afff3}\n       {x42000000 x446d8000 x3e55000d}\n       {x41e80000 x44704000 x3e80fffc}\n       {x41e80000 x4470c000 x3e81fff8}\n       {x41f80000 x446f8000 x3e5afff3}\n       {x42100000 x44714000 x3e41fff8}\n       {x42340000 x44744000 x3e4a0019}\n       {x42340000 x44730000 x3e43ffef}\n       {x422c0000 x44728000 x3ddc0011}\n       {x423c0000 x44754000 x3dcc0003}\n       {x42600000 x44780000 x3df00043}\n       {x42580000 x44764000 x3df40032}\n       {x42480000 x4475c000 x3d24000a}\n       {x42500000 x4478c000 x3de6002a}\n       {x42680000 x447a4000 x3e3a0019}\n       {x42480000 x44768000 x3e61001d}\n       {x422c0000 x44764000 x3e51001d}\n       {x42340000 x4478c000 x3e83ffef}\n       {x42480000 x4479c000 x3e9c0011}\n       {x422c0000 x4475c000 x3ea5000d}\n       {x42080000 x4474c000 x3ea67ff6}\n       {x42100000 x44788000 x3eac7ffe}\n       {x422c0000 x447ac000 x3eb80000}\n       {x42340000 x44770000 x3eb8fffc}\n       {x42200000 x44754000 x3eb38002}\n       {x42100000 x44788000 x3eb3ffef}\n       {x42240000 x447b0000 x3ebd000d}\n       {x422c0000 x4478c000 x3ebc0011}\n       {x42180000 x44764000 x3eb0800f}\n       {x41f80000 x44794000 x3eb38002}\n       {x42100000 x447c8000 x3ec70004}\n       {x423c0000 x447b8000 x3ec77ff1}\n       {x42340000 x44788000 x3ec00000}\n       {x42180000 x44780000 x3ebf0004}\n       {x42200000 x44794000 x3ec5000d}\n       {x42680000 x447d0000 x3ec70004}\n       {x42820000 x447b8000 x3ec8fffc}\n       {x423c0000 x44770000 x3ec8fffc}\n       {x42200000 x44768000 x3ec8fffc}\n       {x42580000 x447ac000 x3ec60008}\n       {x428c0000 x447d4000 x3ec77ff1}\n       {x42aa0000 x447c8000 x3ec77ff1}\n       {x427c0000 x44794000 x3ecd7ffa}\n       {x42500000 x44794000 x3ed1fff8}\n       {x42860000 x447c8000 x3ecf0004}\n       {x42ac0000 x447ec000 x3ece7ff6}\n       {x429a0000 x447d0000 x3ed00000}\n       {x42180000 x44780000 x3ed28006}\n       {x41b00000 x4475c000 x3eaafff3}}}\n     {t\n      {{x41300000 x422a491d}}\n      {{x41300000 x446cdeb8}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 ds 1 dh 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42940000 x445e4000 x3c6fffd8}\n       {x42a20000 x445d8000 x3d04000a}\n       {x42aa0000 x445c0000 x3e2afff3}\n       {x42aa0000 x445b4000 x3e63ffef}\n       {x42aa0000 x445c0000 x3e070004}\n       {x42aa0000 x445d8000 x3e1effe3}\n       {x42a60000 x445c8000 x3e41001d}}}\n     {t\n      {{x41300000 x42a5248f}}\n      {{x41300000 x445cb6d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x422c0000 x4456c000 x3d07fff9}\n       {x422c0000 x44588000 x3d30000d}\n       {x42340000 x4459c000 x3e13ffef}\n       {x42340000 x44594000 x3e31fff8}\n       {x422c0000 x44570000 x3e200000}\n       {x42340000 x44570000 x3d47fff9}\n       {x42340000 x44578000 x3d47fff9}\n       {x423c0000 x44594000 x3d4c0003}\n       {x42440000 x44594000 x3e130015}}}\n     {t\n      {{x41300000 x42340000}}\n      {{x41300000 x44584000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42340000 x445ac000 x3c980007}\n       {x42340000 x44594000 x3d180007}\n       {x42340000 x44588000 x3d1bfff6}}}\n     {t\n      {{x41300000 x42340000}}\n      {{x41300000 x44598000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x44554000 x3c60001b}\n       {x42080000 x44564000 x3d27fff9}\n       {x42100000 x44564000 x3c0ffffd}\n       {x42100000 x44578000 x3be00005}\n       {x42180000 x44594000 x3d64000a}\n       {x42180000 x445a4000 x3c8ffff3}}}\n     {t\n      {{x41300000 x4211554d}}\n      {{x41300000 x44577550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e80000 x444e8000 x3c800000}\n       {x41e80000 x444f8000 x3c880014}}}\n     {t\n      {{x41300000 x41e80000}}\n      {{x41300000 x444f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41c80000 x444b0000 x3c6fffd8}\n       {x41d80000 x444c4000 x3cb7ffec}\n       {x41e80000 x444d4000 x3affffd5}}}\n     {t\n      {{x41300000 x41d80000}}\n      {{x41300000 x444c2ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41c80000 x44458000 x3d4ffff3}\n       {x41a00000 x44474000 x3d7bfff6}\n       {x41900000 x4448c000 x3cb0000d}}}\n     {t\n      {{x41300000 x41a80000}}\n      {{x41300000 x44472ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41b00000 x44420000 x3d0ffff3}\n       {x41b80000 x44420000 x3d44000a}\n       {x41a00000 x44434000 x3e400000}\n       {x41900000 x44444000 x3e65000d}\n       {x41800000 x44450000 x3e770004}\n       {x41b00000 x44450000 x3e6c0011}\n       {x41f80000 x4444c000 x3e2c0011}\n       {x41e80000 x44450000 x3d33fffd}\n       {x41d80000 x44450000 0}}}\n     {t\n      {{x41300000 x41b8e388}}\n      {{x41300000 x4444071b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x40800000 x44268000 x3d0ffff3}\n       {x40800000 x4423c000 x3d47fff9}}}\n     {t\n      {{x41300000 x40800000}}\n      {{x41300000 x44252000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x40a00000 x442f8000 x3ce0001b}\n       {x40a00000 x442c0000 x3d4c0003}\n       {x40800000 x4428c000 x3d3bfff6}}}\n     {t\n      {{x41300000 x4095555c}}\n      {{x41300000 x442c1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e80000 x44364000 x3c60001b}\n       {x41f80000 x44364000 x3d0ffff3}\n       {x41d80000 x44340000 x3ea9fff8}\n       {x41100000 x44308000 x3e65000d}\n       {x40e00000 x44300000 x3c000000}}}\n     {t\n      {{x41300000 x41a4cccd}}\n      {{x41300000 x44336666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42880000 x443d0000 x3d180007}\n       {x428c0000 x443d8000 x3ddc0011}\n       {x428c0000 x443c8000 x3e55000d}\n       {x42880000 x443c0000 x3e58fffc}\n       {x428c0000 x443d0000 x3e5cffeb}\n       {x42900000 x443bc000 x3e900000}\n       {x428c0000 x443a4000 x3e83ffef}\n       {x42820000 x443bc000 x3e81fff8}\n       {x42680000 x443d0000 x3e83ffef}\n       {x42680000 x443c0000 0}}}\n     {t\n      {{x41300000 x4285cccd}}\n      {{x41300000 x443c4666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42440000 x4423c000 x3c6fffd8}\n       {x423c0000 x4420c000 x3ca7fff9}\n       {x423c0000 x441b4000 x3d24000a}\n       {x423c0000 x441ac000 x3d2c0003}}}\n     {t\n      {{x41300000 x423e0000}}\n      {{x41300000 x441ea000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42600000 x44284000 x3cc00000}\n       {x42600000 x44294000 x3d27fff9}\n       {x42500000 x442e4000 x3d7bfff6}\n       {x42480000 x442e8000 x3da7fff9}}}\n     {t\n      {{x41300000 x42560000}}\n      {{x41300000 x442b9000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42240000 x44148000 x3d0c0003}\n       {x423c0000 x44158000 x3d400000}\n       {x42480000 x44174000 x3e200000}\n       {x42500000 x44198000 x3e1e0008}\n       {x42600000 x441d0000 x3e15000d}\n       {x426c0000 x441fc000 x3cb7ffec}\n       {x426c0000 x44218000 x3c6fffd8}}}\n     {t\n      {{x41300000 x42500000}}\n      {{x41300000 x441a6db2}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42680000 x4408c000 x3ca7fff9}\n       {x427c0000 x44094000 x3d180007}\n       {x426c0000 x44068000 x3ea0fffc}\n       {x42600000 x44070000 x3ea67ff6}\n       {x42600000 x440a8000 x3ead000d}\n       {x42740000 x440b8000 x3eb28006}\n       {x42880000 x44084000 x3eb47ffe}\n       {x42740000 x4408c000 x3eb70004}\n       {x42600000 x440d4000 x3eb9800a}\n       {x42680000 x440e4000 x3ec28006}\n       {x42740000 x440b8000 x3ec60008}\n       {x426c0000 x440c8000 x3ec47ffe}\n       {x42600000 x440ec000 x3ec47ffe}\n       {x426c0000 x440dc000 x3ec60008}\n       {x426c0000 x4408c000 x3ec0fffc}\n       {x42580000 x44068000 x3ec0fffc}\n       {x426c0000 x4405c000 x3ec00000}\n       {x428c0000 x4405c000 x3ebc7ffe}\n       {x42b00000 x44070000 x3ebe0008}\n       {x42b80000 x4408c000 x3ec00000}\n       {x42bc0000 x440a8000 x3ec2fff3}\n       {x42ca0000 x440a8000 x3ec57ffa}\n       {x42d40000 x440b8000 x3ec60008}\n       {x42e00000 x440a8000 x3ec67ff6}\n       {x42e00000 x4409c000 x3ec8fffc}\n       {x42dc0000 x440a4000 x3ec77ff1}\n       {x42e00000 x440c8000 x3ec67ff6}\n       {x42e20000 x440c0000 x3ec60008}\n       {x42e60000 x440a8000 x3ec8800f}\n       {x42e20000 x440a4000 x3ec9fff8}\n       {x42d40000 x44080000 x3eca8006}\n       {x42b00000 x44038000 x3ecd000d}\n       {x42a20000 x44014000 x3ecc7ffe}\n       {x42940000 x44018000 x3ece7ff6}\n       {x42900000 x44018000 x3ed0800f}\n       {x42880000 x44020000 x3ed0800f}\n       {x42680000 x44044000 x3ed00000}\n       {x42500000 x44060000 x3ecf7ff1}\n       {x42440000 x44078000 x3eb9800a}}}\n     {t\n      {{x41300000 x42994831}}\n      {{x41300000 x4408a26f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42a20000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {blur {\n  { selectAll bs 91 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 15 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.28 bs 125 dh 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur bs 91 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 23 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_size 91\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_effect_parameter1 15\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  lifetime_type \"all frames\"\n  lifetime_start 39\n  lifetime_end 39\n  motionblur_on true\n  brush_type blur\n  brush_size 91\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  effect_parameter1 15\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint1\n  xpos 1907\n  ypos 14782\n  disable {{\"parent.lensDirtPicker == 1 ? 0 : 1\"}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a}\n    {cubiccurve Burn19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a2c000 x43f28000 x3e100000}\n       {x44abc000 x43fe0000 0}}}\n     {t\n   {{x41300000 x44a74000}}\n   {{x41300000 x43f84000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43640000 x43310000 x3d600000}\n       {x436b0000 x43310000 x3e3cffeb}\n       {x43510000 x42920000 x3e670004}\n       {x433e0000 xc2d00000 x3ecf0004}\n       {x43440000 xc30f0000 x3eeafff3}\n       {x433d0000 xc34f0000 x3ed38002}}}\n     {t\n   {{x41300000 x434fd53f}}\n   {{x41300000 xc0900000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43420000 x43958000 x3ca7fff9}\n       {x43380000 x437f0000 x3d000000}\n       {x430f0000 x42f80000 x3e960008}\n       {x43010000 x428e0000 x3ecd7ffa}\n       {x42ee0000 xc1200000 x3ed0fffc}\n       {x42ae0000 xc2a40000 x3ec1fff8}\n       {x429c0000 xc2ae0000 0}}}\n     {t\n   {{x41300000 x43056dd3}}\n   {{x41300000 x42a2db71}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ab8000 x447c8000 x3d180007}\n       {x43980000 x44710000 x3dddffc5}\n       {x43898000 x44600000 x3e67ffde}\n       {x43940000 x44688000 x3e92fff3}\n       {x43be8000 x44836000 x3e8e7ff6}\n       {x43980000 x446e8000 x3e9e7ff6}\n       {x43980000 x44694000 x3ed1fff8}\n       {x43a40000 x44748000 x3ed0fffc}\n       {x43c00000 x44846000 x3ec8800f}\n       {x438c8000 x44724000 x3ec2fff3}\n       {x43a00000 x44806000 x3eca8006}\n       {x43b40000 x44876000 x3ea1fff8}}}\n     {t\n   {{x41300000 x43a1aaa0}}\n   {{x41300000 x4476f550}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cd0000 x4483c000 x3c6fffd8}\n       {x43cd8000 x44840000 x3d07fff9}\n       {x43c20000 x4481a000 x3df80022}\n       {x43920000 x445b4000 x3ec2fff3}\n       {x43870000 x44488000 x3f02a002}\n       {x43700000 x442d8000 x3f07e005}\n       {x43700000 x44300000 x3ebd000d}\n       {x43710000 x44328000 0}}}\n     {t\n   {{x41300000 x439bc000}}\n   {{x41300000 x4458d000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cd0000 x447d4000 x3d5bfff6}\n       {x43bd8000 x4474c000 x3e0e0008}\n       {x43980000 x44570000 x3eb57ffa}\n       {x43858000 x44460000 x3eed000d}\n       {x43560000 x4423c000 x3ef8fffc}\n       {x43510000 x441b8000 x3efa8006}\n       {x43580000 x44174000 x3ec2fff3}}}\n     {t\n   {{x41300000 x438ec917}}\n   {{x41300000 x44455b75}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43898000 x44760000 x3d0ffff3}\n       {x431c0000 x44300000 x3e15ffe7}}}\n     {t\n   {{x41300000 x43578000}}\n   {{x41300000 x44530000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442c8000 x43710000 x3d8dfffb}\n       {x442d8000 x436c0000 x3e85000d}\n       {x441c8000 x42c20000 x3e98800f}\n       {x44190000 xc30d0000 x3efd7ffa}\n       {x441a4000 xc3400000 x3e9a8006}}}\n     {t\n   {{x41300000 x4421f333}}\n   {{x41300000 x4240cccd}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4492e000 x42be0000 x3e9a8006}\n       {x44942000 x42580000 x3ea77ff1}\n       {x4498a000 xc2d00000 x3eac7ffe}\n       {x4498a000 xc2f40000 0}}}\n     {t\n   {{x41300000 x44961000}}\n   {{x41300000 xc19a0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44846000 x435d0000 x3d67fff9}\n       {x4488e000 x42da0000 x3eb77ff1}\n       {x448f8000 xc2b00000 x3ee70004}\n       {x44904000 xc3250000 x3ef67ff6}}}\n     {t\n   {{x41300000 x448b4000}}\n   {{x41300000 x419a0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44424000 x43730000 x3d13fffd}\n       {x444e8000 x438e0000 x3dd40032}\n       {x445b0000 x431e0000 x3ec5000d}\n       {x445e4000 x42a00000 x3f0fe005}\n       {x44664000 xc28c0000 x3f1b6007}\n       {x44630000 xc3100000 x3f1c6003}}}\n     {t\n   {{x41300000 x44588ab0}}\n   {{x41300000 x42b7aaa6}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cfa000 x4487c000 x3d6c0003}\n       {x44cca000 x44858000 x3e4effe3}\n       {x44c8c000 x445f8000 x3ec77ff1}\n       {x44c90000 x44454000 x3efd7ffa}\n       {x44cb0000 x4406c000 x3ef9fff8}}}\n     {t\n   {{x41300000 x44cb6666}}\n   {{x41300000 x445acccd}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b7a000 x447dc000 x3c6fffd8}\n       {x44b7e000 x44810000 x3ce7fff9}\n       {x44b80000 x44824000 x3e0e0008}\n       {x44b66000 x447a4000 x3ee9fff8}\n       {x44b4e000 x44568000 x3f0f9ffd}\n       {x44b76000 x441dc000 x3f215ffe}\n       {x44b7a000 x440d8000 x3f225ffa}\n       {x44bc0000 x43e40000 x3f15dffc}\n       {x44bd2000 x43de0000 0}}}\n     {t\n   {{x41300000 x44b851ec}}\n   {{x41300000 x4443b1cb}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef4000 x4478c000 x3d13fffd}\n       {x44eda000 x44730000 x3e3a0019}\n       {x44e88000 x44444000 x3ef1800a}\n       {x44e7a000 x44280000 x3f0b6007}\n       {x44e88000 x43ca8000 x3f0adff8}\n       {x44f06000 x42be0000 x3ef57ffa}\n       {x44f16000 x42820000 0}}}\n     {t\n   {{x41300000 x44ec76b8}}\n   {{x41300000 x440e76d9}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dde000 x44754000 x3cb0000d}\n       {x44de0000 x44774000 x3cc80014}\n       {x44df6000 x447e8000 x3dd1fff8}\n       {x44d9c000 x446cc000 x3ed1fff8}\n       {x44d74000 x444fc000 x3f1fe005}\n       {x44d96000 x43d80000 x3f341ffb}\n       {x44dde000 x43490000 x3f381ffb}\n       {x44de4000 xc2540000 x3f2f6007}\n       {x44e00000 xc2ea0000 x3f092008}\n       {x44e1e000 xc3450000 x3ee1fff8}\n       {x44e28000 xc36c0000 x3dd1fff8}}}\n     {t\n   {{x41300000 x44dda5c3}}\n   {{x41300000 x43da0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c2e000 x447f8000 x3d83fffd}\n       {x44c1c000 x447dc000 x3e45ffe7}\n       {x44c16000 x4464c000 x3f036007}\n       {x44c3c000 x444c0000 x3f30e001}\n       {x44cb2000 x44198000 x3f389ff9}\n       {x44d3e000 x437d0000 x3f3c9ff9}\n       {x44d82000 xc0000000 x3f36a002}\n       {x44db2000 xc2aa0000 x3f2c9ff9}\n       {x44df8000 xc33e0000 x3f279ffd}\n       {x44e1e000 xc3908000 x3f1b6007}\n       {x44e1a000 xc3930000 0}}}\n     {t\n   {{x41300000 x44d15d1f}}\n   {{x41300000 x43ab974c}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b9c000 x447c8000 x3d820005}\n       {x44b84000 x4475c000 x3e6e0008}\n       {x44b58000 x44440000 x3f1da006}\n       {x44b58000 x44298000 x3f395ffe}\n       {x44b5c000 x43b60000 x3f3c6003}\n       {x44b7e000 x438c8000 x3f3f9ffd}\n       {x44bd2000 x428c0000 x3f3ddffc}\n       {x44bf4000 x41600000 x3f331fff}\n       {x44c42000 xc29c0000 x3f2f9ffd}\n       {x44c6e000 xc34f0000 x3f201ffb}\n       {x44c98000 xc3880000 x3f02a002}}}\n     {t\n   {{x41300000 x44bcae66}}\n   {{x41300000 x43a4dd0e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44790000 x44674000 x3e9d000d}\n       {x44710000 x445ec000 x3eb47ffe}\n       {x4452c000 x4417c000 x3f092008}\n       {x4447c000 x43ef8000 x3f26a002}\n       {x443cc000 x432c0000 x3f2b9ffd}\n       {x443b0000 x42be0000 x3f2a5ffa}\n       {x443ec000 xc1e80000 x3f29dffc}\n       {x4447c000 xc31b0000 x3f231fff}\n       {x44510000 xc34f0000 x3f179ffd}\n       {x444e8000 xc3100000 x3f015ffe}\n       {x444f8000 xc0000000 x3eff0004}\n       {x44584000 x43c70000 x3f03e005}\n       {x445f4000 x44094000 x3f0f9ffd}\n       {x44784000 x4444c000 x3f131fff}\n       {x44892000 x447a4000 x3f16a002}\n       {x44846000 x446e0000 x3f1b6007}\n       {x4481e000 x445b0000 x3f2b1fff}\n       {x447b8000 x4419c000 x3f2ea002}\n       {x447fc000 x432d0000 x3f306003}\n       {x4481e000 xc2000000 x3f29dffc}\n       {x44862000 xc2e80000 x3f1ce001}\n       {x44854000 xc2a60000 x3f13e005}\n       {x44862000 x42b80000 x3f152008}\n       {x44864000 x43f40000 x3f1c1ffb}\n       {x448ce000 x444f0000 x3f209ff9}\n       {x4496a000 x4474c000 x3f27e005}\n       {x448fe000 x445c4000 x3f286003}\n       {x448f0000 x441c0000 x3f362004}\n       {x448fe000 x440d0000 x3f3adff8}\n       {x448fe000 x43918000 x3f395ffe}\n       {x4496e000 x42e80000 x3f389ff9}\n       {x449c6000 xc1400000 x3f25dffc}\n       {x44a1e000 xc2c80000 x3f11dffc}\n       {x44a34000 xc2f40000 x3d580007}}}\n     {t\n   {{x41300000 x447d499a}}\n   {{x41300000 x43b612d1}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Burn1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44690000 x44738000 x3e070004}\n       {x44628000 x446fc000 x3e8f7ff1}\n       {x444cc000 x44410000 x3f046003}\n       {x44408000 x442a0000 x3f26a002}\n       {x4431c000 x44018000 x3f2fe005}\n       {x442b4000 x43940000 x3f371fff}\n       {x442a8000 x432f0000 x3f39a006}\n       {x442a0000 x43010000 x3f34e001}\n       {x44270000 x42240000 x3f346003}\n       {x44280000 xc28e0000 x3f322004}\n       {x44294000 xc3250000 x3f281ffb}\n       {x442a0000 xc32c0000 x3f201ffb}\n       {x44248000 xc30d0000 x3f11a006}\n       {x44220000 x42da0000 x3f11a006}\n       {x44298000 x43fb0000 x3f146003}\n       {x443a8000 x4439c000 x3f176007}\n       {x444e0000 x44740000 x3f1be005}\n       {x4453c000 x4480c000 x3f192008}\n       {x4452c000 x4484c000 x3f19dffc}\n       {x443e8000 x446fc000 x3f1d2008}\n       {x441a4000 x442b4000 x3f22a002}\n       {x44108000 x440a8000 x3f2be005}\n       {x44088000 x43a50000 x3f2da006}\n       {x43fb0000 x428c0000 x3f2e5ffa}\n       {x43f68000 xc2700000 x3f2be005}\n       {x43ff0000 xc31b0000 x3f271fff}\n       {x44020000 xc3430000 x3f1c1ffb}\n       {x44004000 xc34f0000 x3f149ff9}}}\n     {t\n   {{x41300000 x442b224e}}\n   {{x41300000 x43b9adb2}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e800000 g x3e800000 b x3e800000 ro 0 go 0 bo 0 ao 0 opc x3e4ccccd bs x440d4000 bm x40400000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41980000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x433b0000 x44388000 x3cc80014}\n       {x434e0000 x444a4000 x3d30000d}\n       {x434e0000 x444cc000 x3b9ffffb}}}\n     {t\n      {{x41300000 x4347aac1}}\n      {{x41300000 x44452ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f20000 x4400c000 x3c8ffff3}\n       {x42f80000 x44028000 x3c8ffff3}\n       {x433b0000 x44264000 x3d3bfff6}\n       {x43380000 x44284000 x3d0c0003}}}\n     {t\n      {{x41300000 x431a0000}}\n      {{x41300000 x44147000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4484a000 x41200000 x3cf7ffec}\n       {x44886000 x40a00000 x3e3effe3}\n       {x44894000 x40a00000 x3d30000d}}}\n     {t\n      {{x41300000 x44876a8f}}\n      {{x41300000 x40d5555c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44430000 x43490000 x3ce0001b}\n       {x44468000 x43390000 x3d27fff9}\n       {x444d4000 x43280000 x3e100000}\n       {x4453c000 x42b40000 x3e3e0008}\n       {x445d0000 x428c0000 x3e9a8006}\n       {x44620000 x42740000 x3e99fff8}\n       {x4469c000 x42380000 x3e9a8006}\n       {x4469c000 x42140000 x3e99fff8}\n       {x44554000 x424c0000 x3e700000}\n       {x444a4000 x42820000 x3e860008}\n       {x44408000 x42880000 x3e857ffa}\n       {x443e0000 x42680000 x3e8e7ff6}\n       {x44454000 x42000000 x3e9e7ff6}\n       {x444a0000 x41980000 x3e9a8006}\n       {x444cc000 x40e00000 x3e580022}}}\n     {t\n      {{x41300000 x4450777d}}\n      {{x41300000 x429a6666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44408000 x43640000 x3c6fffd8}\n       {x44418000 x435d0000 0}}}\n     {t\n      {{x41300000 x44410000}}\n      {{x41300000 x43608000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4422c000 x44374000 x3cf0000d}\n       {x44218000 x443e8000 x3d9c0003}\n       {x44240000 x44430000 x3da3fffd}}}\n     {t\n      {{x41300000 x4422c000}}\n      {{x41300000 x443d9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44094000 x43908000 x3cf0000d}\n       {x4408c000 x439c8000 x3d27fff9}\n       {x440a8000 x43b18000 x3e05ffe7}\n       {x440cc000 x43bd8000 x3e100000}\n       {x440e0000 x43cd0000 x3e100000}\n       {x44100000 x43d98000 x3e21001d}\n       {x440f4000 x43ee0000 x3e300000}\n       {x440b8000 x43f78000 x3e400000}\n       {x4409c000 x44060000 x3e51001d}\n       {x44094000 x440a0000 x3e470004}\n       {x440a8000 x440ec000 x3df40032}\n       {x440d0000 x44124000 x3d24000a}\n       {x440e0000 x44140000 0}}}\n     {t\n      {{x41300000 x440be26f}}\n      {{x41300000 x43e64eb8}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e70000 x43380000 x3cf7ffec}\n       {x43f08000 x430f0000 x3d07fff9}\n       {x43f90000 x42d20000 x3e0effe3}\n       {x44080000 x42100000 x3e15000d}\n       {x440c4000 x42240000 x3e4cffeb}\n       {x4411c000 x424c0000 x3e100000}\n       {x44130000 x42600000 x3d64000a}\n       {x44124000 x42ae0000 x3d67fff9}}}\n     {t\n      {{x41300000 x44067000}}\n      {{x41300000 x42afc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a00000 x42fc0000 x3d87fff9}\n       {x43a08000 x42f20000 x3d24000a}\n       {x43a00000 x43100000 x3dddffc5}\n       {x43a28000 x43360000 x3e8f7ff1}\n       {x43b28000 x437c0000 x3e9afff3}\n       {x43b50000 x43840000 x3e977ff1}\n       {x43c00000 x43950000 x3e960008}\n       {x43c50000 x43930000 x3e1e0008}\n       {x43d48000 x437a0000 x3e11fff8}\n       {x43da8000 x43670000 x3c6fffd8}}}\n     {t\n      {{x41300000 x43b64000}}\n      {{x41300000 x43583333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43010000 x42ea0000 x3ca7fff9}\n       {x43060000 x43030000 x3d04000a}\n       {x43120000 x431e0000 x3e05000d}\n       {x43160000 x432c0000 x3e25000d}\n       {x431e0000 x43490000 x3e81800a}\n       {x43280000 x435f0000 x3e957ffa}\n       {x43310000 x43810000 x3e960008}\n       {x433b0000 x438c8000 x3e9c7ffe}\n       {x434a0000 x439b8000 x3e9d7ffa}\n       {x434e0000 x43a18000 x3e9d7ffa}\n       {x43640000 x43b28000 x3e9e0008}\n       {x436e0000 x43b88000 x3e9afff3}\n       {x43730000 x43c10000 x3e9b8002}\n       {x43840000 x43cb0000 x3e9d7ffa}\n       {x438d0000 x43d60000 x3e967ff6}\n       {x438f0000 x43dc0000 x3e8afff3}\n       {x439e0000 x43ef8000 x3e900000}\n       {x43a50000 x43f80000 x3e89fff8}\n       {x43a88000 x44018000 x3e89fff8}\n       {x43af0000 x44074000 x3e89fff8}\n       {x43ba0000 x440f4000 x3e877ff1}\n       {x43be8000 x44140000 x3e27ffde}\n       {x43d20000 x4420c000 x3df9ffd6}\n       {x43d80000 x4423c000 0}}}\n     {t\n      {{x41300000 x437faac1}}\n      {{x41300000 x43bcb560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {xc2380000 x42c80000 x3d24000a}\n       {xc2240000 x42cc0000 x3e03ffef}\n       {xc2080000 x42b40000 x3ea67ff6}\n       {xc1e80000 x42880000 x3ed67ff6}\n       {xc1400000 x42140000 x3edf7ff1}\n       {x40000000 x41d80000 x3ee28006}\n       {x41b00000 x40e00000 x3ee38002}\n       {x41e80000 x40000000 x3ee3ffef}\n       {x42740000 xc1400000 x3ee28006}\n       {x42aa0000 xc1880000 x3edafff3}\n       {x42be0000 0 x3edc0011}\n       {x42b40000 x41a00000 x3edafff3}\n       {x42880000 x42300000 x3ede0008}\n       {x42840000 x42280000 x3ee28006}\n       {x42ae0000 x41f80000 x3ee28006}\n       {x42d20000 x41c00000 x3ee0fffc}\n       {x42e00000 x41a00000 x3e35ffe7}}}\n     {t\n      {{x41300000 x421b4b44}}\n      {{x41300000 x4209a5af}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41100000 x4471c000 x3d000000}\n       {x40000000 x446cc000 x3d960002}\n       {xc1000000 x44650000 x3e8c7ffe}\n       {xc1f80000 x445b0000 x3ece0008}\n       {xc2140000 x4458c000 x3ef28006}\n       {xc2140000 x445a0000 x3ef60008}\n       {xc2000000 x44630000 x3f00e001}\n       {xc0e00000 x4471c000 x3eff0004}\n       {x40000000 x4475c000 x3efc7ffe}\n       {x40400000 x44760000 x3efc0011}\n       {xc1000000 x44708000 x3efc0011}\n       {xc1b00000 x44650000 x3f006003}\n       {xc1a00000 x44664000 x3f012008}\n       {xc0a00000 x4474c000 x3f006003}\n       {x41100000 x447dc000 x3efc7ffe}\n       {x40000000 x447d4000 x3efd7ffa}\n       {xc1400000 x44784000 x3efe0008}\n       {xc2100000 x446f4000 x3f006003}\n       {xc1d80000 x44730000 x3f00e001}\n       {x41200000 x4480c000 x3f001ffb}\n       {x41980000 x44820000 x3efd7ffa}\n       {xc1200000 x4477c000 x3eff0004}\n       {xc1980000 x44748000 x3f012008}\n       {x40000000 x447d4000 x3f01a006}\n       {x41b00000 x44832000 x3f006003}\n       {x42080000 x4485a000 x3eff7ff1}\n       {x41f80000 x44846000 x3eb0fffc}}}\n     {t\n      {{x41300000 xc0c4bda5}}\n      {{x41300000 x44730000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ee0000 x447c8000 x3d04000a}\n       {x42f20000 x447c8000 x3d64000a}\n       {x43010000 x447d0000 x3d600000}\n       {x42c80000 x44790000 x3e88fffc}\n       {x429a0000 x44774000 x3edf0004}\n       {x42540000 x44774000 x3ee28006}\n       {x42300000 x44770000 x3ee1800a}\n       {x42280000 x44770000 0}}}\n     {t\n      {{x41300000 x42ab4000}}\n      {{x41300000 x44797000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ee0000 x447ac000 x3d27fff9}\n       {x42c60000 x4477c000 x3e1c0011}\n       {x42700000 x4474c000 x3eab8002}\n       {x424c0000 x4474c000 x3ed0800f}\n       {x42400000 x44730000 x3ebd000d}}}\n     {t\n      {{x41300000 x4296cccd}}\n      {{x41300000 x44763333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bb0000 x447b4000 x3cc00000}\n       {x43bd8000 x447b4000 x3df1fff8}\n       {x43b18000 x447a0000 x3ed1800a}\n       {x43a78000 x4478c000 x3edf7ff1}\n       {x43a68000 x447c0000 x3ee0800f}\n       {x43b18000 x447d0000 x3edb8002}\n       {x43ca8000 x44798000 x3edb8002}\n       {x43d70000 x44784000 x3ee00000}\n       {x43b98000 x44774000 x3ee1fff8}\n       {x43af0000 x44770000 x3ee57ffa}\n       {x439b8000 x44740000 x3ee9fff8}\n       {x43978000 x44738000 x3cd80007}}}\n     {t\n      {{x41300000 x43b33560}}\n      {{x41300000 x4478d000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d00000 x44738000 x3d04000a}\n       {x43d38000 x44748000 x3d53fffd}\n       {x43c28000 x4481a000 x3db80007}}}\n     {t\n      {{x41300000 x43ccaaa0}}\n      {{x41300000 x44791550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c3c000 x44768000 x3ce7fff9}\n       {x44bf4000 x4477c000 x3da20005}\n       {x44be4000 x447b4000 x3eb0fffc}\n       {x44b98000 x44784000 x3ed47ffe}\n       {x44c4a000 x447c8000 x3ef0800f}\n       {x44c12000 x447ac000 x3ef60008}\n       {x44bf8000 x44802000 x3ef77ff1}}}\n     {t\n      {{x41300000 x44c00000}}\n      {{x41300000 x447a770a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cde000 x4477c000 x3da9fffe}\n       {x44cb2000 x44784000 x3dc3fffd}}}\n     {t\n      {{x41300000 x44cc8000}}\n      {{x41300000 x44780000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44fce000 x4475c000 x3d200000}\n       {x44fc4000 x44770000 x3d33fffd}}}\n     {t\n      {{x41300000 x44fc9000}}\n      {{x41300000 x44766000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d0e000 x44488000 x3c980007}\n       {x44d0e000 x444b8000 x3d200000}\n       {x44d26000 x44570000 x3e18fffc}\n       {x44d6e000 x445f8000 x3e900000}\n       {x44d9a000 x44628000 x3e900000}\n       {x44e40000 x446d4000 x3e9e0008}\n       {x44e4a000 x446d8000 x3ece0008}\n       {x44e8e000 x446d8000 x3eda8006}\n       {x44ea6000 x446d8000 x3ef47ffe}\n       {x44f02000 x446e0000 x3efa8006}\n       {x44f2a000 x446f4000 x3f006003}\n       {x44f10000 x44718000 x3f04e001}\n       {x44f32000 x44784000 x3f03e005}\n       {x44f2a000 x447b4000 x3f041ffb}\n       {x44f62000 x447e4000 x3f01dffc}\n       {x44f76000 x447c8000 x3d000000}}}\n     {t\n      {{x41300000 x44e67800}}\n      {{x41300000 x4469fc08}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e28000 x44000000 x3c980007}\n       {x44e24000 x4409c000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44e26000}}\n      {{x41300000 x4404e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c7c000 x43908000 x3d0c0003}\n       {x44c9a000 x43780000 x3e03ffef}\n       {x44c7c000 x432a0000 x3e2a0019}\n       {x44c4a000 x42f80000 x3e80fffc}\n       {x44c42000 x42b00000 x3e83ffef}}}\n     {t\n      {{x41300000 x44c6c666}}\n      {{x41300000 x4337cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a08000 x44504000 x3cf0000d}\n       {x44a1c000 x44468000 x3db20005}\n       {x44a22000 x443ec000 x3e938002}\n       {x44a2c000 x44358000 x3eaf0004}\n       {x44a34000 x442f8000 x3eb80000}\n       {x44a36000 x44294000 x3eb9fff8}\n       {x44a36000 x44224000 x3ebb8002}\n       {x44a36000 x441c0000 x3ec00000}\n       {x44a30000 x44154000 x3ecafff3}\n       {x44a2c000 x440ec000 x3ed28006}\n       {x44a26000 x44088000 x3ed70004}\n       {x44a26000 x44030000 x3ed9800a}\n       {x44a28000 x43fb0000 x3edd7ffa}\n       {x44a2c000 x43f18000 x3edf0004}\n       {x44a34000 x43e80000 x3edf7ff1}\n       {x44a36000 x43df8000 x3ee0800f}\n       {x44a3a000 x43d60000 x3ee0fffc}\n       {x44a40000 x43cd8000 x3ee0fffc}\n       {x44a40000 x43c48000 x3ee1800a}\n       {x44a44000 x43bc0000 x3ee28006}\n       {x44a48000 x43b40000 x3ee3ffef}\n       {x44a4c000 x43ac8000 x3ee47ffe}\n       {x44a4e000 x43a68000 x3ee57ffa}\n       {x44a52000 x43a08000 x3ee60008}\n       {x44a52000 x439a8000 x3ee60008}\n       {x44a52000 x43958000 x3ee67ff6}\n       {x44a4e000 x43908000 x3ee57ffa}\n       {x44a48000 x438a8000 x3ee57ffa}\n       {x44a40000 x43848000 x3ee57ffa}\n       {x44a3a000 x437c0000 x3ee60008}\n       {x44a34000 x43700000 x3ee70004}\n       {x44a28000 x43640000 x3ee70004}\n       {x44a22000 x43580000 x3ee80000}\n       {x44a14000 x434c0000 x3ee8800f}\n       {x44a08000 x43400000 x3ee8800f}\n       {x449fa000 x43360000 x3ee57ffa}\n       {x449e4000 x432a0000 x3ee57ffa}\n       {x449d4000 x431e0000 x3ee57ffa}\n       {x449c0000 x43100000 x3ee60008}\n       {x449a8000 x43030000 x3ee67ff6}\n       {x4498c000 x42ea0000 x3ee70004}\n       {x44972000 x42d20000 x3ee9800a}\n       {x44956000 x42b80000 x3eeb8002}\n       {x44942000 x42a40000 x3eeb8002}\n       {x44934000 x42920000 x3eeb8002}\n       {x44926000 x42820000 x3ee8800f}\n       {x4491c000 x42680000 x3ede0008}\n       {x44916000 x424c0000 x3eca8006}\n       {x4490c000 x42300000 x3ea70004}\n       {x44902000 x42140000 x3e2c0011}\n       {x448f4000 x41f80000 x3d44000a}\n       {x448e2000 x41c00000 0}}}\n     {t\n      {{x41300000 x449edccd}}\n      {{x41300000 x43a56c4a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x44214000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44014000 x447a0000 x3d000000}\n       {x43fc8000 x44770000 x3de2003b}\n       {x43e70000 x44690000 x3e78fffc}\n       {x43d70000 x445dc000 x3e92fff3}\n       {x43b70000 x44474000 x3e9f0004}\n       {x43a88000 x443cc000 x3eae0008}\n       {x43908000 x44298000 x3eb1fff8}\n       {x43868000 x44224000 x3eb9fff8}\n       {x436e0000 x44158000 x3eb9fff8}\n       {x43620000 x44114000 x3eb70004}\n       {x433d0000 x44064000 x3eb60008}\n       {x431c0000 x43f78000 x3eaf7ff1}\n       {x42c20000 x43cf8000 x3ea80000}\n       {x428c0000 x43b88000 x3ea8fffc}\n       {x41200000 x43710000 x3e9a8006}\n       {x40a00000 x43490000 x3d27fff9}}}\n     {t\n      {{x41300000 x43823000}}\n      {{x41300000 x441e2c08}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x43b70000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438f8000 x4477c000 x3d89fffe}\n       {x43820000 x44718000 x3e580022}\n       {x43170000 x44518000 x3eae7ff6}\n       {x42b40000 x443c4000 x3ee0fffc}\n       {x41400000 x441a4000 x3ef77ff1}\n       {xc1980000 x440b8000 x3f086003}\n       {xc2380000 x43ed0000 x3f0c6003}\n       {xc24c0000 x43d38000 x3f0e5ffa}\n       {xc2680000 x43c28000 x3f089ff9}}}\n     {t\n      {{x41300000 x428b1c78}}\n      {{x41300000 x4426eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x43b70000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f20000 x440c4000 x3e4a0019}\n       {x42f80000 x440d0000 x3ea77ff1}\n       {x43050000 x44078000 x3ef2fff3}\n       {x43080000 x44044000 x3f076007}\n       {x430b0000 x44004000 x3f0adff8}\n       {x430a0000 x44004000 x3f0d2008}\n       {x43000000 x4400c000 x3ef28006}}}\n     {t\n   {{x41300000 x43034937}}\n   {{x41300000 x440576d9}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42a60000 x44094000 x3d400000}\n       {x42a40000 x44094000 x3e1cffeb}\n       {x428e0000 x440a8000 x3e700000}\n       {x42740000 x44138000 x3f036007}\n       {x42820000 x441e0000 x3f246003}\n       {x42be0000 x4430c000 x3f2b1fff}\n       {x42c60000 x4433c000 x3f322004}\n       {x42c20000 x44380000 x3f34e001}\n       {x42c20000 x44390000 x3f365ffa}\n       {x42c60000 x44394000 x3f36a002}\n       {x42c20000 x44390000 x3ec77ff1}\n       {x42be0000 x44388000 x3dc7fff9}}}\n     {t\n   {{x41300000 x42ad8000}}\n   {{x41300000 x44269000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b44000 x43de8000 x3e200000}\n       {x44b3c000 x43e30000 x3eb57ffa}\n       {x44b38000 x43e90000 x3ee1800a}}}\n     {t\n   {{x41300000 x44b3d571}}\n   {{x41300000 x43e38000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b80000 x43a30000 x3cb7ffec}\n       {x44b80000 x43a50000 x3dfdffc5}\n       {x44b7a000 x43a90000 x3ec9fff8}\n       {x44b44000 x43bb0000 x3f049ff9}\n       {x44b3c000 x43bc8000 x3f189ff9}\n       {x44b32000 x43be8000 x3f18e001}\n       {x44b2e000 x43be8000 x3f112008}\n       {x44b2c000 x43be8000 x3ee1800a}}}\n     {t\n   {{x41300000 x44b50c29}}\n   {{x41300000 x43b48000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b5c000 x43600000 x3cd80007}\n       {x44b66000 x43600000 x3d3bfff6}\n       {x44b6c000 x435d0000 x3eb57ffa}\n       {x44b72000 x43620000 x3ee0fffc}\n       {x44b72000 x43690000 x3eec7ffe}\n       {x44b62000 x43700000 x3f05a006}\n       {x44b58000 x43760000 x3f0edff8}\n       {x44b44000 x43830000 x3f0fe005}\n       {x44b3c000 x43858000 x3f136007}\n       {x44b2e000 x438d0000 x3f149ff9}\n       {x44b2c000 x438f8000 x3f162004}\n       {x44b28000 x43920000 x3f16a002}\n       {x44b2c000 x43918000 x3ef9fff8}}}\n     {t\n   {{x41300000 x44b4e4cd}}\n   {{x41300000 x437d7646}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44baa000 x42240000 x3e4afff3}\n       {x44ba2000 x42400000 x3ea67ff6}\n       {x44bb0000 x42580000 x3ed5000d}\n       {x44bb6000 x42580000 x3ed0800f}}}\n     {t\n   {{x41300000 x44bac800}}\n   {{x41300000 x42450000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a2c000 x42d20000 x3d580007}\n       {x44a30000 x42d20000 x3de3ffef}\n       {x44a28000 x42bc0000 x3ec70004}\n       {x44a04000 x42540000 x3efb8002}\n       {x449f6000 x42240000 x3f0a2004}\n       {x449e4000 x42000000 x3f0c6003}\n       {x449e4000 x41f80000 x3f0edff8}\n       {x449d4000 x41a00000 x3f0f6007}\n       {x449ca000 x41400000 x3f101ffb}\n       {x449fc000 x41000000 x3f0f6007}\n       {x44a22000 x40a00000 x3f0ea002}\n       {x44a12000 x40000000 x3f0f9ffd}\n       {x44a04000 0 x3f0f9ffd}\n       {x449ec000 xc0000000 x3f0fe005}\n       {x449f2000 xc0000000 x3f089ff9}\n       {x44a12000 xc0000000 x3ef60008}\n       {x44a34000 xc0000000 x3ec77ff1}}}\n     {t\n   {{x41300000 x44a03852}}\n   {{x41300000 x41eb4b5e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44868000 x42e80000 x3e3a0019}\n       {x44864000 x42f80000 x3e91800a}\n       {x44876000 x43200000 x3ed0800f}\n       {x4487c000 x43280000 x3ee1800a}\n       {x44884000 x432d0000 x3d960002}}}\n     {t\n   {{x41300000 x4487399a}}\n   {{x41300000 x43143333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44710000 x42a00000 x3df00043}\n       {x44710000 x42a60000 x3e88800f}\n       {x446fc000 x42c80000 x3eaafff3}\n       {x446fc000 x43160000 x3ee67ff6}\n       {x446f4000 x43310000 x3f071fff}\n       {x446ec000 x433d0000 x3f0adff8}\n       {x446f4000 x43440000 x3f0e5ffa}\n       {x446fc000 x434e0000 x3f0f9ffd}\n       {x446fc000 x434f0000 x3f10e001}}}\n     {t\n   {{x41300000 x446fce35}}\n   {{x41300000 x431a38d5}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44802000 x42740000 x3d920005}\n       {x447dc000 x429c0000 x3e530015}\n       {x44832000 x42440000 x3ef80000}\n       {x4488e000 xc1f80000 x3f179ffd}\n       {x4488a000 x41980000 x3f231fff}\n       {x44872000 x426c0000 x3f236007}\n       {x448fa000 x42540000 x3f239ffd}\n       {x448ca000 x41c00000 x3f29a006}\n       {x44798000 x42f20000 x3f2c1ffb}\n       {x446d4000 x433d0000 x3f2edff8}\n       {x44548000 x43640000 x3f2d5ffe}\n       {x44470000 x435f0000 x3f352008}\n       {x443ec000 x436c0000 x3e400000}}}\n     {t\n   {{x41300000 x4479c4ee}}\n   {{x41300000 x42c9624e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43360000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4460c000 x443cc000 x3ed28006}\n       {x445f8000 x443b0000 x3eee7ff6}\n       {x44594000 x442e4000 x3f092008}\n       {x445a8000 x442e4000 x3f2c1ffb}\n       {x44608000 x44394000 x3f3adff8}\n       {x445ec000 x44418000 x3f441ffb}\n       {x44578000 x44314000 x3f636007}\n       {x445f4000 x44344000 x3f64e001}\n       {x4460c000 x4444c000 x3f652008}\n       {x445bc000 x443bc000 x3f69a006}\n       {x445e4000 x442dc000 x3f72a002}\n       {x44688000 x44444000 x3f731fff}\n       {x446c0000 x444b4000 x3f701ffb}\n       {x4461c000 x442e4000 x3f731fff}\n       {x4464c000 x4428c000 x3f722004}\n       {x4467c000 x443d8000 x3f71a006}\n       {x446c4000 x444ac000 x3f6fe005}\n       {x44680000 x44390000 x3f725ffa}\n       {x44608000 x442dc000 x3f739ffd}\n       {x445c8000 x443d8000 x3f73e005}\n       {x44608000 x44490000 x3f715ffe}\n       {x44608000 x44534000 x3f706003}\n       {x44600000 x44550000 x3f70e001}\n       {x44638000 x44578000 x3f4c9ff9}}}\n     {t\n   {{x41300000 x44613800}}\n   {{x41300000 x443d4550}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43360000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44674000 x44454000 x3e770004}\n       {x44608000 x443fc000 x3ea38002}\n       {x44608000 x44410000 x3f071fff}\n       {x44630000 x44418000 x3f16a002}\n       {x4452c000 x4430c000 x3f289ff9}\n       {x44614000 x443d8000 x3f30e001}\n       {x44578000 x44364000 x3f34e001}\n       {x4452c000 x44300000 x3f425ffa}\n       {x4464c000 x443e8000 x3f431fff}\n       {x44600000 x443c4000 x3f43e005}\n       {x44570000 x44300000 x3f45a006}\n       {x4469c000 x443e0000 x3f492008}\n       {x44520000 x44330000 x3f4a5ffa}\n       {x44584000 x44330000 x3f4da006}\n       {x4467c000 x443d0000 x3f581ffb}\n       {x4452c000 x44328000 x3f60e001}\n       {x44608000 x44374000 x3f61dffc}\n       {x44694000 x443b0000 x3f652008}\n       {x444e0000 x4428c000 x3f70e001}\n       {x445a0000 x442f8000 x3f72dff8}\n       {x44598000 x442f0000 x3f731fff}\n       {x444fc000 x44294000 x3f752008}\n       {x44690000 x44394000 x3f749ff9}\n       {x445ec000 x44334000 x3f786003}\n       {x444e8000 x44278000 1}\n       {x445b0000 x442e4000 1}\n       {x4461c000 x442f0000 1}\n       {x445dc000 x44204000 1}\n       {x4467c000 x4425c000 x3d13fffd}}}\n     {t\n   {{x41300000 x445cf093}}\n   {{x41300000 x44348f6d}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43360000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44594000 x44390000 x3d53fffd}\n       {x445a8000 x443b0000 x3e51fff8}\n       {x44608000 x44400000 x3ee1800a}\n       {x44620000 x44410000 x3f041ffb}\n       {x44658000 x44424000 x3f089ff9}\n       {x44660000 x44424000 x3f09a006}\n       {x4466c000 x44424000 x3f0a2004}\n       {x44674000 x44424000 x3f0a2004}\n       {x44688000 x44418000 x3f0a2004}\n       {x44688000 x44410000 x3f0b6007}\n       {x44674000 x44408000 x3f0b6007}}}\n     {t\n   {{x41300000 x4463a2e1}}\n   {{x41300000 x4440174c}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4436c000 x44030000 x3d400000}\n       {x44364000 x44048000 x3e0cffeb}\n       {x44378000 x44140000 x3ed47ffe}\n       {x443e0000 x441fc000 x3f1aa002}\n       {x444e8000 x442d0000 x3f2b1fff}\n       {x4452c000 x4431c000 x3f38e001}\n       {x44578000 x44388000 x3f3c6003}\n       {x445c4000 x44400000 x3f406003}}}\n     {t\n   {{x41300000 x4446f000}}\n   {{x41300000 x44225000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d0000 x44280000 x3dfc0011}\n       {x440cc000 x4428c000 x3e977ff1}\n       {x440a8000 x442dc000 x3ea67ff6}\n       {x440d0000 x443e0000 x3edf7ff1}\n       {x440d8000 x44424000 x3f05a006}\n       {x440ec000 x444b4000 x3f095ffe}\n       {x4412c000 x44570000 x3f0c6003}\n       {x44144000 x445d0000 x3f139ffd}\n       {x4414c000 x445e4000 x3f131fff}}}\n     {t\n   {{x41300000 x440f4000}}\n   {{x41300000 x44432396}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441f0000 x43fc8000 x3d8dfffb}\n       {x441b8000 x44028000 x3eb8fffc}\n       {x4414c000 x44168000 x3f08e001}\n       {x44114000 x44248000 x3f1aa002}\n       {x440d0000 x44314000 x3f241ffb}\n       {x440e0000 x44388000 x3f26a002}\n       {x44114000 x4444c000 x3f276007}\n       {x440f4000 x444d4000 x3f295ffe}\n       {x440f4000 x444f8000 x3f2b1fff}\n       {x440fc000 x444f0000 x3f2aa002}\n       {x440f4000 x44498000 x3f2b6007}\n       {x4412c000 x44320000 x3f2d5ffe}\n       {x441ac000 x441c8000 x3f30e001}\n       {x441e8000 x44168000 x3f322004}\n       {x4422c000 x440fc000 x3f325ffa}\n       {x44280000 x4403c000 x3f32dff8}\n       {x44294000 x44014000 x3f346003}\n       {x442f8000 x43ec8000 x3f349ff9}\n       {x442f0000 x43ea8000 x3f371fff}\n       {x442c0000 x43ef8000 x3f37e005}\n       {x44234000 x4406c000 x3f381ffb}\n       {x44198000 x44218000 x3f37e005}\n       {x44170000 x442a8000 x3f36a002}\n       {x44160000 x44378000 x3f365ffa}\n       {x44154000 x4444c000 x3f34e001}\n       {x44140000 x44498000 x3f336007}\n       {x44144000 x44520000 x3f32dff8}\n       {x44130000 x44540000 x3f32a002}\n       {x44108000 x445b4000 x3f32a002}\n       {x44108000 x445d0000 x3f2ea002}\n       {x44100000 x445ec000 x3f189ff9}}}\n     {t\n   {{x41300000 x4418c635}}\n   {{x41300000 x442bef7d}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44174000 x43f40000 x3d400000}\n       {x4417c000 x43f30000 x3e0c0011}\n       {x44188000 x43f28000 x3e99fff8}\n       {x441c0000 x43e10000 x3eb8800f}\n       {x441cc000 x43c10000 x3f0edff8}\n       {x441c0000 x43ba0000 x3f1edff8}\n       {x44188000 x43b00000 x3f212008}\n       {x440f4000 x439b8000 x3f239ffd}\n       {x440cc000 x43920000 x3f29dffc}\n       {x440c4000 x438f8000 x3f2b6007}\n       {x440c4000 x43898000 x3f2be005}\n       {x44064000 x436c0000 x3f2d2008}\n       {x43fb8000 x434a0000 x3f2ea002}\n       {x43f28000 x433e0000 x3f2f1fff}\n       {x43ee0000 x43390000 x3f2f9ffd}\n       {x43eb8000 x43280000 x3f2f6007}\n       {x43f08000 x431c0000 x3f2e5ffa}\n       {x43f90000 x43030000 x3f2ea002}\n       {x44000000 x42c80000 x3f2edff8}\n       {x43fe0000 x42d00000 x3f11a006}}}\n     {t\n   {{x41300000 x4409f333}}\n   {{x41300000 x438d6666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441c0000 x43e48000 x3d4ffff3}\n       {x441ac000 x43e90000 x3e6afff3}\n       {x441dc000 x43e40000 x3eef7ff1}\n       {x44254000 x43d80000 x3f25dffc}\n       {x44350000 x43bf8000 x3f32a002}\n       {x443d8000 x43b70000 x3f41dffc}\n       {x444ac000 x43ac8000 x3f439ffd}\n       {x445a8000 x439b8000 x3f462004}\n       {x44600000 x43918000 x3f47e005}\n       {x44600000 x43908000 x3f479ffd}\n       {x44608000 x43908000 x3f45a006}\n       {x44600000 x43918000 x3f455ffe}\n       {x445bc000 x43968000 x3f455ffe}\n       {x4453c000 x43a40000 x3f431fff}\n       {x444dc000 x43b10000 x3f3f6007}\n       {x443cc000 x43cf8000 x3f3ea002}\n       {x44388000 x43d70000 x3f3ce001}\n       {x44344000 x43de8000 x3f3be005}\n       {x442bc000 x43f18000 x3f395ffe}\n       {x4425c000 x43fd8000 x3f28e001}}}\n     {t\n   {{x41300000 x44408333}}\n   {{x41300000 x43bef99a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a1e000 x41000000 x3d7bfff6}\n       {x44a1c000 x41880000 x3e38fffc}\n       {x44a0e000 x42400000 x3ebe7ff6}\n       {x44a0e000 x428c0000 x3eca8006}\n       {x44a08000 x42c20000 x3ee0fffc}\n       {x44a00000 x42e00000 x3ef5000d}\n       {x449fc000 x430f0000 x3ef60008}\n       {x449fa000 x43190000 x3efa8006}\n       {x44a08000 x433d0000 x3efb8002}\n       {x44a08000 x43450000 x3efd7ffa}\n       {x44a08000 x436c0000 x3efe0008}\n       {x44a08000 x43750000 x3eff0004}\n       {x44a18000 x43868000 x3eff7ff1}\n       {x44a26000 x438b8000 x3eff0004}\n       {x44a2c000 x43950000 x3eff0004}\n       {x44a2c000 x439a0000 x3f001ffb}\n       {x44a26000 x43aa0000 x3f006003}\n       {x44a18000 x43ae0000 x3f02dff8}\n       {x449f6000 x43c10000 x3f041ffb}\n       {x449f0000 x43c50000 x3f06dff8}\n       {x44a00000 x43d48000 x3f08e001}\n       {x44a12000 x43db8000 x3f0adff8}\n       {x44a1e000 x43e90000 x3f0b9ffd}\n       {x44a22000 x43ef0000 x3f0e5ffa}\n       {x44a0e000 x4400c000 x3f0ea002}\n       {x44a04000 x44074000 x3f152008}\n       {x44a04000 x44128000 x3f162004}\n       {x449fc000 x4414c000 x3f171fff}\n       {x44a00000 x441f0000 x3f179ffd}\n       {x449fc000 x44220000 x3f179ffd}\n       {x44a12000 x442ac000 x3f17e005}\n       {x44a26000 x442dc000 x3f17e005}\n       {x44a40000 x44334000 x3f179ffd}\n       {x44a3a000 x44344000 x3f18e001}\n       {x44a2c000 x4439c000 x3f18e001}\n       {x44a22000 x443d8000 x3f192008}\n       {x44a14000 x4444c000 x3f19dffc}\n       {x44a18000 x44488000 x3f1a2004}\n       {x449f2000 x444f8000 x3f1a5ffa}\n       {x449e8000 x44520000 x3f1aa002}\n       {x449ec000 x445bc000 x3f1a5ffa}\n       {x449e8000 x445d8000 x3f1a2004}\n       {x449f6000 x4463c000 x3f1a2004}\n       {x449ec000 x44658000 x3f19a006}\n       {x449b2000 x4469c000 x3f192008}\n       {x449ae000 x446cc000 x3f186003}\n       {x449b6000 x4474c000 x3f181ffb}\n       {x449c0000 x4477c000 x3f171fff}\n       {x449ce000 x447f0000 x3f16dff8}}}\n     {t\n   {{x41300000 x44a04dc3}}\n   {{x41300000 x4402248b}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f10000 x44700000 x3d1bfff6}\n       {x44f14000 x446fc000 x3d30000d}\n       {x44f10000 x446c4000 x3e45000d}\n       {x44ef8000 x443c4000 x3ee1800a}\n       {x44ef0000 x442f8000 x3f236007}\n       {x44ef0000 x442e4000 x3f239ffd}\n       {x44ef0000 x442c8000 x3f239ffd}\n       {x44ef4000 x442b4000 x3f236007}\n       {x44ef8000 x441f0000 x3f236007}\n       {x44efc000 x4417c000 x3f23e005}\n       {x44efc000 x44158000 x3f246003}\n       {x44ef8000 x440cc000 x3f246003}\n       {x44efc000 x440a0000 x3f249ff9}\n       {x44f02000 x44030000 x3f24e001}\n       {x44f06000 x43f68000 x3f252008}\n       {x44f08000 x43e58000 x3f252008}\n       {x44f0c000 x43df8000 x3f24e001}\n       {x44f14000 x43cf8000 x3f24e001}\n       {x44f1a000 x43c98000 x3f23e005}\n       {x44f1e000 x43b70000 x3f231fff}\n       {x44f20000 x43b38000 x3f22a002}\n       {x44f20000 x43b00000 x3f225ffa}\n       {x44f24000 x439d0000 x3f222004}\n       {x44f24000 x43958000 x3f1ea002}\n       {x44f20000 x43880000 x3f1e5ffa}\n       {x44f20000 x43820000 x3f1e5ffa}\n       {x44f20000 x43730000 x3f1e5ffa}\n       {x44f24000 x434a0000 x3f1da006}\n       {x44f1e000 x432c0000 x3f1ce001}\n       {x44f1e000 x431b0000 x3f1b9ffd}\n       {x44f16000 x42f80000 x3f1b9ffd}\n       {x44f16000 x42da0000 x3f1b6007}\n       {x44f1a000 x42580000 x3f1b1fff}\n       {x44f24000 x41d00000 x3f19dffc}\n       {x44f34000 xc0a00000 x3f192008}\n       {x44f42000 xc1700000 x3f16dff8}\n       {x44f6c000 xc2380000 x3f13e005}\n       {x44f7a000 xc2700000 x3f0ce001}\n       {x44f94000 xc2a60000 x3f009ff9}}}\n     {t\n   {{x41300000 x44f19614}}\n   {{x41300000 x43c2b148}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef4000 x44760000 x3d580007}\n       {x44ef8000 x44738000 x3d4c0003}\n       {x44efc000 x4472c000 0}}}\n     {t\n   {{x41300000 x44ef8000}}\n   {{x41300000 x44741550}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e80000 x44694000 x3d800000}\n       {x44e74000 x446c0000 x3e2a0019}\n       {x44e4a000 x44724000 x3eb9800a}\n       {x44e40000 x44740000 x3eeb8002}\n       {x44e36000 x44754000 x3edc7ffe}}}\n     {t\n   {{x41300000 x44e57333}}\n   {{x41300000 x44702666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d08000 x441e0000 x3d400000}\n       {x44d08000 x441f0000 x3df1fff8}\n       {x44d00000 x44254000 x3e870004}\n       {x44cfe000 x44314000 x3ee70004}\n       {x44d04000 x44388000 x3f00e001}\n       {x44d04000 x443e8000 x3f039ffd}\n       {x44d04000 x443f4000 x3f039ffd}\n       {x44d00000 x443fc000 x3eef7ff1}}}\n     {t\n   {{x41300000 x44d033d7}}\n   {{x41300000 x44313000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bb4000 x44254000 x3d27fff9}\n       {x44bb4000 x44264000 x3ebd000d}\n       {x44ba0000 x442e4000 x3f101ffb}\n       {x44baa000 x44348000 x3f16dff8}\n       {x44bbe000 x443d8000 x3f15dffc}\n       {x44bba000 x4441c000 x3ef47ffe}\n       {x44bb6000 x4442c000 0}}}\n     {t\n   {{x41300000 x44bb247b}}\n   {{x41300000 x44349b75}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ba6000 x43d30000 x3d9c0003}\n       {x44bb0000 x43d90000 x3e55000d}\n       {x44bb0000 x43e90000 x3ec0800f}\n       {x44bb0000 x43fe0000 x3ef1800a}\n       {x44bb0000 x44014000 x3ee57ffa}}}\n     {t\n   {{x41300000 x44bae000}}\n   {{x41300000 x43eab333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44af4000 x43e20000 x3d800000}\n       {x44afc000 x43df8000 x3d9dfffb}\n       {x44b02000 x43df8000 x3e21fff8}\n       {x44b02000 x43e08000 x3e91fff8}\n       {x44afc000 x43ea8000 x3ed47ffe}\n       {x44af4000 x43fb8000 x3f06dff8}\n       {x44aee000 x440cc000 x3f0f9ffd}\n       {x44aea000 x44108000 x3f176007}\n       {x44ae8000 x4417c000 x3f192008}\n       {x44ae8000 x441a4000 x3f19dffc}\n       {x44aea000 x441d4000 x3f19dffc}\n       {x44aee000 x441c8000 x3edc7ffe}}}\n     {t\n   {{x41300000 x44af3000}}\n   {{x41300000 x44051000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44708000 x4420c000 x3d5bfff6}\n       {x446fc000 x44234000 x3e6cffeb}\n       {x446d4000 x442b4000 x3ec60008}\n       {x446b0000 x44358000 x3ee38002}}}\n     {t\n   {{x41300000 x446e2000}}\n   {{x41300000 x44293000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44578000 x44468000 x3d820005}\n       {x44580000 x44468000 x3dc7fff9}\n       {x445a8000 x44444000 x3e58fffc}\n       {x445f8000 x44400000 x3ef38002}\n       {x44600000 x443fc000 x3ebc7ffe}}}\n     {t\n   {{x41300000 x445b8000}}\n   {{x41300000 x44436666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4455c000 x442f8000 x3c980007}\n       {x44570000 x442dc000 x3db20005}\n       {x44578000 x442d8000 x3eb0800f}\n       {x44594000 x4428c000 x3ec38002}\n       {x445a0000 x44248000 x3edafff3}}}\n     {t\n   {{x41300000 x4457e666}}\n   {{x41300000 x442b3333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44598000 x44360000 x3d70000d}\n       {x44644000 x442a8000 x3da7fff9}\n       {x4464c000 x442a0000 x3ec60008}}}\n     {t\n   {{x41300000 x4460d550}}\n   {{x41300000 x442e2ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444c8000 x443c4000 x3dc60002}\n       {x444e0000 x443a8000 x3e73ffef}\n       {x4458c000 x442f8000 x3ee47ffe}\n       {x445a8000 x442d8000 x3f0c6003}\n       {x445b0000 x442dc000 x3ebd7ffa}}}\n     {t\n   {{x41300000 x4454f333}}\n   {{x41300000 x44338000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44510000 x44300000 x3d64000a}\n       {x44674000 x44264000 x3d9c0003}}}\n     {t\n   {{x41300000 x445c2000}}\n   {{x41300000 x442b2000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44550000 x44250000 x3d2c0003}\n       {x4455c000 x44254000 x3d44000a}\n       {x44554000 x44240000 x3d980007}}}\n     {t\n   {{x41300000 x44555550}}\n   {{x41300000 x4424c000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445d0000 x443d0000 x3d180007}\n       {x445d0000 x443b0000 x3d70000d}\n       {x445ec000 x442ec000 x3d8dfffb}\n       {x445dc000 x442c8000 x3e3effe3}\n       {x445d0000 x44320000 x3eff0004}\n       {x44600000 x444cc000 x3f09a006}\n       {x44628000 x44554000 x3f0f1fff}\n       {x4461c000 x445bc000 x3ef9fff8}}}\n     {t\n   {{x41300000 x445ef800}}\n   {{x41300000 x44406000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445d8000 x442d8000 x3c60001b}\n       {x445dc000 x44300000 x3d4c0003}\n       {x445f4000 x4430c000 x3e43ffef}\n       {x445f8000 x442dc000 x3ed5000d}\n       {x44644000 x44220000 x3efd000d}\n       {x44650000 x441e0000 x3f052008}\n       {x44628000 x441ac000 x3f05a006}\n       {x4461c000 x441b8000 x3f086003}\n       {x445f4000 x44268000 x3f089ff9}\n       {x445ec000 x442e4000 x3f095ffe}\n       {x44620000 x44460000 x3f092008}\n       {x4461c000 x444a4000 x3f089ff9}\n       {x44600000 x444e0000 x3f03e005}}}\n     {t\n   {{x41300000 x4460b625}}\n   {{x41300000 x442f2c4a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4467c000 x44268000 x3d33fffd}\n       {x4467c000 x442a0000 x3db80007}\n       {x44628000 x442d0000 x3ebd000d}\n       {x44600000 x442bc000 x3ef47ffe}\n       {x44628000 x442f8000 x3ef70004}\n       {x44650000 x4430c000 x3f086003}\n       {x446a4000 x44298000 x3f0fe005}\n       {x44688000 x44268000 x3f162004}\n       {x445d0000 x442c8000 x3f18e001}\n       {x445b4000 x44314000 x3f189ff9}\n       {x445d0000 x443b0000 x3f186003}\n       {x445f4000 x443a8000 x3f1da006}\n       {x4463c000 x4433c000 x3f215ffe}\n       {x44628000 x44308000 x3f271fff}\n       {x445a8000 x4431c000 x3f28e001}\n       {x445a0000 x44390000 x3f27e005}\n       {x44614000 x44418000 x3f25dffc}\n       {x44644000 x443f4000 x3f276007}\n       {x44660000 x44328000 x3f2b1fff}\n       {x44608000 x442dc000 x3f2f9ffd}\n       {x44580000 x442f8000 x3f306003}\n       {x44578000 x44314000 x3f2edff8}\n       {x445b0000 x4439c000 x3f2e2004}\n       {x44658000 x443c4000 x3f2be005}\n       {x4472c000 x442d0000 x3f306003}\n       {x446f4000 x44298000 x3f341ffb}\n       {x44638000 x442ec000 x3f341ffb}\n       {x44680000 x44374000 x3f322004}\n       {x446c4000 x4436c000 x3f309ff9}\n       {x4477c000 x442e4000 x3f31dffc}\n       {x44774000 x442c8000 x3f341ffb}\n       {x44738000 x442f8000 x3f341ffb}\n       {x4472c000 x44320000 x3eb77ff1}}}\n     {t\n   {{x41300000 x44650ba6}}\n   {{x41300000 x44318ba6}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44802000 x445e4000 x3e8c0011}\n       {x44814000 x44774000 x3e9d7ffa}}}\n     {t\n   {{x41300000 x4480b000}}\n   {{x41300000 x446ac000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4481e000 x445a0000 x3e670004}\n       {x44836000 x4461c000 x3ea80000}\n       {x44840000 x4463c000 x3efd7ffa}\n       {x44864000 x446b8000 x3efd7ffa}}}\n     {t\n   {{x41300000 x4483e000}}\n   {{x41300000 x4462c000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44810000 x445e4000 x3e938002}\n       {x44842000 x4466c000 x3eb28006}\n       {x4484a000 x44678000 x3ef1800a}}}\n     {t\n   {{x41300000 x44834000}}\n   {{x41300000 x44642ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447d4000 x44548000 x3e01fff8}\n       {x447dc000 x4455c000 x3e500000}\n       {x4481e000 x445d8000 x3ec5000d}\n       {x44850000 x44644000 x3f149ff9}\n       {x44846000 x44644000 x3f0c6003}\n       {x44840000 x44644000 x3eb2fff3}}}\n     {t\n   {{x41300000 x44822000}}\n   {{x41300000 x445e1550}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4481a000 x445a0000 x3e73ffef}\n       {x4481a000 x445b0000 x3ea00000}\n       {x44816000 x445e4000 x3ebc7ffe}\n       {x44816000 x44638000 x3ef60008}\n       {x447f0000 x44600000 x3f006003}\n       {x44802000 x4464c000 x3efe0008}\n       {x44806000 x44650000 x3f136007}\n       {x44808000 x44614000 x3f155ffe}\n       {x44810000 x44600000 x3f152008}\n       {x44816000 x445f8000 x3f155ffe}\n       {x44810000 x44600000 x3f195ffe}\n       {x447fc000 x44608000 x3f19a006}\n       {x44802000 x44628000 x3f19dffc}\n       {x44820000 x44658000 x3f192008}\n       {x44850000 x44678000 x3f1b1fff}\n       {x44850000 x44650000 x3f225ffa}\n       {x44836000 x44608000 x3f252008}\n       {x44828000 x4463c000 x3f29dffc}\n       {x44842000 x446fc000 x3f2a5ffa}\n       {x4485e000 x4475c000 x3f295ffe}\n       {x4486c000 x447ac000 x3f276007}\n       {x44868000 x447ac000 0}}}\n     {t\n   {{x41300000 x4482519a}}\n   {{x41300000 x4465574c}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447e4000 x4455c000 x3db9fffe}\n       {x447e8000 x44594000 x3e51fff8}\n       {x447f0000 x445d0000 x3edf0004}\n       {x447d4000 x445b4000 x3efa8006}\n       {x447dc000 x445b4000 x3efafff3}\n       {x447fc000 x44608000 x3efc0011}\n       {x447f0000 x44614000 x3f0b9ffd}\n       {x447a4000 x4460c000 x3f0ce001}\n       {x447b4000 x44614000 x3f0d2008}\n       {x447f8000 x44630000 x3f0d2008}\n       {x44814000 x4461c000 x3f0e2004}\n       {x44806000 x445d0000 x3f109ff9}\n       {x447b4000 x445d0000 x3f122004}\n       {x44784000 x445f8000 x3f11a006}\n       {x44790000 x44614000 x3f10e001}\n       {x44790000 x44638000 x3f109ff9}\n       {x44798000 x44660000 x3f115ffe}}}\n     {t\n   {{x41300000 x447cfc29}}\n   {{x41300000 x445f03c7}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4484a000 x445bc000 x3db9fffe}\n       {x44842000 x445bc000 x3e55000d}\n       {x4483c000 x445bc000 x3e8e7ff6}\n       {x44824000 x445b0000 x3eae7ff6}\n       {x447e8000 x445a0000 x3ef8800f}\n       {x447ac000 x44598000 x3f07e005}\n       {x447b8000 x445b4000 x3f0b1fff}\n       {x447d4000 x445c4000 x3f0d2008}\n       {x447c8000 x44570000 x3f12dff8}\n       {x447c0000 x4455c000 x3f14e001}\n       {x447c0000 x44570000 x3f162004}\n       {x447c0000 x4458c000 x3f176007}\n       {x447d0000 x445d0000 x3f179ffd}\n       {x447d4000 x445d0000 x3f179ffd}\n       {x447d0000 x44598000 x3f189ff9}\n       {x447c0000 x44598000 x3f1adff8}\n       {x447e4000 x44644000 x3f1aa002}\n       {x44820000 x4463c000 x3f186003}\n       {x44840000 x445e4000 x3f19dffc}\n       {x447fc000 x445c8000 x3f1c6003}\n       {x447e8000 x445dc000 x3f1b6007}\n       {x447dc000 x44614000 x3f1aa002}\n       {x447dc000 x4461c000 x3f0ea002}\n       {x447dc000 x44614000 0}}}\n     {t\n   {{x41300000 x447f8ae1}}\n   {{x41300000 x445c5000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44608000 x44374000 x3e1c0011}\n       {x4460c000 x44328000 x3e63ffef}\n       {x445f4000 x442ac000 x3eff0004}\n       {x445ec000 x442a0000 x3f03e005}\n       {x445e4000 x44298000 x3f05a006}\n       {x445dc000 x44294000 x3f086003}\n       {x445dc000 x44298000 x3f0a2004}\n       {x445d8000 x442d8000 x3f0a5ffa}\n       {x445dc000 x442f0000 x3f0a2004}\n       {x445f8000 x442bc000 x3f0a2004}\n       {x445f8000 x44294000 x3f0b6007}\n       {x445ec000 x44294000 x3f0c9ff9}\n       {x445dc000 x442a0000 x3f071fff}\n       {x445dc000 x442a8000 x3d0ffff3}}}\n     {t\n   {{x41300000 x445eadb2}}\n   {{x41300000 x442c248b}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44650000 x44284000 x3d24000a}\n       {x44638000 x44298000 x3d9c0003}\n       {x4460c000 x442d0000 x3e80800f}\n       {x44600000 x442f0000 x3f02a002}\n       {x4460c000 x44380000 x3f0f6007}\n       {x44600000 x44390000 x3f1ce001}\n       {x445d0000 x44378000 x3f1d5ffe}\n       {x445c8000 x44390000 x3f1da006}\n       {x445bc000 x443bc000 x3f1da006}\n       {x445b0000 x443bc000 x3f1d5ffe}\n       {x445a8000 x443b8000 x3f081ffb}\n       {x445a8000 x443b0000 0}}}\n     {t\n   {{x41300000 x445e9ab0}}\n   {{x41300000 x44351ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442e4000 x44080000 x3e63ffef}\n       {x442d8000 x44088000 x3e977ff1}\n       {x4441c000 x44270000 x3efc7ffe}\n       {x44474000 x442d0000 x3f3b9ffd}\n       {x44658000 x44444000 x3f3d2008}\n       {x4486c000 x44594000 x3f406003}\n       {x44868000 x445a0000 x3e880000}}}\n     {t\n   {{x41300000 x44578927}}\n   {{x41300000 x4431b6d9}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44280000 x43f28000 x3de00000}\n       {x44268000 x43f58000 x3e88800f}\n       {x442d8000 x440a8000 x3f015ffe}\n       {x443c4000 x441a4000 x3f2e2004}\n       {x446d8000 x443b8000 x3f3ea002}\n       {x44846000 x44528000 x3f462004}\n       {x4486c000 x44578000 x3f46a002}\n       {x44892000 x44598000 x3f3e2004}\n       {x448b0000 x44598000 x3f1ce001}\n       {x448a8000 x4458c000 0}}}\n     {t\n   {{x41300000 x4465b99a}}\n   {{x41300000 x44343333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44250000 x44060000 x3cf0000d}\n       {x44250000 x44074000 x3e780022}\n       {x4428c000 x44050000 x3eb67ff6}\n       {x443ec000 x43de0000 x3f1b1fff}\n       {x444f0000 x43c28000 x3f3d2008}\n       {x44688000 x43a30000 x3f479ffd}\n       {x4480c000 x43870000 x3f4e5ffa}\n       {x44938000 x43560000 x3f53e005}\n       {x44964000 x434f0000 x3f565ffa}\n       {x44948000 x43560000 x3ed38002}}}\n     {t\n   {{x41300000 x4463e666}}\n   {{x41300000 x43b7a666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442e4000 x44014000 x3d860002}\n       {x442c8000 x44078000 x3e51fff8}\n       {x44298000 x440ec000 x3ec38002}\n       {x442a8000 x440fc000 x3f13e005}\n       {x44334000 x43fb8000 x3f2d5ffe}\n       {x44438000 x43d30000 x3f462004}\n       {x44638000 x439d0000 x3f4fe005}\n       {x447e4000 x43820000 x3f581ffb}\n       {x448b0000 x43690000 x3f5b9ffd}\n       {x44902000 x43550000 x3f5c9ff9}\n       {x44912000 x434f0000 x3f5ce001}\n       {x44916000 x434f0000 x3f58e001}\n       {x4490e000 x43580000 x3f2be005}\n       {x44904000 x435b0000 0}}}\n     {t\n   {{x41300000 x44697b75}}\n   {{x41300000 x43b28917}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x43c98000 x3d64000a}\n       {x44710000 x43ca8000 x3e4c0011}\n       {x446d4000 x43d20000 x3e80800f}\n       {x446e8000 x43e70000 x3f071fff}\n       {x446a4000 x43e20000 x3f1b6007}\n       {x44600000 x43e90000 x3f246003}\n       {x445f4000 x43fb0000 x3f29dffc}\n       {x44608000 x440a8000 x3f2da006}\n       {x44694000 x4414c000 x3f2c9ff9}\n       {x4469c000 x44144000 0}}}\n     {t\n   {{x41300000 x44692666}}\n   {{x41300000 x43f2999a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44704000 x43b98000 x3d33fffd}\n       {x446e8000 x43bc8000 x3e4effe3}\n       {x44674000 x43ce8000 x3ef3ffef}\n       {x44664000 x43de8000 x3f095ffe}\n       {x44674000 x43de8000 x3c8ffff3}}}\n     {t\n   {{x41300000 x446a4ccd}}\n   {{x41300000 x43cd199a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44886000 x43a68000 x3d2c0003}\n       {x4487c000 x43aa0000 x3e51fff8}\n       {x4485a000 x43b98000 x3edc7ffe}\n       {x44838000 x43ca8000 x3f192008}\n       {x447fc000 x43ec8000 x3f20e001}\n       {x447e8000 x43f50000 x3f215ffe}\n       {x447d0000 x43f80000 x3f16dff8}}}\n     {t\n   {{x41300000 x4483447b}}\n   {{x41300000 x43cfb6e9}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448d8000 x43d70000 x3d07fff9}\n       {x448d2000 x43d90000 x3dd5ffe7}\n       {x448ac000 x43e20000 x3ef0fffc}\n       {x44886000 x43f18000 x3f195ffe}\n       {x4484e000 x440bc000 x3f25a006}\n       {x44842000 x44114000 x3f27e005}\n       {x4483c000 x44140000 x3f239ffd}\n       {x4483c000 x44138000 x3ee5000d}}}\n     {t\n   {{x41300000 x4487c800}}\n   {{x41300000 x4400c800}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44908000 x44000000 x3d70000d}\n       {x44908000 x4403c000 x3e9d7ffa}\n       {x448f4000 x44130000 x3f131fff}\n       {x448d4000 x441e8000 x3f2fe005}\n       {x448a6000 x44328000 x3f339ffd}\n       {x44898000 x44388000 x3f34e001}\n       {x4487a000 x44498000 x3f341ffb}\n       {x44870000 x444c8000 x3f25dffc}\n       {x44864000 x444dc000 x3f036007}}}\n     {t\n   {{x41300000 x448b5c7b}}\n   {{x41300000 x442b1c6a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446ec000 x44254000 x3e23ffef}\n       {x446f4000 x44294000 x3eb38002}\n       {x446f4000 x44348000 x3f089ff9}\n       {x44704000 x44388000 x3f192008}\n       {x44704000 x443bc000 x3f125ffa}}}\n     {t\n   {{x41300000 x446f8ccd}}\n   {{x41300000 x44317333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445ec000 x44298000 x3d33fffd}\n       {x445dc000 x442bc000 x3e58fffc}\n       {x445d8000 x44334000 x3f052008}\n       {x445dc000 x44350000 x3f10e001}\n       {x445e4000 x44348000 x3d67fff9}}}\n     {t\n   {{x41300000 x445e0000}}\n   {{x41300000 x44306666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447a4000 x444e0000 x3d1bfff6}\n       {x447ac000 x444f0000 x3e07ffde}\n       {x4478c000 x44550000 x3f036007}\n       {x4477c000 x445f8000 x3f1ea002}\n       {x44770000 x44710000 x3f239ffd}\n       {x44768000 x44754000 x3f25dffc}\n       {x4477c000 x447ac000 x3f25dffc}\n       {x44784000 x447ac000 x3d83fffd}}}\n     {t\n   {{x41300000 x44786000}}\n   {{x41300000 x4465a800}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4452c000 x44568000 x3d07fff9}\n       {x44520000 x44564000 x3e25ffe7}\n       {x44504000 x4458c000 x3ee60008}\n       {x444f8000 x445d0000 x3f162004}\n       {x444e8000 x4469c000 x3f1f1fff}\n       {x444fc000 x446e8000 x3f22dff8}\n       {x4450c000 x447a4000 x3f236007}\n       {x44504000 x447b8000 x3f0c6003}\n       {x444f0000 x447b8000 x3dadfffb}}}\n     {t\n   {{x41300000 x44504e35}}\n   {{x41300000 x446871cb}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444f0000 x44594000 x3cf0000d}\n       {x444f0000 x446d4000 x3d33fffd}\n       {x444c0000 x4475c000 x3f0f6007}\n       {x444c0000 x447a0000 x3f095ffe}\n       {x444b8000 x447ac000 x3d53fffd}}}\n     {t\n   {{x41300000 x444d199a}}\n   {{x41300000 x44703333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42080000 x44694000 x3d70000d}\n       {x42100000 x446ec000 x3d9dfffb}\n       {x42400000 x447ac000 x3e63ffef}}}\n     {t\n   {{x41300000 x421d554d}}\n   {{x41300000 x4470eab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f80000 x440e8000 x3d64000a}\n       {x42f40000 x44144000 x3e45ffe7}\n       {x42c80000 x44278000 x3ee0800f}\n       {x42ae0000 x44328000 x3eeb8002}\n       {x429c0000 x443bc000 x3e91800a}}}\n     {t\n   {{x41300000 x42cc6666}}\n   {{x41300000 x4424e666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42b40000 x43f68000 x3d180007}\n       {x42b00000 x43fc8000 x3d2c0003}\n       {x42ae0000 x44048000 x3df5ffe7}\n       {x42a00000 x4408c000 x3ef0fffc}\n       {x42600000 x44190000 x3f149ff9}\n       {x42580000 x441dc000 x3f2e2004}\n       {x42380000 x44254000 x3f2edff8}\n       {x42000000 x44388000 x3f309ff9}\n       {x41d80000 x44438000 x3f2fe005}\n       {x41b00000 x44474000 x3f2e2004}\n       {x41b00000 x444e0000 x3f2a2004}\n       {x41b00000 x44534000 x3f0f6007}}}\n     {t\n   {{x41300000 x4250aab3}}\n   {{x41300000 x4425f000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42840000 x43a90000 x3ce7fff9}\n       {x429a0000 x43b00000 x3d400000}\n       {x42b40000 x43b88000 x3ea9fff8}\n       {x42cc0000 x43c28000 x3f041ffb}\n       {x42d20000 x43cc0000 x3f081ffb}\n       {x42c60000 x43c88000 x3ef47ffe}\n       {x42c60000 x43c60000 x3d53fffd}}}\n     {t\n   {{x41300000 x42b6492a}}\n   {{x41300000 x43bd8000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c20000 x42d00000 x3d04000a}\n       {x42c80000 x42c80000 x3d2c0003}\n       {x42dc0000 x43010000 x3ea1fff8}\n       {x43080000 x434e0000 x3eff7ff1}\n       {x43360000 x43ad8000 x3f095ffe}\n       {x43400000 x43b88000 x3f006003}\n       {x43420000 x43bd8000 x3da7fff9}}}\n     {t\n   {{x41300000 x43106dd3}}\n   {{x41300000 x43696dd3}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42fc0000 x40a00000 x3dddffc5}\n       {x43030000 x41a00000 x3e33ffef}\n       {x43230000 x42cc0000 x3ee3ffef}\n       {x43360000 x432f0000 x3f0c1ffb}\n       {x43640000 x43a88000 x3f16dff8}\n       {x43858000 x43c50000 x3f252008}\n       {x43908000 x43d10000 x3f28e001}\n       {x43a60000 x43e70000 x3f2a5ffa}\n       {x43cb0000 x440c4000 x3f2aa002}\n       {x43c28000 x44130000 x3f1aa002}}}\n     {t\n   {{x41300000 x437b4ccd}}\n   {{x41300000 x4399199a}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae8000 x40000000 x3d1bfff6}\n       {x43b10000 x41b00000 x3dd1fff8}\n       {x43c20000 x43030000 x3ecc0011}\n       {x43d10000 x435a0000 x3f03e005}\n       {x43db8000 x43b00000 x3f0a5ffa}\n       {x43de0000 x43ba0000 x3f0a2004}\n       {x43dc0000 x43bd8000 x3ed67ff6}}}\n     {t\n   {{x41300000 x43ca4917}}\n   {{x41300000 x4352db64}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439d8000 x43390000 x3d64000a}\n       {x439e0000 x434c0000 x3e35ffe7}\n       {x43b00000 x43950000 x3ed60008}\n       {x43c00000 x43b50000 x3f0b1fff}\n       {x43d58000 x43ea8000 x3f15a006}\n       {x43e90000 x440bc000 x3f206003}\n       {x43e90000 x440e0000 x3f1ce001}\n       {x43eb8000 x44110000 x3f0adff8}\n       {x43eb8000 x44100000 x3d67fff9}}}\n     {t\n   {{x41300000 x43cbc72b}}\n   {{x41300000 x43d32aa0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d48000 x43ef0000 x3d920005}\n       {x43d38000 x43ef8000 x3e9afff3}\n       {x43d30000 x43f80000 x3ebc0011}\n       {x43db8000 x440b8000 x3f05dffc}\n       {x43e30000 x4417c000 x3f1be005}\n       {x43ee0000 x44270000 x3f1edff8}\n       {x43ef8000 x44298000 x3f1be005}}}\n     {t\n   {{x41300000 x43deb6e9}}\n   {{x41300000 x440d924e}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a68000 x43de8000 x3d13fffd}\n       {x43a68000 x43e20000 x3e31001d}\n       {x43a88000 x43f28000 x3ede0008}\n       {x43b28000 x44028000 x3f16dff8}\n       {x43c60000 x44114000 x3f222004}\n       {x43c88000 x44140000 x3f23e005}\n       {x43cb0000 x4417c000 x3f241ffb}\n       {x43cc0000 x4419c000 x3f236007}\n       {x43cc0000 x44190000 x3e55ffe7}}}\n     {t\n   {{x41300000 x43bbb8d5}}\n   {{x41300000 x44086ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439f0000 x4439c000 x3d1bfff6}\n       {x43a08000 x443b0000 x3e28fffc}\n       {x43aa0000 x4444c000 x3efb8002}\n       {x43b18000 x444c0000 x3f1b1fff}\n       {x43b88000 x44504000 x3f1e5ffa}\n       {x43b88000 x444fc000 x3e75ffe7}}}\n     {t\n   {{x41300000 x43acaaa0}}\n   {{x41300000 x44464000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43920000 x444c0000 x3d3bfff6}\n       {x43990000 x444f8000 x3e45ffe7}\n       {x43a78000 x44594000 x3eee7ff6}\n       {x43ac8000 x445f4000 x3f0a5ffa}\n       {x43b18000 x44650000 x3f101ffb}\n       {x43b28000 x44664000 x3f11a006}\n       {x43b28000 x44660000 x3ef2fff3}}}\n     {t\n   {{x41300000 x43a7a49c}}\n   {{x41300000 x445c2db2}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43510000 x44474000 x3d04000a}\n       {x43550000 x4447c000 x3d380007}\n       {x43550000 x444a4000 x3ebc0011}\n       {x435f0000 x444e8000 x3efd7ffa}\n       {x437f0000 x44584000 x3f049ff9}\n       {x43810000 x445a8000 x3f0b6007}\n       {x43810000 x445bc000 x3f0c9ff9}}}\n     {t\n   {{x41300000 x4368b6c9}}\n   {{x41300000 x4450e48b}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43290000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43840000 x444c0000 x3dbdfffb}\n       {x43870000 x444f8000 x3e900000}\n       {x437a0000 x444c0000 x3f0edff8}\n       {x43660000 x44488000 x3f131fff}\n       {x43660000 x444c0000 x3f1aa002}\n       {x435f0000 x444b8000 x3f252008}\n       {x43710000 x44518000 x3f24e001}\n       {x437a0000 x445a8000 x3f0ea002}}}\n     {t\n   {{x41300000 x4374c000}}\n   {{x41300000 x444e7000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43100000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43200000 x44358000 x3d3bfff6}\n       {x431c0000 x443bc000 x3dfc0011}\n       {x43270000 x443d8000 x3ebb8002}\n       {x43270000 x44390000 x3f079ffd}\n       {x43140000 x4428c000 x3f0adff8}\n       {x43170000 x442b4000 x3ed5000d}}}\n     {t\n   {{x41300000 x431e2ac1}}\n   {{x41300000 x4434a000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43100000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Blur1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x430f0000 x44768000 x3d1bfff6}\n       {x430a0000 x447a4000 x3d8dfffb}\n       {x430a0000 x44718000 x3eae0008}\n       {x431c0000 x44680000 x3eec0011}\n       {x43190000 x44694000 x3ef00000}\n       {x43120000 x446fc000 x3ef1fff8}\n       {x43120000 x44718000 x3ef1fff8}\n       {x430d0000 x446c4000 x3ef5000d}\n       {x430b0000 x4464c000 x3f009ff9}\n       {x43060000 x445a0000 x3f022004}\n       {x43050000 x44620000 x3f036007}\n       {x430a0000 x446b8000 x3f02a002}\n       {x42f20000 x445c4000 x3f05a006}\n       {x42f80000 x44584000 x3f076007}\n       {x42f40000 x445c4000 x3f065ffa}\n       {x42e40000 x445c8000 x3f05a006}\n       {x42cc0000 x44510000 x3f052008}\n       {x42b40000 x443f4000 x3ecafff3}}}\n     {t\n   {{x41300000 x43041c6a}}\n   {{x41300000 x4464271b}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x43100000 bt x40000000 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 x41700000 tt x41a00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43030000 x44650000 x3d47fff9}\n       {x42f20000 x4461c000 x3d8c0003}\n       {x42f80000 x44630000 x3e68fffc}\n       {x430b0000 x44694000 x3e85000d}\n       {x430a0000 x44710000 x3e8b8002}\n       {x430a0000 x44724000 x3e8f0004}\n       {x43120000 x447a0000 x3e8f0004}\n       {x430d0000 x447b8000 x3da7fff9}}}\n     {t\n      {{x41300000 x4306c000}}\n      {{x41300000 x446d7800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438c8000 x445e4000 x3d580007}\n       {x438e0000 x445d8000 x3d93fffd}\n       {x438f8000 x44644000 x3e8f0004}\n       {x438e0000 x44690000 x3e960008}\n       {x43940000 x446c4000 x3e95000d}\n       {x439a8000 x44748000 x3e938002}\n       {x43a18000 x44790000 x3e92fff3}}}\n     {t\n      {{x41300000 x43936db2}}\n      {{x41300000 x44698927}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437a0000 x44468000 x3d27fff9}\n       {x43760000 x444c0000 x3d27fff9}\n       {x437a0000 x44578000 x3d3bfff6}}}\n     {t\n      {{x41300000 x4378aac1}}\n      {{x41300000 x444e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x436b0000 x442ac000 x3d89fffe}\n       {x436b0000 x442a8000 x3e380022}\n       {x43600000 x44264000 x3e780022}\n       {x43670000 x44294000 x3ea38002}\n       {x437a0000 x442dc000 x3eb3ffef}\n       {x43760000 x442a0000 x3ec38002}\n       {x43730000 x44294000 x3ecd7ffa}\n       {x43820000 x442dc000 x3ecb8002}\n       {x43930000 x44388000 x3ec77ff1}\n       {x43920000 x443fc000 x3ec3ffef}\n       {x438f8000 x443fc000 0}}}\n     {t\n      {{x41300000 x437e45e3}}\n      {{x41300000 x442f974c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43000000 x43e10000 x3d83fffd}\n       {x43010000 x43e10000 x3e2a0019}\n       {x43080000 x43e80000 x3e61001d}\n       {x43170000 x43f30000 x3e857ffa}}}\n     {t\n      {{x41300000 x43080000}}\n      {{x41300000 x43e74000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x428e0000 x43a30000 x3d27fff9}\n       {x42820000 x439f0000 x3d89fffe}\n       {x42820000 x43858000 x3e9e7ff6}\n       {x427c0000 x43830000 x3eaafff3}\n       {x42740000 x43808000 x3eab8002}\n       {x42680000 x43848000 x3eac7ffe}\n       {x42600000 x43880000 x3eaa8006}\n       {x42300000 x436e0000 x3eac7ffe}\n       {x41e80000 x435d0000 x3ead7ffa}\n       {x40a00000 x43400000 x3eae7ff6}\n       {x40400000 x433d0000 x3e98800f}\n       {x40400000 x433b0000 x3e0effe3}}}\n     {t\n      {{x41300000 x422e554d}}\n      {{x41300000 x43798000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a60000 x427c0000 x3dc00000}\n       {x43af0000 x41d00000 x3e11fff8}}}\n     {t\n      {{x41300000 x43aa8000}}\n      {{x41300000 x42320000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43340000 x430b0000 x3d000000}\n       {x433d0000 x43010000 x3d33fffd}\n       {x433e0000 x42b00000 x3e61001d}\n       {x433d0000 x42b00000 x3e92fff3}\n       {x43440000 x42d00000 x3e957ffa}\n       {x43450000 x42980000 x3ebd000d}\n       {x43310000 x42400000 x3ebf7ff1}\n       {x432c0000 x426c0000 x3eb9fff8}\n       {x432f0000 x426c0000 x3eb5000d}\n       {x432a0000 x42400000 x3eb70004}\n       {x430b0000 x41700000 x3eb77ff1}\n       {x42fc0000 xc0000000 x3eaafff3}\n       {x42d60000 xc1e80000 x3e81800a}}}\n     {t\n      {{x41300000 x4329c4dd}}\n      {{x41300000 x427cec57}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43780000 x43a68000 x3d53fffd}\n       {x43760000 x43a60000 0}}}\n     {t\n      {{x41300000 x43770000}}\n      {{x41300000 x43a64000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ac8000 x43c70000 x3d2c0003}\n       {x43a50000 x43c70000 x3da7fff9}\n       {x43a30000 x43b98000 x3e80fffc}\n       {x43a28000 x43b38000 x3e700000}\n       {x439c8000 x43b40000 x3e270004}}}\n     {t\n      {{x41300000 x43a3e666}}\n      {{x41300000 x43bc999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e70000 x43cd8000 x3d53fffd}\n       {x44e66000 x43d30000 x3e51fff8}\n       {x44e62000 x43d60000 0}}}\n     {t\n      {{x41300000 x44e68000}}\n      {{x41300000 x43d22aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e0a000 x432d0000 x3d380007}\n       {x44dde000 x43700000 x3d64000a}\n       {x44de0000 x43750000 x3dbc0003}\n       {x44de8000 x43810000 x3dbc0003}\n       {x44df8000 x438c8000 x3d900000}\n       {x44e06000 x438e0000 x3d93fffd}\n       {x44e4e000 x43a30000 x3da20005}\n       {x44e66000 x43a50000 x3dadfffb}\n       {x44e62000 x43a88000 x3dac0003}}}\n     {t\n      {{x41300000 x44e15c7b}}\n      {{x41300000 x438971cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e52000 x41c00000 x3d07fff9}\n       {x44e52000 x41d80000 x3d30000d}\n       {x44e48000 x42400000 x3e030015}\n       {x44e54000 x42de0000 x3e5c0011}\n       {x44e6a000 x42e40000 x3e4c0011}\n       {x44e88000 x42be0000 x3e51fff8}\n       {x44e9c000 x42b00000 x3e580022}\n       {x44ed0000 x428c0000 x3e5e0008}\n       {x44ee4000 x42540000 x3e81fff8}\n       {x44eda000 x42100000 x3e838002}\n       {x44ed2000 x42140000 x3affffd5}}}\n     {t\n      {{x41300000 x44e8fd1f}}\n      {{x41300000 x427fa2eb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d70000 x42380000 x3d89fffe}\n       {x44d7c000 x42440000 x3e6a0019}\n       {x44d6e000 x41f80000 x3e7cffeb}\n       {x44d42000 x41a00000 x3e85000d}\n       {x44d3a000 x42600000 x3e90fffc}\n       {x44d4c000 x42820000 x3e900000}\n       {x44d5a000 x42380000 x3e91800a}\n       {x44d52000 x42140000 x3e947ffe}\n       {x44d44000 x426c0000 x3e938002}\n       {x44d42000 x42960000 x3e8f0004}\n       {x44d44000 x42d60000 x3e8f7ff1}\n       {x44d4e000 x42da0000 x3e8e0008}\n       {x44d5c000 x42de0000 x3e8e7ff6}\n       {x44d6a000 x42fc0000 x3e8c0011}}}\n     {t\n      {{x41300000 x44d556b8}}\n      {{x41300000 x4285db71}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d86000 x426c0000 x3d07fff9}\n       {x44d8c000 x42380000 x3d200000}\n       {x44d92000 x42100000 x3d200000}}}\n     {t\n      {{x41300000 x44d8c000}}\n      {{x41300000 x423c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e44000 x42b40000 x3cb7ffec}\n       {x44e62000 x42600000 x3d580007}}}\n     {t\n      {{x41300000 x44e53000}}\n      {{x41300000 x42920000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cf4000 x42f40000 x3dd1fff8}\n       {x44cfe000 x42e80000 x3e430015}\n       {x44d0e000 x42a60000 x3e5afff3}\n       {x44d20000 x427c0000 x3e700000}\n       {x44d2c000 x42f80000 x3e7a0019}\n       {x44d7e000 x43340000 x3e838002}\n       {x44da0000 x43120000 x3e8c7ffe}\n       {x44db8000 x42c20000 x3ea67ff6}\n       {x44dbc000 x42b00000 x3ea80000}\n       {x44db8000 x42bc0000 x3ea8800f}\n       {x44dbc000 x42c20000 x3ea57ffa}\n       {x44de0000 x42440000 x3ea67ff6}\n       {x44e06000 x41e80000 x3ea67ff6}\n       {x44e06000 x42400000 x3e35ffe7}\n       {x44e0e000 x42b80000 x3e35000d}\n       {x44e24000 x42d00000 x3c800000}}}\n     {t\n      {{x41300000 x44d97000}}\n      {{x41300000 x42bf8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c1c000 x42ae0000 x3d2c0003}\n       {x44c2e000 x42980000 x3d33fffd}\n       {x44c4c000 x42140000 x3e3cffeb}\n       {x44c5a000 x41980000 x3e4c0011}\n       {x44c60000 x41400000 x3e48fffc}\n       {x44c64000 x41400000 0}}}\n     {t\n      {{x41300000 x44c48a8f}}\n      {{x41300000 x42220000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bd6000 x43690000 x3d73fffd}\n       {x44bd6000 x43650000 x3e11001d}\n       {x44bd6000 x43690000 x3de2003b}}}\n     {t\n      {{x41300000 x44bd6000}}\n      {{x41300000 x4367aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bee000 x438f0000 x3d04000a}\n       {x44be6000 x438c8000 0}}}\n     {t\n      {{x41300000 x44bea000}}\n      {{x41300000 x438dc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ca4000 x43bc0000 x3d7bfff6}\n       {x44c2a000 x43ac8000 x3dd9ffd6}\n       {x44c1c000 x43ab0000 0}}}\n     {t\n      {{x41300000 x44c4e000}}\n      {{x41300000 x43b12aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cce000 x43e08000 x3dee0008}\n       {x44cd4000 x43de8000 x3e1cffeb}\n       {x44ce2000 x43d60000 x3e21fff8}\n       {x44cd0000 x43bf8000 x3e35000d}}}\n     {t\n      {{x41300000 x44cd5000}}\n      {{x41300000 x43d52000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d60000 x43e20000 x3c6fffd8}\n       {x44d5a000 x43e08000 x3cb0000d}\n       {x44d48000 x43e48000 x3d0c0003}\n       {x44d1c000 x43de0000 x3dfc0011}}}\n     {t\n      {{x41300000 x44d47800}}\n      {{x41300000 x43e14000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d96000 x43f50000 x3c6fffd8}\n       {x44d9c000 x43f40000 x3d000000}\n       {x44d9a000 x43f40000 x3e960008}\n       {x44d82000 x43ee0000 x3e9c7ffe}\n       {x44d92000 x43ef8000 x3e9f0004}\n       {x44d9a000 x43f18000 x3e9f0004}\n       {x44d9c000 x43ee0000 x3ea28006}\n       {x44d88000 x43ec8000 x3eae7ff6}\n       {x44d96000 x43eb8000 x3eaf7ff1}\n       {x44d90000 x43e80000 x3eb3ffef}\n       {x44d78000 x43e70000 x3ead000d}\n       {x44d70000 x43e70000 x3b800000}}}\n     {t\n      {{x41300000 x44d8e571}}\n      {{x41300000 x43ee0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d14000 x44044000 x3cb7ffec}\n       {x44d0a000 x4400c000 x3d44000a}\n       {x44cfa000 x43f68000 x3e500000}\n       {x44d00000 x43fc8000 x3e61fff8}\n       {x44d00000 x43f78000 x3e55000d}\n       {x44d0e000 x43fb0000 x3e3afff3}\n       {x44d12000 x43fb0000 x3e31001d}\n       {x44d1c000 x43fc8000 x3de00000}}}\n     {t\n      {{x41300000 x44d0a800}}\n      {{x41300000 x43fce000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cdc000 x44034000 x3d1bfff6}\n       {x44cd4000 x4400c000 x3d400000}\n       {x44cd4000 x43fd8000 x3dfc0011}\n       {x44cd8000 x43f50000 x3e01001d}}}\n     {t\n      {{x41300000 x44cd7000}}\n      {{x41300000 x43fea000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ce6000 x4411c000 x3c8ffff3}\n       {x44d00000 x440e8000 x3ca7fff9}\n       {x44cf4000 x440cc000 x3ddc0011}\n       {x44ce8000 x440cc000 x3dc20005}\n       {x44cf6000 x440d8000 x3dc60002}\n       {x44d04000 x44080000 x3e180022}\n       {x44cec000 x44034000 x3e430015}\n       {x44ce8000 x44034000 x3e03ffef}}}\n     {t\n      {{x41300000 x44cf2000}}\n      {{x41300000 x440ab800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e96000 x44328000 x3cc80014}\n       {x44e9c000 x44314000 x3d04000a}\n       {x44e6a000 x4430c000 x3db9fffe}\n       {x44e9c000 x443d8000 x3e07ffde}\n       {x44eaa000 x44348000 x3e400000}\n       {x44ea6000 x44328000 x3e500000}\n       {x44e84000 x442ac000 x3e51fff8}}}\n     {t\n      {{x41300000 x44e94000}}\n      {{x41300000 x4432d24e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e98000 x444b8000 x3ca7fff9}\n       {x44e80000 x44460000 x3d33fffd}\n       {x44e76000 x4441c000 x3e15ffe7}}}\n     {t\n      {{x41300000 x44e84a8f}}\n      {{x41300000 x44466ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d26000 x44584000 x3d0c0003}\n       {x44d2a000 x44584000 x3d70000d}\n       {x44d12000 x44580000 x3e45ffe7}\n       {x44d08000 x445a8000 x3e770004}\n       {x44cf4000 x44598000 x3e98800f}\n       {x44d14000 x445b0000 x3e5a0019}\n       {x44d1c000 x445a0000 x3e15ffe7}}}\n     {t\n      {{x41300000 x44d1447b}}\n      {{x41300000 x44595b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c80000 x444fc000 x3d8c0003}\n       {x44c78000 x4450c000 x3dadfffb}\n       {x44c94000 x444f8000 x3e71001d}\n       {x44ca4000 x444b8000 x3e9c0011}\n       {x44ca8000 x444c8000 x3e9e7ff6}\n       {x44cba000 x444c0000 x3e938002}\n       {x44cc0000 x44498000 x3e6afff3}}}\n     {t\n      {{x41300000 x44c9e000}}\n      {{x41300000 x444d5b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42e40000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cc0000 x4460c000 x3c60001b}\n       {x44cac000 x44678000 x3d64000a}\n       {x44cb0000 x446cc000 x3d600000}\n       {x44cc6000 x446ec000 x3dfdffc5}\n       {x44cc6000 x446d8000 x3e0afff3}}}\n     {t\n      {{x41300000 x44cbb333}}\n      {{x41300000 x4469d99a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c50000 x44410000 x3d4c0003}\n       {x44c50000 x44400000 x3d7bfff6}\n       {x44c98000 x444cc000 x3dddffc5}\n       {x44c94000 x444d4000 x3e2afff3}\n       {x44c5e000 x444f0000 x3e2c0011}\n       {x44c80000 x4455c000 x3e21001d}\n       {x44cac000 x44554000 x3e48fffc}}}\n     {t\n      {{x41300000 x44c7a000}}\n      {{x41300000 x444c248b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c28000 x444c0000 x3cb7ffec}\n       {x44c16000 x44444000 x3d400000}}}\n     {t\n      {{x41300000 x44c1f000}}\n      {{x41300000 x44482000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c16000 x44568000 x3d200000}\n       {x44c12000 x44564000 x3d53fffd}\n       {x44bdc000 x4455c000 x3da20005}\n       {x44be6000 x44584000 x3d9c0003}\n       {x44bee000 x44594000 x3da3fffd}\n       {x44bea000 x44584000 0}}}\n     {t\n      {{x41300000 x44bf5a8f}}\n      {{x41300000 x44576000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44efc000 x43d90000 x3cd80007}\n       {x44efc000 x43dc0000 x3d07fff9}\n       {x44ef4000 x43ef8000 x3d07fff9}\n       {x44eee000 x43fa0000 x3dc00000}\n       {x44eee000 x440a8000 x3df00043}\n       {x44ee6000 x44110000 x3e230015}\n       {x44eda000 x44174000 x3db3fffd}}}\n     {t\n      {{x41300000 x44eeedc3}}\n      {{x41300000 x44004927}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f14000 x43580000 x3cc00000}\n       {x44f20000 x43420000 x3ce7fff9}\n       {x44f2e000 x43120000 x3d67fff9}\n       {x44f20000 x42e40000 x3d13fffd}\n       {x44f1a000 x42b80000 x3d4c0003}}}\n     {t\n      {{x41300000 x44f1f333}}\n      {{x41300000 x43186666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef8000 x43f30000 x3cd80007}\n       {x44f02000 x43e30000 x3cf0000d}\n       {x44f06000 x43d00000 x3d180007}\n       {x44f06000 x43cb0000 x3dddffc5}\n       {x44f06000 x43bb0000 x3df00043}\n       {x44f06000 x43b28000 x3dea0019}\n       {x44f0c000 x43a28000 x3dea0019}\n       {x44f10000 x439a8000 x3dea0019}\n       {x44f10000 x438e0000 x3dcc0003}\n       {x44f16000 x43858000 x3dd9ffd6}\n       {x44f1a000 x43710000 x3dc7fff9}\n       {x44f1e000 x43670000 x3d580007}\n       {x44f24000 x43550000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44f0d8a4}}\n      {{x41300000 x43a7ceb8}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a14000 x43930000 x3cc00000}\n       {x44a1c000 x438b8000 x3d07fff9}\n       {x44a22000 x43730000 x3e4e0008}\n       {x44a26000 x435b0000 x3e71001d}\n       {x44a22000 x432d0000 x3e71001d}\n       {x44a28000 x43140000 x3e75ffe7}\n       {x44a36000 x42da0000 x3e75000d}\n       {x44a36000 x42a60000 x3e730015}\n       {x44a3e000 x42280000 x3e65ffe7}\n       {x44a44000 x41d00000 x3e5a0019}\n       {x44a5c000 xc0a00000 x3e27ffde}}}\n     {t\n      {{x41300000 x44a2fa3d}}\n      {{x41300000 x4312747b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a34000 x44188000 x3d47fff9}\n       {x44a1c000 x44204000 x3e000000}\n       {x44a26000 x44250000 x3e88800f}\n       {x44a26000 x44294000 x3e860008}\n       {x44a1c000 x442f0000 x3e7e0008}\n       {x44a18000 x443a8000 x3e80fffc}\n       {x44a18000 x443d8000 x3e7c0011}\n       {x44a1c000 x44454000 x3e6cffeb}\n       {x44a14000 x444ac000 x3e3cffeb}\n       {x44a1e000 x44510000 x3dadfffb}}}\n     {t\n      {{x41300000 x44a1f000}}\n      {{x41300000 x4434b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a14000 x44088000 x3cb7ffec}\n       {x44a0e000 x44074000 x3ce7fff9}\n       {x44a0a000 x44074000 x3cc00000}\n       {x449fc000 x440b8000 x3e3a0019}\n       {x44a00000 x440bc000 x3e928006}\n       {x44a12000 x440cc000 x3e91800a}\n       {x44a22000 x440e8000 x3e8d000d}\n       {x44a1e000 x440e8000 x3e90fffc}\n       {x44a22000 x44114000 x3df5ffe7}\n       {x44a1e000 x44138000 x3db3fffd}}}\n     {t\n      {{x41300000 x44a1299a}}\n      {{x41300000 x440c799a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44912000 x4409c000 x3d0c0003}\n       {x4490e000 x440a8000 x3dddffc5}\n       {x44908000 x440e8000 x3eb0800f}}}\n     {t\n      {{x41300000 x4490d571}}\n      {{x41300000 x440b9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448f0000 x4400c000 x3d0ffff3}\n       {x448f4000 x44018000 x3d33fffd}\n       {x448f8000 x44034000 x3e47ffde}\n       {x448ec000 x44028000 x3e68fffc}\n       {x448ec000 x44048000 x3e6e0008}\n       {x448ea000 x44060000 x3e730015}\n       {x448e2000 x44088000 x3e75000d}\n       {x448ea000 x44094000 x3e3e0008}\n       {x448ea000 x4409c000 x3e35ffe7}\n       {x448ea000 x440a8000 x3e4afff3}\n       {x448e6000 x440bc000 x3e580022}\n       {x448e0000 x440c4000 x3e7e0008}\n       {x448e0000 x440f4000 x3e81800a}\n       {x448d8000 x440f4000 x3e7c0011}\n       {x448d8000 x44110000 x3be00005}}}\n     {t\n      {{x41300000 x448e7bd7}}\n      {{x41300000 x44088883}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42b80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448e2000 x43d10000 x3cf7ffec}\n       {x448e0000 x43d60000 x3d0ffff3}\n       {x448e0000 x43d70000 0}}}\n     {t\n      {{x41300000 x448e0a8f}}\n      {{x41300000 x43d4aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x430a0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448a6000 x43bc8000 x3cf0000d}\n       {x448a8000 x43bd8000 x3d27fff9}\n       {x448a8000 x43bf8000 x3e5cffeb}}}\n     {t\n      {{x41300000 x448a7571}}\n      {{x41300000 x43bdd560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x430a0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4481a000 x43b00000 x3cd80007}\n       {x4481e000 x43b10000 x3d0ffff3}\n       {x44838000 x43b28000 x3e67ffde}\n       {x44858000 x43b10000 x3e7c0011}\n       {x4486c000 x43ae0000 x3e670004}\n       {x44864000 x43b10000 x3e18fffc}\n       {x4485a000 x43b18000 x3e1afff3}\n       {x44858000 x43b18000 x3e31001d}\n       {x4485a000 x43b28000 x3e2e0008}\n       {x44862000 x43b28000 x3e58fffc}\n       {x44872000 x43b00000 x3e600000}\n       {x44864000 x43b00000 x3d4c0003}\n       {x44862000 x43b10000 0}}}\n     {t\n      {{x41300000 x448538a4}}\n      {{x41300000 x43b0f625}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x430a0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44842000 x43360000 x3cf0000d}\n       {x4484a000 x43340000 x3d1bfff6}\n       {x44842000 x43340000 x3e80800f}\n       {x44842000 x43360000 x3affffd5}}}\n     {t\n      {{x41300000 x44844000}}\n      {{x41300000 x43350000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x430a0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44862000 x42de0000 x3d200000}\n       {x44864000 x42e40000 x3ddc0011}\n       {x44864000 x42ee0000 x3e100000}}}\n     {t\n      {{x41300000 x44863571}}\n      {{x41300000 x42e55581}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43520000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4485e000 x42920000 x3ccffff3}\n       {x44862000 x42920000 x3d1bfff6}\n       {x44862000 x428c0000 x3e0e0008}\n       {x44854000 x426c0000 x3e5a0019}\n       {x4484e000 x42880000 x3e100000}\n       {x4484e000 x42980000 x3e070004}\n       {x44850000 x42920000 x3e2e0008}\n       {x44850000 x42980000 x3e2e0008}\n       {x44850000 x42a00000 x3e2afff3}\n       {x4484e000 x42a40000 x3e21001d}\n       {x4484e000 x42a00000 x3cc80014}}}\n     {t\n      {{x41300000 x448542e1}}\n      {{x41300000 x429345d6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43520000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44704000 x42fc0000 x3dea0019}\n       {x44740000 x42f40000 x3e05ffe7}}}\n     {t\n      {{x41300000 x44722000}}\n      {{x41300000 x42f80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446ec000 x42240000 x3d4c0003}\n       {x44718000 x42140000 x3de7ffde}\n       {x4471c000 x42100000 x3e2afff3}\n       {x44710000 x42240000 x3e1effe3}\n       {x446ec000 x42580000 x3db20005}\n       {x44704000 x42be0000 x3dc7fff9}}}\n     {t\n      {{x41300000 x44705550}}\n      {{x41300000 x424aaab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4460c000 x41d80000 x3ce0001b}\n       {x445d8000 x41f80000 x3d0ffff3}\n       {x4458c000 x42140000 x3de7ffde}\n       {x44594000 x41200000 x3e100000}\n       {x44578000 xc0000000 x3e1e0008}\n       {x44554000 x41000000 x3e25000d}\n       {x44548000 x41400000 x3e25000d}\n       {x44554000 x41200000 x3e25000d}\n       {x4458c000 x40000000 x3df80022}}}\n     {t\n      {{x41300000 x4458d550}}\n      {{x41300000 x41700000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f58000 x42960000 x3cd80007}\n       {x43f68000 x42980000 x3d180007}\n       {x43f90000 x427c0000 x3e5afff3}\n       {x43f58000 x42820000 x3e4cffeb}\n       {x43fa0000 x42580000 x3e200000}}}\n     {t\n      {{x41300000 x43f74ccd}}\n      {{x41300000 x42853333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44334000 x41700000 x3c6fffd8}\n       {x44364000 x40a00000 x3ca7fff9}}}\n     {t\n      {{x41300000 x4434c000}}\n      {{x41300000 x41200000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4422c000 x42820000 x3d000000}\n       {x44280000 x42280000 x3df9ffd6}\n       {x44278000 xc0000000 x3e100000}\n       {x4428c000 x40400000 x3c8ffff3}}}\n     {t\n      {{x41300000 x4426c000}}\n      {{x41300000 x41d80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f58000 xc0400000 x3dac0003}\n       {x43e40000 xc1880000 x3e2effe3}\n       {x43f80000 xc1b00000 x3e11fff8}}}\n     {t\n      {{x41300000 x43f08000}}\n      {{x41300000 xc1600000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443b0000 x43848000 x3c6fffd8}\n       {x443f4000 x43780000 x3c880014}\n       {x4445c000 x43650000 x3cc00000}\n       {x44460000 x43650000 x3e370004}\n       {x44330000 x43810000 x3e4a0019}\n       {x442ac000 x43908000 x3e7c0011}\n       {x44280000 x43a28000 x3e7c0011}\n       {x44278000 x43a50000 x3e7afff3}\n       {x44268000 x43a60000 x3e78fffc}\n       {x44264000 x43a40000 x3e1effe3}\n       {x442dc000 x43858000 x3dfdffc5}\n       {x44314000 x43710000 x3dea0019}\n       {x44308000 x433e0000 x3de7ffde}\n       {x442d8000 x432d0000 x3e61001d}\n       {x44220000 x430a0000 x3e5e0008}\n       {x4428c000 x43250000 x3e92fff3}\n       {x442ac000 x430b0000 x3e857ffa}\n       {x44248000 x42e40000 x3e99fff8}\n       {x441a4000 x43050000 x3e9f0004}\n       {x44188000 x43200000 x3e9b8002}\n       {x44210000 x42e80000 x3e977ff1}\n       {x441e8000 x428e0000 x3e9a8006}\n       {x4411c000 x42240000 x3e9afff3}\n       {x440f4000 x42080000 x3e938002}\n       {x4414c000 x41200000 x3e8b8002}\n       {x4414c000 xc0a00000 x3e5afff3}\n       {x440b8000 xc21c0000 x3e35000d}}}\n     {t\n      {{x41300000 x44271550}}\n      {{x41300000 x433112f2}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44454000 x43620000 x3da60002}\n       {x44438000 x43650000 x3d99fffe}\n       {x44424000 x436b0000 0}}}\n     {t\n      {{x41300000 x4443aab0}}\n      {{x41300000 x43660000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4482c000 x43c60000 x3c6fffd8}\n       {x44836000 x43b60000 x3cb0000d}}}\n     {t\n      {{x41300000 x44831000}}\n      {{x41300000 x43be0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44912000 x445c8000 x3ce0001b}\n       {x44912000 x445d8000 x3d64000a}\n       {x44912000 x445e4000 x3d83fffd}\n       {x44902000 x44630000 x3dc9fffe}}}\n     {t\n      {{x41300000 x4490e000}}\n      {{x41300000 x445ed000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44938000 x44484000 x3d200000}\n       {x44938000 x44474000 x3d400000}\n       {x44960000 x443a4000 x3dd9ffd6}\n       {x4496e000 x44334000 x3dd80022}}}\n     {t\n      {{x41300000 x4494f800}}\n      {{x41300000 x443f4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44824000 x44470000 x3d27fff9}\n       {x44820000 x44474000 x3dadfffb}\n       {x44846000 x443f4000 x3e08fffc}\n       {x4486c000 x44328000 x3e55000d}\n       {x448b4000 x441f0000 x3e5afff3}\n       {x448be000 x441a4000 x3e81800a}\n       {x448e6000 x440fc000 x3e828006}\n       {x448ea000 x440e0000 x3e80800f}\n       {x448f0000 x440d0000 x3e400000}}}\n     {t\n      {{x41300000 x44892a8f}}\n      {{x41300000 x44278e35}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43900000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4491c000 x44198000 x3cf7ffec}\n       {x44920000 x4419c000 x3d24000a}\n       {x4491c000 x441e8000 x3dadfffb}\n       {x44918000 x44204000 0}}}\n     {t\n      {{x41300000 x4491c000}}\n      {{x41300000 x441c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448a6000 x4436c000 x3d400000}\n       {x448dc000 x4431c000 x3d73fffd}}}\n     {t\n      {{x41300000 x448c1000}}\n      {{x41300000 x44344000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445d0000 x44748000 x3cc80014}\n       {x44628000 x4477c000 x3db3fffd}\n       {x44658000 x447a4000 x3dce0008}\n       {x44650000 x447a4000 0}}}\n     {t\n      {{x41300000 x44628000}}\n      {{x41300000 x44783000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444ac000 x44678000 x3ce0001b}\n       {x444b8000 x446a8000 x3d0ffff3}\n       {x4456c000 x4471c000 x3d0ffff3}}}\n     {t\n      {{x41300000 x444f0000}}\n      {{x41300000 x446beab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443bc000 x4450c000 x3d3bfff6}\n       {x4439c000 x44534000 x3d47fff9}\n       {x44380000 x445d0000 x3d4c0003}}}\n     {t\n      {{x41300000 x4439d550}}\n      {{x41300000 x4455aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443a4000 x44484000 x3d83fffd}\n       {x443bc000 x44458000 x3dd1fff8}\n       {x4439c000 x4442c000 x3e15ffe7}\n       {x4436c000 x44438000 x3e400000}\n       {x44390000 x444f8000 x3e5cffeb}\n       {x44394000 x44520000 x3e5afff3}\n       {x443c4000 x44504000 x3e300000}}}\n     {t\n      {{x41300000 x4439db75}}\n      {{x41300000 x4449f6d9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44570000 x44108000 x3da00000}\n       {x44660000 x43fa0000 x3dac0003}\n       {x44614000 x44030000 x3e3c0011}\n       {x44614000 x4403c000 x3e5effe3}\n       {x44630000 x44004000 x3e75ffe7}\n       {x44628000 x4400c000 x3e7effe3}\n       {x44644000 x44048000 x3e45ffe7}\n       {x44690000 x44014000 x3de2003b}\n       {x446a4000 x43ff0000 0}}}\n     {t\n      {{x41300000 x44632ab0}}\n      {{x41300000 x4402f1cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b18000 x435d0000 x3d0c0003}\n       {x44b1a000 x43600000 x3d27fff9}\n       {x44b0c000 x43750000 x3d89fffe}}}\n     {t\n      {{x41300000 x44b14a8f}}\n      {{x41300000 x43660000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b10000 x433d0000 x3cf7ffec}\n       {x44b10000 x43420000 0}}}\n     {t\n      {{x41300000 x44b10000}}\n      {{x41300000 x433f8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b14000 x41200000 x3d180007}\n       {x44b0c000 x41600000 x3d53fffd}\n       {x44b0c000 x42280000 x3dadfffb}\n       {x44b06000 x429c0000 x3e01001d}}}\n     {t\n      {{x41300000 x44b0c800}}\n      {{x41300000 x42100000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dde000 x42140000 x3c880014}\n       {x44de0000 x421c0000 x3ca7fff9}\n       {x44dec000 x426c0000 x3cd80007}\n       {x44e1e000 x42380000 x3d1bfff6}\n       {x44e1a000 x42000000 x3e9d000d}\n       {x44e14000 x41d00000 x3e500000}}}\n     {t\n      {{x41300000 x44dfe571}}\n      {{x41300000 x421f554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d34000 x42880000 x3c8ffff3}\n       {x44d3e000 x42680000 x3ce7fff9}\n       {x44d44000 x42600000 0}}}\n     {t\n      {{x41300000 x44d3ca8f}}\n      {{x41300000 x4272aab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d00000 x434c0000 x3c9fffe5}\n       {x44d12000 x433b0000 x3d0c0003}\n       {x44d5c000 x43050000 x3d200000}}}\n     {t\n      {{x41300000 x44d24a8f}}\n      {{x41300000 x432eaac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44da0000 x44110000 x3c8ffff3}\n       {x44db4000 x440fc000 x3d4ffff3}\n       {x44dde000 x43fe0000 x3e500000}\n       {x44db8000 x43e58000 x3e870004}\n       {x44dae000 x43df8000 x3e88800f}\n       {x44da0000 x43ca8000 x3e828006}\n       {x44d96000 x43c20000 x3c400036}}}\n     {t\n      {{x41300000 x44dafb85}}\n      {{x41300000 x43f0249c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b98000 x44184000 x3d04000a}\n       {x44b8e000 x44190000 x3d3bfff6}\n       {x44b66000 x44188000 x3d580007}\n       {x44b98000 x440fc000 x3e45ffe7}\n       {x44be0000 x44048000 x3e98fffc}\n       {x44c12000 x43ea0000 x3ea1fff8}\n       {x44c12000 x43e68000 x3ea0fffc}\n       {x44c10000 x43e20000 x3e9a8006}\n       {x44bb6000 x43cf8000 x3e88fffc}\n       {x44ba0000 x43ca8000 x3e270004}\n       {x44b94000 x43c80000 x3dd1fff8}}}\n     {t\n      {{x41300000 x44bbd47b}}\n      {{x41300000 x43fbae98}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c08000 x440c4000 x3d0ffff3}\n       {x44c50000 x44014000 x3d4c0003}\n       {x44c8c000 x43e58000 x3e03ffef}\n       {x44c9a000 x43d38000 x3e1c0011}\n       {x44c98000 x43c20000 x3e1cffeb}}}\n     {t\n      {{x41300000 x44c6accd}}\n      {{x41300000 x43eacccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ef8000 x446e0000 x3d960002}\n       {x44eda000 x44688000 x3e25000d}}}\n     {t\n      {{x41300000 x44ee9000}}\n      {{x41300000 x446b4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cfa000 x4477c000 x3da7fff9}\n       {x44d22000 x447b4000 x3e1cffeb}\n       {x44d6a000 x447a4000 x3e6cffeb}}}\n     {t\n      {{x41300000 x44d2ca8f}}\n      {{x41300000 x4479c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b6c000 x44550000 x3d8dfffb}\n       {x44b68000 x44578000 x3db9fffe}\n       {x44b4e000 x445d8000 x3de2003b}\n       {x44af2000 x4469c000 x3e0effe3}\n       {x44aa4000 x446cc000 x3e730015}\n       {x44aa4000 x446e0000 x3e6effe3}\n       {x44aa6000 x44718000 x3e65ffe7}\n       {x44a96000 x44768000 x3e63ffef}}}\n     {t\n      {{x41300000 x44af3000}}\n      {{x41300000 x4466d000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cb6000 x44240000 x3cb7ffec}\n       {x44c2e000 x4433c000 x3d7bfff6}}}\n     {t\n      {{x41300000 x44c72000}}\n      {{x41300000 x442be000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ce8000 x441e8000 x3c9fffe5}\n       {x44cd4000 x44204000 x3c4ffff3}}}\n     {t\n      {{x41300000 x44cde000}}\n      {{x41300000 x441f6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ebe000 x44138000 x3ca7fff9}\n       {x44efe000 x440c4000 x3d27fff9}\n       {x44f1e000 x44060000 x3e9a8006}}}\n     {t\n      {{x41300000 x44ef3571}}\n      {{x41300000 x440c9550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ea6000 x446c0000 x3d4ffff3}\n       {x44eb0000 x446a8000 x3d9dfffb}\n       {x44ed6000 x44498000 x3e45ffe7}\n       {x44ef4000 x44390000 x3edafff3}\n       {x44f02000 x44344000 x3edd000d}\n       {x44f2e000 x442b4000 x3edd000d}\n       {x44f38000 x44294000 x3e98800f}\n       {x44f4a000 x44250000 x3e500000}}}\n     {t\n      {{x41300000 x44efa3d7}}\n      {{x41300000 x4440d800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d96000 x443b8000 x3c8ffff3}\n       {x44e2c000 x44380000 x3ce7fff9}}}\n     {t\n      {{x41300000 x44de1000}}\n      {{x41300000 x4439c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dd4000 x446ec000 x3d800000}\n       {x44d1c000 x44650000 x3d93fffd}\n       {x44c50000 x445c8000 x3e770004}\n       {x44c24000 x445a0000 x3ebb8002}\n       {x44c12000 x4455c000 x3ec1fff8}\n       {x44c04000 x4452c000 x3ec60008}\n       {x44bfa000 x444ac000 x3ec9800a}\n       {x44c38000 x44498000 x3ecd7ffa}\n       {x44cd8000 x44430000 x3eb57ffa}}}\n     {t\n      {{x41300000 x44c8070a}}\n      {{x41300000 x445671cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x4424c000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2e000 x44308000 x3c6fffd8}\n       {x44f42000 x44440000 x3d4c0003}\n       {x44f3c000 x444cc000 x3e01001d}\n       {x44f32000 x44540000 x3e81fff8}\n       {x44f32000 x4455c000 x3e53ffef}\n       {x44f24000 x445c8000 x3e570004}\n       {x44f20000 x44620000 x3e7c0011}\n       {x44f16000 x446b8000 x3e3effe3}}}\n     {t\n      {{x41300000 x44f2d3d7}}\n      {{x41300000 x4452a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f14000 x4423c000 x3ce7fff9}\n       {x44f14000 x44248000 x3d30000d}\n       {x44f1a000 x442a0000 x3d53fffd}}}\n     {t\n      {{x41300000 x44f16000}}\n      {{x41300000 x44261550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f14000 x44004000 x3ce7fff9}\n       {x44f0c000 x44020000 x3d13fffd}\n       {x44f06000 x4408c000 x3dea0019}\n       {x44f08000 x440f4000 x3d53fffd}}}\n     {t\n      {{x41300000 x44f0b800}}\n      {{x41300000 x44069000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f32000 x43450000 x3cd80007}\n       {x44f2a000 x436e0000 x3d07fff9}\n       {x44f16000 x43a00000 x3e1effe3}}}\n     {t\n      {{x41300000 x44f26000}}\n      {{x41300000 x437baac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f24000 x42300000 x3d07fff9}\n       {x44f2a000 x42300000 x3d33fffd}\n       {x44f2a000 x42400000 x3de00000}}}\n     {t\n      {{x41300000 x44f28000}}\n      {{x41300000 x4235554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ea0000 x41400000 x3c800000}\n       {x44eb8000 x41200000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44eac000}}\n      {{x41300000 x41300000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dfc000 x42d20000 x3d0ffff3}\n       {x44e0a000 x42b80000 x3d1bfff6}\n       {x44e1e000 x428c0000 x3d27fff9}}}\n     {t\n      {{x41300000 x44e0c000}}\n      {{x41300000 x42b20000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d18000 x41b00000 x3c8ffff3}\n       {x44d22000 x41c00000 x3cf7ffec}\n       {x44d2a000 x42100000 x3e0afff3}\n       {x44d30000 x428c0000 x3e270004}\n       {x44d34000 x42b40000 x3e1cffeb}\n       {x44d5c000 x42f20000 x3e1c0011}\n       {x44d6e000 x43000000 x3db80007}}}\n     {t\n      {{x41300000 x44d396b8}}\n      {{x41300000 x428c492a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c12000 x43700000 x3ca7fff9}\n       {x44c10000 x43780000 x3cc00000}\n       {x44c1a000 x43940000 x3cc00000}\n       {x44c16000 x439a0000 x3e100000}\n       {x44c16000 x439d0000 x3dbc0003}}}\n     {t\n      {{x41300000 x44c14ccd}}\n      {{x41300000 x438c999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b6c000 x41980000 x3c6fffd8}\n       {x44b80000 x42400000 x3d0ffff3}\n       {x44bba000 x42bc0000 x3db9fffe}\n       {x44bc0000 x42d20000 x3dd1fff8}\n       {x44bc8000 x42ea0000 x3d87fff9}}}\n     {t\n      {{x41300000 x44ba2ccd}}\n      {{x41300000 x42993333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43a18000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f80000 x4433c000 x3d0ffff3}\n       {x43fc8000 x44408000 x3d4c0003}\n       {x43fc8000 x4442c000 x3e7c0011}\n       {x44034000 x4452c000 x3e7c0011}\n       {x44058000 x445a8000 x3e89fff8}\n       {x4414c000 x44730000 x3e957ffa}\n       {x44168000 x44774000 x3db9fffe}}}\n     {t\n      {{x41300000 x44065b75}}\n      {{x41300000 x44545b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b38000 x441e8000 x3d0ffff3}\n       {x43b78000 x4420c000 x3d27fff9}\n       {x43ce8000 x44298000 x3e938002}}}\n     {t\n      {{x41300000 x43bdd560}}\n      {{x41300000 x4422eab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f40000 x44074000 x3d0ffff3}\n       {x43f28000 x43fa0000 x3d33fffd}\n       {x43f50000 x43de0000 x3e15ffe7}\n       {x43f58000 x43c98000 x3e81800a}\n       {x43f58000 x43a18000 x3e967ff6}}}\n     {t\n      {{x41300000 x43f48000}}\n      {{x41300000 x43dd199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c70000 x43b28000 x3cc00000}\n       {x43c70000 x43bf8000 x3d0ffff3}\n       {x43c80000 x43d98000 x3e03ffef}\n       {x43c80000 x43dd0000 x3e9e0008}\n       {x43d20000 x43f18000 x3e9e7ff6}\n       {x43da8000 x43ff0000 x3e99800a}\n       {x43ec8000 x4411c000 x3e957ffa}\n       {x43ed0000 x4417c000 x3e9c7ffe}\n       {x43ec8000 x44218000 x3e9e0008}\n       {x43eb8000 x44268000 x3e92fff3}}}\n     {t\n      {{x41300000 x43d93333}}\n      {{x41300000 x43ff999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b40000 x42580000 x3e3afff3}\n       {x43b60000 x42680000 x3e430015}\n       {x43b70000 x430d0000 x3e43ffef}\n       {x43c28000 x43530000 x3e838002}\n       {x43c10000 x43870000 x3e2afff3}}}\n     {t\n      {{x41300000 x43ba8000}}\n      {{x41300000 x4312cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43870000 x43810000 x3d580007}\n       {x437a0000 x43400000 x3e31fff8}\n       {x436c0000 x430b0000 x3e33ffef}\n       {x435d0000 x42b00000 x3e67ffde}\n       {x43580000 x42680000 x3e82fff3}\n       {x43450000 x40a00000 x3e847ffe}\n       {x43450000 xc1200000 x3e947ffe}\n       {x435b0000 xc21c0000 x3e938002}}}\n     {t\n      {{x41300000 x4361c000}}\n      {{x41300000 x42acc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x43230000 x3c8ffff3}\n       {x42100000 x43220000 x3c9fffe5}\n       {x42240000 x43310000 x3ccffff3}\n       {x42580000 x43690000 x3dd9ffd6}\n       {x42740000 x437c0000 x3dfdffc5}\n       {x42aa0000 x439c8000 x3e01001d}\n       {x42c20000 x43af0000 x3dfdffc5}\n       {x42f20000 x43c60000 x3de7ffde}\n       {x43000000 x43cd0000 x3cc00000}}}\n     {t\n      {{x41300000 x429271c4}}\n      {{x41300000 x438871cb}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43aa0000 x44630000 x3ccffff3}\n       {x439a8000 x44504000 x3d33fffd}\n       {x43890000 x443b8000 x3de3ffef}\n       {x43808000 x44250000 x3e500000}\n       {x437a0000 x441e8000 x3e15ffe7}\n       {x43760000 x441b0000 x3b40000b}}}\n     {t\n      {{x41300000 x438baaa0}}\n      {{x41300000 x44378ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a88000 x4480c000 x3d920005}\n       {x43a08000 x44754000 x3e23ffef}\n       {x43710000 x44598000 x3ea28006}\n       {x435f0000 x444cc000 x3eca8006}\n       {x43580000 x44468000 x3ebe0008}}}\n     {t\n      {{x41300000 x4385cccd}}\n      {{x41300000 x4460b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c80000 x44810000 x3d580007}\n       {x42be0000 x447dc000 x3d83fffd}\n       {x42aa0000 x446e0000 x3e5c0011}\n       {x429c0000 x44680000 x3ea9fff8}\n       {x42880000 x44568000 x3eb8fffc}\n       {x42840000 x44510000 x3ec77ff1}\n       {x42400000 x44424000 x3ecafff3}\n       {x42400000 x443e8000 x3edf7ff1}\n       {x42140000 x4430c000 x3ee0fffc}\n       {x42000000 x442c8000 x3eec0011}\n       {x41600000 x441d4000 x3ef0800f}\n       {xc1000000 x44124000 x3ef1fff8}\n       {xc1980000 x44048000 x3ef47ffe}\n       {xc1e80000 x43fd8000 x3edf0004}\n       {xc2440000 x43e80000 x3edc0011}}}\n     {t\n      {{x41300000 x4216eee6}}\n      {{x41300000 x443bdde3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a r x3f0ccccd g x3f0ccccd b x3f0ccccd ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x43838000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {burn {\n  { selectAll r 0.25 g 0.25 b 0.25 opc 0.2 bs 565 bm 3 src 1 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0.55 g 0.55 b 0.55 opc 0.05 bs 645 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn r 0.25 g 0.25 b 0.25 opc 0.2 bs 565 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 22 }\n  { blur bs 182 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 20 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear bs 169 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 22 }\n} }\n  toolbar_blending_mode color-burn\n  toolbar_paint_color {0.25 0.25 0.25 1}\n  toolbar_opacity 0.200000003\n  toolbar_brush_size 565\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  lifetime_type \"all frames\"\n  lifetime_start 39\n  lifetime_end 39\n  motionblur_on true\n  brush_type smear\n  brush_size 169\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  effect_parameter1 1\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint2\n  xpos 1907\n  ypos 14835\n  disable {{\"parent.lensDirtPicker == 1 ? 0 : 1\"}}\n }\n FrameHold {\n  name FrameHold3\n  xpos 1907\n  ypos 14881\n }\npush $Ne1809000\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a opc x3f19999a}\n    {cubiccurve Smear70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4495e000 x426c0000 x3d6c0003}\n       {x44964000 x42600000 x3e93ffef}\n       {x4494c000 x42a60000 x3ee3ffef}\n       {x44944000 x42ca0000 x3d9dfffb}}}\n     {t\n      {{x41300000 x44954800}}\n      {{x41300000 x42958000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44812000 x430c0000 x3d83fffd}\n       {x44820000 x43120000 x3e9afff3}\n       {x44824000 x43140000 x3f101ffb}\n       {x44836000 x432b0000 x3f115ffe}\n       {x4483a000 x43360000 x3e48fffc}}}\n     {t\n      {{x41300000 x4482799a}}\n      {{x41300000 x431d6666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44330000 x43030000 x3f01dffc}\n       {x44348000 x434b0000 x3f06a002}\n       {x4436c000 x43510000 x3dc60002}}}\n     {t\n      {{x41300000 x4434c000}}\n      {{x41300000 x43350000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f40000 x43270000 x3e1effe3}\n       {x43ed8000 x433f0000 x3e7effe3}\n       {x43e30000 x435d0000 x3ee9fff8}\n       {x43e48000 x435c0000 0}}}\n     {t\n      {{x41300000 x43ea4000}}\n      {{x41300000 x4347c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43030000 x4400c000 x3ce0001b}\n       {x432b0000 x4408c000 x3d27fff9}}}\n     {t\n      {{x41300000 x43170000}}\n      {{x41300000 x4404c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42e00000 x44030000 x3cf0000d}\n       {x42f80000 x44014000 x3cc80014}}}\n     {t\n      {{x41300000 x42ec0000}}\n      {{x41300000 x44022000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42b40000 x43f58000 x3ccffff3}\n       {x42aa0000 x43fe0000 x3db00000}\n       {x42680000 x440f0000 x3e860008}\n       {x42480000 x4412c000 x3ed28006}}}\n     {t\n      {{x41300000 x428d8000}}\n      {{x41300000 x4406e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a10000 x4442c000 x3d04000a}\n       {x43a10000 x4443c000 x3d180007}\n       {x43a00000 x44494000 x3ed1800a}\n       {x43a30000 x444f0000 x3eec0011}}}\n     {t\n      {{x41300000 x43a14000}}\n      {{x41300000 x4447b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44278000 x4430c000 x3d600000}\n       {x4428c000 x444dc000 x3e3a0019}\n       {x4427c000 x444dc000 x3c800000}}}\n     {t\n      {{x41300000 x44280000}}\n      {{x41300000 x44441550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441f4000 x4439c000 x3d33fffd}\n       {x44230000 x4442c000 x3e5afff3}\n       {x4423c000 x44474000 x3ed77ff1}}}\n     {t\n      {{x41300000 x44220000}}\n      {{x41300000 x44414000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44578000 x441c8000 x3d7bfff6}\n       {x44580000 x4429c000 x3e2c0011}\n       {x4455c000 x4431c000 x3ee00000}}}\n     {t\n      {{x41300000 x44571550}}\n      {{x41300000 x44280000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44554000 x441c8000 x3d2c0003}\n       {x4454c000 x44204000 x3e25000d}\n       {x4456c000 x442e4000 x3efd7ffa}\n       {x44564000 x44324000 x3ed3ffef}}}\n     {t\n      {{x41300000 x4455c000}}\n      {{x41300000 x44275000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44554000 x44204000 x3d180007}\n       {x44554000 x4420c000 x3e1afff3}\n       {x44588000 x442b0000 x3e99800a}\n       {x44578000 x442c0000 x3be00005}}}\n     {t\n      {{x41300000 x4456a000}}\n      {{x41300000 x44260000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44804000 x443b4000 x3d30000d}\n       {x44808000 x443d0000 x3d44000a}\n       {x44804000 x443e4000 x3ecb8002}}}\n     {t\n      {{x41300000 x44805571}}\n      {{x41300000 x443cd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4475c000 x44258000 x3dd80022}\n       {x44720000 x442e8000 x3e8e0008}}}\n     {t\n      {{x41300000 x4473e000}}\n      {{x41300000 x442a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44824000 x44258000 x3d33fffd}\n       {x44836000 x442b0000 x3d64000a}}}\n     {t\n      {{x41300000 x4482d000}}\n      {{x41300000 x44284000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44820000 x441ec000 x3d5bfff6}\n       {x44820000 x44220000 x3e65000d}\n       {x4482c000 x4429c000 x3eff0004}\n       {x4482c000 x442c4000 x3f09a006}\n       {x4482c000 x442c0000 0}}}\n     {t\n      {{x41300000 x44827333}}\n      {{x41300000 x4426f333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4481e000 x44234000 x3d13fffd}\n       {x44820000 x4423c000 x3d53fffd}\n       {x44820000 x44254000 x3ecf0004}\n       {x44820000 x44260000 x3f071fff}\n       {x44824000 x44284000 x3f0aa002}\n       {x44832000 x442f8000 x3f0c6003}\n       {x44832000 x44308000 x3e88fffc}}}\n     {t\n      {{x41300000 x448256b8}}\n      {{x41300000 x44285b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447d4000 x441c8000 x3d64000a}\n       {x44804000 x44294000 x3e3a0019}\n       {x44808000 x44308000 x3f11a006}\n       {x4480c000 x44314000 x3eb28006}}}\n     {t\n      {{x41300000 x44800800}}\n      {{x41300000 x4429e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f16000 x441e0000 x3dcc0003}\n       {x44f16000 x44220000 x3e8e7ff6}\n       {x44f10000 x44260000 x3ee38002}}}\n     {t\n      {{x41300000 x44f14000}}\n      {{x41300000 x44220000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f46000 x44038000 x3c800000}\n       {x44f42000 x4404c000 x3d27fff9}\n       {x44f3e000 x44068000 x3ee0fffc}\n       {x44f3e000 x44124000 x3f041ffb}\n       {x44f38000 x4417c000 x3eee7ff6}}}\n     {t\n      {{x41300000 x44f3f333}}\n      {{x41300000 x440b599a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f30000 x433b0000 x3c8ffff3}\n       {x44f34000 x43420000 x3d0ffff3}\n       {x44f28000 x436c0000 x3eda8006}\n       {x44f1a000 x43928000 x3efe7ff6}\n       {x44f16000 x43990000 x3eaf7ff1}}}\n     {t\n      {{x41300000 x44f2599a}}\n      {{x41300000 x43733333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2c000 x43480000 x3d860002}\n       {x44f2c000 x435d0000 x3e6cffeb}\n       {x44f30000 x437c0000 x3efa8006}\n       {x44f50000 x43958000 x3f05dffc}\n       {x44f54000 x439f8000 x3f0a5ffa}\n       {x44f50000 x439e8000 0}}}\n     {t\n      {{x41300000 x44f3f571}}\n      {{x41300000 x43860000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4439c000 x43580000 x3ed57ffa}\n       {x44324000 x43990000 x3edafff3}}}\n     {t\n      {{x41300000 x44360000}}\n      {{x41300000 x43828000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44420000 x434d0000 x3df5ffe7}\n       {x44420000 x43910000 x3ead7ffa}\n       {x44408000 x43920000 0}}}\n     {t\n      {{x41300000 x44418000}}\n      {{x41300000 x43832aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44658000 x41c80000 x3d180007}\n       {x44644000 x41f80000 x3d3bfff6}\n       {x44634000 x42180000 x3e1c0011}\n       {x44624000 x42820000 x3e770004}\n       {x44608000 x42c20000 x3edafff3}}}\n     {t\n      {{x41300000 x44632666}}\n      {{x41300000 x424ccccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4480e000 x426c0000 x3ce0001b}\n       {x44808000 x429e0000 x3d33fffd}\n       {x447dc000 x43020000 x3edc0011}\n       {x447dc000 x43070000 x3d93fffd}}}\n     {t\n      {{x41300000 x447f9000}}\n      {{x41300000 x42c98000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44936000 x43650000 x3d180007}\n       {x44936000 x43660000 x3e530015}\n       {x4492e000 x43a00000 x3ea9fff8}}}\n     {t\n      {{x41300000 x44933571}}\n      {{x41300000 x4381d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449f4000 x433b0000 x3cb0000d}\n       {x449ee000 x433d0000 x3d33fffd}\n       {x449e2000 x43420000 x3ecd7ffa}\n       {x449d0000 x438b8000 x3ef8fffc}\n       {x449e2000 x439b0000 x3f022004}}}\n     {t\n      {{x41300000 x449e4666}}\n      {{x41300000 x4367cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b2a000 x42200000 x3d9c0003}\n       {x44b02000 x42d00000 x3e18fffc}\n       {x44ad8000 x43100000 x3e8f7ff1}}}\n     {t\n      {{x41300000 x44b01571}}\n      {{x41300000 x42c00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bde000 x42100000 x3d13fffd}\n       {x44bbe000 x42940000 x3db9fffe}\n       {x44bb6000 x43020000 x3f04e001}\n       {x44bb4000 x43000000 0}}}\n     {t\n      {{x41300000 x44bc1800}}\n      {{x41300000 x42b80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d02000 x430c0000 x3cf7ffec}\n       {x44d02000 x43140000 x3d1bfff6}\n       {x44d06000 x43140000 x3e99800a}\n       {x44ce8000 x43440000 x3efa8006}\n       {x44cd4000 x436e0000 x3f0ddffc}\n       {x44ccc000 x43800000 x3e3cffeb}}}\n     {t\n      {{x41300000 x44ceda8f}}\n      {{x41300000 x433baac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f3a000 x445f4000 x3ede0008}\n       {x44f5e000 x44690000 x3ef9800a}}}\n     {t\n      {{x41300000 x44f4c000}}\n      {{x41300000 x44642000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ede000 x44658000 x3d67fff9}\n       {x44ed6000 x44668000 x3e170004}\n       {x44ed2000 x446cc000 x3f106003}\n       {x44ede000 x446f0000 x3f12a002}}}\n     {t\n      {{x41300000 x44ed9000}}\n      {{x41300000 x4469f000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e4e000 x443fc000 x3d24000a}\n       {x44e42000 x44404000 x3e15ffe7}\n       {x44e30000 x444e0000 x3f041ffb}\n       {x44e30000 x44524000 x3f155ffe}}}\n     {t\n      {{x41300000 x44e3c000}}\n      {{x41300000 x44481000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d54000 x444bc000 x3d4c0003}\n       {x44d40000 x4454c000 x3d67fff9}\n       {x44d54000 x44650000 x3f181ffb}\n       {x44d58000 x4467c000 x3f041ffb}}}\n     {t\n      {{x41300000 x44d50000}}\n      {{x41300000 x445b5000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e80000 x43910000 x3d580007}\n       {x41d80000 x439b0000 x3e75000d}\n       {x42000000 x43a58000 x3ecd7ffa}}}\n     {t\n      {{x41300000 x41eaaa99}}\n      {{x41300000 x439b2aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438d8000 x42aa0000 x3d53fffd}\n       {x438e0000 x42b80000 x3e88fffc}\n       {x43900000 x42d40000 x3ef1800a}\n       {x43920000 x42e20000 x3e070004}}}\n     {t\n      {{x41300000 x438f6000}}\n      {{x41300000 x42c60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43300000 x43660000 x3d4c0003}\n       {x432f0000 x436e0000 x3e75ffe7}\n       {x432f0000 x436f0000 x3ee1800a}\n       {x43300000 x437c0000 x3ef28006}\n       {x43340000 x43870000 x3f041ffb}\n       {x43340000 x43898000 x3e900000}}}\n     {t\n      {{x41300000 x43310000}}\n      {{x41300000 x437aaac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43300000 x437c0000 x3d1bfff6}\n       {x432f0000 x43808000 x3e4afff3}\n       {x43300000 x43838000 x3ec5000d}\n       {x432d0000 x43910000 x3f05a006}\n       {x432d0000 x43938000 x3eaa8006}}}\n     {t\n      {{x41300000 x432e999a}}\n      {{x41300000 x4387b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41800000 x44038000 x3d780007}\n       {x41600000 x4403c000 x3e33ffef}\n       {x41500000 x44044000 x3e9b8002}\n       {x41100000 x440c0000 x3eb9fff8}\n       {x41300000 x4416c000 x3ef5000d}}}\n     {t\n      {{x41300000 x4149999a}}\n      {{x41300000 x44094000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431d0000 x43e30000 x3d13fffd}\n       {x43170000 x43ea0000 x3e61fff8}\n       {x431e0000 x43f78000 x3f0a5ffa}\n       {x431d0000 x44030000 x3f0ddffc}\n       {x43190000 x44030000 0}}}\n     {t\n      {{x41300000 x431b3333}}\n      {{x41300000 x43f68000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43710000 x43920000 x3d33fffd}\n       {x43710000 x43968000 x3e6effe3}\n       {x436e0000 x43ad8000 x3f092008}\n       {x436c0000 x43b88000 x3f0b9ffd}\n       {x436c0000 x43b78000 0}}}\n     {t\n      {{x41300000 x436e6666}}\n      {{x41300000 x43a7999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44044000 x42d80000 x3dbdfffb}\n       {x44014000 x430e0000 x3e8d000d}}}\n     {t\n      {{x41300000 x4402c000}}\n      {{x41300000 x42fa0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ec8000 x42e60000 x3d200000}\n       {x43e90000 x42fc0000 x3e55000d}\n       {x43e58000 x43190000 x3ef70004}\n       {x43e68000 x431e0000 x3e9d000d}}}\n     {t\n      {{x41300000 x43e86000}}\n      {{x41300000 x430a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445f4000 x43390000 x3d27fff9}\n       {x445dc000 x43560000 x3e48fffc}}}\n     {t\n      {{x41300000 x445e8000}}\n      {{x41300000 x43478000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447d4000 x43848000 x3ca7fff9}\n       {x447d4000 x43850000 x3d1bfff6}\n       {x447dc000 x43870000 x3ecd7ffa}\n       {x447c0000 x43a48000 x3f0a2004}\n       {x447d0000 x43b18000 x3f125ffa}\n       {x447c8000 x43b18000 x3d83fffd}}}\n     {t\n      {{x41300000 x447cf51f}}\n      {{x41300000 x43995560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448c2000 x43c98000 x3d0ffff3}\n       {x448b8000 x43c98000 x3df80022}\n       {x448b4000 x43c98000 x3d8dfffb}}}\n     {t\n      {{x41300000 x448ba000}}\n      {{x41300000 x43c98000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443d8000 x43aa0000 x3d0ffff3}\n       {x443e4000 x43b18000 x3e2c0011}\n       {x443ec000 x43bb0000 x3eec7ffe}\n       {x443e4000 x43be0000 x3da7fff9}}}\n     {t\n      {{x41300000 x443e3000}}\n      {{x41300000 x43b52000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4424c000 x43eb0000 x3d0c0003}\n       {x4424c000 x43ec0000 x3d4c0003}\n       {x44244000 x43fc0000 x3eff0004}\n       {x4423c000 x43ff8000 x3ed70004}}}\n     {t\n      {{x41300000 x44246000}}\n      {{x41300000 x43f4a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443ec000 x43f58000 x3cb0000d}\n       {x443ec000 x43f50000 x3d04000a}\n       {x443f4000 x43fe8000 x3d0ffff3}\n       {x443f4000 x44070000 x3f0a2004}\n       {x443f4000 x44080000 x3e90800f}}}\n     {t\n      {{x41300000 x443f0ccd}}\n      {{x41300000 x4400b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44330000 x43ed8000 x3d3bfff6}\n       {x44340000 x43f30000 x3e98fffc}\n       {x44374000 x43fe8000 x3f012008}\n       {x443a4000 x44060000 x3f0d2008}\n       {x443a4000 x44068000 x3d8c0003}}}\n     {t\n      {{x41300000 x4436f333}}\n      {{x41300000 x43fe6666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442f0000 x43f58000 x3d13fffd}\n       {x442f0000 x43f68000 x3d580007}\n       {x442f8000 x44018000 x3f05dffc}\n       {x44338000 x4409c000 x3f186003}\n       {x44330000 x4409c000 x3eb1800a}}}\n     {t\n      {{x41300000 x4430cccd}}\n      {{x41300000 x44023333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44278000 x44108000 x3dc7fff9}\n       {x44278000 x4411c000 x3e9d7ffa}\n       {x44268000 x4417c000 x3edd000d}\n       {x44260000 x44190000 x3eea8006}}}\n     {t\n      {{x41300000 x4426e000}}\n      {{x41300000 x4414c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4430c000 x44284000 x3d580007}\n       {x4430c000 x442f0000 x3e75000d}\n       {x442f8000 x44374000 x3f065ffa}}}\n     {t\n      {{x41300000 x44305550}}\n      {{x41300000 x442f8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44294000 x442e8000 x3d3bfff6}\n       {x4428c000 x4430c000 x3e41001d}\n       {x44284000 x44314000 x3ee5000d}\n       {x4428c000 x443c0000 x3ef57ffa}\n       {x442a0000 x44420000 x3f11dffc}\n       {x442a0000 x44418000 x3d000000}}}\n     {t\n      {{x41300000 x44292ab0}}\n      {{x41300000 x44380000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444a8000 x442b8000 x3d900000}\n       {x44498000 x44324000 x3ea1800a}\n       {x44494000 x4436c000 x3eee7ff6}}}\n     {t\n      {{x41300000 x4449c000}}\n      {{x41300000 x44318000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44564000 x442f0000 x3d13fffd}\n       {x44570000 x44338000 x3e28fffc}\n       {x44570000 x44374000 x3ee77ff1}\n       {x4456c000 x44378000 0}}}\n     {t\n      {{x41300000 x4456c000}}\n      {{x41300000 x44345000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44620000 x445e4000 x3d3bfff6}\n       {x44608000 x4468c000 x3dc60002}}}\n     {t\n      {{x41300000 x44614000}}\n      {{x41300000 x44638000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44620000 x44594000 x3d2c0003}\n       {x44620000 x4459c000 x3e61fff8}\n       {x44620000 x445a4000 x3eb80000}\n       {x44610000 x44648000 x3ee2fff3}\n       {x44624000 x446e8000 x3f22dff8}\n       {x44620000 x446e0000 0}}}\n     {t\n      {{x41300000 x4461e000}}\n      {{x41300000 x44626000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44634000 x4459c000 x3cf0000d}\n       {x4463c000 x445b4000 x3d33fffd}\n       {x4462c000 x445d8000 x3f006003}\n       {x4463c000 x4467c000 x3f1da006}\n       {x44650000 x44684000 x3ee28006}}}\n     {t\n      {{x41300000 x4463b333}}\n      {{x41300000 x44608000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448b0000 x445c8000 x3d600000}\n       {x448b4000 x445d0000 x3e90800f}\n       {x448b4000 x4462c000 x3ebc7ffe}\n       {x448b0000 x446cc000 x3f115ffe}\n       {x448a6000 x446f0000 x3f13e005}}}\n     {t\n      {{x41300000 x448af99a}}\n      {{x41300000 x4464cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44740000 x44570000 x3d27fff9}\n       {x44738000 x44594000 x3e31001d}\n       {x44728000 x445f4000 x3f022004}\n       {x44754000 x446cc000 x3f15dffc}\n       {x44764000 x446e0000 x3e68fffc}}}\n     {t\n      {{x41300000 x44744ccd}}\n      {{x41300000 x44620ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44618000 x4459c000 x3ca7fff9}\n       {x44610000 x445b4000 x3d1bfff6}\n       {x44618000 x445f4000 x3ed47ffe}\n       {x44608000 x44658000 x3f1e2004}\n       {x445f4000 x44704000 x3f25dffc}\n       {x445fc000 x44744000 x3f252008}\n       {x44600000 x44738000 x3cd80007}}}\n     {t\n      {{x41300000 x44608000}}\n      {{x41300000 x44671b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44820000 x44364000 x3d70000d}\n       {x44820000 x44374000 x3e9f0004}\n       {x44812000 x443c8000 x3f065ffa}\n       {x44808000 x44460000 x3f1ce001}\n       {x44800000 x444b0000 x3f1ea002}}}\n     {t\n      {{x41300000 x44812000}}\n      {{x41300000 x443f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447c8000 x441d0000 x3cf7ffec}\n       {x447b8000 x441e8000 x3d30000d}\n       {x447b0000 x441fc000 x3edb8002}\n       {x447a4000 x442a0000 x3f09dffc}\n       {x44794000 x44340000 x3f1da006}\n       {x4478c000 x44378000 x3f209ff9}\n       {x44794000 x44378000 x3f1c6003}\n       {x4478c000 x44378000 x3f176007}\n       {x4478c000 x4436c000 x3ebe0008}}}\n     {t\n      {{x41300000 x447a0000}}\n      {{x41300000 x442d2ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x432c0000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4481e000 x441a4000 x3d580007}\n       {x44800000 x442b8000 x3e870004}\n       {x44800000 x4430c000 x3f11a006}}}\n     {t\n      {{x41300000 x4480a000}}\n      {{x41300000 x44278000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42b80000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447d4000 x4416c000 x3cb7ffec}\n       {x447dc000 x44190000 x3d200000}\n       {x447c8000 x441d0000 x3ef1800a}\n       {x447b0000 x442c4000 x3f0a2004}\n       {x447b8000 x44350000 x3f171fff}\n       {x447b8000 x44380000 x3f19dffc}\n       {x447b8000 x44390000 x3f149ff9}\n       {x447b0000 x44390000 x3d7bfff6}}}\n     {t\n      {{x41300000 x447c0000}}\n      {{x41300000 x442b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42b80000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445f4000 x44218000 x3d27fff9}\n       {x445f4000 x442b0000 x3e847ffe}\n       {x445f4000 x4432c000 x3f21dffc}\n       {x445dc000 x44348000 x3f206003}}}\n     {t\n      {{x41300000 x445ee000}}\n      {{x41300000 x442cf000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42b80000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Smear1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4456c000 x44158000 x3d04000a}\n       {x4456c000 x4416c000 x3d380007}\n       {x4455c000 x441d8000 x3ef77ff1}\n       {x44548000 x44234000 x3f155ffe}\n       {x44530000 x44258000 x3f179ffd}\n       {x44530000 x44260000 x3da3fffd}}}\n     {t\n      {{x41300000 x4454f550}}\n      {{x41300000 x441ec000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 bs x42b80000 bt 1 bu 1 src 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 ep1 1 tt x41b00000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush437 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a2e000 x439e8000 x3ed9800a}\n       {x44a32000 x439e8000 x3ee1fff8}}}\n     {t\n      {{x41300000 x44a30000}}\n      {{x41300000 x439e8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush436 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448a6000 x439b8000 x3d000000}\n       {x448a6000 x439c8000 x3d33fffd}}}\n     {t\n      {{x41300000 x448a6000}}\n      {{x41300000 x439c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush435 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4487a000 x43a40000 x3d6c0003}\n       {x4488a000 x43a48000 x3da20005}\n       {x44894000 x43a58000 x3ea3ffef}\n       {x44898000 x43a58000 x3edc7ffe}\n       {x4489c000 x43a48000 x3ee70004}\n       {x4489c000 x43a20000 x3ee9fff8}\n       {x4489c000 x439f8000 x3eec0011}\n       {x4489c000 x439c8000 x3ee3ffef}\n       {x44898000 x43990000 x3eba8006}\n       {x4489c000 x43980000 0}}}\n     {t\n      {{x41300000 x44895333}}\n      {{x41300000 x43a0b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush434 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44886000 x41d80000 x3d200000}\n       {x4488c000 x41d80000 x3e2c0011}\n       {x44890000 x41d80000 x3ec3ffef}\n       {x44894000 x41d80000 x3ede7ff6}\n       {x44890000 x41c80000 x3ef8800f}\n       {x4488a000 x41b00000 x3eb80000}\n       {x44882000 x41b00000 0}}}\n     {t\n      {{x41300000 x4488bb85}}\n      {{x41300000 x41ca491d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush433 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44836000 x42980000 x3d27fff9}\n       {x44832000 x42980000 x3e070004}\n       {x44836000 x42980000 x3e9a8006}\n       {x44836000 x42940000 x3ea1fff8}\n       {x44832000 x42900000 x3e4effe3}}}\n     {t\n      {{x41300000 x44834666}}\n      {{x41300000 x4295999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush432 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44364000 x41100000 x3cb7ffec}\n       {x4435c000 x40e00000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44360000}}\n      {{x41300000 x41000000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush431 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44470000 x43190000 x3d67fff9}\n       {x4447c000 x43190000 x3ea1fff8}\n       {x4447c000 x43170000 x3f071fff}\n       {x44474000 x43150000 0}}}\n     {t\n      {{x41300000 x44477000}}\n      {{x41300000 x43178000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush430 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44410000 x42a20000 x3d180007}\n       {x44420000 x42a20000 x3e18fffc}\n       {x44420000 x429e0000 x3e9f7ff1}\n       {x44420000 x429a0000 x3ea38002}\n       {x44428000 x428c0000 x3ea47ffe}\n       {x44428000 x42940000 x3ce7fff9}}}\n     {t\n      {{x41300000 x44420000}}\n      {{x41300000 x429a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush429 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44548000 x43340000 x3e730015}\n       {x4454c000 x43380000 x3eb38002}\n       {x44554000 x43390000 x3f022004}\n       {x4454c000 x43390000 x3ee28006}}}\n     {t\n      {{x41300000 x4454d000}}\n      {{x41300000 x43378000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush428 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444dc000 x42c60000 x3d04000a}\n       {x444dc000 x42be0000 x3d2c0003}\n       {x444e0000 x42ca0000 x3ea9800a}\n       {x444e0000 x42ce0000 x3eed000d}\n       {x444dc000 x42d40000 x3edf7ff1}\n       {x444dc000 x42dc0000 x3cd80007}\n       {x444dc000 x42e00000 0}}}\n     {t\n      {{x41300000 x444dd24e}}\n      {{x41300000 x42cf6d91}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush427 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44608000 x42000000 x3d13fffd}\n       {x44608000 x42080000 x3e05ffe7}\n       {x44610000 x42100000 x3ecd7ffa}\n       {x44618000 x42100000 x3eb57ffa}\n       {x44608000 x42100000 x3e88800f}\n       {x44600000 x42100000 x3c60001b}\n       {x445f4000 x42180000 0}}}\n     {t\n      {{x41300000 x446076d9}}\n      {{x41300000 x420db6e3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush426 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44634000 x43220000 x3d0ffff3}\n       {x44634000 x431b0000 x3e8f7ff1}}}\n     {t\n      {{x41300000 x44634000}}\n      {{x41300000 x431e8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush425 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44634000 x43560000 x3cf0000d}\n       {x4463c000 x43560000 x3d47fff9}\n       {x44644000 x435a0000 x3e4afff3}\n       {x44648000 x435a0000 x3e9d7ffa}\n       {x44648000 x435c0000 x3eba8006}\n       {x44644000 x435a0000 x3ec57ffa}\n       {x44648000 x435a0000 x3ebe7ff6}\n       {x44650000 x435a0000 x3e95000d}\n       {x44650000 x43580000 x3b800000}}}\n     {t\n      {{x41300000 x44645550}}\n      {{x41300000 x43591c6a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush424 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44634000 x439d8000 x3c9fffe5}\n       {x44658000 x43958000 x3d4ffff3}\n       {x44648000 x43920000 x3ec47ffe}\n       {x4463c000 x43900000 x3ec0800f}}}\n     {t\n      {{x41300000 x44644000}}\n      {{x41300000 x43954000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush423 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445f4000 x43da8000 x3cf7ffec}\n       {x445f4000 x43db8000 x3d1bfff6}\n       {x44600000 x43db8000 x3d8c0003}\n       {x44600000 x43dc8000 x3e31001d}\n       {x44608000 x43dc8000 x3e63ffef}\n       {x44610000 x43db8000 x3e867ff6}\n       {x44610000 x43da8000 x3e960008}\n       {x44618000 x43d80000 x3e98fffc}\n       {x44618000 x43d70000 x3e970004}\n       {x44618000 x43d58000 x3e91800a}\n       {x44618000 x43d10000 x3e88fffc}\n       {x44618000 x43ce0000 x3e770004}\n       {x44620000 x43cc8000 x3e78fffc}\n       {x44620000 x43c98000 x3e7a0019}\n       {x44620000 x43c50000 x3e7c0011}\n       {x44620000 x43c38000 x3e7e0008}\n       {x44620000 x43c18000 x3e800000}\n       {x44620000 x43bf8000 x3e828006}\n       {x44624000 x43bf0000 x3e8d000d}\n       {x44624000 x43be0000 x3e92fff3}\n       {x44624000 x43bc0000 x3e9a8006}\n       {x44624000 x43ba8000 x3ea38002}\n       {x44624000 x43b98000 x3ea47ffe}\n       {x44624000 x43b68000 x3ea5000d}\n       {x44624000 x43b50000 x3ea5000d}\n       {x44624000 x43b40000 x3ea38002}\n       {x44624000 x43b20000 x3ea0fffc}\n       {x4462c000 x43b18000 x3e9f0004}\n       {x4462c000 x43b08000 x3ea00000}\n       {x44634000 x43ad8000 x3ea0800f}\n       {x44634000 x43ac0000 x3ea1800a}\n       {x4462c000 x43aa0000 x3ea0fffc}\n       {x44624000 x43a78000 x3e960008}\n       {x44624000 x43a58000 x3da20005}\n       {x44620000 x43a48000 0}}}\n     {t\n      {{x41300000 x4461c581}}\n      {{x41300000 x43c28b02}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush422 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44878000 x43d28000 x3cc00000}\n       {x4487a000 x43d38000 x3d0c0003}\n       {x4487a000 x43d48000 x3eb8fffc}\n       {x4487a000 x43d38000 x3ef70004}\n       {x4487e000 x43d38000 x3ef8800f}\n       {x4487a000 x43d10000 x3ef8800f}\n       {x4487a000 x43cf0000 x3ef47ffe}\n       {x44878000 x43ce0000 x3ef38002}\n       {x4487a000 x43ce0000 x3ef77ff1}\n       {x4487a000 x43cf0000 x3f006003}\n       {x4487a000 x43d18000 x3f065ffa}\n       {x4487a000 x43d38000 x3f0edff8}\n       {x4487e000 x43d58000 x3f11a006}\n       {x4487e000 x43d60000 x3f131fff}\n       {x4487a000 x43d70000 x3f146003}\n       {x4487a000 x43d80000 x3f149ff9}\n       {x4487a000 x43d70000 x3f14e001}\n       {x4487e000 x43d70000 x3f155ffe}\n       {x4487e000 x43d60000 x3f155ffe}\n       {x44882000 x43d48000 x3f152008}\n       {x44886000 x43d28000 x3f13e005}\n       {x4488c000 x43cf0000 x3f11dffc}\n       {x44890000 x43cc8000 x3f0f6007}\n       {x44894000 x43ca8000 x3f0f9ffd}\n       {x4489c000 x43c70000 x3f0f9ffd}\n       {x4489e000 x43c60000 x3f0f6007}\n       {x448a2000 x43c50000 x3f0edff8}\n       {x448a6000 x43c50000 x3f0f1fff}\n       {x448aa000 x43c40000 x3f106003}\n       {x448b0000 x43c40000 x3f10e001}\n       {x448b4000 x43c38000 x3f106003}\n       {x448bc000 x43c18000 x3f11dffc}\n       {x448d2000 x43be0000 x3f131fff}\n       {x448dc000 x43bc0000 x3f12a002}\n       {x448e4000 x43ba8000 x3f10e001}\n       {x448ea000 x43ba8000 x3f02dff8}\n       {x448e6000 x43bb0000 0}}}\n     {t\n      {{x41300000 x44894dc3}}\n      {{x41300000 x43cc67cf}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush421 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44808000 x44380000 x3cf0000d}\n       {x44804000 x44380000 x3dc60002}\n       {x44808000 x44380000 x3e11fff8}\n       {x4480c000 x44380000 x3e21fff8}\n       {x4480e000 x44380000 x3e3afff3}\n       {x44812000 x44380000 x3e3cffeb}\n       {x44812000 x44388000 x3e41001d}\n       {x44812000 x44380000 x3e470004}\n       {x4480e000 x44380000 x3e45000d}\n       {x44812000 x44380000 x3e43ffef}\n       {x44816000 x44380000 x3e51001d}\n       {x44816000 x44388000 x3e870004}\n       {x44816000 x44380000 x3e980000}\n       {x44812000 x44380000 x3e99fff8}\n       {x44812000 x44378000 x3e98fffc}\n       {x4481a000 x44374000 x3e957ffa}\n       {x4481e000 x44374000 x3e947ffe}\n       {x44824000 x44378000 x3e93ffef}\n       {x44828000 x44378000 x3e90fffc}\n       {x44828000 x44374000 x3dfc0011}}}\n     {t\n      {{x41300000 x448144cd}}\n      {{x41300000 x4437dccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush420 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44878000 x44600000 x3d0ffff3}\n       {x44886000 x44610000 x3dd40032}\n       {x448a6000 x44600000 x3eb0fffc}\n       {x448ae000 x445fc000 x3ebe0008}\n       {x448b8000 x445e4000 x3eaafff3}\n       {x448c0000 x445dc000 0}}}\n     {t\n      {{x41300000 x448a1a8f}}\n      {{x41300000 x445f7550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush419 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44944000 x445b4000 x3d44000a}\n       {x44948000 x445b8000 x3dc60002}\n       {x44944000 x445c0000 x3ec00000}\n       {x44944000 x445b8000 x3ed67ff6}}}\n     {t\n      {{x41300000 x44945000}}\n      {{x41300000 x445b9000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush418 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44968000 x444cc000 x3de00000}\n       {x44968000 x444c4000 x3e67ffde}\n       {x44964000 x444bc000 x3e967ff6}\n       {x44968000 x444c4000 x3e93ffef}}}\n     {t\n      {{x41300000 x44967000}}\n      {{x41300000 x444c4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush417 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4491c000 x444dc000 x3dcfffbd}\n       {x4491a000 x444dc000 x3df00043}\n       {x4491a000 x444e0000 x3e170004}\n       {x4491c000 x444e8000 x3e6a0019}\n       {x44920000 x444f0000 x3e6afff3}\n       {x44924000 x444f0000 x3e5c0011}\n       {x4492c000 x444f8000 x3e1c0011}\n       {x4492e000 x444f8000 x3d9c0003}\n       {x4492e000 x444f0000 0}}}\n     {t\n      {{x41300000 x44922a8f}}\n      {{x41300000 x444eaab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush416 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448ee000 x44340000 x3d960002}\n       {x448e6000 x44348000 x3e2e0008}\n       {x448e6000 x44340000 x3ec2fff3}\n       {x448e6000 x44338000 x3ec80000}\n       {x448e4000 x44330000 x3ec60008}\n       {x448dc000 x44314000 x3eb1fff8}\n       {x448d8000 x44308000 x3e130015}\n       {x448d8000 x442f8000 0}}}\n     {t\n      {{x41300000 x448e2000}}\n      {{x41300000 x44328800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush415 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44924000 x443c0000 x3df1fff8}\n       {x44928000 x443c0000 x3e4a0019}\n       {x44928000 x443c8000 x3e847ffe}\n       {x4492c000 x443d8000 x3e8d000d}}}\n     {t\n      {{x41300000 x44928000}}\n      {{x41300000 x443c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush414 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44932000 x4444c000 x3d30000d}\n       {x4493e000 x44450000 x3dd1fff8}\n       {x44944000 x44450000 x3df1fff8}\n       {x4493e000 x4444c000 x3ea0fffc}\n       {x4493a000 x4444c000 x3eaafff3}\n       {x44936000 x44444000 x3eaf0004}\n       {x44932000 x44444000 x3eb0fffc}\n       {x4492e000 x44444000 x3eb0fffc}\n       {x4492e000 x4444c000 x3eb0fffc}\n       {x44932000 x4444c000 x3ecf0004}\n       {x44936000 x4444c000 x3ea80000}\n       {x4493e000 x44444000 x3e01fff8}}}\n     {t\n      {{x41300000 x4493728f}}\n      {{x41300000 x4444a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush413 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2c000 x444cc000 x3d1bfff6}\n       {x44f34000 x444cc000 x3d53fffd}\n       {x44f38000 x444cc000 x3e8e7ff6}\n       {x44f3a000 x444c4000 x3eb70004}\n       {x44f42000 x444c4000 x3ee70004}\n       {x44f46000 x444c4000 x3e93ffef}}}\n     {t\n      {{x41300000 x44f39a8f}}\n      {{x41300000 x444c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush412 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f26000 x445d0000 x3c8ffff3}\n       {x44f28000 x445d0000 x3d6c0003}\n       {x44f30000 x445d0000 x3e98800f}\n       {x44f34000 x445dc000 x3ecf7ff1}\n       {x44f30000 x445ec000 x3edd7ffa}\n       {x44f30000 x445f4000 x3ed9800a}\n       {x44f38000 x445fc000 x3ed9fff8}\n       {x44f38000 x44600000 x3ede0008}\n       {x44f3a000 x44608000 x3ee57ffa}\n       {x44f38000 x44608000 x3eea8006}\n       {x44f34000 x44608000 x3ee8fffc}\n       {x44f30000 x44600000 x3e700000}}}\n     {t\n      {{x41300000 x44f32000}}\n      {{x41300000 x445f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush411 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eaa000 x44620000 x3d99fffe}\n       {x44eaa000 x44610000 x3d9c0003}}}\n     {t\n      {{x41300000 x44eaa000}}\n      {{x41300000 x44618000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush410 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e2c000 x44618000 x3c6fffd8}\n       {x44e50000 x44618000 x3d9dfffb}}}\n     {t\n      {{x41300000 x44e3e000}}\n      {{x41300000 x44618000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush409 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e22000 x4463c000 x3d200000}\n       {x44e1e000 x44634000 x3d70000d}\n       {x44e22000 x4462c000 x3e21001d}\n       {x44e26000 x4462c000 x3ee3ffef}\n       {x44e26000 x44624000 x3e27ffde}\n       {x44e26000 x44620000 x3b9ffffb}}}\n     {t\n      {{x41300000 x44e23571}}\n      {{x41300000 x4462cab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush408 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44de8000 x44720000 x3d64000a}\n       {x44dec000 x44720000 x3e200000}\n       {x44de8000 x44714000 x3ed8800f}\n       {x44de8000 x4470c000 x3ec47ffe}\n       {x44df4000 x44704000 x3eb0fffc}}}\n     {t\n      {{x41300000 x44deb333}}\n      {{x41300000 x44714000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush407 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dcc000 x44744000 x3cd80007}\n       {x44dec000 x4474c000 x3d64000a}\n       {x44df0000 x44744000 x3e91fff8}\n       {x44df0000 x44738000 x3e970004}\n       {x44de4000 x44728000 x3d27fff9}}}\n     {t\n      {{x41300000 x44de599a}}\n      {{x41300000 x4473d99a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush406 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dda000 x44794000 x3d7bfff6}\n       {x44dde000 x44794000 x3d8dfffb}}}\n     {t\n      {{x41300000 x44ddc000}}\n      {{x41300000 x44794000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush405 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d7c000 x447b0000 x3d73fffd}\n       {x44d92000 x44794000 x3da3fffd}}}\n     {t\n      {{x41300000 x44d87000}}\n      {{x41300000 x447a2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush404 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d1e000 x447b8000 x3d30000d}\n       {x44d26000 x447b0000 x3db20005}\n       {x44d30000 x4479c000 x3e5cffeb}\n       {x44d34000 x4479c000 x3e2cffeb}\n       {x44d38000 x44794000 0}}}\n     {t\n      {{x41300000 x44d2cccd}}\n      {{x41300000 x447a4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush403 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cd6000 x44770000 x3d900000}\n       {x44cd4000 x44770000 x3da60002}\n       {x44cd6000 x44770000 x3db00000}\n       {x44cd6000 x44778000 x3e1a0019}\n       {x44cda000 x44778000 x3e700000}\n       {x44cda000 x44780000 x3e8a8006}\n       {x44cde000 x44780000 x3e977ff1}\n       {x44cde000 x44788000 x3eac7ffe}\n       {x44ce2000 x44778000 x3ec0800f}\n       {x44ce2000 x44770000 x3ec28006}\n       {x44ce6000 x44764000 x3ec1fff8}\n       {x44ce8000 x44754000 x3ec0fffc}\n       {x44cf4000 x44730000 x3eb3ffef}\n       {x44cf8000 x4471c000 x3e3a0019}\n       {x44cfe000 x4470c000 x3e230015}\n       {x44d06000 x446fc000 x3dfc0011}}}\n     {t\n      {{x41300000 x44ce4800}}\n      {{x41300000 x4475bc08}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush402 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cd0000 x445a4000 x3d7bfff6}\n       {x44cd4000 x445ac000 x3d67fff9}\n       {x44cda000 x445ac000 x3ea5000d}\n       {x44cde000 x445ac000 0}}}\n     {t\n      {{x41300000 x44cd7000}}\n      {{x41300000 x445aa000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush401 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d34000 x444e8000 x3d5bfff6}\n       {x44d38000 x444f0000 x3d73fffd}\n       {x44d42000 x444f8000 x3e3e0008}\n       {x44d46000 x444f8000 x3e7c0011}\n       {x44d4a000 x44500000 x3e81fff8}\n       {x44d4e000 x44504000 x3e80800f}\n       {x44d52000 x4450c000 x3e15ffe7}\n       {x44d52000 x44514000 x3d89fffe}}}\n     {t\n      {{x41300000 x44d46000}}\n      {{x41300000 x444fd800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush400 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c72000 x44474000 x3d4c0003}\n       {x44c72000 x4447c000 x3d7bfff6}\n       {x44c72000 x44474000 x3ece0008}}}\n     {t\n      {{x41300000 x44c72000}}\n      {{x41300000 x44476ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush399 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bc6000 x444b0000 x3d8c0003}\n       {x44bc8000 x444b0000 x3e95000d}\n       {x44bc6000 x444a8000 x3eda8006}\n       {x44bc8000 x444a8000 x3ee9800a}\n       {x44bd4000 x444a8000 x3ee9800a}\n       {x44bd8000 x444a8000 x3ee8fffc}\n       {x44bda000 x444a8000 x3ee9fff8}\n       {x44bda000 x444a0000 x3ed1800a}\n       {x44bda000 x44498000 x3e33ffef}\n       {x44bda000 x44494000 0}}}\n     {t\n      {{x41300000 x44bd199a}}\n      {{x41300000 x444a5333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush398 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b8c000 x443e0000 x3d6c0003}\n       {x44b88000 x443e0000 x3e3cffeb}\n       {x44b88000 x443e4000 x3eb2fff3}\n       {x44b8c000 x443ec000 x3e23ffef}}}\n     {t\n      {{x41300000 x44b8a000}}\n      {{x41300000 x443e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush397 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a90000 x44484000 x3ce7fff9}\n       {x44a8c000 x44484000 x3d860002}\n       {x44a88000 x4448c000 x3d920005}\n       {x44a88000 x44494000 x3da00000}\n       {x44a8c000 x44494000 x3db20005}\n       {x44a88000 x44494000 x3ea1fff8}\n       {x44a84000 x44494000 x3ea38002}\n       {x44a88000 x44494000 x3ea28006}\n       {x44a8c000 x44494000 x3ea1800a}\n       {x44a90000 x4448c000 0}}}\n     {t\n      {{x41300000 x44a8a666}}\n      {{x41300000 x4448f333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush396 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b96000 x44174000 x3d380007}\n       {x44b92000 x4416c000 x3e630015}\n       {x44b96000 x4415c000 x3e570004}\n       {x44b9a000 x44150000 x3e8b8002}\n       {x44b9e000 x44150000 x3ec00000}\n       {x44ba2000 x44150000 x3d400000}}}\n     {t\n      {{x41300000 x44b99571}}\n      {{x41300000 x4415cab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush395 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b38000 x44188000 x3d0c0003}\n       {x44b3c000 x44188000 x3d4c0003}\n       {x44b44000 x44188000 x3e80800f}\n       {x44b48000 x44180000 x3ef00000}\n       {x44b48000 x4417c000 x3ea9800a}}}\n     {t\n      {{x41300000 x44b4199a}}\n      {{x41300000 x44184000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush394 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a64000 x442f0000 x3d73fffd}\n       {x44a60000 x442f0000 x3d960002}\n       {x44a60000 x442f8000 x3e25000d}\n       {x44a64000 x442f8000 x3e938002}\n       {x44a64000 x442f0000 x3ebe7ff6}\n       {x44a60000 x442f0000 x3ebe0008}\n       {x44a60000 x442e8000 x3ebb8002}\n       {x44a64000 x442e8000 x3eb9800a}\n       {x44a68000 x442e8000 x3eb8800f}\n       {x44a68000 x442f0000 x3eb8800f}\n       {x44a68000 x442e8000 x3ebf7ff1}\n       {x44a68000 x442e4000 x3ebafff3}\n       {x44a6c000 x442e4000 x3ea2fff3}\n       {x44a72000 x442dc000 x3e430015}}}\n     {t\n      {{x41300000 x44a65948}}\n      {{x41300000 x442ebb75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush393 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aac000 x441f4000 x3d800000}\n       {x44aa8000 x441f4000 x3db9fffe}\n       {x44aac000 x441f4000 x3ec1800a}\n       {x44ab0000 x441f4000 x3edafff3}\n       {x44ab4000 x441f4000 x3edf7ff1}\n       {x44ab8000 x441f4000 x3ee28006}\n       {x44ab8000 x441e8000 x3ee3ffef}\n       {x44aba000 x441e8000 x3ee2fff3}\n       {x44ab8000 x441e0000 x3edf0004}\n       {x44aba000 x441e0000 x3ed9800a}\n       {x44abe000 x441d8000 x3edafff3}\n       {x44ac2000 x441d8000 x3edc7ffe}\n       {x44ac6000 x441d0000 x3edd000d}\n       {x44aca000 x441d0000 x3ed57ffa}\n       {x44acc000 x441d0000 x3eb47ffe}\n       {x44ad0000 x441d0000 x3e130015}}}\n     {t\n      {{x41300000 x44abac29}}\n      {{x41300000 x441e3800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush392 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aa2000 x44150000 x3db20005}\n       {x44aa6000 x4415c000 x3e2cffeb}\n       {x44aa2000 x4415c000 x3ef00000}\n       {x44aa6000 x4415c000 0}}}\n     {t\n      {{x41300000 x44aa4000}}\n      {{x41300000 x44159000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush391 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a4e000 x440ec000 x3d44000a}\n       {x44a48000 x440ec000 x3da7fff9}\n       {x44a4e000 x440d4000 x3ee0fffc}\n       {x44a60000 x440e4000 x3e01001d}}}\n     {t\n      {{x41300000 x44a51000}}\n      {{x41300000 x440e4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush390 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43290000 x42900000 x3d7bfff6}\n       {x43410000 x42500000 x3e78fffc}}}\n     {t\n      {{x41300000 x43350000}}\n      {{x41300000 x42780000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush389 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ea0000 x42ee0000 x3d920005}\n       {x43020000 x42e00000 x3e857ffa}\n       {x430e0000 x42c20000 x3e9afff3}\n       {x431e0000 x42900000 x3e5a0019}}}\n     {t\n      {{x41300000 x4308c000}}\n      {{x41300000 x42c80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush388 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x426c0000 x430b0000 x3d53fffd}\n       {x42980000 x43030000 x3e41001d}}}\n     {t\n      {{x41300000 x42870000}}\n      {{x41300000 x43070000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush387 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x43150000 x3ce0001b}\n       {x42180000 x43150000 x3d33fffd}\n       {x42200000 x43150000 x3eb1800a}\n       {x42440000 x43100000 x3edafff3}}}\n     {t\n      {{x41300000 x42230000}}\n      {{x41300000 x4313c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush386 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42d80000 x436e0000 x3ca7fff9}\n       {x42d80000 x43680000 0}}}\n     {t\n      {{x41300000 x42d80000}}\n      {{x41300000 x436b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush385 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439d8000 x4408c000 x3d27fff9}\n       {x439e8000 x44084000 x3ce0001b}}}\n     {t\n      {{x41300000 x439e0000}}\n      {{x41300000 x44088000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush384 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43970000 x44080000 x3d30000d}\n       {x439a0000 x44078000 x3d44000a}}}\n     {t\n      {{x41300000 x43988000}}\n      {{x41300000 x4407c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush383 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x438b8000 x44070000 x3d1bfff6}\n       {x438d8000 x44084000 x3d4ffff3}\n       {x438e0000 x44080000 x3d7bfff6}}}\n     {t\n      {{x41300000 x438d0000}}\n      {{x41300000 x4407c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush382 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43880000 x4404c000 x3d380007}\n       {x43890000 x4405c000 x3e0a0019}}}\n     {t\n      {{x41300000 x43888000}}\n      {{x41300000 x44054000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush381 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x436c0000 x44020000 x3c980007}\n       {x43710000 x44028000 x3cf0000d}\n       {x43818000 x44028000 x3d380007}\n       {x43818000 x44030000 0}}}\n     {t\n      {{x41300000 x4378c000}}\n      {{x41300000 x44028000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush380 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x432f0000 x4403c000 x3d30000d}\n       {x43460000 x44018000 x3d820005}}}\n     {t\n      {{x41300000 x433a8000}}\n      {{x41300000 x4402a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush379 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43220000 x4404c000 x3d960002}\n       {x43260000 x4404c000 x3d9dfffb}}}\n     {t\n      {{x41300000 x43240000}}\n      {{x41300000 x4404c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush378 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43090000 x439e8000 x3e4e0008}\n       {x43090000 x439f8000 x3eb38002}}}\n     {t\n      {{x41300000 x43090000}}\n      {{x41300000 x439f0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush377 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43920000 x43c18000 x3d87fff9}\n       {x43920000 x43c28000 x3e400000}\n       {x43928000 x43c28000 x3e99800a}}}\n     {t\n      {{x41300000 x43922aa0}}\n      {{x41300000 x43c22aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush376 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f40000 x437e0000 x3e25000d}}}\n     {t\n      {{x41300000 x42f40000}}\n      {{x41300000 x437e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush375 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42ea0000 x43910000 x3d7bfff6}\n       {x42e60000 x43900000 x3e33ffef}}}\n     {t\n      {{x41300000 x42e80000}}\n      {{x41300000 x43908000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush374 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437a0000 x43c18000 x3d83fffd}\n       {x43770000 x43c18000 x3e47ffde}}}\n     {t\n      {{x41300000 x43788000}}\n      {{x41300000 x43c18000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush373 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437a0000 x43ae8000 x3cf7ffec}\n       {x43800000 x43af8000 x3d600000}}}\n     {t\n      {{x41300000 x437d0000}}\n      {{x41300000 x43af0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush372 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x437e0000 x43b60000 x3d400000}\n       {x437e0000 x43b50000 x3d4c0003}\n       {x437e0000 x43b30000 x3d27fff9}}}\n     {t\n      {{x41300000 x437e0000}}\n      {{x41300000 x43b4aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush371 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x436f0000 x43b60000 x3db20005}\n       {x43710000 x43b98000 x3e3a0019}}}\n     {t\n      {{x41300000 x43700000}}\n      {{x41300000 x43b7c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush370 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x435d0000 x43a48000 x3cc80014}\n       {x43630000 x43a78000 x3d33fffd}}}\n     {t\n      {{x41300000 x43600000}}\n      {{x41300000 x43a60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush369 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43410000 x43a40000 x3d67fff9}\n       {x43460000 x43a48000 x3e200000}\n       {x434a0000 x43a48000 x3dee0008}}}\n     {t\n      {{x41300000 x4345aac1}}\n      {{x41300000 x43a45560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush368 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x432d0000 x43b40000 x3d4c0003}\n       {x432d0000 x43b50000 x3d67fff9}\n       {x432d0000 x43b40000 x3e8f0004}}}\n     {t\n      {{x41300000 x432d0000}}\n      {{x41300000 x43b45560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush367 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43020000 x43a88000 x3d0ffff3}}}\n     {t\n      {{x41300000 x43020000}}\n      {{x41300000 x43a88000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush366 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42f40000 x43ad8000 x3d400000}\n       {x43000000 x43ad8000 x3d64000a}}}\n     {t\n      {{x41300000 x42fa0000}}\n      {{x41300000 x43ad8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush365 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42dc0000 x43b18000 x3cf7ffec}\n       {x42e00000 x43b18000 x3d580007}}}\n     {t\n      {{x41300000 x42de0000}}\n      {{x41300000 x43b18000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush364 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42600000 x43c98000 x3d99fffe}\n       {x42600000 x43ca8000 x3dd1fff8}\n       {x42820000 x43cb8000 x3e27ffde}}}\n     {t\n      {{x41300000 x426c0000}}\n      {{x41300000 x43ca8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush363 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42900000 x43b08000 x3d5bfff6}\n       {x428c0000 x43ae8000 x3d8dfffb}\n       {x428c0000 x43ad8000 x3e170004}}}\n     {t\n      {{x41300000 x428d555a}}\n      {{x41300000 x43aed560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush362 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41c80000 x43b60000 x3c8ffff3}\n       {x41f80000 x43b60000 x3d8dfffb}\n       {x42000000 x43b50000 x3e43ffef}\n       {x42180000 x43b60000 x3e45000d}\n       {x423c0000 x43b30000 x3e4effe3}}}\n     {t\n      {{x41300000 x420a6666}}\n      {{x41300000 x43b53333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush361 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d4000 x4408c000 x3d0ffff3}\n       {x440a4000 x44030000 x3d89fffe}}}\n     {t\n      {{x41300000 x440bc000}}\n      {{x41300000 x4405e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush360 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44100000 x440dc000 x3d27fff9}\n       {x44100000 x440c0000 x3d4ffff3}\n       {x44100000 x440b0000 x3c980007}}}\n     {t\n      {{x41300000 x44100000}}\n      {{x41300000 x440c4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush359 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44078000 x44134000 x3d400000}\n       {x4409c000 x44114000 x3d4ffff3}\n       {x4409c000 x440f0000 x3dc00000}}}\n     {t\n      {{x41300000 x44090000}}\n      {{x41300000 x44112ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush358 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d28000 x44348000 x3db3fffd}\n       {x43ca8000 x44348000 x3dcc0003}}}\n     {t\n      {{x41300000 x43ce8000}}\n      {{x41300000 x44348000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush357 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ed8000 x44354000 x3dac0003}\n       {x43e38000 x44350000 x3e4a0019}}}\n     {t\n      {{x41300000 x43e88000}}\n      {{x41300000 x44352000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush356 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44070000 x44260000 x3d7bfff6}\n       {x44068000 x4429c000 x3d9c0003}\n       {x44070000 x442a0000 x3ed0800f}\n       {x44078000 x442c0000 x3ed38002}\n       {x44078000 x442cc000 x3ee5000d}\n       {x44080000 x442cc000 x3ee2fff3}\n       {x4403c000 x44308000 x3ee77ff1}\n       {x44020000 x44330000 x3ee80000}\n       {x44044000 x4431c000 x3ee3ffef}\n       {x44060000 x4430c000 x3ed80000}\n       {x44020000 x4431c000 x3ee2fff3}\n       {x44030000 x44324000 x3ebd000d}\n       {x44054000 x4430c000 x3e48fffc}\n       {x43fe0000 x4432c000 x3ea60008}\n       {x43f88000 x44330000 x3e18fffc}}}\n     {t\n      {{x41300000 x44045550}}\n      {{x41300000 x442eeab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush355 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44038000 x441ac000 x3d0ffff3}\n       {x44028000 x4416c000 x3d580007}\n       {x4404c000 x44198000 x3edb8002}\n       {x44054000 x441a0000 x3ede0008}}}\n     {t\n      {{x41300000 x44040000}}\n      {{x41300000 x44194000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush354 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4404c000 x4403c000 x3d83fffd}\n       {x4404c000 x44030000 x3dea0019}\n       {x44020000 x43fe8000 x3e01fff8}}}\n     {t\n      {{x41300000 x4403d550}}\n      {{x41300000 x44020000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush353 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4408c000 x44094000 x3d5bfff6}\n       {x44068000 x4404c000 x3d900000}}}\n     {t\n      {{x41300000 x4407a000}}\n      {{x41300000 x44070000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush352 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fe0000 x44080000 x3df1fff8}\n       {x43ff8000 x44030000 x3e25ffe7}}}\n     {t\n      {{x41300000 x43fec000}}\n      {{x41300000 x44058000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush351 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f78000 x44110000 x3ca7fff9}\n       {x43f68000 x440dc000 x3d83fffd}}}\n     {t\n      {{x41300000 x43f70000}}\n      {{x41300000 x440f6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush350 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ea0000 x44180000 x3db20005}\n       {x43ed8000 x4417c000 x3e0c0011}\n       {x43f50000 x4415c000 x3e200000}}}\n     {t\n      {{x41300000 x43eed560}}\n      {{x41300000 x44172ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush349 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e80000 x44330000 x3d820005}\n       {x43f08000 x4432c000 x3d980007}\n       {x44068000 x4430c000 x3e8e7ff6}\n       {x4409c000 x442c0000 x3e91fff8}\n       {x4409c000 x44278000 x3e947ffe}\n       {x440a4000 x4423c000 x3e938002}\n       {x440cc000 x441e8000 x3e95000d}\n       {x440a8000 x44190000 x3ea2fff3}\n       {x440a8000 x44174000 x3e9c7ffe}\n       {x44078000 x44134000 x3e977ff1}\n       {x44078000 x44110000 x3e98800f}\n       {x44080000 x440c8000 x3e83ffef}\n       {x4404c000 x44080000 x3e8afff3}}}\n     {t\n      {{x41300000 x44060000}}\n      {{x41300000 x441f2c4a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush348 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d60000 x442c0000 x3d70000d}\n       {x43d80000 x442cc000 x3d960002}\n       {x43ec0000 x442d4000 x3e857ffa}\n       {x44038000 x442b0000 x3e8f7ff1}\n       {x4404c000 x4427c000 x3e870004}\n       {x44054000 x44270000 x3e43ffef}\n       {x44068000 x44234000 x3e78fffc}\n       {x4408c000 x44204000 x3ea0800f}\n       {x44070000 x441d8000 x3eaafff3}\n       {x44060000 x441c4000 x3ea1800a}\n       {x4405c000 x44188000 x3e877ff1}\n       {x44060000 x44150000 x3e870004}\n       {x4404c000 x44124000 x3e8e7ff6}\n       {x44028000 x440f0000 x3e33ffef}\n       {x43ff8000 x440a8000 x3e2afff3}\n       {x43fe8000 x440a4000 x3e01001d}}}\n     {t\n      {{x41300000 x44008c08}}\n      {{x41300000 x441e0800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush347 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4409c000 x41300000 x3cf0000d}\n       {x440a4000 xc0a00000 x3dadfffb}\n       {x440c0000 xc1c80000 x3e15ffe7}}}\n     {t\n      {{x41300000 x440aaab0}}\n      {{x41300000 xc0caaaa4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush346 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44020000 x43ae8000 x3d1bfff6}\n       {x44020000 x43ad8000 x3da20005}\n       {x44018000 x43a20000 x3da20005}\n       {x44028000 x43958000 x3d07fff9}\n       {x44028000 x43910000 x3dbc0003}\n       {x44038000 x437c0000 x3e80fffc}\n       {x44038000 x436a0000 x3e838002}\n       {x44020000 x43580000 x3e31001d}\n       {x44020000 x434d0000 x3d920005}\n       {x4400c000 x43300000 x3d83fffd}\n       {x44014000 x43240000 x3e15ffe7}\n       {x44018000 x430e0000 x3d70000d}\n       {x44020000 x43050000 x3e070004}}}\n     {t\n      {{x41300000 x440213b6}}\n      {{x41300000 x4370d893}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush345 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f58000 x42980000 x3d3bfff6}\n       {x43fb0000 x41500000 x3d93fffd}\n       {x43fb0000 x40e00000 x3c400036}}}\n     {t\n      {{x41300000 x43f92aa0}}\n      {{x41300000 x42000000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush344 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ef8000 x43340000 x3cc00000}\n       {x43ed8000 x43220000 x3cc80014}\n       {x43ef8000 x43120000 x3d73fffd}\n       {x43f10000 x43070000 x3e25000d}\n       {x43f20000 x42ea0000 x3dc00000}\n       {x43f30000 x42d00000 x3d07fff9}}}\n     {t\n      {{x41300000 x43f06aa0}}\n      {{x41300000 x430caac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush343 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f10000 x43898000 x3c6fffd8}\n       {x43ee8000 x43770000 x3ca7fff9}\n       {x43ef8000 x43660000 x3d4ffff3}\n       {x43ef8000 x43580000 x3d900000}\n       {x43ef8000 x43530000 x3e130015}}}\n     {t\n      {{x41300000 x43ef999a}}\n      {{x41300000 x436bcccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush342 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d7c000 x43f20000 x3d180007}\n       {x44d7c000 x43fc0000 x3d33fffd}}}\n     {t\n      {{x41300000 x44d7c000}}\n      {{x41300000 x43f70000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush341 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d7c000 x43d60000 x3d13fffd}\n       {x44d80000 x43db8000 x3d27fff9}\n       {x44d80000 x43e48000 x3d600000}}}\n     {t\n      {{x41300000 x44d7ea8f}}\n      {{x41300000 x43dcaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush340 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d78000 x43bc0000 x3cd80007}\n       {x44d78000 x43c80000 x3d53fffd}\n       {x44d80000 x43d00000 x3e8e7ff6}}}\n     {t\n      {{x41300000 x44d7aa8f}}\n      {{x41300000 x43c6aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush339 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d84000 x43898000 x3ce0001b}\n       {x44d7c000 x43900000 x3d4ffff3}\n       {x44d78000 x439d8000 x3df00043}\n       {x44d76000 x43a00000 x3d920005}\n       {x44d64000 x43ac0000 x3d180007}\n       {x44d64000 x43b08000 x3e63ffef}\n       {x44d60000 x43b18000 0}}}\n     {t\n      {{x41300000 x44d70dc3}}\n      {{x41300000 x43a0b6e9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush338 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d8e000 x436e0000 x3d400000}\n       {x44d8a000 x43780000 x3e200000}\n       {x44d88000 x437a0000 x3e51001d}\n       {x44d88000 x43780000 x3e98fffc}\n       {x44d8a000 x437a0000 x3e9a8006}\n       {x44d96000 x43750000 x3ea0800f}\n       {x44d9a000 x436f0000 x3e9f0004}\n       {x44d9a000 x43710000 x3e8b8002}\n       {x44da0000 x436c0000 x3e90800f}\n       {x44da8000 x436c0000 x3e9f7ff1}\n       {x44da0000 x436e0000 x3ea67ff6}\n       {x44d9c000 x43710000 x3eaf0004}\n       {x44da8000 x436c0000 x3ecd7ffa}\n       {x44dac000 x436f0000 x3ec47ffe}\n       {x44da4000 x43730000 x3ec1fff8}\n       {x44d92000 x437a0000 x3d7bfff6}}}\n     {t\n      {{x41300000 x44d989ec}}\n      {{x41300000 x43726000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush337 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dc4000 x426c0000 x3d000000}\n       {x44d9c000 x42f20000 x3d83fffd}\n       {x44da0000 x42f40000 x3c9fffe5}\n       {x44da8000 x43030000 x3d3bfff6}\n       {x44da0000 x430e0000 x3e11fff8}\n       {x44d9c000 x43150000 x3e670004}\n       {x44d9c000 x431b0000 x3e9afff3}\n       {x44d9c000 x43290000 x3e200000}\n       {x44d9a000 x43290000 x3e9c0011}\n       {x44da0000 x43340000 x3e9c7ffe}\n       {x44da0000 x43320000 x3eae0008}\n       {x44da0000 x43440000 x3e95000d}\n       {x44d9c000 x43460000 x3d400000}}}\n     {t\n      {{x41300000 x44da1614}}\n      {{x41300000 x43177646}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush336 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dc4000 x42b40000 x3d1bfff6}\n       {x44dc0000 x42740000 x3d400000}\n       {x44dc4000 x426c0000 x3e68fffc}\n       {x44dc4000 x42600000 x3e31001d}}}\n     {t\n      {{x41300000 x44dc3000}}\n      {{x41300000 x42850000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush335 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dba000 x42200000 x3d2c0003}\n       {x44dc0000 x41b00000 x3da60002}\n       {x44dc4000 x41100000 x3e0e0008}\n       {x44dc4000 x40e00000 x3e25000d}\n       {x44dc4000 x40a00000 x3de3ffef}}}\n     {t\n      {{x41300000 x44dc1333}}\n      {{x41300000 x4184cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush334 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dac000 x433d0000 x3ca7fff9}\n       {x44da8000 x43410000 x3d04000a}\n       {x44da4000 x43460000 x3d3bfff6}\n       {x44da0000 x43360000 x3e270004}\n       {x44da0000 x43100000 x3e8d000d}\n       {x44da8000 x42dc0000 x3e99fff8}\n       {x44dac000 x42d00000 x3e8e7ff6}\n       {x44dac000 x42be0000 x3e88fffc}\n       {x44dac000 x42b00000 x3e5cffeb}\n       {x44dae000 x42aa0000 x3e530015}\n       {x44db2000 x429e0000 x3e3e0008}\n       {x44db2000 x428c0000 x3e18fffc}\n       {x44db2000 x42860000 x3e21fff8}\n       {x44db6000 x42860000 x3d860002}\n       {x44db2000 x42740000 x3cf0000d}\n       {x44dae000 x42580000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44dabe14}}\n      {{x41300000 x42df4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush333 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44db2000 x42a20000 x3c6fffd8}\n       {x44dae000 x42600000 x3cf0000d}\n       {x44db2000 x42100000 x3db3fffd}\n       {x44db2000 x41f80000 x3d64000a}\n       {x44db6000 x41500000 x3d860002}\n       {x44dbe000 xc0000000 x3d8dfffb}\n       {x44dc0000 xc1800000 x3d900000}\n       {x44dc0000 xc1a00000 x3d53fffd}}}\n     {t\n      {{x41300000 x44db7000}}\n      {{x41300000 x41b30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush332 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dae000 x42e00000 x3ca7fff9}\n       {x44db2000 x42d00000 x3c880014}}}\n     {t\n      {{x41300000 x44db0000}}\n      {{x41300000 x42d80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush331 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d9c000 x43320000 x3d1bfff6}\n       {x44d9a000 x43220000 x3d9c0003}}}\n     {t\n      {{x41300000 x44d9b000}}\n      {{x41300000 x432a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush330 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d76000 x43c80000 x3d04000a}\n       {x44d7c000 x43c40000 x3d400000}\n       {x44d78000 x43b18000 x3e3e0008}\n       {x44d8a000 x439c8000 x3e870004}\n       {x44d9a000 x43870000 x3e89fff8}\n       {x44da0000 x43750000 x3e960008}\n       {x44da0000 x435f0000 x3e947ffe}\n       {x44da0000 x43540000 x3e8e7ff6}\n       {x44da0000 x434d0000 x3e3effe3}\n       {x44da0000 x43460000 x3dc20005}\n       {x44d9c000 x433b0000 x3e3a0019}}}\n     {t\n      {{x41300000 x44d925c3}}\n      {{x41300000 x43885d0e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush329 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d1e000 x438f0000 x3d53fffd}\n       {x44d14000 x43968000 x3e2effe3}\n       {x44d14000 x439a0000 x3d64000a}}}\n     {t\n      {{x41300000 x44d17571}}\n      {{x41300000 x43952aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush328 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d14000 x43730000 x3d180007}\n       {x44d18000 x437a0000 x3d44000a}\n       {x44d1c000 x43870000 x3e90fffc}}}\n     {t\n      {{x41300000 x44d18000}}\n      {{x41300000 x437e553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush327 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d30000 x43360000 x3d33fffd}\n       {x44d34000 x43200000 x3d64000a}\n       {x44d40000 x42f40000 x3d0ffff3}\n       {x44d40000 x42ea0000 x3db00000}\n       {x44d42000 x42c60000 x3dadfffb}\n       {x44d42000 x429e0000 x3da00000}\n       {x44d4a000 x42600000 x3da00000}\n       {x44d4a000 x42180000 x3da20005}\n       {x44d52000 x41b80000 x3da20005}\n       {x44d52000 x41100000 x3db3fffd}\n       {x44d5c000 xc0a00000 x3d9dfffb}\n       {x44d66000 xc1c80000 x3da9fffe}\n       {x44d6a000 xc1f80000 x3c60001b}}}\n     {t\n      {{x41300000 x44d4ac29}}\n      {{x41300000 x427d89d5}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush326 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d2e000 x43650000 x3cf0000d}\n       {x44d2e000 x43530000 x3d580007}\n       {x44d2e000 x434f0000 x3d04000a}}}\n     {t\n      {{x41300000 x44d2e000}}\n      {{x41300000 x4357aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush325 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d2a000 x43808000 x3d24000a}\n       {x44d2e000 x436a0000 x3d580007}\n       {x44d2e000 x43680000 x3b9ffffb}}}\n     {t\n      {{x41300000 x44d2ca8f}}\n      {{x41300000 x43710000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush324 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d26000 x43910000 x3ce7fff9}\n       {x44d2a000 x43900000 x3d1bfff6}\n       {x44d22000 x43880000 x3ea1fff8}\n       {x44d22000 x43850000 x3ca7fff9}}}\n     {t\n      {{x41300000 x44d25000}}\n      {{x41300000 x438b8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush323 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43dd8000 x441d8000 x3ce7fff9}\n       {x43db8000 x44188000 x3d900000}\n       {x43db8000 x44174000 x3b40000b}}}\n     {t\n      {{x41300000 x43dc2aa0}}\n      {{x41300000 x4419c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush322 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43dc8000 x442cc000 x3c980007}\n       {x43dd8000 x44284000 x3d93fffd}}}\n     {t\n      {{x41300000 x43dd0000}}\n      {{x41300000 x442a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush321 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d60000 x444a0000 x3d67fff9}\n       {x43d90000 x44494000 x3d860002}}}\n     {t\n      {{x41300000 x43d78000}}\n      {{x41300000 x4449a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush320 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d70000 x44540000 x3d6c0003}\n       {x43d70000 x44528000 x3d93fffd}}}\n     {t\n      {{x41300000 x43d70000}}\n      {{x41300000 x44534000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush319 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d60000 x4459c000 x3d3bfff6}\n       {x43d60000 x445b4000 x3d47fff9}\n       {x43d60000 x44594000 x3ea8fffc}}}\n     {t\n      {{x41300000 x43d60000}}\n      {{x41300000 x445a1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush318 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d18000 x446a0000 x3d04000a}\n       {x43d28000 x446b4000 x3d33fffd}\n       {x43d18000 x446b0000 x3eae0008}\n       {x43d18000 x446a8000 x3e9f0004}\n       {x43d38000 x446b4000 x3ea0800f}\n       {x43d28000 x44684000 x3edf7ff1}\n       {x43d38000 x4468c000 x3ee0fffc}\n       {x43d18000 x44658000 x3eec0011}\n       {x43d28000 x44668000 x3eea8006}\n       {x43d28000 x44648000 x3eee7ff6}\n       {x43d38000 x4463c000 x3e7c0011}}}\n     {t\n      {{x41300000 x43d268b4}}\n      {{x41300000 x44684ba6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush317 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d00000 x44770000 x3ce0001b}\n       {x43d10000 x44754000 x3d07fff9}\n       {x43d18000 x44740000 x3e71fff8}\n       {x43d18000 x44744000 x3e68fffc}\n       {x43d38000 x44714000 x3e98800f}}}\n     {t\n      {{x41300000 x43d18000}}\n      {{x41300000 x4474599a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush316 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cb8000 x447e4000 x3d1bfff6}\n       {x43cc8000 x447e4000 x3d44000a}\n       {x43cd0000 x447d0000 x3df5ffe7}}}\n     {t\n      {{x41300000 x43cc5560}}\n      {{x41300000 x447dd51f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush315 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d10000 x446fc000 x3d2c0003}}}\n     {t\n      {{x41300000 x43d10000}}\n      {{x41300000 x446fc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush314 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d18000 x446b4000 x3d30000d}\n       {x43d00000 x446b4000 x3d47fff9}}}\n     {t\n      {{x41300000 x43d0c000}}\n      {{x41300000 x446b4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush313 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d70000 x44588000 x3d04000a}\n       {x43d70000 x445c0000 x3d0ffff3}\n       {x43d58000 x445ec000 x3e100000}\n       {x43d48000 x44610000 x3d0ffff3}\n       {x43d38000 x44618000 x3d000000}\n       {x43d28000 x44644000 x3dc60002}\n       {x43d28000 x44650000 x3e1effe3}\n       {x43d28000 x44668000 x3e18fffc}\n       {x43d18000 x44684000 x3e170004}\n       {x43d10000 x4468c000 x3e25ffe7}}}\n     {t\n      {{x41300000 x43d3c000}}\n      {{x41300000 x44624000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush312 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d70000 x444a0000 x3d07fff9}\n       {x43d80000 x4448c000 x3d64000a}\n       {x43d90000 x443f4000 x3d860002}\n       {x43d80000 x44364000 x3dd80022}}}\n     {t\n      {{x41300000 x43d80000}}\n      {{x41300000 x44421000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush311 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43da8000 x44340000 x3ccffff3}\n       {x43db8000 x442d4000 x3d580007}\n       {x43db8000 x442a8000 x3df1fff8}\n       {x43da8000 x44268000 x3df5ffe7}\n       {x43da8000 x44254000 x3db9fffe}}}\n     {t\n      {{x41300000 x43dae666}}\n      {{x41300000 x442b199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush310 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cf0000 x44816000 x3d07fff9}\n       {x43d18000 x44800000 x3d44000a}\n       {x43d28000 x447c0000 x3df40032}\n       {x43d28000 x44778000 x3e4c0011}\n       {x43d38000 x4475c000 x3e4cffeb}\n       {x43d38000 x44738000 x3e4afff3}\n       {x43d28000 x44714000 x3e4c0011}\n       {x43d28000 x446f0000 x3e4c0011}\n       {x43d28000 x446c4000 x3e45ffe7}\n       {x43d38000 x4468c000 x3e300000}\n       {x43d28000 x4463c000 x3e08fffc}\n       {x43d28000 x44608000 x3e07ffde}\n       {x43d28000 x445d0000 x3de6002a}\n       {x43d38000 x445b4000 x3dd9ffd6}\n       {x43d48000 x44564000 x3de6002a}\n       {x43d60000 x44538000 x3e030015}\n       {x43d70000 x444f8000 x3e03ffef}\n       {x43d80000 x444d4000 x3e1a0019}\n       {x43d80000 x444b0000 x3e1c0011}\n       {x43d70000 x44494000 x3e13ffef}\n       {x43d70000 x4448c000 x3c8ffff3}}}\n     {t\n      {{x41300000 x43d3e7ae}}\n      {{x41300000 x44640927}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs 1 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush309 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d38000 x447d0000 x3cd80007}\n       {x43d38000 x447a4000 x3ce0001b}\n       {x43d38000 x44788000 x3d0c0003}}}\n     {t\n      {{x41300000 x43d38000}}\n      {{x41300000 x447a951f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush308 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440dc000 x43d38000 x3d73fffd}\n       {x440e4000 x43d58000 x3d47fff9}}}\n     {t\n      {{x41300000 x440e0000}}\n      {{x41300000 x43d48000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush307 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44070000 x43d28000 x3d000000}\n       {x44068000 x43d38000 x3d1bfff6}\n       {x44078000 x43d58000 x3e400000}}}\n     {t\n      {{x41300000 x44070000}}\n      {{x41300000 x43d3d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush306 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440d4000 x43d48000 x3ce0001b}}}\n     {t\n      {{x41300000 x440d4000}}\n      {{x41300000 x43d48000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush305 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44038000 x43c98000 x3d07fff9}\n       {x44068000 x43cd0000 x3d380007}}}\n     {t\n      {{x41300000 x44050000}}\n      {{x41300000 x43cb4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush304 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fa0000 x43be0000 x3cb0000d}\n       {x43fa0000 x43bd0000 x3d1bfff6}\n       {x43fb0000 x43be0000 x3e6effe3}\n       {x4400c000 x43c70000 x3e877ff1}\n       {x44020000 x43c80000 x3e3cffeb}\n       {x44020000 x43c88000 x3a7ffff7}}}\n     {t\n      {{x41300000 x43fec000}}\n      {{x41300000 x43c2c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush303 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44140000 x43c20000 x3d73fffd}\n       {x4414c000 x43c40000 x3e05000d}\n       {x4414c000 x43c30000 x3e977ff1}}}\n     {t\n      {{x41300000 x44148000}}\n      {{x41300000 x43c30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush302 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44130000 x43ae0000 x3d000000}\n       {x44134000 x43ae0000 x3d4c0003}\n       {x44134000 x43af0000 x3e81fff8}}}\n     {t\n      {{x41300000 x44132ab0}}\n      {{x41300000 x43ae5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush301 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4459c000 x437b0000 x3e33ffef}\n       {x445a4000 x437e0000 x3e7effe3}\n       {x445a8000 x43800000 x3e88800f}}}\n     {t\n      {{x41300000 x445a2ab0}}\n      {{x41300000 x437daac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush300 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4456c000 x43a98000 x3d87fff9}\n       {x44578000 x43a90000 x3d83fffd}\n       {x44580000 x43a80000 x3e8d7ffa}}}\n     {t\n      {{x41300000 x44576ab0}}\n      {{x41300000 x43a8d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush299 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x439f0000 x3d0ffff3}\n       {x44724000 x43a00000 x3e6c0011}\n       {x44724000 x439f0000 x3eb9fff8}}}\n     {t\n      {{x41300000 x44721550}}\n      {{x41300000 x439f5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush298 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44860000 x43ae0000 x3d13fffd}\n       {x44864000 x43ae8000 x3d800000}\n       {x44864000 x43af8000 x3e9f0004}}}\n     {t\n      {{x41300000 x44862a8f}}\n      {{x41300000 x43aeaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush297 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44828000 x43cc0000 x3d1bfff6}\n       {x44828000 x43cc8000 x3d47fff9}\n       {x44828000 x43cd8000 x3e6a0019}\n       {x44830000 x43cc8000 x3e730015}\n       {x4482e000 x43cc0000 x3e55ffe7}}}\n     {t\n      {{x41300000 x4482accd}}\n      {{x41300000 x43cc8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush296 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44816000 x43db8000 x3c880014}\n       {x44818000 x43d98000 x3d33fffd}\n       {x44818000 x43da0000 x3da9fffe}\n       {x4481c000 x43da0000 x3e0afff3}\n       {x4481c000 x43d98000 x3e27ffde}\n       {x44818000 x43d80000 x3cf0000d}}}\n     {t\n      {{x41300000 x44819000}}\n      {{x41300000 x43d9c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush295 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c26000 x42920000 x3dbc0003}\n       {x44c36000 x42680000 x3e8b8002}}}\n     {t\n      {{x41300000 x44c2e000}}\n      {{x41300000 x42830000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush294 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b16000 x42900000 x3cb7ffec}\n       {x44b18000 x428c0000 x3d33fffd}\n       {x44b1e000 x428a0000 x3dc00000}}}\n     {t\n      {{x41300000 x44b19571}}\n      {{x41300000 x428caaa6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush293 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b6c000 x42d20000 x3db9fffe}\n       {x44b58000 x42cc0000 x3e83ffef}}}\n     {t\n      {{x41300000 x44b62000}}\n      {{x41300000 x42cf0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush292 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b34000 x42e00000 x3d93fffd}\n       {x44b58000 x42e60000 x3e1effe3}\n       {x44b54000 x42e40000 x3c0ffffd}}}\n     {t\n      {{x41300000 x44b4aa8f}}\n      {{x41300000 x42e35581}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush291 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a9e000 x430a0000 x3d04000a}\n       {x44a9e000 x430b0000 x3d27fff9}\n       {x44a9e000 x430d0000 x3e21001d}\n       {x44aa6000 x430a0000 x3e928006}}}\n     {t\n      {{x41300000 x44aa0000}}\n      {{x41300000 x430b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush290 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ab6000 x43200000 x3e270004}\n       {x44ab6000 x431f0000 x3ea57ffa}\n       {x44ab0000 x431a0000 x3eb0fffc}\n       {x44aac000 x43190000 0}}}\n     {t\n      {{x41300000 x44ab2000}}\n      {{x41300000 x431c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush289 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a02000 x43590000 x3da60002}\n       {x449fe000 x435b0000 x3e470004}\n       {x44a1a000 x435b0000 x3e960008}}}\n     {t\n      {{x41300000 x44a08a8f}}\n      {{x41300000 x435a553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush288 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ac4000 x43590000 x3d0ffff3}\n       {x44ad0000 x43590000 x3e11001d}\n       {x44ac4000 x435b0000 x3ed77ff1}}}\n     {t\n      {{x41300000 x44ac8000}}\n      {{x41300000 x4359aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush287 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bde000 x433b0000 x3d8c0003}\n       {x44bdc000 x433d0000 x3e960008}}}\n     {t\n      {{x41300000 x44bdd000}}\n      {{x41300000 x433c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush286 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b42000 x43610000 x3d000000}\n       {x44b40000 x435f0000 x3ddc0011}\n       {x44b54000 x435f0000 x3e91fff8}\n       {x44b5a000 x435e0000 0}}}\n     {t\n      {{x41300000 x44b4c000}}\n      {{x41300000 x435f4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush285 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c02000 x43bd8000 x3da3fffd}\n       {x44bfc000 x43be8000 x3e81fff8}\n       {x44c02000 x43be8000 x3ed38002}}}\n     {t\n      {{x41300000 x44c00000}}\n      {{x41300000 x43be2aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush284 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bd2000 x43ab0000 x3cc80014}\n       {x44bd6000 x43ab8000 x3e3afff3}\n       {x44bd2000 x43ab0000 x3e9d7ffa}\n       {x44bd6000 x43ab8000 x3dd40032}}}\n     {t\n      {{x41300000 x44bd4000}}\n      {{x41300000 x43ab4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush283 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d3e000 x434c0000 x3d30000d}\n       {x44d40000 x434c0000 x3e9d000d}}}\n     {t\n      {{x41300000 x44d3f000}}\n      {{x41300000 x434c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush282 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d64000 x41c80000 x3e967ff6}\n       {x44d62000 x41b00000 x3ea77ff1}}}\n     {t\n      {{x41300000 x44d63000}}\n      {{x41300000 x41bc0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush281 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c8a000 x421c0000 x3cf0000d}\n       {x44ca4000 x421c0000 x3d200000}}}\n     {t\n      {{x41300000 x44c97000}}\n      {{x41300000 x421c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush280 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d44000 x41900000 x3d580007}\n       {x44d40000 x41980000 x3e31001d}\n       {x44d1c000 x41c00000 x3e55ffe7}}}\n     {t\n      {{x41300000 x44d35571}}\n      {{x41300000 x41a2aa99}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush279 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d44000 x42400000 x3cf0000d}\n       {x44d44000 x42380000 x3d24000a}}}\n     {t\n      {{x41300000 x44d44000}}\n      {{x41300000 x423c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush278 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d46000 x425c0000 x3d33fffd}\n       {x44d4a000 x425c0000 x3e45ffe7}\n       {x44d4c000 x425c0000 x3e9f0004}\n       {x44d4a000 x42500000 x3eb67ff6}\n       {x44d4a000 x424c0000 0}}}\n     {t\n      {{x41300000 x44d4999a}}\n      {{x41300000 x42566666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42440000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush277 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d6a000 x42100000 x3d67fff9}\n       {x44d70000 x42100000 x3dadfffb}}}\n     {t\n      {{x41300000 x44d6d000}}\n      {{x41300000 x42100000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush276 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d50000 x42680000 x3ce0001b}\n       {x44d4a000 x42640000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44d4d000}}\n      {{x41300000 x42660000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush275 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d4a000 x42bc0000 x3cf0000d}\n       {x44d58000 x42ae0000 x3db3fffd}}}\n     {t\n      {{x41300000 x44d51000}}\n      {{x41300000 x42b50000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush274 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d22000 x43040000 x3d0ffff3}\n       {x44d38000 x42fc0000 x3e730015}\n       {x44d46000 x42f20000 x3ecafff3}}}\n     {t\n      {{x41300000 x44d35571}}\n      {{x41300000 x42fcaa7f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush273 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d08000 x43290000 x3d1bfff6}\n       {x44d14000 x43260000 x3d89fffe}\n       {x44d28000 x43220000 x3eb38002}\n       {x44d44000 x431c0000 x3eb8800f}\n       {x44d4a000 x43190000 x3d0c0003}}}\n     {t\n      {{x41300000 x44d2a000}}\n      {{x41300000 x43213333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush272 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d34000 x42f80000 x3cf0000d}\n       {x44d32000 x42fc0000 x3e300000}\n       {x44d34000 x42f80000 x3eaa8006}\n       {x44d40000 x42f20000 x3ebb8002}\n       {x44d50000 x42ec0000 x3e857ffa}}}\n     {t\n      {{x41300000 x44d3b99a}}\n      {{x41300000 x42f53333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x41d80000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush271 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cf8000 x43340000 x3d27fff9}\n       {x44cfc000 x43340000 x3d8c0003}\n       {x44d10000 x432e0000 x3e857ffa}\n       {x44d56000 x43170000 x3e9b8002}}}\n     {t\n      {{x41300000 x44d16800}}\n      {{x41300000 x432b4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush270 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cec000 x43280000 x3ccffff3}\n       {x44cf0000 x43280000 x3d380007}\n       {x44d20000 x431c0000 x3e5c0011}\n       {x44d52000 x430a0000 x3ea9800a}}}\n     {t\n      {{x41300000 x44d13800}}\n      {{x41300000 x431d8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush269 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ca2000 x43280000 x3d87fff9}\n       {x44c9e000 x432c0000 x3e27ffde}}}\n     {t\n      {{x41300000 x44ca0000}}\n      {{x41300000 x432a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush268 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ca8000 x43130000 x3ca7fff9}\n       {x44caa000 x43130000 x3d33fffd}\n       {x44cb6000 x43110000 x3ec28006}\n       {x44cbc000 x43100000 x3ec60008}\n       {x44cbc000 x43130000 x3e6cffeb}\n       {x44cba000 x43160000 x3e33ffef}}}\n     {t\n      {{x41300000 x44cb4571}}\n      {{x41300000 x4312aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush267 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c8c000 x430e0000 x3cc00000}\n       {x44c98000 x43130000 x3d0c0003}}}\n     {t\n      {{x41300000 x44c92000}}\n      {{x41300000 x43108000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush266 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d3a000 xc0c00000 x3d1bfff6}\n       {x44d3e000 xc0c00000 x3d24000a}\n       {x44d4a000 xc1000000 x3e8d7ffa}\n       {x44d46000 xc0c00000 x3e31001d}}}\n     {t\n      {{x41300000 x44d42000}}\n      {{x41300000 xc0d00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush265 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e90000 0 x3d7bfff6}\n       {x44e9c000 xc0c00000 x3e857ffa}}}\n     {t\n      {{x41300000 x44e96000}}\n      {{x41300000 xc0400000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush264 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e16000 x41100000 x3d200000}\n       {x44e2a000 x40800000 x3d400000}\n       {x44e30000 x40400000 x3e8afff3}}}\n     {t\n      {{x41300000 x44e25571}}\n      {{x41300000 x40aaaaa4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush263 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44de0000 x40e00000 x3d44000a}\n       {x44dfe000 x41100000 x3dce0008}\n       {x44e00000 x41100000 x3c880014}\n       {x44e04000 x41100000 0}}}\n     {t\n      {{x41300000 x44df8800}}\n      {{x41300000 x41080000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush262 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44db8000 x40e00000 x3d0c0003}\n       {x44db6000 x40e00000 x3d27fff9}}}\n     {t\n      {{x41300000 x44db7000}}\n      {{x41300000 x40e00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush261 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44da4000 x42340000 x3cd80007}\n       {x44da6000 x42380000 x3e27ffde}\n       {x44db2000 x42340000 x3ec57ffa}\n       {x44db6000 x42280000 x3ed0800f}\n       {x44dbe000 x422c0000 x3eb47ffe}\n       {x44dc2000 x42280000 x3eb3ffef}\n       {x44dc2000 x42140000 x3dc60002}}}\n     {t\n      {{x41300000 x44db523d}}\n      {{x41300000 x422b6dac}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush260 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e88000 x43020000 x3d70000d}\n       {x44e9a000 x43020000 x3e88800f}\n       {x44e96000 x43050000 x3dc3fffd}}}\n     {t\n      {{x41300000 x44e92a8f}}\n      {{x41300000 x43030000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush259 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e24000 x42ec0000 x3d13fffd}\n       {x44e24000 x42f00000 x3e27ffde}\n       {x44e34000 x42e00000 x3e870004}\n       {x44e48000 x42e40000 x3e8e7ff6}\n       {x44e5a000 x42e60000 x3e857ffa}}}\n     {t\n      {{x41300000 x44e39333}}\n      {{x41300000 x42e7999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush258 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f32000 x43380000 x3d27fff9}\n       {x44f38000 x43380000 x3e23ffef}\n       {x44f4e000 x43320000 x3e8e0008}\n       {x44f6c000 x43280000 x3ec1800a}\n       {x44f6e000 x43280000 0}}}\n     {t\n      {{x41300000 x44f50666}}\n      {{x41300000 x43306666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush257 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d8e000 x43790000 x3d2c0003}\n       {x44d76000 x437c0000 x3de3ffef}}}\n     {t\n      {{x41300000 x44d82000}}\n      {{x41300000 x437a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush256 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44db6000 x436b0000 x3cc00000}\n       {x44db6000 x436d0000 x3d27fff9}\n       {x44db0000 x436e0000 x3e01fff8}\n       {x44da6000 x436d0000 x3e0cffeb}\n       {x44daa000 x436d0000 x3e01001d}\n       {x44dac000 x436e0000 x3e770004}\n       {x44da6000 x43700000 x3cb0000d}}}\n     {t\n      {{x41300000 x44dad6b8}}\n      {{x41300000 x436d6dd3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush255 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f78000 x43370000 x3cb0000d}\n       {x44f7a000 x43340000 x3d180007}}}\n     {t\n      {{x41300000 x44f79000}}\n      {{x41300000 x43358000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush254 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f50000 x433e0000 x3d400000}\n       {x44f54000 x43430000 x3e2c0011}\n       {x44f54000 x43440000 x3e7afff3}\n       {x44f68000 x433e0000 x3e7cffeb}\n       {x44f7a000 x43340000 x3e55ffe7}}}\n     {t\n      {{x41300000 x44f5eccd}}\n      {{x41300000 x433e3333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush253 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f5a000 x431f0000 x3d180007}\n       {x44f5c000 x431d0000 x3df5ffe7}}}\n     {t\n      {{x41300000 x44f5b000}}\n      {{x41300000 x431e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush252 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f02000 x43340000 x3d2c0003}\n       {x44f08000 x43350000 x3e8e0008}\n       {x44f18000 x43310000 x3e8e7ff6}\n       {x44f1e000 x432f0000 x3e63ffef}\n       {x44f20000 x43320000 x3e6a0019}\n       {x44f20000 x43310000 x3e900000}\n       {x44f26000 x432c0000 x3e90800f}}}\n     {t\n      {{x41300000 x44f17b85}}\n      {{x41300000 x4331249c}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush251 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d68000 x43c98000 x3d1bfff6}\n       {x44d6e000 x43c90000 x3d3bfff6}}}\n     {t\n      {{x41300000 x44d6b000}}\n      {{x41300000 x43c94000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush250 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d4a000 x43ce0000 x3d0ffff3}\n       {x44d4c000 x43ce0000 x3d33fffd}\n       {x44d52000 x43cf0000 x3e83ffef}\n       {x44d5e000 x43ca8000 x3ea1fff8}}}\n     {t\n      {{x41300000 x44d51800}}\n      {{x41300000 x43cd6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush249 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d5c000 x43e40000 x3d33fffd}\n       {x44d56000 x43e30000 x3e48fffc}\n       {x44d58000 x43e28000 x3cf0000d}\n       {x44d56000 x43e18000 x3ea00000}\n       {x44d58000 x43e18000 x3e967ff6}\n       {x44d5c000 x43e10000 x3e91800a}\n       {x44d5c000 x43de0000 x3ea70004}\n       {x44d5e000 x43de8000 x3e9d7ffa}\n       {x44d5e000 x43df8000 x3e9c0011}}}\n     {t\n      {{x41300000 x44d5a385}}\n      {{x41300000 x43e10e35}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush248 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ce4000 x43e58000 x3d04000a}\n       {x44ce6000 x43e58000 x3d1bfff6}\n       {x44ce6000 x43e18000 x3e4c0011}}}\n     {t\n      {{x41300000 x44ce5571}}\n      {{x41300000 x43e42aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush247 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cd2000 x43f50000 x3cf0000d}\n       {x44cd4000 x43f50000 x3d30000d}\n       {x44cd8000 x43f50000 x3e03ffef}\n       {x44cda000 x43f50000 x3e9f0004}\n       {x44cde000 x43f48000 x3e977ff1}\n       {x44ce0000 x43f30000 x3cf7ffec}}}\n     {t\n      {{x41300000 x44cd9000}}\n      {{x41300000 x43f49560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush246 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e00000 x44770000 x3d9c0003}\n       {x44e04000 x4477c000 x3e0afff3}\n       {x44e04000 x44784000 x3e9c7ffe}}}\n     {t\n      {{x41300000 x44e02a8f}}\n      {{x41300000 x4477aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush245 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e7e000 x4461c000 x3dc60002}\n       {x44e7c000 x4461c000 x3df00043}\n       {x44e84000 x44614000 x3e88fffc}\n       {x44e96000 x44610000 x3e7afff3}\n       {x44ea8000 x44614000 x3e55000d}}}\n     {t\n      {{x41300000 x44e8c000}}\n      {{x41300000 x44616666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush244 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e9a000 x44208000 x3d200000}\n       {x44e9c000 x44208000 x3d820005}\n       {x44ea0000 x44200000 x3ec38002}\n       {x44ea2000 x441fc000 x3eb1fff8}\n       {x44ea8000 x441fc000 x3eb00000}\n       {x44ea6000 x44208000 x3e88800f}}}\n     {t\n      {{x41300000 x44ea1000}}\n      {{x41300000 x44202ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush243 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dbc000 x441fc000 x3d7bfff6}\n       {x44dc4000 x44214000 x3e3effe3}}}\n     {t\n      {{x41300000 x44dc0000}}\n      {{x41300000 x44208000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush242 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d32000 x441e8000 x3d30000d}\n       {x44d40000 x441e8000 x3d4c0003}\n       {x44d4c000 x441e4000 x3e28fffc}}}\n     {t\n      {{x41300000 x44d3f571}}\n      {{x41300000 x441e6ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush241 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d04000 x44284000 x3d1bfff6}\n       {x44d08000 x4428c000 x3d580007}\n       {x44d0a000 x4428c000 x3e300000}\n       {x44d0e000 x4428c000 x3e5c0011}\n       {x44d0a000 x44278000 x3eaa8006}\n       {x44d0a000 x4426c000 x3e65ffe7}}}\n     {t\n      {{x41300000 x44d09571}}\n      {{x41300000 x44282000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush240 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d68000 x442a4000 x3d24000a}\n       {x44d6a000 x442a8000 x3d900000}\n       {x44d7a000 x442a4000 x3e9b8002}\n       {x44d8c000 x442a4000 x3e9b8002}\n       {x44d8e000 x442a4000 x3e9c0011}\n       {x44d88000 x4429c000 x3e6cffeb}}}\n     {t\n      {{x41300000 x44d7d000}}\n      {{x41300000 x442a3550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush239 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44dd6000 x44398000 x3cb7ffec}\n       {x44dd6000 x44394000 x3d600000}\n       {x44ddc000 x44388000 x3ea8800f}}}\n     {t\n      {{x41300000 x44dd8000}}\n      {{x41300000 x44391550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush238 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d94000 x44428000 x3dd1fff8}\n       {x44d92000 x44430000 x3de00000}\n       {x44d9e000 x4441c000 x3eac7ffe}}}\n     {t\n      {{x41300000 x44d96a8f}}\n      {{x41300000 x44426ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush237 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e4e000 x443e8000 x3d1bfff6}\n       {x44e46000 x443d0000 x3d6c0003}\n       {x44e46000 x443c8000 x3e370004}\n       {x44e48000 x443dc000 x3e6cffeb}\n       {x44e4c000 x443ec000 x3ecf7ff1}\n       {x44e52000 x443e0000 x3edf7ff1}\n       {x44e5e000 x443dc000 x3e8e7ff6}\n       {x44e60000 x443dc000 x3cc80014}}}\n     {t\n      {{x41300000 x44e4fc29}}\n      {{x41300000 x443dc000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush236 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2a000 x445e0000 x3d64000a}\n       {x44f2a000 x445f8000 x3e170004}\n       {x44f24000 x445fc000 x3eb80000}\n       {x44f2a000 x44614000 x3e4afff3}\n       {x44f2a000 x44634000 x3e900000}}}\n     {t\n      {{x41300000 x44f28ccd}}\n      {{x41300000 x4460599a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush235 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f72000 x444e8000 x3d380007}\n       {x44f6e000 x444e4000 x3d960002}\n       {x44f68000 x444d8000 x3dcc0003}\n       {x44f62000 x444e8000 x3e9d7ffa}\n       {x44f60000 x444e8000 x3ed38002}\n       {x44f5a000 x444dc000 x3e55ffe7}\n       {x44f60000 x444f4000 x3d04000a}\n       {x44f60000 x44500000 0}}}\n     {t\n      {{x41300000 x44f64800}}\n      {{x41300000 x444e8800}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush234 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f2c000 x44164000 x3d70000d}\n       {x44f2c000 x4416c000 x3d920005}\n       {x44f30000 x4416c000 x3e8e7ff6}\n       {x44f32000 x44178000 x3ebd000d}\n       {x44f30000 x44178000 x3eff0004}\n       {x44f2c000 x44178000 0}}}\n     {t\n      {{x41300000 x44f2e571}}\n      {{x41300000 x44170ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush233 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f48000 x4405c000 x3cd80007}\n       {x44f4a000 x44044000 x3d70000d}\n       {x44f50000 x44044000 x3e967ff6}\n       {x44f54000 x44044000 x3edf0004}\n       {x44f5a000 x44040000 x3ec8fffc}\n       {x44f60000 x44050000 x3e9a8006}\n       {x44f62000 x4405c000 x3e9e0008}}}\n     {t\n      {{x41300000 x44f54dc3}}\n      {{x41300000 x4404c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush232 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ec6000 x43db8000 x3d900000}\n       {x44eca000 x43dc8000 x3e81fff8}\n       {x44eca000 x43dd0000 x3ecc7ffe}\n       {x44eca000 x43dc8000 x3f0b6007}\n       {x44eca000 x43db8000 0}}}\n     {t\n      {{x41300000 x44ec9333}}\n      {{x41300000 x43dc3333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush231 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e7c000 x43cc8000 x3d900000}\n       {x44e84000 x43cf8000 x3d8c0003}\n       {x44e88000 x43cd8000 x3f171fff}\n       {x44e84000 x43cc0000 x3e80fffc}}}\n     {t\n      {{x41300000 x44e83000}}\n      {{x41300000 x43cd6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush230 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ea8000 x43c80000 x3d800000}\n       {x44ea6000 x43c80000 x3d800000}}}\n     {t\n      {{x41300000 x44ea7000}}\n      {{x41300000 x43c80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush229 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44eb8000 x43c80000 x3dd9ffd6}\n       {x44eba000 x43c80000 x3ebd7ffa}\n       {x44eae000 x43c68000 x3f022004}}}\n     {t\n      {{x41300000 x44eb5571}}\n      {{x41300000 x43c78000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush228 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e64000 x43ab0000 x3d3bfff6}\n       {x44e66000 x43ab8000 x3d73fffd}\n       {x44e6c000 x43ab0000 x3ec57ffa}\n       {x44e76000 x43a98000 x3ee0fffc}\n       {x44e8a000 x43a98000 x3ece0008}\n       {x44e8e000 x43a98000 0}}}\n     {t\n      {{x41300000 x44e76000}}\n      {{x41300000 x43aa5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush227 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c0c000 x438d8000 x3ca7fff9}\n       {x44c08000 x438e8000 x3d07fff9}\n       {x44c06000 x438e8000 x3d24000a}\n       {x44c08000 x438e8000 x3e5c0011}\n       {x44c18000 x438e8000 x3ecc7ffe}}}\n     {t\n      {{x41300000 x44c0b99a}}\n      {{x41300000 x438e4ccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush226 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bcc000 x43220000 x3d4c0003}\n       {x44bd2000 x43170000 x3e4a0019}\n       {x44bd2000 x431a0000 x3e91fff8}}}\n     {t\n      {{x41300000 x44bd0000}}\n      {{x41300000 x431baac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush225 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44bf6000 x43520000 x3d07fff9}\n       {x44bfa000 x43520000 x3d1bfff6}\n       {x44bfc000 x43520000 x3d1bfff6}\n       {x44c00000 x43530000 x3d27fff9}\n       {x44c02000 x434d0000 x3e400000}\n       {x44c00000 x43470000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44bfd000}}\n      {{x41300000 x434f8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush224 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b4c000 x43350000 x3c880014}\n       {x44b52000 x43350000 x3d0ffff3}\n       {x44b5a000 x43350000 x3e580022}\n       {x44b5e000 x43310000 x3ed60008}\n       {x44b76000 x43340000 x3e31001d}\n       {x44b88000 x43350000 x3d780007}}}\n     {t\n      {{x41300000 x44b63571}}\n      {{x41300000 x43342ac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush223 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c30000 x42f20000 x3d000000}\n       {x44c36000 x42f20000 x3db3fffd}\n       {x44c3c000 x42f20000 x3e928006}\n       {x44c3c000 x42f60000 x3e2e0008}}}\n     {t\n      {{x41300000 x44c37800}}\n      {{x41300000 x42f30000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush222 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c78000 x41400000 x3cc80014}\n       {x44c80000 x41400000 x3d0ffff3}}}\n     {t\n      {{x41300000 x44c7c000}}\n      {{x41300000 x41400000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush221 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c68000 x41600000 x3d27fff9}\n       {x44c62000 x41800000 x3e400000}\n       {x44c68000 x41800000 x3e977ff1}\n       {x44c68000 x41700000 x3e38fffc}}}\n     {t\n      {{x41300000 x44c66800}}\n      {{x41300000 x41740000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush220 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b76000 x41400000 x3d24000a}\n       {x44b7c000 x41400000 x3e1effe3}\n       {x44bd6000 x41e00000 x3e75ffe7}\n       {x44be4000 x421c0000 x3e90800f}}}\n     {t\n      {{x41300000 x44bab000}}\n      {{x41300000 x41b60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush219 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a80000 0 x3ce7fff9}\n       {x44a86000 x40800000 x3d1bfff6}\n       {x44a9e000 x41000000 x3e18fffc}}}\n     {t\n      {{x41300000 x44a8c000}}\n      {{x41300000 x40800000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush218 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aca000 x42100000 x3c8ffff3}\n       {x44ada000 x42180000 x3d9dfffb}\n       {x44b00000 x424c0000 x3e630015}}}\n     {t\n      {{x41300000 x44ae1571}}\n      {{x41300000 x4226aab3}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush217 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a3e000 x42ae0000 x3d000000}\n       {x44a40000 x42b00000 x3d860002}\n       {x44a44000 x42b00000 x3e730015}\n       {x44a4c000 x42b00000 x3ea0fffc}\n       {x44a50000 x42b80000 x3e9f0004}\n       {x44a64000 x42bc0000 x3ea00000}\n       {x44a70000 x42c60000 x3e9f7ff1}}}\n     {t\n      {{x41300000 x44a5047b}}\n      {{x41300000 x42b5b6d6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush216 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4499c000 x43830000 x3d4c0003}\n       {x449a2000 x43830000 x3e61fff8}\n       {x449a2000 x43828000 0}}}\n     {t\n      {{x41300000 x449a0000}}\n      {{x41300000 x4382d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush215 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449b6000 x433b0000 x3d47fff9}\n       {x449b6000 x433d0000 x3e31001d}\n       {x449bc000 x433b0000 x3e61fff8}\n       {x449ce000 x43380000 x3e88800f}\n       {x449de000 x433a0000 x3e82fff3}}}\n     {t\n      {{x41300000 x449c4000}}\n      {{x41300000 x433a999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush214 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44920000 x435b0000 x3d1bfff6}\n       {x44926000 x435b0000 x3e8d7ffa}\n       {x44938000 x43560000 x3ed00000}\n       {x44938000 x43580000 x3ea8fffc}\n       {x44938000 x435e0000 x3e45ffe7}}}\n     {t\n      {{x41300000 x4492f99a}}\n      {{x41300000 x435a0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush213 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44870000 x43140000 x3d27fff9}\n       {x44872000 x43140000 x3e1effe3}\n       {x4488a000 x43100000 x3e8f0004}\n       {x44890000 x430e0000 x3df80022}\n       {x44894000 x43100000 0}}}\n     {t\n      {{x41300000 x44883333}}\n      {{x41300000 x43113333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush212 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4480a000 x42e80000 x3c980007}\n       {x4480c000 x42e80000 x3d04000a}\n       {x44810000 x42e40000 x3df80022}\n       {x44812000 x42e40000 x3e58fffc}\n       {x44812000 x42de0000 x3e9e7ff6}\n       {x4481c000 x42d80000 x3ea0800f}\n       {x44828000 x42e00000 x3ea0800f}\n       {x44824000 x42e40000 x3e9f0004}}}\n     {t\n      {{x41300000 x448163d7}}\n      {{x41300000 x42e24000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush211 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x446b8000 x43a70000 x3d380007}\n       {x446b8000 x43a80000 x3e5afff3}\n       {x446c4000 x43a58000 x3e89fff8}\n       {x446c4000 x43a50000 0}}}\n     {t\n      {{x41300000 x446be000}}\n      {{x41300000 x43a66000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush210 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44770000 x43ae8000 x3d1bfff6}\n       {x44778000 x43ae8000 x3e070004}\n       {x4477c000 x43af8000 x3ea8fffc}}}\n     {t\n      {{x41300000 x44776ab0}}\n      {{x41300000 x43aed560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush209 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x447dc000 x438c0000 x3cc00000}\n       {x447d0000 x438d8000 x3d13fffd}\n       {x447dc000 x438c0000 x3ea60008}\n       {x44804000 x438a8000 x3ebd000d}\n       {x44818000 x438b8000 x3e9d7ffa}\n       {x44812000 x438d0000 x3e580022}}}\n     {t\n      {{x41300000 x447fb51f}}\n      {{x41300000 x438c1560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush208 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4485e000 x43f98000 x3cc80014}\n       {x44860000 x43fa8000 x3d27fff9}\n       {x4486c000 x43f90000 x3e4c0011}}}\n     {t\n      {{x41300000 x44863571}}\n      {{x41300000 x43f9aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush207 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4487c000 x43ce0000 x3c880014}\n       {x4487e000 x43ce0000 x3d04000a}\n       {x44884000 x43cf0000 x3e770004}\n       {x44884000 x43cf8000 x3da3fffd}}}\n     {t\n      {{x41300000 x44880800}}\n      {{x41300000 x43cea000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush206 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448de000 x43b58000 x3cd80007}\n       {x448e2000 x43b58000 x3d27fff9}\n       {x448e8000 x43b60000 x3e23ffef}\n       {x448e8000 x43b30000 x3e960008}\n       {x448ea000 x43b30000 x3e200000}\n       {x448f6000 x43b40000 x3e63ffef}}}\n     {t\n      {{x41300000 x448e8000}}\n      {{x41300000 x43b48000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush205 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44932000 x43dc8000 x3d400000}\n       {x44932000 x43dd0000 x3e130015}\n       {x4493e000 x43dd0000 x3e51fff8}\n       {x44950000 x43db0000 x3e8b8002}}}\n     {t\n      {{x41300000 x4493c800}}\n      {{x41300000 x43dc6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush204 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a40000 x43fd8000 x3d89fffe}\n       {x44a46000 x44004000 x3e88800f}}}\n     {t\n      {{x41300000 x44a43000}}\n      {{x41300000 x43ff0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush203 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449d8000 x43f00000 x3cc00000}\n       {x449de000 x43f08000 x3e82fff3}\n       {x449e6000 x43f00000 x3e977ff1}\n       {x449ec000 x43f00000 0}}}\n     {t\n      {{x41300000 x449e2000}}\n      {{x41300000 x43f02000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush202 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44aa6000 x43c08000 x3d27fff9}\n       {x44aac000 x43bd8000 x3e100000}\n       {x44ab0000 x43bd8000 x3d27fff9}\n       {x44ab2000 x43bd8000 0}}}\n     {t\n      {{x41300000 x44aad000}}\n      {{x41300000 x43be4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush201 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a4c000 x43cb0000 x3d33fffd}\n       {x44a50000 x43cb0000 x3df9ffd6}\n       {x44a58000 x43ca8000 x3e430015}\n       {x44a56000 x43ca8000 0}}}\n     {t\n      {{x41300000 x44a52800}}\n      {{x41300000 x43cac000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush200 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x449de000 x43c20000 x3cc00000}\n       {x449e0000 x43c20000 x3d0c0003}\n       {x449e6000 x43c20000 x3d380007}\n       {x449ec000 x43bd8000 x3ea0800f}\n       {x449f6000 x43bc0000 x3eb28006}\n       {x44a04000 x43bd0000 x3e1afff3}}}\n     {t\n      {{x41300000 x449ec571}}\n      {{x41300000 x43bf6aa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush199 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44be8000 x43ea0000 x3d400000}\n       {x44bf4000 x43ea0000 x3e38fffc}\n       {x44bfc000 x43e88000 x3ed28006}}}\n     {t\n      {{x41300000 x44bf2a8f}}\n      {{x41300000 x43e98000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush198 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b48000 x43ee8000 x3ce7fff9}\n       {x44b46000 x43ee8000 x3d30000d}\n       {x44b36000 x43f00000 x3e65000d}\n       {x44b18000 x43f20000 x3ed67ff6}\n       {x44b10000 x43f18000 x3edd7ffa}\n       {x44b04000 x43f00000 x3e847ffe}\n       {x44afe000 x43f00000 x3e6cffeb}}}\n     {t\n      {{x41300000 x44b22000}}\n      {{x41300000 x43f0124e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush197 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d80000 x44034000 x3d400000}\n       {x44d80000 x44038000 x3e18fffc}\n       {x44d88000 x44038000 x3e8a8006}\n       {x44d8e000 x44040000 x3df5ffe7}\n       {x44d8c000 x44044000 x3e90800f}}}\n     {t\n      {{x41300000 x44d86ccd}}\n      {{x41300000 x4403b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush196 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cce000 x440f4000 x3c6fffd8}\n       {x44cde000 x440f4000 x3d180007}\n       {x44cea000 x440e8000 x3eb38002}\n       {x44cf0000 x440e8000 x3eac0011}\n       {x44d0a000 x44104000 x3e8f7ff1}\n       {x44d08000 x44100000 x3dbc0003}}}\n     {t\n      {{x41300000 x44ceea8f}}\n      {{x41300000 x440f4ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush195 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c44000 x442c0000 x3ca7fff9}\n       {x44c4e000 x442c0000 x3d07fff9}\n       {x44c4e000 x442bc000 x3ea1800a}\n       {x44c5a000 x442bc000 x3d900000}}}\n     {t\n      {{x41300000 x44c4e800}}\n      {{x41300000 x442be000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush194 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b9a000 x44374000 x3d200000}\n       {x44b9c000 x4437c000 x3d30000d}\n       {x44ba6000 x4437c000 x3e35ffe7}\n       {x44bac000 x44370000 x3eb00000}}}\n     {t\n      {{x41300000 x44ba2000}}\n      {{x41300000 x44377000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush193 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d1a000 x44400000 x3d27fff9}\n       {x44d20000 x44404000 x3db3fffd}}}\n     {t\n      {{x41300000 x44d1d000}}\n      {{x41300000 x44402000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush192 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d04000 x44428000 x3d07fff9}\n       {x44d08000 x4441c000 x3e867ff6}\n       {x44d14000 x44410000 x3e9a8006}}}\n     {t\n      {{x41300000 x44d0aa8f}}\n      {{x41300000 x4441c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush191 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44d2c000 x444f0000 x3c980007}\n       {x44d2e000 x444f0000 x3d13fffd}\n       {x44d32000 x444e8000 x3e4afff3}\n       {x44d38000 x444e4000 x3e9b8002}\n       {x44d44000 x444e8000 x3e8e7ff6}\n       {x44d52000 x444fc000 x3e80fffc}\n       {x44d52000 x44514000 x3e7e0008}\n       {x44d50000 x44524000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44d3f800}}\n      {{x41300000 x444f9000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush190 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b70000 x44748000 x3da3fffd}\n       {x44b72000 x44748000 x3e2effe3}\n       {x44b76000 x44748000 x3e8a8006}}}\n     {t\n      {{x41300000 x44b72a8f}}\n      {{x41300000 x44748000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush189 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b0c000 x4467c000 x3d67fff9}\n       {x44b0c000 x44680000 x3e13ffef}}}\n     {t\n      {{x41300000 x44b0c000}}\n      {{x41300000 x4467e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush188 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b5a000 x44580000 x3d27fff9}}}\n     {t\n      {{x41300000 x44b5a000}}\n      {{x41300000 x44580000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush187 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b72000 x444d0000 x3ce7fff9}\n       {x44b72000 x44508000 x3d67fff9}}}\n     {t\n      {{x41300000 x44b72000}}\n      {{x41300000 x444ec000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush186 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44b60000 x444f4000 x3cb0000d}\n       {x44b64000 x444f4000 x3d1bfff6}\n       {x44b6a000 x444e4000 x3dcc0003}\n       {x44b6c000 x444cc000 x3e4effe3}}}\n     {t\n      {{x41300000 x44b66800}}\n      {{x41300000 x444e6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush185 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44a02000 x44688000 x3d820005}\n       {x44a02000 x4468c000 x3d980007}\n       {x44a04000 x44688000 x3da7fff9}\n       {x44a0e000 x44674000 x3e43ffef}\n       {x44a10000 x44670000 x3e3a0019}\n       {x44a14000 x44670000 x3df5ffe7}\n       {x44a1a000 x4467c000 x3df80022}\n       {x44a1c000 x4467c000 x3e27ffde}}}\n     {t\n      {{x41300000 x44a0e000}}\n      {{x41300000 x4467d000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush184 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44978000 x4459c000 x3ce7fff9}\n       {x44972000 x4459c000 x3d30000d}\n       {x44978000 x4459c000 x3da60002}\n       {x4497e000 x4459c000 x3e200000}\n       {x44978000 x44590000 x3c000000}}}\n     {t\n      {{x41300000 x44978000}}\n      {{x41300000 x4459999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush183 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44938000 x4447c000 x3d44000a}\n       {x4493c000 x4446c000 x3dd1fff8}}}\n     {t\n      {{x41300000 x4493a000}}\n      {{x41300000 x44474000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush182 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448a2000 x44604000 x3d1bfff6}\n       {x448a6000 x44604000 x3e2cffeb}\n       {x448ac000 x44604000 x3e580022}\n       {x448b2000 x445f0000 x3e700000}}}\n     {t\n      {{x41300000 x448a9800}}\n      {{x41300000 x445ff000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush181 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44688000 x44778000 x3d67fff9}\n       {x44688000 x44784000 x3d9dfffb}\n       {x44694000 x44788000 0}}}\n     {t\n      {{x41300000 x4468c000}}\n      {{x41300000 x44781550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush180 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44598000 x446a8000 x3da3fffd}}}\n     {t\n      {{x41300000 x44598000}}\n      {{x41300000 x446a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush179 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44364000 x445f0000 x3d4ffff3}\n       {x44370000 x445f0000 x3d67fff9}\n       {x44364000 x445ec000 x3e5c0011}}}\n     {t\n      {{x41300000 x44368000}}\n      {{x41300000 x445eeab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush178 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44560000 x44430000 x3c6fffd8}\n       {x44568000 x44430000 x3c8ffff3}}}\n     {t\n      {{x41300000 x44564000}}\n      {{x41300000 x44430000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush177 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44500000 x44448000 x3d13fffd}\n       {x44518000 x44440000 x3d380007}\n       {x4452c000 x44438000 x3db00000}}}\n     {t\n      {{x41300000 x44516ab0}}\n      {{x41300000 x44440000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush176 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44344000 x44124000 x3cd80007}\n       {x44340000 x44118000 x3d07fff9}}}\n     {t\n      {{x41300000 x44342000}}\n      {{x41300000 x4411e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush175 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4434c000 x44194000 x3d07fff9}\n       {x4434c000 x44184000 x3d1bfff6}}}\n     {t\n      {{x41300000 x4434c000}}\n      {{x41300000 x4418c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush174 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44310000 x4420c000 x3cd80007}\n       {x4431c000 x44208000 x3d27fff9}\n       {x44320000 x44208000 x3df9ffd6}\n       {x44328000 x441fc000 x3df5ffe7}}}\n     {t\n      {{x41300000 x4431d000}}\n      {{x41300000 x44206000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush173 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4432c000 x442b8000 x3cc00000}\n       {x44320000 x442a4000 x3d180007}\n       {x44328000 x442a8000 x3e370004}\n       {x44334000 x442a8000 x3e5a0019}\n       {x44344000 x44298000 x3e65ffe7}\n       {x44358000 x4428c000 x3d53fffd}\n       {x4435c000 x44288000 x3d7bfff6}}}\n     {t\n      {{x41300000 x4433b6d9}}\n      {{x41300000 x4429edb2}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush172 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441a0000 x43ec0000 x3d27fff9}\n       {x441a0000 x43ed0000 x3e2cffeb}\n       {x441a0000 x43ee0000 x3e3cffeb}}}\n     {t\n      {{x41300000 x441a0000}}\n      {{x41300000 x43ed0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush171 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f80000 x43fd0000 x3d920005}\n       {x43f90000 x43fd0000 x3e0a0019}\n       {x43f78000 x43fa8000 x3e65ffe7}\n       {x43f80000 x43fb0000 x3e99800a}\n       {x43f98000 x43fc0000 0}}}\n     {t\n      {{x41300000 x43f86666}}\n      {{x41300000 x43fbe666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush170 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44194000 x44070000 x3d400000}\n       {x4419c000 x44070000 x3d4c0003}}}\n     {t\n      {{x41300000 x44198000}}\n      {{x41300000 x44070000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush169 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43610000 x43d38000 x3da3fffd}\n       {x43620000 x43d30000 x3e430015}\n       {x43640000 x43d10000 x3e1effe3}}}\n     {t\n      {{x41300000 x4362553f}}\n      {{x41300000 x43d28000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush168 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43938000 x43fd0000 x3d64000a}\n       {x43950000 x43fd0000 x3da20005}\n       {x43950000 x43fc0000 x3da7fff9}\n       {x43950000 x43fa8000 x3dac0003}\n       {x43948000 x43fa8000 0}}}\n     {t\n      {{x41300000 x4394999a}}\n      {{x41300000 x43fbcccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush167 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x424c0000 x437a0000 x3e2afff3}\n       {x42080000 x43860000 x3e91800a}}}\n     {t\n      {{x41300000 x422a0000}}\n      {{x41300000 x43818000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush166 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42d80000 x43440000 x3d04000a}\n       {x42c00000 x434d0000 x3de3ffef}\n       {x42b40000 x43500000 0}}}\n     {t\n      {{x41300000 x42c40000}}\n      {{x41300000 x434b0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush165 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a30000 x432c0000 x3d0c0003}\n       {x43a38000 x432e0000 x3e0c0011}\n       {x43a58000 x432f0000 x3e4effe3}\n       {x43a68000 x432f0000 0}}}\n     {t\n      {{x41300000 x43a4a000}}\n      {{x41300000 x432e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush164 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ba8000 x41200000 x3d33fffd}\n       {x43bc0000 x41100000 x3e580022}\n       {x43bb8000 x40c00000 x3e947ffe}}}\n     {t\n      {{x41300000 x43bb5560}}\n      {{x41300000 x41055552}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush163 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f68000 x42ba0000 x3d44000a}\n       {x43f80000 x42ba0000 x3de3ffef}\n       {x43f80000 x42bc0000 x3da00000}}}\n     {t\n      {{x41300000 x43f78000}}\n      {{x41300000 x42baaaa6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush162 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e30000 x42640000 x3d04000a}\n       {x43e60000 x42600000 x3d13fffd}\n       {x43ec0000 x424c0000 x3e180022}\n       {x43f20000 x42380000 x3e030015}\n       {x43f78000 x42040000 x3e1a0019}\n       {x43f78000 x42000000 0}}}\n     {t\n      {{x41300000 x43ee5560}}\n      {{x41300000 x4237554d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush161 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44164000 x41d80000 x3d07fff9}\n       {x44178000 x41d00000 x3d33fffd}\n       {x44178000 x41d80000 x3e270004}}}\n     {t\n      {{x41300000 x44171550}}\n      {{x41300000 x41d55567}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush160 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44280000 x42ae0000 x3d5bfff6}\n       {x44280000 x42b00000 x3e51001d}}}\n     {t\n      {{x41300000 x44280000}}\n      {{x41300000 x42af0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush159 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44268000 x42300000 x3cd80007}\n       {x44278000 x42300000 x3d0ffff3}\n       {x44290000 x42200000 x3ea80000}\n       {x4429c000 x42200000 x3eb8800f}\n       {x442a4000 x42300000 x3d13fffd}}}\n     {t\n      {{x41300000 x4428999a}}\n      {{x41300000 x4229999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush158 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44398000 x40c00000 x3cc00000}\n       {x443a0000 x40c00000 x3d580007}\n       {x443a4000 x40800000 x3e730015}}}\n     {t\n      {{x41300000 x4439eab0}}\n      {{x41300000 x40aaaaa4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush157 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443f4000 x42960000 x3cc00000}\n       {x443ec000 x42960000 x3d07fff9}\n       {x443e8000 x42960000 x3e800000}\n       {x443e8000 x42980000 x3e35ffe7}\n       {x443e0000 x42960000 x3e55000d}}}\n     {t\n      {{x41300000 x443e999a}}\n      {{x41300000 x42966666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush156 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44544000 x43460000 x3d30000d}\n       {x44548000 x43460000 x3e700000}\n       {x44554000 x43460000 x3e83ffef}}}\n     {t\n      {{x41300000 x4454aab0}}\n      {{x41300000 x43460000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush155 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44424000 x43650000 x3d000000}\n       {x44438000 x43650000 x3d04000a}\n       {x4444c000 x43650000 x3dfc0011}\n       {x44460000 x43620000 x3e867ff6}}}\n     {t\n      {{x41300000 x44442000}}\n      {{x41300000 x43644000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush154 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44518000 x437d0000 x3d000000}\n       {x44520000 x437f0000 x3d960002}\n       {x4452c000 x437d0000 x3e9d7ffa}}}\n     {t\n      {{x41300000 x44521550}}\n      {{x41300000 x437daac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush153 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44560000 x43858000 x3c8ffff3}\n       {x44568000 x43860000 x3d0ffff3}\n       {x44574000 x43858000 x3eb60008}\n       {x44578000 x43858000 x3ea80000}}}\n     {t\n      {{x41300000 x4456d000}}\n      {{x41300000 x4385a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush152 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44618000 x43c18000 x3d180007}\n       {x4461c000 x43c18000 x3dd40032}\n       {x44628000 x43bf0000 x3eaafff3}\n       {x44628000 x43be0000 x3e580022}}}\n     {t\n      {{x41300000 x44621000}}\n      {{x41300000 x43c00000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush151 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44470000 x43d10000 x3d200000}\n       {x44478000 x43d08000 x3dddffc5}\n       {x44484000 x43d00000 x3ed8fffc}}}\n     {t\n      {{x41300000 x44479550}}\n      {{x41300000 x43d08000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush150 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44588000 x43e00000 x3d33fffd}\n       {x4458c000 x43e00000 x3e55000d}\n       {x44588000 x43df0000 x3eb9800a}\n       {x44578000 x43de0000 x3c4ffff3}}}\n     {t\n      {{x41300000 x44585000}}\n      {{x41300000 x43df4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush149 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44560000 x43fd8000 x3d180007}\n       {x44570000 x43fd8000 x3d400000}}}\n     {t\n      {{x41300000 x44568000}}\n      {{x41300000 x43fd8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush148 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44544000 x44008000 x3d27fff9}\n       {x44550000 x44004000 x3e45ffe7}\n       {x44554000 x44000000 x3eb80000}\n       {x44550000 x43ff0000 x3c4ffff3}}}\n     {t\n      {{x41300000 x4454e000}}\n      {{x41300000 x44001000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush147 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44224000 x436e0000 x3df5ffe7}\n       {x44230000 x436b0000 x3e7afff3}}}\n     {t\n      {{x41300000 x4422a000}}\n      {{x41300000 x436c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush146 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44148000 x43940000 x3d70000d}\n       {x4414c000 x43940000 x3ea8fffc}\n       {x44154000 x43930000 x3e8e7ff6}}}\n     {t\n      {{x41300000 x4414d550}}\n      {{x41300000 x4393aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush145 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44130000 x43ac8000 x3d1bfff6}\n       {x44130000 x43ac0000 x3e95000d}}}\n     {t\n      {{x41300000 x44130000}}\n      {{x41300000 x43ac4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush144 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43eb0000 x43c70000 x3c800000}\n       {x43eb8000 x43c78000 x3d180007}\n       {x43eb8000 x43c80000 x3df5ffe7}\n       {x43ed0000 x43c80000 x3eb38002}\n       {x43ed8000 x43c80000 0}}}\n     {t\n      {{x41300000 x43ec199a}}\n      {{x41300000 x43c7b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush143 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43cd8000 x43828000 x3cb7ffec}\n       {x43ce0000 x43828000 x3e11fff8}}}\n     {t\n      {{x41300000 x43cdc000}}\n      {{x41300000 x43828000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush142 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d98000 x438e0000 x3c8ffff3}\n       {x43da0000 x438e0000 x3d1bfff6}\n       {x43db8000 x438e0000 x3e71fff8}}}\n     {t\n      {{x41300000 x43da5560}}\n      {{x41300000 x438e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush141 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e00000 x439d8000 x3d04000a}\n       {x43e18000 x439d8000 x3e947ffe}\n       {x43e18000 x439d0000 0}}}\n     {t\n      {{x41300000 x43e10000}}\n      {{x41300000 x439d5560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush140 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e00000 x43430000 x3d1bfff6}\n       {x43e10000 x43440000 x3dadfffb}\n       {x43e30000 x43430000 x3ea57ffa}}}\n     {t\n      {{x41300000 x43e15560}}\n      {{x41300000 x4343553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush139 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f00000 x436a0000 x3c9fffe5}\n       {x43ef0000 x436a0000 x3ce0001b}\n       {x43f00000 x436a0000 x3e938002}\n       {x43f00000 x43670000 x3ecd7ffa}\n       {x43f20000 x43680000 x3ebe0008}\n       {x43f38000 x436a0000 x3ea70004}\n       {x43f38000 x43680000 x3e03ffef}}}\n     {t\n      {{x41300000 x43f1249c}}\n      {{x41300000 x43690000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush138 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441cc000 x43250000 x3d44000a}\n       {x441d0000 x43250000 x3e31001d}}}\n     {t\n      {{x41300000 x441ce000}}\n      {{x41300000 x43250000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush137 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441ac000 x43060000 x3d0ffff3}\n       {x441b4000 x43060000 x3d600000}\n       {x441cc000 x43040000 x3eae0008}\n       {x441d0000 x43040000 x3e9afff3}\n       {x441d0000 x43060000 0}}}\n     {t\n      {{x41300000 x441c2666}}\n      {{x41300000 x43053333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush136 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44148000 x42480000 x3d180007}\n       {x44160000 x42400000 x3d3bfff6}\n       {x44170000 x42340000 x3ec0800f}\n       {x44178000 x42340000 0}}}\n     {t\n      {{x41300000 x44164000}}\n      {{x41300000 x423c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush135 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44104000 x41400000 x3d33fffd}\n       {x44110000 x41600000 x3d4c0003}\n       {x4411c000 x41400000 x3e730015}}}\n     {t\n      {{x41300000 x44110000}}\n      {{x41300000 x414aaace}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush134 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44094000 x41f00000 x3d27fff9}\n       {x44098000 x41f00000 x3e7c0011}\n       {x44098000 x41e00000 x3e880000}\n       {x440a4000 x41e00000 x3e63ffef}}}\n     {t\n      {{x41300000 x4409a000}}\n      {{x41300000 x41e80000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush133 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44034000 x429c0000 x3d24000a}\n       {x44038000 x429c0000 x3d400000}\n       {x44038000 x42980000 x3e90800f}\n       {x44040000 x429c0000 x3e730015}\n       {x44048000 x429c0000 x3e838002}\n       {x44050000 x42980000 x3e880000}\n       {x44050000 x42960000 x3e8c0011}\n       {x44058000 x42960000 x3e030015}}}\n     {t\n      {{x41300000 x44044800}}\n      {{x41300000 x42998000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42640000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush132 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44038000 x42fc0000 x3d1bfff6}\n       {x44038000 x42f80000 x3ea70004}\n       {x44034000 x42f80000 x3ec1800a}\n       {x4402c000 x42f80000 x3ebf0004}\n       {x44034000 x42f80000 x3eb60008}\n       {x44038000 x42f60000 x3eb70004}}}\n     {t\n      {{x41300000 x44034ab0}}\n      {{x41300000 x42f85581}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42780000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush131 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e60000 x42e40000 x3cf0000d}\n       {x43e40000 x42e00000 x3d07fff9}\n       {x43e28000 x42dc0000 x3e51fff8}\n       {x43e40000 x42dc0000 x3eac0011}\n       {x43e60000 x42d80000 x3eb3ffef}\n       {x43e70000 x42d40000 x3eb1fff8}\n       {x43e70000 x42de0000 x3e98800f}\n       {x43e60000 x42e40000 x3da3fffd}}}\n     {t\n      {{x41300000 x43e55000}}\n      {{x41300000 x42dd4000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush130 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44088000 x43040000 x3d27fff9}\n       {x44094000 x43040000 x3e1e0008}\n       {x440a0000 x43040000 x3e81fff8}\n       {x440a0000 x43020000 0}}}\n     {t\n      {{x41300000 x44097000}}\n      {{x41300000 x43038000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush129 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44034000 x43040000 x3d200000}\n       {x4405c000 x42f80000 x3d4c0003}}}\n     {t\n      {{x41300000 x44048000}}\n      {{x41300000 x43000000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush128 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4402c000 x42f80000 x3cb0000d}\n       {x44034000 x43010000 x3d04000a}}}\n     {t\n      {{x41300000 x44030000}}\n      {{x41300000 x42fd0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush127 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c40000 x432e0000 x3d2c0003}\n       {x42cc0000 x432e0000 x3dd40032}}}\n     {t\n      {{x41300000 x42c80000}}\n      {{x41300000 x432e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush126 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x427c0000 x43410000 x3c6fffd8}\n       {x428a0000 x43410000 x3d180007}\n       {x42940000 x43400000 x3d0ffff3}}}\n     {t\n      {{x41300000 x4289555a}}\n      {{x41300000 x4340aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush125 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42700000 x43760000 x3cf0000d}\n       {x42680000 x43760000 x3d400000}\n       {x42500000 x43760000 x3e15000d}\n       {x42500000 x43730000 x3e27ffde}}}\n     {t\n      {{x41300000 x425e0000}}\n      {{x41300000 x43754000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush124 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42a00000 x43760000 x3d04000a}\n       {x42940000 x437f0000 x3d2c0003}}}\n     {t\n      {{x41300000 x429a0000}}\n      {{x41300000 x437a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush123 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43070000 x43560000 x3d0c0003}\n       {x43040000 x43580000 x3de00000}\n       {x42de0000 x435b0000 x3ea00000}\n       {x42cc0000 x43610000 x3e970004}\n       {x42c80000 x436e0000 x3e828006}\n       {x42c60000 x436d0000 x3e81800a}\n       {x42c00000 x436e0000 x3d0ffff3}\n       {x42bc0000 x43730000 x3dee0008}\n       {x42b40000 x43770000 x3d24000a}}}\n     {t\n      {{x41300000 x42d51cac}}\n      {{x41300000 x4366c72b}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush122 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x431f0000 x43930000 x3d13fffd}\n       {x43200000 x43930000 x3d400000}\n       {x43240000 x43918000 x3e7effe3}\n       {x43250000 x43918000 x3e9a8006}\n       {x432b0000 x43918000 x3e9f0004}\n       {x432b0000 x43910000 x3d1bfff6}}}\n     {t\n      {{x41300000 x43250000}}\n      {{x41300000 x4391eaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42800000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush121 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e90000 x43c78000 x3d89fffe}\n       {x43ea0000 x43c90000 x3eb0800f}}}\n     {t\n      {{x41300000 x43e98000}}\n      {{x41300000 x43c84000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush120 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d38000 x43b58000 x3d4ffff3}\n       {x43d40000 x43b60000 x3ea38002}\n       {x43d58000 x43b60000 x3ec2fff3}\n       {x43d68000 x43b60000 x3e530015}\n       {x43d88000 x43b90000 x3dd80022}}}\n     {t\n      {{x41300000 x43d5999a}}\n      {{x41300000 x43b68000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush119 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43c18000 x438b0000 x3db80007}\n       {x43c50000 x438b8000 x3e9c0011}\n       {x43c38000 x438d0000 x3e400000}}}\n     {t\n      {{x41300000 x43c35560}}\n      {{x41300000 x438bd560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush118 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae8000 x43890000 x3d0ffff3}\n       {x43b00000 x43890000 x3d30000d}\n       {x43b48000 x43878000 x3d83fffd}\n       {x43b60000 x43870000 x3ea8800f}\n       {x43b70000 x43858000 x3ec00000}\n       {x43b88000 x43878000 x3e5effe3}\n       {x43ba8000 x43888000 x3e67ffde}}}\n     {t\n      {{x41300000 x43b50000}}\n      {{x41300000 x4387b6e9}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush117 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43930000 x43b60000 x3d73fffd}\n       {x43920000 x43b60000 x3e5e0008}}}\n     {t\n      {{x41300000 x43928000}}\n      {{x41300000 x43b60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush116 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43950000 x43a80000 x3d5bfff6}\n       {x43960000 x43a80000 x3eb1fff8}\n       {x43968000 x43a90000 x3edc7ffe}\n       {x43968000 x43ab0000 x3c980007}\n       {x43950000 x43ac0000 x3e6e0008}}}\n     {t\n      {{x41300000 x4395cccd}}\n      {{x41300000 x43a9999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush115 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43998000 x43978000 x3d27fff9}\n       {x43998000 x43980000 x3e4c0011}}}\n     {t\n      {{x41300000 x43998000}}\n      {{x41300000 x4397c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush114 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439d8000 x43870000 x3ce7fff9}\n       {x439e0000 x43870000 x3d27fff9}\n       {x439f8000 x43870000 x3e7effe3}\n       {x43a10000 x43870000 x3ea9800a}\n       {x43a30000 x43870000 x3d920005}}}\n     {t\n      {{x41300000 x439fcccd}}\n      {{x41300000 x43870000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3dcccccd bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush113 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x439e0000 x43840000 x3d13fffd}\n       {x439e0000 x43848000 x3d1bfff6}\n       {x439d8000 x43858000 x3db00000}}}\n     {t\n      {{x41300000 x439dd560}}\n      {{x41300000 x4384aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush112 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a30000 x43670000 x3d000000}\n       {x43a40000 x43670000 x3d1bfff6}\n       {x43a50000 x43680000 x3e570004}}}\n     {t\n      {{x41300000 x43a40000}}\n      {{x41300000 x4367553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush111 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43830000 x436e0000 x3d64000a}}}\n     {t\n      {{x41300000 x43830000}}\n      {{x41300000 x436e0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush110 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43830000 x43460000 x3d1bfff6}\n       {x43858000 x43460000 x3e41001d}\n       {x43878000 x43460000 x3e63ffef}}}\n     {t\n      {{x41300000 x43855560}}\n      {{x41300000 x43460000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush109 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x435b0000 x43190000 x3d180007}\n       {x435c0000 x431a0000 x3e0c0011}\n       {x435e0000 x431a0000 x3e61fff8}}}\n     {t\n      {{x41300000 x435c553f}}\n      {{x41300000 x4319aac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush108 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x40e00000 x42b80000 x3cc00000}\n       {x40c00000 x42ba0000 x3d04000a}\n       {x41200000 x42b80000 x3e93ffef}}}\n     {t\n      {{x41300000 x40f5555c}}\n      {{x41300000 x42b8aaa6}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush107 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b80000 x42c40000 x3d3bfff6}\n       {x43b88000 x42c60000 x3d980007}\n       {x43ba0000 x42c80000 x3ea0800f}}}\n     {t\n      {{x41300000 x43b8d560}}\n      {{x41300000 x42c60000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush106 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43878000 x42bc0000 x3d0c0003}\n       {x43888000 x42c00000 x3d1bfff6}\n       {x438b8000 x42c00000 x3ea0800f}\n       {x438d8000 x42bc0000 x3eb0fffc}\n       {x43918000 x42b00000 x3ea70004}\n       {x43930000 x42ae0000 x3e8b8002}\n       {x43960000 x42b00000 x3e7afff3}\n       {x43990000 x42b00000 x3e85000d}\n       {x439c0000 x42b40000 x3e7afff3}}}\n     {t\n      {{x41300000 x4390f1cb}}\n      {{x41300000 x42b671c4}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush105 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43610000 x40000000 x3d180007}\n       {x436a0000 x40400000 x3dc00000}\n       {x43760000 x40c00000 x3e5cffeb}\n       {x43790000 x41000000 x3e48fffc}\n       {x43770000 x41100000 0}}}\n     {t\n      {{x41300000 x43703333}}\n      {{x41300000 x40b33333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush104 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43010000 x42580000 x3d180007}\n       {x43060000 x42400000 x3e41fff8}}}\n     {t\n      {{x41300000 x43038000}}\n      {{x41300000 x424c0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush103 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c80000 x42400000 x3cf0000d}\n       {x42da0000 x42480000 x3d0ffff3}\n       {x42e00000 x424c0000 x3d380007}\n       {x42e40000 x424c0000 0}}}\n     {t\n      {{x41300000 x42d98000}}\n      {{x41300000 x42480000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush102 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42840000 x42000000 x3cf0000d}\n       {x42860000 x42000000 x3d27fff9}\n       {x42940000 x42000000 x3e61fff8}\n       {x429c0000 x41f00000 x3e23ffef}}}\n     {t\n      {{x41300000 x428e8000}}\n      {{x41300000 x41fc0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush101 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c80000 x41100000 x3d04000a}\n       {x42c80000 x41200000 x3d0c0003}\n       {x42ce0000 x41200000 x3e370004}\n       {x42d80000 x41100000 x3e43ffef}\n       {x42e40000 x41100000 x3e45000d}\n       {x42e00000 x41200000 x3de7ffde}\n       {x42de0000 x41200000 0}}}\n     {t\n      {{x41300000 x42d5b6c9}}\n      {{x41300000 x41192494}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush100 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42900000 x42b00000 x3c8ffff3}\n       {x42900000 x42b40000 x3d07fff9}\n       {x42960000 x42ac0000 x3e55000d}\n       {x42980000 x42ac0000 x3e470004}\n       {x42a20000 x42ae0000 x3e4c0011}\n       {x42a40000 x42b00000 x3df00043}}}\n     {t\n      {{x41300000 x4298aaa6}}\n      {{x41300000 x42af0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush99 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41980000 x43858000 x3d0ffff3}\n       {x41a80000 x43858000 x3d3bfff6}}}\n     {t\n      {{x41300000 x41a00000}}\n      {{x41300000 x43858000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush98 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41600000 x43970000 x3cf0000d}\n       {x41600000 x43978000 x3d180007}\n       {x41600000 x43970000 x3e4e0008}\n       {x41800000 x43980000 x3ec0fffc}\n       {x41f00000 x43970000 x3ed67ff6}\n       {x42100000 x43940000 x3ea80000}\n       {x42100000 x438f0000 x3dcc0003}\n       {x42080000 x438e0000 x3e03ffef}\n       {x42080000 x438d0000 0}}}\n     {t\n      {{x41300000 x41caaa99}}\n      {{x41300000 x4393d560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush97 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43060000 x432c0000 x3d1bfff6}\n       {x43020000 x432e0000 x3e07ffde}\n       {x43010000 x432e0000 0}}}\n     {t\n      {{x41300000 x43030000}}\n      {{x41300000 x432d553f}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush96 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43250000 x433a0000 x3d07fff9}\n       {x431f0000 x43380000 x3e45ffe7}\n       {x43100000 x433a0000 x3ea2fff3}\n       {x430d0000 x433b0000 x3ea38002}\n       {x43100000 x433e0000 x3ea0800f}\n       {x43110000 x433e0000 0}}}\n     {t\n      {{x41300000 x4315aac1}}\n      {{x41300000 x433b2ac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush95 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43410000 x43610000 x3d07fff9}\n       {x433d0000 x43640000 x3d2c0003}}}\n     {t\n      {{x41300000 x433f0000}}\n      {{x41300000 x43628000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush94 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43310000 x43640000 x3c980007}\n       {x43350000 x43640000 x3d180007}\n       {x433a0000 x43640000 x3ea38002}\n       {x43370000 x43620000 x3eae7ff6}\n       {x432f0000 x43620000 x3ecd7ffa}\n       {x43260000 x43650000 x3ecf0004}\n       {x43250000 x43680000 x3eca8006}\n       {x43250000 x436b0000 x3eca8006}\n       {x43240000 x436a0000 x3ec60008}\n       {x43200000 x436d0000 x3ebf7ff1}\n       {x43250000 x436a0000 x3e8b8002}\n       {x43280000 x436a0000 0}}}\n     {t\n      {{x41300000 x432b4000}}\n      {{x41300000 x4366eac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush93 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43580000 x43870000 x3cb7ffec}\n       {x43590000 x43878000 x3d13fffd}\n       {x43590000 x438a0000 x3e4effe3}\n       {x435b0000 x438a0000 x3e80fffc}\n       {x435c0000 x438b8000 x3e7effe3}\n       {x43650000 x438c0000 x3e71001d}\n       {x436a0000 x438b8000 x3e1c0011}\n       {x43730000 x438e0000 x3cf0000d}\n       {x43790000 x43900000 x3d860002}\n       {x437d0000 x43900000 x3e45000d}\n       {x43800000 x43910000 x3e857ffa}\n       {x43840000 x43918000 x3e847ffe}\n       {x43860000 x43920000 x3e838002}\n       {x43878000 x43940000 x3e730015}\n       {x43878000 x43930000 0}}}\n     {t\n      {{x41300000 x4371cccd}}\n      {{x41300000 x438dcccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42140000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush92 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42d20000 x43a20000 x3c880014}\n       {x42d80000 x43a20000 x3c0ffffd}}}\n     {t\n      {{x41300000 x42d50000}}\n      {{x41300000 x43a20000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush91 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c00000 x43a40000 x3ce7fff9}\n       {x42c40000 x43a50000 x3d180007}\n       {x42c40000 x43a30000 x3e980000}\n       {x42c40000 x43a20000 x3b40000b}}}\n     {t\n      {{x41300000 x42c30000}}\n      {{x41300000 x43a38000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush90 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43260000 x43c50000 x3d180007}\n       {x43260000 x43c60000 x3e47ffde}\n       {x432a0000 x43c50000 x3e9d7ffa}\n       {x432c0000 x43c48000 x3e88800f}\n       {x432e0000 x43c40000 x3c0ffffd}}}\n     {t\n      {{x41300000 x4329999a}}\n      {{x41300000 x43c4e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush89 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42de0000 x43cd8000 x3c6fffd8}\n       {x42e00000 x43cd0000 x3cf0000d}\n       {x42e40000 x43cd0000 x3e63ffef}\n       {x42ea0000 x43ce0000 x3e83ffef}\n       {x42f00000 x43ce0000 x3e83ffef}\n       {x42e80000 x43cf0000 x3e838002}\n       {x42e00000 x43d20000 x3e89fff8}\n       {x42e40000 x43d30000 x3e88800f}\n       {x42ec0000 x43d40000 x3e877ff1}\n       {x42ea0000 x43d60000 x3e6cffeb}\n       {x42ec0000 x43d68000 x3cb0000d}}}\n     {t\n      {{x41300000 x42e6ba5e}}\n      {{x41300000 x43d0ba3d}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush88 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41e00000 x43f78000 x3c60001b}\n       {x42000000 x43f60000 x3d1bfff6}\n       {x42080000 x43f48000 x3e61001d}\n       {x421c0000 x43f50000 x3e61001d}\n       {x42300000 x43f60000 x3e7afff3}\n       {x42300000 x43f50000 x3e8e7ff6}\n       {x42400000 x43f60000 x3e600000}\n       {x42480000 x43f70000 x3e65000d}\n       {x42500000 x43f70000 x3e6a0019}\n       {x42500000 x43f78000 x3d64000a}}}\n     {t\n      {{x41300000 x42293333}}\n      {{x41300000 x43f62666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush87 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42840000 x440a0000 x3d0ffff3}\n       {x42860000 x440a4000 x3d2c0003}\n       {x42840000 x440a0000 0}}}\n     {t\n      {{x41300000 x4284aaa6}}\n      {{x41300000 x440a1550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush86 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x440e8000 x3cc00000}\n       {x42180000 x440e8000 x3d400000}\n       {x42180000 x440ec000 x3e9c0011}\n       {x42180000 x440e8000 x3dddffc5}}}\n     {t\n      {{x41300000 x42160000}}\n      {{x41300000 x440e9000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush85 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41c80000 x4410c000 x3d000000}\n       {x41d80000 x4410c000 x3d1bfff6}\n       {x41f00000 x44100000 x3eac7ffe}\n       {x41f00000 x440f8000 x3b40000b}}}\n     {t\n      {{x41300000 x41e00000}}\n      {{x41300000 x44104000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush84 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x41980000 x440f4000 x3d04000a}\n       {x41980000 x440f8000 x3d2c0003}\n       {x41900000 x440f8000 x3e730015}\n       {x41b00000 x44104000 x3c8ffff3}\n       {x41b00000 x44100000 x3ca7fff9}}}\n     {t\n      {{x41300000 x41a00000}}\n      {{x41300000 x440fb333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush83 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42100000 x44038000 x3d400000}\n       {x41900000 x44028000 x3e45000d}\n       {x41700000 x44020000 x3eac7ffe}}}\n     {t\n      {{x41300000 x41b80000}}\n      {{x41300000 x4402aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush82 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42380000 x4408c000 x3c6fffd8}\n       {x42300000 x44080000 x3d0ffff3}\n       {x42300000 x44074000 x3c60001b}}}\n     {t\n      {{x41300000 x4232aab3}}\n      {{x41300000 x44080000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush81 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42300000 x44098000 x3ce0001b}\n       {x42340000 x440a0000 x3d04000a}\n       {x42400000 x440a4000 x3e23ffef}\n       {x42480000 x440a4000 x3e81800a}\n       {x424c0000 x440a4000 x3e71001d}\n       {x42500000 x440a4000 x3eb9fff8}\n       {x42580000 x440a4000 x3eb9fff8}\n       {x42640000 x440a0000 x3eba8006}\n       {x42700000 x440a0000 x3eaf0004}\n       {x42740000 x440ac000 x3e670004}\n       {x42740000 x440b0000 x3e81800a}\n       {x427c0000 x440ac000 x3e9f7ff1}\n       {x42800000 x440a4000 x3e18fffc}}}\n     {t\n      {{x41300000 x425a762b}}\n      {{x41300000 x440a44ee}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush80 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43bf0000 x446d8000 x3d30000d}\n       {x43c00000 x446d8000 x3d200000}}}\n     {t\n      {{x41300000 x43bf8000}}\n      {{x41300000 x446d8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush79 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43100000 x44608000 x3d0ffff3}\n       {x43100000 x44610000 x3d2c0003}\n       {x43100000 x44608000 x3d1bfff6}\n       {x43130000 x44610000 x3cb0000d}}}\n     {t\n      {{x41300000 x4310c000}}\n      {{x41300000 x4460c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush78 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a88000 x445c0000 x3ccffff3}\n       {x43aa0000 x445d4000 x3d6c0003}}}\n     {t\n      {{x41300000 x43a94000}}\n      {{x41300000 x445ca000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush77 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43aa0000 x445d8000 x3db20005}\n       {x43a80000 x445d4000 x3dddffc5}\n       {x43a70000 x445d0000 x3dd1fff8}\n       {x43a70000 x445c8000 x3b40000b}}}\n     {t\n      {{x41300000 x43a80000}}\n      {{x41300000 x445d1000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush76 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43828000 x44588000 x3dadfffb}\n       {x43828000 x44580000 x3da60002}}}\n     {t\n      {{x41300000 x43828000}}\n      {{x41300000 x44584000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush75 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43730000 x4449c000 x3d900000}\n       {x43710000 x444a0000 x3d900000}}}\n     {t\n      {{x41300000 x43720000}}\n      {{x41300000 x4449e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush74 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x436d0000 x44454000 x3d0ffff3}\n       {x436b0000 x44454000 0}}}\n     {t\n      {{x41300000 x436c0000}}\n      {{x41300000 x44454000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush73 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43400000 x443f8000 x3cb0000d}\n       {x433e0000 x443f8000 x3d4c0003}\n       {x433d0000 x443f4000 x3d7bfff6}\n       {x43410000 x443f0000 x3dd1fff8}\n       {x43430000 x443f0000 x3ddc0011}\n       {x43430000 x443e0000 x3d07fff9}}}\n     {t\n      {{x41300000 x4340553f}}\n      {{x41300000 x443f0ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush72 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43810000 x43d60000 x3c6fffd8}\n       {x43840000 x43d38000 x3cc00000}\n       {x43850000 x43d38000 x3e25000d}}}\n     {t\n      {{x41300000 x43835560}}\n      {{x41300000 x43d45560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush71 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43680000 x43d90000 x3d07fff9}\n       {x436a0000 x43d98000 x3d27fff9}\n       {x436b0000 x43da0000 x3e2cffeb}\n       {x436d0000 x43d98000 x3e61fff8}}}\n     {t\n      {{x41300000 x436a8000}}\n      {{x41300000 x43d98000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush70 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43650000 x43ea0000 x3d0ffff3}\n       {x436a0000 x43eb0000 x3dcc0003}\n       {x436e0000 x43e90000 x3e01001d}}}\n     {t\n      {{x41300000 x4369aac1}}\n      {{x41300000 x43ea0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush69 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43790000 x43ec0000 x3cc80014}\n       {x43740000 x43eb0000 x3d200000}\n       {x43740000 x43eb8000 x3d83fffd}\n       {x43740000 x43ed0000 x3df40032}\n       {x43730000 x43ed0000 x3e51001d}\n       {x43760000 x43ec0000 x3e88800f}\n       {x43790000 x43ec0000 x3e85000d}}}\n     {t\n      {{x41300000 x4375922d}}\n      {{x41300000 x43ec124e}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x41880000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush68 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43a38000 x44040000 x3d27fff9}\n       {x43a40000 x44040000 x3dadfffb}\n       {x43a40000 x44048000 x3e3cffeb}}}\n     {t\n      {{x41300000 x43a3d560}}\n      {{x41300000 x44042ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x420c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush67 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ae8000 x440a0000 x3cf0000d}\n       {x43af8000 x440a0000 x3e0a0019}\n       {x43ae8000 x44094000 x3e7c0011}\n       {x43ae8000 x44098000 x3cf0000d}}}\n     {t\n      {{x41300000 x43aec000}}\n      {{x41300000 x4409b000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x420c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush66 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ee8000 x44220000 x3cd80007}\n       {x43ed8000 x44214000 x3d04000a}\n       {x43ef0000 x4420c000 x3db9fffe}\n       {x43f00000 x441f0000 x3e92fff3}}}\n     {t\n      {{x41300000 x43eec000}}\n      {{x41300000 x4420c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush65 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43d88000 x441fc000 x3ca7fff9}\n       {x43d98000 x441fc000 x3d200000}\n       {x43db0000 x441f4000 x3e630015}\n       {x43db8000 x441f0000 x3db3fffd}}}\n     {t\n      {{x41300000 x43da2000}}\n      {{x41300000 x441f7000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush64 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f60000 x44334000 x3c800000}\n       {x43f60000 x44330000 x3ce0001b}}}\n     {t\n      {{x41300000 x43f60000}}\n      {{x41300000 x44332000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush63 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ed8000 x44338000 x3c9fffe5}\n       {x43ed8000 x44348000 x3d0c0003}\n       {x43ef0000 x44348000 x3e68fffc}\n       {x43f00000 x44348000 x3d180007}}}\n     {t\n      {{x41300000 x43ee8000}}\n      {{x41300000 x44344000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush62 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4428c000 x44640000 x3d33fffd}\n       {x44290000 x44640000 x3d83fffd}\n       {x44298000 x44638000 x3dadfffb}}}\n     {t\n      {{x41300000 x44291550}}\n      {{x41300000 x4463d550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush61 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44178000 x4464c000 x3d7bfff6}\n       {x44170000 x4464c000 x3da00000}\n       {x44170000 x44648000 x3e928006}}}\n     {t\n      {{x41300000 x44172ab0}}\n      {{x41300000 x4464aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush60 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42c80000 x444f8000 x3d04000a}\n       {x42c80000 x444e8000 x3d400000}\n       {x42d40000 x444e4000 x3dadfffb}\n       {x42d80000 x444e4000 x3cc80014}}}\n     {t\n      {{x41300000 x42cf0000}}\n      {{x41300000 x444ea000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush59 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b00000 x44530000 x3d780007}\n       {x43af8000 x44530000 x3db80007}}}\n     {t\n      {{x41300000 x43afc000}}\n      {{x41300000 x44530000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush58 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43fd8000 x445c8000 x3d44000a}\n       {x43fe0000 x445c8000 x3da7fff9}}}\n     {t\n      {{x41300000 x43fdc000}}\n      {{x41300000 x445c8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush57 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e10000 x4443c000 x3d4c0003}\n       {x43e18000 x4443c000 x3d64000a}\n       {x43e28000 x44438000 x3e730015}}}\n     {t\n      {{x41300000 x43e1aaa0}}\n      {{x41300000 x4443aab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush56 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43998000 x443f4000 x3d8c0003}\n       {x439a8000 x443f4000 x3d9c0003}\n       {x439d8000 x443e8000 x3e75ffe7}\n       {x439d8000 x443e0000 0}}}\n     {t\n      {{x41300000 x439bc000}}\n      {{x41300000 x443ec000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush55 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43680000 x441a0000 x3ccffff3}\n       {x43680000 x441a8000 x3d0c0003}\n       {x436a0000 x441a8000 x3e1c0011}\n       {x43680000 x441ac000 x3e670004}\n       {x436a0000 x441c0000 x3e960008}}}\n     {t\n      {{x41300000 x4368cccd}}\n      {{x41300000 x441ac000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush54 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x432c0000 x4417c000 x3cd80007}\n       {x432b0000 x4417c000 x3d07fff9}\n       {x432b0000 x44184000 x3e6e0008}\n       {x43310000 x44178000 x3eb5000d}\n       {x43380000 x4416c000 x3e9b8002}}}\n     {t\n      {{x41300000 x432f0000}}\n      {{x41300000 x4417999a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush53 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43060000 x43f40000 x3d04000a}\n       {x430a0000 x43f50000 x3d4c0003}\n       {x43080000 x43f50000 x3d83fffd}}}\n     {t\n      {{x41300000 x43080000}}\n      {{x41300000 x43f4aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush52 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42bc0000 x43e88000 x3c980007}\n       {x42ba0000 x43e88000 x3d4c0003}\n       {x42b40000 x43eb0000 x3e89800a}\n       {x42c60000 x43eb8000 x3e5c0011}}}\n     {t\n      {{x41300000 x42bc0000}}\n      {{x41300000 x43e9e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush51 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43380000 x43f10000 x3d04000a}\n       {x433a0000 x43f10000 x3d1bfff6}}}\n     {t\n      {{x41300000 x43390000}}\n      {{x41300000 x43f10000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush50 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43130000 x43e20000 x3c800000}\n       {x43140000 x43e00000 x3d30000d}\n       {x43190000 x43e10000 x3dc00000}\n       {x431a0000 x43e28000 x3e6cffeb}\n       {x43200000 x43e70000 x3e730015}\n       {x43220000 x43e90000 x3e67ffde}\n       {x431f0000 x43e88000 x3dfdffc5}\n       {x43200000 x43ea0000 x3d9dfffb}\n       {x432b0000 x43ed0000 x3e15ffe7}}}\n     {t\n      {{x41300000 x431d1c6a}}\n      {{x41300000 x43e5e396}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush49 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b00000 x43da0000 x3d000000}\n       {x43b00000 x43db0000 x3d27fff9}\n       {x43b30000 x43e00000 x3e0c0011}\n       {x43b28000 x43e10000 0}}}\n     {t\n      {{x41300000 x43b16000}}\n      {{x41300000 x43dd8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush48 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43b28000 x43d60000 x3cb0000d}\n       {x43b28000 x43d50000 x3d1bfff6}\n       {x43b48000 x43d38000 x3e8f7ff1}\n       {x43b80000 x43d30000 x3e9f0004}\n       {x43b90000 x43d30000 x3e13ffef}}}\n     {t\n      {{x41300000 x43b54ccd}}\n      {{x41300000 x43d4199a}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush47 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44118000 x43fd0000 x3d1bfff6}\n       {x4411c000 x43fe0000 x3e0a0019}\n       {x44124000 x43fe0000 x3c4ffff3}}}\n     {t\n      {{x41300000 x4411d550}}\n      {{x41300000 x43fdaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush46 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4416c000 x43ef0000 x3d04000a}\n       {x4416c000 x43f00000 x3d1bfff6}}}\n     {t\n      {{x41300000 x4416c000}}\n      {{x41300000 x43ef8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush45 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441b4000 x43de0000 x3d04000a}\n       {x441b8000 x43df0000 x3d30000d}\n       {x441d0000 x43df0000 x3ead7ffa}\n       {x441f0000 x43df0000 x3eaf7ff1}\n       {x44208000 x43df8000 x3d27fff9}}}\n     {t\n      {{x41300000 x441d7333}}\n      {{x41300000 x43dee666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush44 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44050000 x43c60000 x3ca7fff9}\n       {x44058000 x43c60000 x3d24000a}\n       {x44068000 x43c60000 x3ea80000}\n       {x4407c000 x43c70000 x3e55ffe7}\n       {x44088000 x43c78000 x3d70000d}}}\n     {t\n      {{x41300000 x4406a666}}\n      {{x41300000 x43c68000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush43 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4404c000 x43b28000 x3c6fffd8}\n       {x44050000 x43b28000 x3d0ffff3}\n       {x4404c000 x43b40000 x3eb38002}\n       {x4404c000 x43b50000 x3a7ffff7}}}\n     {t\n      {{x41300000 x4404d000}}\n      {{x41300000 x43b38000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush42 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44020000 x43a20000 x3d13fffd}\n       {x44028000 x43a30000 x3dddffc5}}}\n     {t\n      {{x41300000 x44024000}}\n      {{x41300000 x43a28000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush41 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4405c000 x43950000 x3cd80007}\n       {x44068000 x43950000 x3d1bfff6}\n       {x4407c000 x43950000 x3e21fff8}\n       {x4407c000 x43960000 0}}}\n     {t\n      {{x41300000 x4406f000}}\n      {{x41300000 x43954000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush40 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440f8000 x43840000 x3cd80007}\n       {x44104000 x43840000 x3e92fff3}\n       {x4410c000 x43830000 x3e99800a}}}\n     {t\n      {{x41300000 x44102ab0}}\n      {{x41300000 x4383aaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush39 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443b0000 x43828000 x3d4ffff3}\n       {x443b8000 x43828000 x3d900000}\n       {x443bc000 x43828000 x3e9c7ffe}}}\n     {t\n      {{x41300000 x443b6ab0}}\n      {{x41300000 x43828000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush38 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442f0000 x43840000 x3ce7fff9}\n       {x442f8000 x43840000 x3d180007}\n       {x44308000 x43840000 x3e870004}\n       {x44314000 x43840000 0}}}\n     {t\n      {{x41300000 x44301000}}\n      {{x41300000 x43840000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush37 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44358000 x43200000 x3cb0000d}\n       {x4435c000 x43200000 x3d0ffff3}\n       {x44370000 x431f0000 x3e4effe3}}}\n     {t\n      {{x41300000 x44361550}}\n      {{x41300000 x431faac1}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush36 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44280000 x434c0000 x3cd80007}\n       {x44280000 x434a0000 x3e89fff8}\n       {x4428c000 x43470000 x3e900000}\n       {x44290000 x43440000 x3dc60002}}}\n     {t\n      {{x41300000 x44287000}}\n      {{x41300000 x43484000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush35 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4437c000 x43550000 x3cc00000}\n       {x44380000 x43530000 x3d13fffd}\n       {x44394000 x434f0000 x3e51fff8}\n       {x443a4000 x434c0000 x3e6cffeb}\n       {x443d0000 x434c0000 x3e67ffde}\n       {x443f8000 x434d0000 x3e65ffe7}\n       {x44404000 x434f0000 x3b40000b}}}\n     {t\n      {{x41300000 x443b6db2}}\n      {{x41300000 x434f4937}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush34 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44388000 x43970000 x3cd80007}\n       {x44390000 x43970000 x3d24000a}\n       {x44394000 x43950000 x3e6a0019}\n       {x443a0000 x43948000 x3e55000d}}}\n     {t\n      {{x41300000 x44393000}}\n      {{x41300000 x4395e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush33 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44460000 x43a60000 x3ca7fff9}\n       {x44464000 x43a50000 x3d04000a}\n       {x4447c000 x43a30000 x3d1bfff6}\n       {x44494000 x43a30000 x3d1bfff6}\n       {x44494000 x43a20000 x3e90800f}}}\n     {t\n      {{x41300000 x4447b333}}\n      {{x41300000 x43a3cccd}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush32 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44394000 x43ac0000 x3cb7ffec}\n       {x44398000 x43ac0000 x3d200000}\n       {x443a4000 x43ab0000 x3e8a8006}\n       {x443b0000 x43a98000 x3ea2fff3}\n       {x443d4000 x43a98000 x3e947ffe}\n       {x443ec000 x43aa0000 x3c980007}}}\n     {t\n      {{x41300000 x443b5550}}\n      {{x41300000 x43aaaaa0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush31 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442c8000 x43c90000 x3d04000a}\n       {x442c8000 x43c80000 x3d27fff9}\n       {x442cc000 x43c70000 x3e7e0008}\n       {x442d4000 x43c60000 x3e8b8002}\n       {x442e0000 x43c78000 x3e65000d}}}\n     {t\n      {{x41300000 x442d0000}}\n      {{x41300000 x43c78000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush30 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4440c000 x43f00000 x3d0c0003}\n       {x44430000 x43ef0000 x3dc9fffe}\n       {x44430000 x43ee8000 x3e330015}\n       {x44428000 x43f00000 x3e33ffef}\n       {x44424000 x43f18000 x3e5afff3}\n       {x4441c000 x43f18000 x3c980007}}}\n     {t\n      {{x41300000 x44423550}}\n      {{x41300000 x43f01560}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush29 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44304000 x43e80000 x3cc80014}\n       {x44304000 x43e90000 x3d000000}\n       {x44304000 x43ea0000 x3d33fffd}\n       {x44308000 x43e90000 x3e35000d}\n       {x4431c000 x43e90000 x3e73ffef}\n       {x44320000 x43ea0000 x3e730015}\n       {x44310000 x43ec0000 x3e3c0011}\n       {x442f0000 x43ed0000 x3e45000d}\n       {x442f8000 x43ef0000 x3e4a0019}\n       {x44308000 x43f10000 x3e600000}\n       {x44308000 x43f18000 x3e5cffeb}\n       {x442f8000 x43f30000 x3e61fff8}\n       {x442f8000 x43f50000 x3e61fff8}\n       {x442f0000 x43f50000 0}}}\n     {t\n      {{x41300000 x44304000}}\n      {{x41300000 x43ed9b64}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush28 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44248000 x441e4000 x3d0c0003}\n       {x44268000 x44200000 x3d400000}}}\n     {t\n      {{x41300000 x44258000}}\n      {{x41300000 x441f2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush27 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44200000 x441c0000 x3d07fff9}\n       {x44208000 x441c0000 x3d27fff9}\n       {x44218000 x441d0000 x3dce0008}\n       {x44220000 x441d0000 x3dc3fffd}\n       {x44230000 x441dc000 x3d9dfffb}\n       {x4423c000 x441e4000 x3d820005}}}\n     {t\n      {{x41300000 x4421cab0}}\n      {{x41300000 x441d0000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4422c000 x44148000 x3ce0001b}\n       {x44230000 x44140000 x3cf0000d}\n       {x4423c000 x4413c000 x3dc60002}\n       {x44250000 x44134000 x3e170004}\n       {x4425c000 x44134000 x3e938002}\n       {x44260000 x4413c000 x3d30000d}}}\n     {t\n      {{x41300000 x44246000}}\n      {{x41300000 x4413c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ed0000 x44350000 x3d1bfff6}\n       {x43eb8000 x4434c000 x3d27fff9}}}\n     {t\n      {{x41300000 x43ec4000}}\n      {{x41300000 x4434e000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440ac000 x44224000 x3d1bfff6}\n       {x440ac000 x4422c000 x3da9fffe}\n       {x440a4000 x4422c000 x3e3e0008}}}\n     {t\n      {{x41300000 x440a9550}}\n      {{x41300000 x44229550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440c8000 x44194000 x3ca7fff9}\n       {x440d4000 x44194000 x3d0ffff3}\n       {x440f0000 x44184000 x3e400000}\n       {x440f4000 x44184000 x3e470004}}}\n     {t\n      {{x41300000 x440e0000}}\n      {{x41300000 x4418c000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44014000 x440dc000 x3cf7ffec}\n       {x44010000 x440c8000 x3d200000}\n       {x44008000 x440b0000 x3d780007}}}\n     {t\n      {{x41300000 x4400eab0}}\n      {{x41300000 x440c6ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44034000 x441c4000 x3cc80014}\n       {x44038000 x441c0000 x3cf0000d}\n       {x44040000 x4419c000 x3d33fffd}\n       {x44040000 x44178000 x3d27fff9}\n       {x44038000 x44118000 x3d27fff9}\n       {x4402c000 x440f8000 x3d47fff9}}}\n     {t\n      {{x41300000 x44038000}}\n      {{x41300000 x44171550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44028000 x441b8000 x3cc80014}\n       {x4402c000 x441a8000 x3d27fff9}\n       {x44040000 x44188000 x3d4c0003}\n       {x44038000 x44178000 x3dd5ffe7}\n       {x44034000 x44158000 x3dddffc5}}}\n     {t\n      {{x41300000 x44033333}}\n      {{x41300000 x4418b333}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43ff0000 x44244000 x3c800000}\n       {x43ff8000 x44238000 x3ca7fff9}\n       {x44014000 x44224000 x3d04000a}}}\n     {t\n      {{x41300000 x44002ab0}}\n      {{x41300000 x44235550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f90000 x44254000 x3cf7ffec}\n       {x43fa8000 x44254000 x3d1bfff6}\n       {x43fc0000 x44250000 x3d380007}}}\n     {t\n      {{x41300000 x43fa8000}}\n      {{x41300000 x44252ab0}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43e60000 x442a4000 x3c800000}\n       {x43e70000 x442a4000 x3ccffff3}\n       {x43ea0000 x442a4000 x3dac0003}\n       {x43ed0000 x442a4000 x3e2cffeb}\n       {x43f18000 x44290000 x3e2cffeb}\n       {x43f18000 x4428c000 x3dea0019}\n       {x43f20000 x44288000 x3ce7fff9}}}\n     {t\n      {{x41300000 x43ecb6e9}}\n      {{x41300000 x44299b75}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x440e8000 x44300000 x3d04000a}\n       {x44104000 x44300000 x3d3bfff6}\n       {x44124000 x442f8000 x3e7c0011}}}\n     {t\n      {{x41300000 x44105550}}\n      {{x41300000 x442fd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44244000 x44300000 x3d200000}\n       {x44268000 x44300000 x3d4c0003}\n       {x44298000 x442f8000 x3e770004}}}\n     {t\n      {{x41300000 x4426c000}}\n      {{x41300000 x442fd550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44308000 x443f4000 x3d07fff9}\n       {x44314000 x443f4000 x3d30000d}\n       {x4432c000 x443f0000 x3e82fff3}\n       {x44334000 x443f0000 0}}}\n     {t\n      {{x41300000 x4431f000}}\n      {{x41300000 x443f2000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x444d8000 x447b8000 x3dbc0003}\n       {x444e0000 x447b8000 x3dc20005}}}\n     {t\n      {{x41300000 x444dc000}}\n      {{x41300000 x447b8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44430000 x44620000 x3da20005}\n       {x44428000 x44620000 x3db9fffe}\n       {x44430000 x44620000 x3de3ffef}\n       {x44440000 x44620000 x3e90800f}\n       {x44448000 x44618000 x3e430015}}}\n     {t\n      {{x41300000 x44436666}}\n      {{x41300000 x4461e666}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443bc000 x44500000 x3d9dfffb}\n       {x443d4000 x44500000 x3dcc0003}\n       {x443ec000 x444f0000 x3e700000}\n       {x443f4000 x444e8000 x3c0ffffd}}}\n     {t\n      {{x41300000 x443dc000}}\n      {{x41300000 x444f6000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44734000 x44588000 x3c800000}\n       {x4473c000 x44588000 x3d89fffe}\n       {x44748000 x44580000 x3e977ff1}\n       {x4474c000 x44580000 0}}}\n     {t\n      {{x41300000 x44741000}}\n      {{x41300000 x44584000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445a4000 x44568000 x3d87fff9}\n       {x445b0000 x44568000 x3da7fff9}\n       {x445d4000 x44560000 x3e83ffef}\n       {x445f8000 x44560000 x3e977ff1}\n       {x44640000 x44560000 x3e9a8006}\n       {x4467c000 x44568000 x3ea28006}\n       {x44694000 x44578000 x3eae0008}\n       {x44694000 x44580000 x3e0cffeb}}}\n     {t\n      {{x41300000 x44620800}}\n      {{x41300000 x4456a000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44538000 x444c0000 x3d580007}\n       {x44530000 x444b8000 x3e947ffe}\n       {x4452c000 x444b8000 x3eb57ffa}\n       {x44520000 x444c0000 x3eb9800a}\n       {x44524000 x444c0000 x3eb70004}\n       {x44520000 x444b4000 x3eb3ffef}}}\n     {t\n      {{x41300000 x44529550}}\n      {{x41300000 x444bb550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x423c0000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44574000 x44338000 x3d4ffff3}\n       {x44578000 x44338000 x3d64000a}\n       {x44574000 x44338000 x3e03ffef}\n       {x44570000 x44338000 x3e6e0008}}}\n     {t\n      {{x41300000 x44574000}}\n      {{x41300000 x44338000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42540000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44550000 x442a8000 x3d33fffd}\n       {x4452c000 x442a8000 x3e98fffc}\n       {x44518000 x442a8000 x3e7effe3}}}\n     {t\n      {{x41300000 x44531550}}\n      {{x41300000 x442a8000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x445f0000 x4420c000 x3d44000a}\n       {x445f8000 x4420c000 x3e15ffe7}\n       {x445fc000 x44214000 x3e860008}\n       {x44610000 x44218000 x3eb9fff8}}}\n     {t\n      {{x41300000 x445fd000}}\n      {{x41300000 x44211000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44524000 x4416c000 x3cc00000}\n       {x44520000 x4416c000 x3d380007}\n       {x44538000 x4416c000 x3e75000d}\n       {x44560000 x44164000 x3eb70004}\n       {x44580000 x4414c000 x3ebd000d}\n       {x44588000 x44140000 x3eac7ffe}\n       {x4458c000 x44134000 x3e9d7ffa}}}\n     {t\n      {{x41300000 x4455924e}}\n      {{x41300000 x44158000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4471c000 x44130000 x3d0c0003}\n       {x44728000 x44130000 x3e2e0008}\n       {x44754000 x44118000 x3ef1800a}}}\n     {t\n      {{x41300000 x44732ab0}}\n      {{x41300000 x44128000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x448cc000 x44190000 x3d2c0003}\n       {x448d2000 x44190000 x3e2c0011}\n       {x448d0000 x44190000 x3ee28006}}}\n     {t\n      {{x41300000 x448cf571}}\n      {{x41300000 x44190000}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4473c000 x441c4000 x3cf0000d}\n       {x44748000 x441cc000 x3d200000}\n       {x4476c000 x441c4000 x3ec00000}\n       {x44790000 x441c0000 x3eeb8002}\n       {x447c0000 x441ac000 x3ef00000}\n       {x447d0000 x441a8000 x3eed000d}\n       {x447e4000 x441a0000 x3ee9800a}\n       {x447f0000 x441a0000 x3ee57ffa}\n       {x44800000 x441a0000 x3ee3ffef}\n       {x44804000 x441a0000 x3ed80000}\n       {x44808000 x441a8000 x3ed70004}\n       {x44804000 x441a8000 x3d04000a}}}\n     {t\n      {{x41300000 x447c051f}}\n      {{x41300000 x441af550}}     0\n      {{x41300000 0}}\n      {{x41300000 0}}     0 0 0\n      {{x41300000 0}}\n      {{x41300000 1}}\n      {{x41300000 1}}     1\n      {{x41300000 0}}}\n     {a ro 0 go 0 bo 0 ao 0 opc x3e99999a bs x42820000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x41300000 ltm x41300000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {smear {\n  { selectAll bs 172 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush opc 0.1 bs 37 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 ltt 0 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear bs 172 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 25 }\n} }\n  toolbar_brush_size 172\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_effect_parameter1 1\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  lifetime_type \"all frames\"\n  lifetime_start 39\n  lifetime_end 39\n  motionblur_on true\n  brush_type smear\n  brush_size 172\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  effect_parameter1 1\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint3\n  xpos 1706\n  ypos 14767\n  disable {{\"parent.lensDirtPicker == 0 ? 0 : 1\"}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44768000 x43fd0000}\n    {a opc x3ecccccd}\n    {cubiccurve Brush26 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cfe000 x44800000 x3d6c0003}\n       {x44d06000 x44800000 0}}}\n     {t\n   {{x41300000 x44d02000}}\n   {{x41300000 x44800000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush25 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44cb0000 x447e4000 x3e78fffc}\n       {x44ca8000 x44808000 x3ea67ff6}\n       {x44cba000 x4480e000 x3f071fff}\n       {x44cd0000 x44800000 x3f101ffb}\n       {x44cc8000 x44804000 x3c8ffff3}}}\n     {t\n   {{x41300000 x44cbb99a}}\n   {{x41300000 x44802666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush24 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44ca4000 x44730000 x3d400000}\n       {x44ca8000 x44744000 x3e380022}\n       {x44c80000 x44780000 x3e9a8006}\n       {x44c72000 x44778000 x3e63ffef}}}\n     {t\n   {{x41300000 x44c8f800}}\n   {{x41300000 x4475b000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush23 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44e84000 x4470c000 x3d180007}\n       {x44e96000 x446f8000 x3e25000d}\n       {x44ec0000 x44744000 x3eac7ffe}\n       {x44ec4000 x44768000 x3ebafff3}\n       {x44ecc000 x44778000 x3ebf7ff1}\n       {x44ec8000 x44780000 x3ec3ffef}\n       {x44ef6000 x447e4000 x3ec0800f}\n       {x44ef0000 x447e4000 x3ec00000}\n       {x44efa000 x447dc000 x3ea0fffc}\n       {x44ef6000 x447d4000 0}}}\n     {t\n   {{x41300000 x44ecd99a}}\n   {{x41300000 x44783333}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush22 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44878000 x44458000 x3cd80007}\n       {x448e6000 x44228000 x3d0ffff3}\n       {x4491a000 x44054000 x3d83fffd}}}\n     {t\n   {{x41300000 x448d2a8f}}\n   {{x41300000 x44246ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush21 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44808000 x44720000 x3d27fff9}\n       {x4480e000 x44728000 x3e33ffef}\n       {x44830000 x44668000 x3e400000}\n       {x44830000 x44540000 x3ec1800a}\n       {x4485a000 x444bc000 x3e67ffde}}}\n     {t\n   {{x41300000 x4482999a}}\n   {{x41300000 x44622666}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush20 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44380000 x4431c000 x3ce0001b}\n       {x44390000 x443c8000 x3d200000}\n       {x4439c000 x44514000 x3d9dfffb}\n       {x44388000 x445fc000 x3da3fffd}\n       {x44374000 x44698000 x3e500000}}}\n     {t\n   {{x41300000 x44388000}}\n   {{x41300000 x444e8ccd}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush19 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44338000 x442c4000 x3da7fff9}\n       {x44374000 x441ec000 x3e45ffe7}\n       {x44380000 x441c8000 x3e65ffe7}}}\n     {t\n   {{x41300000 x44364000}}\n   {{x41300000 x44228000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush18 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44380000 x44554000 x3d000000}\n       {x44390000 x4456c000 x3e27ffde}\n       {x44374000 x44580000 x3e6cffeb}\n       {x44348000 x445dc000 x3e7c0011}\n       {x44340000 x44650000 x3e4e0008}\n       {x44354000 x44650000 x3e01001d}}}\n     {t\n   {{x41300000 x44365550}}\n   {{x41300000 x445ca000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush17 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44338000 x444cc000 x3ce7fff9}\n       {x4431c000 x444f0000 x3d0c0003}}}\n     {t\n   {{x41300000 x4432a000}}\n   {{x41300000 x444de000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush16 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44348000 x44314000 x3d4c0003}\n       {x44308000 x44364000 x3e1cffeb}}}\n     {t\n   {{x41300000 x44328000}}\n   {{x41300000 x4433c000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush15 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44284000 x44278000 x3d380007}\n       {x4428c000 x4428c000 x3e3c0011}\n       {x442a0000 x4429c000 x3d200000}}}\n     {t\n   {{x41300000 x44290000}}\n   {{x41300000 x4428aab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush14 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43f30000 x43e48000 x3cc80014}\n       {x43fe0000 x43eb0000 x3d04000a}}}\n     {t\n   {{x41300000 x43f88000}}\n   {{x41300000 x43e7c000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush13 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f4a000 x42440000 x3e08fffc}\n       {x44f8e000 x41b00000 x3e8d000d}\n       {x44f8e000 x40000000 x3eca8006}\n       {x44f82000 x40800000 x3e67ffde}}}\n     {t\n   {{x41300000 x44f7a000}}\n   {{x41300000 x419a0000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush12 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x443d0000 x41900000 x3dd80022}\n       {x44404000 xc0a00000 x3e700000}\n       {x443ec000 xc0e00000 0}}}\n     {t\n   {{x41300000 x443eaab0}}\n   {{x41300000 x40000000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush11 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x42580000 x41100000 x3d30000d}\n       {x41b80000 x41900000 x3db3fffd}}}\n     {t\n   {{x41300000 x421a0000}}\n   {{x41300000 x41580000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush10 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x433d0000 x42f80000 x3cd80007}\n       {x432f0000 x42f20000 x3da7fff9}\n       {x431d0000 x42ca0000 x3df80022}\n       {x42be0000 x42240000 x3e1afff3}\n       {x42600000 x423c0000 x3e1c0011}\n       {x42860000 x42180000 x3e470004}\n       {x42880000 x41c80000 x3e938002}\n       {x42860000 x41b00000 x3e25000d}\n       {x42240000 x41d80000 x3d4ffff3}}}\n     {t\n   {{x41300000 x42cb5581}}\n   {{x41300000 x4272aab3}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush9 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x4417c000 x44624000 x3d47fff9}\n       {x44158000 x44648000 x3d7bfff6}}}\n     {t\n   {{x41300000 x4416a000}}\n   {{x41300000 x44636000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush8 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x441fc000 x4447c000 x3cc80014}\n       {x44198000 x44570000 x3dc9fffe}}}\n     {t\n   {{x41300000 x441ca000}}\n   {{x41300000 x444f6000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush7 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44f38000 x44674000 x3cd80007}\n       {x44f2c000 x44600000 x3dd1fff8}\n       {x44f22000 x44594000 x3e0afff3}}}\n     {t\n   {{x41300000 x44f2ca8f}}\n   {{x41300000 x44602ab0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush6 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44de8000 x447c8000 x3d27fff9}\n       {x44df0000 x44728000 x3df9ffd6}\n       {x44df4000 x44540000 x3e93ffef}\n       {x44df0000 x44278000 x3ed9800a}\n       {x44e3e000 x43ed8000 x3ee9fff8}\n       {x44e8a000 x43910000 x3ee38002}\n       {x44ecc000 x42fc0000 x3eb70004}}}\n     {t\n   {{x41300000 x44e30000}}\n   {{x41300000 x441cc000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush5 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44c56000 x446cc000 x3d27fff9}\n       {x44c46000 x4467c000 x3e07ffde}\n       {x44c1c000 x44484000 x3eaa8006}\n       {x44c14000 x443f4000 x3eb8fffc}\n       {x44bfe000 x44114000 x3ec60008}\n       {x44c2e000 x43c88000 x3ee67ff6}\n       {x44c56000 x437e0000 x3ef2fff3}\n       {x44c84000 x430e0000 x3ef77ff1}\n       {x44ca4000 x42340000 x3ef38002}\n       {x44cda000 xc2980000 x3ee28006}\n       {x44cec000 xc2f20000 x3cd80007}}}\n     {t\n   {{x41300000 x44c628a4}}\n   {{x41300000 x43d4174c}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush4 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44be2000 x44764000 x3d400000}\n       {x44ba8000 x43150000 x3d70000d}\n       {x44c02000 xc3190000 x3f01dffc}\n       {x44c8e000 xc3ab0000 x3ec28006}}}\n     {t\n   {{x41300000 x44c06800}}\n   {{x41300000 x431fc000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x442a0000 x43f98000 x3d580007}\n       {x442a0000 x43f10000 x3df1fff8}\n       {x44380000 x43a90000 x3e0a0019}\n       {x443f4000 x43780000 x3e25ffe7}\n       {x444f8000 x42f80000 x3e5afff3}\n       {x44564000 x42440000 x3e500000}\n       {x4459c000 xc1100000 x3e21fff8}}}\n     {t\n   {{x41300000 x44418927}}\n   {{x41300000 x43774937}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x44244000 x43c08000 x3d380007}\n       {x4424c000 x43d48000 x3e0effe3}\n       {x44268000 x43e30000 x3e1cffeb}}}\n     {t\n   {{x41300000 x44252ab0}}\n   {{x41300000 x43d2aaa0}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x41300000\n       {x43420000 x423c0000 x3cf7ffec}\n       {x43190000 x43030000 x3d30000d}\n       {x43140000 x434b0000 x3e92fff3}\n       {x432b0000 x436f0000 x3e92fff3}\n       {x43630000 x43730000 x3e9f0004}\n       {x439b0000 x43190000 x3eb28006}\n       {x43c38000 x42740000 x3ebd000d}\n       {x43dc8000 x41a00000 x3ebd7ffa}\n       {x43fc0000 x41900000 x3ebc0011}\n       {x440e4000 x42740000 x3ebb8002}\n       {x440f0000 x431e0000 x3eb70004}\n       {x440d4000 x43530000 x3e7afff3}\n       {x44190000 x43530000 x3e5afff3}\n       {x44268000 x430b0000 x3e61001d}\n       {x44294000 x42f80000 x3e180022}\n       {x4431c000 x42a60000 x3d1bfff6}}}\n     {t\n   {{x41300000 x43d7f810}}\n   {{x41300000 x43036000}}  0\n   {{x41300000 0}}\n   {{x41300000 0}}  0 0 0\n   {{x41300000 0}}\n   {{x41300000 1}}\n   {{x41300000 1}}  1\n   {{x41300000 0}}}\n     {a r x3e3851ec g x3e3851ec b x3e3851ec ro 0 go 0 bo 0 ao 0 opc x3d4ccccd bs x441d4000 bu 1 spx x44768000 spy x43fd0000 sb 1 ltn x421c0000 ltm x421c0000 tt x41600000 nv x40000000 view2 x40000000}}}}}}\n  toolbox {blur {\n  { selectAll bs 683 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 15 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0.18 g 0.18 b 0.18 opc 0.05 bs 629 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 14 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur bs 683 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 11 ltm 11 tt 23 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_size 683\n  toolbar_brush_hardness 0.200000003\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 11\n  toolbar_lifetime_end 11\n  toolbar_effect_parameter1 15\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {960 540}\n  color {0.1800000072 0.1800000072 0.1800000072 1}\n  colorOverlay {0 0 0 0}\n  opacity 0.05000000075\n  lifetime_type \"all frames\"\n  lifetime_start 39\n  lifetime_end 39\n  motionblur_on true\n  brush_size 629\n  brush_spacing 0.05000000075\n  brush_hardness 0.200000003\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint4\n  xpos 1706\n  ypos 14819\n  disable {{\"parent.lensDirtPicker == 0 ? 0 : 1\"}}\n }\n FrameHold {\n  name FrameHold4\n  xpos 1706\n  ypos 14863\n }\n Switch {\n  inputs 5\n  which {{parent.lensDirtPicker}}\n  name Switch2\n  xpos 1581\n  ypos 14989\n }\n Reformat {\n  resize fill\n  name Reformat2\n  xpos 1581\n  ypos 15029\n }\nset Ne37bd800 [stack 0]\n Dot {\n  name Dot55\n  xpos 1615\n  ypos 15232\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge9\n  xpos 1410\n  ypos 15228\n }\nset Ne37bcc00 [stack 0]\n Dot {\n  name Dot16\n  xpos 1334\n  ypos 15232\n }\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos 1300\n  ypos 16365\n }\n Phong {\n  inputs 0\n  color 0\n  specular 1.15\n  min_shininess 21.5\n  max_shininess 100\n  name Phong1\n  xpos 1907\n  ypos 15839\n }\n Camera2 {\n  inputs 0\n  focal 35\n  haperture 35.99992752\n  vaperture 23.99995222\n  name Camera2\n  xpos 1600\n  ypos 15819\n }\n Light2 {\n  inputs 0\n  intensity 3.8\n  falloff_type Linear\n  translate {{\"(((parent.flarePos.x - 0) * (15 - (-5))) / (1920 - 0)) + (-5)\"} {\"(((parent.flarePos.y - 0) * (8 - (-1))) / (1080 - 0)) + (-1)\"} 0}\n  depthmap_slope_bias 0.01\n  name Light1\n  xpos 1662\n  ypos 15727\n }\n Ramp {\n  inputs 0\n  p0 {100 540}\n  p1 {100 1080}\n  color {0 2.3 0 1}\n  color_panelDropped true\n  name Ramp3\n  xpos 3303\n  ypos 15097\n }\n Shuffle {\n  alpha red\n  name Shuffle12\n  xpos 3303\n  ypos 15123\n }\n Ramp {\n  inputs 0\n  p0 {100 540}\n  p1 {100 0}\n  color {0 -2.3 0 1}\n  color_panelDropped true\n  name Ramp4\n  xpos 3397\n  ypos 15097\n }\n Shuffle {\n  alpha white\n  name Shuffle13\n  xpos 3397\n  ypos 15123\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge34\n  xpos 3351\n  ypos 15186\n }\n Dot {\n  name Dot53\n  xpos 3385\n  ypos 15263\n }\n Ramp {\n  inputs 0\n  p0 {960 100}\n  p1 {1920 100}\n  color {4.1 0 0 1}\n  color_panelDropped true\n  name Ramp1\n  xpos 3075\n  ypos 15097\n }\n Shuffle {\n  alpha red\n  name Shuffle14\n  xpos 3075\n  ypos 15123\n }\n Ramp {\n  inputs 0\n  p0 {960 100}\n  p1 {0 100}\n  color {-4.1 0 0 1}\n  color_panelDropped true\n  name Ramp2\n  xpos 3170\n  ypos 15098\n }\n Shuffle {\n  alpha white\n  name Shuffle15\n  xpos 3170\n  ypos 15124\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge35\n  xpos 3127\n  ypos 15184\n }\n Ramp {\n  inputs 0\n  p0 {-576 534}\n  p1 {-48 536}\n  color {0 0 -8.3 1}\n  color_panelDropped true\n  name Ramp5\n  xpos 2958\n  ypos 15095\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge36\n  xpos 2958\n  ypos 15184\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge38\n  xpos 2958\n  ypos 15259\n }\n Shuffle {\n  name Shuffle11\n  xpos 2958\n  ypos 15314\n }\n Dot {\n  name Dot54\n  xpos 2992\n  ypos 15738\n }\npush $Ne37bd800\n Dilate {\n  size 1\n  name Dilate1\n  xpos 1691\n  ypos 15023\n }\n Grade {\n  blackpoint 0.017\n  black 0.055\n  white 2.1\n  multiply 1.6\n  gamma 1.85\n  name Grade53\n  xpos 1801\n  ypos 15029\n  disable true\n }\n Dot {\n  name Dot134\n  xpos 1716\n  ypos 15081\n }\nset N8d3f6400 [stack 0]\n Dot {\n  name Dot135\n  xpos 1928\n  ypos 15081\n }\nset N8d3f6000 [stack 0]\n Dot {\n  name Dot137\n  xpos 2142\n  ypos 15081\n }\nset N8d3f5c00 [stack 0]\n Dot {\n  name Dot139\n  xpos 2355\n  ypos 15081\n }\nset N8d3f5800 [stack 0]\n Emboss {\n  channels rgb\n  Angle 270\n  Width {{parent.Emboss1.Width}}\n  name Emboss4\n  xpos 2321\n  ypos 15175\n }\n Grade {\n  blackpoint 0.5\n  name Grade51\n  xpos 2321\n  ypos 15229\n }\n Dot {\n  name Dot138\n  xpos 2355\n  ypos 15288\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {-0.5 0 0 0}\n  color_panelDropped true\n  name Constant13\n  xpos 2419\n  ypos 15134\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy20\n  xpos 2419\n  ypos 15278\n }\n Premult {\n  name Premult5\n  xpos 2419\n  ypos 15321\n }\n Dot {\n  name Dot142\n  xpos 2453\n  ypos 15558\n }\npush $N8d3f5c00\n Emboss {\n  channels rgb\n  Angle 90\n  Width {{parent.Emboss1.Width}}\n  name Emboss3\n  xpos 2108\n  ypos 15176\n }\n Grade {\n  blackpoint 0.5\n  name Grade42\n  xpos 2108\n  ypos 15230\n }\n Dot {\n  name Dot136\n  xpos 2142\n  ypos 15289\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0.5 0 0 0}\n  color_panelDropped true\n  name Constant12\n  xpos 2206\n  ypos 15135\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy19\n  xpos 2206\n  ypos 15279\n }\n Premult {\n  name Premult4\n  xpos 2206\n  ypos 15322\n }\n Dot {\n  name Dot141\n  xpos 2240\n  ypos 15474\n }\npush $N8d3f6000\n Emboss {\n  channels rgb\n  Angle 180\n  Width {{parent.Emboss1.Width}}\n  name Emboss2\n  xpos 1894\n  ypos 15176\n }\n Grade {\n  blackpoint 0.5\n  name Grade22\n  xpos 1894\n  ypos 15231\n }\n Dot {\n  name Dot133\n  xpos 1928\n  ypos 15290\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 -0.5 0 0}\n  color_panelDropped true\n  name Constant11\n  xpos 1992\n  ypos 15136\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy10\n  xpos 1992\n  ypos 15280\n }\n Premult {\n  name Premult3\n  xpos 1992\n  ypos 15323\n }\n Dot {\n  name Dot140\n  xpos 2026\n  ypos 15406\n }\npush $N8d3f6400\n Emboss {\n  channels rgb\n  Width 1.48\n  name Emboss1\n  xpos 1682\n  ypos 15174\n }\n Grade {\n  blackpoint 0.5\n  name Grade12\n  xpos 1682\n  ypos 15228\n }\n Dot {\n  name Dot132\n  xpos 1716\n  ypos 15287\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0.5 0 0}\n  color_panelDropped true\n  name Constant10\n  xpos 1780\n  ypos 15133\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy8\n  xpos 1780\n  ypos 15277\n }\n Premult {\n  name Premult2\n  xpos 1780\n  ypos 15320\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge30\n  xpos 1780\n  ypos 15402\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge33\n  xpos 1780\n  ypos 15470\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0\n  name Merge84\n  xpos 1780\n  ypos 15554\n }\npush $N8d3f5800\n Dot {\n  name Dot143\n  xpos 2605\n  ypos 15081\n }\n Blur {\n  size 22.5\n  name Blur33\n  xpos 2571\n  ypos 15175\n }\nset N8d339000 [stack 0]\n Dot {\n  name Dot145\n  xpos 2709\n  ypos 15185\n }\n Dot {\n  name Dot144\n  xpos 2709\n  ypos 15250\n }\npush $N8d339000\n Merge2 {\n  inputs 2\n  operation average\n  name Merge126\n  xpos 2571\n  ypos 15246\n }\n Dot {\n  name Dot146\n  xpos 2605\n  ypos 15293\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0 0.5 1}\n  color_panelDropped true\n  name Constant14\n  xpos 2754\n  ypos 15136\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy21\n  xpos 2754\n  ypos 15283\n }\n Premult {\n  name Premult6\n  xpos 2754\n  ypos 15332\n }\n Dot {\n  name Dot147\n  xpos 2788\n  ypos 15603\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge127\n  xpos 1780\n  ypos 15599\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0.2122307271 0.2122307271 0.9999998808 1}\n  name Constant15\n  xpos 1612\n  ypos 15512\n }\n Dot {\n  name Dot148\n  xpos 1646\n  ypos 15636\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge128\n  xpos 1780\n  ypos 15632\n }\nadd_layer {normal normal.r normal.g normal.b}\n Shuffle {\n  out normal\n  name Shuffle18\n  xpos 1780\n  ypos 15669\n }\nadd_layer {pointPos pointPos.r pointPos.g pointPos.b}\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 pointPos.r\n  from1 rgba.green\n  to1 pointPos.g\n  from2 rgba.blue\n  to2 pointPos.b\n  name Copy12\n  xpos 1780\n  ypos 15715\n }\n ReLight {\n  inputs 4\n  normal normal\n  position pointPos\n  name ReLight1\n  xpos 1780\n  ypos 15839\n }\n Grade {\n  blackpoint 0.01\n  whitepoint 0.56\n  white_clamp true\n  name Grade23\n  xpos 1780\n  ypos 15885\n }\n Dot {\n  name Dot57\n  xpos 1814\n  ypos 15948\n }\npush $Ne37bcc00\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge39\n  xpos 1410\n  ypos 15944\n  disable {{!parent.lensDirtCalculation}}\n }\n Grade {\n  white {{parent.lensDirtBoost}}\n  name Grade13\n  xpos 1410\n  ypos 16277\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy1\n  xpos 1410\n  ypos 16359\n }\n Switch {\n  inputs 2\n  which {{parent.lensDirtRangePreview}}\n  name Switch4\n  xpos 1410\n  ypos 16500\n }\n Dot {\n  name Dot56\n  xpos 1444\n  ypos 16594\n }\nset N8d28f400 [stack 0]\n Defocus {\n  defocus {{parent.lensDirtBlur}}\n  ratio {{parent.lensBlurAspectRatio}}\n  quality 10\n  name Defocus1\n  xpos 1501\n  ypos 16633\n }\n Dot {\n  name Dot17\n  xpos 1535\n  ypos 16724\n }\npush $N8d28f400\n Blur {\n  size {{\"parent.lensDirtBlur * parent.lensBlurAspectRatio\"} {parent.lensDirtBlur}}\n  name Blur4\n  xpos 1410\n  ypos 16631\n }\n Switch {\n  inputs 2\n  which {{parent.lensDirtBlurType}}\n  name Switch3\n  xpos 1410\n  ypos 16720\n }\n Clamp {\n  name Clamp9\n  xpos 1300\n  ypos 16714\n }\n Radial {\n  inputs 0\n  area {0 0 {root.width} {root.height}}\n  name Radial1\n  xpos 752\n  ypos 16175\n }\n Grade {\n  channels all\n  blackpoint {{parent.centerFalloffAdjust}}\n  name Grade7\n  xpos 752\n  ypos 16214\n }\nset N8d28dc00 [stack 0]\n Grade {\n  multiply {1 0 0 1}\n  name Grade6\n  xpos 752\n  ypos 16262\n }\n Dot {\n  name Dot9\n  xpos 786\n  ypos 16359\n }\npush $N8d28dc00\npush $N8fe56000\n Grade {\n  multiply 0.28\n  maskChannelMask none\n  name Bloom_Grade\n  xpos 605\n  ypos 16289\n }\n Noise {\n  inputs 0\n  size 18\n  zoffset 1.1\n  center {960 540}\n  name Noise29\n  xpos -242\n  ypos 14193\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name Shuffle46\n  xpos -242\n  ypos 14219\n }\n Noise {\n  inputs 0\n  size 18\n  zoffset 0.92\n  center {960 540}\n  name Noise28\n  xpos -337\n  ypos 14194\n }\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name Shuffle45\n  xpos -337\n  ypos 14220\n }\n Noise {\n  inputs 0\n  size 18\n  center {960 540}\n  name Noise27\n  xpos -428\n  ypos 14195\n }\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name Shuffle42\n  xpos -428\n  ypos 14221\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge327\n  xpos -428\n  ypos 14265\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge328\n  xpos -428\n  ypos 14304\n }\nset N8d20ac00 [stack 0]\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle47\n  xpos -428\n  ypos 14355\n }\n Invert {\n  mix 0.3\n  name Invert5\n  xpos -428\n  ypos 14381\n }\n Blur {\n  size 10.5\n  name Blur171\n  xpos -428\n  ypos 14419\n }\nset N8d20a000 [stack 0]\npush $N8d20ac00\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {77.07 80 82.45}\n  size_mult 2\n  inner_color 0\n  name Flare249\n  xpos -88\n  ypos 13975\n  disable {{\"parent.dogSchidtType == 1 ? 0 : 1\"}}\n }\n Transform {\n  translate {0 159}\n  center {{root.width/2} {root.height/2}}\n  name Transform122\n  xpos -88\n  ypos 14033\n }\nset N8d209400 [stack 0]\n Transform {\n  scale {{parent.dogSchidtThickness}}\n  center {{root.width/2} {root.height/2}}\n  name Transform125\n  xpos 16\n  ypos 14065\n }\npush $N8d209400\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge331\n  xpos -88\n  ypos 14095\n }\n Transform {\n  rotate {{parent.dogSchidtRotation}}\n  scale {{\"parent.dogSchidtSize * parent.dogSchidtAnamorph * parent.flareCoreSize\"} {\"parent.dogSchidtSize * parent.flareCoreSize\"}}\n  center {{root.width/2} {root.height/2}}\n  name Transform123\n  xpos -88\n  ypos 14147\n }\nset N8d208800 [stack 0]\n Transform {\n  scale -1\n  center {{root.width/2} {root.height/2}}\n  name Transform124\n  xpos 27\n  ypos 14173\n }\npush $N8d208800\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge330\n  xpos -88\n  ypos 14208\n }\n Transform {\n  translate {{\"parent.flarePos.x - root.width/2\"} {\"parent.flarePos.y - root.height/2\"}}\n  center {960 540}\n  name Transform126\n  xpos -88\n  ypos 14262\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge332\n  xpos -88\n  ypos 14304\n }\n DirBlurWrapper {\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 130\n  Samples 0.25\n  name DirBlurWrapper28\n  xpos -88\n  ypos 14358\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge333\n  xpos -88\n  ypos 14425\n }\nset N8d192c00 [stack 0]\n Glow2 {\n  tint {1.046667 0.906667 1.046667 1}\n  tint_panelDropped true\n  brightness 3.78\n  saturation 0.755\n  effect_only true\n  size 46\n  name Glow21\n  xpos 16\n  ypos 14446\n }\npush $N8d192c00\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.23\n  name Merge334\n  xpos -88\n  ypos 14477\n }\npush $N8d20a000\npush $N8d20ac00\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {82.92 94.15 108.3}\n  size_mult 4\n  inner_color 0\n  name Flare248\n  xpos -566\n  ypos 14001\n  disable {{\"parent.dogSchidtType == 0 ? 0 : 1\"}}\n }\nset N8d192000 [stack 0]\npush $N8d192000\n Transform {\n  translate {4 -14}\n  scale {{parent.dogSchidtThickness}}\n  center {{parent.Flare248.position.x} {parent.Flare248.position.y}}\n  name Transform120\n  xpos -495\n  ypos 14049\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge324\n  xpos -566\n  ypos 14105\n  disable {{parent.Flare248.disable}}\n }\n Transform {\n  translate {0 400}\n  name Transform119\n  xpos -566\n  ypos 14151\n }\n Transform {\n  translate {{\"parent.flarePos.x - root.width/2\"} {\"parent.flarePos.y - root.height/2\"}}\n  rotate {{\"-1*(degrees(atan2(root.width/2 - parent.flarePos.x, root.height/2 - parent.flarePos.y)))\\n\"}}\n  center {{root.width/2} {root.height/2}}\n  name Transform118\n  xpos -566\n  ypos 14201\n }\n Transform {\n  scale {{\"parent.flareCoreSize * parent.dogSchidtSize\"}}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform121\n  xpos -566\n  ypos 14251\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix 0.855\n  name Merge326\n  xpos -566\n  ypos 14304\n  disable {{parent.Flare248.disable}}\n }\n Grade {\n  blackpoint 0.035\n  name Grade105\n  xpos -566\n  ypos 14330\n }\n DirBlurWrapper {\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 184\n  Samples 0.2\n  name DirBlurWrapper27\n  xpos -566\n  ypos 14367\n  disable {{parent.Flare248.disable}}\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge329\n  xpos -566\n  ypos 14446\n  disable {{parent.Flare248.disable}}\n }\n Saturation {\n  saturation 1.48\n  name Saturation38\n  xpos -566\n  ypos 14494\n }\n Grade {\n  whitepoint 0.1\n  white 0.4\n  multiply 0.5\n  name Grade107\n  xpos -566\n  ypos 14520\n }\nset N8d12ec00 [stack 0]\n Switch {\n  inputs 2\n  which {{parent.dogSchidtType}}\n  name Switch14\n  xpos -566\n  ypos 14650\n }\n Grain2 {\n  name Grain2_1\n  label \"Kodak 5248\"\n  xpos -566\n  ypos 14682\n  red_m 0.22\n  green_m 0.24\n  blue_m 0.245\n  black {0 0 0}\n  minimum {0 0 0}\n  maskgrain false\n }\n Blur {\n  size 2\n  name Blur172\n  xpos -566\n  ypos 14720\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop11\n  xpos -566\n  ypos 14776\n }\n Clamp {\n  name Clamp10\n  xpos 127\n  ypos 14770\n }\n Grade {\n  multiply {{parent.dogSchidtTint.r} {parent.dogSchidtTint.g} {parent.dogSchidtTint.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade5\n  label \"dog schidt grade\"\n  xpos 302\n  ypos 14770\n }\n Blur {\n  size {{parent.dogSchidtBlur}}\n  name Blur170\n  label \"dog schidt blur\"\n  note_font Verdana\n  xpos 428\n  ypos 14765\n }\n Group {\n  name Static_Noise9\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 553\n  ypos 14777\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N8d093400 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N8d093400\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N8d092400 [stack 0]\npush $N8d092400\npush $N8d093400\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot174\n  xpos 678\n  ypos 14780\n }\nset N8d091800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation36\n  xpos 645\n  ypos 14826\n }\npush $N8d091800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy15\n  xpos 788\n  ypos 14770\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.08\n  radius {262.81 269.91 269.91}\n  size_mult {{parent.Flare324.size_mult}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.Flare323.corners_angle}}\n  name Flare299\n  xpos -234\n  ypos 12873\n  disable {{parent.Sparkles6.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform68\n  xpos -234\n  ypos 12899\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.18\n  radius {156.26 160.52 261.37}\n  size_mult {{parent.Flare324.size_mult}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.Flare323.corners_angle}}\n  name Flare314\n  xpos -241\n  ypos 12840\n  disable {{parent.Sparkles6.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.ffx_position.x} {parent.ffx_position.y}}\n  offset 0.05\n  radius {106.29 124.98 124.98}\n  size_mult {{parent.Flare323.size_mult}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.Flare323.corners_angle}}\n  name Flare321\n  xpos -114\n  ypos 12773\n  disable {{parent.Sparkles6.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform69\n  xpos -114\n  ypos 12799\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge266\n  xpos -114\n  ypos 12840\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge267\n  xpos -114\n  ypos 12899\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.68\n  radius {282.69 289.79 377.86}\n  size_mult {{parent.Flare324.size_mult}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.Flare323.corners_angle}}\n  name Flare322\n  xpos -6\n  ypos 12847\n  disable {{parent.Sparkles6.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform70\n  xpos -6\n  ypos 12873\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.25\n  radius {181.84 198.88 218.76}\n  size_mult {{parent.Flare324.size_mult}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{45+parent.coreRaysRotation}}\n  name Flare323\n  xpos -6\n  ypos 12787\n  disable {{parent.Sparkles6.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform91\n  xpos -6\n  ypos 12813\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.2\n  radius {117.91 129.27 161.94}\n  size_mult {{parent.flareCoreSize+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{45+parent.coreRaysRotation}}\n  name Flare324\n  xpos -10\n  ypos 12739\n  disable {{parent.Sparkles6.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {18.48 29.84 90.92}\n  size_mult {{parent.coreRaysSize+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{\"45 + parent.coreRaysRotation\"}}\n  name Flare325\n  xpos 114\n  ypos 12657\n  disable {{parent.Sparkles6.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform92\n  xpos 114\n  ypos 12698\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge268\n  xpos 114\n  ypos 12739\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge269\n  xpos 114\n  ypos 12813\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge270\n  xpos 114\n  ypos 12873\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge271\n  xpos 114\n  ypos 12899\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle20\n  xpos 114\n  ypos 12925\n }\n Blur {\n  size 24\n  name Blur151\n  xpos 114\n  ypos 12951\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size {{\"512 + parent.coreRaysSize\"}}\n  rotation {{\"-58 + parent.coreRaysRotation\"}}\n  ray_nb 1\n  ray_thick {{\"3.5 + parent.coreRaysThickness\"}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 2.5\n  seed {{parent.coreRaysSeed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles6\n  label \"Anamorphic Bits\"\n  xpos 290\n  ypos 12589\n  disable {{\"parent.coreRaysType == 12 ? 0 : 1\"}}\n }\n Sparkles {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size {{parent.Sparkles6.size}}\n  rotation {{\"180 + parent.Sparkles6.rotation\"}}\n  ray_nb 1\n  ray_thick {{parent.Sparkles6.ray_thick}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 2.5\n  seed {{parent.Sparkles6.seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles17\n  label \"Anamorphic Bits\"\n  xpos 290\n  ypos 12647\n  disable {{parent.Sparkles6.disable}}\n }\nset N91bb9400 [stack 0]\n Dot {\n  name Dot119\n  xpos 472\n  ypos 12657\n }\n Blur {\n  size 20\n  name Blur149\n  xpos 438\n  ypos 12763\n }\npush $N91bb9400\n Blur {\n  size 3\n  name Blur150\n  xpos 290\n  ypos 12705\n }\n Glow {\n  brightness 1.14\n  name Glow36\n  xpos 290\n  ypos 12743\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge272\n  xpos 290\n  ypos 12769\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  mix 0.9\n  name Merge273\n  xpos 290\n  ypos 12957\n }\n Dot {\n  name Dot120\n  xpos 324\n  ypos 13356\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {0 59.2 436.08}\n  size_mult {{parent.Flare269.size_mult}}\n  anamorph 0.4\n  ring_color {0 0.01999999955 1}\n  inner_color {0.5199999809 0.6832000017 1}\n  outer_falloff 4.2\n  inner_falloff 0.48\n  brightness 0.125\n  flattening {{parent.Flare269.flattening}}\n  corners_angle {{parent.Flare269.corners_angle}}\n  name Flare268\n  xpos -568\n  ypos 12812\n  disable {{Core_Bits_Plus.disable==1?1:core_bits.which==11?0:1}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {17.44 42.38 293.11}\n  size_mult {{(parent.flareCoreSize+parent.coreRaysSize)*1.4}}\n  anamorph 0.715\n  ring_color {0 0.2200000286 1}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 0.76\n  flattening {{\"100 - parent.coreRaysThickness\"}}\n  corners_angle {{parent.coreRaysRotation}}\n  name Flare269\n  xpos -678\n  ypos 12624\n  disable {{\"parent.coreRaysType == 11 ? 0 : 1\"}}\n }\n Blur {\n  size 83\n  name Blur121\n  xpos -678\n  ypos 12650\n }\n Glow {\n  tint 0.305\n  tolerance 0.1\n  brightness 1.32\n  size 49\n  maskChannelMask none\n  name Glow31\n  xpos -678\n  ypos 12688\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  name Merge248\n  xpos -678\n  ypos 12812\n }\n Dot {\n  name Dot121\n  xpos -644\n  ypos 13326\n }\n Flare {\n  inputs 0\n  position {{parent.Flare12.position.x} {parent.Flare12.position.y}}\n  radius {0 0 128.34}\n  size_mult {{\"0.75 * parent.Flare12.size_mult\"}}\n  ring_color 0.4\n  inner_color 0\n  brightness 0.5\n  name Flare11\n  xpos 745\n  ypos 4114\n  disable {{parent.Flare12.disable}}\n }\n Glow2 {\n  tint {0.5 0.21 1.5 1}\n  tint_panelDropped true\n  brightness 0.24\n  name Glow13\n  xpos 745\n  ypos 4140\n }\n Blur {\n  size 50\n  name Blur13\n  xpos 745\n  ypos 4171\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 0 76.12}\n  size_mult 2\n  ring_color {0.379197 0.54 0.235}\n  ring_color_panelDropped true\n  inner_color 0\n  brightness 0.5\n  name Flare12\n  xpos 848\n  ypos 4082\n  disable {{\"parent.coronaExtraType == 6 ? 0 : 1\"}}\n }\n Blur {\n  size 20\n  name Blur34\n  xpos 848\n  ypos 4108\n }\n Glow {\n  tint {1.043982 0.06 0.018}\n  tint_panelDropped true\n  tolerance 0.0150376\n  name Glow12\n  xpos 848\n  ypos 4151\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge129\n  xpos 848\n  ypos 4177\n }\n Saturation {\n  saturation 2.25\n  name Saturation27\n  xpos 848\n  ypos 4203\n }\n Dot {\n  name Dot10\n  xpos 831\n  ypos 4519\n }\n Flare {\n  inputs 0\n  position {{parent.Flare319.position.x} {parent.Flare319.position.y}}\n  radius {161.33 236.9 283.11}\n  size_mult {{parent.Flare319.size_mult}}\n  anamorph 1.39\n  ring_color 0.41\n  inner_color 0.23\n  brightness 0.33\n  corners 4\n  flattening 0.9\n  sharpness 0.59\n  corners_angle 45\n  name Flare318\n  xpos 359\n  ypos 4208\n  disable {{parent.Flare319.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare319.position.x} {parent.Flare319.position.y}}\n  radius {120.64 135.17 181.38}\n  size_mult {{parent.Flare319.size_mult}}\n  anamorph 1.27\n  ring_color 0.37\n  inner_color 0.125\n  brightness 0.61\n  corners 4\n  flattening 0.9\n  sharpness 0.59\n  corners_angle 45\n  name Flare208\n  xpos 368\n  ypos 4122\n  disable {{parent.Flare319.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare319.position.x} {parent.Flare319.position.y}}\n  radius {78.49 94.47 105.8}\n  size_mult {{parent.Flare319.size_mult}}\n  anamorph 1.4\n  ring_color 0.37\n  inner_color 0.19\n  corners 4\n  flattening 0.9\n  sharpness 0.59\n  corners_angle 45\n  name Flare320\n  xpos 368\n  ypos 4035\n  disable {{parent.Flare319.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {36.35 50.88 63.66}\n  size_mult {{\"0.5 * parent.coronaExtraSize\"}}\n  anamorph 1.34\n  ring_color 0.37\n  inner_color 0.24\n  brightness 2\n  corners 4\n  flattening 0.9\n  sharpness 0.59\n  corners_angle 45\n  name Flare319\n  xpos 478\n  ypos 3971\n  disable {{\"parent.coronaExtraType == 5 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.615\n  name Merge257\n  xpos 478\n  ypos 4035\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.215\n  name Merge264\n  xpos 478\n  ypos 4122\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.165\n  name Merge265\n  xpos 478\n  ypos 4208\n }\n Blur {\n  size 38.5\n  name Blur148\n  xpos 478\n  ypos 4255\n }\n Noise {\n  inputs 0\n  size 850\n  lacunarity 3.55\n  gain 0.69\n  gamma 0.73\n  center {320 240}\n  name Noise17\n  xpos 606\n  ypos 4348\n  disable {{parent.Flare319.disable}}\n }\n Blur {\n  size {{(parent.ffx_flare_size)+26 i}}\n  name Blur154\n  xpos 606\n  ypos 4410\n }\n Merge {\n  inputs 2\n  operation in\n  name Merge277\n  xpos 478\n  ypos 4416\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 6.7 500}\n  size_mult {{\"1.25 * parent.coronaExtraSize \"}}\n  anamorph 1.15\n  ring_color {0.73 0.57 0.79}\n  inner_color {0.768889 0.478889 0.702222}\n  outer_falloff {{\"2 * parent.coronaExtraSize \"}}\n  inner_falloff 0.22\n  chroma_spread -0.006\n  brightness 0.2\n  vis_mask -rgba.alpha\n  name Flare78\n  label \"Outer Corona\"\n  xpos 112\n  ypos 4099\n  disable {{\"parent.coronaExtraType == 4 ? 0 : 1\"}}\n }\n Noise {\n  inputs 0\n  size {{\"100 * parent.coreCoronaSize\"}}\n  lacunarity 1.84\n  gain 0.425\n  translate {{\"- parent.flarePos.x + parent.coronaExtraOffset.w\"} {\"- parent.flarePos.y + parent.coronaExtraOffset.h\"}}\n  center {320 240}\n  name Noise8\n  xpos 2\n  ypos 4099\n  disable {{parent.Flare78.disable}}\n }\n Blur {\n  size {{(parent.ffx_flare_size)+26 i}}\n  name Blur112\n  xpos 2\n  ypos 4151\n }\n Merge {\n  inputs 2\n  operation in\n  name Merge32\n  xpos 112\n  ypos 4157\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {34.09 51.33 72.52}\n  size_mult 2.4\n  anamorph 1.1\n  ring_color 0.33\n  inner_color 0.31\n  inner_falloff 7.4\n  brightness 0.39\n  flattening 0.15\n  corners_angle -16\n  asym_falloff 0.45018\n  asym_angle -180\n  asym_angle_add true\n  mult_num 2\n  mult_offset 0.3\n  mult_size -0.28\n  name Flare92\n  xpos -231\n  ypos 4182\n  disable {{\"parent.coronaExtraType == 3 ? 0 : 1\"}}\n }\n VolumeRays {\n  name VolumeRays7\n  label \"Mar 20 2005\"\n  xpos -231\n  ypos 4227\n  disable {{parent.Flare92.disable}}\n  vol_pos {{root.width/2} {root.height/2}}\n  pre_blur 27.5\n  flicker_size 150\n  xform_flicker true\n  volume_end_color {0 0 0 0}\n  radial_size 400\n }\n Blur {\n  size 15\n  name Blur89\n  xpos -231\n  ypos 4274\n }\n Flare {\n  inputs 0\n  position {{parent.Flare88.position.x} {parent.Flare88.position.y}}\n  radius {0 11.36 251.92}\n  size_mult 1.6\n  anamorph 1.01\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.6\n  inner_falloff 0.1\n  brightness 0.06\n  vis_out 1\n  name Flare84\n  xpos -564\n  ypos 4289\n  disable {{parent.Flare88.disable}}\n }\n Blur {\n  size 50\n  name Blur81\n  xpos -564\n  ypos 4315\n }\n Flare {\n  inputs 0\n  position {{parent.Flare88.position.x} {parent.Flare88.position.y}}\n  radius {0 35.51 169.53}\n  size_mult 1.6\n  anamorph 1.01\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.6\n  inner_falloff 0.1\n  brightness 0.08\n  vis_out 1.01\n  name Flare85\n  xpos -564\n  ypos 4199\n  disable {{parent.Flare88.disable}}\n }\n Blur {\n  size 50\n  name Blur82\n  xpos -564\n  ypos 4225\n }\n Flare {\n  inputs 0\n  position {{parent.Flare88.position.x} {parent.Flare88.position.y}}\n  radius {0 0 112.72}\n  size_mult 1.6\n  anamorph 1.01\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.28\n  inner_falloff 0.1\n  brightness 0.05\n  name Flare86\n  xpos -564\n  ypos 4121\n  disable {{parent.Flare88.disable}}\n }\n Blur {\n  size 50\n  name Blur83\n  xpos -564\n  ypos 4147\n }\n Flare {\n  inputs 0\n  position {{parent.Flare88.position.x} {parent.Flare88.position.y}}\n  radius {0 0 75.79}\n  size_mult 1.6\n  anamorph 1.03\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.1\n  inner_falloff 0.1\n  brightness 0.09\n  name Flare87\n  xpos -564\n  ypos 4044\n  disable {{parent.Flare88.disable}}\n }\n Blur {\n  size 50\n  name Blur84\n  xpos -564\n  ypos 4070\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 0 97.09}\n  size_mult 1.5\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  brightness 2\n  name Flare88\n  xpos -454\n  ypos 3949\n  disable {{\"parent.coronaExtraType == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 50\n  name Blur85\n  xpos -454\n  ypos 3994\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge52\n  xpos -454\n  ypos 4076\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge53\n  xpos -454\n  ypos 4153\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge57\n  xpos -454\n  ypos 4231\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.8\n  name Merge58\n  xpos -454\n  ypos 4321\n }\n Flare {\n  inputs 0\n  position {{parent.Flare91.position.x} {parent.Flare91.position.y}}\n  radius {0 0 128.34}\n  size_mult {{\"0.75 * parent.Flare91.size_mult\"}}\n  ring_color 0.4\n  inner_color 0\n  brightness 0.5\n  name Flare90\n  xpos -1031\n  ypos 4537\n  disable {{parent.Flare91.disable}}\n }\n Blur {\n  size 50\n  name Blur87\n  xpos -1031\n  ypos 4563\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 0 48.34}\n  size_mult 2\n  ring_color 0.379197\n  inner_color 0\n  brightness 0.5\n  name Flare91\n  xpos -928\n  ypos 4474\n  disable {{\"parent.coronaExtraType == 1 ? 0 : 1\"}}\n }\n Blur {\n  size 20\n  name Blur88\n  xpos -928\n  ypos 4500\n }\n Glow {\n  tint {1 0.217637 0.0879641}\n  tolerance 0.0150376\n  name Glow18\n  xpos -928\n  ypos 4543\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge59\n  xpos -928\n  ypos 4569\n }\n Flare {\n  inputs 0\n  position {{parent.Flare83.position.x} {parent.Flare83.position.y}}\n  radius {0 0 112.72}\n  size_mult 1.65\n  anamorph 1.01\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.28\n  inner_falloff 0.1\n  brightness 0.05\n  name Flare81\n  xpos -992\n  ypos 4189\n  disable {{parent.Flare83.disable}}\n }\n Blur {\n  size 88\n  name Blur78\n  xpos -992\n  ypos 4215\n }\n Flare {\n  inputs 0\n  position {{parent.Flare83.position.x} {parent.Flare83.position.y}}\n  radius {0 0 75.79}\n  size_mult 1.5\n  anamorph 1.03\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.1\n  inner_falloff 0.1\n  brightness 0.09\n  name Flare82\n  xpos -992\n  ypos 4098\n  disable {{parent.Flare83.disable}}\n }\n Blur {\n  size 70\n  name Blur79\n  xpos -992\n  ypos 4124\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 0 97.09}\n  size_mult 1.5\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  brightness 2\n  name Flare83\n  xpos -882\n  ypos 4039\n  disable {{\"parent.coronaExtraType == 0 ? 0 : 1\"}}\n }\n Blur {\n  size 100\n  name Blur80\n  xpos -882\n  ypos 4085\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge48\n  xpos -882\n  ypos 4130\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge49\n  xpos -882\n  ypos 4221\n }\n Switch {\n  inputs 7\n  which {{parent.coronaExtraType}}\n  name core_coronas\n  xpos -414\n  ypos 4515\n }\n Transform {\n  translate {{\"-(root.width/2) + parent.flarePos.x + parent.coronaExtraOffset.w\"} {\"-(root.height/2) + parent.flarePos.y + parent.coronaExtraOffset.h\"}}\n  rotate {{parent.coronaExtraRotation}}\n  scale {{\"parent.coronaExtraSize * parent.flareCoreSize\"}}\n  center {{root.width/2} {root.height/2}}\n  filter sinc4\n  black_outside false\n  name transformations\n  xpos -414\n  ypos 4554\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coronaExtraOffset.w) >root.width ? -(parent.coronaExtraOffset.w) : 0\"} {\"(parent.flarePos.y + parent.coronaExtraOffset.h) >root.height ? -(parent.coronaExtraOffset.h) : 0\"}}\n  center {960 540}\n  name offset_fix\n  xpos -414\n  ypos 4584\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coronaExtraOffset.w) < 0 ? (parent.coronaExtraOffset.w) : 0\"} {\"(parent.flarePos.y + parent.coronaExtraOffset.h) < 0 ? (parent.coronaExtraOffset.h) : 0\"}}\n  center {960 540}\n  name neg_offset_fix\n  xpos -414\n  ypos 4616\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coronaExtraOffset.w) >root.width ? () : 0\"} {\"(parent.flarePos.y + parent.coronaExtraOffset.h) >root.height ? ((-1*parent.coronaExtraSize) * (root.height - parent.flarePos.y + parent.coronaExtraOffset.h)) : 0\"}}\n  center {{\"parent.flarePos.x + parent.coronaExtraOffset.w\"} {\"parent.flarePos.y + parent.coronaExtraOffset.h\"}}\n  black_outside false\n  name trans_compensate\n  xpos -414\n  ypos 4642\n }\n Transform {\n  translate {{\"(parent.flarePos.x + parent.coronaExtraOffset.w) < 0 ? ((-1 * parent.coronaExtraSize) * (0 - parent.flarePos.x + parent.coronaExtraOffset.w)) : 0\"} {\"(parent.flarePos.y + parent.coronaExtraOffset.h) < 0 ? ((-1 * parent.coronaExtraSize) * (0 - parent.flarePos.y + parent.coronaExtraOffset.h)) : 0\"}}\n  center {{\"parent.flarePos.x + parent.coronaExtraOffset.w\"} {\"parent.flarePos.y + parent.coronaExtraOffset.h\"}}\n  black_outside false\n  name neg_trans_compensate\n  xpos -414\n  ypos 4676\n }\n Sharpen {\n  maximum 100\n  amount 100\n  size 2\n  maskChannelMask none\n  name Sharpen3\n  xpos 4\n  ypos 4598\n  disable {{parent.Flare88.disable}}\n }\n Sharpen {\n  maximum 100\n  amount 100\n  maskChannelMask none\n  name Sharpen2\n  xpos 114\n  ypos 4598\n  disable {{parent.Flare319.disable}}\n }\n Blur {\n  size {{parent.coronaExtraBlur}}\n  name Core_Corona_Blur\n  xpos 224\n  ypos 4598\n }\n Grade {\n  multiply {{parent.coronaExtraColour.r} {parent.coronaExtraColour.g} {parent.coronaExtraColour.b} 0}\n  maskChannelMask none\n  name Core_Coronas_Color\n  label \"Core Coronas CC\"\n  xpos 331\n  ypos 4598\n }\n Group {\n  name Static_Noise1\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 441\n  ypos 4604\n  disable {{!parent.coronaExtraNoise}}\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 1\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N8e96e400 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N8e96e400\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N8e96d400 [stack 0]\npush $N8e96d400\npush $N8e96e400\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot44\n  xpos 663\n  ypos 4607\n }\nset N8e96c800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation5\n  xpos 630\n  ypos 4653\n }\npush $N8e96c800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy7\n  xpos 801\n  ypos 4598\n }\nset N8e8ebc00 [stack 0]\n Dot {\n  name Dot127\n  xpos 835\n  ypos 4791\n }\n Dot {\n  name Dot128\n  xpos 1315\n  ypos 4791\n }\n Dot {\n  name Dot131\n  xpos 1315\n  ypos 12314\n }\n Dot {\n  name Dot130\n  xpos -1534\n  ypos 12314\n }\n Dot {\n  name Dot122\n  xpos -1534\n  ypos 13038\n }\n Noise {\n  inputs 0\n  size {200 500}\n  zoffset 2\n  lacunarity 2.02\n  gain 0.61\n  gamma 0.54\n  center {320 240}\n  name Noise21\n  xpos -1356\n  ypos 12906\n }\n Noise {\n  inputs 0\n  size {200 800}\n  lacunarity 2.02\n  gain 0.63\n  gamma 0.405\n  center {320 240}\n  name Noise22\n  xpos -1364\n  ypos 12861\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1000\n  anamorphic 1.68\n  rotation {{\"parent.Sparkles33.rotation + 180\"}}\n  ray_nb 1\n  ray_thick 2\n  spark_falloff 0\n  ray_falloff 3.45\n  seed {{parent.Sparkles33.seed}}\n  name Sparkles28\n  xpos -1024\n  ypos 12693\n  disable {{parent.Sparkles33.disable}}\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1000\n  anamorphic 1.68\n  rotation {{parent.Sparkles33.rotation}}\n  ray_nb 1\n  ray_thick 2\n  spark_falloff 0.042\n  ray_falloff 3.5\n  seed {{parent.Sparkles33.seed}}\n  name Sparkles29\n  xpos -1146\n  ypos 12667\n  disable {{parent.Sparkles33.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge206\n  xpos -1146\n  ypos 12693\n }\n Blur {\n  size 8.4\n  name Blur86\n  xpos -1146\n  ypos 12719\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 800\n  anamorphic 1.68\n  rotation {{\"parent.Sparkles33.rotation + 180\"}}\n  ray_nb 1\n  ray_thick 6\n  spark_falloff 0\n  ray_falloff 3.45\n  seed {{parent.Sparkles33.seed}}\n  name Sparkles30\n  xpos -1147\n  ypos 12628\n  disable {{parent.Sparkles33.disable}}\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1000\n  anamorphic 1.68\n  rotation {{parent.Sparkles33.rotation}}\n  ray_nb 1\n  ray_thick 6\n  spark_falloff 0.042\n  ray_falloff 3.5\n  seed {{parent.Sparkles33.seed}}\n  name Sparkles31\n  xpos -1293\n  ypos 12602\n  disable {{parent.Sparkles33.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge207\n  xpos -1293\n  ypos 12628\n }\n Blur {\n  size 18\n  name Blur113\n  xpos -1293\n  ypos 12654\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge208\n  xpos -1293\n  ypos 12725\n }\n Glow {\n  tint {0 0.3399999142 1}\n  tolerance 0.165\n  maskChannelMask none\n  name Glow23\n  xpos -1293\n  ypos 12766\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1100\n  anamorphic 1.68\n  rotation {{\"parent.Sparkles33.rotation + 180\"}}\n  ray_nb 1\n  ray_thick {{parent.Sparkles33.ray_thick}}\n  spark_falloff 0\n  ray_falloff 3.45\n  seed {{parent.Sparkles33.seed}}\n  chroma_shift 0.72\n  chroma_spread 0.09\n  name Sparkles32\n  xpos -1148\n  ypos 12550\n  disable {{parent.Sparkles33.disable}}\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1300\n  anamorphic 1.68\n  rotation {{(parent.Sparkles33.position.x/30)-90}}\n  ray_nb 1\n  ray_thick {{\"parent.coreRaysThickness + 6\"}}\n  spark_falloff 0.042\n  ray_falloff 3.5\n  seed {{\"parent.coreRaysThickness + 65\"}}\n  chroma_shift 0.88\n  chroma_spread 0.09\n  name Sparkles33\n  xpos -1293\n  ypos 12510\n  disable {{\"parent.coreRaysType == 10 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge209\n  xpos -1293\n  ypos 12550\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 7\n  BlurAngle 70\n  maskChannelMask none\n  name DirBlurWrapper15\n  xpos -1451\n  ypos 12544\n  disable {{Core_Bits_Plus.disable==1?1:core_bits.which==10?0:1}}\n }\n Blur {\n  size 9.5\n  name Blur114\n  xpos -1451\n  ypos 12591\n }\n Grade {\n  multiply {0.5399999619 0.6963999271 1 1}\n  gamma 0.68\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade46\n  xpos -1451\n  ypos 12629\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  mix 0.305\n  name Merge210\n  xpos -1451\n  ypos 12766\n }\n Grade {\n  multiply {1.795000076 1 0.7950000763 1}\n  gamma 1.12\n  maskChannelMask none\n  mix 0.8\n  name Grade73\n  xpos -1451\n  ypos 12836\n }\n Saturation {\n  inputs 1+1\n  saturation 10\n  name Saturation24\n  xpos -1451\n  ypos 12895\n }\n Grade {\n  inputs 1+1\n  multiply 2.7\n  gamma 0.52\n  name Grade72\n  xpos -1451\n  ypos 12938\n }\n Grade {\n  inputs 1+1\n  multiply {1 1 4 4}\n  maskChannelMask rgba.red\n  name Grade43\n  xpos -1451\n  ypos 13034\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {17.44 34.59 500}\n  size_mult 0.3\n  ring_color {0.5 0.6699999571 1}\n  inner_color 1\n  outer_falloff 17\n  inner_falloff 1.7\n  name Flare263\n  xpos -1066\n  ypos 12816\n  disable {{parent.Sparkles33.disable}}\n }\n Grade {\n  multiply 6\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade49\n  xpos -1066\n  ypos 12842\n }\nset N8e807800 [stack 0]\n Blur {\n  size 73\n  name Blur116\n  xpos -1066\n  ypos 13062\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {17.27 21.25 92.18}\n  size_mult 3\n  anamorph 1.02\n  ring_color {0.3832257986 0.3832257986 0.9900000095}\n  inner_color 1\n  outer_falloff 3.6\n  inner_falloff 0.95\n  vis_mask -rgba.alpha\n  corners 9\n  flattening 21.5\n  sharpness 1\n  corners_angle 54\n  name Flare264\n  xpos -1171\n  ypos 12911\n  disable {{parent.Sparkles33.disable}}\n }\n Blur {\n  size 7\n  name Blur117\n  xpos -1171\n  ypos 12945\n }\npush $N8e807800\n Blur {\n  size 200\n  name Blur118\n  xpos -1286\n  ypos 12836\n }\n Merge {\n  inputs 2\n  operation plus\n  mix 0.225\n  name Merge244\n  xpos -1286\n  ypos 12951\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge245\n  xpos -1286\n  ypos 13068\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation25\n  xpos -1286\n  ypos 13094\n }\n Grade {\n  multiply {0.9217296839 0.908107996 1.25999999 1}\n  gamma 0.63\n  maskChannelMask none\n  name Grade39\n  xpos -1286\n  ypos 13120\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  mix 0.6\n  name Merge246\n  xpos -1451\n  ypos 13120\n }\nset N8e805000 [stack 0]\npush $N8e805000\n Sparkles {\n  inputs 0\n  mode Sparkles\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1300\n  anamorphic 1.1\n  rotation {{\"parent.Sparkles33.rotation + 20\"}}\n  ray_nb 600\n  ray_thick 3\n  spark_falloff 0\n  ray_falloff 10\n  seed {{\"parent.Sparkles33.seed + 30\"}}\n  chroma_shift 1.06\n  chroma_spread 0.16\n  name Sparkles24\n  xpos -937\n  ypos 13063\n  disable {{parent.Sparkles33.disable}}\n }\n Sparkles {\n  mode Sparkles\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 1800\n  anamorphic 1.1\n  rotation {{\"parent.Sparkles33.rotation + 15\"}}\n  ray_nb 800\n  ray_thick 3\n  spark_falloff 0.016\n  ray_falloff 10\n  seed {{parent.Sparkles33.seed}}\n  chroma_shift 1.06\n  chroma_spread 0.295\n  name Sparkles25\n  xpos -937\n  ypos 13089\n  disable {{parent.Sparkles33.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  Achannels {rgba.red rgba.green rgba.blue rgba.red}\n  maskChannelMask none\n  name Merge279\n  xpos -937\n  ypos 13133\n }\n Merge2 {\n  inputs 2\n  operation geometric\n  maskChannelMask none\n  mix 0.5\n  name Merge280\n  xpos -937\n  ypos 13159\n }\n Grade {\n  multiply 2.65\n  maskChannelMask none\n  name Grade69\n  xpos -937\n  ypos 13197\n }\npush $N8e805000\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge281\n  xpos -1451\n  ypos 13197\n }\n Dot {\n  name Dot123\n  xpos -1417\n  ypos 13301\n }\n Flare {\n  inputs 0\n  position {{parent.Flare223.position.x} {parent.Flare223.position.y}}\n  radius {93.02 104.27 208.82}\n  size_mult {{parent.flareCoreSize}}\n  ring_color {0.67 0.67 0.79}\n  inner_color 1\n  chroma_shift_angle_add true\n  vis_mask -rgba.alpha\n  corners 7\n  flattening {{parent.Flare223.flattening}}\n  sharpness 0.99\n  corners_angle {{parent.Flare223.corners_angle}}\n  name Flare222\n  xpos -1672\n  ypos 12977\n  disable {{parent.Flare223.disable}}\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.Flare223.position.x} {parent.Flare223.position.y}}\n  BlurLength 15\n  BlurAngle 90\n  target {{parent.ffx_position.x} {parent.ffx_position.y}}\n  name DirBlurWrapper11\n  xpos -1672\n  ypos 13005\n  disable {{parent.Flare223.disable}}\n }\n Blur {\n  size 5.8\n  name Blur53\n  xpos -1672\n  ypos 13043\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {105.98 117.23 243.65}\n  size_mult {{parent.flareCoreSize}}\n  ring_color {0.67 0.67 0.79}\n  inner_color 1\n  brightness {1 1 1}\n  vis_mask -rgba.alpha\n  corners 7\n  flattening {{\"100 - parent.coreRaysThickness\"}}\n  sharpness 0.99\n  corners_angle {{parent.coreRaysRotation}}\n  name Flare223\n  xpos -1892\n  ypos 12818\n  disable {{\"parent.coreRaysType == 9 ? 0 : 1\"}}\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.Flare223.position.x} {parent.Flare223.position.y}}\n  BlurLength 16\n  BlurAngle 90\n  target {{parent.ffx_position.x} {parent.ffx_position.y}}\n  name DirBlurWrapper12\n  xpos -1892\n  ypos 12852\n  disable {{parent.Flare223.disable}}\n }\n Blur {\n  size 5\n  name Blur54\n  xpos -1892\n  ypos 12913\n }\n Flare {\n  position {{parent.Flare223.position.x} {parent.Flare223.position.y}}\n  radius {98.72 105.6 208.69}\n  size_mult {{parent.flareCoreSize}}\n  ring_color {0.67 0.67 0.79}\n  inner_color 1\n  brightness 0.22\n  vis_mask -rgba.alpha\n  corners 7\n  flattening {{\"parent.Flare223.flattening - 40\"}}\n  sharpness 0.99\n  corners_angle {{parent.Flare223.corners_angle}}\n  name Flare225\n  xpos -1892\n  ypos 12951\n  disable {{parent.Flare223.disable}}\n }\n Blur {\n  size 3\n  name Blur55\n  xpos -1892\n  ypos 12979\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge80\n  xpos -1892\n  ypos 13049\n }\n Dot {\n  name Dot124\n  xpos -1858\n  ypos 13294\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {1.28 38.69 48.57}\n  anamorph 1.58\n  ring_color {0.24 0.24 0.62}\n  inner_color 1\n  outer_falloff 0.95\n  inner_falloff 0.95\n  vis_mask -rgba.alpha\n  corners 4\n  flattening {{parent.Flare233.flattening}}\n  sharpness 1\n  corners_angle {{parent.Flare233.corners_angle}}\n  name Flare224\n  xpos -2055\n  ypos 12928\n  disable {{parent.Flare233.disable}}\n }\nset N8e70f400 [stack 0]\npush $N8e70f400\n Blur {\n  size 18\n  name Blur44\n  xpos -2165\n  ypos 12922\n }\n Merge {\n  inputs 2\n  operation plus\n  mix 0.095\n  name Merge193\n  xpos -2165\n  ypos 12967\n }\n Grade {\n  multiply 4\n  name Grade40\n  xpos -2165\n  ypos 12993\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {1.28 5.26 76.19}\n  anamorph 1.58\n  ring_color {0.3832257986 0.3832257986 0.9900000095}\n  inner_color 1\n  outer_falloff 3.6\n  inner_falloff 0.95\n  vis_mask -rgba.alpha\n  corners 9\n  flattening {{\"100 - (parent.coreRaysThickness + 45)\"}}\n  sharpness 1\n  corners_angle {{parent.coreRaysRotation}}\n  name Flare233\n  xpos -2068\n  ypos 12849\n  disable {{\"parent.coreRaysType == 8 ? 0 : 1\"}}\n }\nset N8e70e000 [stack 0]\npush $N8e70e000\n Blur {\n  size 18\n  name Blur46\n  xpos -2165\n  ypos 12843\n }\n Merge {\n  inputs 2\n  operation plus\n  mix 0.485\n  name Merge203\n  xpos -2165\n  ypos 12891\n }\n Grade {\n  multiply 4\n  name Grade41\n  xpos -2275\n  ypos 12891\n }\n Merge {\n  inputs 2\n  operation plus\n  mix 0.215\n  name Merge204\n  xpos -2275\n  ypos 12993\n }\n Dot {\n  name Dot125\n  xpos -2241\n  ypos 13226\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size {{512+parent.coreRaysSize}}\n  rotation {{-58+parent.coreRaysRotation}}\n  ray_nb 1\n  ray_thick {{\"3.5 + parent.coreRaysThickness\"}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 2.5\n  seed {{65+parent.ffx_cores_seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles22\n  label \"Anamorphic Bits\"\n  xpos -2556\n  ypos 12992\n  disable {{\"parent.coreRaysType == 7 ? 0 : 1\"}}\n }\n Sparkles {\n  position {{parent.Sparkles22.position.x} {parent.Sparkles22.position.y}}\n  size {{parent.Sparkles22.size}}\n  rotation {{\"180 + parent.Sparkles22.rotation\"}}\n  ray_nb 1\n  ray_thick {{parent.Sparkles22.ray_thick}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 2.5\n  seed {{parent.Sparkles22.seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles23\n  label \"Anamorphic Bits\"\n  xpos -2556\n  ypos 13030\n  disable {{parent.Sparkles22.disable}}\n }\nset N8e6a7c00 [stack 0]\n Dot {\n  name Dot126\n  xpos -2374\n  ypos 13040\n }\n Blur {\n  size 20\n  name Blur31\n  xpos -2408\n  ypos 13146\n }\npush $N8e6a7c00\n Blur {\n  size 3\n  name Blur32\n  xpos -2556\n  ypos 13088\n }\n Glow {\n  brightness 1.14\n  name Glow11\n  xpos -2556\n  ypos 13126\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge81\n  xpos -2556\n  ypos 13152\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 150\n  rotation {{\"parent.coreRaysRotation - 14\"}}\n  ray_nb 4\n  ray_thick {{\"parent.coreRaysThickness + 0.4\"}}\n  seed {{parent.coreRaysSeed}}\n  name Sparkles18\n  xpos -2583\n  ypos 12728\n  disable {{\"parent.coreRaysType == 6 ? 0 : 1\"}}\n }\n Sparkles {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 150\n  rotation {{parent.Sparkles18.rotation}}\n  ray_nb 4\n  ray_thick {{parent.Sparkles18.ray_thick}}\n  seed {{parent.Sparkles18.seed}}\n  name Sparkles19\n  xpos -2583\n  ypos 12754\n  disable {{parent.Sparkles18.disable}}\n }\n Sparkles {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 335\n  anamorphic 0.5\n  rotation {{\"parent.Sparkles18.rotation - 50\"}}\n  ray_nb 56.4656\n  ray_thick {{parent.Sparkles18.ray_thick}}\n  spark_falloff 0.045283\n  ray_falloff 8.41509\n  seed {{parent.Sparkles18.seed}}\n  color 0.6\n  name Sparkles20\n  xpos -2583\n  ypos 12780\n  disable {{parent.Sparkles18.disable}}\n }\n Sparkles {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 305\n  anamorphic 0.649481\n  rotation {{\"parent.Sparkles18.rotation - 60\"}}\n  ray_nb 37.0218\n  ray_thick {{\"parent.Sparkles18.ray_thick / 2\"}}\n  spark_falloff 0.045283\n  ray_falloff 10\n  seed {{parent.Sparkles18.seed}}\n  color 0.5\n  name Sparkles21\n  xpos -2583\n  ypos 12806\n  disable {{parent.Sparkles18.disable}}\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 10\n  Samples 2\n  maskChannelMask none\n  name DirBlurWrapper6\n  xpos -2583\n  ypos 12832\n  disable {{parent.Sparkles18.disable}}\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles37.position.x} {parent.Sparkles37.position.y}}\n  size 250\n  rotation {{\"parent.Sparkles37.rotation - 57\"}}\n  ray_nb 60\n  ray_thick {{\"parent.Sparkles37.ray_thick / 10\"}}\n  seed {{parent.Sparkles37.seed}}\n  brightness 0.15\n  name Sparkles36\n  xpos -2833\n  ypos 12717\n  disable {{parent.Sparkles37.disable}}\n }\n Blur {\n  size 2\n  name Blur8\n  xpos -2833\n  ypos 12743\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  Samples 2\n  name DirBlurWrapper2\n  xpos -2833\n  ypos 12781\n  disable {{parent.Sparkles37.disable}}\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 255\n  anamorphic 1.34389\n  rotation 57.4372\n  relative_rotation true\n  ray_nb 5\n  ray_thick 2\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{35+parent.ffx_cores_seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles37\n  xpos -2723\n  ypos 12673\n  disable {{\"parent.coreRaysType == 5 ? 0 : 1\"}}\n }\n Blur {\n  size 2\n  name Blur11\n  xpos -2723\n  ypos 12699\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  Samples 2\n  name DirBlurWrapper9\n  xpos -2723\n  ypos 12737\n  disable {{parent.Sparkles37.disable}}\n }\n Merge2 {\n  inputs 2\n  name Merge20\n  xpos -2723\n  ypos 12787\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {60.77 77.81 137.81}\n  ring_color {0.16796 0.396161 0.596516}\n  inner_color 1\n  brightness 2\n  corners 9\n  flattening {{\"100 - parent.coreRaysThickness\"}}\n  sharpness 0.999\n  corners_angle {{parent.coreRaysRotation}}\n  name Flare53\n  label \"Flare Spike\"\n  xpos -2982\n  ypos 12683\n  disable {{\"parent.coreRaysType == 4 ? 0 : 1\"}}\n }\n Blur {\n  size 4\n  name Blur35\n  xpos -2982\n  ypos 12760\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles15.position.x} {parent.Sparkles15.position.y}}\n  size 385\n  anamorphic 3\n  rotation {{parent.Sparkles15.rotation}}\n  ray_nb 8\n  ray_thick {{\"parent.Sparkles15.ray_thick * 3\"}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.Sparkles15.seed}}\n  broken_affected 9.89774\n  name Sparkles7\n  xpos -3249\n  ypos 12672\n  disable {{parent.Sparkles15.disable}}\n }\n Blur {\n  size 5\n  name Blur49\n  xpos -3249\n  ypos 12698\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles15.position.x} {parent.Sparkles15.position.y}}\n  size 340\n  anamorphic 3\n  rotation {{parent.Sparkles15.rotation}}\n  ray_nb 3\n  ray_thick {{\"parent.Sparkles15.ray_thick * 2\"}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.Sparkles15.seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles11\n  xpos -3249\n  ypos 12579\n  disable {{parent.Sparkles15.disable}}\n }\n Blur {\n  size 3\n  name Blur62\n  xpos -3249\n  ypos 12605\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 412\n  anamorphic 3\n  rotation {{parent.coreRaysRotation}}\n  ray_nb 4\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.coreRaysSeed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles15\n  label \"Anamorphic Bits\"\n  xpos -3139\n  ypos 12459\n  disable {{\"parent.coreRaysType == 3 ? 0 : 1\"}}\n }\n Blur {\n  size 2\n  name Blur71\n  xpos -3139\n  ypos 12497\n }\n Blur {\n  size 5\n  name Blur72\n  xpos -3139\n  ypos 12535\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.7\n  name Merge97\n  xpos -3139\n  ypos 12611\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge100\n  xpos -3139\n  ypos 12704\n }\n Blur {\n  size 2\n  name Blur74\n  xpos -3139\n  ypos 12822\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles9.position.x} {parent.Sparkles9.position.y}}\n  size 495\n  anamorphic 1.34389\n  rotation {{\"parent.Sparkles9.rotation + 11\"}}\n  ray_nb 7\n  ray_thick 1\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{\"parent.Sparkles9.seed + 21\"}}\n  broken_affected 9.89774\n  name Sparkles2\n  xpos -3487\n  ypos 12777\n  disable {{parent.Sparkles9.disable}}\n }\n Blur {\n  size 2\n  name Blur36\n  xpos -3487\n  ypos 12803\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles9.position.x} {parent.Sparkles9.position.y}}\n  size 385\n  anamorphic 1.34389\n  rotation {{\"parent.Sparkles9.rotation - 13\"}}\n  ray_nb 20\n  ray_thick {{parent.Sparkles9.ray_thick}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{36+parent.coreRaysSeed}}\n  broken_affected 9.89774\n  name Sparkles5\n  xpos -3487\n  ypos 12690\n  disable {{parent.Sparkles9.disable}}\n }\n Blur {\n  size 5\n  name Blur37\n  xpos -3487\n  ypos 12716\n }\n Sparkles {\n  inputs 0\n  position {{parent.Sparkles9.position.x} {parent.Sparkles9.position.y}}\n  size 340\n  anamorphic 1.34389\n  rotation {{\"31 + parent.Sparkles9.rotation\"}}\n  ray_nb 7\n  ray_thick {{parent.Sparkles9.ray_thick}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{\"parent.Sparkles9.seed + 25\"}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles8\n  xpos -3487\n  ypos 12597\n  disable {{parent.Sparkles9.disable}}\n }\n Blur {\n  size 3\n  name Blur38\n  xpos -3487\n  ypos 12623\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 412\n  anamorphic 1.34389\n  rotation {{parent.coreRaysRotation}}\n  ray_nb 8\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{35+parent.coreRaysSeed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles9\n  label \"Lots of Bits\"\n  xpos -3377\n  ypos 12477\n  disable {{\"parent.coreRaysType == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 2\n  name Blur39\n  xpos -3377\n  ypos 12515\n }\n Blur {\n  size 5\n  name Blur45\n  xpos -3377\n  ypos 12553\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.7\n  name Merge102\n  xpos -3377\n  ypos 12629\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge116\n  xpos -3377\n  ypos 12722\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.4\n  name Merge117\n  xpos -3377\n  ypos 12809\n }\n Blur {\n  size 2\n  name Blur50\n  xpos -3377\n  ypos 12835\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 385\n  anamorphic 1.34389\n  rotation {{\"parent.coreRaysRotation + 31\"}}\n  ray_nb 8\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{\"26 + parent.coreRaysSeed\"}}\n  broken_affected 9.89774\n  name Sparkles12\n  xpos -3756\n  ypos 12674\n  disable {{parent.Sparkles14.disable}}\n }\n Blur {\n  size 5\n  name Blur63\n  xpos -3756\n  ypos 12700\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 340\n  anamorphic 1.34389\n  rotation {{\"parent.coreRaysRotation + 31\"}}\n  ray_nb 5\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{\"50 - parent.coreRaysSeed\"}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles13\n  xpos -3756\n  ypos 12566\n  disable {{parent.Sparkles14.disable}}\n }\n Blur {\n  size 3\n  name Blur64\n  xpos -3756\n  ypos 12607\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 412\n  anamorphic 1.34389\n  rotation {{\"parent.coreRaysRotation + 31\"}}\n  ray_nb 4\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.coreRaysSeed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles14\n  label \"More Bits\"\n  xpos -3646\n  ypos 12461\n  disable {{\"parent.coreRaysType == 1 ? 0 : 1\"}}\n }\n Blur {\n  size 2\n  name Blur65\n  xpos -3646\n  ypos 12499\n }\n Blur {\n  size 5\n  name Blur66\n  xpos -3646\n  ypos 12537\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.7\n  name Merge122\n  xpos -3646\n  ypos 12613\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge123\n  xpos -3646\n  ypos 12706\n }\n Blur {\n  size 2\n  name Blur67\n  xpos -3646\n  ypos 12818\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 385\n  anamorphic 1.34389\n  rotation {{\"(parent.coreRaysRotation * 1.2) - 83\"}}\n  ray_nb 9\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.Sparkles27.seed}}\n  broken_affected 9.89774\n  name Sparkles10\n  xpos -3985\n  ypos 12687\n  disable {{parent.Sparkles27.disable}}\n }\n Blur {\n  size 5\n  name Blur51\n  xpos -3985\n  ypos 12713\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 340\n  anamorphic 1.34389\n  rotation {{\"(parent.coreRaysRotation * 1.2) + 51\"}}\n  ray_nb 4\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.Sparkles27.seed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles26\n  xpos -3985\n  ypos 12594\n  disable {{parent.Sparkles27.disable}}\n }\n Blur {\n  size 3\n  name Blur52\n  xpos -3985\n  ypos 12620\n }\n Sparkles {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  size 465\n  anamorphic 1.34389\n  rotation {{parent.coreRaysRotation}}\n  ray_nb 4\n  ray_thick {{parent.coreRaysThickness}}\n  random_thick true\n  spark_falloff 0\n  ray_falloff 6.45283\n  seed {{parent.coreRaysSeed}}\n  brightness 0.4\n  broken_affected 9.89774\n  name Sparkles27\n  label \"Few Bits\"\n  xpos -3875\n  ypos 12463\n  disable {{\"parent.coreRaysType == 0 ? 0 : 1\" x21 0}}\n }\n Blur {\n  size 2\n  name Blur56\n  xpos -3875\n  ypos 12512\n }\n Blur {\n  size 5\n  name Blur60\n  xpos -3875\n  ypos 12550\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.7\n  name Merge124\n  xpos -3875\n  ypos 12626\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name Merge125\n  xpos -3875\n  ypos 12719\n }\n Blur {\n  size 2\n  name Blur61\n  xpos -3875\n  ypos 12832\n }\n Switch {\n  inputs 13\n  which {{parent.coreRaysType}}\n  name core_bits\n  xpos -3217\n  ypos 13409\n }\n Transform {\n  scale {{\"1 * parent.coreRaysSize * parent.flareCoreSize\"}}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform42\n  xpos -162\n  ypos 13409\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop7\n  xpos -31\n  ypos 13409\n }\n Clamp {\n  name Clamp8\n  xpos 106\n  ypos 13403\n }\n Grade {\n  multiply {{parent.coreRaysColour.r} {parent.coreRaysColour.g} {parent.coreRaysColour.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade1\n  label \"core rays grade\"\n  xpos 281\n  ypos 13403\n }\n Blur {\n  size {{parent.coreRaysBlur}}\n  name Blur57\n  label \"core rays blur\"\n  note_font Verdana\n  xpos 407\n  ypos 13398\n }\n Group {\n  name Static_Noise6\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 532\n  ypos 13410\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N8e495800 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N8e495800\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N8e494800 [stack 0]\npush $N8e494800\npush $N8e495800\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot129\n  xpos 657\n  ypos 13413\n }\nset N8e3fb800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation26\n  xpos 624\n  ypos 13459\n }\npush $N8e3fb800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy18\n  xpos 767\n  ypos 13403\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 2.15\"}}\n  radius {0 1.06 136.36}\n  size_mult {{(parent.flareCoreSize)+1.8}}\n  anamorph 11.52\n  ring_color 3\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare72\n  xpos -346\n  ypos 11280\n  disable {{parent.Flare74.disable}}\n }\n Blur {\n  size 16\n  name Blur145\n  xpos -346\n  ypos 11306\n  disable {{parent.Flare74.disable}}\n }\n Blur {\n  size 1\n  name Blur146\n  xpos -346\n  ypos 11344\n  disable {{parent.Flare74.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x+55} {parent.flarePos.y+7}}\n  offset {{\"parent.lensPieceLinesOffset + 2.15\"}}\n  radius {0 3.97 31.8}\n  size_mult {{(parent.flareCoreSize)+1.8}}\n  anamorph 11.52\n  ring_color 0.5\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare204\n  xpos -490\n  ypos 11117\n  disable {{parent.Flare74.disable}}\n }\n Blur {\n  size 3\n  name Blur147\n  xpos -490\n  ypos 11162\n  disable {{parent.Flare74.disable}}\n }\n Glow {\n  brightness 0.5\n  name Glow35\n  xpos -490\n  ypos 11202\n  disable {{parent.Flare74.disable}}\n }\n Grade {\n  multiply 10\n  name Grade60\n  xpos -490\n  ypos 11228\n  disable {{parent.Flare74.disable}}\n }\n Grade {\n  multiply {1 1 1 0}\n  name Grade61\n  xpos -490\n  ypos 11262\n  disable {{parent.Flare74.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.07\n  name Merge175\n  xpos -490\n  ypos 11350\n  disable {{parent.Flare74.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 2.15\"}}\n  radius {0 1.06 136.36}\n  size_mult {{(parent.flareCoreSize)+1.8}}\n  anamorph 11.52\n  ring_color 3\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare73\n  xpos -764\n  ypos 11205\n  disable {{parent.Flare74.disable}}\n }\n Blur {\n  size 16\n  name Blur99\n  xpos -764\n  ypos 11231\n  disable {{parent.Flare74.disable}}\n }\n Blur {\n  size 1\n  name Blur143\n  xpos -764\n  ypos 11269\n  disable {{parent.Flare74.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 2.15\"}}\n  radius {0 3.97 31.8}\n  size_mult {{(parent.flareCoreSize)+1.8}}\n  anamorph 11.52\n  ring_color 0.5\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare74\n  xpos -643\n  ypos 11038\n  disable {{\"parent.lensPieceLinesPicker == 6 ? 0 : 1\"}}\n }\n Blur {\n  size 3\n  name Blur144\n  xpos -643\n  ypos 11079\n  disable {{parent.Flare74.disable}}\n }\n Glow {\n  brightness 0.5\n  name Glow34\n  xpos -643\n  ypos 11133\n  disable {{parent.Flare74.disable}}\n }\n Grade {\n  multiply 10\n  name Grade62\n  xpos -643\n  ypos 11166\n  disable {{parent.Flare74.disable}}\n }\n Grade {\n  multiply {1 1 1 0}\n  name Grade63\n  xpos -643\n  ypos 11192\n  disable {{parent.Flare74.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.07\n  name Merge174\n  xpos -643\n  ypos 11275\n  disable {{parent.Flare74.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  mix 0.5\n  name Merge188\n  xpos -643\n  ypos 11350\n  disable {{parent.Flare74.disable}}\n }\n Dot {\n  name Dot154\n  xpos -609\n  ypos 11481\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {262.81 269.91 269.91}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare287\n  xpos -963\n  ypos 10349\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform84\n  xpos -963\n  ypos 10375\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {156.26 160.52 261.37}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare288\n  xpos -968\n  ypos 10316\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {83.82 92.34 126.43}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare289\n  xpos -843\n  ypos 10249\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform85\n  xpos -843\n  ypos 10275\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge228\n  xpos -843\n  ypos 10316\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge229\n  xpos -843\n  ypos 10375\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {282.69 289.79 377.86}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare290\n  xpos -734\n  ypos 10289\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-60 0}\n  center {960 540}\n  black_outside false\n  name Transform86\n  xpos -734\n  ypos 10315\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {181.84 198.88 218.76}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare291\n  xpos -630\n  ypos 10263\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform87\n  xpos -630\n  ypos 10289\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {117.91 129.27 161.94}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare292\n  xpos -630\n  ypos 10215\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {42.92 42.92 104}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.23\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare293\n  xpos -510\n  ypos 10149\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {200 0}\n  center {960 540}\n  black_outside false\n  name Transform88\n  xpos -510\n  ypos 10175\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge230\n  xpos -510\n  ypos 10215\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge231\n  xpos -510\n  ypos 10289\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge232\n  xpos -510\n  ypos 10315\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge233\n  xpos -510\n  ypos 10375\n  disable {{parent.Flare317.disable}}\n }\n Blur {\n  size 61\n  name Blur127\n  xpos -510\n  ypos 10401\n  disable {{parent.Flare317.disable}}\n }\nset N8e2adc00 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle23\n  xpos -510\n  ypos 10448\n  disable {{parent.Flare317.disable}}\n }\npush $N8e2adc00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 8\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  flattening 3.2\n  name Flare294\n  xpos -381\n  ypos 10190\n  disable {{parent.Flare317.disable}}\n }\n Grade {\n  inputs 1+1\n  white 4\n  multiply 4\n  maskChannelMask rgba.red\n  name Grade71\n  xpos -381\n  ypos 10407\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge234\n  xpos -381\n  ypos 10448\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {262.81 269.91 269.91}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare303\n  xpos -829\n  ypos 9883\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform96\n  xpos -829\n  ypos 9909\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {156.26 160.52 261.37}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare304\n  xpos -833\n  ypos 9850\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {83.82 92.34 126.43}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare305\n  xpos -709\n  ypos 9783\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform97\n  xpos -709\n  ypos 9809\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge249\n  xpos -709\n  ypos 9850\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge250\n  xpos -709\n  ypos 9909\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {282.69 289.79 377.86}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare306\n  xpos -600\n  ypos 9823\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-60 0}\n  center {960 540}\n  black_outside false\n  name Transform98\n  xpos -600\n  ypos 9849\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {181.84 198.88 218.76}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare307\n  xpos -496\n  ypos 9797\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform99\n  xpos -496\n  ypos 9823\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {117.91 129.27 161.94}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare308\n  xpos -497\n  ypos 9749\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {42.92 42.92 104}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.23\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare309\n  xpos -376\n  ypos 9683\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {200 0}\n  center {960 540}\n  black_outside false\n  name Transform100\n  xpos -376\n  ypos 9709\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge251\n  xpos -376\n  ypos 9749\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge252\n  xpos -376\n  ypos 9823\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge253\n  xpos -376\n  ypos 9849\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge254\n  xpos -376\n  ypos 9909\n  disable {{parent.Flare317.disable}}\n }\n Blur {\n  size 61\n  name Blur122\n  xpos -376\n  ypos 9935\n  disable {{parent.Flare317.disable}}\n }\nset N8e1c5800 [stack 0]\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 8\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  flattening 3.2\n  name Flare310\n  xpos -247\n  ypos 9724\n  disable {{parent.Flare317.disable}}\n }\n Grade {\n  inputs 1+1\n  white 4\n  multiply 4\n  maskChannelMask rgba.red\n  name Grade74\n  xpos -247\n  ypos 9941\n  disable {{parent.Flare317.disable}}\n }\nset N8e1c4c00 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  mix 0.885\n  name Merge235\n  xpos -247\n  ypos 10448\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {0 -40}\n  scale {1.4 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform89\n  xpos 65\n  ypos 10448\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {42.92 42.92 146.15}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 1\n  outer_falloff 0.23\n  inner_falloff 0.41\n  vis_out 1.04\n  corners 0\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare286\n  xpos -112\n  ypos 9794\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform83\n  xpos -112\n  ypos 9820\n  disable {{parent.Flare317.disable}}\n }\n Blur {\n  size 30\n  name Blur100\n  xpos -112\n  ypos 9846\n  disable {{parent.Flare317.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle19\n  xpos -112\n  ypos 9904\n  disable {{parent.Flare317.disable}}\n }\nset N98472c00 [stack 0]\npush $N8e1c5800\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle26\n  xpos -376\n  ypos 9982\n  disable {{parent.Flare317.disable}}\n }\npush $N8e1c4c00\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge255\n  xpos -222\n  ypos 9982\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  maskChannelMask none\n  mix 0.7\n  name Merge226\n  xpos -112\n  ypos 9982\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {0 -10}\n  scale {1.4 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform101\n  xpos 53\n  ypos 9982\n  disable {{parent.Flare317.disable}}\n }\nset N98471c00 [stack 0]\npush 0\npush $N98471c00\npush $N98472c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {243.04 247.3 357.63}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare312\n  xpos 52\n  ypos 9761\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {33.01 61.88 106.14}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 3\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare313\n  xpos 181\n  ypos 9694\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform103\n  xpos 181\n  ypos 9720\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge256\n  xpos 181\n  ypos 9761\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {105.13 116.49 174.73}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare315\n  xpos 299\n  ypos 9667\n  disable {{parent.Flare317.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {33.02 44.38 86.99}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare316\n  xpos 409\n  ypos 9600\n  disable {{parent.Flare317.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform105\n  xpos 409\n  ypos 9626\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge258\n  xpos 409\n  ypos 9667\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge260\n  xpos 409\n  ypos 9761\n  disable {{parent.Flare317.disable}}\n }\n Blur {\n  size 61\n  name Blur123\n  xpos 409\n  ypos 9800\n  disable {{parent.Flare317.disable}}\n }\nset N98402000 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle27\n  xpos 409\n  ypos 9846\n  disable {{Lines_Plus.disable==1?1:lines.which==5?0:1}}\n }\npush $N98402000\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {1.45 1.45 34.17}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 10\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  flattening 5.5\n  name Flare317\n  xpos 538\n  ypos 9566\n  disable {{\"parent.lensPieceLinesPicker == 5 ? 0 : 1\"}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade75\n  xpos 538\n  ypos 9806\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge261\n  xpos 538\n  ypos 9846\n  disable {{Lines_Plus.disable==1?1:lines.which==5?0:1}}\n }\n Transform {\n  translate {0 30}\n  scale {1.3 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform106\n  xpos 538\n  ypos 9872\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  maskChannelMask none\n  mix 0.94\n  name Merge227\n  xpos 538\n  ypos 9904\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 3+1\n  operation plus\n  maskChannelMask none\n  name Merge262\n  xpos 538\n  ypos 9982\n  disable {{parent.Flare317.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge236\n  xpos 538\n  ypos 10448\n  disable {{parent.Flare317.disable}}\n }\n Blur {\n  size {10 0}\n  name Blur134\n  xpos 538\n  ypos 10510\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation33\n  xpos 538\n  ypos 10548\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 28\n  maskChannelMask none\n  name DirBlurWrapper30\n  xpos 538\n  ypos 10597\n  disable {{parent.Flare317.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 38\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper31\n  xpos 538\n  ypos 10635\n  disable {{parent.Flare317.disable}}\n }\n Sharpen {\n  amount 50\n  maskChannelMask none\n  name Sharpen5\n  xpos 538\n  ypos 10673\n }\n Grade {\n  whitepoint 0.8\n  maskChannelMask none\n  name Grade76\n  xpos 538\n  ypos 10711\n }\n Grade {\n  multiply 0.54\n  gamma 1.54\n  maskChannelMask none\n  name Grade77\n  xpos 538\n  ypos 10777\n }\n Glow {\n  tolerance 0.56\n  brightness 1.5\n  size 70\n  maskChannelMask none\n  name Glow22\n  xpos 538\n  ypos 10836\n }\n Dot {\n  name Dot75\n  xpos 572\n  ypos 11662\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.65\n  radius {0 26.23 37.09}\n  anamorph 3\n  ring_color {0 0.01600027084 1}\n  inner_color {0 0.8500001431 1}\n  outer_falloff 0.75\n  inner_falloff 2\n  chroma_spread 0.005\n  vis_in 0.9\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 2.4\n  sharpness 0.53\n  corners_angle 48\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare221\n  label Pieces\n  xpos -2195\n  ypos 11211\n  disable {{parent.Flare77.disable}}\n }\n Blur {\n  size 4.8\n  name Blur133\n  xpos -2195\n  ypos 11249\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 7\n  BlurAngle 180\n  maskChannelMask none\n  name DirBlurWrapper25\n  xpos -2195\n  ypos 11313\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 15\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper26\n  xpos -2195\n  ypos 11351\n  disable {{parent.Flare77.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset -0.31\n  radius {0 26.23 37.09}\n  anamorph 6\n  ring_color {0 0.01600027084 1}\n  inner_color {0 0.8500001431 1}\n  outer_falloff 0.75\n  inner_falloff 2\n  chroma_spread 0.005\n  vis_in 0.9\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 2.4\n  sharpness 0.53\n  corners_angle 48\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare75\n  label Pieces\n  xpos -2084\n  ypos 11177\n  disable {{parent.Flare77.disable}}\n }\n Blur {\n  size 4.8\n  name Blur132\n  xpos -2084\n  ypos 11215\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 7\n  BlurAngle 180\n  maskChannelMask none\n  name DirBlurWrapper23\n  xpos -2084\n  ypos 11279\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 15\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper24\n  xpos -2084\n  ypos 11317\n  disable {{parent.Flare77.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.5\n  radius {0 26.23 37.09}\n  size_mult 3\n  anamorph 6\n  ring_color {0 0.01600027084 1}\n  inner_color {0 0.8500001431 1}\n  outer_falloff 0.75\n  inner_falloff 2\n  chroma_spread 0.005\n  vis_in 0.9\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 2.4\n  sharpness 0.53\n  corners_angle 48\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare76\n  label Pieces\n  xpos -1965\n  ypos 11132\n  disable {{parent.Flare77.disable}}\n }\n Blur {\n  size 4.8\n  name Blur131\n  xpos -1965\n  ypos 11170\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 7\n  BlurAngle 180\n  maskChannelMask none\n  name DirBlurWrapper21\n  xpos -1965\n  ypos 11234\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 15\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper22\n  xpos -1965\n  ypos 11272\n  disable {{parent.Flare77.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset -0.2\n  radius {0 26.23 37.09}\n  size_mult 2\n  anamorph 4\n  ring_color {0 0.01600027084 1}\n  inner_color {0 0.8500001431 1}\n  outer_falloff 0.75\n  inner_falloff 2\n  chroma_spread 0.005\n  vis_in 0.9\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 2.4\n  sharpness 0.53\n  corners_angle 48\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare77\n  label Pieces\n  xpos -1786\n  ypos 11033\n  disable {{\"parent.lensPieceLinesPicker == 4 ? 0 : 1\"}}\n }\n Blur {\n  size 4.8\n  name Blur130\n  xpos -1786\n  ypos 11144\n  disable {{parent.Flare77.disable}}\n }\n Transform {\n  translate {268 0}\n  center {986 506}\n  black_outside false\n  name Transform3\n  xpos -1786\n  ypos 11182\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 7\n  BlurAngle 180\n  maskChannelMask none\n  name DirBlurWrapper19\n  xpos -1786\n  ypos 11208\n  disable {{parent.Flare77.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurLength 15\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper20\n  xpos -1786\n  ypos 11246\n  disable {{parent.Flare77.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.3\n  radius {0 26.23 37.09}\n  anamorph 3\n  ring_color {0 0.01600027084 1}\n  inner_color {0 0.8500001431 1}\n  outer_falloff 0.75\n  inner_falloff 2\n  chroma_spread 0.005\n  vis_in 0.9\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 2.4\n  sharpness 0.57\n  corners_angle 48\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare79\n  label Pieces\n  xpos -1608\n  ypos 11148\n  disable {{parent.Flare77.disable}}\n }\n Blur {\n  size 4.8\n  name Blur129\n  xpos -1608\n  ypos 11186\n  disable {{parent.Flare77.disable}}\n }\n Transform {\n  translate {98 38}\n  center {986 506}\n  name Transform6\n  xpos -1608\n  ypos 11224\n  disable {{parent.Flare77.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge199\n  xpos -1608\n  ypos 11252\n  disable {{parent.Flare77.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge200\n  xpos -1608\n  ypos 11278\n  disable {{parent.Flare77.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge201\n  xpos -1608\n  ypos 11323\n  disable {{parent.Flare77.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge202\n  xpos -1608\n  ypos 11357\n  disable {{parent.Flare77.disable}}\n }\n Dot {\n  name Dot155\n  xpos -1574\n  ypos 11531\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {111.1 263.38 292.18}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.78\n  inner_falloff 10\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare189\n  xpos -2503\n  ypos 10505\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform58\n  xpos -2503\n  ypos 10531\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {325.16 366.98 381.31}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.7\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare190\n  xpos -2503\n  ypos 10455\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform59\n  xpos -2503\n  ypos 10481\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {234.8 463.99 500}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare191\n  xpos -2374\n  ypos 10411\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform60\n  xpos -2374\n  ypos 10437\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge143\n  xpos -2374\n  ypos 10481\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge160\n  xpos -2374\n  ypos 10531\n  disable {{parent.Flare215.disable}}\n }\nset N9823e400 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle21\n  xpos -2374\n  ypos 10557\n }\npush $N9823e400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {1.42 1.42 34.14}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 15\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare192\n  xpos -2230\n  ypos 10438\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade78\n  xpos -2230\n  ypos 10531\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge161\n  xpos -2230\n  ypos 10557\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 47\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper3\n  xpos -2230\n  ypos 10583\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  whitepoint 0.25\n  gamma 0.295\n  maskChannelMask none\n  name Grade79\n  xpos -2230\n  ypos 10621\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {71.04 85.24 93.76}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.14\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare193\n  xpos -2368\n  ypos 10276\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform61\n  xpos -2368\n  ypos 10302\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {107.03 167.62 203.63}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 1.06\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare194\n  xpos -2239\n  ypos 10232\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform62\n  xpos -2239\n  ypos 10258\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge162\n  xpos -2239\n  ypos 10302\n  disable {{parent.Flare215.disable}}\n }\nset N981ba800 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle22\n  xpos -2239\n  ypos 10350\n  disable {{parent.Flare215.disable}}\n }\npush $N981ba800\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 10\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare195\n  xpos -2095\n  ypos 10230\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade80\n  xpos -2095\n  ypos 10302\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge163\n  xpos -2095\n  ypos 10350\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 47\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper10\n  xpos -2095\n  ypos 10376\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  whitepoint 0.25\n  gamma 0.295\n  maskChannelMask none\n  name Grade81\n  xpos -2095\n  ypos 10442\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge164\n  xpos -2095\n  ypos 10621\n }\n Blur {\n  size {0 20}\n  name Blur101\n  xpos -2095\n  ypos 10647\n }\n Dot {\n  name Dot110\n  xpos -2061\n  ypos 10694\n }\n Dot {\n  name Dot111\n  xpos -1823\n  ypos 10694\n }\nset N98133800 [stack 0]\npush $N98133800\n Transform {\n  scale {2.2 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform81\n  xpos -1680\n  ypos 10690\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.45\n  radius {198.59 208.53 221.32}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.135\n  inner_falloff 5.8\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare216\n  xpos -2034\n  ypos 10090\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {60 0}\n  center {960 540}\n  black_outside false\n  name Transform75\n  xpos -2034\n  ypos 10116\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.65\n  radius {119.99 149.82 164.1}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.24\n  inner_falloff 10\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.9\n  sharpness 1\n  corners_angle 45\n  name Flare217\n  xpos -1942\n  ypos 10071\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.55\n  radius {71.04 85.24 96.6}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.54\n  inner_falloff 0.36\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare218\n  xpos -1940\n  ypos 10007\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform76\n  xpos -1940\n  ypos 10033\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.55\n  radius {137.79 167.62 182.32}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare219\n  xpos -1811\n  ypos 9963\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform77\n  xpos -1811\n  ypos 9989\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge183\n  xpos -1811\n  ypos 10033\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge184\n  xpos -1811\n  ypos 10071\n  disable {{parent.Flare215.disable}}\n }\nset Na0c93c00 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge185\n  xpos -1811\n  ypos 10116\n  disable {{parent.Flare215.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle25\n  xpos -1811\n  ypos 10185\n }\npush $Na0c93c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x x11 1501} {parent.flarePos.y x11 550}}\n  offset 0.55\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 10\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.024\n  chroma_shift 2.2\n  chroma_shift_angle 74\n  vis_out 1\n  name Flare220\n  xpos -1667\n  ypos 9959\n  disable {{parent.Flare215.disable}}\n }\n Blur {\n  size {0 40}\n  name Blur102\n  xpos -1667\n  ypos 9985\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade82\n  xpos -1667\n  ypos 10071\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge186\n  xpos -1667\n  ypos 10185\n }\n Blur {\n  size {0 10}\n  name Blur103\n  xpos -1667\n  ypos 10234\n }\n Transform {\n  scale {1.4 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform78\n  xpos -1485\n  ypos 10240\n  disable {{parent.Flare215.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 10\n  maskChannelMask none\n  name DirBlurWrapper14\n  xpos -1485\n  ypos 10266\n  disable {{parent.Flare215.disable}}\n }\n Sharpen {\n  amount 20\n  maskChannelMask none\n  name Sharpen4\n  xpos -1485\n  ypos 10304\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {262.81 269.91 269.91}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare196\n  xpos -2484\n  ypos 9662\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform63\n  xpos -2484\n  ypos 9688\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {156.26 160.52 261.37}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare197\n  xpos -2489\n  ypos 9629\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {83.82 92.34 126.43}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare198\n  xpos -2364\n  ypos 9562\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform64\n  xpos -2364\n  ypos 9588\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge165\n  xpos -2364\n  ypos 9629\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge166\n  xpos -2364\n  ypos 9688\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {282.69 289.79 377.86}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare199\n  xpos -2256\n  ypos 9636\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform65\n  xpos -2256\n  ypos 9662\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {181.84 198.88 218.76}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare200\n  xpos -2256\n  ypos 9576\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform66\n  xpos -2256\n  ypos 9602\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {117.91 129.27 161.94}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare201\n  xpos -2257\n  ypos 9528\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {42.92 42.92 104}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.23\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare202\n  xpos -2136\n  ypos 9461\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform67\n  xpos -2136\n  ypos 9487\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge167\n  xpos -2136\n  ypos 9528\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge168\n  xpos -2136\n  ypos 9602\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge169\n  xpos -2136\n  ypos 9662\n  disable {{parent.Flare215.disable}}\n }\nset Na0baa800 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge170\n  xpos -2136\n  ypos 9688\n  disable {{parent.Flare215.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle28\n  xpos -2136\n  ypos 9714\n  disable {{parent.Flare215.disable}}\n }\npush $Na0baa800\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 8\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare203\n  xpos -2007\n  ypos 9504\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  inputs 1+1\n  white 4\n  multiply 4\n  maskChannelMask rgba.red\n  name Grade83\n  xpos -2007\n  ypos 9662\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge171\n  xpos -2007\n  ypos 9714\n }\n Transform {\n  translate {0 -20}\n  scale {1.4 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform80\n  xpos -1864\n  ypos 9714\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {181.75 193.14 214.74}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare209\n  xpos -1852\n  ypos 9592\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform71\n  xpos -1852\n  ypos 9618\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {243.04 247.3 357.63}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare210\n  xpos -1860\n  ypos 9559\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {33.01 61.88 106.14}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 3\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare211\n  xpos -1732\n  ypos 9492\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform72\n  xpos -1732\n  ypos 9518\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge177\n  xpos -1732\n  ypos 9559\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge178\n  xpos -1732\n  ypos 9618\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {191.78 198.88 210.24}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare212\n  xpos -1624\n  ypos 9547\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform73\n  xpos -1624\n  ypos 9573\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {105.13 116.49 174.73}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare213\n  xpos -1614\n  ypos 9514\n  disable {{parent.Flare215.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {33.02 44.38 86.99}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare214\n  xpos -1504\n  ypos 9447\n  disable {{parent.Flare215.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform74\n  xpos -1504\n  ypos 9473\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge179\n  xpos -1504\n  ypos 9514\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge180\n  xpos -1504\n  ypos 9573\n }\nset Na0acb400 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge181\n  xpos -1504\n  ypos 9618\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle29\n  xpos -1504\n  ypos 9644\n }\npush $Na0acb400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {1.45 1.45 34.17}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 10\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare215\n  xpos -1375\n  ypos 9384\n  disable {{\"parent.lensPieceLinesPicker == 3 ? 0 : 1\"}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade84\n  xpos -1375\n  ypos 9573\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge182\n  xpos -1375\n  ypos 9644\n }\n Transform {\n  scale {1.3 1}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform79\n  xpos -1375\n  ypos 9670\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge176\n  xpos -1375\n  ypos 9714\n }\n Blur {\n  size {10 0}\n  name Blur104\n  xpos -1375\n  ypos 9740\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation34\n  xpos -1375\n  ypos 9778\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 28\n  maskChannelMask none\n  name DirBlurWrapper13\n  xpos -1375\n  ypos 9827\n  disable {{parent.Flare215.disable}}\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 38\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper18\n  xpos -1375\n  ypos 9865\n  disable {{parent.Flare215.disable}}\n }\n Sharpen {\n  amount 50\n  maskChannelMask none\n  name Sharpen6\n  xpos -1375\n  ypos 9903\n }\n Grade {\n  whitepoint 0.4\n  maskChannelMask none\n  name Grade85\n  xpos -1375\n  ypos 9941\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge187\n  xpos -1375\n  ypos 10310\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.01\n  name Merge189\n  xpos -1375\n  ypos 10690\n  disable {{parent.Flare215.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.008\n  name Merge190\n  xpos -1375\n  ypos 10745\n  disable {{parent.Flare215.disable}}\n }\n Grade {\n  multiply 0.18\n  gamma 1.54\n  maskChannelMask none\n  name Grade86\n  xpos -1375\n  ypos 10806\n }\n Glow {\n  tolerance 0.56\n  brightness 1.5\n  size 70\n  maskChannelMask none\n  name Glow14\n  xpos -1375\n  ypos 10866\n }\n Dot {\n  name Dot158\n  xpos -1341\n  ypos 10919\n }\n Dot {\n  name Dot118\n  xpos -2665\n  ypos 10919\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{2.15+(parent.lensPieceLinesOffset)}}\n  radius {0 3.97 209.04}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 11.52\n  ring_color 3\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare80\n  xpos -3713\n  ypos 11772\n  disable {{parent.Flare89.disable}}\n }\n Blur {\n  size 16\n  name Blur105\n  xpos -3713\n  ypos 11798\n  disable {{parent.Flare89.disable}}\n }\n Blur {\n  size 1\n  name Blur106\n  xpos -3713\n  ypos 11836\n  disable {{parent.Flare89.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)+2.15}}\n  radius {0 3.97 72.49}\n  size_mult {{(parent.flareCoreSize)+1.8}}\n  anamorph 11.52\n  ring_color 0.5\n  inner_color 1\n  outer_falloff 1.7\n  chroma_spread 0.02\n  brightness 0.095\n  vis_mask -rgba.alpha\n  name Flare89\n  xpos -3592\n  ypos 11641\n  disable {{\"parent.lensPieceLinesPicker == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 3\n  name Blur107\n  xpos -3592\n  ypos 11667\n  disable {{parent.Flare89.disable}}\n }\n Glow {\n  brightness 0.5\n  name Glow15\n  xpos -3592\n  ypos 11707\n  disable {{parent.Flare89.disable}}\n }\n Grade {\n  multiply 10\n  name Grade87\n  xpos -3592\n  ypos 11733\n  disable {{parent.Flare89.disable}}\n }\n Grade {\n  multiply {1 1 1 0}\n  name Grade88\n  xpos -3592\n  ypos 11759\n  disable {{parent.Flare89.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.07\n  name Merge144\n  xpos -3592\n  ypos 11842\n  disable {{parent.Flare89.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 1.2\"}}\n  radius {161.95 176.16 187.52}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.78\n  inner_falloff 10\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare170\n  xpos -4819\n  ypos 11144\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform7\n  xpos -4819\n  ypos 11170\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 1.1\"}}\n  radius {143.48 157.68 166.2}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.7\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare121\n  xpos -4819\n  ypos 11094\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform43\n  xpos -4819\n  ypos 11120\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 1.1\"}}\n  radius {291.2 311.09 347.1}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare168\n  xpos -4690\n  ypos 11050\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform44\n  xpos -4690\n  ypos 11076\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge145\n  xpos -4690\n  ypos 11120\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge146\n  xpos -4690\n  ypos 11170\n }\nset Na0953c00 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle30\n  xpos -4690\n  ypos 11196\n }\npush $Na0953c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 1.1\"}}\n  radius {1.42 1.42 34.14}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare169\n  xpos -4546\n  ypos 11044\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade89\n  xpos -4546\n  ypos 11170\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge147\n  xpos -4546\n  ypos 11196\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 47\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper17\n  xpos -4546\n  ypos 11222\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  whitepoint 0.25\n  gamma 0.295\n  maskChannelMask none\n  name Grade90\n  xpos -4546\n  ypos 11260\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 0.7\"}}\n  radius {71.04 85.24 93.76}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.14\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare151\n  xpos -4684\n  ypos 10915\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform45\n  xpos -4684\n  ypos 10941\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 0.7\"}}\n  radius {147.73 167.62 203.63}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare152\n  xpos -4555\n  ypos 10871\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform46\n  xpos -4555\n  ypos 10897\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge148\n  xpos -4555\n  ypos 10941\n }\nset Na0950400 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle31\n  xpos -4555\n  ypos 10989\n }\npush $Na0950400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 0.7\"}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare153\n  xpos -4411\n  ypos 10867\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade91\n  xpos -4411\n  ypos 10941\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge149\n  xpos -4411\n  ypos 10989\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {{parent.flarePos.x} {parent.flarePos.y}}\n  BlurLength 47\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper4\n  xpos -4411\n  ypos 11015\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  whitepoint 0.25\n  gamma 0.295\n  maskChannelMask none\n  name Grade92\n  xpos -4411\n  ypos 11081\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge150\n  xpos -4411\n  ypos 11260\n }\n Dot {\n  name Dot149\n  xpos -4377\n  ypos 11333\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {262.81 269.91 269.91}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare93\n  xpos -3730\n  ypos 11018\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform47\n  xpos -3730\n  ypos 11044\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {156.26 160.52 261.37}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare94\n  xpos -3733\n  ypos 10985\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {83.82 92.34 126.43}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare95\n  xpos -3610\n  ypos 10918\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform48\n  xpos -3610\n  ypos 10944\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge151\n  xpos -3610\n  ypos 10985\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge152\n  xpos -3610\n  ypos 11044\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {282.69 289.79 377.86}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare120\n  xpos -3502\n  ypos 10992\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform49\n  xpos -3502\n  ypos 11018\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {181.84 198.88 218.76}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare96\n  xpos -3502\n  ypos 10932\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform50\n  xpos -3502\n  ypos 10958\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {117.91 129.27 161.94}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare118\n  xpos -3505\n  ypos 10884\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {18.48 29.84 90.92}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare119\n  xpos -3382\n  ypos 10817\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform51\n  xpos -3382\n  ypos 10843\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge153\n  xpos -3382\n  ypos 10884\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge154\n  xpos -3382\n  ypos 10958\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge155\n  xpos -3382\n  ypos 11018\n }\nset Na4213400 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge195\n  xpos -3382\n  ypos 11044\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle32\n  xpos -3382\n  ypos 11070\n }\npush $Na4213400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare123\n  xpos -3254\n  ypos 10859\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade93\n  xpos -3253\n  ypos 11018\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge197\n  xpos -3253\n  ypos 11070\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)}}\n  radius {149.17 159.11 166.22}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.135\n  inner_falloff 5.8\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare124\n  xpos -4213\n  ypos 10950\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {60 0}\n  center {960 540}\n  black_outside false\n  name Transform52\n  xpos -4213\n  ypos 10976\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)}}\n  radius {90.92 120.75 130.7}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.24\n  inner_falloff 10\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.9\n  sharpness 1\n  corners_angle 45\n  name Flare125\n  xpos -4130\n  ypos 10931\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)}}\n  radius {71.04 85.24 113.65}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.54\n  inner_falloff 0.36\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare127\n  xpos -4119\n  ypos 10867\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform53\n  xpos -4119\n  ypos 10893\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)}}\n  radius {82.39 112.22 182.32}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare128\n  xpos -3990\n  ypos 10823\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform54\n  xpos -3990\n  ypos 10849\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge198\n  xpos -3990\n  ypos 10893\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge220\n  xpos -3990\n  ypos 10931\n }\nset Na419e400 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge221\n  xpos -3990\n  ypos 10976\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle33\n  xpos -3990\n  ypos 11077\n }\npush $Na419e400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.lensPieceLinesOffset)}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.024\n  chroma_shift 2.2\n  chroma_shift_angle 74\n  vis_out 1\n  name Flare130\n  xpos -3846\n  ypos 10820\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade94\n  xpos -3846\n  ypos 10931\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  mix 0.95\n  name Merge222\n  xpos -3846\n  ypos 11077\n }\n Blur {\n  size {0 10}\n  name Blur156\n  xpos -3846\n  ypos 11151\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.15\n  name Merge285\n  xpos -3253\n  ypos 11157\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {186.11 196.05 204.57}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare154\n  xpos -3633\n  ypos 10670\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform55\n  xpos -3633\n  ypos 10696\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {112.23 116.49 184.67}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare155\n  xpos -3639\n  ypos 10637\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {18.48 27 61.09}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare156\n  xpos -3513\n  ypos 10570\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform82\n  xpos -3513\n  ypos 10596\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge286\n  xpos -3513\n  ypos 10637\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge288\n  xpos -3513\n  ypos 10696\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {191.78 198.88 210.24}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare158\n  xpos -3405\n  ypos 10625\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform93\n  xpos -3405\n  ypos 10651\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {105.13 116.49 174.73}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare159\n  xpos -3395\n  ypos 10592\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {18.48 29.84 72.45}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare160\n  xpos -3285\n  ypos 10525\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform94\n  xpos -3285\n  ypos 10551\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge289\n  xpos -3285\n  ypos 10592\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge290\n  xpos -3285\n  ypos 10651\n }\nset Na40aec00 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge291\n  xpos -3285\n  ypos 10696\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle34\n  xpos -3285\n  ypos 10722\n }\npush $Na40aec00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) + 2.08\"}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+4}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.25\n  chroma_shift -10.4\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare161\n  xpos -3156\n  ypos 10517\n  disable {{parent.Flare166.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade95\n  xpos -3156\n  ypos 10651\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  mix 0.8\n  name Merge292\n  xpos -3156\n  ypos 10722\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) - 0.35\"}}\n  radius {149.17 159.11 183.53}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.135\n  inner_falloff 5.8\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare162\n  xpos -4232\n  ypos 10602\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {60 0}\n  center {960 540}\n  black_outside false\n  name Transform95\n  xpos -4232\n  ypos 10628\n }\n Blur {\n  size 10.5\n  name Blur157\n  xpos -4232\n  ypos 10654\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) - 0.35\"}}\n  radius {90.92 120.75 132.12}\n  size_mult {{(parent.flareCoreSize)+1.6}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.24\n  inner_falloff 10\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.9\n  sharpness 1\n  corners_angle 45\n  name Flare163\n  xpos -4125\n  ypos 10583\n  disable {{parent.Flare166.disable}}\n }\n Blur {\n  size 10.5\n  name Blur158\n  xpos -4125\n  ypos 10609\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) - 0.35\"}}\n  radius {71.04 85.24 96.6}\n  size_mult {{(parent.flareCoreSize)+2.4}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.54\n  inner_falloff 0.36\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare164\n  xpos -4022\n  ypos 10551\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform102\n  xpos -4022\n  ypos 10577\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) - 0.35\"}}\n  radius {137.79 167.62 182.32}\n  size_mult {{(parent.flareCoreSize)}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare165\n  xpos -3893\n  ypos 10507\n  disable {{parent.Flare166.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform104\n  xpos -3893\n  ypos 10533\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge293\n  xpos -3893\n  ypos 10577\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge294\n  xpos -3893\n  ypos 10615\n }\nset Na4041400 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge295\n  xpos -3893\n  ypos 10660\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle35\n  xpos -3893\n  ypos 10729\n }\npush $Na4041400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"(parent.lensPieceLinesOffset) - 0.25\"}}\n  radius {0 0 32.72}\n  size_mult {{(parent.flareCoreSize)+9}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.024\n  chroma_shift 2.2\n  chroma_shift_angle 74\n  vis_out 1\n  name Flare166\n  xpos -3749\n  ypos 10476\n  disable {{\"parent.lensPieceLinesPicker == 1 ? 0 : 1\"}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade96\n  xpos -3749\n  ypos 10615\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge296\n  xpos -3749\n  ypos 10729\n }\n Blur {\n  size {0 10}\n  name Blur161\n  xpos -3749\n  ypos 10776\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.15\n  name Merge297\n  xpos -3156\n  ypos 10782\n  disable {{parent.Flare166.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.6\n  name Merge298\n  xpos -3156\n  ypos 11214\n  disable {{parent.Flare166.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.07\n  name Merge299\n  xpos -3156\n  ypos 11329\n  disable {{parent.Flare166.disable}}\n }\n Glow {\n  tolerance 0.56\n  brightness 1.5\n  size 70\n  maskChannelMask none\n  name Glow28\n  xpos -3156\n  ypos 11355\n  disable {{parent.Flare166.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"1.7 + parent.lensPieceLinesOffset\"}}\n  radius {53.47 253.76 500}\n  size_mult {{\"(parent.flareCoreSize) + 1\"}}\n  anamorph 1.07\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare133\n  xpos -5036\n  ypos 9835\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform107\n  xpos -5036\n  ypos 9861\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle36\n  xpos -5036\n  ypos 9921\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"2 + parent.lensPieceLinesOffset\"}}\n  radius {0 0 32.72}\n  size_mult {{\"(parent.flareCoreSize) + 9\"}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare134\n  xpos -4891\n  ypos 9688\n  disable {{\"parent.lensPieceLinesPicker == 0 ? 0 : 1\"}}\n }\n Blur {\n  size {0 90}\n  name Blur163\n  xpos -4891\n  ypos 9714\n }\n Grade {\n  blackpoint 0.03\n  whitepoint 0.035\n  gamma 2.9\n  maskChannelMask none\n  name Grade97\n  xpos -4891\n  ypos 9752\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge300\n  xpos -4891\n  ypos 9921\n }\n Blur {\n  size 14\n  name Blur164\n  xpos -4891\n  ypos 9999\n }\n Blur {\n  size {154 0}\n  name Blur165\n  xpos -4891\n  ypos 10037\n }\n Dot {\n  name Dot150\n  xpos -4857\n  ypos 10095\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.1 + parent.lensPieceLinesOffset\"}}\n  radius {46.89 62.51 69.61}\n  size_mult {{\"(parent.flareCoreSize) + 2.4\"}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.14\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare135\n  xpos -4737\n  ypos 9868\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.1 + parent.lensPieceLinesOffset\"}}\n  radius {102.28 106.54 129.28}\n  size_mult {{\"(parent.flareCoreSize) + 3\"}}\n  anamorph 1.56\n  inner_color 0\n  outer_falloff 0.14\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 28\n  name Flare138\n  xpos -4517\n  ypos 9824\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.2 + parent.lensPieceLinesOffset\"}}\n  radius {89.5 106.54 117.91}\n  size_mult {{\"(parent.flareCoreSize) \"}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.14\n  inner_falloff 6\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare139\n  xpos -4737\n  ypos 9789\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.2 + parent.lensPieceLinesOffset\"}}\n  radius {147.73 167.62 185.16}\n  size_mult {{\"(parent.flareCoreSize) \"}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.13\n  inner_falloff 10\n  brightness 2\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare140\n  xpos -4627\n  ypos 9711\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform108\n  xpos -4627\n  ypos 9737\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge301\n  xpos -4627\n  ypos 9789\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge302\n  xpos -4627\n  ypos 9824\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge303\n  xpos -4627\n  ypos 9868\n }\nset Na3eebc00 [stack 0]\n Dot {\n  name Dot151\n  xpos -4593\n  ypos 9904\n }\nset Na3eeb800 [stack 0]\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle37\n  xpos -4627\n  ypos 9936\n }\npush $Na3eebc00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.1 + parent.lensPieceLinesOffset\"}}\n  radius {0 0 32.72}\n  size_mult {{\"(parent.flareCoreSize) + 9\"}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.012\n  chroma_shift -3.4\n  vis_out 1\n  name Flare141\n  xpos -4398\n  ypos 9704\n  disable {{parent.Flare134.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade98\n  xpos -4398\n  ypos 9868\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge304\n  xpos -4398\n  ypos 9936\n }\n Blur {\n  size 14\n  name Blur166\n  xpos -4398\n  ypos 10014\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.07\n  name Merge305\n  xpos -4398\n  ypos 10091\n }\n Dot {\n  name Dot152\n  xpos -4364\n  ypos 10167\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{parent.lensPieceLinesOffset}}\n  radius {0 89.49 500}\n  size_mult {{\"(parent.flareCoreSize) + 4\"}}\n  anamorph 1.03\n  ring_color 0.74\n  inner_color 1\n  outer_falloff 10\n  inner_falloff 5.4\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare142\n  xpos -3988\n  ypos 9805\n  disable {{parent.Flare134.disable}}\n }\n Blur {\n  size 1100\n  name Blur167\n  xpos -3988\n  ypos 9831\n  disable {{Lines_Plus.disable==1?1:lines.which==0?0:1t}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x x50 488} {parent.flarePos.y x50 984}}\n  offset {{\"1.19 + parent.lensPieceLinesOffset\"}}\n  radius {0 0 38.4}\n  size_mult {{\"(parent.flareCoreSize) + 2\"}}\n  anamorph 20\n  inner_color 0\n  outer_falloff 0.9\n  chroma_shift -3.4\n  vis_out 1\n  name Flare143\n  xpos -4235\n  ypos 9748\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {0 16}\n  center {960 540}\n  name Transform109\n  xpos -4235\n  ypos 9774\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x x50 488} {parent.flarePos.y x50 984}}\n  offset {{\"1.16 + parent.lensPieceLinesOffset\"}}\n  radius {0 0 32.72}\n  size_mult {{\"(parent.flareCoreSize) + 4\"}}\n  anamorph 14\n  inner_color 0\n  outer_falloff 0.9\n  chroma_shift -3.4\n  vis_out 1\n  name Flare144\n  xpos -4116\n  ypos 9713\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge306\n  xpos -4116\n  ypos 9774\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  Achannels {rgba.red rgba.green rgba.blue rgba.red}\n  maskChannelMask none\n  name Merge307\n  xpos -4116\n  ypos 9837\n  disable {{parent.Flare134.disable}}\n }\n Dot {\n  name Dot153\n  xpos -4082\n  ypos 10098\n }\npush $Na3eeb800\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.7 + parent.lensPieceLinesOffset\"}}\n  radius {38.37 46.89 113.66}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.48\n  inner_falloff 1.2\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare146\n  xpos -3758\n  ypos 9838\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {60 0}\n  center {960 540}\n  black_outside false\n  name Transform110\n  xpos -3758\n  ypos 9864\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.6 + parent.lensPieceLinesOffset\"}}\n  radius {0 46.89 139.22}\n  size_mult {{\"(parent.flareCoreSize) + 1.4\"}}\n  anamorph 1.01\n  inner_color 0\n  outer_falloff 0.39\n  inner_falloff 4.8\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 0.8\n  sharpness 1\n  corners_angle 45\n  name Flare147\n  xpos -3752\n  ypos 9755\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  center {960 540}\n  black_outside false\n  name Transform111\n  xpos -3752\n  ypos 9781\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.6 + parent.lensPieceLinesOffset\"}}\n  radius {0 142.05 251.93}\n  size_mult {{\"(parent.flareCoreSize) + -0.1\"}}\n  anamorph 0.96\n  ring_color 0.379197\n  inner_color 0\n  outer_falloff 0.185\n  inner_falloff 7.8\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare148\n  xpos -3623\n  ypos 9686\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {50 0}\n  center {960 540}\n  black_outside false\n  name Transform112\n  xpos -3623\n  ypos 9737\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge308\n  xpos -3623\n  ypos 9781\n  disable {{parent.Flare134.disable}}\n }\nset N98823c00 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge309\n  xpos -3623\n  ypos 9864\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge310\n  xpos -3623\n  ypos 9900\n  disable {{parent.Flare134.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle38\n  xpos -3623\n  ypos 9933\n  disable {{parent.Flare134.disable}}\n }\npush $N98823c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.6 + parent.lensPieceLinesOffset\"}}\n  radius {0 0 32.72}\n  size_mult {{\"(parent.flareCoreSize) + 4\"}}\n  anamorph 25\n  inner_color 0\n  outer_falloff 0.9\n  chroma_spread 0.024\n  chroma_shift 2.2\n  chroma_shift_angle 74\n  vis_out 1\n  name Flare149\n  xpos -3479\n  ypos 9705\n  disable {{parent.Flare134.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade99\n  xpos -3479\n  ypos 9781\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  mix 0.8\n  name Merge311\n  xpos -3479\n  ypos 9933\n  disable {{parent.Flare134.disable}}\n }\n Blur {\n  size {0 10}\n  name Blur168\n  xpos -3479\n  ypos 10024\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"0.07 + parent.lensPieceLinesOffset\"}}\n  radius {213.1 234.4 322.47}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare150\n  xpos -3347\n  ypos 9848\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform113\n  xpos -3347\n  ypos 9874\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.07\"}}\n  radius {112.23 116.49 184.67}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare229\n  xpos -3347\n  ypos 9815\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.07\"}}\n  radius {18.48 27 62.51}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare231\n  xpos -3227\n  ypos 9748\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform114\n  xpos -3227\n  ypos 9774\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge312\n  xpos -3227\n  ypos 9815\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge313\n  xpos -3227\n  ypos 9874\n  disable {{parent.Flare134.disable}}\n }\n Grade {\n  whitepoint 0.56\n  gamma 0.57\n  maskChannelMask none\n  name Grade100\n  xpos -3227\n  ypos 9900\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.07\"}}\n  radius {126.44 198.88 241.49}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 1.15\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare232\n  xpos -3113\n  ypos 9829\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {-30 0}\n  center {960 540}\n  black_outside false\n  name Transform115\n  xpos -3113\n  ypos 9855\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.07\"}}\n  radius {65.36 116.49 173.31}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.23\n  inner_falloff 0.41\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare237\n  xpos -3115\n  ypos 9796\n  disable {{parent.Flare134.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.07\"}}\n  radius {0 29.84 95.18}\n  size_mult {{\"(parent.flareCoreSize) + 1.6\"}}\n  anamorph 2\n  inner_color 0\n  outer_falloff 0.39\n  inner_falloff 1.15\n  brightness 0.42\n  vis_out 1.04\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 45\n  name Flare238\n  xpos -2993\n  ypos 9729\n  disable {{parent.Flare134.disable}}\n }\n Transform {\n  translate {30 0}\n  center {960 540}\n  black_outside false\n  name Transform116\n  xpos -2993\n  ypos 9755\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge314\n  xpos -2993\n  ypos 9796\n  disable {{parent.Flare134.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix 0.6\n  name Merge315\n  xpos -2993\n  ypos 9855\n  disable {{parent.Flare134.disable}}\n }\nset N987b0400 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge316\n  xpos -2993\n  ypos 9900\n  disable {{parent.Flare134.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle39\n  xpos -2993\n  ypos 9926\n  disable {{parent.Flare134.disable}}\n }\npush $N987b0400\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceLinesOffset + 0.17\"}}\n  radius {0 0 38.4}\n  size_mult {{\"(parent.flareCoreSize) + 4\"}}\n  anamorph 25\n  ring_color 0.74\n  inner_color 0\n  outer_falloff 0.1\n  inner_falloff 5.4\n  chroma_spread 0.108\n  chroma_shift -9.8\n  chroma_shift_angle 42\n  vis_out 1\n  name Flare247\n  xpos -2864\n  ypos 9727\n  disable {{parent.Flare134.disable}}\n }\n Grade {\n  inputs 1+1\n  white 1.7\n  multiply 2.5\n  maskChannelMask rgba.red\n  name Grade101\n  xpos -2864\n  ypos 9855\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge317\n  xpos -2864\n  ypos 9926\n }\n Blur {\n  size {5 7}\n  name Blur169\n  xpos -2864\n  ypos 9952\n }\n Grade {\n  multiply 0.36\n  maskChannelMask none\n  name Grade102\n  xpos -2864\n  ypos 9990\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge318\n  xpos -2864\n  ypos 10030\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.7\n  name Merge319\n  xpos -2864\n  ypos 10094\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.1\n  name Merge320\n  xpos -2864\n  ypos 10163\n }\n Glow {\n  tolerance 0.56\n  brightness 1.5\n  size 70\n  maskChannelMask none\n  name Glow27\n  xpos -2864\n  ypos 10189\n  disable {{parent.Flare134.disable}}\n }\n Switch {\n  inputs 7\n  which {{parent.lensPieceLinesPicker}}\n  name lines\n  xpos -2864\n  ypos 11842\n }\n Dot {\n  name Dot156\n  xpos -2830\n  ypos 11956\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop10\n  xpos -191\n  ypos 11952\n }\n Clamp {\n  name Clamp7\n  xpos -54\n  ypos 11946\n }\n Grade {\n  multiply {{parent.lensPieceLinesTint.r} {parent.lensPieceLinesTint.g} {parent.lensPieceLinesTint.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade4\n  xpos 146\n  ypos 11952\n }\n Transform {\n  scale {{parent.lensPieceLinesStretch} 1}\n  center {{root.width/2} {root.height/2}}\n  name Transform117\n  xpos 296\n  ypos 11952\n }\n Group {\n  name Static_Noise8\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 462\n  ypos 11953\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N986bb400 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N986bb400\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N986ba400 [stack 0]\npush $N986ba400\npush $N986bb400\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot157\n  xpos 657\n  ypos 11956\n }\nset N986b9800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation35\n  xpos 623\n  ypos 12005\n }\npush $N986b9800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy14\n  xpos 767\n  ypos 11946\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1.4\n  radius {45.54 75.01 107.34}\n  size_mult {{\"parent.flareCoreSize + 3.8\"}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.09\n  vis_mask -rgba.alpha\n  corners 4\n  sharpness 1\n  corners_angle 50\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 20\n  asym_angle -350\n  asym_angle_add true\n  name Flare205\n  label Source\n  xpos 507\n  ypos 8471\n  disable {{parent.Flare207.disable}}\n }\n Blur {\n  size 18.5\n  name Blur140\n  xpos 507\n  ypos 8509\n  disable {{parent.Flare207.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1.4\n  radius {88.16 99.16 133.37}\n  size_mult {{\"parent.flareCoreSize + 3.8\"}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.02\n  chroma_shift -5.2\n  chroma_shift_angle -54\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  sharpness 1\n  corners_angle 50\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle -350\n  asym_angle_add true\n  name Flare206\n  label Source\n  xpos 736\n  ypos 8408\n  disable {{parent.Flare207.disable}}\n }\n Blur {\n  size 18.5\n  name Blur141\n  xpos 736\n  ypos 8446\n  disable {{parent.Flare207.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1.4\n  radius {0 116.11 236.08}\n  size_mult {{\"parent.flareCoreSize + 3.8\"}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread 0.04\n  chroma_shift -1.8\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  sharpness 1\n  corners_angle 50\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle -350\n  asym_angle_add true\n  name Flare207\n  label Source\n  xpos 854\n  ypos 8365\n  disable {{\"parent.lensPieceRingsPicker == 3 ? 0 : 1\"}}\n }\n Blur {\n  size 18.5\n  name Blur142\n  xpos 854\n  ypos 8403\n  disable {{parent.Flare207.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge172\n  xpos 854\n  ypos 8452\n  disable {{parent.Flare207.disable}}\n }\nset N98636400 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge173\n  xpos 739\n  ypos 8515\n  disable {{parent.Flare207.disable}}\n }\npush $N98636400\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge240\n  xpos 854\n  ypos 8515\n  disable {{parent.Flare207.disable}}\n }\n Saturation {\n  saturation 0.49\n  maskChannelMask none\n  name Saturation31\n  xpos 854\n  ypos 8541\n  disable {{parent.Flare207.disable}}\n }\n Grade {\n  multiply {0.9965000153 1 0.777872026 1}\n  maskChannelMask none\n  name Grade55\n  xpos 854\n  ypos 8567\n  disable {{parent.Flare207.disable}}\n }\n Dot {\n  name Dot63\n  xpos 888\n  ypos 8692\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x x100 300} {parent.flarePos.y x100 200}}\n  offset 1.5\n  radius {44.5 105.21 120.49}\n  size_mult {{parent.flareCoreSize}}\n  ring_color {0.529843 0.670316 0.796}\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_spread 0.016\n  brightness 0.22\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0.33\n  asym_multiplier 0\n  asym_falloff 2.65\n  asym_angle -40\n  name Flare67\n  label Source\n  xpos 103\n  ypos 8424\n  disable {{\"parent.lensPieceRingsPicker == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 12\n  name Blur70\n  xpos 103\n  ypos 8462\n  disable {{parent.Flare67.disable}}\n }\n Flare {\n  position {{parent.flarePos.x x100 300} {parent.flarePos.y x100 200}}\n  offset 1.5\n  radius {65.44 126.15 141.43}\n  size_mult {{parent.flareCoreSize}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_spread 0.016\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0.33\n  asym_multiplier 0\n  asym_falloff 3.4\n  asym_angle -40\n  name Flare69\n  label Source\n  xpos 103\n  ypos 8500\n  disable {{parent.Flare67.disable}}\n }\n Grade {\n  multiply 0.5\n  name Grade70\n  xpos 103\n  ypos 8538\n  disable {{parent.Flare67.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.7\n  radius {110.89 171.6 186.88}\n  size_mult {{\"parent.flareCoreSize + 1.6\"}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_spread 0.016\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0.33\n  asym_multiplier 0\n  asym_falloff 3.4\n  asym_angle -40\n  name Flare122\n  label Source\n  xpos -228\n  ypos 8500\n  disable {{\"parent.lensPieceRingsPicker == 1 ? 0 : 1\"}}\n }\n Grade {\n  white {1.300000072 1 0.7000000477 1}\n  multiply 0.3\n  name Grade56\n  xpos -228\n  ypos 8538\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.1\n  radius {0.93 0.93 55.11}\n  size_mult {{(parent.flareCoreSize)-0.5}}\n  ring_color 0.05\n  inner_color 0.04\n  outer_falloff {1 1 1}\n  inner_falloff {1 1 1}\n  chroma_spread 0.01\n  chroma_shift -2\n  chroma_shift_angle_add true\n  brightness {1 1 1}\n  vis_mask -rgba.alpha\n  flattening 0.82\n  sharpness 0.73\n  corners_angle {{parent.lensPieceRingsRotation+5}}\n  corner_angle_add true\n  asym_multiplier 5\n  asym_angle 160\n  asym_angle_add true\n  mult_num 2\n  mult_seed 6\n  mult_offset 1.6\n  mult_size 1\n  mult_color 0.3\n  mult_color_seed 77097\n  mult_brightness 6\n  mult_brightness_seed 75027\n  mult_visibility 0.32\n  mult_flattening -1\n  mult_flattening_seed 45204\n  mult_rotate 0.06\n  name Flare110\n  label Source\n  xpos -904\n  ypos 8659\n  disable {{parent.Flare113.disable}}\n }\n Glow {\n  brightness 3.42\n  maskChannelMask none\n  name Glow24\n  xpos -904\n  ypos 8697\n  disable {{parent.Flare113.disable}}\n }\nset N985c1c00 [stack 0]\n Blur {\n  size 65\n  name Blur94\n  xpos -904\n  ypos 8743\n  disable {{parent.Flare113.disable}}\n }\nset N985c1800 [stack 0]\npush $N985c1800\npush $N985c1c00\npush $N985c1c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.1\n  radius {45.54 75.01 107.34}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.09\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 20\n  asym_angle {{parent.lensPieceRingsRotation-350}}\n  asym_angle_add true\n  name Flare226\n  label Source\n  xpos -768\n  ypos 8591\n  disable {{parent.Flare113.disable}}\n }\n Blur {\n  size 18.5\n  name Blur73\n  xpos -768\n  ypos 8629\n  disable {{parent.Flare113.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.1\n  radius {88.16 99.16 113.02}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle {{parent.lensPieceRingsRotation-350}}\n  asym_angle_add true\n  name Flare235\n  label Source\n  xpos -654\n  ypos 8539\n  disable {{parent.Flare113.disable}}\n }\n Blur {\n  size 18.5\n  name Blur77\n  xpos -654\n  ypos 8577\n  disable {{parent.Flare113.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.1\n  radius {0 116.11 129.97}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle {{parent.lensPieceRingsRotation-350}}\n  asym_angle_add true\n  name Flare236\n  label Source\n  xpos -536\n  ypos 8496\n  disable {{parent.Flare113.disable}}\n }\n Blur {\n  size 18.5\n  name Blur95\n  xpos -536\n  ypos 8534\n  disable {{parent.Flare113.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge140\n  xpos -536\n  ypos 8583\n  disable {{parent.Flare113.disable}}\n }\nset N98542c00 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge191\n  xpos -536\n  ypos 8635\n  disable {{parent.Flare113.disable}}\n }\npush $N98542c00\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.3\n  radius {45.54 75.01 107.34}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.09\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 16\n  asym_angle {{parent.lensPieceRingsRotation+180}}\n  asym_angle_add true\n  name Flare111\n  label Source\n  xpos -653\n  ypos 8408\n  disable {{parent.Flare113.disable}}\n }\n Blur {\n  size 18.5\n  name Blur96\n  xpos -653\n  ypos 8446\n  disable {{parent.Flare113.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.3\n  radius {88.16 99.16 113.02}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle {{parent.lensPieceRingsRotation+180}}\n  asym_angle_add true\n  name Flare112\n  label Source\n  xpos -539\n  ypos 8356\n  disable {{parent.Flare113.disable}}\n }\n Blur {\n  size 18.5\n  name Blur97\n  xpos -539\n  ypos 8394\n  disable {{parent.Flare113.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.3\n  radius {0 116.11 129.97}\n  size_mult {{(parent.flareCoreSize)+3.8}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle {{parent.lensPieceRingsRotation+50}}\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle {{parent.lensPieceRingsRotation+180}}\n  asym_angle_add true\n  name Flare113\n  label Source\n  xpos -421\n  ypos 8313\n  disable {{\"parent.lensPieceRingsPicker == 0 ? 0 : 1\"}}\n }\n Blur {\n  size 18.5\n  name Blur98\n  xpos -421\n  ypos 8351\n  disable {{parent.Flare113.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge141\n  xpos -421\n  ypos 8400\n  disable {{parent.Flare113.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge142\n  xpos -421\n  ypos 8452\n  disable {{parent.Flare113.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge192\n  xpos -421\n  ypos 8583\n  disable {{parent.Flare113.disable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge194\n  xpos -421\n  ypos 8635\n  disable {{parent.Flare113.disable}}\n }\n Grade {\n  inputs 1+1\n  white 0.42\n  multiply 4\n  maskChannelMask rgba.red\n  name Grade57\n  xpos -421\n  ypos 8697\n  disable {{parent.Flare113.disable}}\n }\n Grade {\n  inputs 1+1\n  white 0.96\n  multiply 3.2\n  gamma 0.92\n  maskChannelMask rgba.red\n  name Grade58\n  xpos -421\n  ypos 8723\n  disable {{parent.Flare113.disable}}\n }\n Glow {\n  inputs 1+1\n  tolerance 0.06\n  brightness 5\n  W rgba.red\n  size 43.5\n  maskChannelMask none\n  name Glow25\n  xpos -421\n  ypos 8749\n  disable {{parent.Flare113.disable}}\n }\n Grade {\n  inputs 1+1\n  white 6\n  multiply 4\n  gamma 1.1\n  maskChannelMask rgba.red\n  name Grade59\n  xpos -421\n  ypos 8775\n  disable {{parent.Flare113.disable}}\n }\n Switch {\n  inputs 4\n  which {{parent.lensPieceRingsPicker}}\n  name rings\n  xpos -36\n  ypos 8775\n }\n Dot {\n  name Dot65\n  xpos -2\n  ypos 8869\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop9\n  xpos 129\n  ypos 8865\n }\n Clamp {\n  name Clamp6\n  xpos 258\n  ypos 8859\n }\n Grade {\n  multiply {{parent.lensPieceRingsTint.r} {parent.lensPieceRingsTint.g} {parent.lensPieceRingsTint.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade3\n  xpos 406\n  ypos 8865\n }\n Group {\n  name Static_Noise7\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 532\n  ypos 8866\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset Na1098c00 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $Na1098c00\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset Na1007800 [stack 0]\npush $Na1007800\npush $Na1098c00\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot64\n  xpos 657\n  ypos 8869\n }\nset Na1006c00 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation32\n  xpos 623\n  ypos 8918\n }\npush $Na1006c00\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy13\n  xpos 767\n  ypos 8859\n }\n Noise {\n  inputs 0\n  size {{\"parent.flareCoreSize * parent.lensPieceMainSize * 100\"}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise2\n  xpos 688\n  ypos 7707\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x - 210\"} {parent.flarePos.y}}\n  radius {5.32 20.75 23.32}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.32\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 1.2\n  sharpness 0.89\n  corners_angle 14\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare281\n  xpos 188\n  ypos 7387\n }\n Flare {\n  position {{\"parent.flarePos.x - 170\"} {parent.flarePos.y}}\n  radius {18.1 33.53 46.04}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.32\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare278\n  xpos 188\n  ypos 7413\n }\n Flare {\n  position {{\"parent.flarePos.x - 120\"} {parent.flarePos.y}}\n  radius {9.58 25.01 29}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.55\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare279\n  xpos 188\n  ypos 7439\n }\n Flare {\n  position {{\"parent.flarePos.x - -90\"} {parent.flarePos.y}}\n  radius {16.68 32.11 36.1}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.44\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  corners_angle 40\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare280\n  xpos 188\n  ypos 7465\n }\n Flare {\n  position {{\"parent.flarePos.x - 170\"} {parent.flarePos.y}}\n  radius {66.39 81.82 118.48}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 0.94\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.065\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare270\n  xpos 188\n  ypos 7529\n }\n Flare {\n  position {{\"parent.flarePos.x - 50\"} {parent.flarePos.y}}\n  radius {46.5 61.93 98.6}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare273\n  xpos 188\n  ypos 7555\n }\n Flare {\n  position {{\"parent.flarePos.x - 100\"} {parent.flarePos.y}}\n  radius {66.39 110.23 136.95}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.1\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare261\n  xpos 188\n  ypos 7581\n }\n Flare {\n  position {{\"parent.flarePos.x - 120\"} {parent.flarePos.y}}\n  radius {22.36 66.2 88.66}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.1\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.11\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare277\n  xpos 188\n  ypos 7607\n }\n Flare {\n  position {{\"parent.flarePos.x - 100\"} {parent.flarePos.y}}\n  radius {134.57 178.41 237.8}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.03\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.035\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare272\n  xpos 188\n  ypos 7633\n }\n Flare {\n  position {{\"parent.flarePos.x - 270\"} {parent.flarePos.y}}\n  radius {93.38 137.22 236.38}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.29\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.02\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare276\n  xpos 188\n  ypos 7659\n }\nset Na0f8d000 [stack 0]\n Flare {\n  position {{\"parent.flarePos.x + 200\"} {parent.flarePos.y}}\n  radius {5.32 20.75 23.32}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.32\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 1.2\n  sharpness 0.89\n  corners_angle 14\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare282\n  xpos 313\n  ypos 7575\n  disable {{\"parent.lensPieceBigPicker == 6 ? 0 : 1\"}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 190\"} {parent.flarePos.y}}\n  radius {18.1 33.53 46.04}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.32\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare283\n  xpos 313\n  ypos 7601\n  disable {{parent.Flare282.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 110\"} {parent.flarePos.y}}\n  radius {9.58 25.01 29}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.55\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare284\n  xpos 313\n  ypos 7627\n  disable {{parent.Flare282.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 90\"} {parent.flarePos.y}}\n  radius {16.68 32.11 36.1}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.6999999881\n  brightness 0.44\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.5\n  sharpness 0.86\n  corners_angle 40\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare285\n  xpos 313\n  ypos 7653\n  disable {{parent.Flare282.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 150\"} {parent.flarePos.y}}\n  radius {91.96 107.39 135.53}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.56\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare260\n  xpos 430\n  ypos 7552\n  disable {{\"parent.lensPieceBigPicker == 6 ? 0 : 1\"}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 50\"} {parent.flarePos.y}}\n  radius {59.29 74.72 102.86}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.56\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare274\n  xpos 430\n  ypos 7578\n  disable {{parent.Flare260.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 200\"} {parent.flarePos.y}}\n  radius {91.96 107.39 135.53}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.2\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.69\n  brightness 0.065\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare262\n  xpos 430\n  ypos 7604\n  disable {{parent.Flare260.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 100\"} {parent.flarePos.y}}\n  radius {197.07 212.5 278.99}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 0.98\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.69\n  brightness 0.05\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare271\n  xpos 430\n  ypos 7630\n  disable {{parent.Flare260.disable}}\n }\n Flare {\n  position {{\"parent.flarePos.x + 300\"} {parent.flarePos.y}}\n  radius {187.13 202.56 301.72}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.29\n  ring_color {0.528470993 0.6299999952 0.528470993}\n  inner_color 0.69\n  brightness 0.03\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  mult_seed {{parent.lensPieceBigSeed}}\n  mult_offset 0\n  mult_size {{\"-0.32 + (parent.lensPieceMainSize)\"}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare275\n  xpos 430\n  ypos 7656\n  disable {{parent.Flare260.disable}}\n }\n Blur {\n  size 4\n  name Blur75\n  xpos 540\n  ypos 7650\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.745\n  name Merge223\n  xpos 540\n  ypos 7707\n }\n Dot {\n  name Dot18\n  xpos 574\n  ypos 7791\n }\n Dot {\n  name Dot19\n  xpos 574\n  ypos 7857\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.flareCoreSize * 0.9\"}}\n  radius {42.08 75.93 192.67}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 0.76\n  ring_color {1 0.111784 0}\n  inner_color {1 0.111784 0}\n  outer_falloff 1.9\n  chroma_spread 0.046\n  brightness 0.3\n  flattening 0.7\n  mult_num 2\n  mult_offset 2.4\n  name Flare311\n  label Orange_Glow02\n  xpos -139\n  ypos 7476\n  disable {{parent.Flare300.disable}}\n }\n Blur {\n  size 9.5\n  name Blur137\n  xpos -139\n  ypos 7514\n  disable {{parent.Flare300.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.flareCoreSize * 1.13\"}}\n  radius {58.97 101.23 134.74}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.8\n  ring_color {0.716 0.048 0.009}\n  inner_color 0.003\n  chroma_shift_angle_add true\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -36\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  name Flare300\n  label Half_Concave\n  xpos -261\n  ypos 7434\n  disable {{\"parent.lensPieceBigPicker == 5 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.flareCoreSize * 1.202\"}}\n  radius {132.79 178.61 214.62}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 2.1\n  ring_color {0.716 0.048 0.009}\n  inner_color 0\n  chroma_shift_angle_add true\n  brightness 0.4\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -220\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  name Flare301\n  label Half_Convex\n  xpos -310\n  ypos 7501\n  disable {{parent.Flare300.disable}}\n }\n Flare {\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.flareCoreSize * 1.73\"}}\n  radius {55.03 101.23 137.55}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.8\n  ring_color {0.716 0.048 0.009}\n  inner_color 0.003\n  chroma_shift_angle_add true\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -36\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  name Flare302\n  label Half_Concave\n  xpos -239\n  ypos 7563\n  disable {{parent.Flare300.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.12\n  name Merge237\n  xpos -139\n  ypos 7621\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation21\n  xpos -139\n  ypos 7647\n }\nset Na0e43c00 [stack 0]\n Transform {\n  rotate 2\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform90\n  xpos -14\n  ypos 7647\n  disable {{parent.Flare300.disable}}\n }\n Blur {\n  size {200 2}\n  name Blur136\n  xpos -14\n  ypos 7673\n  disable {{parent.Flare300.disable}}\n }\npush $Na0e43c00\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge238\n  xpos -139\n  ypos 7679\n }\nset Na0e43000 [stack 0]\n Blur {\n  size 300\n  name Blur139\n  xpos -254\n  ypos 7673\n }\n Glow {\n  brightness 0.4\n  size 31\n  maskChannelMask none\n  name Glow33\n  xpos -254\n  ypos 7711\n  disable {{parent.Flare300.disable}}\n }\n Dot {\n  name Dot20\n  xpos -220\n  ypos 7763\n }\npush $Na0e43000\n Glow {\n  brightness 0.4\n  size 31\n  maskChannelMask none\n  name Glow32\n  xpos -139\n  ypos 7717\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge239\n  xpos -139\n  ypos 7759\n }\n Dot {\n  name Dot51\n  xpos -105\n  ypos 7834\n }\npush $Na0f8d000\n Blur {\n  size 4\n  name Blur155\n  xpos 188\n  ypos 7783\n }\n Grade {\n  whitepoint 0.42\n  gamma 0.72\n  maskChannelMask none\n  name Grade68\n  xpos -1004\n  ypos 7789\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.Flare55.offset + (- 0.6 )\"}}\n  radius {21.87 28.75 37.09}\n  size_mult 15\n  anamorph 1.14\n  ring_color {0.09384614974 0.06153845787 0.1599999964}\n  inner_color {0.08718749881 0.08718749881 0.1550000012}\n  outer_falloff 4.2\n  inner_falloff 0.9\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  sharpness 0.255\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare178\n  label Pieces\n  xpos -1143\n  ypos 7448\n  disable {{parent.Flare55.disable}}\n }\n Saturation {\n  saturation 3\n  maskChannelMask none\n  name Saturation22\n  xpos -1143\n  ypos 7486\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 60\n  name Blur124\n  xpos -1143\n  ypos 7512\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 0.35\"}}\n  radius {0 21.87 37.09}\n  size_mult 10\n  anamorph 1.56\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color {0.1550000012 0.08718749881 0.1482187212}\n  outer_falloff 0.105\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.7\n  sharpness 1\n  corners_angle 50\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare54\n  label Pieces\n  xpos -892\n  ypos 7445\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.6\"}}\n  radius {0 37.09 37.09}\n  size_mult 9.5\n  anamorph 1.22\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color {0.09000000358 0.05062500387 0.08606249094}\n  outer_falloff 0.105\n  inner_falloff 2.3\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.5\n  sharpness 1\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare55\n  label Pieces\n  xpos -1033\n  ypos 7387\n  disable {{\"parent.lensPieceBigPicker == 4 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  mix 0.895\n  name Merge130\n  xpos -1033\n  ypos 7451\n  disable {{parent.Flare55.disable}}\n }\n Saturation {\n  saturation 3.6\n  maskChannelMask none\n  name Saturation28\n  xpos -1033\n  ypos 7477\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 68\n  name Blur125\n  xpos -1033\n  ypos 7521\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.5\"}}\n  radius {0 21.87 37.09}\n  size_mult 1.8\n  anamorph 3.3\n  ring_color {0.5799999833 0.2667999864 0.4547201097}\n  inner_color 0\n  outer_falloff 0.62\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.9\n  sharpness 0.8\n  corners_angle 8\n  asym_multiplier 0\n  asym_falloff 4.4\n  asym_angle 56\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare326\n  label Pieces\n  xpos -531\n  ypos 7569\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 0.1\n  name Blur152\n  xpos -531\n  ypos 7607\n  disable {{parent.Flare55.disable}}\n }\n Grade {\n  multiply 2\n  maskChannelMask none\n  name Grade65\n  xpos -531\n  ypos 7645\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.7\"}}\n  radius {0 21.87 37.09}\n  size_mult 5\n  anamorph 1.22\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color 0\n  outer_falloff 0.105\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.6\n  sharpness 1\n  asym_multiplier 0\n  asym_falloff 4.9\n  asym_angle 44\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare327\n  label Pieces\n  xpos -531\n  ypos 7526\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.07\"}}\n  radius {0 21.87 37.09}\n  size_mult 4.2\n  anamorph 0.95\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color 0\n  outer_falloff 0.105\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.6\n  sharpness 1\n  asym_multiplier 0\n  asym_falloff 4.3\n  asym_angle 46\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare328\n  label Pieces\n  xpos -641\n  ypos 7494\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge274\n  xpos -641\n  ypos 7532\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge275\n  xpos -641\n  ypos 7613\n  disable {{parent.Flare55.disable}}\n }\n Grade {\n  white 4\n  multiply 1.85\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade64\n  xpos -641\n  ypos 7639\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 12\n  name Blur153\n  xpos -641\n  ypos 7665\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.5\"}}\n  radius {0 21.87 37.09}\n  size_mult 1.8\n  anamorph 3.3\n  ring_color {0.5799999833 0.2667999864 0.4547201097}\n  inner_color {0.8700000048 0.4893749952 0.8319373727}\n  outer_falloff 0.62\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.9\n  sharpness 0.8\n  corners_angle 8\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare56\n  label Pieces\n  xpos -780\n  ypos 7577\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 0.1\n  name Blur128\n  xpos -780\n  ypos 7615\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.7\"}}\n  radius {0 21.87 37.09}\n  size_mult 5\n  anamorph 1.22\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color {0.1049999967 0.05906249955 0.1004062295}\n  outer_falloff 0.105\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.6\n  sharpness 1\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare59\n  label Pieces\n  xpos -780\n  ypos 7534\n  disable {{parent.Flare55.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1.07\"}}\n  radius {0 21.87 37.09}\n  size_mult 4.2\n  anamorph 0.95\n  ring_color {0.2099999934 0.05669999495 0.1486800611}\n  inner_color {0.125 0.0703125 0.1195312291}\n  outer_falloff 0.105\n  inner_falloff 2.4\n  chroma_spread 0.005\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 0.6\n  sharpness 1\n  asym_falloff 0.72\n  asym_angle 116\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare60\n  label Pieces\n  xpos -890\n  ypos 7502\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge131\n  xpos -890\n  ypos 7540\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge132\n  xpos -890\n  ypos 7621\n  disable {{parent.Flare55.disable}}\n }\n Grade {\n  white 0.4\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade117\n  xpos -890\n  ypos 7647\n  disable {{parent.Flare55.disable}}\n }\n Blur {\n  size 12\n  name Blur126\n  xpos -890\n  ypos 7673\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  mix 0.3\n  name Merge276\n  xpos -890\n  ypos 7711\n  disable {{parent.Flare55.disable}}\n }\n Grade {\n  multiply 0.68\n  gamma 0.88\n  maskChannelMask none\n  name Grade66\n  xpos -890\n  ypos 7737\n  disable {{parent.Flare55.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  maskChannelMask none\n  mix 0.17\n  name Merge133\n  xpos -1033\n  ypos 7737\n  disable {{parent.Flare55.disable}}\n }\n Merge {\n  inputs 2\n  operation plus\n  mix 0.145\n  name Merge196\n  xpos -1143\n  ypos 7737\n  disable {{parent.Flare55.disable}}\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation29\n  xpos -1143\n  ypos 7763\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge278\n  xpos -1143\n  ypos 7789\n }\n Noise {\n  inputs 0\n  size {{\"parent.flareCoreSize * 100\"}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise19\n  xpos -1368\n  ypos 7515\n  disable {{parent.Flare173.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 1\"}}\n  radius {317.32 324.2 500}\n  size_mult {{\"parent.flareCoreSize * 1.06\"}}\n  anamorph 1.44\n  ring_color 0.04\n  inner_color 0.04\n  outer_falloff 0.38\n  inner_falloff 1.15\n  chroma_spread -0.13\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_num 5\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare173\n  label Pieces\n  xpos -1526\n  ypos 7435\n  disable {{\"parent.lensPieceBigPicker == 3 ? 0 : 1\"}}\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.845\n  name Merge134\n  xpos -1526\n  ypos 7515\n  disable {{parent.Flare173.disable}}\n }\n Grade {\n  multiply 3\n  maskChannelMask none\n  name Grade44\n  xpos -1526\n  ypos 7541\n  disable {{parent.Flare173.disable}}\n }\n Glow {\n  size 20\n  maskChannelMask none\n  name Glow19\n  xpos -1526\n  ypos 7567\n  disable {{parent.Flare173.disable}}\n }\n Blur {\n  size 50\n  name Blur110\n  xpos -1526\n  ypos 7593\n  disable {{parent.Flare173.disable}}\n }\n Dot {\n  name Dot62\n  xpos -1492\n  ypos 7747\n }\n Noise {\n  inputs 0\n  size {{\"parent.flareCoreSize * 100 \"}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise23\n  xpos -1681\n  ypos 7506\n  disable {{parent.Flare64.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{parent.lensPieceBigOffset}}\n  radius {317.32 324.2 500}\n  size_mult {{\"parent.flareCoreSize * 1.06\"}}\n  anamorph 1.44\n  ring_color 0.1525\n  inner_color 0.135\n  outer_falloff 0.86\n  inner_falloff 0.9\n  chroma_spread 0.062\n  brightness 0.14\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_num 4\n  mult_offset 8\n  mult_size -0.1\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare64\n  label Pieces\n  xpos -1833\n  ypos 7432\n  disable {{\"parent.lensPieceBigPicker == 2 ? 0 : 1\"}}\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.845\n  name Merge135\n  xpos -1833\n  ypos 7506\n  disable {{parent.Flare64.disable}}\n }\n Grade {\n  multiply 3\n  maskChannelMask none\n  name Grade45\n  xpos -1833\n  ypos 7532\n  disable {{parent.Flare64.disable}}\n }\n Glow {\n  size 20\n  maskChannelMask none\n  name Glow10\n  xpos -1833\n  ypos 7558\n  disable {{parent.Flare64.disable}}\n }\n Blur {\n  size 50\n  name Blur111\n  xpos -1833\n  ypos 7584\n  disable {{parent.Flare64.disable}}\n }\n Dot {\n  name Dot61\n  xpos -1799\n  ypos 7821\n }\n Noise {\n  inputs 0\n  size {{\"parent.flareCoreSize * 100\"}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise24\n  xpos -1978\n  ypos 7442\n  disable {{parent.Flare66.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 0.13\"}}\n  radius {252.02 397.85 500}\n  size_mult {{\"parent.flareCoreSize * 1.36\"}}\n  ring_color 0.65\n  inner_color 0.33\n  corners 27\n  flattening 0.7\n  sharpness 1\n  mult_num 4\n  mult_offset 5.6\n  mult_size 1\n  mult_color 0.95\n  mult_brightness -0.72\n  mult_visibility 0.12\n  mult_rotate 1\n  name Flare65\n  xpos -2265\n  ypos 7547\n  disable {{parent.Flare66.disable}}\n }\n Blur {\n  size 24\n  name Blur59\n  xpos -2265\n  ypos 7573\n  disable {{parent.Flare66.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 0.13\"}}\n  radius {119.33 397.85 500}\n  size_mult {{\"parent.flareCoreSize * 1.36\"}}\n  ring_color 0.75\n  inner_color 0.26\n  brightness 0.105\n  corners 27\n  flattening 0.7\n  sharpness 1\n  mult_num 11\n  mult_offset 3.6\n  mult_size 1\n  mult_color 0.95\n  mult_brightness -0.72\n  mult_visibility 0.12\n  mult_rotate 1\n  name Flare66\n  xpos -2144\n  ypos 7455\n  disable {{\"parent.lensPieceBigPicker == 1 ? 0 : 1\"}}\n }\n Blur {\n  size 24\n  name Blur68\n  xpos -2144\n  ypos 7516\n  disable {{parent.Flare66.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.055\n  name Merge136\n  xpos -2144\n  ypos 7579\n  disable {{parent.Flare66.disable}}\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.725\n  name Merge137\n  xpos -1978\n  ypos 7579\n  disable {{parent.Flare66.disable}}\n }\n Dot {\n  name Dot60\n  xpos -1944\n  ypos 7825\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize)}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise25\n  xpos -2379\n  ypos 7470\n  disable {{parent.Flare172.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 0.13\"}}\n  radius {252.02 397.85 500}\n  size_mult {{\"parent.flareCoreSize * 1.16\"}}\n  inner_color 0.83\n  corners 27\n  flattening 0.7\n  sharpness 1\n  mult_num 4\n  mult_offset 5.6\n  mult_size 1\n  mult_color 0.95\n  mult_brightness -0.72\n  mult_visibility 0.12\n  mult_rotate 1\n  name Flare171\n  xpos -2666\n  ypos 7572\n  disable {{parent.Flare172.disable}}\n }\n Blur {\n  size 24\n  name Blur108\n  xpos -2666\n  ypos 7598\n  disable {{parent.Flare172.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{\"parent.lensPieceBigOffset + 0.13\"}}\n  radius {119.33 265.16 367.31}\n  size_mult {{parent.flareCoreSize}}\n  inner_color 0.7\n  brightness 0.13\n  corners 27\n  flattening 0.7\n  sharpness 1\n  mult_num 8\n  mult_offset 3.6\n  mult_size 1\n  mult_color 0.95\n  mult_brightness -0.72\n  mult_visibility 0.12\n  mult_rotate 1\n  name Flare172\n  xpos -2545\n  ypos 7480\n  disable {{\"parent.lensPieceBigPicker == 0 ? 0 : 1\"}}\n }\n Blur {\n  size 24\n  name Blur109\n  xpos -2545\n  ypos 7506\n  disable {{parent.Flare172.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.055\n  name Merge138\n  xpos -2545\n  ypos 7604\n  disable {{parent.Flare172.disable}}\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.725\n  name Merge139\n  xpos -2379\n  ypos 7604\n  disable {{parent.Flare172.disable}}\n }\n Dot {\n  name Dot59\n  xpos -2345\n  ypos 7879\n }\n Switch {\n  inputs 7\n  which {{parent.lensPieceBigPicker}}\n  name big_pieces\n  xpos -1899\n  ypos 7875\n }\n Dot {\n  name Dot58\n  xpos -1865\n  ypos 7957\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop8\n  xpos 47\n  ypos 7947\n }\n Clamp {\n  name Clamp4\n  xpos 157\n  ypos 7941\n }\n Grade {\n  multiply {{parent.lensPieceBigTint.r} {parent.lensPieceBigTint.g} {parent.lensPieceBigTint.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade2\n  xpos 281\n  ypos 7947\n }\n Blur {\n  size {{parent.lensPieceBigBlur}}\n  name Blur69\n  xpos 410\n  ypos 7940\n }\n Group {\n  name Static_Noise4\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 532\n  ypos 7954\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N98277000 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N98277000\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N98276000 [stack 0]\npush $N98276000\npush $N98277000\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot52\n  xpos 657\n  ypos 7957\n }\nset N98275400 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation30\n  xpos 624\n  ypos 8003\n }\npush $N98275400\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy11\n  xpos 767\n  ypos 7947\n }\n Flare {\n  inputs 0\n  position {{parent.Flare296.position.x} {parent.Flare296.position.y}}\n  offset 0.4\n  radius {4.36 12.69 18.11}\n  size_mult {{parent.Flare296.size_mult}}\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.29\n  brightness 0.47\n  vis_mask -rgba.alpha\n  corners 0\n  flattening 1\n  sharpness 0.86\n  asym_multiplier 0\n  asym_falloff 2.45\n  asym_angle 6\n  mult_num {{parent.Flare296.mult_num}}\n  mult_seed {{parent.Flare296.mult_seed}}\n  mult_offset {{parent.Flare296.mult_offset}}\n  mult_size {{parent.Flare296.mult_size}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare295\n  xpos 105\n  ypos 6233\n  disable {{parent.Flare296.disable}}\n }\n Flare {\n  position {{parent.Flare296.position.x} {parent.Flare296.position.y}}\n  offset 0.3\n  radius {2.91 11.24 16.66}\n  size_mult {{parent.Flare296.size_mult}}\n  ring_color {0.338333 0.34 0.37}\n  chroma_spread 0.07\n  brightness 0.5\n  vis_mask -rgba.alpha\n  corners 0\n  flattening 1\n  sharpness 0.86\n  asym_multiplier 0\n  asym_falloff 1.25\n  mult_num {{\"parent.Flare296.mult_num + 5\"}}\n  mult_seed {{parent.Flare296.mult_seed}}\n  mult_offset {{\"parent.Flare296.mult_offset - 1.65\"}}\n  mult_size {{\"parent.Flare296.mult_size + 0.2\"}}\n  mult_color -1.95\n  mult_brightness -1\n  mult_visibility -0.34\n  mult_flattening -0.4\n  mult_rotate 0.5\n  name Flare298\n  xpos 105\n  ypos 6276\n  disable {{parent.Flare296.disable}}\n }\n Blur {\n  size 11\n  name Blur138\n  xpos 105\n  ypos 6313\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.4\n  radius {4.36 12.69 18.11}\n  size_mult {{\"parent.lensPieceMainSize * parent.flareCoreSize\"}}\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.29\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 0\n  flattening 1\n  sharpness 0.86\n  mult_num {{\"5 + parent.lensPieceMainAdditional\"}}\n  mult_seed {{parent.lensPieceMainSeed}}\n  mult_offset {{3.05+parent.lensPieceMainOffset}}\n  mult_size {{-0.52+parent.lensPieceMainSizeVariation}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare296\n  xpos 3\n  ypos 6229\n  disable {{\"parent.lensPieceMainType == 9 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.Flare296.position.x} {parent.Flare296.position.y}}\n  offset 0.3\n  radius {2.91 11.24 16.66}\n  size_mult {{parent.Flare296.size_mult}}\n  ring_color {0.338333 0.34 0.37}\n  chroma_spread 0.07\n  brightness 0.13\n  vis_mask -rgba.alpha\n  corners 0\n  flattening 1\n  sharpness 0.86\n  mult_num {{\"parent.Flare296.mult_num + 5\"}}\n  mult_seed {{parent.Flare296.mult_seed}}\n  mult_offset {{\"parent.Flare296.mult_offset - 1.65\"}}\n  mult_size {{\"parent.Flare296.mult_size + 0.2\"}}\n  mult_color -1.95\n  mult_brightness -1\n  mult_visibility -0.34\n  mult_flattening -0.4\n  mult_rotate 0.5\n  name Flare297\n  xpos 3\n  ypos 6272\n  disable {{parent.Flare296.disable}}\n }\n Saturation {\n  saturation 0.6\n  name Saturation23\n  xpos 3\n  ypos 6298\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge263\n  xpos 3\n  ypos 6336\n }\n Blur {\n  size 4\n  name Blur135\n  xpos 3\n  ypos 6388\n }\n Grade {\n  white {1 1 2 1}\n  multiply 4\n  name Grade54\n  xpos 3\n  ypos 6426\n }\n Noise {\n  inputs 0\n  size {{100*parent.Flare296.size_mult}}\n  lacunarity 1.84\n  gain 0.245\n  gamma 0.73\n  center {320 240}\n  name Noise20\n  xpos -107\n  ypos 6616\n  disable {{parent.Flare296.disable}}\n }\n Merge {\n  inputs 2\n  operation in\n  name Merge259\n  xpos 3\n  ypos 6616\n }\n Dot {\n  name Dot112\n  xpos 37\n  ypos 6791\n }\n Flare {\n  inputs 0\n  position {{parent.Flare266.position.x} {parent.Flare266.position.y}}\n  offset {{parent.Flare266.offset}}\n  size_mult {{parent.Flare266.size_mult}}\n  inner_color 0.23\n  asym_multiplier 0.17\n  asym_angle 180\n  mult_num {{\"3 + parent.Flare266.mult_num\"}}\n  mult_seed {{parent.Flare266.mult_seed}}\n  mult_offset -7\n  mult_size 1\n  mult_color 1.8\n  mult_brightness -1\n  mult_visibility -0.74\n  mult_flattening 1\n  mult_rotate 1\n  name Flare265\n  xpos -338\n  ypos 6267\n  disable {{parent.Flare266.disable}}\n }\n Blur {\n  size 6.2\n  name Blur119\n  xpos -338\n  ypos 6309\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{parent.lensPieceMainOffset}}\n  radius {71.28 91.28 111.28}\n  size_mult {{parent.lensPieceMainSize}}\n  inner_color 0.35\n  asym_multiplier 0.315\n  asym_falloff 2.35\n  asym_angle 28\n  mult_num {{\"parent.lensPieceMainAdditional + 3\"}}\n  mult_seed {{parent.lensPieceMainSeed}}\n  mult_offset 7.9\n  mult_size 0.9\n  mult_color 1.8\n  mult_brightness -0.66\n  mult_visibility -0.74\n  mult_flattening 1\n  mult_rotate 0.7\n  name Flare266\n  xpos -470\n  ypos 6175\n  disable {{\"parent.lensPieceMainType == 8 ? 0 : 1\"}}\n }\n Blur {\n  size 6.2\n  name Blur120\n  xpos -470\n  ypos 6217\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.06\n  name Merge247\n  xpos -470\n  ypos 6315\n }\n Dot {\n  name Dot117\n  xpos -436\n  ypos 6836\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise18\n  xpos -747\n  ypos 6406\n }\n Flare {\n  inputs 0\n  position {{parent.Flare188.position.x} {parent.Flare188.position.y}}\n  offset {{parent.lensPieceMainOffset}}\n  radius {0 50.86 125.81}\n  size_mult {{\"parent.Flare188.size_mult * 1.1\"}}\n  anamorph {{parent.Flare179.anamorph}}\n  ring_color 0.7\n  inner_color 0.01\n  outer_falloff 1.35\n  inner_falloff 2.5\n  chroma_spread 0.1\n  chroma_shift 0.4\n  vis_out 1.2\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  corners_angle -16\n  asym_multiplier 0\n  asym_falloff 2.7\n  asym_angle -112\n  mult_num {{parent.Flare188.mult_num}}\n  mult_seed {{parent.Flare188.mult_seed}}\n  mult_offset {{\"parent.Flare188.mult_offset + 0.3\"}}\n  mult_size {{\"parent.Flare188.mult_size * 0.7\"}}\n  name Flare103\n  label Source\n  xpos -789\n  ypos 6262\n  disable {{parent.Flare188.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare188.position.x} {parent.Flare188.position.y}}\n  offset {{parent.Flare188.offset}}\n  radius {28.41 80.69 101.66}\n  size_mult {{parent.Flare188.size_mult}}\n  anamorph {{\"parent.anomalyAnamorph * 1.155\"}}\n  ring_color 0.7\n  inner_color 0.01\n  outer_falloff 1.35\n  inner_falloff 2.5\n  chroma_spread 0.1\n  chroma_shift 0.4\n  brightness 0.31\n  vis_out 1.2\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  corners_angle -16\n  asym_multiplier 0\n  asym_falloff 2.7\n  asym_angle 38\n  mult_num {{parent.Flare188.mult_num}}\n  mult_seed {{parent.Flare188.mult_seed}}\n  mult_offset {{\"parent.Flare188.mult_offset * 1.06\"}}\n  mult_size {{\"parent.Flare188.mult_size * 0.7\"}}\n  name Flare179\n  label Source\n  xpos -792\n  ypos 6204\n  disable {{parent.Flare188.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x x11 322} {parent.flarePos.y x11 650}}\n  offset {{parent.lensPieceMainOffset}}\n  radius {71.02 90.68 127.43}\n  size_mult {{\"parent.flareCoreSize * parent.lensPieceMainSize\"}}\n  anamorph 1.55\n  ring_color 0.29\n  inner_color {0.2225581408 0.276279062 0.3300000131}\n  inner_falloff 0.7\n  chroma_spread 0.065\n  chroma_shift 14.6\n  chroma_shift_angle 52\n  brightness 0.18\n  vis_mask -rgba.alpha\n  asym_angle -28\n  mult_num {{\"2 + parent.lensPieceMainAdditional\"}}\n  mult_seed {{parent.lensPieceMainSeed}}\n  mult_offset {{5.9+parent.lensPieceMainOffset}}\n  mult_size {{1.32+parent.lensPieceMainSize}}\n  mult_color -0.1\n  mult_brightness -0.78\n  mult_visibility 0.06\n  mult_flattening 0.06\n  mult_rotate 0.18\n  name Flare188\n  label Bits\n  xpos -886\n  ypos 6143\n  disable {{\"parent.lensPieceMainType == 7 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge158\n  xpos -886\n  ypos 6210\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  Achannels {rgba.red rgba.green rgba.blue rgba.red}\n  maskChannelMask none\n  mix 0.57\n  name Merge159\n  xpos -886\n  ypos 6268\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.845\n  name Merge157\n  xpos -886\n  ypos 6406\n }\n Grade {\n  multiply 3\n  maskChannelMask none\n  name Grade38\n  xpos -886\n  ypos 6432\n }\n Glow {\n  size 20\n  maskChannelMask none\n  name Glow9\n  xpos -886\n  ypos 6469\n }\n Dot {\n  name Dot116\n  xpos -852\n  ypos 6802\n }\n Radial {\n  inputs 0\n  maskChannelMask none\n  area {0 0 {root.width} {root.height}}\n  name Radial7\n  xpos -1220\n  ypos 6470\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{parent.lensPieceMainOffset}}\n  radius {16.37 34.91 72.4}\n  size_mult {{\"parent.lensPieceMainSize * parent.flareCoreSize\"}}\n  anamorph 1.8\n  ring_color {0.692071 0.0696023 0.00848491}\n  inner_color {0.5 0.0967598 0.0334461}\n  chroma_shift_angle_add true\n  brightness 0.19\n  flattening 0.8\n  sharpness 0.58\n  mult_num {{\"4 + parent.lensPieceMainAdditional\"}}\n  mult_seed {{parent.lensPieceMainSeed}}\n  mult_offset {{2.1+parent.lensPieceMainOffset}}\n  mult_size {{.32+parent.lensPieceMainSize}}\n  mult_color -0.3\n  mult_brightness -0.82\n  name Flare180\n  label Big_Red\n  xpos -1526\n  ypos 6138\n  disable {{\"parent.lensPieceMainType == 6 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 0.92\"}}\n  radius {17.72 31.88 48.99}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 1.8\n  ring_color {1 0.5505269766 0.07443982363}\n  inner_color {0.7400000095 0.590524435 0.3758593202}\n  brightness 0.035\n  flattening 1\n  sharpness 0.85\n  mult_num {{\"parent.Flare180.mult_num + 6\"}}\n  mult_seed {{parent.Flare180.mult_seed}}\n  mult_offset {{\"parent.Flare180.mult_offset * 1.12\"}}\n  mult_size {{parent.Flare180.mult_size}}\n  mult_color -0.3\n  mult_brightness -0.38\n  mult_flattening -0.24\n  name Flare181\n  label Multi_Orange\n  xpos -1526\n  ypos 6176\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 1.13\"}}\n  radius {89.49 101.23 133.29}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 1.8\n  ring_color {0.716 0.048 0.009}\n  inner_color 0.003\n  chroma_shift_angle_add true\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -36\n  mult_seed {{parent.Flare180.mult_seed}}\n  name Flare182\n  label Half_Concave\n  xpos -1526\n  ypos 6214\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 1.2\"}}\n  radius {164.77 178.61 214.62}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 2.1\n  ring_color {0.716 0.048 0.009}\n  inner_color 0\n  chroma_shift_angle_add true\n  brightness 0.4\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -220\n  mult_seed {{parent.Flare180.mult_seed}}\n  name Flare183\n  label Half_Convex\n  xpos -1526\n  ypos 6252\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 0.97\"}}\n  radius {71.02 101.23 137.55}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 2.8\n  ring_color {0.716 0.048 0.009}\n  inner_color 0.003\n  chroma_shift_angle_add true\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -36\n  mult_seed {{parent.Flare180.mult_seed}}\n  name Flare101\n  label Half_Concave\n  xpos -1526\n  ypos 6290\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 0.92\"}}\n  radius {113.63 178.61 214.62}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 2.8\n  ring_color {0.716 0.048 0.009}\n  inner_color 0\n  chroma_shift_angle_add true\n  brightness 0.4\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -220\n  mult_seed {{parent.Flare180.mult_seed}}\n  name Flare102\n  label Half_Convex\n  xpos -1526\n  ypos 6328\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{parent.flareCoreSize}}\n  radius {65.34 75.93 114.18}\n  size_mult {{parent.Flare180.size_mult}}\n  anamorph 2.66\n  ring_color {1 0.111784 0}\n  inner_color {1 0.111784 0}\n  outer_falloff 1.9\n  chroma_spread 0.046\n  brightness 0.3\n  flattening 0.7\n  mult_num 2\n  name Flare184\n  label Orange_Glow02\n  xpos -1404\n  ypos 6166\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 1.15\"}}\n  radius {0 72.31 213.3}\n  size_mult {{\"parent.Flare180.size_mult * 0.9\"}}\n  anamorph 1.7\n  ring_color {1.54601 0.0067025 0}\n  inner_color {3.17968 0.0106466 0}\n  outer_falloff 2\n  brightness 0.4\n  name Flare185\n  label Little_Red_01\n  xpos -1404\n  ypos 6204\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 1.156\"}}\n  radius {0 72.31 166.65}\n  size_mult {{\"parent.Flare180.size_mult * 0.85\"}}\n  anamorph 2\n  ring_color {1 0.00519486 0}\n  inner_color {1.72586 0.00716965 0}\n  outer_falloff 2\n  brightness 0.6\n  flattening 0.02\n  asym_multiplier 0.125\n  asym_falloff 1.35\n  asym_angle -200\n  name Flare186\n  label Little_Red_02\n  xpos -1404\n  ypos 6242\n  disable {{parent.Flare180.disable}}\n }\n Flare {\n  position {{parent.Flare180.position.x} {parent.Flare180.position.y}}\n  offset {{\"parent.flareCoreSize * 1.5\"}}\n  radius {0 75.15 198.64}\n  size_mult {{\"parent.Flare180.size_mult * 0.9\"}}\n  anamorph 2\n  ring_color {1.69674 0.00709478 0}\n  inner_color {3.11749 0.0105057 0}\n  outer_falloff 2\n  brightness 0.6\n  flattening 0.9\n  name Flare187\n  label Little_Red_03\n  xpos -1404\n  ypos 6280\n  disable {{parent.Flare180.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge121\n  xpos -1404\n  ypos 6334\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation20\n  xpos -1404\n  ypos 6360\n }\nset N98094c00 [stack 0]\n Transform {\n  rotate 2\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Transform56\n  xpos -1279\n  ypos 6360\n }\n Blur {\n  size {300 2}\n  name Blur30\n  xpos -1279\n  ypos 6386\n }\npush $N98094c00\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge110\n  xpos -1404\n  ypos 6404\n }\n Glow {\n  brightness 0.4\n  size 31\n  maskChannelMask none\n  name Glow4\n  xpos -1404\n  ypos 6430\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge156\n  xpos -1404\n  ypos 6470\n }\n Dot {\n  name Dot115\n  xpos -1370\n  ypos 6837\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize+(parent.lensPieceMainSize))}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise16\n  xpos -1685\n  ypos 6681\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  radius {15.62 22.5 30.84}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  anamorph 1.35072\n  ring_color 0.1525\n  inner_color 0.135\n  outer_falloff 0.86\n  inner_falloff 0.9\n  chroma_spread 0.038\n  brightness 0.034\n  vis_mask -rgba.alpha\n  flattening 0.7\n  mult_num {{20+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{3.9+(parent.lensPieceMainOffset)}}\n  mult_size {{.82+(parent.lensPieceMainSizeVariation)}}\n  mult_color -0.85\n  mult_brightness -0.18\n  mult_visibility 0.18\n  mult_rotate 0.08\n  name Flare57\n  label Bits\n  xpos -1824\n  ypos 6508\n  disable {{\"parent.lensPieceMainType == 5 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.Flare57.position.x} {parent.Flare57.position.y}}\n  radius {21.87 28.75 47.03}\n  size_mult {{\"parent.Flare57.size_mult * 1.02\"}}\n  anamorph 1.44\n  ring_color 0.1525\n  inner_color 0.135\n  outer_falloff 0.86\n  inner_falloff 0.9\n  chroma_spread 0.062\n  brightness 0.016\n  vis_mask -rgba.alpha\n  flattening 0.7\n  mult_num {{\"parent.Flare57.mult_num - 15\"}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{\"parent.Flare57.mult_offset + 4.1\"}}\n  mult_size {{\"parent.Flare57.mult_size * 0.9\"}}\n  mult_color 0.6\n  mult_brightness -0.72\n  mult_visibility -0.18\n  name Flare58\n  label Pieces\n  xpos -1824\n  ypos 6557\n  disable {{parent.Flare57.disable}}\n }\n Grade {\n  multiply 8\n  name Grade36\n  xpos -1824\n  ypos 6595\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.845\n  name Merge76\n  xpos -1824\n  ypos 6681\n }\n Grade {\n  multiply 3\n  maskChannelMask none\n  name Grade37\n  xpos -1824\n  ypos 6707\n }\n Glow {\n  size 20\n  maskChannelMask none\n  name Glow8\n  xpos -1824\n  ypos 6733\n }\n Dot {\n  name Dot114\n  xpos -1790\n  ypos 6842\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x i} {parent.flarePos.y i}}\n  offset {{parent.flareCoreSize i}}\n  radius {33.35 53.35 73.35}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  ring_color {0.19 0.325 0.1}\n  inner_color {0.19 0.325 0.1}\n  chroma_spread 0.028\n  brightness 0.06\n  vis_mask -rgba.alpha\n  corners 3\n  flattening 0.9\n  sharpness 0.56\n  mult_num {{5+(parent.lensPieceMainAdditional) i}}\n  mult_seed {{(parent.lensPieceMainSeed) i}}\n  mult_offset {{++(parent.lensPieceMainOffset) i}}\n  mult_size {{1+(parent.lensPieceMainSizeVariation) i}}\n  mult_color 0.1\n  mult_brightness -0.66\n  mult_flattening -1\n  name Flare68\n  xpos -1962\n  ypos 6209\n  disable {{\"parent.lensPieceMainType == 4 ? 0 : 1\" i}}\n }\n Flare {\n  position {{parent.Flare68.position.x} {parent.Flare68.position.y}}\n  offset {{\"parent.Flare68.offset - 1\"}}\n  radius {0 9.8 28.34}\n  size_mult {{parent.Flare68.size_mult}}\n  ring_color {0.19 0.325 0.1}\n  inner_color {0.19 0.325 0.1}\n  chroma_spread 0.068\n  brightness 0.085\n  vis_mask -rgba.alpha\n  corners 3\n  flattening 0.9\n  mult_num {{15+(parent.lensPieceMainAdditional)}}\n  mult_seed {{parent.Flare68.mult_seed}}\n  mult_offset {{4+(parent.lensPieceMainOffset)}}\n  mult_size {{1+(parent.lensPieceMainSizeVariation)}}\n  mult_color 0.5\n  mult_brightness -0.64\n  mult_visibility -0.84\n  mult_flattening -1\n  name Flare70\n  xpos -1962\n  ypos 6235\n  disable {{parent.Flare68.disable}}\n }\n Flare {\n  position {{parent.Flare68.position.x} {parent.Flare68.position.y}}\n  offset {{\"parent.Flare68.offset - 1\"}}\n  radius {0 5.43 9.39}\n  size_mult {{parent.Flare68.size_mult}}\n  ring_color {0.19 0.325 0.1}\n  inner_color {0.19 0.325 0.1}\n  chroma_spread 0.036\n  brightness 0.048\n  vis_mask -rgba.alpha\n  corners 3\n  flattening 0.9\n  mult_num {{15+(parent.lensPieceMainAdditional)}}\n  mult_seed {{parent.Flare68.mult_seed}}\n  mult_offset {{4.3+(parent.lensPieceMainOffset)}}\n  mult_size {{1+(parent.lensPieceMainSizeVariation)}}\n  mult_color 0.45\n  mult_brightness -0.78\n  mult_visibility -0.84\n  mult_flattening -1\n  name Flare71\n  xpos -1962\n  ypos 6261\n  disable {{parent.Flare68.disable}}\n }\n Grade {\n  multiply 2.5\n  maskChannelMask none\n  name Grade35\n  xpos -1962\n  ypos 6287\n }\n Glow {\n  brightness 2.04\n  size 31\n  maskChannelMask none\n  name Glow7\n  xpos -1962\n  ypos 6313\n }\n Dot {\n  name Dot113\n  xpos -1928\n  ypos 6866\n }\n Flare {\n  inputs 0\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.55\"}}\n  radius {45.45 54.05 55.75}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.717144 0.831651 0.231489}\n  inner_color {0.290861 0.320133 0.150273}\n  brightness 0.32\n  flattening 0.5\n  asym_multiplier 0\n  asym_falloff 0.62\n  asym_angle -88\n  name Flare21\n  label Little_Yellow_01\n  xpos -2265\n  ypos 6183\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.55\"}}\n  radius {42.62 42.62 42.62}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.717144 0.831651 0.231489}\n  inner_color {0.290861 0.320133 0.150273}\n  brightness 0.32\n  flattening 0.5\n  asym_multiplier 0\n  asym_falloff 0.62\n  asym_angle -88\n  name Flare22\n  label Little_Yellow_02\n  xpos -2265\n  ypos 6221\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.58\"}}\n  radius {21.31 29.59 32.78}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.717144 0.831651 0.231489}\n  inner_color {0.290861 0.320133 0.150273}\n  brightness 0.2\n  flattening 0.5\n  asym_multiplier 0\n  asym_falloff 0.62\n  asym_angle -88\n  name Flare28\n  label Little_Yellow_03\n  xpos -2265\n  ypos 6259\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.58\"}}\n  radius {11.36 15.16 24.44}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.717144 0.831651 0.231489}\n  inner_color {0.290861 0.320133 0.150273}\n  brightness 0.11\n  flattening 0.3\n  asym_multiplier 0.135\n  asym_falloff 0.44\n  asym_angle -102\n  name Flare29\n  label Little_Yellow_04\n  xpos -2265\n  ypos 6297\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.56\"}}\n  radius {18.82 34.78 39.89}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.717144 0.831651 0.231489}\n  inner_color {0.290861 0.320133 0.150273}\n  chroma_spread 0.068\n  brightness 0.06\n  flattening 0.1\n  asym_multiplier 0.135\n  asym_falloff 0.44\n  asym_angle -102\n  name Flare30\n  label Little_Yellow_05\n  xpos -2265\n  ypos 6335\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{parent.flareCoreSize}}\n  radius {16.37 34.91 72.4}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  ring_color {0.692071 0.0696023 0.00848491}\n  inner_color {0.5 0.0967598 0.0334461}\n  chroma_shift_angle_add true\n  brightness 0.19\n  corners 6\n  flattening 0.3\n  sharpness 0.58\n  mult_num {{6+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{2.1+(parent.lensPieceMainOffset)}}\n  mult_size {{.32+(parent.lensPieceMainSizeVariation)}}\n  mult_color -0.3\n  mult_brightness -0.82\n  mult_rotate -0.65\n  name Flare31\n  label Big_Red\n  xpos -2370\n  ypos 6182\n  disable {{\"parent.lensPieceMainType == 3 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset - 0.8\"}}\n  radius {17.72 31.88 48.99}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {1 0.550527 0.0744398}\n  inner_color {0.5 0.399003 0.253959}\n  brightness 0.02\n  corners 6\n  flattening 0.9\n  sharpness 0.95\n  mult_num {{8+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{3.3+(parent.lensPieceMainOffset)}}\n  mult_size {{.34+(parent.lensPieceMainSizeVariation)}}\n  mult_color -0.3\n  mult_brightness -0.38\n  mult_flattening -0.24\n  name Flare32\n  label Multi_Orange\n  xpos -2370\n  ypos 6220\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.13\"}}\n  radius {0 11.74 19.65}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.716 0.048 0.009}\n  inner_color 0.003\n  chroma_shift_angle_add true\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -36\n  name Flare33\n  label Half_Concave\n  xpos -2370\n  ypos 6261\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.202\"}}\n  radius {0 13.84 20.02}\n  size_mult {{parent.Flare31.size_mult}}\n  ring_color {0.716 0.048 0.009}\n  inner_color 0\n  chroma_shift_angle_add true\n  brightness 0.4\n  asym_multiplier 0\n  asym_falloff 3.3\n  asym_angle -220\n  name Flare34\n  label Half_Convex\n  xpos -2370\n  ypos 6299\n  disable {{parent.Flare31.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix 0.4\n  name Merge73\n  xpos -2370\n  ypos 6381\n }\n Flare {\n  inputs 0\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 0.9\"}}\n  radius {0 10.59 31.79}\n  size_mult {{parent.Flare31.size_mult}}\n  anamorph 1.06\n  ring_color {1 0.111784 0}\n  inner_color {1 0.111784 0}\n  outer_falloff 1.9\n  chroma_spread 0.046\n  brightness 0.3\n  mult_num 2\n  name Flare35\n  label Orange_Glow02\n  xpos -2163\n  ypos 6218\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 1.5\"}}\n  radius {0 72.31 213.3}\n  size_mult {{-((parent.flareCoreSize))*(parent.lensPieceMainSize)}}\n  ring_color {1.54601 0.0067025 0}\n  inner_color {3.17968 0.0106466 0}\n  outer_falloff 2\n  brightness 0.4\n  name Flare37\n  label Little_Red_01\n  xpos -2163\n  ypos 6256\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 1.565\"}}\n  radius {0 72.31 166.65}\n  size_mult {{-((parent.flareCoreSize))*(parent.lensPieceMainSize)}}\n  ring_color {1 0.00519486 0}\n  inner_color {1.72586 0.00716965 0}\n  outer_falloff 2\n  brightness 0.6\n  asym_multiplier 0.125\n  asym_falloff 1.35\n  asym_angle -200\n  name Flare50\n  label Little_Red_02\n  xpos -2163\n  ypos 6294\n  disable {{parent.Flare31.disable}}\n }\n Flare {\n  position {{parent.Flare31.position.x} {parent.Flare31.position.y}}\n  offset {{\"parent.Flare31.offset + 1.56\"}}\n  radius {0 72.31 195.8}\n  size_mult {{-((parent.flareCoreSize))*(parent.lensPieceMainSize)}}\n  ring_color {1.69674 0.00709478 0}\n  inner_color {3.11749 0.0105057 0}\n  outer_falloff 2\n  brightness 0.6\n  name Flare51\n  label Little_Red_03\n  xpos -2163\n  ypos 6332\n  disable {{parent.Flare31.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge75\n  xpos -2268\n  ypos 6381\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation19\n  xpos -2372\n  ypos 6427\n }\n Dot {\n  name Dot109\n  xpos -2338\n  ypos 6898\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise13\n  xpos -2548\n  ypos 6414\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 1\n  radius {0 8.33 13.75}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.37\n  chroma_spread 0.062\n  chroma_shift_angle_add true\n  brightness 0.04\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.6\n  sharpness 0.86\n  mult_num {{10+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{5+(parent.lensPieceMainOffset)}}\n  mult_size {{-0.02+(parent.lensPieceMainSizeVariation)}}\n  mult_color 1.5\n  mult_brightness -1\n  name Flare19\n  xpos -2696\n  ypos 6191\n  disable {{\"parent.lensPieceMainType == 2 ? 0 : 1\"}}\n }\n Flare {\n  position {{parent.Flare19.position.x} {parent.Flare19.position.y}}\n  radius {0 8.33 13.75}\n  size_mult {{(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.29\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 1\n  sharpness 0.86\n  mult_num {{3+(parent.ffx_more_pieces)}}\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  mult_offset {{3.05+(parent.ffx_pieces_offset)}}\n  mult_size {{-0.32+(parent.ffx_pieces_size)}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare23\n  xpos -2696\n  ypos 6217\n  disable {{parent.Flare19.disable}}\n }\n Flare {\n  position {{parent.Flare19.position.x} {parent.Flare19.position.y}}\n  radius {0 8.33 13.75}\n  size_mult {{(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  ring_color {0.338333 0.34 0.37}\n  inner_color 0.29\n  chroma_spread 0.07\n  brightness 0.13\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 1\n  sharpness 0.86\n  mult_num {{10+(parent.ffx_more_pieces)}}\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  mult_offset {{1.65+(parent.ffx_pieces_offset)}}\n  mult_size {{0.72+(parent.ffx_pieces_size)}}\n  mult_color -1.95\n  mult_brightness -1\n  mult_visibility -0.34\n  mult_flattening -0.4\n  mult_rotate 0.5\n  name Flare24\n  xpos -2696\n  ypos 6243\n  disable {{parent.Flare19.disable}}\n }\n Saturation {\n  saturation 0.6\n  name Saturation18\n  xpos -2696\n  ypos 6271\n }\n Flare {\n  position {{parent.Flare19.position.x} {parent.Flare19.position.y}}\n  offset 1.45\n  radius {20.94 29.27 34.69}\n  size_mult {{(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.32\n  brightness 0.105\n  vis_mask -rgba.alpha\n  corners 6\n  flattening 0.7\n  sharpness 0.86\n  mult_num {{2+(parent.ffx_more_pieces)}}\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  mult_offset {{1+(parent.ffx_pieces_offset)}}\n  mult_size {{-0.32+(parent.ffx_pieces_size)}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 0.8\n  name Flare25\n  xpos -2696\n  ypos 6297\n  disable {{parent.Flare19.disable}}\n }\n Blur {\n  size 4\n  name Blur29\n  xpos -2696\n  ypos 6324\n }\n Grade {\n  white {1 1 2 1}\n  multiply 4\n  name Grade67\n  xpos -2696\n  ypos 6362\n }\n Flare {\n  position {{parent.Flare19.position.x} {parent.Flare19.position.y}}\n  offset 1.9\n  radius {37.95 46.28 50.39}\n  size_mult {{(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  anamorph 0.7\n  ring_color {0.338333 0.403333 0.338333}\n  inner_color 0.295\n  outer_falloff 0.7\n  inner_falloff 4.8\n  chroma_spread 0.018\n  chroma_shift 0.2\n  chroma_shift_angle 46\n  brightness 0.03\n  vis_mask -rgba.alpha\n  corners 6\n  sharpness 0.86\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -28\n  mult_num {{1+(parent.ffx_more_pieces)}}\n  mult_seed {{(parent.ffx_pieces_seed)}}\n  mult_offset {{-0.3+(parent.ffx_pieces_offset)}}\n  mult_size {{0.2+(parent.ffx_pieces_size)}}\n  mult_color -0.1\n  mult_brightness -1\n  mult_flattening -0.68\n  mult_rotate 1\n  name Flare26\n  xpos -2696\n  ypos 6388\n  disable {{parent.Flare19.disable}}\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.745\n  name Merge67\n  xpos -2696\n  ypos 6414\n }\n Dot {\n  name Dot108\n  xpos -2662\n  ypos 6918\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset 0.139442\n  radius {34.09 39.3 53.38}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  ring_color 0.59\n  inner_color 0.76\n  brightness 0.5\n  flattening 0.7\n  sharpness 1\n  mult_num {{8+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{2.35+(parent.lensPieceMainOffset)}}\n  mult_size {{1+(parent.lensPieceMainSizeVariation)}}\n  mult_color 0.95\n  mult_brightness -0.72\n  mult_visibility 0.12\n  name Flare27\n  xpos -2819\n  ypos 6607\n  disable {{\"parent.lensPieceMainType == 1 ? 0 : 1\"}}\n }\n Glow {\n  maskChannelMask none\n  name Glow6\n  xpos -2819\n  ypos 6633\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize)+(parent.lensPieceMainSize)}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise11\n  xpos -2929\n  ypos 6670\n }\n Merge {\n  inputs 2\n  operation in\n  name Merge63\n  xpos -2819\n  ypos 6670\n }\n Dot {\n  name Dot107\n  xpos -2785\n  ypos 6964\n }\n Flare {\n  inputs 0\n  position {{parent.flarePos.x} {parent.flarePos.y}}\n  offset {{(parent.flareCoreSize)-1}}\n  radius {14.8 24.44 28.18}\n  size_mult {{(parent.flareCoreSize)*(parent.lensPieceMainSize)}}\n  anamorph 1.2\n  inner_color 1\n  corners 6\n  flattening 0.573007\n  sharpness 0.861716\n  mult_num {{12+(parent.lensPieceMainAdditional)}}\n  mult_seed {{(parent.lensPieceMainSeed)}}\n  mult_offset {{5+(parent.flareCoreSize)+(parent.lensPieceMainOffset)}}\n  mult_size {{.44+(parent.lensPieceMainSizeVariation)}}\n  mult_color 1.35\n  mult_brightness -0.758621\n  mult_visibility -0.701149\n  mult_rotate 0.4\n  name Flare20\n  xpos -3050\n  ypos 6285\n  disable {{\"parent.lensPieceMainType == 0 ? 0 : 1\"}}\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation16\n  xpos -3050\n  ypos 6325\n }\n Glow {\n  maskChannelMask none\n  name Glow29\n  xpos -3050\n  ypos 6359\n }\n Dot {\n  name Dot96\n  xpos -3016\n  ypos 7009\n }\n Switch {\n  inputs 10\n  which {{parent.lensPieceMainType}}\n  name lens_anomolies1\n  xpos -140\n  ypos 7005\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  name Crop1\n  xpos -2\n  ypos 7005\n }\n Clamp {\n  name Clamp3\n  xpos 129\n  ypos 6999\n }\n Grade {\n  multiply {{parent.lensPieceMainColour.r} {parent.lensPieceMainColour.g} {parent.lensPieceMainColour.b} 0}\n  white_clamp true\n  maskChannelMask none\n  name grade\n  label \"lens pieces grade\"\n  xpos 281\n  ypos 6999\n }\n Blur {\n  size {{parent.lensPieceMainBlur}}\n  name Blur27\n  label \"lens pieces blur\"\n  xpos 410\n  ypos 6992\n }\n Group {\n  name Static_Noise5\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 532\n  ypos 7006\n  dope_sheet true\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 0.52\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N95e11800 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N95e11800\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N95e10800 [stack 0]\npush $N95e10800\npush $N95e11800\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot38\n  xpos 657\n  ypos 7009\n }\nset N95d7f800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation17\n  xpos 624\n  ypos 7055\n }\npush $N95d7f800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy17\n  xpos 767\n  ypos 6999\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{parent.anomalyRotOffset}}\n  radius {0 38.8 87.21}\n  size_mult 16\n  anamorph 1.16\n  inner_color 0\n  outer_falloff 14\n  inner_falloff 10\n  chroma_spread -0.03\n  brightness 0.53\n  asym_repeat 2\n  asym_multiplier 0\n  asym_falloff 1.55\n  asym_angle {{(parent.ffx_position.x)-92}}\n  name Flare267\n  xpos 699\n  ypos 5221\n  disable {{\"parent.anomalyType == 8 ? 0 : 1\"}}\n }\n Grade {\n  gamma 0.75\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade50\n  xpos 699\n  ypos 5269\n }\n Dot {\n  name Dot45\n  xpos 733\n  ypos 5639\n }\n Noise {\n  inputs 0\n  size {{(parent.flareCoreSize*20)+80}}\n  lacunarity 1.84\n  gain 0.435\n  gamma 0.81\n  center {320 240}\n  name Noise10\n  xpos 170\n  ypos 5362\n  disable {{parent.Flare228.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare228.position.x} {parent.Flare228.position.y}}\n  offset {{parent.anomalyRotOffset}}\n  radius {0 3.97 32.72}\n  size_mult {3.6 4.2}\n  anamorph 10.08\n  ring_color {0 1 0.7899999619}\n  inner_color {0.1000000238 1 0.8109999895}\n  outer_falloff 1.3\n  inner_falloff 1.05\n  vis_mask -rgba.alpha\n  name Flare227\n  xpos 460\n  ypos 5273\n  disable {{parent.Flare228.disable}}\n }\n Blur {\n  size 25.5\n  name Blur20\n  xpos 460\n  ypos 5299\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{parent.anomalyRotOffset}}\n  radius {0 27.23 44.38}\n  size_mult {1.3 3.9}\n  anamorph 23.52\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 0.42\n  chroma_spread -0.21\n  brightness 0.65\n  vis_mask -rgba.alpha\n  name Flare228\n  xpos 314\n  ypos 5221\n  disable {{\"parent.anomalyType == 7 ? 0 : 1\"}}\n }\n Blur {\n  size {20 5}\n  name Blur21\n  xpos 314\n  ypos 5247\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge47\n  xpos 314\n  ypos 5305\n }\n Merge {\n  inputs 2\n  operation stencil\n  mix 0.9\n  name Merge205\n  xpos 314\n  ypos 5362\n }\n Glow {\n  brightness 0.5\n  maskChannelMask none\n  name Glow40\n  xpos 314\n  ypos 5402\n }\n Dot {\n  name Dot46\n  xpos 348\n  ypos 5617\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {120.83 130.41 137.17}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7900000215\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_shift 0.4\n  brightness 0.275\n  vis_mask -rgba.alpha\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 144\n  name Flare44\n  label Source\n  xpos -217\n  ypos 5578\n  disable {{parent.Flare132.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {122.25 134.67 140.01}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7900000215\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_shift 0.4\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 4.6\n  asym_angle 144\n  name Flare45\n  label Source\n  xpos -217\n  ypos 5517\n  disable {{parent.Flare132.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {65.44 126.15 141.43}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7\n  inner_color 0\n  outer_falloff 3.8\n  inner_falloff 7.2\n  chroma_shift 0.4\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 5\n  asym_angle 144\n  name Flare46\n  label Source\n  xpos -107\n  ypos 5460\n  disable {{parent.Flare132.disable}}\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge90\n  xpos -107\n  ypos 5523\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge92\n  xpos -107\n  ypos 5584\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {130.77 141.77 148.53}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7900000215\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_shift 0.4\n  brightness 0.48\n  vis_out 0.99\n  vis_mask -rgba.alpha\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 6\n  asym_angle -40\n  name Flare126\n  label Source\n  xpos -101\n  ypos 5390\n  disable {{parent.Flare132.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {120.83 130.41 138.59}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7900000215\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_shift 0.4\n  brightness 0.175\n  vis_mask -rgba.alpha\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -40\n  name Flare129\n  label Source\n  xpos -101\n  ypos 5292\n  disable {{parent.Flare132.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare132.position.x} {parent.Flare132.position.y}}\n  offset {{parent.Flare132.offset}}\n  radius {116.57 134.67 149.95}\n  size_mult {{parent.Flare132.size_mult}}\n  anamorph {{parent.Flare132.anamorph}}\n  ring_color 0.7900000215\n  inner_color 0\n  outer_falloff 3.2\n  inner_falloff 5.6\n  chroma_shift 0.4\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 4.6\n  asym_angle -40\n  name Flare131\n  label Source\n  xpos -101\n  ypos 5231\n  disable {{parent.Flare132.disable}}\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{parent.anomalyRotOffset}}\n  radius {65.44 126.15 141.43}\n  size_mult {{\"(parent.anomalySize * parent.flareCoreSize) + 1.3\"}}\n  anamorph {{1+(parent.anomalyAnamorph)}}\n  ring_color 0.7\n  inner_color 0\n  outer_falloff 3.8\n  inner_falloff 7.2\n  chroma_shift 0.4\n  brightness 0.08\n  vis_mask -rgba.alpha\n  flattening 0.15\n  sharpness 0\n  asym_multiplier 0\n  asym_falloff 5\n  asym_angle -36\n  name Flare132\n  label Source\n  xpos 9\n  ypos 5177\n  disable {{\"parent.anomalyType == 6 ? 0 : 1\"}}\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge93\n  xpos 9\n  ypos 5237\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge94\n  xpos 9\n  ypos 5298\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge95\n  xpos 9\n  ypos 5396\n }\n Merge {\n  inputs 2\n  operation plus\n  name Merge96\n  xpos 9\n  ypos 5584\n }\n Group {\n  name Static_Noise2\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos 9\n  ypos 5610\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 1.5\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset N95cb1800 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $N95cb1800\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset N95cb0800 [stack 0]\npush $N95cb0800\npush $N95cb1800\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant7\n  label \"Matte Box Edge\"\n  xpos -527\n  ypos 5273\n }\n Crop {\n  box {-100 -100 {root.width+100} {root.height+100}}\n  name Crop5\n  xpos -527\n  ypos 5357\n }\n Erode {\n  channels rgba\n  size 100\n  blur 1\n  maskChannelMask none\n  name Erode2\n  xpos -527\n  ypos 5383\n }\n Clamp {\n  maskChannelMask none\n  name Clamp1\n  xpos -527\n  ypos 5409\n }\n Invert {\n  maskChannelMask none\n  name Invert4\n  xpos -527\n  ypos 5447\n }\n Blur {\n  size 400\n  name Blur12\n  xpos -527\n  ypos 5485\n }\n Blur {\n  size 400\n  name Blur15\n  xpos -527\n  ypos 5523\n }\n Noise {\n  inputs 0\n  size {{100*(parent.flareCoreSize)}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise7\n  xpos -638\n  ypos 5322\n }\n Flare {\n  inputs 0\n  position {{parent.Flare39.position.x} {parent.Flare39.position.y}}\n  offset {{parent.Flare39.offset}}\n  radius {601.92 637.04 800}\n  size_mult {{parent.Flare39.size_mult}}\n  anamorph {{parent.Flare39.anamorph}}\n  ring_color 0.38\n  inner_color 0\n  inner_falloff 1.05\n  chroma_spread -0.015\n  chroma_shift 0.4\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare43\n  label Pieces\n  xpos -686\n  ypos 5264\n  disable {{parent.Flare39.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare39.position.x} {parent.Flare39.position.y}}\n  offset {{parent.Flare39.offset}}\n  radius {531.92 577.04 800}\n  size_mult {{parent.Flare39.size_mult}}\n  anamorph {{parent.Flare39.anamorph}}\n  ring_color 0.29\n  inner_color 0\n  inner_falloff 1.05\n  chroma_spread -0.015\n  chroma_shift 0.4\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare42\n  label Pieces\n  xpos -686\n  ypos 5214\n  disable {{parent.Flare39.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare39.position.x} {parent.Flare39.position.y}}\n  offset {{parent.Flare39.offset}}\n  radius {541.92 547.04 800}\n  size_mult {{parent.Flare39.size_mult}}\n  anamorph {{parent.Flare39.anamorph}}\n  ring_color 0.125\n  inner_color 0\n  inner_falloff 1.05\n  chroma_spread -0.015\n  chroma_shift 0.4\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare41\n  label Pieces\n  xpos -686\n  ypos 5169\n  disable {{parent.Flare39.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare39.position.x} {parent.Flare39.position.y}}\n  offset {{parent.Flare39.offset}}\n  radius {461.92 487.04 800}\n  size_mult {{parent.Flare39.size_mult}}\n  anamorph {{parent.Flare39.anamorph}}\n  ring_color 0.19\n  inner_color 0\n  inner_falloff 1.05\n  chroma_spread -0.015\n  chroma_shift 0.4\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare40\n  label Pieces\n  xpos -686\n  ypos 5130\n  disable {{parent.Flare39.disable}}\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{0.85+(parent.anomalyRotOffset)}}\n  radius {384.65 527.04 800}\n  size_mult {{\"(parent.anomalySize * parent.flareCoreSize) * 1.4\"}}\n  anamorph {{1.24+(parent.anomalyAnamorph)}}\n  ring_color 0.08\n  inner_color 0\n  inner_falloff 1.05\n  chroma_spread -0.015\n  chroma_shift 0.4\n  brightness 0.19\n  vis_mask -rgba.alpha\n  flattening 0.1\n  sharpness 1\n  mult_offset 8\n  mult_size -0.16\n  mult_brightness -0.02\n  mult_visibility -0.18\n  name Flare39\n  label Pieces\n  xpos -796\n  ypos 5098\n  disable {{\"parent.anomalyType == 5 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge86\n  xpos -796\n  ypos 5136\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge87\n  xpos -796\n  ypos 5175\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge88\n  xpos -796\n  ypos 5220\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge89\n  xpos -796\n  ypos 5270\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation7\n  xpos -796\n  ypos 5296\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.845\n  name Merge85\n  xpos -796\n  ypos 5322\n }\n DirBlurWrapper {\n  BlurType radial\n  BlurCenter {{parent.ffx_position.x i} {parent.ffx_position.y i}}\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper8\n  xpos -796\n  ypos 5398\n  disable {{Anomolies_Plus.disable==1?1:lens_anomolies.which==5?0:1 i}}\n }\n Grade {\n  white {1.699708104 1.026119709 0.6997081041 1.649999976}\n  maskChannelMask none\n  name Grade20\n  xpos -796\n  ypos 5473\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge91\n  xpos -796\n  ypos 5529\n }\n Transform {\n  scale 1.15\n  center {986 506}\n  black_outside false\n  name Transform57\n  xpos -796\n  ypos 5555\n }\n Noise {\n  inputs 0\n  size {{(parent.anomalySize*20)+80}}\n  lacunarity 1.84\n  gain 0.425\n  center {320 240}\n  name Noise5\n  xpos -1193\n  ypos 5486\n }\n Flare {\n  inputs 0\n  position {{parent.Flare61.position.x} {parent.Flare61.position.y}}\n  offset {{parent.Flare61.offset}}\n  radius {1.42 30.89 63.22}\n  size_mult {{parent.Flare61.size_mult}}\n  anamorph {{parent.Flare61.anamorph}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.09\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 17\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 20\n  asym_angle 140\n  asym_angle_add true\n  name Flare62\n  label Source\n  xpos -1279\n  ypos 5255\n  disable {{parent.Flare61.disable}}\n }\n Blur {\n  size 18.5\n  name Blur48\n  xpos -1279\n  ypos 5293\n }\n Flare {\n  inputs 0\n  position {{parent.Flare61.position.x} {parent.Flare61.position.y}}\n  offset {{parent.Flare61.offset}}\n  radius {28.41 39.41 120.03}\n  size_mult {{parent.Flare61.size_mult}}\n  anamorph {{parent.Flare61.anamorph}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.11\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 17\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle 140\n  asym_angle_add true\n  name Flare63\n  label Source\n  xpos -1165\n  ypos 5203\n  disable {{parent.Flare61.disable}}\n }\n Blur {\n  size 18.5\n  name Blur58\n  xpos -1165\n  ypos 5241\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{\"parent.anomalyRotOffset \"}}\n  radius {29.83 56.46 162.65}\n  size_mult {{\"parent.anomalySize * parent.flareCoreSize * 3.8 + 1\"}}\n  anamorph {{\"parent.anomalyAnamorph + 0.91\"}}\n  ring_color {0.796096 1.00716 1.196}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 5.6\n  chroma_spread -0.034\n  chroma_shift -5.2\n  chroma_shift_angle 58\n  chroma_shift_angle_add true\n  brightness 0.21\n  vis_mask -rgba.alpha\n  corners 4\n  flattening 1\n  sharpness 1\n  corners_angle 17\n  corner_angle_add true\n  asym_multiplier 0\n  asym_falloff 14\n  asym_angle 140\n  asym_angle_add true\n  name Flare61\n  label Source\n  xpos -1047\n  ypos 5143\n  disable {{\"parent.anomalyType == 4 ? 0 : 1\"}}\n }\n Blur {\n  size 18.5\n  name Blur47\n  xpos -1047\n  ypos 5198\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge27\n  xpos -1047\n  ypos 5247\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge28\n  xpos -1047\n  ypos 5299\n }\n Grade {\n  white 2\n  multiply 2.8\n  gamma 1.06\n  maskChannelMask rgba.red\n  name Grade21\n  xpos -1047\n  ypos 5364\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation10\n  xpos -1047\n  ypos 5418\n }\n Merge {\n  inputs 2\n  operation in\n  mix 0.725\n  name Merge29\n  xpos -1047\n  ypos 5486\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{\"0.7 + parent.anomalyRotOffset \"}}\n  radius {0 0 22.78}\n  size_mult {{\"(parent.anomalySize * parent.flareCoreSize) * 1.4\"}}\n  anamorph {{\"parent.anomalyAnamorph + 25\"}}\n  inner_color 0\n  outer_falloff 1.15\n  inner_falloff 10\n  vis_out 1\n  name Flare109\n  xpos -1740\n  ypos 5131\n  disable {{\"parent.anomalyType == 3 ? 0 : 1\"}}\n }\nset Na13fc400 [stack 0]\n Blur {\n  size {100.5 10.5}\n  name Blur93\n  xpos -1645\n  ypos 5125\n }\npush $Na13fc400\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge74\n  xpos -1740\n  ypos 5186\n }\n Dot {\n  name Dot50\n  xpos -1445\n  ypos 5322\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y+ parent.anomalyPosOffset.h\"}}\n  offset {{\"0.7 + parent.anomalyRotOffset \"}}\n  radius {1.28 9.62 48.57}\n  size_mult {{\"(parent.anomalySize+parent.anomalySize) * parent.flareCoreSize\"}}\n  anamorph {{\"14.4 + parent.anomalyAnamorph\"}}\n  inner_color 1\n  brightness 2\n  vis_mask -rgba.alpha\n  name Flare10\n  xpos -2064\n  ypos 5149\n  disable {{\"parent.anomalyType == 2 ? 0 : 1\"}}\n }\n Blur {\n  size 5.2\n  name Blur9\n  xpos -2064\n  ypos 5198\n }\nset Na1392400 [stack 0]\n Blur {\n  size 22.5\n  name Blur10\n  xpos -1964\n  ypos 5198\n }\npush $Na1392400\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge31\n  xpos -2064\n  ypos 5269\n }\n Dot {\n  name Dot49\n  xpos -1790\n  ypos 5273\n }\n Dot {\n  name Dot48\n  xpos -1512\n  ypos 5354\n }\n Flare {\n  inputs 0\n  position {{parent.Flare108.position.x} {parent.Flare108.position.y}}\n  offset {{parent.Flare108.offset}}\n  radius {0 0 34.14}\n  size_mult {{parent.Flare108.size_mult}}\n  anamorph {{parent.Flare108.anamorph}}\n  inner_color 0\n  outer_falloff 1.15\n  inner_falloff 1.1\n  vis_out 1\n  name Flare107\n  xpos -1769\n  ypos 5519\n  disable {{parent.Flare108.disable}}\n }\n Transform {\n  translate {0 -6}\n  center {960 540}\n  black_outside false\n  name Transform2\n  xpos -1769\n  ypos 5545\n }\n Blur {\n  size 3\n  name Blur92\n  xpos -1769\n  ypos 5571\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{\"0.7 + parent.anomalyRotOffset \"}}\n  radius {0 0 31.3}\n  size_mult {{\"parent.anomalySize * 1.03 * parent.flareCoreSize\"}}\n  anamorph {{\"15 + parent.anomalyAnamorph\"}}\n  inner_color 0\n  outer_falloff 0.9\n  vis_out 1\n  name Flare108\n  xpos -1659\n  ypos 5494\n  disable {{\"parent.anomalyType == 1 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge114\n  xpos -1659\n  ypos 5577\n }\n Blur {\n  size {10 2}\n  name Blur25\n  xpos -1659\n  ypos 5603\n }\n Flare {\n  inputs 0\n  position {{parent.Flare106.position.x} {parent.Flare106.position.y}}\n  offset {{parent.Flare106.offset}}\n  radius {0 0 34.14}\n  size_mult {{parent.Flare106.size_mult}}\n  anamorph {{parent.Flare106.anamorph}}\n  inner_color 0\n  outer_falloff 1.15\n  inner_falloff 1.1\n  vis_out 1\n  name Flare104\n  xpos -2049\n  ypos 5574\n  disable {{parent.Flare106.disable}}\n }\n Transform {\n  translate {0 6}\n  scale {1.2 1}\n  center {960 540}\n  black_outside false\n  name Transform32\n  xpos -2049\n  ypos 5600\n }\n Blur {\n  size {50 3}\n  name Blur90\n  xpos -2049\n  ypos 5626\n }\n Flare {\n  inputs 0\n  position {{parent.Flare106.position.x} {parent.Flare106.position.y}}\n  offset {{parent.Flare106.offset}}\n  radius {0 0 34.14}\n  size_mult {{parent.Flare106.size_mult}}\n  anamorph {{parent.Flare106.anamorph}}\n  inner_color 0\n  outer_falloff 1.15\n  inner_falloff 1.1\n  vis_out 1\n  name Flare105\n  xpos -2049\n  ypos 5450\n  disable {{parent.Flare106.disable}}\n }\n Transform {\n  translate {0 -6}\n  center {960 540}\n  black_outside false\n  name Transform33\n  xpos -2049\n  ypos 5476\n }\n Blur {\n  size 3\n  name Blur91\n  xpos -2049\n  ypos 5502\n }\n Flare {\n  inputs 0\n  position {{\"parent.flarePos.x + parent.anomalyPosOffset.w\"} {\"parent.flarePos.y + parent.anomalyPosOffset.h\"}}\n  offset {{\"0.7 + parent.anomalyRotOffset \"}}\n  radius {0 0 31.3}\n  size_mult {{\"parent.anomalySize * 1.03 * parent.flareCoreSize\"}}\n  anamorph {{\"15 + parent.anomalyAnamorph\"}}\n  inner_color 0\n  outer_falloff 0.9\n  vis_out 1\n  name Flare106\n  xpos -1939\n  ypos 5422\n  disable {{\"parent.anomalyType == 0 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge112\n  xpos -1939\n  ypos 5508\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge113\n  xpos -1939\n  ypos 5632\n }\n Blur {\n  size {10 2}\n  name Blur28\n  xpos -1939\n  ypos 5658\n }\n Switch {\n  inputs 9\n  which {{parent.anomalyType}}\n  name lens_anomolies\n  xpos -1451\n  ypos 5722\n }\n Clamp {\n  name Clamp5\n  xpos 129\n  ypos 5716\n }\n Saturation {\n  saturation {{parent.anomalyPresat}}\n  maskChannelMask none\n  name Anomolies_Saturation\n  xpos 252\n  ypos 5722\n }\n Grade {\n  multiply {{parent.anomalyColour.r} {parent.anomalyColour.g} {parent.anomalyColour.b} 0}\n  maskChannelMask none\n  name Anomolies_Color\n  label \"Lens Anomolies CC\"\n  xpos 375\n  ypos 5716\n }\n Blur {\n  size {{parent.anomalyBlur}}\n  name Blur7\n  xpos 503\n  ypos 5716\n }\n Dot {\n  name Dot47\n  xpos 771\n  ypos 5726\n }\nset Na12ae400 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation11\n  xpos 738\n  ypos 5772\n }\npush $Na12ae400\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy9\n  xpos 881\n  ypos 5716\n }\npush $N8e8ebc00\n Radial {\n  inputs 0\n  maskChannelMask none\n  area {0 0 {root.width} {root.height}}\n  name Radial2\n  xpos -2190\n  ypos 3282\n }\n Dot {\n  name Dot37\n  xpos -2156\n  ypos 3344\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"2048 2048 0 0 2048 2048 1 square_2K\"\n  name Constant6\n  xpos 757\n  ypos 2459\n }\nset Na12ad000 [stack 0]\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {19.16 186.02 495.46}\n  size_mult {{parent.Flare246.size_mult}}\n  inner_color 0\n  outer_falloff 0.6\n  inner_falloff 7.4\n  asym_repeat 2\n  asym_multiplier 0\n  asym_falloff 5\n  asym_angle {{((parent.ffx_position.x/30)-24)+parent.core_shape_rotation}}\n  name Flare230\n  xpos 437\n  ypos 2922\n  disable {{parent.Flare246.disable}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle24\n  xpos 437\n  ypos 2948\n }\nset Na12ac400 [stack 0]\npush $Na12ac400\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  maskChannelMask none\n  name Copy2\n  xpos 437\n  ypos 2976\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {71.91 172.77 231.62}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {0 0 1}\n  inner_color 0\n  outer_falloff 2.1\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare234\n  xpos 437\n  ypos 2885\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {104.58 205.44 269.97}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {1 0 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare239\n  xpos 437\n  ypos 2842\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {131.57 235.27 275.65}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {1 1 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare240\n  xpos 437\n  ypos 2790\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {152.88 258 309.74}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {0 1 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare241\n  xpos 437\n  ypos 2737\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {155.72 287.83 332.47}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {0 1 1}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare242\n  xpos 437\n  ypos 2684\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {188.39 317.66 457.47}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {0 0 1}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare243\n  xpos 437\n  ypos 2638\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {79.93 364.53 468.84}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {1 0 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.4\n  asym_falloff 10\n  asym_angle -24\n  name Flare244\n  xpos 437\n  ypos 2586\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  radius {274.71 413.95 457.21}\n  size_mult {{parent.Flare246.size_mult}}\n  ring_color {1 1 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.2\n  asym_falloff 10\n  asym_angle -22\n  name Flare245\n  xpos 437\n  ypos 2531\n  disable {{parent.Flare246.disable}}\n }\npush $Na12ad000\n Flare {\n  position {{\"2048 /2\"} {\"2048 /2\"}}\n  radius {307.38 435.26 494.04}\n  size_mult 1.8\n  ring_color {0.003999948502 1 0}\n  inner_color 0\n  outer_falloff 1.45\n  inner_falloff 6.2\n  asym_falloff 10\n  asym_angle -22\n  name Flare246\n  xpos 547\n  ypos 2482\n  disable {{\"parent.coreCoronaType == 7 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge211\n  xpos 547\n  ypos 2531\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge212\n  xpos 547\n  ypos 2586\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge213\n  xpos 547\n  ypos 2638\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  mix 0.76\n  name Merge214\n  xpos 547\n  ypos 2684\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  mix 0.68\n  name Merge215\n  xpos 547\n  ypos 2737\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  mix 0.73\n  name Merge216\n  xpos 547\n  ypos 2790\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge217\n  xpos 547\n  ypos 2842\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge218\n  xpos 547\n  ypos 2885\n }\n Blur {\n  size 97\n  name Blur115\n  xpos 547\n  ypos 2911\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge219\n  xpos 547\n  ypos 2982\n }\n Grade {\n  multiply 0.48\n  gamma 0.59\n  maskChannelMask none\n  unpremult -rgba.alpha\n  name Grade47\n  xpos 547\n  ypos 3021\n }\nset Na11cc400 [stack 0]\npush $Na11cc400\npush $Na12ad000\n Sparkles {\n  mode Sparkles\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  size 1100\n  anamorphic 1.1\n  rotation {{(parent.Flare246.position.x/30)+100}}\n  ray_nb 400\n  ray_thick 3\n  spark_falloff 0\n  ray_falloff 10\n  seed 95\n  chroma_shift 1.06\n  chroma_spread 0.16\n  name Sparkles34\n  xpos 757\n  ypos 2889\n  disable {{parent.Flare246.disable}}\n }\n Sparkles {\n  mode Sparkles\n  position {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  size 1300\n  anamorphic 1.1\n  rotation {{(parent.Flare246.position.x/30)+100}}\n  ray_nb 600\n  ray_thick 3\n  spark_falloff 0.016\n  ray_falloff 10\n  seed 65\n  chroma_shift 1.06\n  chroma_spread 0.295\n  name Sparkles35\n  xpos 757\n  ypos 2925\n  disable {{parent.Flare246.disable}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  Achannels {rgba.red rgba.green rgba.blue rgba.red}\n  maskChannelMask none\n  name Merge241\n  xpos 757\n  ypos 2959\n }\n Merge2 {\n  inputs 2\n  operation geometric\n  maskChannelMask none\n  mix 0.5\n  name Merge242\n  xpos 757\n  ypos 2985\n }\n Grade {\n  multiply 2.65\n  maskChannelMask none\n  name Grade48\n  xpos 757\n  ypos 3023\n }\n DirBlurWrapper {\n  BlurCenter {{parent.Flare246.position.x} {parent.Flare246.position.y}}\n  BlurLength 90\n  BlurAngle 70\n  maskChannelMask none\n  name DirBlurWrapper16\n  xpos 757\n  ypos 3049\n  disable {{parent.Flare246.disable}}\n }\n Glow {\n  tolerance 0.06\n  brightness 2.6\n  maskChannelMask none\n  name Glow26\n  xpos 757\n  ypos 3085\n }\npush $Na11cc400\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge243\n  xpos 547\n  ypos 3085\n }\n Glow {\n  tolerance 0.055\n  brightness 1.44\n  size 100\n  maskChannelMask none\n  name Glow30\n  xpos 547\n  ypos 3130\n }\n Saturation {\n  saturation 0.7\n  maskChannelMask none\n  name Saturation13\n  xpos 547\n  ypos 3207\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 3.9 26.5}\n  size_mult {{\"1 * parent.coreCoronaSize\"}}\n  anamorph 7\n  ring_color {1.16889 1 0.831105}\n  inner_color 1.16889\n  chroma_spread 0.04\n  chroma_shift -2.6\n  corners 0\n  flattening 0.699989\n  sharpness 0.899097\n  name Flare9\n  xpos 161\n  ypos 2580\n  disable {{\"parent.coreCoronaType == 6 ? 0 : 1\"}}\n }\n Transform {\n  translate {-14 3}\n  center {986 506}\n  name Transform34\n  xpos 161\n  ypos 2630\n }\nset Na1160c00 [stack 0]\n Transform {\n  translate {55 -10}\n  center {986 506}\n  name Transform35\n  xpos 51\n  ypos 2630\n }\nset Na1160800 [stack 0]\n Transform {\n  translate {-74 19}\n  center {986 506}\n  name Transform36\n  xpos -39\n  ypos 2630\n }\nset Na1160400 [stack 0]\n Transform {\n  translate {97 8}\n  center {986 506}\n  name Transform37\n  xpos -131\n  ypos 2630\n }\nset Na10d7c00 [stack 0]\n Transform {\n  translate {-119 -33}\n  center {986 506}\n  name Transform38\n  xpos -211\n  ypos 2630\n }\nset Na10d7800 [stack 0]\n Transform {\n  translate {28 12}\n  center {986 506}\n  name Transform39\n  xpos -321\n  ypos 2630\n }\npush $Na10d7800\npush $Na10d7c00\npush $Na1160400\npush $Na1160800\npush $Na1160c00\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge22\n  xpos 161\n  ypos 2683\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge23\n  xpos 161\n  ypos 2724\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge24\n  xpos 161\n  ypos 2762\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge25\n  xpos 161\n  ypos 2788\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge26\n  xpos 161\n  ypos 2842\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {1528 780}\n  BlurLength 80\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper5\n  xpos 161\n  ypos 2868\n  disable {{parent.Flare9.disable}}\n }\n Glow {\n  brightness 2\n  maskChannelMask none\n  name Glow3\n  xpos 161\n  ypos 2986\n }\n Transform {\n  scale {{parent.coreCoronaSize}}\n  center {{root.width/2} {root.height/2 x60 540}}\n  invert_matrix true\n  name inv_scale2\n  xpos 161\n  ypos 3030\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 3.9 25.08}\n  size_mult {{\"1 * parent.coreCoronaSize\"}}\n  anamorph 15\n  ring_color {1.16889 1 0.831105}\n  inner_color 1.16889\n  chroma_spread 0.04\n  chroma_shift -2.6\n  corners 0\n  flattening 0.699989\n  sharpness 0.899097\n  name Flare38\n  xpos -579\n  ypos 2563\n  disable {{\"parent.coreCoronaType == 5 ? 0 : 1\"}}\n }\n Transform {\n  translate {-14 3}\n  center {986 506}\n  name Transform24\n  xpos -579\n  ypos 2631\n }\nset Na10d4800 [stack 0]\n Transform {\n  translate {55 -10}\n  center {986 506}\n  name Transform25\n  xpos -689\n  ypos 2631\n }\nset Na10d4400 [stack 0]\n Transform {\n  translate {-74 19}\n  center {986 506}\n  name Transform26\n  xpos -779\n  ypos 2631\n }\nset Nb58cfc00 [stack 0]\n Transform {\n  translate {97 8}\n  center {986 506}\n  name Transform27\n  xpos -871\n  ypos 2631\n }\nset Nb58cf800 [stack 0]\n Transform {\n  translate {-119 -33}\n  center {986 506}\n  name Transform28\n  xpos -951\n  ypos 2631\n }\nset Nb58cf400 [stack 0]\n Transform {\n  translate {28 12}\n  center {986 506}\n  name Transform29\n  xpos -1061\n  ypos 2631\n }\npush $Nb58cf400\npush $Nb58cf800\npush $Nb58cfc00\npush $Na10d4400\npush $Na10d4800\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge77\n  xpos -579\n  ypos 2684\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge78\n  xpos -579\n  ypos 2725\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge79\n  xpos -579\n  ypos 2763\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge82\n  xpos -579\n  ypos 2789\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge83\n  xpos -579\n  ypos 2843\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {1528 780}\n  BlurLength 80\n  BlurAngle 90\n  maskChannelMask none\n  name DirBlurWrapper7\n  xpos -579\n  ypos 2893\n  disable {{parent.Flare38.disable}}\n }\n Glow {\n  brightness 2\n  maskChannelMask none\n  name Glow38\n  xpos -579\n  ypos 2955\n }\n Transform {\n  scale {{parent.coreCoronaSize}}\n  center {{root.width/2} {root.height/2 x60 540}}\n  invert_matrix true\n  name inv_scale1\n  xpos -579\n  ypos 3016\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {0 3.9 20.82}\n  size_mult {{\"1 * parent.coreCoronaSize\"}}\n  anamorph 0.1\n  ring_color {1.16889 1 0.831105}\n  inner_color 1.16889\n  chroma_spread 0.075\n  chroma_shift -5.2\n  corners 0\n  flattening 0.699989\n  sharpness 0.899097\n  name Flare36\n  xpos -1293\n  ypos 2542\n  disable {{\"parent.coreCoronaType == 4 ? 0 : 1\"}}\n }\n Transform {\n  translate {-8 -17}\n  center {986 506}\n  name Transform11\n  xpos -1293\n  ypos 2609\n }\nset Nb58cc400 [stack 0]\n Transform {\n  translate {13 -50}\n  center {986 506}\n  name Transform12\n  xpos -1395\n  ypos 2609\n }\nset Nb584bc00 [stack 0]\n Transform {\n  translate {19 -22}\n  center {986 506}\n  name Transform14\n  xpos -1494\n  ypos 2609\n }\nset Nb584b800 [stack 0]\n Transform {\n  translate {-7 47}\n  center {986 506}\n  name Transform15\n  xpos -1585\n  ypos 2609\n }\nset Nb584b400 [stack 0]\n Transform {\n  translate {-39 37}\n  center {986 506}\n  name Transform16\n  xpos -1665\n  ypos 2609\n }\nset Nb584b000 [stack 0]\n Transform {\n  translate {18 18}\n  center {986 506}\n  name Transform17\n  xpos -1775\n  ypos 2609\n }\npush $Nb584b000\npush $Nb584b400\npush $Nb584b800\npush $Nb584bc00\npush $Nb58cc400\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge37\n  xpos -1293\n  ypos 2662\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge51\n  xpos -1293\n  ypos 2703\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge60\n  xpos -1293\n  ypos 2741\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge61\n  xpos -1293\n  ypos 2776\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge62\n  xpos -1293\n  ypos 2821\n }\n DirBlurWrapper {\n  BlurType linear\n  BlurCenter {1528 780}\n  BlurLength 80\n  BlurAngle 0\n  maskChannelMask none\n  name DirBlurWrapper1\n  xpos -1293\n  ypos 2857\n  disable {{parent.Flare36.disable}}\n }\n Glow {\n  brightness 2\n  maskChannelMask none\n  name Glow37\n  xpos -1293\n  ypos 2914\n }\n Transform {\n  scale {{parent.coreCoronaSize}}\n  center {{root.width/2} {root.height/2 x60 540}}\n  invert_matrix true\n  name inv_scale\n  xpos -1293\n  ypos 2962\n }\n Dot {\n  name Dot39\n  xpos -1259\n  ypos 3081\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {119.3 147.71 176.18}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 180\n  name Flare47\n  xpos -2189\n  ypos 2720\n  disable {{parent.Flare117.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {122.15 150.56 179.03}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  name Flare48\n  xpos -2079\n  ypos 2694\n  disable {{parent.Flare117.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge10\n  xpos -2079\n  ypos 2720\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  xpos -2079\n  ypos 2763\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {132.1 139.18 171.91}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 0.9\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare49\n  xpos -2079\n  ypos 2629\n  disable {{parent.Flare117.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {133.51 153.38 183.27}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 2.7\n  inner_falloff 0.76\n  chroma_spread 0.032\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare52\n  xpos -1969\n  ypos 2575\n  disable {{parent.Flare117.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge11\n  xpos -1969\n  ypos 2629\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge12\n  xpos -1969\n  ypos 2763\n }\n Dot {\n  name Dot13\n  xpos -1935\n  ypos 2821\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {65.33 93.74 122.21}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 180\n  name Flare114\n  xpos -2554\n  ypos 2699\n  disable {{parent.Flare117.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {65.33 93.74 122.21}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  name Flare115\n  xpos -2444\n  ypos 2673\n  disable {{parent.Flare117.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge118\n  xpos -2444\n  ypos 2699\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle9\n  xpos -2444\n  ypos 2742\n }\n Flare {\n  inputs 0\n  position {{parent.Flare117.position.x} {parent.Flare117.position.y}}\n  radius {103.69 110.77 126.45}\n  size_mult {{parent.Flare117.size_mult}}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 0.9\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare116\n  xpos -2444\n  ypos 2608\n  disable {{parent.Flare117.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {106.52 126.39 134.97}\n  inner_color 0\n  outer_falloff 2.7\n  inner_falloff 0.76\n  chroma_spread 0.044\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare117\n  xpos -2334\n  ypos 2552\n  disable {{\"parent.coreCoronaType == 3 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge119\n  xpos -2334\n  ypos 2608\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge120\n  xpos -2334\n  ypos 2742\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge13\n  xpos -2334\n  ypos 2817\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {170.91 284.65 345.84}\n  size_mult {{parent.Flare100.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread -0.004\n  chroma_shift -0.6\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 150\n  mult_offset 0\n  name Flare97\n  xpos -3782\n  ypos 2759\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {308.69 337.21 473.01}\n  size_mult {{parent.Flare100.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift 0.6\n  asym_multiplier 0\n  asym_falloff {{Flare100.asym_falloff}}\n  asym_angle 150\n  mult_offset 0\n  name Flare98\n  xpos -3672\n  ypos 2733\n  disable {{parent.Flare177.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge103\n  xpos -3672\n  ypos 2759\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {312.25 324.43 465.17}\n  size_mult {{parent.Flare100.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -30\n  mult_offset 0\n  name Flare99\n  xpos -3653\n  ypos 2641\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {293.07 323.01 335.91}\n  size_mult 0.6\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 4\n  asym_angle -30\n  mult_offset 0\n  name Flare100\n  xpos -3543\n  ypos 2591\n  disable {{parent.Flare177.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge104\n  xpos -3543\n  ypos 2641\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge105\n  xpos -3543\n  ypos 2759\n }\n Glow {\n  tolerance 0.51\n  size 35\n  maskChannelMask none\n  name Glow5\n  xpos -3543\n  ypos 2878\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {119.3 147.71 176.18}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 142\n  name Flare136\n  xpos -4134\n  ypos 2717\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {122.15 150.56 179.03}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -28\n  name Flare137\n  xpos -4024\n  ypos 2691\n  disable {{parent.Flare177.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge98\n  xpos -4024\n  ypos 2717\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle7\n  xpos -4024\n  ypos 2760\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {132.1 139.18 171.91}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 0.9\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare145\n  xpos -4024\n  ypos 2626\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {133.51 153.38 183.27}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 2.7\n  inner_falloff 0.76\n  chroma_spread 0.012\n  chroma_shift -3.2\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare157\n  xpos -3914\n  ypos 2575\n  disable {{parent.Flare177.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge99\n  xpos -3914\n  ypos 2626\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge101\n  xpos -3914\n  ypos 2786\n }\n Dot {\n  name Dot11\n  xpos -3880\n  ypos 2818\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {73.85 124.98 170.5}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -150\n  name Flare174\n  xpos -4454\n  ypos 2696\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {44.02 140.56 264.21}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 0.86\n  inner_falloff 3.8\n  chroma_shift_angle 42\n  vis_out 1\n  corners 4\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle 30\n  name Flare175\n  xpos -4344\n  ypos 2655\n  disable {{parent.Flare177.disable}}\n }\n Merge2 {\n  inputs 2\n  maskChannelMask none\n  name Merge106\n  xpos -4344\n  ypos 2696\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle8\n  xpos -4344\n  ypos 2739\n }\n Flare {\n  inputs 0\n  position {{parent.Flare177.position.x} {parent.Flare177.position.y}}\n  radius {103.69 110.77 126.45}\n  size_mult {{parent.Flare177.size_mult}}\n  inner_color 0\n  outer_falloff 5.2\n  inner_falloff 0.9\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare176\n  xpos -4344\n  ypos 2605\n  disable {{parent.Flare177.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {106.52 126.39 134.97}\n  size_mult 0.8\n  inner_color 0\n  outer_falloff 2.7\n  inner_falloff 0.76\n  chroma_spread 0.012\n  chroma_shift -3.2\n  chroma_shift_angle 42\n  vis_out 1\n  corners 3\n  name Flare177\n  xpos -4234\n  ypos 2559\n  disable {{\"parent.coreCoronaType == 2 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge107\n  xpos -4234\n  ypos 2605\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge111\n  xpos -4234\n  ypos 2765\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge115\n  xpos -4234\n  ypos 2815\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge108\n  xpos -4234\n  ypos 2878\n }\n Grade {\n  multiply 0.4\n  maskChannelMask none\n  name Grade10\n  xpos -4234\n  ypos 2929\n }\n Saturation {\n  saturation 0\n  maskChannelMask none\n  name Saturation8\n  xpos -4234\n  ypos 2988\n }\n Transform {\n  rotate {{parent.coreCoronaRotation}}\n  center {960 540}\n  name Transform30\n  xpos -4234\n  ypos 3051\n }\n Flare {\n  inputs 0\n  position {{parent.Flare3.position.x} {parent.Flare3.position.y}}\n  radius {260.4 271.87 287.61}\n  size_mult {{parent.Flare3.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -30\n  mult_offset 0\n  name Flare2\n  xpos -2806\n  ypos 2629\n  disable {{parent.Flare3.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {241.93 271.87 284.77}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 4\n  asym_angle -30\n  mult_offset 0\n  name Flare3\n  xpos -2696\n  ypos 2579\n  disable {{\"parent.coreCoronaType == 1 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge4\n  xpos -2696\n  ypos 2629\n }\n Flare {\n  inputs 0\n  position {{parent.Flare7.position.x} {parent.Flare7.position.y}}\n  radius {260.4 271.87 287.61}\n  size_mult {{parent.Flare7.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -30\n  mult_offset 0\n  name Flare6\n  xpos -2913\n  ypos 2729\n  disable {{parent.Flare3.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {241.93 271.87 284.77}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 4\n  asym_angle -30\n  mult_offset 0\n  name Flare7\n  xpos -2803\n  ypos 2679\n  disable {{parent.Flare3.disable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge5\n  xpos -2803\n  ypos 2729\n }\n Transform {\n  rotate 180\n  center {{parent.Flare5.position.x} {parent.Flare5.position.y}}\n  name Transform4\n  xpos -2803\n  ypos 2767\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge6\n  xpos -2696\n  ypos 2767\n }\n Glow {\n  tolerance 0.51\n  size 35\n  maskChannelMask none\n  name Glow20\n  xpos -2696\n  ypos 2815\n }\n Flare {\n  inputs 0\n  position {{parent.Flare5.position.x} {parent.Flare5.position.y}}\n  radius {260.4 271.87 287.61}\n  size_mult {{parent.Flare5.size_mult}}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 10\n  asym_angle -30\n  mult_offset 0\n  name Flare4\n  xpos -3191\n  ypos 2734\n  disable {{parent.Flare5.disable}}\n }\n Flare {\n  inputs 0\n  position {{root.width/2} {root.height/2}}\n  radius {254.39 271.87 284.77}\n  ring_color 0.55\n  inner_color 0\n  outer_falloff 1.65\n  inner_falloff 1.35\n  chroma_spread 0.012\n  chroma_shift -4.4\n  brightness {1 1 1}\n  asym_multiplier 0\n  asym_falloff 4\n  asym_angle -30\n  mult_offset 0\n  name Flare5\n  xpos -3081\n  ypos 2685\n  disable {{\"parent.coreCoronaType == 0 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  name Merge3\n  xpos -3081\n  ypos 2734\n }\n Glow {\n  tolerance 0.51\n  size 35\n  maskChannelMask none\n  name Glow2\n  xpos -3081\n  ypos 2823\n }\n Switch {\n  inputs 8\n  which {{parent.coreCoronaType}}\n  name Switch1\n  xpos -2063\n  ypos 3235\n }\n Transform {\n  translate {{\"-(root.width/2) + parent.flarePos.x + parent.coreCoronaOffset.x\"} {\"-(root.height/2) + parent.flarePos.y + parent.coreCoronaOffset.y\"}}\n  rotate {{parent.coreCoronaRotation}}\n  scale {{\"parent.flareCoreSize * parent.coreCoronaSize\"}}\n  center {{root.width/2} {root.height/2 x60 540}}\n  filter sinc4\n  name scale_rot_translate\n  xpos -2063\n  ypos 3275\n  disable {{\"parent.coreCoronaType == 7 ? 1 : 0\"}}\n }\n Transform {\n  translate {{\"-(2048 / 2) + parent.flarePos.x + parent.coreCoronaOffset.x\"} {\"-(2048 / 2) + parent.flarePos.y + parent.coreCoronaOffset.y\"}}\n  rotate {{parent.coreCoronaRotation}}\n  scale {{\"parent.flareCoreSize * parent.coreCoronaSize\"}}\n  center {{\"2048 / 2\"} {\"2048 / 2\" x60 540}}\n  filter sinc4\n  name chroma_hoop_trans\n  xpos -2063\n  ypos 3305\n  disable {{\"parent.coreCoronaType == 7 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  maskChannelMask none\n  name Merge109\n  xpos -2063\n  ypos 3341\n  disable {{parent.Flare177.disable}}\n }\n Blur {\n  size {{parent.coreCoronaBlur}}\n  name Blur3\n  xpos -2063\n  ypos 3377\n }\n Grade {\n  multiply {{parent.coreCoronaTint.r} {parent.coreCoronaTint.g} {parent.coreCoronaTint.b} 1}\n  name Grade8\n  xpos -2063\n  ypos 3430\n }\n Group {\n  name Static_Noise3\n  help \"Adds synthetic grain. Push \\\"presets\\\" to get predefined types of grain, these are the correct size for 2K scans.\\n\\nYou can also adjust the sliders to match a sample piece of grain. Find a sample with a rather constant background, blur it to remove the grain, and use as input to this. View with a wipe in the viewer so you can make a match. It helps to view and match each of the red, green, blue seperately.\"\n  tile_color 0x992620ff\n  note_font \"Bitstream Vera Sans\"\n  xpos -1827\n  ypos 3431\n  disable {{!parent.coreCoronaNoise}}\n  mapsize {0.15 0.15}\n  addUserKnob {20 master_control l Master}\n  addUserKnob {7 noise_intensity_global l Intensity R 0 2}\n  noise_intensity_global 1\n  addUserKnob {7 rgb_size_multiplier l Size R 0 2}\n  rgb_size_multiplier 1\n  addUserKnob {26 \"\"}\n  addUserKnob {6 no_alpha l \"no alpha?\" t \"Check this box if your image doesn't have an alpha and you cannot use another alpha channel.\\n\\n(Note: This WILL cause the grain to be more prevalent. So please compensate using the Noise Size and Noise Intensity controls above.)\" +STARTLINE}\n  no_alpha true\n  addUserKnob {20 adv_controls l Advanced}\n  addUserKnob {20 fractal_noise_size l \"RGB Noise Size\" n 1}\n  fractal_noise_size 0\n  addUserKnob {14 red_size l r R 0 100}\n  red_size 1.7\n  addUserKnob {14 green_size l g R 0 100}\n  green_size 1.6\n  addUserKnob {14 blue_size l b R 0 100}\n  blue_size 1.5\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 noise_irregularity l \"RGB Noise Irregularity\" n 1}\n  noise_irregularity 0\n  addUserKnob {7 red_i l r}\n  red_i 1\n  addUserKnob {7 green_i l g}\n  green_i 0.75\n  addUserKnob {7 blue_i l b}\n  blue_i 0.65\n  addUserKnob {20 endGroup_1 l endGroup n -1}\n  addUserKnob {20 noise_intensity l \"RGB Noise Intensity\" n 1}\n  noise_intensity 0\n  addUserKnob {7 red_m l r t \"Amount of grain to add to a white pixel\"}\n  red_m 0.2\n  addUserKnob {7 green_m l g}\n  green_m 0.4\n  addUserKnob {7 blue_m l b}\n  blue_m 0.6\n  addUserKnob {18 black t \"Amount of grain to add everywhere\"}\n  black {0 0 0}\n  addUserKnob {6 black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 minimum t \"Minimum black level\" R 0 0.01}\n  minimum {0 0 0}\n  addUserKnob {6 minimum_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 endGroup_2 l endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {3 seed l Seed}\n  seed 134\n  addUserKnob {32 reset l Reset T \"knobs this \\{rgb_size_multiplier 0 red_size 1.70 green_size 1.60 blue_size 1.50 red_i 1.00 green_i 0.75 blue_i 0.65 red_m 0.40 green_m 0.60 blue_m 1.65 black 0.00\\}\" +STARTLINE}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\nset Nb552b800 [stack 0]\n  Noise {\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.red_size.w*(rgb_size_multiplier) i} {parent.red_size.h*(rgb_size_multiplier) i}}\n   octaves 2\n   gamma 1\n   xrotate {{red_i*45 i}}\n   yrotate {{red_i*45 i}}\n   name red\n   xpos 144\n   ypos -7\n  }\n  Noise {\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.green_size.w*(rgb_size_multiplier) i} {parent.green_size.h*(rgb_size_multiplier) i}}\n   zoffset 10\n   octaves 2\n   gamma 1\n   xrotate {{green_i*45 i}}\n   yrotate {{green_i*45 i}}\n   name green\n   xpos 144\n   ypos 35\n  }\n  Noise {\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   cliptype none\n   replace true\n   size {{parent.blue_size.w*(rgb_size_multiplier) i} {parent.blue_size.h*(rgb_size_multiplier) i}}\n   zoffset 20\n   octaves 2\n   gamma 1\n   xrotate {{blue_i*45 i}}\n   yrotate {{blue_i*45 i}}\n   name blue\n   xpos 144\n   ypos 77\n  }\npush $Nb552b800\n  MergeExpression {\n   inputs 2\n   expr0 max(minimum.r,r+(2*Ar-1)*(r*red_m*noise_intensity_global))\n   expr1 max(minimum.g,g+(2*Ag-1)*(g*green_m*noise_intensity_global))\n   expr2 max(minimum.b,b+(2*Ab-1)*(b*blue_m*noise_intensity_global))\n   name MergeExpression1\n   xpos 144\n   ypos 117\n  }\nset Nb552a800 [stack 0]\npush $Nb552a800\npush $Nb552b800\n  Copy {\n   inputs 2\n   channels rgb\n   maskChannelInput rgba.alpha\n   name Copy1\n   xpos 0\n   ypos 105\n   disable {{parent.no_alpha i}}\n  }\n  Switch {\n   inputs 2\n   which {{parent.no_alpha i}}\n   name Switch1\n   xpos 144\n   ypos 171\n  }\n  Output {\n   name Output1\n   xpos 144\n   ypos 219\n  }\n end_group\n Dot {\n  name Dot40\n  xpos 616\n  ypos 3434\n }\nset Nb5529c00 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation2\n  xpos 583\n  ypos 3480\n }\npush $Nb5529c00\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy4\n  xpos 754\n  ypos 3425\n }\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant2\n  label \"Matte Box Edge\"\n  xpos -63\n  ypos 1215\n }\n Crop {\n  box {-100 -100 {root.width+100} {root.height+100}}\n  name Crop3\n  xpos -63\n  ypos 1299\n }\n Erode {\n  channels rgba\n  size 100\n  blur 1\n  maskChannelMask none\n  name Erode1\n  xpos -63\n  ypos 1325\n }\n Clamp {\n  maskChannelMask none\n  name Clamp2\n  xpos -63\n  ypos 1351\n }\n Invert {\n  maskChannelMask none\n  name Invert2\n  xpos -63\n  ypos 1389\n }\n Blur {\n  size 200\n  name Blur40\n  xpos -63\n  ypos 1427\n }\n Grade {\n  blackpoint {{parent.bloomFalloffCrush}}\n  name Grade1\n  xpos 191\n  ypos 1433\n }\nset Nb64a3400 [stack 0]\n Dot {\n  name Dot33\n  xpos 225\n  ypos 1528\n }\nset Nb64a3000 [stack 0]\n Grade {\n  multiply {1 0 0 1}\n  name Grade2\n  xpos 191\n  ypos 2197\n }\npush $Nb64a3000\npush $Nb64a3000\npush $Nb64a3000\npush $Nb64a3000\npush $Nb64a3000\npush $Nb64a3000\npush $Nd50e1000\n Constant {\n  inputs 0\n  channels rgb\n  name Constant16\n  xpos 918\n  ypos 1117\n }\n Switch {\n  inputs 2\n  which {{parent.altCoreDisable}}\n  name Switch6\n  xpos 798\n  ypos 1140\n }\n Dot {\n  name Dot6\n  xpos 832\n  ypos 1197\n }\n Dot {\n  name Dot5\n  xpos 409\n  ypos 1197\n }\n Dot {\n  name Dot21\n  xpos 409\n  ypos 1241\n }\nset Nb64a1c00 [stack 0]\n Dot {\n  name Dot23\n  xpos 485\n  ypos 1241\n }\n Dot {\n  name Dot24\n  xpos 485\n  ypos 1528\n }\npush $Nb64a1c00\n Merge2 {\n  inputs 2+1\n  operation screen\n  name Edge_Shimmer_Bloom\n  label \"Edge Shimmer\"\n  xpos 375\n  ypos 1518\n  disable {{parent.edgeBloomDisable}}\n }\n Blur {\n  inputs 1+1\n  size 100\n  name Blur41\n  xpos 375\n  ypos 1556\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n }\n Blur {\n  inputs 1+1\n  size 100\n  name Blur42\n  xpos 375\n  ypos 1594\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n }\n Blur {\n  inputs 1+1\n  size 100\n  name Blur43\n  xpos 375\n  ypos 1632\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n }\n Grade {\n  inputs 1+1\n  white 4\n  multiply 4\n  name Grade16\n  label Bloom\n  xpos 375\n  ypos 1670\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n }\n Glow {\n  inputs 1+1\n  name Glow1\n  xpos 375\n  ypos 1708\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n }\n Shuffle {\n  alpha red\n  name Shuffle5\n  xpos 375\n  ypos 1734\n }\n Grade {\n  multiply {{parent.edgeBloomColour.r} {parent.edgeBloomColour.g} {parent.edgeBloomColour.b} 1}\n  name Grade9\n  xpos 375\n  ypos 1771\n }\n VolumeRays {\n  name FFX_VolumeRays\n  label \"Mar 20 2005\"\n  xpos 375\n  ypos 1863\n  disable {{parent.Edge_Shimmer_Bloom.disable}}\n  blur_size 0\n  vol_pos {{\"parent.flarePos.x + parent.coreOffset.x\"} {\"parent.flarePos.y + parent.coreOffset.y\"}}\n  raylength 13\n  quality Low\n  chk_flicker false\n  flicker_speed 0\n  flicker_size 0\n  xform_flicker true\n  CCorrect1_gain 0.09\n  volume_end_color {0 0 0 0}\n  radial_size 205\n }\nset Nb6421d00 [stack 0]\n Blur {\n  size 300\n  name Blur76\n  xpos 511\n  ypos 1863\n }\npush $Nb64a3400\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0 0 1}\n  color_panelDropped true\n  name Constant4\n  xpos 653\n  ypos 1229\n }\n Noise {\n  maskChannelMask none\n  size 15.8\n  zoffset {{frame/10}}\n  lacunarity 10\n  translate {1660 676}\n  center {{parent.flarePos.x} {parent.flarePos.y}}\n  name Noise15\n  xpos 653\n  ypos 1321\n }\n VolumeRays {\n  inputs 2\n  name FFX_VolumeRays2\n  label \"Mar 20 2005\"\n  xpos 653\n  ypos 1427\n  style \"Alpha Edges\"\n  blur_size 0\n  vol_pos {{\"parent.flarePos.x + parent.coreOffset.x\" i} {\"parent.flarePos.y + parent.coreOffset.y\" i}}\n  raylength 8\n  pre_blur 5.5\n  chk_flicker false\n  flicker_size 2\n  xform_flicker true\n  volume_end_color {0 0 0 0}\n  radial_size 400\n  chk_use_mask true\n }\nset Nb631f200 [stack 0]\npush $Nb631f200\n Sparkles {\n  inputs 0\n  mode Sparkles\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\"} {\"parent.flarePos.y + parent.coreOffsetSlider.h\"}}\n  size 1300\n  anamorphic 1.1\n  rotation {{(parent.flarePos.x/30)+100}}\n  ray_nb 600\n  ray_thick 1.45\n  spark_falloff 0\n  ray_falloff 10\n  brightness 0.12\n  chroma_shift 1.06\n  chroma_spread 0.16\n  motion 1000\n  fadeTolerance 0\n  broken_rays true\n  broken_affected 43\n  broken_start 0.12\n  random_broken_start true\n  broken_holes 0.15\n  random_broken_holes true\n  sparks_direction 4\n  sparks_angle 190\n  name Sparkles3\n  xpos 846\n  ypos 1246\n }\n Sparkles {\n  mode Sparkles\n  position {{\"parent.flarePos.x + parent.coreOffsetSlider.w\" i} {\"parent.flarePos.y + parent.coreOffsetSlider.h\" i}}\n  size 1300\n  anamorphic 1.1\n  rotation {{(parent.flarePos.x/30)+100 i}}\n  ray_nb 600\n  ray_thick 1.36\n  spark_falloff 0.16\n  ray_falloff 10\n  seed 90\n  chroma_shift 1.06\n  chroma_spread 0.16\n  broken_rays true\n  broken_affected 43\n  broken_start 0.12\n  random_broken_start true\n  broken_holes 0.15\n  random_broken_holes true\n  name Sparkles4\n  xpos 846\n  ypos 1292\n }\n VolumeRays {\n  name FFX_VolumeRays4\n  label \"Mar 20 2005\"\n  xpos 846\n  ypos 1351\n  blur_size 0\n  vol_pos {{\"parent.flarePos.x + parent.coreOffset.x\" i} {\"parent.flarePos.y + parent.coreOffset.y\" i}}\n  raylength 11\n  pre_blur 6\n  quality Low\n  chk_flicker false\n  flicker_size 2\n  xform_flicker true\n  volume_end_color {0 0 0 0}\n  radial_size 400\n }\n Merge2 {\n  inputs 2\n  operation mask\n  Achannels {rgba.red rgba.green rgba.blue rgba.red}\n  maskChannelMask none\n  name Merge282\n  xpos 846\n  ypos 1407\n }\n Merge2 {\n  inputs 2\n  operation geometric\n  maskChannelMask none\n  mix 0.5\n  name Merge283\n  xpos 846\n  ypos 1433\n }\n Grade {\n  multiply 2.65\n  maskChannelMask none\n  name Grade4\n  xpos 851\n  ypos 1471\n }\n Grade {\n  multiply {{parent.edgeShimmerColour.r i} {parent.edgeShimmerColour.g i} {parent.edgeShimmerColour.b i} 1}\n  name Grade3\n  xpos 846\n  ypos 1507\n }\n Saturation {\n  channels all\n  saturation 0\n  maskChannelMask none\n  name Saturation9\n  xpos 846\n  ypos 1551\n  disable {{parent.shimmerColour i}}\n }\n Grade {\n  multiply {{parent.edgeShimmerIntensity i}}\n  name Grade5\n  xpos 752\n  ypos 1557\n }\npush $Nb631f200\n Multiply {\n  value 0\n  name Multiply1\n  xpos 653\n  ypos 1473\n  disable {{!parent.edgeBloomDisable i}}\n }\n Multiply {\n  value {{parent.edgeBloomIntensity i}}\n  name Multiply2\n  xpos 653\n  ypos 1511\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge284\n  xpos 653\n  ypos 1557\n  disable {{parent.edgeShimmerDisable}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  maskChannelMask none\n  name Merge225\n  xpos 653\n  ypos 1869\n }\n Dot {\n  name Dot34\n  xpos 687\n  ypos 1921\n }\npush $Nb6421d00\n Multiply {\n  value {{parent.edgeBloomIntensity}}\n  name Multiply3\n  xpos 375\n  ypos 1901\n }\n Merge2 {\n  inputs 2\n  operation screen\n  maskChannelMask none\n  name Merge224\n  xpos 375\n  ypos 1945\n }\n Dot {\n  name Dot12\n  xpos 409\n  ypos 2034\n }\n Dot {\n  name Dot41\n  xpos 707\n  ypos 2034\n }\nset Nb60ca800 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation3\n  xpos 674\n  ypos 2080\n }\npush $Nb60ca800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy5\n  xpos 845\n  ypos 2025\n }\npush $Nd50e1000\n Input {\n  inputs 0\n  name backplate\n  xpos 1009\n  ypos 247\n }\n Dot {\n  name Dot66\n  xpos 1043\n  ypos 770\n }\nset Nb60c9800 [stack 0]\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.coreMix}}\n  name lens_core_enabler\n  xpos 1009\n  ypos 1084\n  disable {{parent.coreDisable}}\n }\n Dot {\n  name Dot7\n  xpos 1043\n  ypos 1361\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name dynamic_FX\n  xpos 1009\n  ypos 2031\n }\n Merge2 {\n  inputs 2\n  name mask_preview\n  xpos 1009\n  ypos 2197\n  disable {{!parent.previewEdgeArea}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix {{parent.coreCoronaMix}}\n  name Merge2\n  xpos 1009\n  ypos 3431\n  disable {{parent.coreCoronaDisable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.coronaExtraMix}}\n  name Core_Corona_Plus\n  xpos 1009\n  ypos 4604\n  disable {{!parent.coronaExtraEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.anomalyMix}}\n  name Anomolies_Plus\n  xpos 1009\n  ypos 5722\n  disable {{!parent.lensAnomalyEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.lensPieceMainMix}}\n  name lens_pieces_merge\n  xpos 1009\n  ypos 7005\n  disable {{!parent.lensPieceMainEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.lensPieceBigMix}}\n  name big_pieces_merge\n  xpos 1009\n  ypos 7953\n  disable {{!parent.lensPieceBigEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.lensPieceRingsMix}}\n  name rings_merge\n  xpos 1009\n  ypos 8865\n  disable {{!parent.lensPieceRingsEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.lensPieceLinesMix}}\n  name lines_merge\n  xpos 1009\n  ypos 11952\n  disable {{!parent.lensPieceLinesEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  maskChannelMask none\n  mix {{parent.coreRaysMix}}\n  name core_rays\n  xpos 1009\n  ypos 13409\n  disable {{!parent.coreRaysEnable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix {{parent.coreDogschidtMix}}\n  name Merge7\n  xpos 1009\n  ypos 14776\n  disable {{parent.dogSchidtControl}}\n }\n Merge2 {\n  inputs 2+1\n  operation plus\n  mix {{0.2*parent.centerFrameBloomMix}}\n  name Merge1\n  xpos 1009\n  ypos 16289\n  disable {{parent.centerFrameBloomDisable}}\n }\n Merge2 {\n  inputs 2\n  name center_mask_preview\n  xpos 1009\n  ypos 16355\n  disable {{!parent.previewCenterSelection}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.lensDirtMix}}\n  name Merge8\n  xpos 1009\n  ypos 16720\n  disable {{!parent.lensDirtEnable}}\n }\n Merge2 {\n  inputs 2\n  name Merge16\n  xpos 1009\n  ypos 16773\n  disable {{!parent.lensDirtRangePreview}}\n }\n Dot {\n  name Dot67\n  xpos 1043\n  ypos 17088\n }\nset Nb6068c00 [stack 0]\npush $Nb60c9800\n Dot {\n  name Dot77\n  xpos 3709\n  ypos 770\n }\n Dot {\n  name Dot76\n  xpos 3709\n  ypos 16963\n }\nset Nb6068400 [stack 0]\n Dot {\n  name Dot78\n  xpos 1424\n  ypos 16963\n }\n Switch {\n  inputs 2\n  which {{parent.ghostCalc}}\n  name Switch7\n  xpos 1390\n  ypos 17084\n }\n Reformat {\n  type scale\n  scale {{parent.frameGhostQuality}}\n  name Reformat6\n  xpos 1390\n  ypos 17118\n }\n Crop {\n  box {0 0 {\"root.width * parent.frameGhostQuality\"} {\"parent.frameGhostQuality * root.height\"}}\n  reformat true\n  crop false\n  name Crop6\n  xpos 1390\n  ypos 17155\n }\nset Nb600f000 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.frameGhostSelection} 1 1 1}\n  name Keyer1\n  xpos 1500\n  ypos 17149\n }\n Premult {\n  name Premult1\n  xpos 1500\n  ypos 17215\n }\n Grade {\n  channels all\n  multiply {{\"1 - parent.frameGhostGamma\"}}\n  white_clamp true\n  name Grade25\n  xpos 1500\n  ypos 17259\n }\nset Nb600e400 [stack 0]\n Dot {\n  name Dot81\n  xpos 1242\n  ypos 17269\n }\nset Nb600e000 [stack 0]\n Saturation {\n  channels all\n  saturation 0\n  name Saturation14\n  xpos 1124\n  ypos 17314\n }\npush $Nb600e000\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  from1 rgba.alpha\n  to1 rgba.green\n  from2 rgba.alpha\n  to2 rgba.blue\n  name Copy16\n  xpos 1208\n  ypos 17394\n }\n Shuffle {\n  alpha white\n  name Shuffle17\n  xpos 1208\n  ypos 17499\n }\n Reformat {\n  name Reformat7\n  xpos 1208\n  ypos 17544\n }\n Dot {\n  name Dot80\n  xpos 1242\n  ypos 20532\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Constant3\n  xpos 2330\n  ypos 17351\n }\n Dot {\n  name Dot70\n  xpos 2364\n  ypos 17569\n }\nset Nb5fbfc00 [stack 0]\n Dot {\n  name Dot88\n  xpos 2364\n  ypos 18182\n }\nset Nb5fbf800 [stack 0]\n Dot {\n  name Dot69\n  xpos 2364\n  ypos 18246\n }\nset Nb5fbf400 [stack 0]\n Dot {\n  name Dot106\n  xpos 2364\n  ypos 19061\n }\nset Nb5fbf000 [stack 0]\n Dot {\n  name Dot92\n  xpos 2364\n  ypos 19812\n }\npush $Nb600f000\n SphericalTransform {\n  fix true\n  name SphericalTransform1\n  xpos 1390\n  ypos 17207\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  resize distort\n  name Reformat3\n  xpos 1390\n  ypos 17294\n }\n Shuffle {\n  alpha white\n  name Shuffle16\n  xpos 1390\n  ypos 17354\n }\n Dot {\n  name Dot68\n  xpos 1424\n  ypos 17424\n }\nset Nb5fbd800 [stack 0]\n Dot {\n  name Dot86\n  xpos 1424\n  ypos 18149\n }\nset Nb5fbd400 [stack 0]\n Dot {\n  name Dot102\n  xpos 1424\n  ypos 18916\n }\nset Nb5fbd000 [stack 0]\n Dot {\n  name Dot103\n  xpos 1424\n  ypos 19667\n }\n Grade {\n  gamma {{parent.frameGhostFlare4ReflGamma} {parent.frameGhostFlare4ReflGamma} {parent.frameGhostFlare4ReflGamma} {parent.frameGhostFlare4ReflGamma}}\n  name Grade32\n  xpos 1733\n  ypos 19663\n }\n Transform {\n  rotate {{parent.frameGhostFlare4ReflRotation}}\n  center {128 128}\n  name Transform31\n  xpos 1733\n  ypos 19710\n }\n Blur {\n  size {{parent.frameGhostFlare4ReflBlur}}\n  name Blur24\n  xpos 1733\n  ypos 19751\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Constant8\n  xpos 2013\n  ypos 17018\n }\nset Nb5f77800 [stack 0]\n Flare {\n  position {128 128}\n  radius {80 100 118.54}\n  inner_color 1\n  outer_falloff 0.1\n  inner_falloff 0.76\n  flattening 1\n  sharpness 0.98\n  corners_angle 18\n  name Flare13\n  xpos 2453\n  ypos 17123\n  disable {{parent.Merge45.disable}}\n }\nset Nb5f77400 [stack 0]\npush $Nb5f77800\n Flare {\n  position {128 128}\n  radius {80 100 118.54}\n  inner_color 1\n  outer_falloff 0.1\n  inner_falloff 0.76\n  corners 10\n  flattening 1\n  sharpness 0.98\n  corners_angle 18\n  name Flare17\n  xpos 2343\n  ypos 17123\n  disable {{parent.Merge45.disable}}\n }\nset Nb5f76c00 [stack 0]\npush $Nb5f77800\n Flare {\n  position {128 128}\n  radius {80 100 118.54}\n  inner_color 1\n  outer_falloff 0.1\n  inner_falloff 0.76\n  corners 8\n  flattening 1\n  sharpness 0.98\n  corners_angle 18\n  name Flare16\n  xpos 2233\n  ypos 17123\n  disable {{parent.Merge45.disable}}\n }\nset Nb5f76400 [stack 0]\npush $Nb5f77800\n Flare {\n  position {128 128}\n  radius {80 100 118.54}\n  inner_color 1\n  outer_falloff 0.1\n  inner_falloff 0.76\n  corners 7\n  flattening 1\n  sharpness 0.98\n  corners_angle 18\n  name Flare15\n  xpos 2123\n  ypos 17123\n  disable {{parent.Merge45.disable}}\n }\nset Nb5f75c00 [stack 0]\npush $Nb5f77800\n Flare {\n  position {128 128}\n  radius {80 100 118.54}\n  inner_color 1\n  outer_falloff 0.1\n  inner_falloff 0.76\n  corners 6\n  flattening 1\n  sharpness 0.98\n  corners_angle 18\n  name Flare14\n  xpos 2013\n  ypos 17123\n  disable {{parent.Merge45.disable}}\n }\nset Nb5f75400 [stack 0]\n Switch {\n  inputs 5\n  which {{parent.frameGhostFlare4Shape}}\n  name Switch11\n  xpos 1930\n  ypos 19556\n }\n Transform {\n  rotate {{parent.frameGhostFlare4DiaphragmRot}}\n  scale {{\"parent.frameGhostFlare4DiaphragmSize + 0.001\"}}\n  center {128 128}\n  name Transform40\n  xpos 1930\n  ypos 19608\n }\nset Nb5f74c00 [stack 0]\n Noise {\n  replace true\n  maskChannelInput rgba.red\n  size 280\n  gain {{parent.frameGhostFlare4Noise}}\n  center {960 540}\n  name Noise14\n  xpos 2052\n  ypos 19642\n }\npush $Nb5f74c00\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{\"parent.frameGhostFlare4NoiseOpac * parent.frameGhostNoiseMult\"}}\n  name Merge68\n  xpos 1930\n  ypos 19648\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  name Merge69\n  xpos 1930\n  ypos 19751\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge70\n  xpos 1930\n  ypos 19808\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Reformat15\n  xpos 1930\n  ypos 19848\n }\n Dot {\n  name Dot97\n  xpos 1964\n  ypos 19907\n }\n Dot {\n  name Dot98\n  xpos 1869\n  ypos 19907\n }\n Reformat {\n  type scale\n  scale {{\"(parent.frameGhostQuality * parent.frameGhostFlare4Size.w) + 0.01\"} {\"(parent.frameGhostQuality * parent.frameGhostFlare4Size.h) + 0.01\"}}\n  name Reformat16\n  xpos 1835\n  ypos 19945\n }\npush $Nb600e400\n Dot {\n  name Dot74\n  xpos 1534\n  ypos 17704\n }\nset Nb5ef1c00 [stack 0]\n Dot {\n  name Dot87\n  xpos 1534\n  ypos 18429\n }\nset Nb5ef1800 [stack 0]\n Dot {\n  name Dot104\n  xpos 1534\n  ypos 19196\n }\nset Nb5ef1400 [stack 0]\n Dot {\n  name Dot105\n  xpos 1534\n  ypos 19947\n }\n Transform {\n  scale {{parent.frameGhostFlare4PosOffset}}\n  center {{\"root.width/2 * parent.frameGhostQuality\"} {\"root.height/2 * parent.frameGhostQuality\"}}\n  name Transform41\n  xpos 1728\n  ypos 19943\n }\n Dot {\n  name Dot99\n  xpos 1762\n  ypos 20002\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens4\n  xpos 1835\n  ypos 19998\n  disable {{parent.Merge45.disable}}\n }\n Grade {\n  multiply {{parent.frameGhostFlare4Colour} {parent.frameGhostFlare4Colour} {parent.frameGhostFlare4Colour} {parent.frameGhostFlare4Colour}}\n  name Grade33\n  xpos 1835\n  ypos 20044\n }\n Blur {\n  size {{parent.frameGhostFlare4Blur}}\n  name Blur26\n  xpos 1835\n  ypos 20087\n }\n Dot {\n  name Dot101\n  xpos 1869\n  ypos 20240\n }\n Reformat {\n  name Reformat18\n  xpos 2021\n  ypos 20236\n }\npush $Nb5fbf000\npush $Nb5fbd000\n Grade {\n  gamma {{parent.frameGhostFlare3ReflGamma} {parent.frameGhostFlare3ReflGamma} {parent.frameGhostFlare3ReflGamma} {parent.frameGhostFlare3ReflGamma}}\n  name Grade30\n  xpos 1732\n  ypos 18912\n }\n Transform {\n  rotate {{parent.frameGhostFlare3ReflRotation}}\n  center {128 128}\n  name Transform21\n  xpos 1732\n  ypos 18959\n }\n Blur {\n  size {{parent.frameGhostFlare3ReflBlur}}\n  name Blur22\n  xpos 1732\n  ypos 19000\n }\npush $Nb5f77400\npush $Nb5f76c00\npush $Nb5f76400\npush $Nb5f75c00\npush $Nb5f75400\n Switch {\n  inputs 5\n  which {{parent.frameGhostFlare3Shape}}\n  name Switch10\n  xpos 1929\n  ypos 18805\n }\n Transform {\n  rotate {{parent.frameGhostFlare3DiaphragmRot}}\n  scale {{\"parent.frameGhostFlare3DiaphragmSize + 0.001\"}}\n  center {128 128}\n  name Transform22\n  xpos 1929\n  ypos 18857\n }\nset Nb5eb5c00 [stack 0]\n Noise {\n  replace true\n  maskChannelInput rgba.red\n  size 280\n  gain {{parent.frameGhostFlare3Noise}}\n  center {960 540}\n  name Noise12\n  xpos 2051\n  ypos 18891\n }\npush $Nb5eb5c00\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{\"parent.frameGhostFlare3NoiseOpac * parent.frameGhostNoiseMult\"}}\n  name Merge64\n  xpos 1929\n  ypos 18897\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  name Merge65\n  xpos 1929\n  ypos 19000\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge66\n  xpos 1929\n  ypos 19057\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Reformat13\n  xpos 1929\n  ypos 19097\n }\n Dot {\n  name Dot93\n  xpos 1963\n  ypos 19156\n }\n Dot {\n  name Dot94\n  xpos 1868\n  ypos 19156\n }\n Reformat {\n  type scale\n  scale {{\"(parent.frameGhostQuality * parent.frameGhostFlare3Size.w) + 0.01\"} {\"(parent.frameGhostQuality * parent.frameGhostFlare3Size.h) + 0.01\"}}\n  name Reformat14\n  xpos 1834\n  ypos 19194\n }\npush $Nb5ef1400\n Transform {\n  scale {{parent.frameGhostFlare3PosOffset}}\n  center {{\"root.width/2 * parent.frameGhostQuality\"} {\"root.height/2 * parent.frameGhostQuality\"}}\n  name Transform23\n  xpos 1727\n  ypos 19192\n }\n Dot {\n  name Dot95\n  xpos 1761\n  ypos 19251\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens3\n  xpos 1834\n  ypos 19247\n  disable {{parent.Merge45.disable}}\n }\n Grade {\n  multiply {{parent.frameGhostFlare3Colour} {parent.frameGhostFlare3Colour} {parent.frameGhostFlare3Colour} {parent.frameGhostFlare3Colour}}\n  name Grade31\n  xpos 1834\n  ypos 19293\n }\n Blur {\n  size {{parent.frameGhostFlare3Blur}}\n  name Blur23\n  xpos 1834\n  ypos 19336\n }\n Dot {\n  name Dot100\n  xpos 1868\n  ypos 19431\n }\n Reformat {\n  name Reformat17\n  xpos 2020\n  ypos 19427\n }\npush $Nb5fbf800\n Dot {\n  name Dot91\n  xpos 2090\n  ypos 18182\n }\n Noise {\n  size 19.5\n  zoffset 1.6\n  lacunarity 1.08\n  gain 0.116\n  gamma 1\n  center {128 128}\n  name Noise9\n  xpos 2056\n  ypos 18243\n }\npush $Nb5fbf400\n Flare {\n  position {128 128}\n  radius {11.29 88.3 159.47}\n  size_mult 0.79\n  ring_color 0.88\n  inner_color 0.46\n  outer_falloff 0.66\n  inner_falloff 1.3\n  name Flare18\n  xpos 2153\n  ypos 18242\n  disable {{parent.Merge45.disable}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix 0.725\n  name Merge56\n  xpos 2153\n  ypos 18290\n }\npush $Nb5fbd400\n Grade {\n  gamma {{parent.frameGhostFlare2ReflGamma} {parent.frameGhostFlare2ReflGamma} {parent.frameGhostFlare2ReflGamma} {parent.frameGhostFlare2ReflGamma}}\n  name Grade27\n  xpos 1732\n  ypos 18145\n }\n Transform {\n  rotate {{parent.frameGhostFlare2ReflRotation}}\n  center {128 128}\n  name Transform18\n  xpos 1732\n  ypos 18192\n }\n Blur {\n  size {{parent.frameGhostFlare2ReflBlur}}\n  name Blur18\n  xpos 1732\n  ypos 18233\n }\npush $Nb5f77400\npush $Nb5f76c00\npush $Nb5f76400\npush $Nb5f75c00\npush $Nb5f75400\n Switch {\n  inputs 5\n  which {{parent.frameGhostFlare2Shape}}\n  name Switch9\n  xpos 1929\n  ypos 18038\n }\n Transform {\n  rotate {{parent.frameGhostFlare2DiaphragmRot}}\n  scale {{\"parent.frameGhostFlare2DiaphragmSize + 0.001\"}}\n  center {128 128}\n  name Transform19\n  xpos 1929\n  ypos 18090\n }\nset Nb5dea800 [stack 0]\n Noise {\n  replace true\n  maskChannelInput rgba.red\n  size 280\n  gain {{parent.frameGhostFlare2Noise}}\n  center {960 540}\n  name Noise6\n  xpos 2051\n  ypos 18124\n }\npush $Nb5dea800\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{\"parent.frameGhostFlare2NoiseOpac * parent.frameGhostNoiseMult\"}}\n  name Merge44\n  xpos 1929\n  ypos 18130\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  name Merge46\n  xpos 1929\n  ypos 18233\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge50\n  xpos 1929\n  ypos 18290\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Reformat9\n  xpos 1929\n  ypos 18330\n }\n Dot {\n  name Dot83\n  xpos 1963\n  ypos 18389\n }\n Dot {\n  name Dot84\n  xpos 1868\n  ypos 18389\n }\n Reformat {\n  type scale\n  scale {{\"(parent.frameGhostQuality * parent.frameGhostFlare2Size.w) + 0.01\"} {\"(parent.frameGhostQuality * parent.frameGhostFlare2Size.h) + 0.01\"}}\n  name Reformat10\n  xpos 1834\n  ypos 18427\n }\npush $Nb5ef1800\n Transform {\n  scale {{parent.frameGhostFlare2PosOffset}}\n  center {{\"root.width/2 * parent.frameGhostQuality\"} {\"root.height/2 * parent.frameGhostQuality\"}}\n  name Transform20\n  xpos 1727\n  ypos 18425\n }\n Dot {\n  name Dot85\n  xpos 1761\n  ypos 18484\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens2\n  xpos 1834\n  ypos 18480\n  disable {{parent.Merge45.disable}}\n }\n Grade {\n  multiply {{parent.frameGhostFlare2Colour} {parent.frameGhostFlare2Colour} {parent.frameGhostFlare2Colour} {parent.frameGhostFlare2Colour}}\n  name Grade29\n  xpos 1834\n  ypos 18526\n }\n Blur {\n  size {{parent.frameGhostFlare2Blur}}\n  name Blur19\n  xpos 1834\n  ypos 18569\n }\n Dot {\n  name Dot90\n  xpos 1868\n  ypos 18678\n }\n Reformat {\n  name Reformat12\n  xpos 2020\n  ypos 18674\n }\npush $Nb5fbfc00\n Flare {\n  position {128 128}\n  radius {11.29 88.3 159.47}\n  size_mult 0.79\n  ring_color 0.88\n  inner_color 0.46\n  outer_falloff 0.66\n  inner_falloff 1.3\n  name Flare8\n  xpos 2185\n  ypos 17565\n  disable {{parent.Merge45.disable}}\n }\npush $Nb5fbd800\n Grade {\n  gamma {{parent.frameGhostFlare1ReflGamma} {parent.frameGhostFlare1ReflGamma} {parent.frameGhostFlare1ReflGamma} {parent.frameGhostFlare1ReflGamma}}\n  name Grade24\n  xpos 1734\n  ypos 17420\n }\n Transform {\n  rotate {{parent.frameGhostFlare1ReflRotation}}\n  center {128 128}\n  name Transform5\n  xpos 1734\n  ypos 17467\n }\n Blur {\n  size {{parent.frameGhostFlare1ReflBlur}}\n  name Blur14\n  xpos 1734\n  ypos 17508\n }\npush $Nb5f76c00\npush $Nb5f76400\npush $Nb5f75c00\npush $Nb5f75400\npush $Nb5f77400\n Switch {\n  inputs 5\n  which {{parent.frameGhostFlare1Shape}}\n  name Switch8\n  xpos 1931\n  ypos 17313\n }\n Transform {\n  rotate {{parent.frameGhostFlare1DiaphragmRot}}\n  scale {{\"parent.frameGhostFlare1DiaphragmSize + 0.001\"}}\n  center {128 128}\n  name Transform9\n  xpos 1931\n  ypos 17365\n }\nset Nb5d84400 [stack 0]\n Noise {\n  replace true\n  maskChannelInput rgba.red\n  size 280\n  gain {{parent.frameGhostFlare1Noise}}\n  center {960 540}\n  name Noise4\n  xpos 2053\n  ypos 17399\n }\npush $Nb5d84400\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{\"parent.frameGhostFlare1NoiseOpac * parent.frameGhostNoiseMult\"}}\n  name Merge43\n  xpos 1931\n  ypos 17405\n }\n Merge2 {\n  inputs 2\n  output rgb\n  maskChannelInput rgba.red\n  name Merge41\n  xpos 1931\n  ypos 17508\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge42\n  xpos 1931\n  ypos 17565\n }\n Reformat {\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Reformat4\n  xpos 1931\n  ypos 17605\n }\n Dot {\n  name Dot71\n  xpos 1965\n  ypos 17664\n }\n Dot {\n  name Dot72\n  xpos 1870\n  ypos 17664\n }\n Reformat {\n  type scale\n  scale {{\"(parent.frameGhostQuality * parent.frameGhostFlare1Size.w) + 0.01\"} {\"(parent.frameGhostQuality * parent.frameGhostFlare1Size.h) + 0.01\"}}\n  name Reformat5\n  xpos 1836\n  ypos 17702\n }\npush $Nb5ef1c00\n Transform {\n  scale {{parent.frameGhostFlare1PosOffset}}\n  center {{\"root.width/2 * parent.frameGhostQuality\"} {\"root.height/2 * parent.frameGhostQuality\"}}\n  name Transform13\n  xpos 1729\n  ypos 17700\n }\n Dot {\n  name Dot73\n  xpos 1763\n  ypos 17759\n }\n Convolve {\n  inputs 2\n  channels rgb\n  name _convolveLens1\n  xpos 1836\n  ypos 17755\n  disable {{parent.Merge45.disable}}\n }\n Grade {\n  multiply {{parent.frameGhostFlare1Colour} {parent.frameGhostFlare1Colour} {parent.frameGhostFlare1Colour} {parent.frameGhostFlare1Colour}}\n  name Grade26\n  xpos 1836\n  ypos 17801\n }\n Blur {\n  size {{parent.frameGhostFlare1Blur}}\n  name Blur16\n  xpos 1836\n  ypos 17844\n }\n Dot {\n  name Dot89\n  xpos 1870\n  ypos 17909\n }\n Reformat {\n  name Reformat11\n  xpos 2091\n  ypos 17905\n }\n Constant {\n  inputs 0\n  channels rgb\n  name Constant9\n  xpos 2442\n  ypos 17739\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.frameGhostFlare1Mix}}\n  name Merge55\n  xpos 2442\n  ypos 17905\n  disable {{!parent.frameGhostFlare1Enable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.frameGhostFlare2Mix}}\n  name Merge54\n  xpos 2442\n  ypos 18674\n  disable {{!parent.frameGhostFlare2Enable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.frameGhostFlare3Mix}}\n  name Merge71\n  xpos 2442\n  ypos 19427\n  disable {{!parent.frameGhostFlare3Enable}}\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.frameGhostFlare4Mix}}\n  name Merge72\n  xpos 2443\n  ypos 20236\n  disable {{!parent.frameGhostFlare4Enable}}\n }\n Dot {\n  name Dot82\n  xpos 2477\n  ypos 20459\n }\n Reformat {\n  name Reformat8\n  xpos 1707\n  ypos 20455\n }\n Saturation {\n  saturation {{parent.frameGhostSat}}\n  name Saturation15\n  xpos 1554\n  ypos 20455\n }\n Blur {\n  size {{parent.frameGhostBlur}}\n  name Blur17\n  xpos 1444\n  ypos 20449\n }\n Grade {\n  multiply {{parent.frameGhostOverallColour.r} {parent.frameGhostOverallColour.g} {parent.frameGhostOverallColour.b} 1}\n  name Grade34\n  xpos 1323\n  ypos 20455\n }\npush $Nb6068c00\n Grade {\n  multiply {{\"parent.frameGhostPreview == 1 ? 0 : 1\"}}\n  name Grade28\n  xpos 1009\n  ypos 17327\n }\n Merge2 {\n  inputs 2\n  operation screen\n  mix {{parent.frameGhostMix}}\n  name Merge45\n  xpos 1010\n  ypos 20455\n  disable {{!parent.frameGhostEnable}}\n }\n Merge2 {\n  inputs 2\n  operation atop\n  name Merge40\n  xpos 1010\n  ypos 20528\n  disable {{!parent.frameGhostSelectionPreview}}\n }\n Dot {\n  name Dot159\n  xpos 1044\n  ypos 20787\n }\nset Nb5c4f400 [stack 0]\n Dot {\n  name Dot162\n  xpos 1211\n  ypos 20787\n }\n Dot {\n  name Dot163\n  xpos 1211\n  ypos 20830\n }\npush $Nb6068400\n Dot {\n  name Dot161\n  xpos 3709\n  ypos 20787\n }\n Dot {\n  name Dot160\n  xpos 1296\n  ypos 20787\n }\n Switch {\n  inputs 2\n  which {{parent.bloomType}}\n  name Switch12\n  xpos 1262\n  ypos 20826\n }\n Dot {\n  name Dot176\n  xpos 1296\n  ypos 20871\n }\nset Nb5c4e000 [stack 0]\n Dot {\n  name Dot177\n  xpos 1655\n  ypos 20871\n }\n Grade {\n  blackpoint 0.03\n  name Grade106\n  xpos 1621\n  ypos 20907\n }\n Saturation {\n  saturation 0.34\n  name Saturation37\n  xpos 1621\n  ypos 20939\n }\nset Nb5c4d400 [stack 0]\n Dot {\n  name Dot179\n  xpos 1743\n  ypos 20943\n }\n Glow2 {\n  tolerance {{parent.bloomTolerance}}\n  effect_only true\n  size {0 {\"(parent.bloomAmount + 1) \"}}\n  name Glow41\n  xpos 1709\n  ypos 20985\n }\npush $Nb5c4d400\n Glow2 {\n  tolerance {{parent.bloomTolerance}}\n  effect_only true\n  size {{\"(parent.bloomAmount + 1) \"} 0}\n  name Glow39\n  xpos 1621\n  ypos 20984\n }\n Merge2 {\n  inputs 2\n  operation screen\n  name Merge335\n  xpos 1621\n  ypos 21028\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{parent.bloomNoiseAmount}}\n  name Merge336\n  xpos 1621\n  ypos 21086\n  disable {{!parent.bloomNoiseEnable}}\n }\n Shuffle {\n  alpha white\n  name Shuffle48\n  xpos 1621\n  ypos 21138\n }\nset Nb5beb800 [stack 0]\n Dot {\n  name Dot175\n  xpos 1655\n  ypos 21257\n }\npush $N884f1c00\npush $Nb5c4e000\n Dot {\n  name Dot165\n  xpos 1296\n  ypos 20912\n }\nset Nb5beb000 [stack 0]\n Dot {\n  name Dot164\n  xpos 1409\n  ypos 20912\n }\n Glow2 {\n  tolerance {{parent.bloomTolerance}}\n  effect_only true\n  size {{\"parent.Glow16.size * parent.bloomRatio\"}}\n  name Glow17\n  xpos 1375\n  ypos 20952\n }\npush $Nb5beb000\n Glow2 {\n  tolerance {{parent.bloomTolerance}}\n  effect_only true\n  size {{\"(parent.bloomAmount + 1) * 10\"}}\n  name Glow16\n  xpos 1262\n  ypos 20951\n }\n Dot {\n  name Dot166\n  xpos 1296\n  ypos 21010\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge321\n  xpos 1375\n  ypos 21006\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{parent.bloomNoiseAmount}}\n  name Merge322\n  xpos 1375\n  ypos 21086\n  disable {{!parent.bloomNoiseEnable}}\n }\nset Nb5be9800 [stack 0]\n Dot {\n  name Dot172\n  xpos 1293\n  ypos 21090\n }\n Shuffle {\n  alpha white\n  name Shuffle44\n  xpos 1259\n  ypos 21230\n }\n Switch {\n  inputs 2\n  which {{parent.bloomTypeAlt}}\n  name Switch15\n  xpos 1259\n  ypos 21298\n }\npush $Nb5beb000\n Dot {\n  name Dot168\n  xpos 1186\n  ypos 20912\n }\n Grade {\n  blackpoint {{parent.bloomTolerance}}\n  white_clamp true\n  name Grade104\n  xpos 1152\n  ypos 20950\n }\n Shuffle {\n  alpha white\n  name Shuffle40\n  xpos 1152\n  ypos 20983\n }\n Dot {\n  name Dot169\n  xpos 1186\n  ypos 21033\n }\n Shuffle {\n  alpha white\n  name Shuffle43\n  xpos 1152\n  ypos 21221\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0 0 1}\n  name Constant17\n  xpos 1387\n  ypos 21315\n }\n Dot {\n  name Dot173\n  xpos 1421\n  ypos 21403\n }\n Switch {\n  inputs 3\n  which {{parent.bloomPreview}}\n  name Switch13\n  xpos 1152\n  ypos 21399\n }\n Dot {\n  name Dot170\n  xpos 1186\n  ypos 21475\n }\npush $Nb5beb800\npush $Nb5be9800\n Shuffle {\n  alpha white\n  name Shuffle41\n  xpos 1375\n  ypos 21132\n }\n Switch {\n  inputs 2\n  which {{parent.bloomTypeAlt}}\n  name Switch16\n  xpos 1375\n  ypos 21204\n }\n Dot {\n  name Dot171\n  xpos 1409\n  ypos 21262\n }\npush $Nb5c4f400\n Merge2 {\n  inputs 2\n  operation plus\n  mix {{parent.bloomStrength}}\n  name Merge325\n  xpos 1010\n  ypos 21258\n  disable {{!parent.bloomEnable}}\n }\n Merge2 {\n  inputs 2\n  name Merge323\n  xpos 1010\n  ypos 21471\n }\n Grade {\n  multiply {{\"\\[value parent.result]\"}}\n  name Grade103\n  xpos 1010\n  ypos 21518\n  disable {{!parent.enable_animation}}\n }\n LensDistortion {\n  serializeKnob \"\"\n  serialiseKnob \"22 serialization::archive 16 0 0 0 0 0 0 0 0 0 0 0 0\"\n  distortion1 {{parent.lensFXDistortionAmount}}\n  distortion2 {{parent.lensFXDistortionAmount2}}\n  cardScale {1.055947661 1.055947661 1}\n  a -0.2370844334\n  b 0.1978171021\n  c 0.01917515695\n  name LensDistortion1\n  xpos 1010\n  ypos 21681\n  disable {{!parent.lensDistortionEnable}}\n }\n Blur {\n  inputs 1+1\n  size {{parent.edgeBlurAmount}}\n  name Blur6\n  xpos 1010\n  ypos 21737\n  disable {{!parent.edgeBlurEnable}}\n }\n Merge2 {\n  inputs 2\n  name Merge19\n  xpos 1010\n  ypos 21852\n  disable {{!parent.previewEdgeBlur}}\n }\n Dot {\n  name Dot14\n  xpos 1044\n  ypos 21897\n }\nset Nb5b88800 [stack 0]\n Dot {\n  name Dot28\n  xpos 1167\n  ypos 21897\n }\nset Nb5b88400 [stack 0]\n Dot {\n  name Dot29\n  xpos 1279\n  ypos 21897\n }\nset Nb5b23c00 [stack 0]\n Dot {\n  name Dot30\n  xpos 1389\n  ypos 21897\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name Shuffle10\n  xpos 1355\n  ypos 21953\n }\n Transform {\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  center {960 540}\n  name Transform_B\n  xpos 1355\n  ypos 22020\n  disable {{\"!parent.chromaB +!parent.lensChromaEnable\"}}\n }\n Dot {\n  name Dot32\n  xpos 1389\n  ypos 22122\n }\npush $Nb5b23c00\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name Shuffle6\n  xpos 1245\n  ypos 21953\n }\n Transform {\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  center {960 540}\n  name Transform_G\n  xpos 1245\n  ypos 22020\n  disable {{\"!parent.chromaG +!parent.lensChromaEnable\"}}\n }\n Dot {\n  name Dot31\n  xpos 1279\n  ypos 22074\n }\npush $Nb5b88400\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name Shuffle4\n  xpos 1133\n  ypos 21954\n }\n Transform {\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  center {960 540}\n  name Transform_R\n  xpos 1133\n  ypos 22021\n  disable {{\"!parent.chromaR +!parent.lensChromaEnable\"}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge17\n  xpos 1133\n  ypos 22070\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge18\n  xpos 1133\n  ypos 22118\n }\n Dot {\n  name Dot35\n  xpos 1167\n  ypos 22182\n }\npush $Nb5b88800\n GodRays {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  name GodRays1\n  xpos 1010\n  ypos 21983\n  disable {{\"!parent.chromaR +!parent.lensChromaEnable\"}}\n }\n GodRays {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  name GodRays2\n  xpos 1010\n  ypos 22032\n  disable {{\"!parent.chromaG +!parent.lensChromaEnable\"}}\n }\n GodRays {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  scale {{\"1 + parent.chromaShiftAmountSlider\"}}\n  name GodRays3\n  xpos 1010\n  ypos 22073\n  disable {{\"!parent.chromaB +!parent.lensChromaEnable\"}}\n }\n Switch {\n  inputs 2\n  which {{parent.chromaShiftType}}\n  name Switch5\n  xpos 1010\n  ypos 22178\n }\n Grade {\n  inputs 1+1\n  multiply {{\"1 - parent.vignettingAmountSlider\"}}\n  name Grade19\n  xpos 1010\n  ypos 22253\n  disable {{!parent.vignettingEnable}}\n }\n Merge2 {\n  inputs 2\n  name Merge21\n  xpos 1010\n  ypos 22362\n  disable {{!parent.vignettingRegionPreview}}\n }\n Shuffle {\n  name Shuffle3\n  xpos 1010\n  ypos 22408\n }\n Dot {\n  name Dot79\n  xpos 1044\n  ypos 22612\n }\nset Nb5acec00 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation6\n  xpos 907\n  ypos 22608\n }\npush $Nb5acec00\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy3\n  xpos 1010\n  ypos 22671\n }\n Crop {\n  box {0 0 {root.width} {root.height}}\n  crop false\n  name Crop2\n  xpos 1010\n  ypos 22840\n }\n Reformat {\n  format {{{parent.backdropConstant.format}}}\n  name Reformat1\n  xpos 1010\n  ypos 22888\n }\n Output {\n  name result\n  xpos 1010\n  ypos 22974\n }\npush $N8fe56800\npush $N8fe56000\n VolumeRays {\n  inputs 2\n  name VolumeRays1\n  label \"Mar 20 2005\"\n  xpos 605\n  ypos 16148\n  vol_pos {{parent.flarePos.x} {parent.flarePos.y}}\n  quality Low\n  chk_flicker false\n  volume_end_color {0 0 0 0}\n  radial_size 400\n }\n StickyNote {\n  inputs 0\n  name StickyNote30\n  label \"Chopped Lines #1\"\n  xpos -2868\n  ypos 9684\n }\n StickyNote {\n  inputs 0\n  name StickyNote31\n  label \"Chopped Lines #1\"\n  xpos -3160\n  ypos 10456\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"Chopped Lines #1\"\n  xpos -1501\n  ypos 9377\n }\npush $N8d12ec00\n Viewer {\n  frame_range 0-191\n  fps 25\n  name Viewer1\n  selected true\n  xpos -706\n  ypos 14548\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LightSwitch.gizmo",
    "content": "add_layer {LG01 LG01.red LG01.green LG01.blue LG01.alpha}\nadd_layer {LG02 LG02.red LG02.green LG02.blue LG02.alpha}\nadd_layer {LG03 LG03.red LG03.green LG03.blue LG03.alpha}\nadd_layer {LG04 LG04.red LG04.green LG04.blue LG04.alpha}\nadd_layer {LG05 LG05.red LG05.green LG05.blue LG05.alpha}\nadd_layer {LG06 LG06.red LG06.green LG06.blue LG06.alpha}\nadd_layer {LG07 LG07.red LG07.green LG07.blue LG07.alpha}\nGroup {\n name LightSwitch\n tile_color 0x34c00ff\n note_font Verdana\n selected true\n xpos 3065\n ypos 766\n addUserKnob {20 LightSwitch}\n addUserKnob {4 chooseMethod l Method M {Subtractive Additive}}\n chooseMethod Additive\n addUserKnob {22 createLightSwitchPuppet l \"<i>Create New Light Switch Puppet from Values\" -STARTLINE T \"thisNode = nuke.thisNode()\\n\\nwith nuke.Root():\\n    try: \\n        # Create a new LightSwitch node\\n        newLightSwitch = nuke.nodePaste( '\\{\\}/nk_files/\\{\\}LightSwitchPuppet.nk'.format(NST_FolderPath, prefixNST) )\\n        \\n        for i in nuke.selectedNodes():\\n            i.setInput(0, None)\\n            i.setYpos(i.ypos() + 100 )\\n            i.setSelected(False)\\n        \\n        # Deselect all nodes\\n        nuke.selectAll()\\n        nuke.invertSelection()\\n        \\n        # Select Original LightSwitch\\n        thisNode.setSelected(True)\\n        \\n        newLightSwitch.knob(\\\"copyValuesFromLS\\\").execute()\\n        \\n        # Deselect all nodes\\n        nuke.selectAll()\\n        nuke.invertSelection()\\n        newLightSwitch.setSelected(True)\\n        \\n    except:\\n        nuke.message(\\\"No LightSwitchPuppet installation found. Cannot Create new LightSwitch.\\\")\"}\n addUserKnob {22 copyValuesFromLS l \"<i>Copy Values from Selected LightSwitch\" T \"thisNode = nuke.thisNode()\\n\\nwith nuke.Root():\\n    selectedNode = nuke.selectedNode()\\n\\nif selectedNode and selectedNode != thisNode and \\\"LightSwitch\\\" in selectedNode.name():\\n    for knob in thisNode.knobs():\\n        if knob in selectedNode.knobs() and knob not in \\[\\\"xpos\\\",\\\"ypos\\\",\\\"name\\\",\\\"knobChanged\\\", \\\"label\\\", \\\"note_font_size\\\", \\\"note_font_color\\\"]:\\n            thisNode\\[knob].fromScript(selectedNode\\[knob].toScript())\\n            \\nelse:\\n    nuke.message(\\\"Please select another LightSwitch node to copy values from\\\")\" +STARTLINE}\n addUserKnob {22 reset l \"<b><font color=DarkOrange>Reset\" -STARTLINE T \"node = nuke.thisNode()\\nexposures = \\[]\\nmultiplies = \\[]\\nmutes = \\[]\\nsolos = \\[]\\nbypasses = \\[]\\n\\nfor knob in node.knobs():\\n    if \\\"panelDropped\\\" not in knob:\\n        if \\\"exp\\\" in knob:\\n            exposures.append(knob)\\n        elif \\\"mult\\\" in knob:\\n            multiplies.append(knob)\\n        elif \\\"mute\\\" in knob:\\n            mutes.append(knob)\\n        elif \\\"solo\\\" in knob:\\n            mutes.append(knob)\\n        elif \\\"bypass\\\" in knob:\\n            mutes.append(knob)\\n        \\nexposures.sort()\\nmultiplies.sort()\\nmutes.sort()\\nsolos.sort()\\nbypasses.sort()\\n\\nfor exp in exposures:\\n    node.knob(exp).setValue(0)\\n\\nfor mult in multiplies:\\n    node.knob(mult).setValue(1, 0)\\n    node.knob(mult).setValue(1, 1)\\n    node.knob(mult).setValue(1, 2)\\n\\n\\nfor mute in mutes:\\n    node.knob(mute).setValue(0)\\n    \\nfor solo in solos:\\n    node.knob(solo).setValue(0)\\n\\nfor bypass in bypasses:\\n    node.knob(bypass).setValue(0)\\n    \\nnode.knob(\\\"mix\\\").setValue(1)\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG01 l \"<font color=IndianRed>LightGroup 01\" T \" \"}\n addUserKnob {6 mute1 l Mute -STARTLINE}\n addUserKnob {6 solo1 l Solo -STARTLINE}\n addUserKnob {6 bypass1 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG01 l \"\" -STARTLINE T Shuffle1.in}\n addUserKnob {7 exp1 l Exposure R -5 5}\n addUserKnob {18 mult1 l Multiply}\n mult1 {1 1 1}\n addUserKnob {6 mult1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG02 l \"<font color = LightPink>LightGroup 02\" T \" \"}\n addUserKnob {6 mute2 l Mute -STARTLINE}\n addUserKnob {6 solo2 l Solo -STARTLINE}\n addUserKnob {6 bypass2 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG02 l \"\" -STARTLINE T Shuffle2.in}\n addUserKnob {7 exp2 l Exposure R -5 5}\n addUserKnob {18 mult2 l Multiply}\n mult2 {1 1 1}\n addUserKnob {6 mult2_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 color_rgb_1_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG03 l \"<font color=LightSalmon>LightGroup 03\" T \" \"}\n addUserKnob {6 mute3 l Mute -STARTLINE}\n addUserKnob {6 solo3 l Solo -STARTLINE}\n addUserKnob {6 bypass3 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG03 l \"\" -STARTLINE T Shuffle3.in}\n addUserKnob {7 exp3 l Exposure R -5 5}\n addUserKnob {18 mult3 l Multiply}\n mult3 {1 1 1}\n addUserKnob {6 mult3_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG04 l \"<font color=Khaki>LightGroup 04\" T \" \"}\n addUserKnob {6 mute4 l Mute -STARTLINE}\n addUserKnob {6 solo4 l Solo -STARTLINE}\n addUserKnob {6 bypass4 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG04 l \"\" -STARTLINE T Shuffle4.in}\n addUserKnob {7 exp4 l Exposure R -5 5}\n addUserKnob {18 mult4 l Multiply}\n mult4 {1 1 1}\n addUserKnob {6 mult4_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG05 l \"<font color=DarkKhaki>LightGroup 05\" T \" \"}\n addUserKnob {6 mute5 l Mute -STARTLINE}\n addUserKnob {6 solo5 l Solo -STARTLINE}\n addUserKnob {6 bypass5 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG05 l \"\" -STARTLINE T Shuffle5.in}\n addUserKnob {7 exp5 l Exposure R -5 5}\n addUserKnob {18 mult5 l Multiply}\n mult5 {1 1 1}\n addUserKnob {6 mult5_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG06 l \"<font color=MediumSeaGreen>LightGroup 06\" T \" \"}\n addUserKnob {6 mute6 l Mute -STARTLINE}\n addUserKnob {6 solo6 l Solo -STARTLINE}\n addUserKnob {6 bypass6 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG06 l \"\" -STARTLINE T Shuffle6.in}\n addUserKnob {7 exp6 l Exposure R -5 5}\n addUserKnob {18 mult6 l Multiply}\n mult6 {1 1 1}\n addUserKnob {6 mult6_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG07 l \"<font color=MediumAquamarine>LightGroup 07\" T \" \"}\n addUserKnob {6 mute7 l Mute -STARTLINE}\n addUserKnob {6 solo7 l Solo -STARTLINE}\n addUserKnob {6 bypass7 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG07 l \"\" -STARTLINE T Shuffle7.in}\n addUserKnob {7 exp7 l Exposure R -5 5}\n addUserKnob {18 mult7 l Multiply}\n mult7 {1 1 1}\n addUserKnob {6 mult7_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG08 l \"<font color=CadetBlue>LightGroup 08\" T \" \"}\n addUserKnob {6 mute8 l Mute -STARTLINE}\n addUserKnob {6 solo8 l Solo -STARTLINE}\n addUserKnob {6 bypass8 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG08 l \"\" -STARTLINE T Shuffle8.in}\n addUserKnob {7 exp8 l Exposure R -5 5}\n addUserKnob {18 mult8 l Multiply}\n mult8 {1 1 1}\n addUserKnob {6 mult8_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG09 l \"<font color=SkyBlue>LightGroup 09\" T \" \"}\n addUserKnob {6 mute9 l Mute -STARTLINE}\n addUserKnob {6 solo9 l Solo -STARTLINE}\n addUserKnob {6 bypass9 l Bypass -STARTLINE}\n addUserKnob {41 shuffleLG09 l \"\" -STARTLINE T Shuffle9.in}\n addUserKnob {7 exp9 l Exposure R -5 5}\n addUserKnob {18 mult9 l Multiply}\n mult9 {1 1 1}\n addUserKnob {6 mult9_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 _1 l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge19.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge19.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge19.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge19.fringe}\n addUserKnob {41 mix T Merge19.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 166\n  ypos 5483\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 34\n  ypos 207\n }\nset N5eb6d800 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -652\n  ypos 207\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -652\n  ypos 332\n }\nset N5eb6d000 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -652\n  ypos 843\n }\nset N5eb6cc00 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -652\n  ypos 1370\n }\nset N5eb6c800 [stack 0]\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -652\n  ypos 1920\n }\nset N5eb6c400 [stack 0]\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos -652\n  ypos 2475\n }\nset N5eb13c00 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos -652\n  ypos 3013\n }\nset N5eb13800 [stack 0]\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos -652\n  ypos 3583\n }\nset N5eb13400 [stack 0]\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos -652\n  ypos 4136\n }\nset N5eb13000 [stack 0]\n Dot {\n  name Dot43\n  note_font_size 41\n  xpos -652\n  ypos 4716\n }\nset N5eb12c00 [stack 0]\n Shuffle {\n  in none\n  name Shuffle9\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -334\n  ypos 4705\n }\nset N5eb12800 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove9\n  xpos -334\n  ypos 4745\n }\nset N5eb12400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp9}}\n  green {{parent.exp9}}\n  blue {{parent.exp9}}\n  name ExposureLG09_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 4779\n }\n Multiply {\n  channels rgb\n  value {{parent.mult9} {parent.mult9} {parent.mult9} {parent.mult9}}\n  name MultiplyColor09_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 4834\n }\npush $N5eb12400\n Switch {\n  inputs 2\n  which {{!bypass9}}\n  name SwitchBypass09_\n  xpos -334\n  ypos 4838\n }\n Multiply {\n  value 0\n  name MultiplyMute09_\n  label \"\\[value value]\"\n  xpos -334\n  ypos 4886\n  disable {{!parent.mute9}}\n }\n Multiply {\n  value 0\n  name MultiplySolo09_\n  label \"\\[value value]\"\n  xpos -334\n  ypos 4928\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo9\"}}\n }\n Dot {\n  name Dot44\n  note_font_size 41\n  xpos -300\n  ypos 4996\n }\nset N5eb11000 [stack 0]\n Dot {\n  name Dot47\n  note_font_size 41\n  xpos -300\n  ypos 5039\n }\nset N5eb10c00 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos -300\n  ypos 5086\n }\nset N5eb10800 [stack 0]\n Dot {\n  name Dot48\n  note_font_size 41\n  xpos -300\n  ypos 5132\n }\npush $N5eb10800\npush $N5eb13000\n Shuffle {\n  in none\n  name Shuffle8\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -338\n  ypos 4125\n }\nset N5e533c00 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove8\n  xpos -338\n  ypos 4165\n }\nset N5e533800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp8}}\n  green {{parent.exp8}}\n  blue {{parent.exp8}}\n  name ExposureLG08_\n  label \"\\[value red]\"\n  xpos -469\n  ypos 4199\n }\n Multiply {\n  channels rgb\n  value {{parent.mult8} {parent.mult8} {parent.mult8} {parent.mult8}}\n  name MultiplyColor08_\n  label \"\\[value value]\"\n  xpos -469\n  ypos 4254\n }\npush $N5e533800\n Switch {\n  inputs 2\n  which {{!bypass8}}\n  name SwitchBypass08_\n  xpos -338\n  ypos 4258\n }\n Multiply {\n  value 0\n  name MultiplyMute08_\n  label \"\\[value value]\"\n  xpos -338\n  ypos 4286\n  disable {{!parent.mute8}}\n }\n Multiply {\n  value 0\n  name MultiplySolo08_\n  label \"\\[value value]\"\n  xpos -338\n  ypos 4328\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo8\"}}\n }\n Dot {\n  name Dot39\n  note_font_size 41\n  xpos -304\n  ypos 4396\n }\nset N5e532400 [stack 0]\n Dot {\n  name Dot45\n  note_font_size 41\n  xpos -304\n  ypos 4441\n }\nset N5e532000 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos -304\n  ypos 4494\n }\nset N5e531c00 [stack 0]\n Dot {\n  name Dot46\n  note_font_size 41\n  xpos -304\n  ypos 4542\n }\npush $N5e531c00\npush $N5eb13400\n Shuffle {\n  in LG07\n  name Shuffle7\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -340\n  ypos 3572\n }\nset N5e531400 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove7\n  xpos -340\n  ypos 3612\n }\nset N5e531000 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp7}}\n  green {{parent.exp7}}\n  blue {{parent.exp7}}\n  name ExposureLG07_\n  label \"\\[value red]\"\n  xpos -475\n  ypos 3646\n }\n Multiply {\n  channels rgb\n  value {{parent.mult7} {parent.mult7} {parent.mult7} {parent.mult7}}\n  name MultiplyColor07_\n  label \"\\[value value]\"\n  xpos -475\n  ypos 3701\n }\npush $N5e531000\n Switch {\n  inputs 2\n  which {{!bypass7}}\n  name SwitchBypass07_\n  xpos -340\n  ypos 3705\n }\n Multiply {\n  value 0\n  name MultiplyMute07_\n  label \"\\[value value]\"\n  xpos -340\n  ypos 3733\n  disable {{!parent.mute7}}\n }\n Multiply {\n  value 0\n  name MultiplySolo07_\n  label \"\\[value value]\"\n  xpos -340\n  ypos 3775\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo7\"}}\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos -306\n  ypos 3843\n }\nset N5e4c7800 [stack 0]\n Dot {\n  name Dot41\n  note_font_size 41\n  xpos -305\n  ypos 3888\n }\nset N5e4c7400 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -306\n  ypos 3938\n }\nset N5e4c7000 [stack 0]\n Dot {\n  name Dot42\n  note_font_size 41\n  xpos -306\n  ypos 3982\n }\npush $N5e4c7000\npush $N5eb13800\n Shuffle {\n  in LG06\n  name Shuffle6\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -340\n  ypos 3002\n }\nset N5e4c6800 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove6\n  xpos -340\n  ypos 3042\n }\nset N5e4c6400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp6}}\n  green {{parent.exp6}}\n  blue {{parent.exp6}}\n  name ExposureLG06_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 3076\n }\n Multiply {\n  channels rgb\n  value {{parent.mult6} {parent.mult6} {parent.mult6} {parent.mult6}}\n  name MultiplyColor06_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 3131\n }\npush $N5e4c6400\n Switch {\n  inputs 2\n  which {{!bypass6}}\n  name SwitchBypass06_\n  xpos -340\n  ypos 3135\n }\n Multiply {\n  value 0\n  name MultiplyMute06_\n  label \"\\[value value]\"\n  xpos -340\n  ypos 3202\n  disable {{!parent.mute6}}\n }\n Multiply {\n  value 0\n  name MultiplySolo06_\n  label \"\\[value value]\"\n  xpos -340\n  ypos 3244\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo6\"}}\n }\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos -306\n  ypos 3312\n }\nset N5e4c5000 [stack 0]\n Dot {\n  name Dot37\n  note_font_size 41\n  xpos -306\n  ypos 3361\n }\nset N5e4c4c00 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -306\n  ypos 3407\n }\nset N5e4c4800 [stack 0]\n Dot {\n  name Dot40\n  note_font_size 41\n  xpos -306\n  ypos 3452\n }\npush $N5e4c4800\npush $N5eb13c00\n Shuffle {\n  in LG05\n  name Shuffle5\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -344\n  ypos 2464\n }\nset N5e483c00 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove5\n  xpos -344\n  ypos 2504\n }\nset N5e483800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp5}}\n  green {{parent.exp5}}\n  blue {{parent.exp5}}\n  name ExposureLG05_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 2538\n }\n Multiply {\n  channels rgb\n  value {{parent.mult5} {parent.mult5} {parent.mult5} {parent.mult5}}\n  name MultiplyColor05_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 2583\n }\npush $N5e483800\n Switch {\n  inputs 2\n  which {{!bypass5}}\n  name SwitchBypass05_\n  xpos -344\n  ypos 2587\n }\n Multiply {\n  value 0\n  name MultiplyMute05_\n  label \"\\[value value]\"\n  xpos -344\n  ypos 2625\n  disable {{!parent.mute5}}\n }\n Multiply {\n  value 0\n  name MultiplySolo05_\n  label \"\\[value value]\"\n  xpos -344\n  ypos 2667\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo5\"}}\n }\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos -310\n  ypos 2735\n }\nset N5e482400 [stack 0]\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos -310\n  ypos 2775\n }\nset N5e482000 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -310\n  ypos 2820\n }\nset N5e481c00 [stack 0]\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos -310\n  ypos 2868\n }\npush $N5e481c00\npush $N5eb6c400\n Shuffle {\n  in LG04\n  name Shuffle4\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -355\n  ypos 1909\n }\nset N5e481400 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove4\n  xpos -355\n  ypos 1949\n }\nset N5e481000 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp4}}\n  green {{parent.exp4}}\n  blue {{parent.exp4}}\n  name ExposureLG04_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 1983\n }\n Multiply {\n  channels rgb\n  value {{parent.mult4} {parent.mult4} {parent.mult4} {parent.mult4}}\n  name MultiplyColor04_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 2028\n }\npush $N5e481000\n Switch {\n  inputs 2\n  which {{!bypass4}}\n  name SwitchBypass04_\n  xpos -355\n  ypos 2032\n }\n Multiply {\n  value 0\n  name MultiplyMute04_\n  label \"\\[value value]\"\n  xpos -355\n  ypos 2070\n  disable {{!parent.mute4}}\n }\n Multiply {\n  value 0\n  name MultiplySolo04_\n  label \"\\[value value]\"\n  xpos -355\n  ypos 2112\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo4\"}}\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos -321\n  ypos 2180\n }\nset N5e423800 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos -321\n  ypos 2223\n }\nset N5e423400 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -321\n  ypos 2267\n }\nset N5e423000 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos -321\n  ypos 2318\n }\npush $N5e423000\npush $N5eb6c800\n Shuffle {\n  in LG03\n  name Shuffle3\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -363\n  ypos 1359\n }\nset N5e422800 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -363\n  ypos 1399\n }\nset N5e422400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp3}}\n  green {{parent.exp3}}\n  blue {{parent.exp3}}\n  name ExposureLG03_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 1433\n }\n Multiply {\n  channels rgb\n  value {{parent.mult3} {parent.mult3} {parent.mult3} {parent.mult3}}\n  name MultiplyColor03_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 1478\n }\npush $N5e422400\n Switch {\n  inputs 2\n  which {{!bypass3}}\n  name SwitchBypass03_\n  xpos -363\n  ypos 1482\n }\n Multiply {\n  value 0\n  name MultiplyMute03_\n  label \"\\[value value]\"\n  xpos -363\n  ypos 1520\n  disable {{!parent.mute3}}\n }\n Multiply {\n  value 0\n  name MultiplySolo03_\n  label \"\\[value value]\"\n  xpos -363\n  ypos 1562\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo3\"}}\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos -329\n  ypos 1630\n }\nset N5e421000 [stack 0]\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -329\n  ypos 1673\n }\nset N5e420c00 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -329\n  ypos 1708\n }\nset N5e420800 [stack 0]\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos -329\n  ypos 1750\n }\npush $N5e420800\npush $N5eb6cc00\n Shuffle {\n  in LG02\n  name Shuffle2\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -385\n  ypos 832\n }\nset N5e3cbc00 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos -385\n  ypos 872\n }\nset N5e3cb800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp2}}\n  green {{parent.exp2}}\n  blue {{parent.exp2}}\n  name ExposureLG02_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 906\n }\n Multiply {\n  channels rgb\n  value {{parent.mult2} {parent.mult2} {parent.mult2} {parent.mult2}}\n  name MultiplyColor02_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 951\n }\npush $N5e3cb800\n Switch {\n  inputs 2\n  which {{!bypass2}}\n  name SwitchBypass02_\n  xpos -385\n  ypos 955\n }\n Multiply {\n  value 0\n  name MultiplyMute02_\n  label \"\\[value value]\"\n  xpos -385\n  ypos 993\n  disable {{!parent.mute2}}\n }\n Multiply {\n  value 0\n  name MultiplySolo02_\n  label \"\\[value value]\"\n  xpos -385\n  ypos 1035\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo2\"}}\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -351\n  ypos 1103\n }\nset N5e3ca400 [stack 0]\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos -352\n  ypos 1134\n }\nset N5e3ca000 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -351\n  ypos 1169\n }\nset N5e3c9c00 [stack 0]\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos -351\n  ypos 1214\n }\npush $N5e3c9c00\npush $N5eb6d000\n Shuffle {\n  in LG01\n  name Shuffle1\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 15\n  note_font_color 0xffffffff\n  xpos -370\n  ypos 321\n }\nset N5e3c9400 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -370\n  ypos 361\n }\nset N5e3c9000 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.exp1}}\n  green {{parent.exp1}}\n  blue {{parent.exp1}}\n  name ExposureLG01_\n  label \"\\[value red]\"\n  xpos -502\n  ypos 395\n }\n Multiply {\n  channels rgb\n  value {{parent.mult1} {parent.mult1} {parent.mult1} {parent.mult1}}\n  name MultiplyColor01_\n  label \"\\[value value]\"\n  xpos -502\n  ypos 440\n }\npush $N5e3c9000\n Switch {\n  inputs 2\n  which {{!bypass1}}\n  name SwitchBypass01_\n  xpos -370\n  ypos 444\n }\n Multiply {\n  value 0\n  name MultiplyMute01_\n  label \"\\[value value]\"\n  xpos -370\n  ypos 510\n  disable {{!parent.mute1}}\n }\n Multiply {\n  value 0\n  name MultiplySolo01_1\n  label \"\\[value value]\"\n  xpos -370\n  ypos 566\n  disable {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 1 : solo1\"}}\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -336\n  ypos 629\n }\nset N5e36b800 [stack 0]\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos -336\n  ypos 678\n }\nset N5e36b400 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -336\n  ypos 723\n }\nset N5e36b000 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -336\n  ypos 767\n }\npush $N5e36b000\npush $N5eb6d800\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 242\n  ypos 207\n }\n Multiply {\n  channels rgb\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 208\n  ypos 328\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge20\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 720\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle1.in}}}\n  name ShuffleCopy2\n  xpos 208\n  ypos 764\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge21\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 1166\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle2.in}}}\n  name ShuffleCopy4\n  xpos 208\n  ypos 1211\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge22\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 1705\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle3.in}}}\n  name ShuffleCopy5\n  xpos 208\n  ypos 1747\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge23\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 2264\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle4.in}}}\n  name ShuffleCopy8\n  xpos 208\n  ypos 2315\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge24\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 2817\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle5.in}}}\n  name ShuffleCopy7\n  xpos 208\n  ypos 2865\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge25\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 3404\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle6.in}}}\n  name ShuffleCopy11\n  xpos 208\n  ypos 3449\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge26\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 3935\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle7.in}}}\n  name ShuffleCopy14\n  xpos 208\n  ypos 3979\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge27\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 4491\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle8.in}}}\n  name ShuffleCopy13\n  xpos 208\n  ypos 4539\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge28\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 5083\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle9.in}}}\n  name ShuffleCopy17\n  xpos 208\n  ypos 5129\n }\nset N5ec91800 [stack 0]\npush $N5ec91800\npush $N5eb10c00\npush $N5eb11000\npush $N5eb12800\npush $N5e532000\npush $N5e532400\npush $N5e533c00\npush $N5e4c7400\npush $N5e4c7800\npush $N5e531400\npush $N5e4c4c00\npush $N5e4c5000\npush $N5e4c6800\npush $N5e482000\npush $N5e482400\npush $N5e483c00\npush $N5e423400\npush $N5e423800\npush $N5e481400\npush $N5e420c00\npush $N5e421000\npush $N5e422800\npush $N5e3ca000\npush $N5e3ca400\npush $N5e3cbc00\npush $N5e36b400\npush $N5e36b800\npush $N5e3c9400\npush $N5eb6d800\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 329\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 626\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle1.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 675\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 840\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 1100\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle2.in}}}\n  name ShuffleCopy3\n  xpos 0\n  ypos 1131\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 1367\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge6\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 1627\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle3.in}}}\n  name ShuffleCopy6\n  xpos 0\n  ypos 1670\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 1917\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 2177\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle4.in}}}\n  name ShuffleCopy9\n  xpos 0\n  ypos 2220\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 2472\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 2732\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle5.in}}}\n  name ShuffleCopy10\n  xpos 0\n  ypos 2772\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge11\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 3010\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge12\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 3309\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle6.in}}}\n  name ShuffleCopy12\n  xpos 0\n  ypos 3358\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge13\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 3580\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge14\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 3840\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle7.in}}}\n  name ShuffleCopy15\n  xpos 0\n  ypos 3885\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge15\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 4133\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge16\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 4393\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle8.in}}}\n  name ShuffleCopy16\n  xpos 0\n  ypos 4438\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge17\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 4713\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge18\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 4993\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  alpha alpha2\n  out {{{parent.Shuffle9.in}}}\n  name ShuffleCopy18\n  xpos 0\n  ypos 5036\n }\n Switch {\n  inputs 2\n  which {{\"solo1 + \\nsolo2 + \\nsolo3 + \\nsolo4 + \\nsolo5 + \\nsolo6 + \\nsolo7 + \\nsolo8 + \\nsolo9 \\n\\n== 0 ? 0 : 1\"}}\n  name Switch1\n  xpos 0\n  ypos 5212\n }\n Switch {\n  inputs 2\n  which {{chooseMethod}}\n  name Switch2\n  xpos 0\n  ypos 5289\n }\npush $N5eb12c00\n Dot {\n  name Dot49\n  xpos -652\n  ypos 5485\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name Merge19\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 5482\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 5791\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LightWrapPro.gizmo",
    "content": "Group {\n name LightWrapPro\n help \"Adds exponentially blurred lightwrap\\n\\nAdds a bright highlight wrap and an overall wrap\"\n tile_color 0x1e252eff\n label \"(\\[value outputView])\"\n note_font \"DejaVu Sans Bold\"\n note_font_color 0xb7e6ffff\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 LightWrapPro}\n addUserKnob {4 outputView l \"Output View\" t \"Chose one to view while adjusting\" M {\"Final Output\" \"Highlight Key\" \"Highlight Wrap\" \"OverAll Wrap\" \"Effect Only\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 premultiplied l \"FG premultiplied\" -STARTLINE}\n premultiplied true\n addUserKnob {26 highlightKeyTitle l \"<b><font color = skyblue>HighLight Key\"}\n addUserKnob {7 blackPt l Black R 0 4}\n blackPt 1\n addUserKnob {7 whitePt l White R 0 4}\n whitePt 2\n addUserKnob {26 wrapHighlightsTitle l \"<b><font color = skyblue>HighLight Wrap\"}\n addUserKnob {6 Mult_Flare_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps l \" Steps\" T ExponGlowWrapHighlight.steps}\n addUserKnob {41 falloffType l Falloff -STARTLINE T ExponGlowWrapHighlight.falloffType}\n addUserKnob {41 size l Size T ExponGlowWrapHighlight.size}\n addUserKnob {7 wrapHighlightAmount l Amount R 0 4}\n wrapHighlightAmount 1\n addUserKnob {26 WrapAllTitle l \"<b><font color=skyblue>Overall Wrap \"}\n addUserKnob {6 WrapAllMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps_1 l \" Steps\" T ExponGlowWrapAll.steps}\n addUserKnob {41 falloffType_1 l Falloff -STARTLINE T ExponGlowWrapAll.falloffType}\n addUserKnob {41 size_1 l Size T ExponGlowWrapAll.size}\n addUserKnob {7 wrapAllAmount l Amount R 0 4}\n wrapAllAmount 1\n addUserKnob {6 removeHighlights l \"Dim Highlights\" +STARTLINE}\n removeHighlights true\n addUserKnob {7 dimHighlightsAmount l \"\" -STARTLINE R 0 3}\n dimHighlightsAmount 1\n addUserKnob {26 blendEdgesTitle l \"<b><font color=skyblue>Blend Edges\"}\n addUserKnob {7 blendEdgesAmount l Amount}\n addUserKnob {6 ColorBleedMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 bleedColorTitle l \"<b><font color=skyblue>Bleed Color\"}\n addUserKnob {7 bleedColorAmount l Amount}\n addUserKnob {7 bleedColorSize l Size R 0.1 4}\n bleedColorSize 1\n addUserKnob {7 bleedColorFalloff_2 l Falloff R 0.2 2}\n bleedColorFalloff_2 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 globalAmount l \"<b><font color=skyblue>Global Amount\"}\n globalAmount 1\n addUserKnob {26 _1 l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T MergeCopyLightWrapPro.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T MergeCopyLightWrapPro.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeCopyLightWrapPro.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeCopyLightWrapPro.fringe}\n addUserKnob {41 mix T MergeCopyLightWrapPro.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"\\n\\n\" T LightWrapPro}\n addUserKnob {26 ver l Version: T v06}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x402f27ff\n  label \"Bleed Color\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos -683\n  ypos 2273\n  bdwidth 1316\n  bdheight 787\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x39464200\n  label \"highlight key\"\n  note_font_size 40\n  note_font_color 0xffffffff\n  xpos 1630\n  ypos 113\n  bdwidth 272\n  bdheight 393\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 1887\n  ypos 3580\n  number 2\n }\n Input {\n  inputs 0\n  name FG\n  xpos -413\n  ypos -318\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -413\n  ypos -150\n }\n Dot {\n  name Dot1\n  xpos -379\n  ypos 375\n }\nset Na0605d00 [stack 0]\n Dot {\n  name Dot7\n  xpos -825\n  ypos 375\n }\n Dot {\n  name Dot46\n  xpos -825\n  ypos 3104\n }\nset Na0604f00 [stack 0]\n Dot {\n  name Dot15\n  xpos 915\n  ypos 3107\n }\nset Na0604800 [stack 0]\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 915\n  ypos 3224\n }\nset Na0604100 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 915\n  ypos 3277\n }\npush $Na0605d00\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 717\n  ypos 378\n }\nset Na05ef200 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 717\n  ypos 550\n }\n Input {\n  inputs 0\n  name BG\n  label \"\\n\"\n  xpos 1702\n  ypos -276\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 1702\n  ypos -145\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 1702\n  ypos -68\n }\n Dot {\n  name Dot3\n  xpos 1736\n  ypos 177\n }\nset Na05ec800 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.blackPt} {parent.whitePt} {range.B} {range.B}}\n  name Keyer2\n  xpos 1702\n  ypos 303\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1736\n  ypos 397\n }\nset N63ccf900 [stack 0]\n Premult {\n  name Premult1\n  xpos 1702\n  ypos 452\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 543\n }\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos 1734\n  ypos 746\n }\n Group {\n  name ExponGlowWrapHighlight\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 1700\n  ypos 1012\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 6\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 4\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType smooth1\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N63cab200 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {(parent.size.h/format.pixel_aspect/height*width)*format.pixel_aspect}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N63ca9600 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N63ca8f00 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N63ca8f00\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N63c83200 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N63c83200\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N63c83200\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N63c83200\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N63c83200\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N63c83200\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 6+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 6\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N63ca9600\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N63cab200\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N63bff200 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N63bfdd00 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N63bfd600 [stack 0]\npush $N63bfdd00\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N63bfcf00 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N63bfc800 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N63bfc800\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N63bfd600\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N63bfcf00\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N2d27cf00 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N2d27cf00\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N63bff200\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N63cab200\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N63cab200\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Grade {\n  channels all\n  white {{wrapHighlightAmount/10}}\n  name FlareAmount\n  xpos 1702\n  ypos 1393\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal3\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 1577\n }\n Dot {\n  name Dot25\n  label \"LIGHT FLARE\"\n  note_font_size 61\n  xpos 1736\n  ypos 1801\n }\nset N2d219d00 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 1738\n  ypos 2915\n }\nset N2d219600 [stack 0]\npush $Na05ef200\npush $Na05ec800\n Dot {\n  name Dot20\n  xpos 1059\n  ypos 179\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 238\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 366\n }\n Dot {\n  name Dot9\n  xpos 1059\n  ypos 725\n }\nset N2d207200 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 1343\n  ypos 725\n }\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos 1309\n  ypos 823\n }\npush $N2d207200\n Colorspace {\n  colorspace_out CIE-Yxy\n  name Colorspace4\n  xpos 1188\n  ypos 786\n }\n Expression {\n  inputs 1+1\n  expr0 \"(r*(1+(r/((parent.dimHighlightsAmount+1)**2))) ) / (1+r)\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  expr1 \"(g*(1+(g/((parent.dimHighlightsAmount+1)**2))) ) / (1+g)\"\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 \"(b*(1+(b/((parent.dimHighlightsAmount+1)**2))) ) / (1+b)\"\n  expr3 a\n  name Tonemap_whitepoint\n  xpos 1188\n  ypos 827\n }\n Colorspace {\n  colorspace_in CIE-Yxy\n  name Colorspace3\n  xpos 1188\n  ypos 867\n }\npush $N2d207200\n Switch {\n  inputs 2\n  which {{removeHighlights}}\n  name Switch4\n  xpos 1025\n  ypos 867\n }\n Group {\n  name ExponGlowWrapAll\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 995\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 8\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 10\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType pLinear\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N2d1c1d00 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {(parent.size.h/format.pixel_aspect/height*width)*format.pixel_aspect}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N2d1c0100 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N2d1ab900 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N2d1ab900\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N2d1a9d00 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(8**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(8**2))}}\n   crop false\n   name Blur8\n   xpos 1564\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"}}\n   mix {{falloff}}\n   name Multiply8\n   xpos 1564\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(7**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(7**2))}}\n   crop false\n   name Blur7\n   xpos 1464\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"}}\n   mix {{falloff}}\n   name Multiply7\n   xpos 1464\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N2d1a9d00\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N2d1a9d00\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 8+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 8\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N2d1c0100\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N2d1c1d00\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N39bf3200 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N39bf1d00 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N39bf1600 [stack 0]\npush $N39bf1d00\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N39bf0f00 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N39bf0800 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N39bf0800\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N39bf1600\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N39bf0f00\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N39bc0f00 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N39bc0f00\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N39bf3200\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N2d1c1d00\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N2d1c1d00\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Dot {\n  name Dot40\n  note_font_size 41\n  xpos 1059\n  ypos 1277\n }\nset N4726e400 [stack 0]\n Grade {\n  channels all\n  white {{wrapAllAmount/10}}\n  name GradeBgWrapAmount\n  xpos 1025\n  ypos 1399\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal1\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 1566\n }\n Dot {\n  name Dot37\n  label \"WRAP ALL\"\n  note_font_size 61\n  xpos 1059\n  ypos 1692\n }\nset N4725d600 [stack 0]\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 1059\n  ypos 3062\n }\nset N4725cf00 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 1530\n  ypos 3168\n }\n Shuffle {\n  alpha white\n  name Shuffle5\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1530\n  ypos 3216\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge14\n  xpos 1530\n  ypos 3273\n }\npush $Na0604100\npush $N4725cf00\n Shuffle {\n  alpha white\n  name Shuffle2\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 3158\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge7\n  xpos 1025\n  ypos 3220\n }\npush $Na0604800\npush $N2d219600\n Shuffle {\n  alpha white\n  name Shuffle4\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1708\n  ypos 3020\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge13\n  xpos 1708\n  ypos 3103\n }\npush $N63ccf900\n Dot {\n  name Dot21\n  xpos 2349\n  ypos 397\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle3\n  tile_color 0xffffffff\n  label alpha\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 2315\n  ypos 496\n }\n Dot {\n  name Dot23\n  xpos 2349\n  ypos 3399\n }\npush $N4726e400\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 757\n  ypos 1277\n }\nset N4723c100 [stack 0]\n Grade {\n  channels rgba\n  gamma {{parent.bleedColorFalloff_2}}\n  name Grade1\n  xpos 724\n  ypos 2638\n }\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 758\n  ypos 2835\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal2\n  label \"\\[value value]\"\n  xpos 297\n  ypos 2828\n }\npush $N2d207200\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 438\n  ypos 725\n }\nset N4720ab00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 439\n  ypos 802\n }\nset N4720a400 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 334\n  ypos 802\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 334\n  ypos 1201\n }\npush $N4720a400\n Blur {\n  size {{(width/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur6\n  xpos 856\n  ypos 874\n }\npush $N4720a400\n Blur {\n  size {{(width/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur4\n  xpos 743\n  ypos 873\n }\npush $N4720a400\n Blur {\n  size {{(width/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur3\n  xpos 627\n  ypos 874\n }\npush $N4720a400\n Blur {\n  size {{(width/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur2\n  xpos 515\n  ypos 872\n }\npush $N4720a400\n Blur {\n  size {{(width/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur1\n  xpos 404\n  ypos 871\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 941\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 999\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1049\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge12\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1087\n }\n Unpremult {\n  name Unpremult2\n  xpos 404\n  ypos 1111\n }\n Blur {\n  size {{(width/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur5\n  xpos 404\n  ypos 1151\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 404\n  ypos 1198\n }\n Unpremult {\n  name Unpremult5\n  xpos 404\n  ypos 2385\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace1\n  xpos 404\n  ypos 2456\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply5\n  label \"\\[value value]\"\n  xpos 404\n  ypos 2532\n }\npush $N2d219d00\npush $N4725d600\npush $N4720ab00\n Dot {\n  name Dot10\n  xpos 201\n  ypos 725\n }\n Clamp {\n  minimum 0.001\n  maximum 100\n  name Clamp1\n  xpos 167\n  ypos 996\n }\n Dot {\n  name Dot24\n  xpos 201\n  ypos 1517\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal\n  label \"\\[value value]\"\n  xpos 19\n  ypos 1507\n }\npush $N4723c100\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace6\n  xpos -13\n  ypos 1267\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply4\n  label \"\\[value value]\"\n  xpos -123\n  ypos 1262\n }\npush $Na0605d00\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -413\n  ypos 594\n }\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -407\n  ypos 1094\n  disable {{premultiplied*-1+1 x1 1}}\n }\nset N1ea6c100 [stack 0]\n Dot {\n  name Dot12\n  xpos -226\n  ypos 1101\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace5\n  xpos -260\n  ypos 1140\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -260\n  ypos 1188\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -260\n  ypos 1267\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace7\n  xpos -260\n  ypos 1327\n }\n Dot {\n  name Dot36\n  label \"BLEND EDGES\"\n  note_font_size 45\n  xpos -226\n  ypos 1408\n }\npush $N1ea6c100\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -373\n  ypos 1514\n }\nset N1ea44800 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{blendEdgesAmount}}\n  name Merge10\n  xpos -260\n  ypos 1507\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -226\n  ypos 1588\n }\npush $N1ea44800\n Switch {\n  inputs 2\n  which {{\"blendEdgesAmount == 0 ? 0 : 1\"}}\n  name Switch3\n  xpos -407\n  ypos 1585\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge5\n  xpos -407\n  ypos 1685\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge6\n  xpos -407\n  ypos 1791\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos -373\n  ypos 2417\n }\nset N1ea21d00 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace2\n  xpos -81\n  ypos 2410\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply6\n  label \"\\[value value]\"\n  xpos -81\n  ypos 2458\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge11\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2537\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace8\n  xpos -81\n  ypos 2606\n }\npush $N1ea6c100\n Dot {\n  name Dot13\n  xpos -579\n  ypos 1101\n }\n Dot {\n  name Dot14\n  xpos -579\n  ypos 2559\n }\npush $N1ea21d00\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -407\n  ypos 2549\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -373\n  ypos 2649\n }\nset N1e9f1d00 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix {{bleedColorAmount}}\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2828\n }\npush $N1e9f1d00\n Switch {\n  inputs 2\n  which {{\"parent.bleedColorAmount== 0 ? 0 : 1\"}}\n  name Switch2\n  xpos -407\n  ypos 2832\n }\n Premult {\n  name Premult3\n  xpos -407\n  ypos 2983\n  disable {{premultiplied*-1+1 i}}\n }\n Dot {\n  name Dot19\n  xpos -373\n  ypos 3396\n }\n Switch {\n  inputs 5\n  which {{\"\\[value ls parent.outputView]\"}}\n  name Switch1\n  xpos 1708\n  ypos 3395\n }\npush $Na0604f00\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -825\n  ypos 3581\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name MergeCopyLightWrapPro\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 1708\n  ypos 3580\n }\n Output {\n  name Output1\n  xpos 1708\n  ypos 3898\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Lightning3D.gizmo",
    "content": "set cut_paste_input [stack 0]\nGroup {\n inputs 0\n name Lightning3D\n tile_color 0x131b56ff\n note_font \"Bitstream Vera Sans Bold Bold Bold\"\n note_font_color 0xadffffff\n selected true\n addUserKnob {20 User}\n addUserKnob {13 start l \"Starting Point\" t \"3D position for the starting point of the lighning.\"}\n start {0 3 0}\n addUserKnob {13 end l \"Ending Point\" t \"3D position for the ending point of the lighning.\"}\n addUserKnob {26 shape_div l \"<b><font color=#7DADF9>Shape</font><b>\"}\n addUserKnob {3 branches l Branches t \"Choose the number of branches for the lighning bolt.\"}\n branches 20\n addUserKnob {3 seed l Seed t \"Random seed to generate an entirely new bolt.\" -STARTLINE}\n seed 1500\n addUserKnob {3 points l \"Points per Branch\" t \"Control how many points are generated per branch. This allows more details in the main shape of the bolt, but increases processing time.\\n\\nBranches can also be upsampled which allows for fine details with less processing overhead.\"}\n points 40\n addUserKnob {3 upsample l Upsample t \"Multiply the number of points in the bolt AFTER generation. \\n\\nWill add visual details to the bolt, but will not be used for the generation.\" -STARTLINE}\n upsample 10\n addUserKnob {7 branch_min l \"Spawn min\" t \"Each branch of the bolt is generated from a random point on another pre-existing branch.\\n\\nThis setting contrains the range from which a bolt may be spawned.\\n\\n0 Is the \\\"root\\\" of a branch, while 1 is the \\\"tip\\\".\"}\n addUserKnob {7 branch_max l max t \"Each branch of the bolt is generated from a random point on another pre-existing branch.\\n\\nThis setting contrains the range from which a bolt may be spawned.\\n\\n0 Is the \\\"root\\\" of a branch, while 1 is the \\\"tip\\\".\" -STARTLINE}\n branch_max 0.65\n addUserKnob {7 branches_distribution l \"Spawn Distribution\" t \"Affect the distribution of new branches.\\n\\nAt value 1, branches will have an equal chance to spawn from any existing branch.\\n\\nWith lower values, earier branches will have more chances to spawn new branches.\\n\\nWith higher values, newer branches will be more likely to spawn new branches.\" R 0 2}\n branches_distribution 0.75\n addUserKnob {7 scale_min l \"Scale min\" t \"The minimum random length a branch may be.\"}\n scale_min 0.5\n addUserKnob {7 scale_max l max t \"The maximum random length a branch may be.\" -STARTLINE R 0.5 1.5}\n scale_max 1\n addUserKnob {7 scale_distribution l \"Scale Distribution\" t \"Affects the scale distribution.\\n\\nA value of 1 will randomly pick between the min and max scale.\\n\\nLower values will favor shorter branches.\\nHigher values will favor longer branches.\" R 0 2}\n scale_distribution 1\n addUserKnob {6 absolute l Absolute t \"When this box is checked, the scale of each branch will be based on the scale of the parent branch, and how close from the tip this branch has spawned.\\n\\nWhen it is off, the scale will be truly random, based on the scale range. You will most likely have to adjust the max scale accordingly. \" -STARTLINE}\n addUserKnob {7 spread l Spread t \"Control how far apart the branches are spreading.\\n\\nAt value 0, all branches will try to follow the main direction. At value 1, each branch will go in a random direction.\"}\n spread 0.4\n addUserKnob {26 color_div l \"<b><font color=#7DADF9>Color</font><b>\"}\n addUserKnob {6 main_noise_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 color l \"Base Color\" t \"Choose the main color of the bolt.\"}\n color {1 2 3}\n addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 taper l Taper t \"Makes the tip of branches thinner (darker) than the root. \"}\n taper 1\n addUserKnob {7 falloff l Falloff t \"Make the children branches darker than parent branches. \"}\n addUserKnob {7 brighness_noise l \"Brightness Noise\" t \"Adding some brighness noise will make the bolt less uniform looking.\"}\n brighness_noise 1\n addUserKnob {7 brighness_frequency l \"Noise Frequency\" t \"Adjust the frequency of the brighness noise (high frequency = small size, low frequency = large size)\" R 0.1 5}\n brighness_frequency 1\n addUserKnob {7 brighness_anim l \"Noise Animation\" t \"The brightness noise can be animated. Use this knob to control time..\\n\\nGreat Scott!\" R 0 100}\n addUserKnob {26 noises_div l \"<b><font color=#7DADF9>Turbulences</font><b>\"}\n addUserKnob {18 main_noise l \"Main Shape Noise\" t \"This noise should be used to define the overall shape of the lighning. It doesn't affect the root or tip of each branch.\\n\\nAmount of detail that can be optained with this noise is dependent on number of Points per Branch.\" R 0 10}\n main_noise 1\n addUserKnob {6 main_noise_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 main_noise_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 main_noise_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 main_frequency l Frequency t \"Adjust the frequency (size) of main shape noise\" R 0 3}\n main_frequency 1\n addUserKnob {7 main_anim l Animation t \"Animation of the main shape noise.\" R 0 100}\n addUserKnob {18 secondary_noise l \"Turbulence Noise\" t \"Adds a secondary noise to the shape AFTER the upsampling is done, resulting in a more detailed noise.\\n\\nThis is meant to be a high frequency, low amplitude noise (compared to main), but go wild if you want to.\\n\\nNote: this noise does affect the root and tips of branches, so it may shift the start and end point.\" R 0 10}\n secondary_noise 1\n addUserKnob {6 secondary_noise_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 secondary_noise_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 secondary_noise_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 secondary_noise_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 secondary_frequency l Frequency t \"Frequency for the secondary noise\" R 0 3}\n secondary_frequency 1\n addUserKnob {7 secondary_anim l Animation t \"Control the animation of the secondary noise\" R 0 100}\n addUserKnob {26 growth_div l \"<b><font color=#7DADF9>Growth</font><b>\"}\n addUserKnob {7 progress l Amount t \"Can be used to animate the progress of the lighning, for example to make a super slow motion lighning bolt.\"}\n progress 1\n addUserKnob {7 progress_random l Randomness t \"Without randomness, all branches will finish growing exactly at the same time.\\n\\nWith randomness, some will finish earlier.\\nWith too much randomness, there is a chance some branches may start to appear before their parent branch is fully created, making some branches seemingly appear out of nowhere.\"}\n}\n Constant {\n  inputs 0\n  channels rgb\n  name Constant1\n  xpos -456\n  ypos -616\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"max(parent.branches, 2)\"}}\n  box_height {{\"max(parent.points, 1)\"}}\n  box_fixed true\n  resize fill\n  name Reformat1\n  xpos -456\n  ypos -445\n }\n BlinkScript {\n  recompileCount 69\n  ProgramGroup 1\n  KernelDescription \"2 \\\"PointLighning\\\" iterate pixelWise 5e0e49e055b186dea0cc6c5c87cb9f407cb8dd55ac09a072668e611add35ced6 2 \\\"format\\\" Read Random \\\"dst\\\" Write Random 19 \\\"seed\\\" Int 1 AAAAAA== \\\"relative_scale\\\" Int 1 AAAAAA== \\\"format\\\" Int 2 CgAAAAoAAAA= \\\"start\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"end\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"spread\\\" Float 1 AAAAAA== \\\"branch_min\\\" Float 1 AAAAAA== \\\"branch_max\\\" Float 1 AAAAAA== \\\"scale_min\\\" Float 1 AAAAAA== \\\"scale_max\\\" Float 1 AAAAAA== \\\"scale_distribution\\\" Float 1 AAAAAA== \\\"distribution\\\" Float 1 AAAAAA== \\\"noise_frequency\\\" Float 1 AAAAAA== \\\"noise_time\\\" Float 1 AAAAAA== \\\"noise_amount\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"octaves\\\" Int 1 AAAAAA== \\\"lacunarity\\\" Float 1 AAAAAA== \\\"amplitude\\\" Float 1 AAAAAA== \\\"gain\\\" Float 1 AAAAAA== 19 \\\"seed\\\" 1 1 \\\"relative_scale\\\" 1 1 \\\"WHformat\\\" 2 1 \\\"start\\\" 3 1 \\\"end\\\" 3 1 \\\"spread\\\" 1 1 \\\"branch_min\\\" 1 1 \\\"branch_max\\\" 1 1 \\\"scale_min\\\" 1 1 \\\"scale_max\\\" 1 1 \\\"scale_distribution\\\" 1 1 \\\"distribution\\\" 1 1 \\\"noise_frequency\\\" 1 1 \\\"noise_time\\\" 1 1 \\\"noise_amount\\\" 3 1 \\\"octaves\\\" 1 1 \\\"lacunarity\\\" 1 1 \\\"amplitude\\\" 1 1 \\\"gain\\\" 1 1 0\"\n  kernelSource \"/* Lightning Kernel by Erwan Leroy 2020\\n *\\n * Simplex Noise based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n * Ported by Mads Hagbarth Lund 2014\\n *\\n * Modifications (fBm) by Erwan Leroy 2018 at Spin VFX\\n *\\n * Simplex license:\\n * Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\n\\ninline float raw_noise_4d(const float4 coord)\\n\\{\\n  int simplex\\[64]\\[4] =\\n  \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n  \\};\\n\\n  int perm\\[512] =\\n  \\{\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n  \\};\\n\\n  int grad4\\[32]\\[4]=\\n  \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n  \\};\\n  float x = coord.x;\\n  float y = coord.y;\\n  float z = coord.z;\\n  float w = coord.w;\\n  float F4 = (sqrt(5.0f)-1.0)/4.0;\\n  float G4 = (5.0-sqrt(5.0f))/20.0;\\n  float n0, n1, n2, n3, n4;\\n  float s = (x + y + z + w) * F4;\\n  int i = fastfloor(x + s);\\n  int j = fastfloor(y + s);\\n  int k = fastfloor(z + s);\\n  int l = fastfloor(w + s);\\n  float t = (i + j + k + l) * G4;\\n  float X0 = i - t;\\n  float Y0 = j - t;\\n  float Z0 = k - t;\\n  float W0 = l - t;\\n  float x0 = x - X0;\\n  float y0 = y - Y0;\\n  float z0 = z - Z0;\\n  float w0 = w - W0;\\n  int c1 = (x0 > y0) ? 32 : 0;\\n  int c2 = (x0 > z0) ? 16 : 0;\\n  int c3 = (y0 > z0) ? 8 : 0;\\n  int c4 = (x0 > w0) ? 4 : 0;\\n  int c5 = (y0 > w0) ? 2 : 0;\\n  int c6 = (z0 > w0) ? 1 : 0;\\n  int c = c1 + c2 + c3 + c4 + c5 + c6;\\n  int i1, j1, k1, l1;\\n  int i2, j2, k2, l2;\\n  int i3, j3, k3, l3;\\n  i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n  j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n  k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n  l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n  i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n  j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n  k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n  l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n  i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n  j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n  k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n  l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n  float x1 = x0 - i1 + G4;\\n  float y1 = y0 - j1 + G4;\\n  float z1 = z0 - k1 + G4;\\n  float w1 = w0 - l1 + G4;\\n  float x2 = x0 - i2 + 2.0*G4;\\n  float y2 = y0 - j2 + 2.0*G4;\\n  float z2 = z0 - k2 + 2.0*G4;\\n  float w2 = w0 - l2 + 2.0*G4;\\n  float x3 = x0 - i3 + 3.0*G4;\\n  float y3 = y0 - j3 + 3.0*G4;\\n  float z3 = z0 - k3 + 3.0*G4;\\n  float w3 = w0 - l3 + 3.0*G4;\\n  float x4 = x0 - 1.0 + 4.0*G4;\\n  float y4 = y0 - 1.0 + 4.0*G4;\\n  float z4 = z0 - 1.0 + 4.0*G4;\\n  float w4 = w0 - 1.0 + 4.0*G4;\\n  int ii = i & 255;\\n  int jj = j & 255;\\n  int kk = k & 255;\\n  int ll = l & 255;\\n  int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n  int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n  int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n  int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n  int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n\\n  float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n\\n  if(t0<0) \\{\\n    n0 = 0.0;\\n  \\}\\n  else\\n  \\{\\n    t0 *= t0;\\n    n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n  \\}\\n\\n  float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n\\n  if(t1<0) \\{\\n    n1 = 0.0;\\n  \\}\\n  else \\{\\n    t1 *= t1;\\n    n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n  \\}\\n\\n  float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n\\n  if(t2<0) \\{\\n    n2 = 0.0;\\n  \\}\\n  else \\{\\n    t2 *= t2;\\n    n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n  \\}\\n\\n  float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n\\n  if(t3<0) \\{\\n    n3 = 0.0;\\n  \\}\\n  else \\{\\n    t3 *= t3;\\n    n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n  \\}\\n\\n  float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n\\n  if(t4<0) \\{\\n    n4 = 0.0;\\n  \\}\\n  else \\{\\n    t4 *= t4;\\n    n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n  \\}\\n  return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\n\\n\\ninline float remap(float val, float ori_min, float ori_max, float new_min, float new_max)\\n\\{\\n  float ori_range = ori_max-ori_min;\\n  float new_range = new_max-new_min;\\n  return (((val - ori_min) * new_range) / ori_range) + new_min;\\n\\n\\}\\n\\ninline float3 mix(float3 _X,float3 _Y,float _A)\\{\\n  return _X*(1.0f-_A)+_Y*_A;\\n\\}\\ninline float mix(float _X,float _Y,float _A)\\{\\n  return _X*(1.0f-_A)+_Y*_A;\\n\\}\\n\\n\\n// Random number generator algorithm from https://www.shadertoy.com/view/Xt23Ry\\ninline float fract (float x) \\{return x-floor(x);\\}\\ninline float random(float co) \\{ return fract(sin(co*(91.3458f)) * 47453.5453f); \\}\\n\\ninline float3 randomv(float3 seed)\\n\\{\\n  float scramble = random(seed.x + seed.y * seed.z);\\n  float3 rand;\\n  rand.x = random(seed.x + scramble + 0.14557f + 0.47917f * seed.z)*2-1;\\n  rand.y = random(seed.y * 0.214447f + scramble * 47.241f * seed.x)*2-1;\\n  rand.z = random(seed.z * scramble + 3.147855f + 0.2114f * seed.y)*2-1;\\n  return normalize(rand);\\n\\}\\n\\nkernel PointLighning : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom> format;\\n  Image<eWrite, eAccessRandom> dst;\\n\\n  param: //Parameters available to the user\\n    int seed, relative_scale;\\n    int2 WHformat;\\n    float3 start, end;\\n    float spread, branch_min, branch_max, scale_min, scale_max, scale_distribution;\\n    float distribution, noise_frequency, noise_time;\\n    float3 noise_amount;\\n    int octaves;\\n    float lacunarity;\\n    float amplitude;\\n    float gain;\\n\\n  void define() \\{\\n    defineParam(WHformat, \\\"format\\\", int2(10,10));\\n  \\}\\n\\nfloat fBm_4d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float total = 0;\\n  float4 frequency = coord;\\n  for( int i=0; i < octaves; i++ ) \\{\\n    total += (float)raw_noise_4d(frequency) * amplitude;\\n    frequency *= lacunarity;\\n    amplitude *= gain;\\n  \\}\\n  return float(total);\\n\\}\\n\\nfloat3 fBm_4d_3d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float3 sample;\\n  sample.x = fBm_4d(octaves, lacunarity, gain, coord, amplitude);\\n  sample.y = fBm_4d(octaves, lacunarity, gain, coord + 100.0f, amplitude);\\n  sample.z = fBm_4d(octaves, lacunarity, gain, coord + 200.0f, amplitude);\\n  return sample;\\n\\}\\n\\n  void process(int2 pos) \\{\\n    // this is highly inneficient, but for the algoritm to work, it needs to be single threaded.\\n    if (pos.x || pos.y ) \\{\\n      return;\\n    \\}\\n    float3 main_vector = end-start;\\n    float2 random_source;\\n    int2 sample_source;\\n\\n    float progress = 0.0f;\\n    float3 branch_start;\\n    float3 branch_end;\\n    float branch_length;\\n    float branch_progress;\\n    float3 position;\\n    float4 noise_source;\\n    float3 noise;\\n    for (int x = 0; x < WHformat.x; x++) \\{\\n      // For the first branch, we use interpolate between the start and end, otherwise from fork to random point\\n      if (x==0) \\{\\n        branch_start = start;\\n        branch_end = end;\\n        branch_length = 1.0f;\\n      \\} else \\{\\n        // Pick from another random point\\n        random_source = float2(random(seed+12.5f+x), random(seed+3.14f+x));\\n        random_source.x = pow(random_source.x, 1/distribution); // Gamma the random value to change distribution\\n        random_source.x = remap(random_source.x, 0, 1, 0, x);\\n        random_source.y = remap(random_source.y, 0, 1, WHformat.y*branch_min, WHformat.y*branch_max) + 0.5f;\\n        random_source.y = max(0.0f, min(float(WHformat.y-1), random_source.y));\\n        sample_source = int2(random_source);\\n        float4 sample = dst(sample_source.x, sample_source.y);\\n        branch_start = float3(sample.x, sample.y, sample.z);\\n        progress = sample.w;\\n        if (relative_scale) \\{\\n          branch_length = length(main_vector) * (1.0f-progress);\\n        \\} else \\{\\n          branch_length = length(main_vector);\\n        \\}\\n        branch_length = branch_length * remap(random(branch_length*x), 0.0f, 1.0f, scale_min, scale_max);  // randomize\\n        branch_length = branch_length * mix(1.0f - float(x)/WHformat.x, 1.0f, scale_distribution);\\n        branch_end = normalize(mix(normalize(main_vector), randomv(float3(x)), spread)) * branch_length + branch_start;\\n      \\}\\n        \\n      // Iterate along the branch\\n      for (int y = 0; y < WHformat.y; y++) \\{\\n        branch_progress = y/(WHformat.y-1.0f);\\n        position = mix(branch_start, branch_end, branch_progress);\\n        noise_source = float4(position.x, position.y, position.z, 1.0f) * noise_frequency;\\n        noise_source.w = x*100.0f + noise_time;\\n        noise = fBm_4d_3d(octaves,lacunarity, gain, noise_source, amplitude);\\n        position = position + (noise * branch_length * (1.0f - fabs(branch_progress * 2.0f - 1.0f))) * noise_amount;\\n        float global_progress = remap(branch_progress, 0.0f, 1.0f, progress, 1.0f);\\n        dst(x,y) = float4(position.x, position.y, position.z, global_progress); \\n      \\}\\n    \\}\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  PointLighning_seed {{parent.seed}}\n  PointLighning_relative_scale {{!parent.absolute}}\n  PointLighning_format {{actual_format.width} {actual_format.height}}\n  PointLighning_start {{parent.start} {parent.start} {parent.start}}\n  PointLighning_end {{parent.end} {parent.end} {parent.end}}\n  PointLighning_spread {{parent.spread}}\n  PointLighning_branch_min {{parent.branch_min}}\n  PointLighning_branch_max {{parent.branch_max}}\n  PointLighning_scale_min {{parent.scale_min+0.001}}\n  PointLighning_scale_max {{parent.scale_max}}\n  PointLighning_scale_distribution {{parent.scale_distribution}}\n  PointLighning_distribution {{parent.branches_distribution}}\n  PointLighning_noise_frequency {{parent.main_frequency}}\n  PointLighning_noise_time {{parent.main_anim}}\n  PointLighning_noise_amount {{parent.main_noise/2} {parent.main_noise/2} {parent.main_noise/2}}\n  PointLighning_octaves 5\n  PointLighning_lacunarity 2\n  PointLighning_amplitude 0.5\n  PointLighning_gain 0.5\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos -456\n  ypos -343\n }\n Reformat {\n  type scale\n  scale {1 {\"max(parent.upsample, 1)\"}}\n  resize distort\n  name Reformat3\n  selected true\n  xpos -456\n  ypos -260\n }\n Dot {\n  name Dot1\n  tile_color 0xa57aaa00\n  xpos -422\n  ypos -234\n }\nset N1e7f3c50 [stack 0]\n Dot {\n  name Dot4\n  tile_color 0xa57aaa00\n  xpos -519\n  ypos -234\n }\nset N1e7f7a70 [stack 0]\n Dot {\n  name Dot10\n  tile_color 0xa57aaa00\n  xpos -813\n  ypos -234\n }\nset N1e7fba10 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  xpos -847\n  ypos -185\n }\n Invert {\n  channels rgba\n  name Invert1\n  xpos -847\n  ypos -151\n }\nset N1e910f80 [stack 0]\n Expression {\n  temp_name0 seed\n  temp_expr0 1\n  temp_name1 grad\n  temp_expr1 y/height\n  channel0 {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  expr0 random(x+seed)*grad+(1-grad)\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression2\n  xpos -745\n  ypos -128\n }\npush $N1e910f80\n ChannelMerge {\n  inputs 2\n  operation multiply\n  mix {{parent.progress_random}}\n  name ChannelMerge1\n  xpos -847\n  ypos -95\n }\n Grade {\n  channels rgba\n  blackpoint {{\"clamp(1-parent.progress, 0, 1)\"}}\n  add 0.001\n  unpremult -rgba.alpha\n  name Grade4\n  xpos -847\n  ypos -33\n }\n Expression {\n  expr0 x==1?0:r\n  expr1 x==1?0:g\n  expr2 x==1?0:b\n  expr3 x==1?0:a\n  name Expression1\n  xpos -847\n  ypos -7\n  disable {{parent.branches!=1 x1027 1}}\n }\n Dot {\n  name Dot9\n  tile_color 0xcccccc00\n  xpos -813\n  ypos 58\n }\nset N1e94a680 [stack 0]\npush $N1e7f7a70\n Multiply {\n  channels rgba\n  value {{parent.secondary_frequency*5} {parent.secondary_frequency*5} {parent.secondary_frequency*5} {parent.secondary_anim}}\n  name Multiply1\n  xpos -553\n  ypos -197\n }\n BlinkScript {\n  kernelSourceFile /Users/madshagbarth/Github/Nuke-Private/Blink/PointRender/Modify/Fractal_v06.cpp\n  recompileCount 61\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Noise4D\\\" iterate pixelWise d32ddf73d710301044f07e5ab3c70d05a63934d4228d345b13c7fd2d2efe8ee2 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 17 \\\"absNoise\\\" Bool 1 AA== \\\"curveNoise\\\" Bool 1 AA== \\\"curveInvert\\\" Bool 1 AA== \\\"curveGain\\\" Float 1 AACAPw== \\\"curveOffset\\\" Float 1 AACAPw== \\\"Octaves\\\" Int 1 CgAAAA== \\\"Gain\\\" Float 1 AAAAPw== \\\"Lacunarity\\\" Float 1 AAAAQA== \\\"Gamma\\\" Float 1 AAAAPw== \\\"amplitude\\\" Float 3 AAAAPwAAAD8AAAA/AAAAAA== \\\"itterations\\\" Int 1 AQAAAA== \\\"Offset\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"Scale\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"suboffset\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"topoffset\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"subscale\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== \\\"topscale\\\" Float 4 AACAPwAAgD8AAIA/AACAPw== 17 \\\"absNoise\\\" 1 1 \\\"curveNoise\\\" 1 1 \\\"curveInvert\\\" 1 1 \\\"curveGain\\\" 1 1 \\\"curveOffset\\\" 1 1 \\\"octaves\\\" 1 1 \\\"gain\\\" 1 1 \\\"lacunarity\\\" 1 1 \\\"gamma\\\" 1 1 \\\"amplitude\\\" 3 1 \\\"itterations\\\" 1 1 \\\"offset\\\" 4 1 \\\"scale\\\" 4 1 \\\"suboffset\\\" 4 1 \\\"topoffset\\\" 4 1 \\\"subscale\\\" 4 1 \\\"topscale\\\" 4 1 0\"\n  kernelSource \"//Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n//Ported by Mads Hagbarth Lund 2014\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\ninline float raw_noise_4d( const float x, const float y, const float z, const float w ) \\n\\{\\nint simplex\\[64]\\[4] = \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n\\};\\n    int perm\\[512] = \\{\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n    \\};\\n   int grad4\\[32]\\[4]= \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n   \\};\\n    float F4 = (sqrt(5.0f)-1.0f)/4.0f;\\n    float G4 = (5.0f-sqrt(5.0f))/20.0f;\\n    float n0, n1, n2, n3, n4;\\n    float s = (x + y + z + w) * F4;\\n    int i = fastfloor(x + s);\\n    int j = fastfloor(y + s);\\n    int k = fastfloor(z + s);\\n    int l = fastfloor(w + s);\\n    float t = (i + j + k + l) * G4;\\n    float X0 = i - t;\\n    float Y0 = j - t;\\n    float Z0 = k - t;\\n    float W0 = l - t;\\n\\n    float x0 = x - X0;\\n    float y0 = y - Y0;\\n    float z0 = z - Z0;\\n    float w0 = w - W0;\\n    int c1 = (x0 > y0) ? 32 : 0;\\n    int c2 = (x0 > z0) ? 16 : 0;\\n    int c3 = (y0 > z0) ? 8 : 0;\\n    int c4 = (x0 > w0) ? 4 : 0;\\n    int c5 = (y0 > w0) ? 2 : 0;\\n    int c6 = (z0 > w0) ? 1 : 0;\\n    int c = c1 + c2 + c3 + c4 + c5 + c6;\\n\\n    int i1, j1, k1, l1;\\n    int i2, j2, k2, l2;\\n    int i3, j3, k3, l3;\\n    i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n    j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n    k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n    l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n    i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n    j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n    k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n    l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n    i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n    j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n    k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n    l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n    float x1 = x0 - i1 + G4;\\n    float y1 = y0 - j1 + G4;\\n    float z1 = z0 - k1 + G4;\\n    float w1 = w0 - l1 + G4;\\n    float x2 = x0 - i2 + 2.0*G4;\\n    float y2 = y0 - j2 + 2.0*G4;\\n    float z2 = z0 - k2 + 2.0*G4;\\n    float w2 = w0 - l2 + 2.0*G4;\\n    float x3 = x0 - i3 + 3.0*G4;\\n    float y3 = y0 - j3 + 3.0*G4;\\n    float z3 = z0 - k3 + 3.0*G4;\\n    float w3 = w0 - l3 + 3.0*G4;\\n    float x4 = x0 - 1.0 + 4.0*G4;\\n    float y4 = y0 - 1.0 + 4.0*G4;\\n    float z4 = z0 - 1.0 + 4.0*G4;\\n    float w4 = w0 - 1.0 + 4.0*G4;\\n    int ii = i & 255;\\n    int jj = j & 255;\\n    int kk = k & 255;\\n    int ll = l & 255;\\n    int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n    int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n    int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n    int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n    int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n    float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n    if(t0<0) n0 = 0.0;\\n    else \\{\\n        t0 *= t0;\\n        n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n    \\}\\n    float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n    if(t1<0) n1 = 0.0;\\n    else \\{\\n        t1 *= t1;\\n        n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n    \\}\\n    float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n    if(t2<0) n2 = 0.0;\\n    else \\{\\n        t2 *= t2;\\n        n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n    \\}\\n    float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n    if(t3<0) n3 = 0.0;\\n    else \\{\\n        t3 *= t3;\\n        n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n    \\}\\n    float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n    if(t4<0) n4 = 0.0;\\n    else \\{\\n        t4 *= t4;\\n        n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n    \\}\\n    return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\n\\n\\n\\n\\nkernel Noise4D : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite, eAccessPoint> dst;\\nparam:\\n    bool absNoise;\\n    bool curveNoise;\\n    bool curveInvert;\\n    float curveGain;\\n    float curveOffset;\\n    int octaves;\\n    float gain;\\n    float lacunarity;\\n    float gamma;\\n    float3 amplitude;\\n    int itterations;\\n    float4 offset;\\n    float4 scale;\\n    float4 suboffset;\\n    float4 topoffset;\\n    float4 subscale;\\n    float4 topscale;\\n\\n\\n  void define() \\{\\n        defineParam (absNoise, \\\"absNoise\\\", false);    \\n        defineParam (curveNoise, \\\"curveNoise\\\", false);    \\n        defineParam (curveInvert, \\\"curveInvert\\\", false);   \\n        defineParam (curveGain, \\\"curveGain\\\", 1.0f);\\n        defineParam (curveOffset, \\\"curveOffset\\\", 1.0f);\\n        defineParam (octaves, \\\"Octaves\\\", 10);\\n        defineParam (gain, \\\"Gain\\\", 0.5f);\\n        defineParam (lacunarity, \\\"Lacunarity\\\", 2.0f);\\n        defineParam (gamma, \\\"Gamma\\\", 0.5f);\\n        defineParam (amplitude, \\\"amplitude\\\", float3(0.5f));\\n        defineParam (itterations, \\\"itterations\\\", 1);\\n        defineParam(offset, \\\"Offset\\\", float4(0.0f, 0.0f, 0.0f,0.0f));\\n        defineParam(scale, \\\"Scale\\\", float4(1.0f, 1.0f, 1.0f,1.0f));\\n        defineParam(suboffset, \\\"suboffset\\\", float4(1.0f, 1.0f, 1.0f,1.0f));\\n        defineParam(topoffset, \\\"topoffset\\\", float4(1.0f, 1.0f, 1.0f,1.0f));\\n        defineParam(subscale, \\\"subscale\\\", float4(1.0f, 1.0f, 1.0f,1.0f));\\n        defineParam(topscale, \\\"topscale\\\", float4(1.0f, 1.0f, 1.0f,1.0f));        \\n  \\}\\n\\nfloat octave_noise_4d( const float octaves, const float persistence, const float scale, const float x, const float y, const float z, const float w ) \\n\\{\\n    float total = 0.0f;\\n    float current;\\n    float last = 1.0f;\\n    float frequency = scale;\\n    float amplitude = 1.0f;\\n    float maxAmplitude = 0.0f;\\n    float4 Tempoffset;\\n    float4 Tempscale;\\n\\n\\n    for( int i=0; i < octaves; i++ ) \\{\\n\\n        /*\\n        if (i == 0) \\{\\n            total += (float)raw_noise_4d( (x+suboffset.x) * frequency, (y+suboffset.y) * frequency, (z+suboffset.z) * frequency, (w+suboffset.w) * frequency ) * amplitude;\\n        \\}\\n        else if (i == octaves-1) \\{\\n            total += (float)raw_noise_4d( (x+topoffset.x) * frequency, (y+topoffset.y) * frequency, (z+topoffset.z) * frequency, (w+topoffset.w) * frequency ) * amplitude;\\n        \\}\\n        else \\{\\n            total += (float)raw_noise_4d( x * frequency, y * frequency, z * frequency, w * frequency ) * amplitude;\\n        \\}\\n        */\\n\\n\\n        Tempscale = (topscale * (i/(octaves-1.0f)))+(subscale * (1-(i/(octaves-1.0f))));       \\n        Tempoffset = (topoffset * (i/(octaves-1.0f)))+(suboffset * (1-(i/(octaves-1.0f))));\\n        current = (float)raw_noise_4d(   ((x*Tempscale.x)+Tempoffset.x) * frequency, \\n                                        ((y*Tempscale.y)+Tempoffset.y) * frequency, \\n                                        ((z*Tempscale.z)+Tempoffset.z) * frequency, \\n                                        ((w*Tempscale.w)+Tempoffset.w) * frequency \\n                                        ) * amplitude;\\n        if (i == 0 && curveNoise)\\{\\n            if (curveInvert)\\{\\n                last = 0.5f-current;  \\n            \\}\\n            else\\{\\n                last = current;  \\n            \\}\\n               \\n        \\}\\n        current = curveNoise?current*((last+curveOffset)*curveGain):current;\\n        total += absNoise?fabs(current):current;\\n        frequency *= 2.0f;\\n        maxAmplitude += amplitude;\\n        amplitude *= persistence;\\n\\n    \\}\\n    return float(total / maxAmplitude);\\n\\}\\n\\n\\n\\n\\n  void process() \\{\\n    float4 srcSample = float4(src(0),src(1),src(2),src(3));\\n    float sampleR,sampleG,sampleB;\\n    for( int i=0; i < itterations; i++ ) \\{\\n        sampleR = (float)octave_noise_4d(float(octaves), gain, lacunarity, ( srcSample.x * scale.x ) + offset.x, ( srcSample.y * scale.y ) + offset.y,  ( srcSample.z * scale.z ) + offset.z, ( srcSample.w * scale.w ) + offset.w) * amplitude.x;\\n        sampleG = (float)octave_noise_4d(float(octaves), gain, lacunarity, ( srcSample.x * scale.x ) + offset.x, ( srcSample.y * scale.y ) + offset.y,  ( srcSample.z * scale.z ) + offset.z, ( srcSample.w * scale.w ) + offset.w - 100.0f) * amplitude.y;\\n        sampleB = (float)octave_noise_4d(float(octaves), gain, lacunarity, ( srcSample.x * scale.x ) + offset.x, ( srcSample.y * scale.y ) + offset.y,  ( srcSample.z * scale.z ) + offset.z, ( srcSample.w * scale.w ) + offset.w + 200.0f) * amplitude.z;\\n    \\}\\n    dst() = float4(sampleR,sampleG,sampleB,1.0f);\\n\\}\\n\\};\"\n  rebuild \"\"\n  Noise4D_curveGain 3\n  Noise4D_curveOffset 0\n  Noise4D_Octaves 8\n  Noise4D_Gain 0.18\n  Noise4D_Lacunarity 0.72\n  Noise4D_Gamma 0.79\n  Noise4D_amplitude {-1.3 -1.3 -1.3}\n  Noise4D_Offset {0.5 0 0 0}\n  Noise4D_Scale {0.35 0.35 0.35 0.35}\n  Noise4D_suboffset {10.09 0 0 0}\n  Noise4D_topoffset {0 0 0 0}\n  Noise4D_subscale {0.475 16.475 0.475 0.475}\n  Noise4D_topscale {10 3 12 3}\n  rebuild_finalise \"\"\n  name Noise4D1\n  xpos -553\n  ypos -150\n }\n Multiply {\n  channels rgba\n  value {{parent.secondary_noise/50} {parent.secondary_noise/50} {parent.secondary_noise/50} {parent.secondary_noise/50}}\n  name Multiply2\n  xpos -553\n  ypos -84\n }\n Dot {\n  name Dot7\n  tile_color 0x7aa9ff00\n  xpos -519\n  ypos -8\n }\npush $N1e7f3c50\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge1\n  xpos -456\n  ypos -12\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -456\n  ypos 48\n }\n Dot {\n  name Dot8\n  tile_color 0x9e3c6300\n  xpos -422\n  ypos 182\n }\npush $N1e94a680\npush $N1e7fba10\n Dot {\n  name Dot3\n  tile_color 0xa57aaa00\n  xpos -964\n  ypos -234\n }\nset N1e84fdd0 [stack 0]\n Shuffle {\n  alpha white\n  name Shuffle3\n  xpos -998\n  ypos -172\n }\n Multiply {\n  channels rgba\n  value {{parent.brighness_frequency} {parent.brighness_frequency} {parent.brighness_frequency} {parent.brighness_anim}}\n  name Multiply3\n  xpos -998\n  ypos -146\n }\n BlinkScript {\n  recompileCount 27\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Noise4D\\\" iterate pixelWise d60f21004827daf93cc7aae3c8a9d35a464dc4075e83f5304202d888c93a31ad 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 5 \\\"octaves\\\" Int 1 CAAAAA== \\\"lacunarity\\\" Float 1 AAAAQA== \\\"amplitude\\\" Float 1 mpkZPw== \\\"gain\\\" Float 1 AAAAPw== \\\"mode\\\" Int 1 AAAAAA== 5 \\\"octaves\\\" 1 1 \\\"lacunarity\\\" 1 1 \\\"amplitude\\\" 1 1 \\\"gain\\\" 1 1 \\\"mode\\\" 1 1 0\"\n  kernelSource \"//Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n//Ported by Mads Hagbarth Lund 2014\\n//Modifications (fBm and Turbulence) by Erwan Leroy 2018 at Spin VFX\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\n\\ninline float raw_noise_4d(const float4 coord)\\n\\{\\n  int simplex\\[64]\\[4] =\\n  \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n  \\};\\n\\n  int perm\\[512] =\\n  \\{\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n  \\};\\n\\n  int grad4\\[32]\\[4]=\\n  \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n  \\};\\n  float x = coord.x;\\n  float y = coord.y;\\n  float z = coord.z;\\n  float w = coord.w;\\n  float F4 = (sqrt(5.0f)-1.0)/4.0;\\n  float G4 = (5.0-sqrt(5.0f))/20.0;\\n  float n0, n1, n2, n3, n4;\\n  float s = (x + y + z + w) * F4;\\n  int i = fastfloor(x + s);\\n  int j = fastfloor(y + s);\\n  int k = fastfloor(z + s);\\n  int l = fastfloor(w + s);\\n  float t = (i + j + k + l) * G4;\\n  float X0 = i - t;\\n  float Y0 = j - t;\\n  float Z0 = k - t;\\n  float W0 = l - t;\\n  float x0 = x - X0;\\n  float y0 = y - Y0;\\n  float z0 = z - Z0;\\n  float w0 = w - W0;\\n  int c1 = (x0 > y0) ? 32 : 0;\\n  int c2 = (x0 > z0) ? 16 : 0;\\n  int c3 = (y0 > z0) ? 8 : 0;\\n  int c4 = (x0 > w0) ? 4 : 0;\\n  int c5 = (y0 > w0) ? 2 : 0;\\n  int c6 = (z0 > w0) ? 1 : 0;\\n  int c = c1 + c2 + c3 + c4 + c5 + c6;\\n  int i1, j1, k1, l1;\\n  int i2, j2, k2, l2;\\n  int i3, j3, k3, l3;\\n  i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n  j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n  k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n  l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n  i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n  j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n  k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n  l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n  i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n  j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n  k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n  l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n  float x1 = x0 - i1 + G4;\\n  float y1 = y0 - j1 + G4;\\n  float z1 = z0 - k1 + G4;\\n  float w1 = w0 - l1 + G4;\\n  float x2 = x0 - i2 + 2.0*G4;\\n  float y2 = y0 - j2 + 2.0*G4;\\n  float z2 = z0 - k2 + 2.0*G4;\\n  float w2 = w0 - l2 + 2.0*G4;\\n  float x3 = x0 - i3 + 3.0*G4;\\n  float y3 = y0 - j3 + 3.0*G4;\\n  float z3 = z0 - k3 + 3.0*G4;\\n  float w3 = w0 - l3 + 3.0*G4;\\n  float x4 = x0 - 1.0 + 4.0*G4;\\n  float y4 = y0 - 1.0 + 4.0*G4;\\n  float z4 = z0 - 1.0 + 4.0*G4;\\n  float w4 = w0 - 1.0 + 4.0*G4;\\n  int ii = i & 255;\\n  int jj = j & 255;\\n  int kk = k & 255;\\n  int ll = l & 255;\\n  int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n  int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n  int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n  int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n  int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n\\n  float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n\\n  if(t0<0) \\{\\n    n0 = 0.0;\\n  \\}\\n  else\\n  \\{\\n    t0 *= t0;\\n    n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n  \\}\\n\\n  float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n\\n  if(t1<0) \\{\\n    n1 = 0.0;\\n  \\}\\n  else \\{\\n    t1 *= t1;\\n    n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n  \\}\\n\\n  float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n\\n  if(t2<0) \\{\\n    n2 = 0.0;\\n  \\}\\n  else \\{\\n    t2 *= t2;\\n    n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n  \\}\\n\\n  float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n\\n  if(t3<0) \\{\\n    n3 = 0.0;\\n  \\}\\n  else \\{\\n    t3 *= t3;\\n    n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n  \\}\\n\\n  float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n\\n  if(t4<0) \\{\\n    n4 = 0.0;\\n  \\}\\n  else \\{\\n    t4 *= t4;\\n    n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n  \\}\\n  return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\n\\ninline float fBm_4d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float total = 0;\\n  float4 frequency = coord;\\n  for( int i=0; i < octaves; i++ ) \\{\\n    total += (float)raw_noise_4d(frequency) * amplitude;\\n    frequency *= lacunarity;\\n    amplitude *= gain;\\n  \\}\\n  return float(total)*0.5f+0.5f;\\n\\}\\n\\ninline float turbulence_4d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float total = 0;\\n  float4 frequency = coord;\\n  for( int i=0; i < octaves; i++ ) \\{\\n    total += fabs((float)raw_noise_4d(frequency)) * amplitude;\\n    frequency *= lacunarity;\\n    amplitude *= gain;\\n  \\}\\n  return float(total);\\n\\}\\n\\nkernel Noise4D : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite, eAccessPoint> dst;\\nparam:\\n  int octaves;\\n  float lacunarity;\\n  float amplitude;\\n  float gain;\\n  int mode;\\n\\n  void define() \\{\\n    defineParam(octaves, \\\"octaves\\\", 8);\\n    defineParam(lacunarity, \\\"lacunarity\\\",  2.0f);\\n    defineParam(amplitude, \\\"amplitude\\\", 0.6f);\\n    defineParam(gain, \\\"gain\\\", 0.5f);\\n  \\}\\n  void process() \\{\\n    float sample;\\n    if (mode == 0)\\{\\n      sample = (float)fBm_4d(float(octaves),lacunarity,gain,src(), amplitude);\\n    \\} else \\{\\n      sample = (float)turbulence_4d(float(octaves),lacunarity,gain,src(), amplitude);\\n    \\}\\n    dst() = float4(sample,sample,sample,sample);\\n\\}\\n\\};\"\n  rebuild \"\"\n  Noise4D_octaves 5\n  Noise4D_amplitude 0.5\n  Noise4D_mode 1\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos -998\n  ypos -110\n }\n Multiply {\n  channels rgba\n  value {{parent.brighness_noise*5}}\n  name Multiply4\n  xpos -998\n  ypos -72\n }\n Dot {\n  name Dot12\n  tile_color 0x7aa9ff00\n  xpos -964\n  ypos -6\n }\npush $N1e84fdd0\n Dot {\n  name Dot11\n  tile_color 0xa57aaa00\n  xpos -1083\n  ypos -234\n }\n Grade {\n  white 0\n  add {{1-parent.falloff}}\n  white_clamp true\n  unpremult -rgba.alpha\n  name Grade2\n  xpos -1117\n  ypos -162\n }\n Ramp {\n  p0 {{width} 0}\n  p1 {0 0}\n  name Ramp2\n  xpos -1117\n  ypos -115\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{parent.brighness_noise}}\n  name Merge2\n  xpos -1117\n  ypos -10\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix {{parent.taper}}\n  name Merge3\n  xpos -1117\n  ypos 54\n }\n Multiply {\n  channels rgba\n  value {{parent.color} {parent.color} {parent.color} 1}\n  name Multiply5\n  xpos -1117\n  ypos 95\n }\nadd_layer {pos pos.red pos.green pos.blue pos.alpha}\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 pos.red\n  from1 rgba.green\n  to1 pos.green\n  from2 rgba.blue\n  to2 pos.blue\n  from3 rgba.alpha\n  to3 pos.alpha\n  name Copy1\n  xpos -1117\n  ypos 152\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -1117\n  ypos 237\n }\n Dot {\n  name Dot6\n  tile_color 0x9e3c6300\n  xpos -1083\n  ypos 313\n }\n Output {\n  name Output1\n  xpos -1117\n  ypos 353\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LineTool.gizmo",
    "content": "Group {\n name LineTool\n tile_color 0xc4f8cff\n note_font \"Verdana Bold Bold Bold\"\n note_font_color 0xffd199ff\n selected true\n addUserKnob {20 line l Line}\n addUserKnob {41 from l From T Parameters.from}\n addUserKnob {41 to l To T Parameters.to}\n addUserKnob {26 \"\"}\n addUserKnob {41 strokeWidth l Width T Parameters.strokeWidth}\n addUserKnob {41 color l Color T Parameters.color}\n addUserKnob {26 \"\"}\n addUserKnob {41 subsample l Subsample T Parameters.subsample}\n addUserKnob {41 replace l \"Output Line Only\" T Parameters.replace}\n addUserKnob {26 \"\"}\n addUserKnob {20 infoTab}\n addUserKnob {26 info l Info T \"\\tName:......mcp_Line\\n\\tVersion:....1.1.0\\n\\tAuthor:.....Fredrik Brännbacka\\n\\tEmail:.......fredrik@madcrew.se\\n\\tCompany:..Mad Crew\\n\\tWeb:........www.madcrew.se\\n\"}\n}\n Constant {\n  inputs 0\n  color {{Parameters.color} {Parameters.color} {Parameters.color} {Parameters.color}}\n  format \"512 512 0 0 512 512 1 square_512\"\n  name LineSolid\n  xpos 462\n  ypos 130\n }\n Reformat {\n  type \"to box\"\n  box_width {{(Parameters.subsample+1)*50}}\n  box_height {{\"sqrt(pow((Parameters.to.x-Parameters.from.x), 2)+pow((Parameters.to.y-Parameters.from.y), 2))*(Parameters.subsample+1)\"}}\n  box_fixed true\n  resize distort\n  filter Impulse\n  black_outside true\n  pbb true\n  name ReformatLine\n  xpos 462\n  ypos 202\n }\n Transform {\n  translate {{(Parameters.subsample+1)*-25} 0}\n  scale {1 1}\n  filter Impulse\n  name CenterPivot\n  xpos 462\n  ypos 228\n }\n Transform {\n  translate {{Parameters.from*(Parameters.subsample+1)} {Parameters.from*(Parameters.subsample+1)}}\n  rotate {{\"degrees(atan2((Parameters.to.y-Parameters.from.y), (Parameters.to.x-Parameters.from.x)))-90\"}}\n  scale {{Parameters.strokeWidth/50} 1}\n  filter Impulse\n  name TransformLine\n  xpos 462\n  ypos 248\n }\n Crop {\n  box {0 0 {Parameters.width*(Parameters.subsample+1)} {Parameters.height*(Parameters.subsample+1)}}\n  reformat true\n  crop false\n  name MatchBBox\n  xpos 462\n  ypos 274\n }\n Reformat {\n  type scale\n  scale {{1/(Parameters.subsample+1)}}\n  name Downsample\n  xpos 462\n  ypos 298\n }\nset N5358e010 [stack 0]\n Dot {\n  name Dot1\n  xpos 496\n  ypos 352\n }\npush $N5358e010\n Input {\n  inputs 0\n  name BG\n  xpos 320\n  ypos 93\n }\n Constant {\n  inputs 0\n  name Constant1\n  xpos 187\n  ypos 106\n }\n Switch {\n  inputs 2\n  which {{(BG.bbox.width*BG.bbox.height)>1}}\n  name ForceBackground\n  xpos 320\n  ypos 130\n }\n NoOp {\n  name Parameters\n  xpos 320\n  ypos 156\n  addUserKnob {20 line l Line}\n  addUserKnob {3 test}\n  test {{subsample}}\n  addUserKnob {4 subsample l Subsample M {1x1 2x2 3x3}}\n  addUserKnob {19 color l Color}\n  color {0.04929798841 0.308957994 0.547755599 1}\n  addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 strokeWidth l Width R 0 10}\n  strokeWidth 2\n  addUserKnob {12 from l From}\n  from {1088 462}\n  addUserKnob {12 to l To}\n  to {1312.400024 560.2000122}\n  addUserKnob {6 replace l \"Output Line Only\" +STARTLINE}\n  replace true\n }\n Merge2 {\n  inputs 2\n  bbox B\n  name MergeLine\n  xpos 320\n  ypos 298\n }\n Switch {\n  inputs 2\n  which {{Parameters.replace}}\n  name Switch1\n  xpos 320\n  ypos 349\n }\n Output {\n  name OUT\n  xpos 320\n  ypos 449\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Looper.gizmo",
    "content": "Group {\n name Looper\n inputs 2\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nclipendtrue = str(n\\['avoidclipend'].value()) == 'Before First Frame '\\nloopframes = str(int(n\\['toframe'].value()-n\\['fromframe'].value()+1))\\nloopfirst = str(int(n\\['fromframe'].value()-(n\\['toframe'].value()-n\\['fromframe'].value())+(clipendtrue*(n\\['toframe'].value()-n\\['fromframe'].value()))))\\nlooplast = str(int(n\\['toframe'].value()+(clipendtrue*(n\\['toframe'].value()-n\\['fromframe'].value()))))\\n\\n\\ntotal = '<span style=\\\"color:#797979;\\\">Loop length: ' + '<span style=\\\"color:#A3A05E;\\\">' + loopframes\\nn\\['totalframes'].setValue(str(total))\\n\\nloopfr = '<span style=\\\"color:#797979;\\\">Frame range in use: ' + '<span style=\\\"color:#579097;\\\">' + loopfirst + ' - ' + looplast\\nn\\['loopframerange'].setValue(str(loopfr))\\n\\n\\nif k.name() == \\\"looptype\\\":\\n    channelsOn = k.value() != 'Dissolve  (Fast - Simple)';\\n    n.knobs()\\['retimedChannels'].setVisible(channelsOn)\\n\\n    channelsOn = k.value() != 'Morph  (Slower - Complex) ';\\n    n.knobs()\\['channels'].setVisible(channelsOn)\\n    \\nif n.input(1) ==None :\\n    n\\['vectoroutput'].setEnabled(False)\\nelse:\\n    n\\['vectoroutput'].setEnabled(True)\"\n tile_color 0x80702ff\n note_font Verdana\n note_font_size 12\n note_font_color 0xb79d63ff\n addUserKnob {20 Looper}\n addUserKnob {41 channels l Channels T Dissolve1.channels}\n addUserKnob {41 retimedChannels l Channels +HIDDEN T Kronos3.retimedChannels}\n addUserKnob {26 _____________________ l \"\" +STARTLINE}\n addUserKnob {68 looptype l \"Loop Method\" t \"\\nDissolve: Uses a simple Dissolve node to dissolve the input clip between an offset version of the same clip. The offset amount is determined by the number of frames looped. Works great when looping clips with constant/similar movement like rain or snow stock footage.\\n\\nMorph: Similar to the Dissolve method but instead uses a Kronos node to generate a morphed loop.\\n\\nFgMatte input: An optional matte of the foreground can be used which may improve Kronos's motion estimation.\\n\" M {\"Dissolve  (Fast - Simple)\" \"Morph  (Slower - Complex) \" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {4 avoidclipend l \"    Avoid Clip End \" t \"Negatively offsets the input clip to avoid looping unexisting frames before loop's first frame.\\n\\nTurning this off will avoid frames after loop's last frame.\" -STARTLINE M {Off \"Before First Frame \" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n avoidclipend \"Before First Frame \"\n addUserKnob {20 vectorgroup l \"Vector Generator Settings\" n 1}\n vectorgroup 0\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T Kronos3.useGPUIfAvailable}\n addUserKnob {41 vectorDetailReg l \"Vector Detail\" T Kronos3.vectorDetailReg}\n addUserKnob {41 strengthReg l Strength T Kronos3.strengthReg}\n addUserKnob {41 resampleType l Resampling T Kronos3.resampleType}\n addUserKnob {4 vectoroutput l Output +DISABLED M {Result Matte Foreground \"Background \"}}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 ___________________ l \"\" +STARTLINE T \" \"}\n addUserKnob {3 fromframe l \"Loop from\"}\n fromframe 1001\n addUserKnob {3 toframe l \" to \" -STARTLINE}\n toframe 1040\n addUserKnob {26 totalframes l \"   \" -STARTLINE T \"<span style=\\\"color:#797979;\\\">Loop length: <span style=\\\"color:#A3A05E;\\\">40\"}\n addUserKnob {26 loopframerange l \"   \" t \"Input's frame range used in the loop\" -STARTLINE T \"<span style=\\\"color:#797979;\\\">Frame range in use: <span style=\\\"color:#579097;\\\">1001 - 1079\"}\n addUserKnob {7 blendlength l \"Blend Length\" t \"How long the blend / transition time will be inbetween the specified loop range.\\n\\nExample:\\n\\nLoop from 0 to 40\\nBlend Length 1 = Blends from frame 0 to 40\\nBlend Length 0.5 = Blends from frame 10 to 30\" R 0.1 1}\n blendlength 1\n addUserKnob {26 _______ l \" \" T \" \"}\n addUserKnob {26 credits_ l \" \" T \"<font size=\\\"5\\\"><span style=\\\"color:#575757;\\\">Looper<font size=\\\"2\\\"><span style=\\\"color:#5a5a5a;\\\"> v1.2 &nbsp; │ &nbsp; <font size=\\\"1\\\">B Y &nbsp; D A M I A N &nbsp; B I N D E R\"}\n}\n Input {\n  inputs 0\n  name FgMatte\n  xpos 1043\n  number 1\n }\n TimeOffset {\n  time_offset {{\"parent.fromframe - parent.toframe\"}}\n  time \"\"\n  name TimeOffset2\n  xpos 1043\n  ypos 89\n  disable {{clamp(!parent.avoidclipend)}}\n }\nset N5239fe00 [stack 0]\n Input {\n  inputs 0\n  name Source\n  xpos 764\n  ypos -234\n }\n TimeOffset {\n  time_offset {{\"parent.fromframe - parent.toframe\"}}\n  time \"\"\n  name TimeOffset1\n  xpos 764\n  ypos -157\n  disable {{clamp(!parent.avoidclipend)}}\n }\n Dot {\n  name Dot5\n  xpos 798\n  ypos -73\n }\nset N5247c800 [stack 0]\n Dot {\n  name Dot4\n  xpos 1256\n  ypos -73\n }\nadd_layer {fake_alpha fake_alpha.alpha}\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 fake_alpha.alpha\n  name Copy1\n  xpos 1222\n  ypos 83\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Retime {\n  input.first {{parent.fromframe}}\n  input.first_lock true\n  input.last {{parent.toframe}}\n  input.last_lock true\n  output.first {{parent.fromframe}}\n  output.first_lock true\n  output.last {{(parent.toframe*2-parent.fromframe)+1}}\n  output.last_lock true\n  speed 0.5\n  filter nearest\n  time \"\"\n  name Retime3\n  xpos 1222\n  ypos 248\n }\npush $N5239fe00\n TimeOffset {\n  time_offset {{\"-(parent.fromframe - parent.toframe)+1\"}}\n  time \"\"\n  name TimeOffset5\n  xpos 876\n  ypos 89\n }\npush $N5247c800\n TimeOffset {\n  time_offset {{\"-(parent.fromframe - parent.toframe)+1\"}}\n  time \"\"\n  name TimeOffset4\n  xpos 764\n  ypos 89\n }\n Dot {\n  name Dot2\n  xpos 798\n  ypos 253\n }\nset N524af800 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 fake_alpha.alpha\n  name Copy3\n  xpos 876\n  ypos 243\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Retime {\n  input.first {{parent.fromframe}}\n  input.first_lock true\n  input.last {{parent.toframe}}\n  input.last_lock true\n  output.first {{parent.fromframe}}\n  output.first_lock true\n  output.last {{(parent.toframe*2-parent.fromframe)+1}}\n  output.last_lock true\n  speed 0.5\n  filter nearest\n  time \"\"\n  name Retime4\n  xpos 1030\n  ypos 249\n }\n Switch {\n  inputs 2\n  which {{\"(frame - (1 + parent.fromframe))%2\"}}\n  name Switch4\n  xpos 1125\n  ypos 360\n }\nset N524aec00 [stack 0]\n Dot {\n  name Dot6\n  xpos 1288\n  ypos 364\n }\n Shuffle {\n  in fake_alpha\n  out alpha\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1254\n  ypos 457\n }\npush $N524aec00\n Kronos {\n  inputs 2\n  timing2 Frame\n  timingFrame2 {{\"((frame-parent.fromframe)*2+parent.fromframe) + clamp((-((parent.fromframe-((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1)) - frame)) / (-((parent.fromframe-((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1)) - (parent.toframe+1+(((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1))))))\"}}\n  showLegacyMode false\n  motionEstimation Regularized\n  vectorDetailReg 0.4\n  strengthReg 1.4\n  output {{parent.vectoroutput}}\n  matteChannel {{useMatte==1?5:0}}\n  legacyModeNuke9 false\n  vectorSpacing 40\n  name Kronos3\n  xpos 1125\n  ypos 457\n  addUserKnob {20 User}\n  addUserKnob {6 useMatte l \"use matte\" +STARTLINE}\n  useMatte {{\"\\[exists parent.input1]\"}}\n }\n Remove {\n  channels fake_alpha\n  name Remove1\n  xpos 1125\n  ypos 552\n }\npush $N524af800\npush $N5247c800\n Dot {\n  name Dot1\n  xpos 352\n  ypos -73\n }\n Dissolve {\n  inputs 2\n  channels rgba\n  which {{\"clamp((-((parent.fromframe-((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1)) - frame)) / (-((parent.fromframe-((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1)) - (parent.toframe+1+(((parent.toframe+1-parent.fromframe)/2)*(parent.blendlength-1))))))\"}}\n  name Dissolve1\n  xpos 318\n  ypos 249\n }\n Dot {\n  name Dot3\n  xpos 352\n  ypos 544\n }\n Switch {\n  inputs 2\n  which {{parent.looptype}}\n  name Switch2\n  xpos 763\n  ypos 660\n }\n TimeClip {\n  time \"\"\n  first {{parent.fromframe}}\n  before loop\n  last {{parent.toframe}}\n  after loop\n  origfirst 0\n  origlast 0\n  origset true\n  name TimeClip1\n  xpos 763\n  ypos 753\n }\n Output {\n  name Output1\n  xpos 763\n  ypos 842\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaGrain.gizmo",
    "content": "Group {\n name LumaGrain\n help \"<b><u>L_Grain_v04\\t</b></u>\\t\\nAdded functionality to Nuke's default grain node.\\n \\n<b>\\\"High” - </b>allows control to reduce the grain being added to the brighter parts of the image. \\n\\n<b>\\\"Softness” - </b>will blur the grain being added to the image. \\n\\n<b>\\\"Saturation\\\"</b> and <b>\\\"Luminance” - </b> sliders allow you to reduce either of these values from your grain. \\n\\n<i>(For any questions, comments or suggestions please email gizmos@luma-pictures.com)</i>\"\n note_font \"Bitstream Vera Sans\"\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 L_Grain}\n addUserKnob {26 \"\" l Size}\n addUserKnob {7 rSize R 0 3}\n rSize 1.16\n addUserKnob {7 gSize R 0 3}\n gSize 1.48\n addUserKnob {7 bSize R 0 3}\n bSize 1.88\n addUserKnob {26 \"\" l Blacks}\n addUserKnob {7 rBlack}\n rBlack 0.11\n addUserKnob {7 gBlack}\n gBlack 0.125\n addUserKnob {7 bBlack}\n bBlack 0.19\n addUserKnob {20 Minimum n 1}\n Minimum 0\n addUserKnob {7 rMinimum}\n addUserKnob {7 gMinimum}\n addUserKnob {7 bMinimum}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\" l Mids}\n addUserKnob {7 rMid}\n rMid 0.575\n addUserKnob {7 gMid}\n gMid 0.63\n addUserKnob {7 bMid}\n bMid 0.915\n addUserKnob {20 Highs n 1}\n Highs 0\n addUserKnob {26 \"\" l Highs}\n addUserKnob {7 rHigh}\n rHigh 0.93\n addUserKnob {7 gHigh}\n gHigh 0.945\n addUserKnob {7 bHigh}\n bHigh 0.995\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {20 Irregularity n 1}\n Irregularity 0\n addUserKnob {7 rIrregularity}\n rIrregularity 0.73\n addUserKnob {7 gIrregularity}\n gIrregularity 0.73\n addUserKnob {7 bIrregularity}\n bIrregularity 0.73\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 Softness n 1}\n Softness 0\n addUserKnob {7 rSoftness R 0 2}\n addUserKnob {7 gSoftness R 0 2}\n addUserKnob {7 bSoftness R 0 2}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {20 Other n 1}\n Other 0\n addUserKnob {7 GrainSaturation}\n GrainSaturation 1\n addUserKnob {7 GrainLuminance}\n GrainLuminance 1\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {7 OverallMix}\n OverallMix 1\n addUserKnob {6 alphaMask l Mask +STARTLINE}\n addUserKnob {6 Invert -STARTLINE}\n addUserKnob {20 MaskGrade n 1}\n MaskGrade 0\n addUserKnob {41 gamma T L_Grain_MaskGradeNode.gamma}\n addUserKnob {41 add l offset T L_Grain_MaskGradeNode.add}\n addUserKnob {41 multiply T L_Grain_MaskGradeNode.multiply}\n addUserKnob {41 white l gain T L_Grain_MaskGradeNode.white}\n addUserKnob {41 black l lift T L_Grain_MaskGradeNode.black}\n addUserKnob {41 whitepoint T L_Grain_MaskGradeNode.whitepoint}\n addUserKnob {41 blackpoint T L_Grain_MaskGradeNode.blackpoint}\n addUserKnob {41 black_clamp l \"black clamp\" T L_Grain_MaskGradeNode.black_clamp}\n addUserKnob {41 white_clamp l \"white clamp\" -STARTLINE T L_Grain_MaskGradeNode.white_clamp}\n addUserKnob {20 endGroup_6 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {22 Button l \" Luma Pictures \" T \"import os\\nimport sys\\nimport subprocess\\n\\ndef _run(cmd, wait=False):\\n    opener = subprocess.Popen(cmd)\\n    if wait:\\n        opener.wait()\\n    return opener.pid\\n\\ndef _open(url, wait=False):\\n    if sys.platform == \\\"darwin\\\":\\n        cmd = (\\\"open\\\", url)\\n    elif hasattr(os, \\\"startfile\\\"):\\n        os.startfile(url)\\n        return None\\n    elif any(k in os.environ for k in (\\\"KDE_FULL_SESSION\\\", \\\"KDE_MULTIHEAD\\\", \\\"GNOME_DESKTOP_SESSION_ID\\\", \\\"GNOME_KEYRING_SOCKET\\\")):\\n        cmd = (\\\"xdg-open\\\", url)\\n    else:\\n        raise OSError(\\\"Desktop not supported.\\\")\\n\\n    return _run(cmd, wait)\\n\\n_open(\\\"https://www.lumapictures.com/\\\")\" +STARTLINE}\n}\n Input {\n  inputs 0\n  name mask\n  xpos -372\n  ypos -1067\n  number 1\n }\n Input {\n  inputs 0\n  name input\n  xpos -152\n  ypos -1067\n }\nset N33c1eab0 [stack 0]\n Switch {\n  inputs 2\n  which {{\"!\\[catch \\{node parent.input1\\}]\" i}}\n  name L_Grain_MaskSwitch\n  selected true\n  xpos -372\n  ypos -923\n }\n Dot {\n  name Dot3\n  xpos -336\n  ypos 354\n }\n Grade {\n  channels alpha\n  white_clamp true\n  name L_Grain_MaskGradeNode\n  xpos -262\n  ypos 342\n }\npush $N33c1eab0\n NoOp {\n  name L_Grain_NoOp1\n  xpos -42\n  ypos -971\n }\nset N33c1f440 [stack 0]\n Dot {\n  name Dot6\n  xpos -116\n  ypos -966\n }\n Dot {\n  name Dot4\n  xpos -116\n  ypos 78\n }\nset N33c1faa0 [stack 0]\npush $N33c1f440\n Shuffle {\n  alpha green\n  name L_Grain_Shuffle3\n  xpos 398\n  ypos -911\n }\n Grade {\n  channels alpha\n  blackpoint 0.13\n  whitepoint 0.58\n  add 0.045\n  white_clamp true\n  name L_Grain_Grade3\n  xpos 398\n  ypos -822\n }\nset N33c20100 [stack 0]\npush $N33c20100\npush $N33c1f440\n Grain2 {\n  name L_Grain_Grain2_1\n  label \"Kodak 5248\"\n  xpos -104\n  ypos -714\n  seed {{\"\\[string match \\[view] left] ==1?(frame*333):(frame*666)\" i}}\n  red_size {{parent.rSize i}}\n  green_size {{parent.gSize i}}\n  blue_size {{parent.bSize i}}\n  red_i {{parent.rIrregularity i}}\n  green_i {{parent.gIrregularity i}}\n  blue_i {{parent.bIrregularity i}}\n  red_m {{parent.rMid/2 i}}\n  green_m {{parent.gMid/2 i}}\n  blue_m {{parent.bMid/2 i}}\n  black {{parent.rBlack/10 i} {parent.gBlack/10 i} {parent.bBlack/10 i}}\n  minimum {{parent.rMinimum/100 i} {parent.gMinimum/100 i} {parent.bMinimum/100 i}}\n  maskgrain false\n  maskinvert true\n }\nset N26e17a30 [stack 0]\n Keymix {\n  inputs 3\n  mix {{abs(1-parent.bHigh) i}}\n  name L_Grain_Keymix4\n  xpos 398\n  ypos -714\n }\n Shuffle {\n  alpha white\n  name L_Grain_Shuffle7\n  xpos 398\n  ypos -671\n }\npush $N33c1f440\n Shuffle {\n  alpha white\n  name L_Grain_Shuffle5\n  xpos -42\n  ypos -587\n }\nset N33c220e0 [stack 0]\n Merge2 {\n  inputs 2\n  operation minus\n  name L_Grain_Merge3\n  label \"Diff Key\"\n  xpos 398\n  ypos -594\n }\n Defocus {\n  defocus {{parent.bSoftness*.2 i}}\n  ratio {{pixel_aspect i}}\n  method \"full precision\"\n  name L_Grain_Defocus4\n  xpos 398\n  ypos -546\n }\npush $N33c1f440\n Merge2 {\n  inputs 2\n  name L_Grain_Merge4\n  label Re-Apply\n  xpos 398\n  ypos -474\n }\npush $N33c1f440\n Shuffle {\n  alpha green\n  name L_Grain_Shuffle2\n  xpos 288\n  ypos -911\n }\n Grade {\n  channels alpha\n  blackpoint 0.13\n  whitepoint 0.58\n  add 0.045\n  white_clamp true\n  name L_Grain_Grade2\n  xpos 288\n  ypos -822\n }\nset N33c230d0 [stack 0]\npush $N33c230d0\npush $N26e17a30\n Keymix {\n  inputs 3\n  mix {{abs(1-parent.gHigh) i}}\n  name L_Grain_Keymix3\n  xpos 288\n  ypos -714\n }\n Shuffle {\n  alpha white\n  name L_Grain_Shuffle6\n  xpos 288\n  ypos -671\n }\npush $N33c220e0\n Merge2 {\n  inputs 2\n  operation minus\n  name L_Grain_Merge1\n  label \"Diff Key\"\n  xpos 288\n  ypos -594\n }\n Defocus {\n  defocus {{parent.gSoftness*.2 i}}\n  ratio {{pixel_aspect i}}\n  method \"full precision\"\n  name L_Grain_Defocus3\n  xpos 288\n  ypos -546\n }\npush $N33c1f440\n Merge2 {\n  inputs 2\n  name L_Grain_Merge2\n  label Re-Apply\n  xpos 288\n  ypos -474\n }\npush $N33c1f440\n Shuffle {\n  alpha red\n  name L_Grain_Shuffle1\n  xpos 178\n  ypos -911\n }\n Grade {\n  channels alpha\n  blackpoint 0.13\n  whitepoint 0.58\n  add 0.045\n  white_clamp true\n  name L_Grain_Grade1\n  xpos 178\n  ypos -822\n }\nset N33c24720 [stack 0]\npush $N33c24720\npush $N26e17a30\n Keymix {\n  inputs 3\n  mix {{abs(1-parent.rHigh) i}}\n  name L_Grain_Keymix2\n  xpos 178\n  ypos -714\n }\n Shuffle {\n  alpha white\n  name L_Grain_Shuffle4\n  xpos 178\n  ypos -671\n }\npush $N33c220e0\n Merge2 {\n  inputs 2\n  operation minus\n  name L_Grain_Merge12\n  label \"Diff Key\"\n  xpos 178\n  ypos -594\n }\n Defocus {\n  defocus {{parent.rSoftness*.2 i}}\n  ratio {{pixel_aspect i}}\n  method \"full precision\"\n  name L_Grain_Defocus2\n  xpos 178\n  ypos -546\n }\npush $N33c1f440\n Dot {\n  name Dot5\n  xpos 104\n  ypos -462\n }\n Merge2 {\n  inputs 2\n  name L_Grain_Merge13\n  label Re-Apply\n  xpos 178\n  ypos -474\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.green\n  name L_Grain_Copy1\n  xpos 178\n  ypos -402\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name L_Grain_Copy2\n  xpos 288\n  ypos -342\n }\nset N33c260a0 [stack 0]\npush $N33c260a0\n Saturation {\n  saturation 0\n  name L_Grain_Saturation1\n  xpos 398\n  ypos -251\n }\npush $N33c1f440\n Expression {\n  expr0 (1/(r*.3+g*.59+b*.11))*r\n  expr1 (1/(r*.3+g*.59+b*.11))*g\n  expr2 (1/(r*.3+g*.59+b*.11))*b\n  name L_Grain_Expression1\n  xpos 550\n  ypos -272\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name L_Grain_Multiply4\n  xpos 475\n  ypos -212\n }\n Dissolve {\n  inputs 2\n  which {{parent.GrainSaturation i}}\n  name L_Grain_Dissolve_Grain_Saturation\n  xpos 288\n  ypos -174\n }\nset N33c26d60 [stack 0]\npush $N33c1f440\n Saturation {\n  saturation 0\n  name L_Grain_Saturation2\n  xpos 508\n  ypos -71\n }\npush $N33c26d60\n Expression {\n  expr0 (1/(r*.3+g*.59+b*.11))*r\n  expr1 (1/(r*.3+g*.59+b*.11))*g\n  expr2 (1/(r*.3+g*.59+b*.11))*b\n  name L_Grain_Expression2\n  xpos 336\n  ypos -83\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name L_Grain_Multiply1\n  xpos 368\n  ypos -32\n }\n Dissolve {\n  inputs 2\n  which {{parent.GrainLuminance i}}\n  name L_Grain_Dissolve_Grain_Luminance\n  xpos 288\n  ypos 30\n }\npush $N33c1faa0\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.OverallMix i}}\n  name L_Grain_Dissolve_Overall_Mix\n  xpos 116\n  ypos 265\n }\n Keymix {\n  inputs 3\n  invertMask {{-Invert+1 i}}\n  mix {{parent.alphaMask i}}\n  name L_Grain_Keymix1\n  xpos -42\n  ypos 342\n }\npush $N33c1eab0\n Dot {\n  name Dot1\n  xpos 764\n  ypos -1062\n }\n Dot {\n  name Dot2\n  xpos 764\n  ypos 450\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  name L_Grain_ChannelsPassThrough\n  xpos -42\n  ypos 445\n }\n Output {\n  name Output1\n  xpos -50\n  ypos 608\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaKeyer.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name LumaKeyer\n onCreate \"n = nuke.thisNode()\\nn.knob('blackpoint').setRange(0, 1)\\nn.knob('whitepoint').setRange(0, 1)\"\n tile_color 0x421010ff\n note_font \"Bitstream Vera Sans Bold Bold\"\n selected true\n addUserKnob {20 User l lumaKeyer}\n addUserKnob {4 output M {Alpha RGBA}}\n addUserKnob {41 blackpoint T picker.blackpoint}\n addUserKnob {41 whitepoint T picker.whitepoint}\n addUserKnob {6 invert +STARTLINE}\n addUserKnob {4 smoothing l Smoothing: M {None Smooth Smooth0 Smooth1 \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info}\n addUserKnob {22 btn l DerekVFX.ca T \"import os\\nimport sys\\n\\ntry:\\n    import subprocess\\n    def _run(cmd, shell, wait):\\n        opener = subprocess.Popen(cmd, shell=shell)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\nexcept ImportError:\\n    import popen2\\n    def _run(cmd, shell, wait):\\n        opener = popen2.Popen3(cmd)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\n\\ndef _open(url, wait=0):\\n    if sys.platform == \\\"darwin\\\":\\n        cmd = \\[\\\"open\\\", url]\\n    elif hasattr(os, \\\"startfile\\\"):\\n        return os.startfile(url)\\n    elif os.environ.has_key(\\\"KDE_FULL_SESSION\\\") or os.environ.has_key(\\\"KDE_MULTIHEAD\\\") or \\\\\\n        os.environ.has_key(\\\"GNOME_DESKTOP_SESSION_ID\\\") or os.environ.has_key(\\\"GNOME_KEYRING_SOCKET\\\"):\\n        cmd = \\[\\\"xdg-open\\\", url]\\n    else:\\n        raise OSError, \\\"Desktop not supported.\\\"\\n\\n    return _run(cmd, 0, wait)\\n\\n_open('http://www.derekvfx.ca/')\" +STARTLINE}\n addUserKnob {26 versionUpdate l \"\" -STARTLINE T \"<font color = gray> adjusted by Tony Lyons </font color = gray>\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 57\n  ypos -347\n }\nset N244c6660 [stack 0]\n Colorspace {\n  colorspace_out HSL\n  name Colorspace1\n  xpos -181\n  ypos -181\n }\nset N24517b10 [stack 0]\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle1\n  tile_color 0x3d3f8e00\n  xpos -336\n  ypos -181\n }\n Grade {\n  name picker\n  xpos -336\n  ypos -139\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 231\n  ypos 446\n  number 1\n }\npush $N244c6660\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 91\n  ypos 284\n }\nset N24532110 [stack 0]\npush $N24517b10\n Expression {\n  expr3 smoothstep(parent.picker.blackpoint,parent.picker.whitepoint,b)\n  name Expression1\n  xpos -181\n  ypos -138\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -147\n  ypos -58\n }\nset N24542110 [stack 0]\n ColorLookup {\n  channels {{{parent.ColorLookup_smooth.channels}}}\n  lut {master {curve L 0 C k 1 s0}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup_smooth1\n  xpos -69\n  ypos 33\n }\npush $N24542110\n ColorLookup {\n  channels {{{parent.ColorLookup_smooth.channels}}}\n  lut {master {curve L 0 s0 1}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup_smooth0\n  xpos -181\n  ypos 32\n }\npush $N24542110\n ColorLookup {\n  lut {master {curve L 0 s0 C k 1 s0}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup_smooth\n  xpos -293\n  ypos 32\n }\npush $N24542110\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -345\n  ypos -52\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -345\n  ypos 131\n }\n Switch {\n  inputs 4\n  which {{parent.smoothing}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -181\n  ypos 121\n }\n Expression {\n  expr3 1-a\n  name Expression2\n  xpos -181\n  ypos 191\n  disable {{\"parent.invert == 0\"}}\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -181\n  ypos 280\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  tile_color 0xffffffff\n  xpos -181\n  ypos 328\n  disable {{!parent.output}}\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -147\n  ypos 450\n }\npush $N24532110\n Shuffle {\n  alpha black\n  name Shuffle3\n  label \"\\[value in]\"\n  xpos 57\n  ypos 331\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle4\n  label \"\\[value in]\"\n  selected true\n  xpos 57\n  ypos 369\n  disable {{!parent.output}}\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge rgba\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 57\n  ypos 446\n }\nset N2457f1d0 [stack 0]\n Output {\n  name Output1\n  xpos 57\n  ypos 602\n }\npush $N2457f1d0\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaToVector3.gizmo",
    "content": "Group {\n name LumaToVector3_\n help \"Performs a Sobel filter on the Luminance channel of an image to extract an approximation of a Normal map.\\n\\nFor a mathematical conversion of a displacement map to normals, do not use Details separation.\"\n addUserKnob {20 luma_to_normals l \"Luma to Normals\"}\n addUserKnob {26 div_pre l Pre-Process}\n addUserKnob {7 blur t \"High quality blur, may be slower than a regular blur node but will avoid loss of quality in the vectors.\" R 0 10}\n addUserKnob {7 gain l \"height (gain)\" t \"Increasing this value would result in vectors as per a stronger displacement.\" R 0 10}\n gain 1\n addUserKnob {26 div_details l \"Details Separation\"}\n addUserKnob {7 size t \"Bigger sizes will separate high and low frequencies more.\" R 0 100}\n addUserKnob {7 details_weight t \"How much the details affect the final output\"}\n addUserKnob {26 div_out l Output}\n addUserKnob {6 zerotoone l \"Use 0-1 range\" t \"Pack the vectors in a 0 to 1 range, so that it can be exported as an 8bit image. May cause clamped vectors, make sure to also use normalize if exporting a normal map to avoid clamped values.\" +STARTLINE}\n addUserKnob {6 normalize t \"Normal maps should generally be represented with a vector magnitude of 1.\\nTurning on normalization will scale all vectors to ensure they all have a magnitude of 1.\\n\\nYou may want to disable it for more interesting effects when generating normals for a fake refraction through an iDistort, where having vectors of different length adds depth.\" -STARTLINE}\n normalize true\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -576\n  ypos -320\n }\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos -576\n  ypos -264\n }\n Blur {\n  size {{parent.blur}}\n  quality {{\"int(max(parent.blur, 15))\"}}\n  name Blur2\n  xpos -576\n  ypos -223\n }\n Multiply {\n  value {{parent.gain}}\n  name Multiply1\n  xpos -576\n  ypos -185\n }\nset N8fdf0400 [stack 0]\n Blur {\n  size {{parent.size}}\n  name Blur1\n  xpos -576\n  ypos -134\n }\n Dot {\n  name Dot2\n  xpos -542\n  ypos -45\n }\nset Nc5a5fc00 [stack 0]\n Matrix {\n  matrix {\n      {1 0 -1}\n      {2 0 -2}\n      {1 0 -1}\n    }\n  name Matrix1\n  xpos -576\n  ypos 38\n }\npush $Nc5a5fc00\n Dot {\n  name Dot3\n  xpos -432\n  ypos -45\n }\nset Nc5a5f400 [stack 0]\n Matrix {\n  matrix {\n      {-1 -2 -1}\n      {0 0 0}\n      {1 2 1}\n    }\n  name Matrix2\n  xpos -466\n  ypos 36\n }\n Dot {\n  name Dot4\n  xpos -432\n  ypos 92\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  blue black\n  alpha black\n  name ShuffleCopy1\n  xpos -575\n  ypos 88\n }\n Multiply {\n  value {{(1-parent.details_weight)*(parent.size/10+1)}}\n  name Multiply2\n  xpos -577\n  ypos 128\n }\npush $Nc5a5f400\npush $N8fdf0400\n Dot {\n  name Dot1\n  xpos -319\n  ypos -175\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  xpos -353\n  ypos -49\n }\n Dot {\n  name Dot5\n  xpos -319\n  ypos -23\n }\nset Nb4693800 [stack 0]\n Matrix {\n  matrix {\n      {1 0 -1}\n      {2 0 -2}\n      {1 0 -1}\n    }\n  name Matrix3\n  xpos -353\n  ypos 25\n }\npush $Nb4693800\n Dot {\n  name Dot6\n  xpos -181\n  ypos -23\n }\n Matrix {\n  matrix {\n      {-1 -2 -1}\n      {0 0 0}\n      {1 2 1}\n    }\n  name Matrix4\n  xpos -215\n  ypos 30\n }\n Dot {\n  name Dot7\n  xpos -181\n  ypos 87\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  blue black\n  alpha black\n  name ShuffleCopy2\n  xpos -353\n  ypos 83\n }\n Multiply {\n  value {{parent.details_weight}}\n  name Multiply3\n  xpos -353\n  ypos 119\n }\n Dot {\n  name Dot8\n  xpos -319\n  ypos 188\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -577\n  ypos 184\n }\n Multiply {\n  value 0.5\n  name Multiply4\n  xpos -577\n  ypos 229\n  disable {{!proxy}}\n }\n Expression {\n  temp_name0 mag\n  temp_expr0 sqrt(pow(r,2)+pow(g,2)+pow(b,2))\n  expr0 mag>1?r/mag:r\n  expr1 mag>1?g/mag:g\n  name Expression3\n  xpos -577\n  ypos 283\n  disable {{!parent.normalize}}\n }\n Expression {\n  temp_name0 facing\n  temp_expr0 sqrt(-pow(r,2)-pow(g,2)+1)\n  expr2 isnan(facing)?0:facing\n  name Expression2\n  xpos -577\n  ypos 322\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -577\n  ypos 354\n }\n Grade {\n  white 0.5\n  add 0.5\n  white_clamp true\n  name Grade1\n  xpos -577\n  ypos 397\n  disable {{!parent.zerotoone}}\n }\n Output {\n  name Output1\n  xpos -577\n  ypos 479\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MECfiller.gizmo",
    "content": "Group {\n inputs 0\n name MECfiller\n tile_color 0xff00ffff\n addUserKnob {20 User}\n addUserKnob {26 name_1 l \"\" +STARTLINE T \"MECfiller v001\"}\n addUserKnob {26 \"\"}\n addUserKnob {4 mode M {fast rough complex \"\" \"\"}}\n mode fast\n addUserKnob {12 center}\n addUserKnob {7 axismultiplier l \"axis multiplier\"}\n axismultiplier 0.1\n addUserKnob {6 axismultipliercheck l \"multiplier visualisation\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 madeby l \"\" +STARTLINE T \"Matthias Eckhardt\\npoly-by-poly.com\\n\\n\\nbased on Mads Hagbarth's FFfiller\"}\n}\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label 1\n  note_font_size 110\n  xpos -2381\n  ypos 53\n }\n StickyNote {\n  inputs 0\n  name StickyNote5\n  label 2\n  note_font_size 110\n  xpos -2381\n  ypos 732\n }\n StickyNote {\n  inputs 0\n  name StickyNote6\n  label 3\n  note_font_size 110\n  xpos -2375\n  ypos 1376\n }\n StickyNote {\n  inputs 0\n  name StickyNote7\n  label 4\n  note_font_size 110\n  xpos -2363\n  ypos 2015\n }\n StickyNote {\n  inputs 0\n  name StickyNote8\n  label 5\n  note_font_size 110\n  xpos -2372\n  ypos 2637\n }\n StickyNote {\n  inputs 0\n  name StickyNote9\n  label 6\n  note_font_size 110\n  xpos -2385\n  ypos 3344\n }\n StickyNote {\n  inputs 0\n  name StickyNote10\n  label 7\n  note_font_size 110\n  xpos -2411\n  ypos 3988\n }\n StickyNote {\n  inputs 0\n  name StickyNote11\n  label 8\n  note_font_size 110\n  xpos -2421\n  ypos 4628\n }\n StickyNote {\n  inputs 0\n  name StickyNote12\n  label 9\n  note_font_size 110\n  xpos -2398\n  ypos 5337\n }\n StickyNote {\n  inputs 0\n  name StickyNote13\n  label 10\n  note_font_size 110\n  xpos -2393\n  ypos 6051\n }\n StickyNote {\n  inputs 0\n  name StickyNote14\n  label 11\n  note_font_size 110\n  xpos -2395\n  ypos 6753\n }\n StickyNote {\n  inputs 0\n  name StickyNote15\n  label 12\n  note_font_size 110\n  xpos -2400\n  ypos 7477\n }\n StickyNote {\n  inputs 0\n  name StickyNote16\n  label 13\n  note_font_size 110\n  xpos -2400\n  ypos 8201\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label complex\n  note_font_size 100\n  xpos 272\n  ypos 8407\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -2535\n  ypos -1597\n }\n Dot {\n  name Dot22\n  xpos -2501\n  ypos -1432\n }\nset Nfa633c0 [stack 0]\n Dot {\n  name Dot24\n  xpos -2501\n  ypos -1316\n }\nset Nfa67de0 [stack 0]\n Dot {\n  name Dot33\n  xpos -2501\n  ypos -1210\n }\nset Nfa6c940 [stack 0]\n Dot {\n  name Dot2\n  xpos -2501\n  ypos -1166\n }\nset Nfa713c0 [stack 0]\n Dot {\n  name Dot32\n  xpos -2501\n  ypos -1106\n }\nset Nfa75e70 [stack 0]\n Dot {\n  name Dot3\n  xpos -2501\n  ypos -1062\n }\nset Nfa7a920 [stack 0]\n Dot {\n  name Dot34\n  xpos -2501\n  ypos -988\n }\nset Nfa7f340 [stack 0]\n Dot {\n  name Dot4\n  xpos -2501\n  ypos -944\n }\nset Nfa83d30 [stack 0]\n Dot {\n  name Dot29\n  xpos -2501\n  ypos -882\n }\nset Nfa88a00 [stack 0]\n Dot {\n  name Dot5\n  xpos -2501\n  ypos -838\n }\nset N161fbd80 [stack 0]\n Dot {\n  name Dot204\n  xpos -2501\n  ypos -767\n }\nset N16200900 [stack 0]\n Dot {\n  name Dot7\n  xpos -2501\n  ypos -719\n }\nset N162053b0 [stack 0]\n Dot {\n  name Dot234\n  xpos -2501\n  ypos -660\n }\nset N16209dd0 [stack 0]\n Dot {\n  name Dot111\n  xpos -2501\n  ypos -612\n }\n Expression {\n  temp_name0 point\n  temp_expr0 parent.center.x\n  temp_name1 area\n  temp_expr1 width/5\n  temp_name2 axismultiplier\n  temp_expr2 parent.axismultiplier\n  channel0 rgba\n  expr0 x>(point-(area*axismultiplier)/2)&&x<(point+(area*axismultiplier)/2)?1:0\n  name Expression52\n  xpos -2425\n  ypos -616\n }\npush $N16209dd0\n Expression {\n  channel0 rgba\n  expr0 x>width*0.4&&x<width*0.6?1:0\n  channel1 {-rgba.red rgba.green -rgba.blue none}\n  name Expression51\n  xpos -2425\n  ypos -664\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch43\n  label \"INPUT \\[value which]\"\n  xpos -2269\n  ypos -622\n }\n Blur {\n  size {{NoOp1.height/(6/parent.axismultiplier)}}\n  name Blur2\n  xpos -2138\n  ypos -622\n }\nset N16237480 [stack 0]\npush $N162053b0\n Expression {\n  temp_name0 point\n  temp_expr0 parent.center.y\n  temp_name1 area\n  temp_expr1 height/5\n  temp_name2 axismultiplier\n  temp_expr2 parent.axismultiplier\n  channel0 rgba\n  expr0 y>(point-(area*axismultiplier)/2)&&y<(point+(area*axismultiplier)/2)?1:0\n  name Expression49\n  xpos -2426\n  ypos -723\n }\npush $N16200900\n Expression {\n  channel0 rgba\n  expr0 y>height*0.4&&y<height*0.6?1:0\n  channel1 {-rgba.red rgba.green -rgba.blue none}\n  name Expression50\n  xpos -2425\n  ypos -771\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch42\n  label \"INPUT \\[value which]\"\n  xpos -2268\n  ypos -729\n }\n Blur {\n  size {{NoOp1.height/(8/parent.axismultiplier)}}\n  name Blur1\n  xpos -2138\n  ypos -729\n }\nset N16268d10 [stack 0]\npush $N161fbd80\n Expression {\n  channel0 rgba\n  expr0 x>parent.center.x&&y<parent.center.y?1:0\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression4\n  xpos -2428\n  ypos -842\n }\npush $Nfa88a00\n Expression {\n  channel0 rgba\n  expr0 x>width/2&&y<height/2?1:0\n  name Expression5\n  xpos -2422\n  ypos -886\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch4\n  label \"INPUT \\[value which]\"\n  xpos -2264\n  ypos -848\n }\npush $Nfa83d30\n Expression {\n  channel0 rgba\n  expr0 x<parent.center.x&&y<parent.center.y?1:0\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression3\n  xpos -2424\n  ypos -948\n }\npush $Nfa7f340\n Expression {\n  channel0 rgba\n  expr0 x<width/2&&y<height/2?1:0\n  name Expression8\n  xpos -2424\n  ypos -992\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch3\n  label \"INPUT \\[value which]\"\n  xpos -2260\n  ypos -954\n }\npush $Nfa7a920\n Expression {\n  channel0 rgba\n  expr0 x>parent.center.x&&y>parent.center.y?1:0\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression2\n  xpos -2420\n  ypos -1066\n }\npush $Nfa75e70\n Expression {\n  channel0 rgba\n  expr0 x>width/2&&y>height/2?1:0\n  name Expression6\n  xpos -2422\n  ypos -1110\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch2\n  label \"INPUT \\[value which]\"\n  xpos -2260\n  ypos -1072\n }\npush $Nfa713c0\n Expression {\n  channel0 rgba\n  expr0 x<parent.center.x&&y>parent.center.y?1:0\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  name Expression1\n  xpos -2421\n  ypos -1170\n }\npush $Nfa6c940\n Expression {\n  channel0 rgba\n  expr0 x<width/2&&y>height/2?1:0\n  name Expression7\n  xpos -2423\n  ypos -1214\n }\n Switch {\n  inputs 2\n  which {{parent.center.x==0&&parent.center.y==0?0:1}}\n  name Switch1\n  label \"INPUT \\[value which]\"\n  xpos -2255\n  ypos -1176\n }\npush $Nfa67de0\n Dot {\n  name Dot6\n  xpos -1953\n  ypos -1316\n }\nadd_layer {topleft topleft.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 topleft\n  name ShuffleCopy4\n  xpos -1987\n  ypos -1170\n }\nadd_layer {topright topright.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 topright\n  name ShuffleCopy5\n  xpos -1987\n  ypos -1066\n }\nadd_layer {bottomleft bottomleft.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 bottomleft\n  name ShuffleCopy6\n  xpos -1987\n  ypos -948\n }\nadd_layer {bottomright bottomright.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 bottomright\n  name ShuffleCopy7\n  xpos -1987\n  ypos -842\n }\nadd_layer {horizontal horizontal.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 horizontal\n  name ShuffleCopy1\n  xpos -1987\n  ypos -723\n }\nadd_layer {vertical vertical.alpha}\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 vertical\n  name ShuffleCopy2\n  xpos -1987\n  ypos -616\n }\n Dot {\n  name Dot10\n  xpos -1953\n  ypos -442\n }\nset N163643d0 [stack 0]\n LayerContactSheet {\n  showLayerNames true\n  name LayerContactSheet1\n  xpos -1882\n  ypos -446\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label rough\n  note_font_size 100\n  xpos -882\n  ypos 8402\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label fast\n  note_font_size 100\n  xpos -2027\n  ypos 8405\n }\npush $Nfa633c0\n NoOp {\n  name NoOp1\n  xpos -2434\n  ypos -1436\n  addUserKnob {20 User}\n  addUserKnob {3 sizechecker}\n  sizechecker {{Input1.height}}\n }\npush $N16237480\npush $N16268d10\n Merge2 {\n  inputs 2\n  name Merge6\n  xpos -2138\n  ypos -667\n }\n Dot {\n  name Dot208\n  tile_color 0xff000000\n  xpos -2016\n  ypos -663\n }\n Dot {\n  name Dot209\n  xpos -2348\n  ypos 9121\n  hide_input true\n }\n Shuffle {\n  green black\n  blue black\n  name Shuffle1\n  xpos -2382\n  ypos 9172\n }\npush $N163643d0\n Dot {\n  name Dot114\n  xpos -1953\n  ypos -390\n }\nset N163aacd0 [stack 0]\n Dot {\n  name Dot115\n  xpos -1519\n  ypos -390\n }\nset N163af4a0 [stack 0]\n Dot {\n  name Dot11\n  xpos -874\n  ypos -390\n }\nset N163b3f90 [stack 0]\n Dot {\n  name Dot13\n  xpos -427\n  ypos -390\n }\nset N163b8ad0 [stack 0]\n Dot {\n  name Dot35\n  xpos 324\n  ypos -390\n }\nset N163bd4f0 [stack 0]\n Dot {\n  name Dot12\n  xpos 758\n  ypos -390\n }\nset N163c1b50 [stack 0]\npush $N163bd4f0\n Dot {\n  name Dot41\n  xpos 324\n  ypos -342\n }\nset N163c6b00 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix1\n  xpos 556\n  ypos -352\n }\npush $N163c1b50\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix1\n  xpos 724\n  ypos -352\n }\nset N163d6ae0 [stack 0]\npush $N163c6b00\n Dot {\n  name Dot39\n  xpos 324\n  ypos -265\n }\nset N163dfc00 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix2\n  xpos 560\n  ypos -275\n }\npush $N163d6ae0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix2\n  xpos 724\n  ypos -275\n }\nset N163ef5e0 [stack 0]\npush $N163dfc00\n Dot {\n  name Dot42\n  xpos 324\n  ypos -185\n }\nset N163f8b60 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix3\n  xpos 560\n  ypos -195\n }\npush $N163ef5e0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix3\n  xpos 724\n  ypos -195\n }\nset N163f86d0 [stack 0]\npush $N163f8b60\n Dot {\n  name Dot43\n  xpos 324\n  ypos -101\n }\nset N16411ba0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix4\n  xpos 557\n  ypos -111\n }\npush $N163f86d0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix4\n  xpos 724\n  ypos -111\n }\nset N164116e0 [stack 0]\npush $N16411ba0\n Dot {\n  name Dot206\n  xpos 324\n  ypos -26\n }\nset N1642ab80 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix118\n  xpos 554\n  ypos -36\n }\npush $N164116e0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix105\n  xpos 724\n  ypos -36\n }\nset N1643ab30 [stack 0]\npush $N1642ab80\n Dot {\n  name Dot207\n  xpos 324\n  ypos 17\n }\nset N16443cb0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix119\n  xpos 554\n  ypos 7\n }\npush $N1643ab30\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix106\n  xpos 724\n  ypos 7\n }\n Transform {\n  translate {0.015 0.015}\n  center {2160 1440}\n  filter Impulse\n  shutteroffset centred\n  name Transform6\n  xpos 724\n  ypos 45\n }\n set C1645cca0 [stack 0]\n Reformat {\n  type scale\n  scale 0.50000000001\n  resize height\n  filter Impulse\n  name Reformat1\n  xpos 724\n  ypos 111\n }\n set C164535e0 [stack 0]\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression9\n  xpos 724\n  ypos 145\n }\n Reformat {\n  type \"to box\"\n  box_width {{Input1.width}}\n  box_height {{Input1.height}}\n  box_fixed true\n  resize height\n  filter Parzen\n  name Reformat2\n  xpos 558\n  ypos 145\n }\n set C16487210 [stack 0]\npush $N16443cb0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge5\n  xpos 290\n  ypos 145\n }\nset N16495e30 [stack 0]\n Dot {\n  name Dot113\n  xpos 143\n  ypos 149\n }\npush $N16495e30\n Dot {\n  name Dot45\n  xpos 324\n  ypos 323\n }\nset N164a9e30 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  resize height\n  filter Impulse\n  name Reformat5\n  xpos 417\n  ypos 319\n }\nset N16486ca0 [stack 0]\n Dot {\n  name Dot44\n  xpos 771\n  ypos 323\n }\nset N164bcc70 [stack 0]\npush $N16486ca0\n Dot {\n  name Dot46\n  xpos 451\n  ypos 360\n }\nset N164c1cb0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix5\n  xpos 561\n  ypos 350\n }\npush $N164bcc70\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix5\n  xpos 737\n  ypos 350\n }\nset N164d15f0 [stack 0]\npush $N164c1cb0\n Dot {\n  name Dot47\n  xpos 451\n  ypos 437\n }\nset N164dad50 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix6\n  xpos 561\n  ypos 427\n }\npush $N164d15f0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix6\n  xpos 737\n  ypos 427\n }\nset N164eacf0 [stack 0]\npush $N164dad50\n Dot {\n  name Dot48\n  xpos 451\n  ypos 517\n }\nset N164f3e00 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix7\n  xpos 561\n  ypos 507\n }\npush $N164eacf0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix7\n  xpos 737\n  ypos 507\n }\nset N164da710 [stack 0]\npush $N164f3e00\n Dot {\n  name Dot49\n  xpos 451\n  ypos 601\n }\nset N1650cda0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix8\n  xpos 561\n  ypos 591\n }\npush $N164da710\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix8\n  xpos 737\n  ypos 591\n }\nset N1651cd40 [stack 0]\npush $N1650cda0\n Dot {\n  name Dot205\n  xpos 451\n  ypos 652\n }\nset N16525e60 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix144\n  xpos 561\n  ypos 642\n }\npush $N1651cd40\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix131\n  xpos 737\n  ypos 642\n }\nset N1650c700 [stack 0]\npush $N16525e60\n Dot {\n  name Dot210\n  xpos 451\n  ypos 695\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix145\n  xpos 561\n  ypos 685\n }\npush $N1650c700\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix132\n  xpos 737\n  ypos 685\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 742\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 773\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression10\n  xpos 737\n  ypos 809\n }\nclone $C16487210 {\n  xpos 557\n  ypos 809\n  selected false\n }\npush $N164a9e30\n Merge2 {\n  inputs 2\n  operation under\n  name Merge12\n  xpos 290\n  ypos 809\n }\nset N16590f40 [stack 0]\n Switch {\n  inputs 2\n  which {{Reformat5.height>=2?0:1}}\n  name Switch30\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 803\n }\npush $N16590f40\n Dot {\n  name Dot40\n  xpos 324\n  ypos 971\n }\nset N165a87f0 [stack 0]\n Reformat {\n  type scale\n  scale 0.25\n  resize height\n  filter Impulse\n  name Reformat6\n  xpos 417\n  ypos 967\n }\nset N165ad360 [stack 0]\n Dot {\n  name Dot50\n  xpos 771\n  ypos 971\n }\nset N165bbc90 [stack 0]\npush $N165ad360\n Dot {\n  name Dot51\n  xpos 451\n  ypos 1008\n }\nset N165c07f0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix9\n  xpos 561\n  ypos 998\n }\npush $N165bbc90\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix9\n  xpos 737\n  ypos 998\n }\nset N165d0630 [stack 0]\npush $N165c07f0\n Dot {\n  name Dot52\n  xpos 451\n  ypos 1085\n }\nset N165d9730 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix10\n  xpos 561\n  ypos 1075\n }\npush $N165d0630\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix10\n  xpos 737\n  ypos 1075\n }\nset N165e9a60 [stack 0]\npush $N165d9730\n Dot {\n  name Dot53\n  xpos 451\n  ypos 1165\n }\nset N165f2be0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix11\n  xpos 561\n  ypos 1155\n }\npush $N165e9a60\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix11\n  xpos 737\n  ypos 1155\n }\nset N16602ac0 [stack 0]\npush $N165f2be0\n Dot {\n  name Dot54\n  xpos 451\n  ypos 1249\n }\nset N1660bc40 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix12\n  xpos 561\n  ypos 1239\n }\npush $N16602ac0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix12\n  xpos 737\n  ypos 1239\n }\nset N1661b240 [stack 0]\npush $N1660bc40\n Dot {\n  name Dot211\n  xpos 451\n  ypos 1302\n }\nset N16624bb0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix120\n  xpos 561\n  ypos 1292\n }\npush $N1661b240\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix107\n  xpos 737\n  ypos 1292\n }\nset N16624360 [stack 0]\npush $N16624bb0\n Dot {\n  name Dot212\n  xpos 451\n  ypos 1345\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix121\n  xpos 561\n  ypos 1335\n }\npush $N16624360\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix108\n  xpos 737\n  ypos 1335\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 1373\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 1422\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression12\n  xpos 737\n  ypos 1457\n }\nclone $C16487210 {\n  xpos 557\n  ypos 1457\n  selected false\n }\npush $N165a87f0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge17\n  xpos 290\n  ypos 1457\n }\nset N166566d0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch30.which==0?(Reformat6.height>=2?0:1):1}}\n  name Switch31\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 1451\n }\npush $N166566d0\n Dot {\n  name Dot55\n  xpos 324\n  ypos 1608\n }\nset N166a76f0 [stack 0]\n Reformat {\n  type scale\n  scale 0.125\n  resize height\n  filter Impulse\n  name Reformat3\n  xpos 417\n  ypos 1604\n }\nset N166ac180 [stack 0]\n Dot {\n  name Dot56\n  xpos 771\n  ypos 1608\n }\nset N166baa10 [stack 0]\npush $N166ac180\n Dot {\n  name Dot57\n  xpos 451\n  ypos 1645\n }\nset N166bf570 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix13\n  xpos 561\n  ypos 1635\n }\npush $N166baa10\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix13\n  xpos 737\n  ypos 1635\n }\nset N1669eb60 [stack 0]\npush $N166bf570\n Dot {\n  name Dot58\n  xpos 451\n  ypos 1722\n }\nset N166d84d0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix14\n  xpos 561\n  ypos 1712\n }\npush $N1669eb60\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix14\n  xpos 737\n  ypos 1712\n }\nset N166e7a80 [stack 0]\npush $N166d84d0\n Dot {\n  name Dot59\n  xpos 451\n  ypos 1802\n }\nset N166f1500 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix15\n  xpos 561\n  ypos 1792\n }\npush $N166e7a80\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix15\n  xpos 737\n  ypos 1792\n }\nset N167014d0 [stack 0]\npush $N166f1500\n Dot {\n  name Dot60\n  xpos 451\n  ypos 1886\n }\nset N1670a650 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix16\n  xpos 561\n  ypos 1876\n }\npush $N167014d0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix16\n  xpos 737\n  ypos 1876\n }\nset N1671a520 [stack 0]\npush $N1670a650\n Dot {\n  name Dot213\n  xpos 451\n  ypos 1941\n }\nset N167235d0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix122\n  xpos 561\n  ypos 1931\n }\npush $N1671a520\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix109\n  xpos 737\n  ypos 1931\n }\nset N16700ad0 [stack 0]\npush $N167235d0\n Dot {\n  name Dot214\n  xpos 451\n  ypos 1984\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix123\n  xpos 561\n  ypos 1974\n }\npush $N16700ad0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix110\n  xpos 737\n  ypos 1974\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 2009\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 2059\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression11\n  xpos 737\n  ypos 2094\n }\nclone $C16487210 {\n  xpos 557\n  ypos 2094\n  selected false\n }\npush $N166a76f0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge20\n  xpos 290\n  ypos 2094\n }\nset N16754ed0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch31.which==0?(Reformat3.height>=2?0:1):1}}\n  name Switch32\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 2088\n }\npush $N16754ed0\n Dot {\n  name Dot61\n  xpos 324\n  ypos 2233\n }\nset N167a6040 [stack 0]\n Reformat {\n  type scale\n  scale 0.0625\n  resize height\n  filter Impulse\n  name Reformat4\n  xpos 417\n  ypos 2229\n }\nset N167a54a0 [stack 0]\n Dot {\n  name Dot62\n  xpos 771\n  ypos 2233\n }\nset N167b9470 [stack 0]\npush $N167a54a0\n Dot {\n  name Dot72\n  xpos 451\n  ypos 2270\n }\nset N167bdf40 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix17\n  xpos 561\n  ypos 2260\n }\npush $N167b9470\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix17\n  xpos 737\n  ypos 2260\n }\nset N167cde20 [stack 0]\npush $N167bdf40\n Dot {\n  name Dot76\n  xpos 451\n  ypos 2347\n }\nset N167d6fa0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix18\n  xpos 561\n  ypos 2337\n }\npush $N167cde20\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix18\n  xpos 737\n  ypos 2337\n }\nset N167cd300 [stack 0]\npush $N167d6fa0\n Dot {\n  name Dot79\n  xpos 451\n  ypos 2427\n }\nset N167efee0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix19\n  xpos 561\n  ypos 2417\n }\npush $N167cd300\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix19\n  xpos 737\n  ypos 2417\n }\nset N167ef390 [stack 0]\npush $N167efee0\n Dot {\n  name Dot80\n  xpos 451\n  ypos 2511\n }\nset N16808f00 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix20\n  xpos 561\n  ypos 2501\n }\npush $N167ef390\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix20\n  xpos 737\n  ypos 2501\n }\nset N16808350 [stack 0]\npush $N16808f00\n Dot {\n  name Dot215\n  xpos 451\n  ypos 2577\n }\nset N16821f60 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix124\n  xpos 561\n  ypos 2567\n }\npush $N16808350\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix111\n  xpos 737\n  ypos 2567\n }\nset N16831ef0 [stack 0]\npush $N16821f60\n Dot {\n  name Dot216\n  xpos 451\n  ypos 2620\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix125\n  xpos 561\n  ypos 2610\n }\npush $N16831ef0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix112\n  xpos 737\n  ypos 2610\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 2648\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 2684\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression13\n  xpos 737\n  ypos 2719\n }\nclone $C16487210 {\n  xpos 557\n  ypos 2719\n  selected false\n }\npush $N167a6040\n Merge2 {\n  inputs 2\n  operation under\n  name Merge8\n  xpos 290\n  ypos 2719\n }\nset N1687e050 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch32.which==0?(Reformat4.height>=2?0:1):1}}\n  name Switch33\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 2713\n }\npush $N1687e050\n Dot {\n  name Dot81\n  xpos 324\n  ypos 2906\n }\nset N168a4ab0 [stack 0]\n Reformat {\n  type scale\n  scale 0.03125\n  resize height\n  filter Impulse\n  name Reformat7\n  xpos 417\n  ypos 2902\n }\nset N168a94b0 [stack 0]\n Dot {\n  name Dot82\n  xpos 771\n  ypos 2906\n }\nset N1689bb90 [stack 0]\npush $N168a94b0\n Dot {\n  name Dot83\n  xpos 451\n  ypos 2943\n }\nset N168bc910 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix21\n  xpos 561\n  ypos 2933\n }\npush $N1689bb90\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix21\n  xpos 737\n  ypos 2933\n }\nset N168cc890 [stack 0]\npush $N168bc910\n Dot {\n  name Dot84\n  xpos 451\n  ypos 3020\n }\nset N168d59b0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix22\n  xpos 561\n  ypos 3010\n }\npush $N168cc890\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix22\n  xpos 737\n  ypos 3010\n }\nset N168e4b00 [stack 0]\npush $N168d59b0\n Dot {\n  name Dot88\n  xpos 451\n  ypos 3100\n }\nset N168ee900 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix23\n  xpos 561\n  ypos 3090\n }\npush $N168e4b00\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix23\n  xpos 737\n  ypos 3090\n }\nset N168fe8e0 [stack 0]\npush $N168ee900\n Dot {\n  name Dot89\n  xpos 451\n  ypos 3184\n }\nset N16907a00 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix24\n  xpos 561\n  ypos 3174\n }\npush $N168fe8e0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix24\n  xpos 737\n  ypos 3174\n }\nset N16916b10 [stack 0]\npush $N16907a00\n Dot {\n  name Dot217\n  xpos 451\n  ypos 3244\n }\nset N16920990 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix126\n  xpos 561\n  ypos 3234\n }\npush $N16916b10\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix113\n  xpos 737\n  ypos 3234\n }\nset N1691fc30 [stack 0]\npush $N16920990\n Dot {\n  name Dot218\n  xpos 451\n  ypos 3287\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix127\n  xpos 561\n  ypos 3277\n }\npush $N1691fc30\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix114\n  xpos 737\n  ypos 3277\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 3315\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 3355\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression14\n  xpos 737\n  ypos 3392\n }\nclone $C16487210 {\n  xpos 557\n  ypos 3392\n  selected false\n }\npush $N168a4ab0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge16\n  xpos 290\n  ypos 3392\n  disable {{logb(Input1.height)>=6?0:1}}\n }\n set C1698bf50 [stack 0]\nset N1698bf50 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch33.which==0?(Reformat7.height>=2?0:1):1}}\n  name Switch34\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 3386\n }\npush $N1698bf50\n Dot {\n  name Dot92\n  xpos 324\n  ypos 3568\n }\nset N169a3630 [stack 0]\n Reformat {\n  type scale\n  scale 0.015625\n  resize height\n  filter Impulse\n  name Reformat8\n  xpos 417\n  ypos 3564\n }\nset N169a2730 [stack 0]\n Dot {\n  name Dot93\n  xpos 771\n  ypos 3568\n }\nset N169b5b40 [stack 0]\npush $N169a2730\n Dot {\n  name Dot95\n  xpos 451\n  ypos 3605\n }\nset N169bb470 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix25\n  xpos 561\n  ypos 3595\n }\npush $N169b5b40\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix25\n  xpos 737\n  ypos 3595\n }\nset N169cb430 [stack 0]\npush $N169bb470\n Dot {\n  name Dot98\n  xpos 451\n  ypos 3682\n }\nset N169d4530 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix26\n  xpos 561\n  ypos 3672\n }\npush $N169cb430\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix26\n  xpos 737\n  ypos 3672\n }\nset N169e4480 [stack 0]\npush $N169d4530\n Dot {\n  name Dot100\n  xpos 451\n  ypos 3762\n }\nset N169ed5a0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix27\n  xpos 561\n  ypos 3752\n }\npush $N169e4480\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix27\n  xpos 737\n  ypos 3752\n }\nset N169fd480 [stack 0]\npush $N169ed5a0\n Dot {\n  name Dot101\n  xpos 451\n  ypos 3846\n }\nset N16a06600 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix28\n  xpos 561\n  ypos 3836\n }\npush $N169fd480\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix28\n  xpos 737\n  ypos 3836\n }\nset N169fc5a0 [stack 0]\npush $N16a06600\n Dot {\n  name Dot219\n  xpos 451\n  ypos 3909\n }\nset N16a1f550 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix128\n  xpos 561\n  ypos 3899\n }\npush $N169fc5a0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix115\n  xpos 737\n  ypos 3899\n }\nset N16a2f4e0 [stack 0]\npush $N16a1f550\n Dot {\n  name Dot220\n  xpos 451\n  ypos 3952\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix129\n  xpos 561\n  ypos 3942\n }\npush $N16a2f4e0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix116\n  xpos 737\n  ypos 3942\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 3980\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 4019\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression15\n  xpos 737\n  ypos 4054\n }\nclone $C16487210 {\n  xpos 557\n  ypos 4054\n  selected false\n }\npush $N169a3630\n Merge2 {\n  inputs 2\n  operation under\n  name Merge18\n  xpos 290\n  ypos 4054\n  disable {{logb(Input1.height)>=7?0:1}}\n }\n set C16a6d060 [stack 0]\nset N16a6d060 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch34.which==0?(Reformat8.height>=2?0:1):1}}\n  name Switch35\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 4048\n }\npush $N16a6d060\n Dot {\n  name Dot102\n  xpos 324\n  ypos 4242\n }\nset N165de270 [stack 0]\n Reformat {\n  type scale\n  scale 0.0078125\n  resize height\n  filter Impulse\n  name Reformat9\n  xpos 417\n  ypos 4238\n }\nset N16aa7530 [stack 0]\n Dot {\n  name Dot103\n  xpos 771\n  ypos 4242\n }\nset N16ab5e30 [stack 0]\npush $N16aa7530\n Dot {\n  name Dot104\n  xpos 451\n  ypos 4279\n }\nset N16aba880 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix29\n  xpos 561\n  ypos 4269\n }\npush $N16ab5e30\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix29\n  xpos 737\n  ypos 4269\n }\nset N16ac9780 [stack 0]\npush $N16aba880\n Dot {\n  name Dot105\n  xpos 451\n  ypos 4356\n }\nset N16ad3930 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix30\n  xpos 561\n  ypos 4346\n }\npush $N16ac9780\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix30\n  xpos 737\n  ypos 4346\n }\nset N16ae38d0 [stack 0]\npush $N16ad3930\n Dot {\n  name Dot106\n  xpos 451\n  ypos 4436\n }\nset N16aec9f0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix31\n  xpos 561\n  ypos 4426\n }\npush $N16ae38d0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix31\n  xpos 737\n  ypos 4426\n }\nset N16afc8c0 [stack 0]\npush $N16aec9f0\n Dot {\n  name Dot107\n  xpos 451\n  ypos 4520\n }\nset N16b059e0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix32\n  xpos 561\n  ypos 4510\n }\npush $N16afc8c0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix32\n  xpos 737\n  ypos 4510\n }\nset N16ad28a0 [stack 0]\npush $N16b059e0\n Dot {\n  name Dot221\n  xpos 451\n  ypos 4584\n }\nset N16b1e8e0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix130\n  xpos 561\n  ypos 4574\n }\npush $N16ad28a0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix117\n  xpos 737\n  ypos 4574\n }\nset N16b1d7f0 [stack 0]\npush $N16b1e8e0\n Dot {\n  name Dot222\n  xpos 451\n  ypos 4627\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix131\n  xpos 561\n  ypos 4617\n }\npush $N16b1d7f0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix118\n  xpos 737\n  ypos 4617\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 4655\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 4693\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression16\n  xpos 737\n  ypos 4728\n }\nclone $C16487210 {\n  xpos 554\n  ypos 4728\n  selected false\n }\npush $N165de270\n Merge2 {\n  inputs 2\n  operation under\n  name Merge25\n  xpos 290\n  ypos 4728\n }\nset N16b6c270 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch35.which==0?(Reformat9.height>=2?0:1):1}}\n  name Switch36\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 4722\n }\npush $N16b6c270\n Dot {\n  name Dot170\n  xpos 324\n  ypos 4908\n }\nset N16ba1420 [stack 0]\n Reformat {\n  type scale\n  scale 0.00390625\n  resize height\n  filter Impulse\n  name Reformat15\n  xpos 417\n  ypos 4904\n }\nset N16b980a0 [stack 0]\n Dot {\n  name Dot171\n  xpos 771\n  ypos 4908\n }\nset N16bb35d0 [stack 0]\npush $N16b980a0\n Dot {\n  name Dot172\n  xpos 451\n  ypos 4945\n }\nset N16bb91f0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix98\n  xpos 561\n  ypos 4935\n }\npush $N16bb35d0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix85\n  xpos 737\n  ypos 4935\n }\nset N16bb8010 [stack 0]\npush $N16bb91f0\n Dot {\n  name Dot173\n  xpos 451\n  ypos 5022\n }\nset N16bd2250 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix99\n  xpos 561\n  ypos 5012\n }\npush $N16bb8010\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix86\n  xpos 737\n  ypos 5012\n }\nset N16be21f0 [stack 0]\npush $N16bd2250\n Dot {\n  name Dot174\n  xpos 451\n  ypos 5102\n }\nset N16beb310 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix100\n  xpos 561\n  ypos 5092\n }\npush $N16be21f0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix87\n  xpos 737\n  ypos 5092\n }\nset N16bfb1c0 [stack 0]\npush $N16beb310\n Dot {\n  name Dot175\n  xpos 451\n  ypos 5186\n }\nset N16c042c0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix101\n  xpos 561\n  ypos 5176\n }\npush $N16bfb1c0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix88\n  xpos 737\n  ypos 5176\n }\nset N16c141e0 [stack 0]\npush $N16c042c0\n Dot {\n  name Dot223\n  xpos 451\n  ypos 5249\n }\nset N16c1d360 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix132\n  xpos 561\n  ypos 5239\n }\npush $N16c141e0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix119\n  xpos 737\n  ypos 5239\n }\nset N16c2bf10 [stack 0]\npush $N16c1d360\n Dot {\n  name Dot224\n  xpos 451\n  ypos 5292\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix133\n  xpos 561\n  ypos 5282\n }\npush $N16c2bf10\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix120\n  xpos 737\n  ypos 5282\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 5320\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 5359\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression44\n  xpos 737\n  ypos 5394\n }\nclone $C16487210 {\n  xpos 554\n  ypos 5394\n  selected false\n }\npush $N16ba1420\n Merge2 {\n  inputs 2\n  operation under\n  name Merge38\n  xpos 290\n  ypos 5394\n }\nset N16c78cb0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch36.which==0?(Reformat15.height>=2?0:1):1}}\n  name Switch37\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 5388\n }\npush $N16c78cb0\n Dot {\n  name Dot176\n  xpos 324\n  ypos 5642\n }\nset N16c9fd90 [stack 0]\n Reformat {\n  type scale\n  scale 0.001953125\n  resize height\n  filter Impulse\n  name Reformat16\n  xpos 417\n  ypos 5638\n }\nset N16ca4890 [stack 0]\n Dot {\n  name Dot177\n  xpos 771\n  ypos 5642\n }\nset N16cb31a0 [stack 0]\npush $N16ca4890\n Dot {\n  name Dot178\n  xpos 451\n  ypos 5679\n }\nset N16cb7d00 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix102\n  xpos 561\n  ypos 5669\n }\npush $N16cb31a0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix89\n  xpos 737\n  ypos 5669\n }\nset N16c9e910 [stack 0]\npush $N16cb7d00\n Dot {\n  name Dot179\n  xpos 451\n  ypos 5756\n }\nset N16cd0bd0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix103\n  xpos 561\n  ypos 5746\n }\npush $N16c9e910\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix90\n  xpos 737\n  ypos 5746\n }\nset N16ce0bb0 [stack 0]\npush $N16cd0bd0\n Dot {\n  name Dot180\n  xpos 451\n  ypos 5836\n }\nset N16ce9c10 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix104\n  xpos 561\n  ypos 5826\n }\npush $N16ce0bb0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix91\n  xpos 737\n  ypos 5826\n }\nset N16cf8730 [stack 0]\npush $N16ce9c10\n Dot {\n  name Dot181\n  xpos 451\n  ypos 5920\n }\nset N16d04c20 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix105\n  xpos 561\n  ypos 5910\n }\npush $N16cf8730\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix92\n  xpos 737\n  ypos 5910\n }\nset N16d14ba0 [stack 0]\npush $N16d04c20\n Dot {\n  name Dot225\n  xpos 451\n  ypos 5983\n }\nset N16d1dd20 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix134\n  xpos 566\n  ypos 5973\n }\npush $N16d14ba0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix121\n  xpos 737\n  ypos 5973\n }\nset N16d2dbc0 [stack 0]\npush $N16d1dd20\n Dot {\n  name Dot226\n  xpos 451\n  ypos 6026\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix135\n  xpos 561\n  ypos 6016\n }\npush $N16d2dbc0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix122\n  xpos 737\n  ypos 6016\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 6054\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 6093\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression45\n  xpos 737\n  ypos 6128\n }\nclone $C16487210 {\n  xpos 554\n  ypos 6128\n  selected false\n }\npush $N16c9fd90\n Merge2 {\n  inputs 2\n  operation under\n  name Merge39\n  xpos 290\n  ypos 6128\n }\nset N16d89230 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch37.which==0?(Reformat16.height>=2?0:1):1}}\n  name Switch38\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 6122\n }\npush $N16d89230\n Dot {\n  name Dot182\n  xpos 324\n  ypos 6344\n }\nset N16da0710 [stack 0]\n Reformat {\n  type scale\n  scale 0.00097656\n  resize height\n  filter Impulse\n  name Reformat24\n  xpos 417\n  ypos 6340\n }\nset N16d9f150 [stack 0]\n Dot {\n  name Dot183\n  xpos 771\n  ypos 6344\n }\nset N16db3ab0 [stack 0]\npush $N16d9f150\n Dot {\n  name Dot184\n  xpos 451\n  ypos 6381\n }\nset N16db8600 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix106\n  xpos 561\n  ypos 6371\n }\npush $N16db3ab0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix93\n  xpos 737\n  ypos 6371\n }\nset N16dc84e0 [stack 0]\npush $N16db8600\n Dot {\n  name Dot185\n  xpos 451\n  ypos 6458\n }\nset N16dd15e0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix107\n  xpos 561\n  ypos 6448\n }\npush $N16dc84e0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix94\n  xpos 737\n  ypos 6448\n }\nset N16dc6fa0 [stack 0]\npush $N16dd15e0\n Dot {\n  name Dot186\n  xpos 451\n  ypos 6538\n }\nset N16dea5b0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix108\n  xpos 561\n  ypos 6528\n }\npush $N16dc6fa0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix95\n  xpos 737\n  ypos 6528\n }\nset N16dfa570 [stack 0]\npush $N16dea5b0\n Dot {\n  name Dot187\n  xpos 451\n  ypos 6622\n }\nset N16e03690 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix109\n  xpos 561\n  ypos 6612\n }\npush $N16dfa570\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix96\n  xpos 737\n  ypos 6612\n }\nset N16e13540 [stack 0]\npush $N16e03690\n Dot {\n  name Dot227\n  xpos 451\n  ypos 6686\n }\nset N16e1c6c0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix136\n  xpos 566\n  ypos 6676\n }\npush $N16e13540\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix123\n  xpos 737\n  ypos 6676\n }\nset N16e11f70 [stack 0]\npush $N16e1c6c0\n Dot {\n  name Dot228\n  xpos 451\n  ypos 6729\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix137\n  xpos 561\n  ypos 6719\n }\npush $N16e11f70\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix124\n  xpos 737\n  ypos 6719\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 6757\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 6795\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression46\n  xpos 737\n  ypos 6830\n }\nclone $C16487210 {\n  xpos 554\n  ypos 6830\n  selected false\n }\npush $N16da0710\n Merge2 {\n  inputs 2\n  operation under\n  name Merge40\n  xpos 290\n  ypos 6830\n }\nset N16e87bb0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch38.which==0?(Reformat24.height>=2?0:1):1}}\n  name Switch39\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 6824\n }\npush $N16e87bb0\n Dot {\n  name Dot188\n  xpos 324\n  ypos 7065\n }\nset N16e9f090 [stack 0]\n Reformat {\n  type scale\n  scale 0.00048828\n  resize height\n  filter Impulse\n  name Reformat25\n  xpos 417\n  ypos 7061\n }\nset N16ea3b90 [stack 0]\n Dot {\n  name Dot189\n  xpos 771\n  ypos 7065\n }\nset N16e9d880 [stack 0]\npush $N16ea3b90\n Dot {\n  name Dot190\n  xpos 451\n  ypos 7102\n }\nset N16eb6f20 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix110\n  xpos 561\n  ypos 7092\n }\npush $N16e9d880\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix97\n  xpos 737\n  ypos 7092\n }\nset N16eb5860 [stack 0]\npush $N16eb6f20\n Dot {\n  name Dot191\n  xpos 451\n  ypos 7179\n }\nset N16ecff20 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix111\n  xpos 561\n  ypos 7169\n }\npush $N16eb5860\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix98\n  xpos 737\n  ypos 7169\n }\nset N16edfeb0 [stack 0]\npush $N16ecff20\n Dot {\n  name Dot192\n  xpos 451\n  ypos 7259\n }\nset N16ee9030 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix112\n  xpos 561\n  ypos 7249\n }\npush $N16edfeb0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix99\n  xpos 737\n  ypos 7249\n }\nset N16ede790 [stack 0]\npush $N16ee9030\n Dot {\n  name Dot193\n  xpos 451\n  ypos 7343\n }\nset N16f01f50 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix113\n  xpos 561\n  ypos 7333\n }\npush $N16ede790\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix100\n  xpos 737\n  ypos 7333\n }\nset N16f007d0 [stack 0]\npush $N16f01f50\n Dot {\n  name Dot229\n  xpos 451\n  ypos 7409\n }\nset N16f1afb0 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix138\n  xpos 566\n  ypos 7399\n }\npush $N16f007d0\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix125\n  xpos 737\n  ypos 7399\n }\nset N16f2af50 [stack 0]\npush $N16f1afb0\n Dot {\n  name Dot230\n  xpos 451\n  ypos 7452\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix139\n  xpos 561\n  ypos 7442\n }\npush $N16f2af50\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix126\n  xpos 737\n  ypos 7442\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 7480\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 7516\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression47\n  xpos 737\n  ypos 7551\n }\nclone $C16487210 {\n  xpos 554\n  ypos 7551\n  selected false\n }\npush $N16e9f090\n Merge2 {\n  inputs 2\n  operation under\n  name Merge41\n  xpos 290\n  ypos 7551\n }\nset N16f86560 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch39.which==0?(Reformat25.height>=2?0:1):1}}\n  name Switch40\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 7545\n }\npush $N16f86560\n Dot {\n  name Dot194\n  xpos 324\n  ypos 7808\n }\nset N16f9db00 [stack 0]\n Reformat {\n  type scale\n  scale 0.00024414\n  resize height\n  filter Impulse\n  name Reformat26\n  xpos 417\n  ypos 7804\n }\nset N16fa2510 [stack 0]\n Dot {\n  name Dot195\n  xpos 771\n  ypos 7808\n }\nset N16f67ea0 [stack 0]\npush $N16fa2510\n Dot {\n  name Dot196\n  xpos 451\n  ypos 7845\n }\nset N16fb5960 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix114\n  xpos 561\n  ypos 7835\n }\npush $N16f67ea0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix101\n  xpos 737\n  ypos 7835\n }\nset N16fc58e0 [stack 0]\npush $N16fb5960\n Dot {\n  name Dot197\n  xpos 451\n  ypos 7922\n }\nset N16fcea00 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix115\n  xpos 561\n  ypos 7912\n }\npush $N16fc58e0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix102\n  xpos 737\n  ypos 7912\n }\nset N16fde8d0 [stack 0]\npush $N16fcea00\n Dot {\n  name Dot198\n  xpos 451\n  ypos 8002\n }\nset N16fe79f0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix116\n  xpos 561\n  ypos 7992\n }\npush $N16fde8d0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix103\n  xpos 737\n  ypos 7992\n }\nset N16ff7940 [stack 0]\npush $N16fe79f0\n Dot {\n  name Dot199\n  xpos 451\n  ypos 8086\n }\nset N17000a60 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix117\n  xpos 561\n  ypos 8076\n }\npush $N16ff7940\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix104\n  xpos 737\n  ypos 8076\n }\nset N1700ef90 [stack 0]\npush $N17000a60\n Dot {\n  name Dot231\n  xpos 451\n  ypos 8153\n }\nset N17019a00 [stack 0]\n Matrix {\n  matrix {\n      {0.5 0 0.5}\n      {1 3 1}\n      {0.5 0 0.5}\n    }\n  name Matrix140\n  xpos 566\n  ypos 8143\n }\npush $N1700ef90\n Keymix {\n  inputs 3\n  maskChannel horizontal.alpha\n  name Keymix127\n  xpos 737\n  ypos 8143\n }\nset N170299b0 [stack 0]\npush $N17019a00\n Dot {\n  name Dot232\n  xpos 451\n  ypos 8196\n }\n Matrix {\n  matrix {\n      {0.5 1 0.5}\n      {0 3 0}\n      {0.5 1 0.5}\n    }\n  name Matrix141\n  xpos 561\n  ypos 8186\n }\npush $N170299b0\n Keymix {\n  inputs 3\n  maskChannel vertical.alpha\n  name Keymix128\n  xpos 737\n  ypos 8186\n }\nclone $C1645cca0 {\n  xpos 737\n  ypos 8224\n  selected false\n }\nclone $C164535e0 {\n  xpos 737\n  ypos 8259\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression48\n  xpos 737\n  ypos 8294\n }\nclone $C16487210 {\n  xpos 554\n  ypos 8294\n  selected false\n }\npush $N16f9db00\n Merge2 {\n  inputs 2\n  operation under\n  name Merge42\n  xpos 284\n  ypos 8294\n }\n Switch {\n  inputs 2\n  which {{Switch40.which==0?(Reformat26.height>=2?0:1):1}}\n  name Switch41\n  label \"INPUT \\[value which]\"\n  xpos 109\n  ypos 8288\n }\n Dot {\n  name Dot203\n  xpos 143\n  ypos 8499\n }\npush $N163b8ad0\npush $N163b3f90\n Dot {\n  name Dot14\n  xpos -874\n  ypos -281\n }\nset N17074a20 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix33\n  xpos -640\n  ypos -291\n }\npush $N163b8ad0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix33\n  xpos -461\n  ypos -291\n }\nset N170b0f40 [stack 0]\npush $N17074a20\n Dot {\n  name Dot15\n  xpos -874\n  ypos -204\n }\nset N170ba060 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix34\n  xpos -638\n  ypos -214\n }\npush $N170b0f40\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix34\n  xpos -461\n  ypos -214\n }\nset N170c9f30 [stack 0]\npush $N170ba060\n Dot {\n  name Dot16\n  xpos -874\n  ypos -124\n }\nset N170d3050 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix35\n  xpos -638\n  ypos -134\n }\npush $N170c9f30\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix35\n  xpos -461\n  ypos -134\n }\nset N170e2ee0 [stack 0]\npush $N170d3050\n Dot {\n  name Dot17\n  xpos -874\n  ypos -40\n }\nset N170e14d0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix36\n  xpos -641\n  ypos -50\n }\npush $N170e2ee0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix36\n  xpos -461\n  ypos -50\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos -12\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 112\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression17\n  xpos -461\n  ypos 145\n }\nset N17121b30 [stack 0]\nclone $C16487210 {\n  xpos -648\n  ypos 145\n  selected false\n }\npush $N170e14d0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -908\n  ypos 145\n }\nset N1713e5b0 [stack 0]\n Dot {\n  name Dot201\n  xpos -1052\n  ypos 149\n }\npush $N17121b30\n Dot {\n  name Dot8\n  xpos -427\n  ypos 323\n }\nset N17152450 [stack 0]\npush $N17152450\n Dot {\n  name Dot9\n  xpos -747\n  ypos 323\n }\n Dot {\n  name Dot20\n  xpos -747\n  ypos 383\n }\nset N1715b900 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix37\n  xpos -637\n  ypos 373\n }\npush $N17152450\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix37\n  xpos -461\n  ypos 373\n }\nset N17169d20 [stack 0]\npush $N1715b900\n Dot {\n  name Dot21\n  xpos -747\n  ypos 460\n }\nset N17174950 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix38\n  xpos -637\n  ypos 450\n }\npush $N17169d20\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix38\n  xpos -461\n  ypos 450\n }\nset N17184980 [stack 0]\npush $N17174950\n Dot {\n  name Dot23\n  xpos -747\n  ypos 540\n }\nset N1718db00 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix39\n  xpos -637\n  ypos 530\n }\npush $N17184980\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix39\n  xpos -461\n  ypos 530\n }\nset N1719da00 [stack 0]\npush $N1718db00\n Dot {\n  name Dot25\n  xpos -747\n  ypos 624\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix40\n  xpos -637\n  ypos 614\n }\npush $N1719da00\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix40\n  xpos -461\n  ypos 614\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 666\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 773\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression18\n  xpos -461\n  ypos 809\n }\nset N17183100 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 809\n  selected false\n }\npush $N1713e5b0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge2\n  xpos -908\n  ypos 809\n }\nset N171e8ad0 [stack 0]\n Switch {\n  inputs 2\n  which {{Expression18.height>=2?0:1}}\n  name Switch18\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 803\n }\npush $N17183100\n Dot {\n  name Dot18\n  xpos -427\n  ypos 971\n }\nset N17210540 [stack 0]\npush $N17210540\n Dot {\n  name Dot19\n  xpos -747\n  ypos 971\n }\n Dot {\n  name Dot26\n  xpos -747\n  ypos 1031\n }\nset N172066d0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix41\n  xpos -637\n  ypos 1021\n }\npush $N17210540\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix41\n  xpos -461\n  ypos 1021\n }\nset N17229a70 [stack 0]\npush $N172066d0\n Dot {\n  name Dot27\n  xpos -747\n  ypos 1108\n }\nset N17232b90 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix42\n  xpos -637\n  ypos 1098\n }\npush $N17229a70\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix42\n  xpos -461\n  ypos 1098\n }\nset N1721c870 [stack 0]\npush $N17232b90\n Dot {\n  name Dot28\n  xpos -747\n  ypos 1188\n }\nset N1724bb00 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix43\n  xpos -637\n  ypos 1178\n }\npush $N1721c870\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix43\n  xpos -461\n  ypos 1178\n }\nset N1725bac0 [stack 0]\npush $N1724bb00\n Dot {\n  name Dot30\n  xpos -747\n  ypos 1272\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix44\n  xpos -637\n  ypos 1262\n }\npush $N1725bac0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix44\n  xpos -461\n  ypos 1262\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 1314\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 1421\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression19\n  xpos -461\n  ypos 1457\n }\nset N1727c130 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 1457\n  selected false\n }\npush $N171e8ad0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge3\n  xpos -908\n  ypos 1457\n }\nset N172b70e0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch18.which==0?(Expression18.height>=2?0:1):1}}\n  name Switch19\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 1451\n }\npush $N1727c130\n Dot {\n  name Dot31\n  xpos -427\n  ypos 1603\n }\nset N172ce620 [stack 0]\npush $N172ce620\n Dot {\n  name Dot36\n  xpos -747\n  ypos 1603\n }\n Dot {\n  name Dot37\n  xpos -747\n  ypos 1663\n }\nset N172d7bd0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix45\n  xpos -637\n  ypos 1653\n }\npush $N172ce620\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix45\n  xpos -461\n  ypos 1653\n }\nset N172e7b30 [stack 0]\npush $N172d7bd0\n Dot {\n  name Dot38\n  xpos -747\n  ypos 1740\n }\nset N172f0c50 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix46\n  xpos -637\n  ypos 1730\n }\npush $N172e7b30\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix46\n  xpos -461\n  ypos 1730\n }\nset N17300ae0 [stack 0]\npush $N172f0c50\n Dot {\n  name Dot63\n  xpos -747\n  ypos 1820\n }\nset N172fed40 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix47\n  xpos -637\n  ypos 1810\n }\npush $N17300ae0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix47\n  xpos -461\n  ypos 1810\n }\nset N17319b70 [stack 0]\npush $N172fed40\n Dot {\n  name Dot64\n  xpos -747\n  ypos 1904\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix48\n  xpos -637\n  ypos 1894\n }\npush $N17319b70\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix48\n  xpos -461\n  ypos 1894\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 1946\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 2058\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression20\n  xpos -461\n  ypos 2094\n }\nset N173586b0 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 2094\n  selected false\n }\npush $N172b70e0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge4\n  xpos -908\n  ypos 2094\n }\nset N17347d30 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch19.which==0?(Expression19.height>=2?0:1):1}}\n  name Switch20\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 2088\n }\npush $N173586b0\n Dot {\n  name Dot65\n  xpos -427\n  ypos 2233\n }\nset N1738c690 [stack 0]\npush $N1738c690\n Dot {\n  name Dot66\n  xpos -747\n  ypos 2233\n }\n Dot {\n  name Dot67\n  xpos -747\n  ypos 2293\n }\nset N17395ba0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix49\n  xpos -637\n  ypos 2283\n }\npush $N1738c690\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix49\n  xpos -461\n  ypos 2283\n }\nset N173a5bb0 [stack 0]\npush $N17395ba0\n Dot {\n  name Dot68\n  xpos -747\n  ypos 2370\n }\nset N173aecd0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix50\n  xpos -637\n  ypos 2360\n }\npush $N173a5bb0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix50\n  xpos -461\n  ypos 2360\n }\nset N17393c70 [stack 0]\npush $N173aecd0\n Dot {\n  name Dot69\n  xpos -747\n  ypos 2450\n }\nset N173c7bd0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix51\n  xpos -637\n  ypos 2440\n }\npush $N17393c70\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix51\n  xpos -461\n  ypos 2440\n }\nset N173d7b90 [stack 0]\npush $N173c7bd0\n Dot {\n  name Dot70\n  xpos -747\n  ypos 2534\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix52\n  xpos -637\n  ypos 2524\n }\npush $N173d7b90\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix52\n  xpos -461\n  ypos 2524\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 2576\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 2683\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression21\n  xpos -461\n  ypos 2719\n }\nset N17417750 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 2719\n  selected false\n }\npush $N17347d30\n Merge2 {\n  inputs 2\n  operation under\n  name Merge7\n  xpos -908\n  ypos 2719\n }\nset N173f8050 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch20.which==0?(Expression20.height>=2?0:1):1}}\n  name Switch21\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 2713\n }\npush $N17417750\n Dot {\n  name Dot71\n  xpos -427\n  ypos 2909\n }\nset N1744b700 [stack 0]\npush $N1744b700\n Dot {\n  name Dot73\n  xpos -747\n  ypos 2909\n }\n Dot {\n  name Dot74\n  xpos -747\n  ypos 2969\n }\nset N174495f0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix53\n  xpos -637\n  ypos 2959\n }\npush $N1744b700\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix53\n  xpos -461\n  ypos 2959\n }\nset N17464c10 [stack 0]\npush $N174495f0\n Dot {\n  name Dot75\n  xpos -747\n  ypos 3046\n }\nset N1746dd80 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix54\n  xpos -637\n  ypos 3036\n }\npush $N17464c10\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix54\n  xpos -461\n  ypos 3036\n }\nset N174576b0 [stack 0]\npush $N1746dd80\n Dot {\n  name Dot77\n  xpos -747\n  ypos 3126\n }\nset N17484ba0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix55\n  xpos -637\n  ypos 3116\n }\npush $N174576b0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix55\n  xpos -461\n  ypos 3116\n }\nset N17496cb0 [stack 0]\npush $N17484ba0\n Dot {\n  name Dot78\n  xpos -747\n  ypos 3210\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix56\n  xpos -637\n  ypos 3200\n }\npush $N17496cb0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix56\n  xpos -461\n  ypos 3200\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 3252\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 3356\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression22\n  xpos -461\n  ypos 3392\n }\nset N174d57d0 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 3392\n  selected false\n }\npush $N173f8050\nclone $C1698bf50 {\n  inputs 2\n  xpos -908\n  ypos 3392\n  selected false\n }\nset N174f2240 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch21.which==0?(Expression21.height>=2?0:1):1}}\n  name Switch22\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 3386\n }\npush $N174d57d0\n Dot {\n  name Dot85\n  xpos -427\n  ypos 3579\n }\nset N17509a00 [stack 0]\npush $N17509a00\n Dot {\n  name Dot86\n  xpos -747\n  ypos 3579\n }\n Dot {\n  name Dot87\n  xpos -747\n  ypos 3639\n }\nset N17512f30 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix57\n  xpos -637\n  ypos 3629\n }\npush $N17509a00\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix57\n  xpos -461\n  ypos 3629\n }\nset N17522e80 [stack 0]\npush $N17512f30\n Dot {\n  name Dot90\n  xpos -747\n  ypos 3716\n }\nset N1752bf20 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix58\n  xpos -637\n  ypos 3706\n }\npush $N17522e80\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix58\n  xpos -461\n  ypos 3706\n }\nset N1753be40 [stack 0]\npush $N1752bf20\n Dot {\n  name Dot91\n  xpos -747\n  ypos 3796\n }\nset N17539ce0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix59\n  xpos -637\n  ypos 3786\n }\npush $N1753be40\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix59\n  xpos -461\n  ypos 3786\n }\nset N17554e70 [stack 0]\npush $N17539ce0\n Dot {\n  name Dot94\n  xpos -747\n  ypos 3880\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix60\n  xpos -637\n  ypos 3870\n }\npush $N17554e70\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix60\n  xpos -461\n  ypos 3870\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 3922\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 4018\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression23\n  xpos -461\n  ypos 4054\n }\nset N175939a0 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 4054\n  selected false\n }\npush $N174f2240\nclone $C16a6d060 {\n  inputs 2\n  xpos -908\n  ypos 4054\n  selected false\n }\nset N175b04b0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch22.which==0?(Expression22.height>=2?0:1):1}}\n  name Switch23\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 4048\n }\npush $N175939a0\n Dot {\n  name Dot96\n  xpos -427\n  ypos 4245\n }\nset N175c7bf0 [stack 0]\npush $N175c7bf0\n Dot {\n  name Dot97\n  xpos -747\n  ypos 4245\n }\n Dot {\n  name Dot99\n  xpos -747\n  ypos 4305\n }\nset N175d10e0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix61\n  xpos -637\n  ypos 4295\n }\npush $N175c7bf0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix61\n  xpos -461\n  ypos 4295\n }\nset N175cee20 [stack 0]\npush $N175d10e0\n Dot {\n  name Dot108\n  xpos -747\n  ypos 4382\n }\nset N175ea170 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix62\n  xpos -637\n  ypos 4372\n }\npush $N175cee20\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix62\n  xpos -461\n  ypos 4372\n }\nset N175e7e80 [stack 0]\npush $N175ea170\n Dot {\n  name Dot109\n  xpos -747\n  ypos 4462\n }\nset N176031f0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix63\n  xpos -637\n  ypos 4452\n }\npush $N175e7e80\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix63\n  xpos -461\n  ypos 4452\n }\nset N176131b0 [stack 0]\npush $N176031f0\n Dot {\n  name Dot110\n  xpos -747\n  ypos 4546\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix64\n  xpos -637\n  ypos 4536\n }\npush $N176131b0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix64\n  xpos -461\n  ypos 4536\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 4588\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 4692\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression24\n  xpos -461\n  ypos 4728\n }\nset N17651c80 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 4728\n  selected false\n }\npush $N175b04b0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge9\n  xpos -908\n  ypos 4728\n }\nset N176011d0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch23.which==0?(Expression23.height>=2?0:1):1}}\n  name Switch24\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 4722\n }\npush $N17651c80\n Dot {\n  name Dot129\n  xpos -427\n  ypos 4899\n }\nset N17685c70 [stack 0]\npush $N17685c70\n Dot {\n  name Dot130\n  xpos -747\n  ypos 4899\n }\n Dot {\n  name Dot131\n  xpos -747\n  ypos 4959\n }\nset N1768f220 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix78\n  xpos -637\n  ypos 4949\n }\npush $N17685c70\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix65\n  xpos -461\n  ypos 4949\n }\nset N17683750 [stack 0]\npush $N1768f220\n Dot {\n  name Dot134\n  xpos -747\n  ypos 5036\n }\nset N176a8210 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix79\n  xpos -637\n  ypos 5026\n }\npush $N17683750\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix66\n  xpos -461\n  ypos 5026\n }\nset N176b81b0 [stack 0]\npush $N176a8210\n Dot {\n  name Dot135\n  xpos -747\n  ypos 5116\n }\nset N176a5e30 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix80\n  xpos -637\n  ypos 5106\n }\npush $N176b81b0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix67\n  xpos -461\n  ypos 5106\n }\nset N176d1210 [stack 0]\npush $N176a5e30\n Dot {\n  name Dot136\n  xpos -747\n  ypos 5200\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix81\n  xpos -637\n  ypos 5190\n }\npush $N176d1210\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix68\n  xpos -461\n  ypos 5190\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 5242\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 5358\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression39\n  xpos -461\n  ypos 5394\n }\nset N176f1150 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 5394\n  selected false\n }\npush $N176011d0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge37\n  xpos -908\n  ypos 5394\n }\nset N1772c810 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch24.which==0?(Expression24.height>=2?0:1):1}}\n  name Switch25\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 5388\n }\npush $N176f1150\n Dot {\n  name Dot137\n  xpos -427\n  ypos 5642\n }\nset N17743d20 [stack 0]\npush $N17743d20\n Dot {\n  name Dot140\n  xpos -747\n  ypos 5642\n }\n Dot {\n  name Dot141\n  xpos -747\n  ypos 5702\n }\nset N1774d2d0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix82\n  xpos -637\n  ypos 5692\n }\npush $N17743d20\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix69\n  xpos -461\n  ypos 5692\n }\nset N1775d220 [stack 0]\npush $N1774d2d0\n Dot {\n  name Dot142\n  xpos -747\n  ypos 5779\n }\nset N177663a0 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix83\n  xpos -637\n  ypos 5769\n }\npush $N1775d220\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix70\n  xpos -461\n  ypos 5769\n }\nset N17776270 [stack 0]\npush $N177663a0\n Dot {\n  name Dot143\n  xpos -747\n  ypos 5859\n }\nset N1777f320 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix84\n  xpos -637\n  ypos 5849\n }\npush $N17776270\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix71\n  xpos -461\n  ypos 5849\n }\nset N1778f230 [stack 0]\npush $N1777f320\n Dot {\n  name Dot146\n  xpos -747\n  ypos 5943\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix85\n  xpos -637\n  ypos 5933\n }\npush $N1778f230\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix72\n  xpos -461\n  ypos 5933\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 5985\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 6092\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression40\n  xpos -461\n  ypos 6128\n }\nset N177cddf0 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 6128\n  selected false\n }\npush $N1772c810\n Merge2 {\n  inputs 2\n  operation under\n  name Merge36\n  xpos -908\n  ypos 6128\n }\nset N177e8190 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch25.which==0?(Expression39.height>=2?0:1):1}}\n  name Switch26\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 6122\n }\npush $N177cddf0\n Dot {\n  name Dot147\n  xpos -427\n  ypos 6344\n }\nset N17807e40 [stack 0]\npush $N17807e40\n Dot {\n  name Dot148\n  xpos -747\n  ypos 6344\n }\n Dot {\n  name Dot149\n  xpos -747\n  ypos 6404\n }\nset N17811360 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix86\n  xpos -637\n  ypos 6394\n }\npush $N17807e40\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix73\n  xpos -461\n  ypos 6394\n }\nset N17821370 [stack 0]\npush $N17811360\n Dot {\n  name Dot152\n  xpos -747\n  ypos 6481\n }\nset N1782a420 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix87\n  xpos -637\n  ypos 6471\n }\npush $N17821370\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix74\n  xpos -461\n  ypos 6471\n }\nset N1780ecb0 [stack 0]\npush $N1782a420\n Dot {\n  name Dot153\n  xpos -747\n  ypos 6561\n }\nset N17843400 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix88\n  xpos -637\n  ypos 6551\n }\npush $N1780ecb0\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix75\n  xpos -461\n  ypos 6551\n }\nset N178533c0 [stack 0]\npush $N17843400\n Dot {\n  name Dot154\n  xpos -747\n  ypos 6645\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix89\n  xpos -637\n  ypos 6635\n }\npush $N178533c0\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix76\n  xpos -461\n  ypos 6635\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 6687\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 6794\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression41\n  xpos -461\n  ypos 6830\n }\nset N17891eb0 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 6830\n  selected false\n }\npush $N177e8190\n Merge2 {\n  inputs 2\n  operation under\n  name Merge35\n  xpos -908\n  ypos 6830\n }\nset N178ae930 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch26.which==0?(Expression40.height>=2?0:1):1}}\n  name Switch27\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 6824\n }\npush $N17891eb0\n Dot {\n  name Dot155\n  xpos -427\n  ypos 7065\n }\nset N178c5ed0 [stack 0]\npush $N178c5ed0\n Dot {\n  name Dot158\n  xpos -747\n  ypos 7065\n }\n Dot {\n  name Dot159\n  xpos -747\n  ypos 7125\n }\nset N178ccb90 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix90\n  xpos -637\n  ypos 7115\n }\npush $N178c5ed0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix77\n  xpos -461\n  ypos 7115\n }\nset N178d16d0 [stack 0]\npush $N178ccb90\n Dot {\n  name Dot160\n  xpos -747\n  ypos 7202\n }\nset N178e8470 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix91\n  xpos -637\n  ypos 7192\n }\npush $N178d16d0\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix78\n  xpos -461\n  ypos 7192\n }\nset N178e5c80 [stack 0]\npush $N178e8470\n Dot {\n  name Dot161\n  xpos -747\n  ypos 7282\n }\nset N178febf0 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix92\n  xpos -637\n  ypos 7272\n }\npush $N178e5c80\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix79\n  xpos -461\n  ypos 7272\n }\nset N17911460 [stack 0]\npush $N178febf0\n Dot {\n  name Dot163\n  xpos -747\n  ypos 7366\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix93\n  xpos -637\n  ypos 7356\n }\npush $N17911460\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix80\n  xpos -461\n  ypos 7356\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 7408\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 7515\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression42\n  xpos -461\n  ypos 7551\n }\nset N1793ec50 [stack 0]\nclone $C16487210 {\n  xpos -641\n  ypos 7551\n  selected false\n }\npush $N178ae930\n Merge2 {\n  inputs 2\n  operation under\n  name Merge34\n  xpos -908\n  ypos 7551\n }\nset N1796cac0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch27.which==0?(Expression41.height>=2?0:1):1}}\n  name Switch28\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 7545\n }\npush $N1793ec50\n Dot {\n  name Dot164\n  xpos -427\n  ypos 7797\n }\nset N17983fe0 [stack 0]\npush $N17983fe0\n Dot {\n  name Dot165\n  xpos -747\n  ypos 7797\n }\n Dot {\n  name Dot166\n  xpos -747\n  ypos 7857\n }\nset N1795b5e0 [stack 0]\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix94\n  xpos -637\n  ypos 7847\n }\npush $N17983fe0\n Keymix {\n  inputs 3\n  maskChannel topleft.alpha\n  name Keymix81\n  xpos -461\n  ypos 7847\n }\nset N1799d480 [stack 0]\npush $N1795b5e0\n Dot {\n  name Dot167\n  xpos -747\n  ypos 7934\n }\nset N179a6600 [stack 0]\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix95\n  xpos -637\n  ypos 7924\n }\npush $N1799d480\n Keymix {\n  inputs 3\n  maskChannel topright.alpha\n  name Keymix82\n  xpos -461\n  ypos 7924\n }\nset N179b6590 [stack 0]\npush $N179a6600\n Dot {\n  name Dot168\n  xpos -747\n  ypos 8014\n }\nset N179bf730 [stack 0]\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix96\n  xpos -637\n  ypos 8004\n }\npush $N179b6590\n Keymix {\n  inputs 3\n  maskChannel bottomleft.alpha\n  name Keymix83\n  xpos -461\n  ypos 8004\n }\nset N179cf600 [stack 0]\npush $N179bf730\n Dot {\n  name Dot169\n  xpos -747\n  ypos 8098\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix97\n  xpos -637\n  ypos 8088\n }\npush $N179cf600\n Keymix {\n  inputs 3\n  maskChannel bottomright.alpha\n  name Keymix84\n  xpos -461\n  ypos 8088\n }\nclone $C1645cca0 {\n  xpos -461\n  ypos 8140\n  selected false\n }\nclone $C164535e0 {\n  xpos -461\n  ypos 8247\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression43\n  xpos -461\n  ypos 8283\n }\nclone $C16487210 {\n  xpos -641\n  ypos 8283\n  selected false\n }\npush $N1796cac0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge19\n  xpos -908\n  ypos 8283\n }\n Switch {\n  inputs 2\n  which {{Switch28.which==0?(Expression42.height>=2?0:1):1}}\n  name Switch29\n  label \"INPUT \\[value which]\"\n  xpos -1086\n  ypos 8277\n }\n Dot {\n  name Dot202\n  xpos -1052\n  ypos 8499\n }\npush $N163af4a0\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix65\n  xpos -1553\n  ypos -209\n }\nclone $C1645cca0 {\n  xpos -1553\n  ypos -12\n  selected false\n }\nclone $C164535e0 {\n  xpos -1553\n  ypos 98\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression25\n  xpos -1553\n  ypos 145\n }\nclone $C16487210 {\n  xpos -1731\n  ypos 145\n  selected false\n }\npush $N163aacd0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge10\n  xpos -1987\n  ypos 145\n }\nset N17a6bf40 [stack 0]\n Dot {\n  name Dot200\n  xpos -2184\n  ypos 149\n }\npush $N17a6bf40\n Dot {\n  name Dot120\n  xpos -1953\n  ypos 323\n }\nset N17a9f310 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  resize height\n  filter Impulse\n  name Reformat17\n  xpos -1860\n  ypos 319\n }\n Dot {\n  name Dot121\n  xpos -1506\n  ypos 323\n }\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix66\n  xpos -1540\n  ypos 488\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 666\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 774\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression26\n  xpos -1540\n  ypos 809\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 809\n  selected false\n }\npush $N17a9f310\n Merge2 {\n  inputs 2\n  operation under\n  name Merge11\n  xpos -1987\n  ypos 809\n }\nset N17afbba0 [stack 0]\n Switch {\n  inputs 2\n  which {{Reformat17.height>=2?0:1}}\n  name Switch6\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 803\n }\npush $N17afbba0\n Dot {\n  name Dot126\n  xpos -1953\n  ypos 971\n }\nset N17b130c0 [stack 0]\n Reformat {\n  type scale\n  scale 0.25\n  resize height\n  filter Impulse\n  name Reformat18\n  xpos -1861\n  ypos 967\n }\n Dot {\n  name Dot127\n  xpos -1506\n  ypos 971\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix71\n  xpos -1540\n  ypos 1155\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 1316\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 1422\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression27\n  xpos -1540\n  ypos 1457\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 1457\n  selected false\n }\npush $N17b130c0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge13\n  xpos -1987\n  ypos 1457\n }\nset N17b6f890 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch6.which==0?(Reformat18.height>=2?0:1):1}}\n  name Switch7\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 1451\n }\npush $N17b6f890\n Dot {\n  name Dot132\n  xpos -1953\n  ypos 1608\n }\nset N17b86dc0 [stack 0]\n Reformat {\n  type scale\n  scale 0.125\n  resize height\n  filter Impulse\n  name Reformat19\n  xpos -1860\n  ypos 1604\n }\n Dot {\n  name Dot133\n  xpos -1506\n  ypos 1608\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix72\n  xpos -1540\n  ypos 1804\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 1953\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 2059\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression28\n  xpos -1540\n  ypos 2094\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 2094\n  selected false\n }\npush $N17b86dc0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge14\n  xpos -1987\n  ypos 2094\n }\nset N17bd20f0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch7.which==0?(Reformat19.height>=2?0:1):1}}\n  name Switch8\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 2088\n }\npush $N17bd20f0\n Dot {\n  name Dot138\n  xpos -1953\n  ypos 2233\n }\nset N17bfaac0 [stack 0]\n Reformat {\n  type scale\n  scale 0.0625\n  resize height\n  filter Impulse\n  name Reformat20\n  xpos -1863\n  ypos 2229\n }\n Dot {\n  name Dot139\n  xpos -1506\n  ypos 2233\n }\n Matrix {\n  matrix {\n      {1 1 0}\n      {1 3 0}\n      {0 0 0}\n    }\n  name Matrix76\n  xpos -1540\n  ypos 2401\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 2580\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 2684\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression29\n  xpos -1540\n  ypos 2719\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 2719\n  selected false\n }\npush $N17bfaac0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge43\n  xpos -1987\n  ypos 2719\n }\nset N17c290a0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch8.which==0?(Reformat20.height>=2?0:1):1}}\n  name Switch9\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 2713\n }\npush $N17c290a0\n Dot {\n  name Dot144\n  xpos -1953\n  ypos 2906\n }\nset N17c63a30 [stack 0]\n Reformat {\n  type scale\n  scale 0.03125\n  resize height\n  filter Impulse\n  name Reformat21\n  xpos -1861\n  ypos 2902\n }\n Dot {\n  name Dot145\n  xpos -1506\n  ypos 2906\n }\n Matrix {\n  matrix {\n      {0 1 1}\n      {0 3 1}\n      {0 0 0}\n    }\n  name Matrix73\n  xpos -1540\n  ypos 3081\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 3253\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 3357\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression30\n  xpos -1540\n  ypos 3392\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 3392\n  selected false\n }\npush $N17c63a30\n Merge2 {\n  inputs 2\n  operation under\n  name Merge44\n  xpos -1987\n  ypos 3392\n }\nset N17ccb040 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch9.which==0?(Reformat21.height>=2?0:1):1}}\n  name Switch10\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 3386\n }\npush $N17ccb040\n Dot {\n  name Dot150\n  xpos -1953\n  ypos 3568\n }\nset N17c9cae0 [stack 0]\n Reformat {\n  type scale\n  scale 0.015625\n  resize height\n  filter Impulse\n  name Reformat22\n  xpos -1862\n  ypos 3564\n }\n Dot {\n  name Dot151\n  xpos -1506\n  ypos 3568\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {1 3 0}\n      {1 1 0}\n    }\n  name Matrix74\n  xpos -1540\n  ypos 3736\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 3915\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 4019\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression31\n  xpos -1540\n  ypos 4054\n }\nclone $C16487210 {\n  xpos -1720\n  ypos 4054\n  selected false\n }\npush $N17c9cae0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge45\n  xpos -1987\n  ypos 4054\n }\nset N17d2d680 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch10.which==0?(Reformat22.height>=2?0:1):1}}\n  name Switch11\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 4048\n }\npush $N17d2d680\n Dot {\n  name Dot156\n  xpos -1953\n  ypos 4242\n }\nset N17d56240 [stack 0]\n Reformat {\n  type scale\n  scale 0.0078125\n  resize height\n  filter Impulse\n  name Reformat23\n  xpos -1876\n  ypos 4238\n }\n Dot {\n  name Dot157\n  xpos -1506\n  ypos 4242\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix75\n  xpos -1540\n  ypos 4409\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 4588\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 4692\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression32\n  xpos -1540\n  ypos 4728\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 4728\n  selected false\n }\npush $N17d56240\n Merge2 {\n  inputs 2\n  operation under\n  name Merge46\n  xpos -1987\n  ypos 4728\n }\nset N17db2aa0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch11.which==0?(Reformat23.height>=2?0:1):1}}\n  name Switch12\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 4722\n }\npush $N17db2aa0\n Dot {\n  name Dot112\n  xpos -1953\n  ypos 4908\n }\nset N17d84400 [stack 0]\n Reformat {\n  type scale\n  scale 0.00390625\n  resize height\n  filter Impulse\n  name Reformat11\n  xpos -1862\n  ypos 4904\n }\n Dot {\n  name Dot116\n  xpos -1506\n  ypos 4908\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix67\n  xpos -1540\n  ypos 5076\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 5255\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 5368\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression34\n  xpos -1540\n  ypos 5394\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 5394\n  selected false\n }\npush $N17d84400\n Merge2 {\n  inputs 2\n  operation under\n  name Merge47\n  xpos -1987\n  ypos 5394\n }\nset N17e26800 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch12.which==0?(Reformat11.height>=2?0:1):1}}\n  name Switch13\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 5388\n }\npush $N17e26800\n Dot {\n  name Dot117\n  xpos -1953\n  ypos 5642\n }\nset N17e14d80 [stack 0]\n Reformat {\n  type scale\n  scale 0.001953125\n  resize height\n  filter Impulse\n  name Reformat13\n  xpos -1868\n  ypos 5638\n }\n Dot {\n  name Dot118\n  xpos -1506\n  ypos 5642\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix68\n  xpos -1540\n  ypos 5810\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 5989\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 6093\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression35\n  xpos -1540\n  ypos 6128\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 6128\n  selected false\n }\npush $N17e14d80\n Merge2 {\n  inputs 2\n  operation under\n  name Merge48\n  xpos -1987\n  ypos 6128\n }\nset N17ea3ab0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch13.which==0?(Reformat13.height>=2?0:1):1}}\n  name Switch14\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 6122\n }\npush $N17ea3ab0\n Dot {\n  name Dot119\n  xpos -1953\n  ypos 6344\n }\nset N17ebb000 [stack 0]\n Reformat {\n  type scale\n  scale 0.00097656\n  resize height\n  filter Impulse\n  name Reformat10\n  xpos -1879\n  ypos 6340\n }\n Dot {\n  name Dot122\n  xpos -1506\n  ypos 6344\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix69\n  xpos -1540\n  ypos 6512\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 6691\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 6795\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression36\n  xpos -1540\n  ypos 6830\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 6830\n  selected false\n }\npush $N17ebb000\n Merge2 {\n  inputs 2\n  operation under\n  name Merge49\n  xpos -1987\n  ypos 6830\n }\nset N17ee91a0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch14.which==0?(Reformat10.height>=2?0:1):1}}\n  name Switch15\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 6824\n }\npush $N17ee91a0\n Dot {\n  name Dot123\n  xpos -1953\n  ypos 7065\n }\nset N17f23be0 [stack 0]\n Reformat {\n  type scale\n  scale 0.00048828\n  resize height\n  filter Impulse\n  name Reformat14\n  xpos -1887\n  ypos 7061\n }\n Dot {\n  name Dot124\n  xpos -1506\n  ypos 7065\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix70\n  xpos -1540\n  ypos 7233\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 7412\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 7515\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression37\n  xpos -1540\n  ypos 7551\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 7551\n  selected false\n }\npush $N17f23be0\n Merge2 {\n  inputs 2\n  operation under\n  name Merge50\n  xpos -1987\n  ypos 7551\n }\nset N17f8b5c0 [stack 0]\n Switch {\n  inputs 2\n  which {{Switch15.which==0?(Reformat14.height>=2?0:1):1}}\n  name Switch16\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 7545\n }\npush $N17f8b5c0\n Dot {\n  name Dot125\n  xpos -1953\n  ypos 7797\n }\nset N17fa2b60 [stack 0]\n Reformat {\n  type scale\n  scale 0.00024414\n  resize height\n  filter Impulse\n  name Reformat12\n  xpos -1878\n  ypos 7793\n }\n Dot {\n  name Dot128\n  xpos -1506\n  ypos 7797\n }\n Matrix {\n  matrix {\n      {0 0 0}\n      {0 3 1}\n      {0 1 1}\n    }\n  name Matrix77\n  xpos -1540\n  ypos 7965\n }\nclone $C1645cca0 {\n  xpos -1540\n  ypos 8144\n  selected false\n }\nclone $C164535e0 {\n  xpos -1540\n  ypos 8248\n  selected false\n }\n Expression {\n  expr0 a>0?r/a:0\n  expr1 a>0?g/a:0\n  expr2 a>0?b/a:0\n  expr3 a>0?a/a:0\n  name Expression38\n  xpos -1540\n  ypos 8283\n }\nclone $C16487210 {\n  xpos -1723\n  ypos 8283\n  selected false\n }\npush $N17fa2b60\n Merge2 {\n  inputs 2\n  operation under\n  name Merge21\n  xpos -1987\n  ypos 8283\n }\n Switch {\n  inputs 2\n  which {{Switch16.which==0?(Reformat12.height>=2?0:1):1}}\n  name Switch17\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 8277\n }\n Dot {\n  name Dot162\n  xpos -2184\n  ypos 8499\n }\n Switch {\n  inputs 3\n  which {{MECfiller.mode}}\n  name Switch5\n  label \"INPUT \\[value which]\"\n  xpos -2218\n  ypos 9035\n }\n Merge2 {\n  inputs 2\n  name Merge15\n  xpos -2218\n  ypos 9172\n  disable {{1-parent.axismultipliercheck}}\n }\n Dot {\n  name Dot1\n  xpos -2184\n  ypos 9283\n }\n Output {\n  name Output1\n  xpos -2218\n  ypos 9367\n }\nend_group"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MagnitudeVector2.gizmo",
    "content": "Group {\n name MagnitudeVector2_\n help \"Calculate the magnitude (scalar) of an input Vector2.\"\n addUserKnob {20 main_tab l \"Magnitude Vector2\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N75db0d0 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n Expression {\n  channel0 rgba\n  expr0 sqrt((r*r)+(g*g))\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Mag2\n  xpos 140\n  ypos 218\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 174\n  ypos 364\n }\npush $N75db0d0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MagnitudeVector3.gizmo",
    "content": "Group {\n name Magnitude_Vector3_\n help \"Calculate the magnitude (scalar) of an input Vector3.\"\n addUserKnob {20 main_tab l \"Magnitude Vector3\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N3f91a00 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n Expression {\n  channel0 rgba\n  expr0 sqrt((r*r)+(g*g)+(b*b))\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Mag3\n  xpos 140\n  ypos 227\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 174\n  ypos 364\n }\npush $N3f91a00\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Matrix4x4Math.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n inputs 2\n name Matrix4x4Math\n tile_color 0x9c0000ff\n selected true\n addUserKnob {20 MatrixMult4x4}\n addUserKnob {4 output l Output t \"Add (A+B)\\nSub (A-B)\\nMult (AB)\" M {Add Sub Mult \"\" \"\"}}\n output Mult\n addUserKnob {4 chooseMatrixA l \"Choose Matrix A\" M {local world \"\"}}\n addUserKnob {41 matrixA l \"Matrix A\" T MatrixA.matrix}\n addUserKnob {26 \"\"}\n addUserKnob {4 chooseMatrixB l \"Choose Matrix B\" M {local world}}\n addUserKnob {41 matrixB l \"Matrix B\" T MatrixB.matrix}\n addUserKnob {26 result l Result:}\n addUserKnob {41 matrixC l \"Matrix C\" T Matrix_Result.matrix}\n}\n Input {\n  inputs 0\n  name InputA\n  label \"\\[value this.number]\"\n  xpos -656\n  ypos -308\n  number 1\n }\n Matrix {\n  matrix {\n      {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n      {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n      {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n      {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n    }\n  name MatrixA\n  xpos -656\n  ypos -218\n }\n Input {\n  inputs 0\n  name InputB\n  label \"\\[value this.number]\"\n  xpos -544\n  ypos -310\n }\n Matrix {\n  matrix {\n      {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n      {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n      {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n      {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n    }\n  name MatrixB\n  xpos -544\n  ypos -220\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n      {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n      {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n      {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n    }\n  name MatrixC_Add\n  xpos -692\n  ypos -107\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n      {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n      {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n      {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n    }\n  name MatrixC_Sub\n  xpos -572\n  ypos -104\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n      {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n      {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n      {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n    }\n  name Matrix_Result\n  selected true\n  xpos -587\n }\n Output {\n  name Output1\n  xpos -587\n  ypos 61\n }\n Matrix {\n  inputs 0\n  matrix {\n      {{(MatrixA.matrix.0*MatrixB.matrix.0)+(MatrixA.matrix.1*MatrixB.matrix.4)+(MatrixA.matrix.2*MatrixB.matrix.8)+(MatrixA.matrix.3*MatrixB.matrix.12)} {(MatrixA.matrix.0*MatrixB.matrix.1)+(MatrixA.matrix.1*MatrixB.matrix.5)+(MatrixA.matrix.2*MatrixB.matrix.9)+(MatrixA.matrix.3*MatrixB.matrix.13)} {(MatrixA.matrix.0*MatrixB.matrix.2)+(MatrixA.matrix.1*MatrixB.matrix.6)+(MatrixA.matrix.2*MatrixB.matrix.10)+(MatrixA.matrix.3*MatrixB.matrix.14)} {(MatrixA.matrix.0*MatrixB.matrix.3)+(MatrixA.matrix.1*MatrixB.matrix.7)+(MatrixA.matrix.2*MatrixB.matrix.11)+(MatrixA.matrix.3*MatrixB.matrix.15)}}\n      {{(MatrixA.matrix.4*MatrixB.matrix.0)+(MatrixA.matrix.5*MatrixB.matrix.4)+(MatrixA.matrix.6*MatrixB.matrix.8)+(MatrixA.matrix.7*MatrixB.matrix.12)} {(MatrixA.matrix.4*MatrixB.matrix.1)+(MatrixA.matrix.5*MatrixB.matrix.5)+(MatrixA.matrix.6*MatrixB.matrix.9)+(MatrixA.matrix.7*MatrixB.matrix.13)} {(MatrixA.matrix.4*MatrixB.matrix.2)+(MatrixA.matrix.5*MatrixB.matrix.6)+(MatrixA.matrix.6*MatrixB.matrix.10)+(MatrixA.matrix.7*MatrixB.matrix.14)} {(MatrixA.matrix.4*MatrixB.matrix.3)+(MatrixA.matrix.5*MatrixB.matrix.7)+(MatrixA.matrix.6*MatrixB.matrix.11)+(MatrixA.matrix.7*MatrixB.matrix.15)}}\n      {{(MatrixA.matrix.8*MatrixB.matrix.0)+(MatrixA.matrix.9*MatrixB.matrix.4)+(MatrixA.matrix.10*MatrixB.matrix.8)+(MatrixA.matrix.11*MatrixB.matrix.12)} {(MatrixA.matrix.8*MatrixB.matrix.1)+(MatrixA.matrix.9*MatrixB.matrix.5)+(MatrixA.matrix.10*MatrixB.matrix.9)+(MatrixA.matrix.11*MatrixB.matrix.13)} {(MatrixA.matrix.8*MatrixB.matrix.2)+(MatrixA.matrix.9*MatrixB.matrix.6)+(MatrixA.matrix.10*MatrixB.matrix.10)+(MatrixA.matrix.11*MatrixB.matrix.14)} {(MatrixA.matrix.8*MatrixB.matrix.3)+(MatrixA.matrix.9*MatrixB.matrix.7)+(MatrixA.matrix.10*MatrixB.matrix.11)+(MatrixA.matrix.11*MatrixB.matrix.15)}}\n      {{(MatrixA.matrix.12*MatrixB.matrix.0)+(MatrixA.matrix.13*MatrixB.matrix.4)+(MatrixA.matrix.14*MatrixB.matrix.8)+(MatrixA.matrix.15*MatrixB.matrix.12)} {(MatrixA.matrix.12*MatrixB.matrix.1)+(MatrixA.matrix.13*MatrixB.matrix.5)+(MatrixA.matrix.14*MatrixB.matrix.9)+(MatrixA.matrix.15*MatrixB.matrix.13)} {(MatrixA.matrix.12*MatrixB.matrix.2)+(MatrixA.matrix.13*MatrixB.matrix.6)+(MatrixA.matrix.14*MatrixB.matrix.10)+(MatrixA.matrix.15*MatrixB.matrix.14)} {(MatrixA.matrix.12*MatrixB.matrix.3)+(MatrixA.matrix.13*MatrixB.matrix.7)+(MatrixA.matrix.14*MatrixB.matrix.11)+(MatrixA.matrix.15*MatrixB.matrix.15)}}\n    }\n  name MatrixC_Mult\n  xpos -445\n  ypos -105\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Matrix4x4_Inverse.gizmo",
    "content": "Group {\nname Matrix4x4_Inverse\ntile_color 0x9c0000ff\nselected true\naddUserKnob {20 MatrixInverse}\naddUserKnob {4 inputMatrixType l \"Input Matrix From:\" M {local world \"\" \"\" \"\"}}\ninputMatrixType world\naddUserKnob {41 inputMatrixA l \"Input Matrix A\" T MatrixA.matrix}\naddUserKnob {26 result l Result}\naddUserKnob {41 matrixInverse l \"Matrix A Inverse\" T Matrix_InverseResult.matrix}\naddUserKnob {26 exportText l \"Export Inverse Axis\"}\naddUserKnob {26 text l \" \" T \"<b><font color=lightgreen>FrameRange\"}\naddUserKnob {22 createInverseAxisLinked l \"FrameRange (Linked)\" T \"mi = nuke.thisNode()\\nmiX = mi.xpos()\\nmiY = mi.ypos()\\nmiName = mi.name()\\nmiInputName = mi.input(0).name()\\n\\nwith nuke.root():\\n    axis = nuke.createNode('Axis2')\\n    axis.setName('Axis_Inverse')\\n    axis.setXpos(miX+10)\\n    axis.setYpos(miY+80)\\n    axis.setInput(0, None)\\n    axis.knob('tile_color').setValue(1799395071)\\n    axis.knob('label').setValue('\\{\\} Inverse'.format(miInputName))\\n    axis.knob('useMatrix').setValue(1)\\n    axis.knob('matrix').setExpression('\\{\\}.matrixInverse'.format(miName))\\n\" +STARTLINE}\naddUserKnob {22 createInverseAxisBaked l \"FrameRange (Baked)\" -STARTLINE T \"mi = nuke.thisNode()\\nmiX = mi.xpos()\\nmiY = mi.ypos()\\nmiName = mi.name()\\nmi_matrixInverse = mi.knob('matrixInverse')\\nmiInputName = mi.input(0).name()\\n\\nwith nuke.root():\\n    axis = nuke.createNode('Axis2')\\n    axis.setName('Axis_Inverse')\\n    axisName = axis.name()\\n    axis.setXpos(miX+10)\\n    axis.setYpos(miY+80)\\n    axis.setInput(0, None)\\n    axis.knob('tile_color').setValue(1799395071)\\n    axis.knob('label').setValue('\\{\\} Inverse'.format(miInputName))\\n    axis.knob('useMatrix').setValue(1)\\n    axisMatrix= axis.knob('matrix')\\n    \\n    # Grab first and last frame from root\\n    first_frame = int(nuke.Root()\\['first_frame'].getValue())\\n    last_frame = int(nuke.Root()\\['last_frame'].getValue())\\n    \\n    # Create user input panel\\n    p = nuke.Panel(\\\"Execute on FrameRange\\\")\\n    p.addSingleLineInput('First Frame', first_frame)\\n    p.addSingleLineInput('Last Frame', last_frame)\\n    p.addSingleLineInput('Increment', 1)\\n    \\n    if p.show():\\n        # Define first, last, increment from user input panel\\n        ff = str(int(p.value(\\\"First Frame\\\")))\\n        lf = str(int(p.value(\\\"Last Frame\\\")))\\n        i = str(int(p.value(\\\"Increment\\\")))\\n        \\n    for item in range(16):\\n        num = str(item)\\n        nuke.animation(\\\"\\{\\}.matrix.\\{\\}\\\".format(axisName, num) , \\\"generate\\\", (ff, lf, i, 'y', \\\"\\{\\}.matrixInverse.\\{\\}\\\".format(miName, num) ) )\\n    \"}\naddUserKnob {26 text_1 l \" \" T \"<b><font color=lightgreen>Static Frame\"}\naddUserKnob {3 refFrame l \"Ref Frame\"}\nrefFrame 1001\naddUserKnob {22 setToCurrentFrame l \"Set to Current Frame\" -STARTLINE T \"n = nuke.thisNode()\\nref = n.knob('refFrame')\\nframe = nuke.frame()\\n\\nref.setValue(frame)\"}\naddUserKnob {22 staticFrameExportLinked l \"Static Frame (Linked)\" T \"mi = nuke.thisNode()\\nmiX = mi.xpos()\\nmiY = mi.ypos()\\nmiName = mi.name()\\nmiInputName = mi.input(0).name()\\nrefFrame = int(mi.knob('refFrame').value())\\n\\nwith nuke.root():\\n    axis = nuke.createNode('Axis2')\\n    axis.setName('Axis_Inverse')\\n    axis.setXpos(miX+10)\\n    axis.setYpos(miY+80)\\n    axis.setInput(0, None)\\n    axis.knob('tile_color').setValue(1799395071)\\n    axis.knob('label').setValue('\\{\\} Inverse\\\\nRef Frame: \\{\\}'.format(miInputName, refFrame))\\n    axis.knob('useMatrix').setValue(1)\\n    axis.knob('matrix').setExpression('\\{\\}.matrixInverse(\\{\\})'.format(miName, refFrame))\" +STARTLINE}\naddUserKnob {22 staticFrameExportBaked l \"Static Frame (Baked)\" -STARTLINE T \"mi = nuke.thisNode()\\nmiX = mi.xpos()\\nmiY = mi.ypos()\\nmiName = mi.name()\\nmi_matrixInverse = mi.knob('matrixInverse')\\nmiInputName = mi.input(0).name()\\nrefFrame = str(int(mi.knob('refFrame').value()))\\n\\nwith nuke.root():\\n    axis = nuke.createNode('Axis2')\\n    axis.setName('Axis_Inverse')\\n    axisName = axis.name()\\n    axis.setXpos(miX+10)\\n    axis.setYpos(miY+80)\\n    axis.setInput(0, None)\\n    axis.knob('tile_color').setValue(1799395071)\\n    axis.knob('label').setValue('\\{\\} Inverse\\\\nRef Frame: \\{\\}'.format(miInputName, refFrame))\\n    axis.knob('useMatrix').setValue(1)\\n    axisMatrix= axis.knob('matrix')\\n        \\n    for item in range(16):\\n        num = str(item)\\n        nuke.animation(\\\"\\{\\}.matrix.\\{\\}\\\".format(axisName, num) , \\\"generate\\\", (refFrame, refFrame, '1', 'y', \\\"\\{\\}.matrixInverse.\\{\\}\\\".format(miName, num) ) )\\n    axisMatrix.clearAnimated()\"}\naddUserKnob {20 checkResult_2 l \"Check Result: Identity Matrix\"}\naddUserKnob {41 matrixResultIdentity l \"Input Inverse Result:\" T Matrix4x4Math.matrixC}\n}\nInput {\ninputs 0\nname Input\nxpos -544\nypos -329\n}\nMatrix {\nmatrix {\n    {{\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"}}\n    {{\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"}}\n    {{\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"}}\n    {{\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"} {\"inputMatrixType == 0 ? parent.input0.matrix :  parent.input0.world_matrix\"}}\n  }\nname MatrixA\nxpos -544\nypos -288\n}\nset N47f88800 [stack 0]\nNoOp {\nname DeterminantA\nxpos -544\nypos -221\naddUserKnob {20 User}\naddUserKnob {7 determinant l \"Matrix A Determinant\" R -1 1}\ndeterminant {{\"+MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.10*MatrixA.matrix.15\\n+MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.11*MatrixA.matrix.13\\n+MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.9*MatrixA.matrix.14\\n-MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.10*MatrixA.matrix.13\\n-MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.9*MatrixA.matrix.15\\n-MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.11*MatrixA.matrix.14\\n\\n-MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.10*MatrixA.matrix.15\\n-MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.11*MatrixA.matrix.13\\n-MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.9*MatrixA.matrix.14\\n+MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.10*MatrixA.matrix.13\\n+MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.9*MatrixA.matrix.15\\n+MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.11*MatrixA.matrix.14\\n\\n+MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.8*MatrixA.matrix.15\\n+MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.8*MatrixA.matrix.13\\n+MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.8*MatrixA.matrix.14\\n-MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.8*MatrixA.matrix.13\\n-MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.8*MatrixA.matrix.15\\n-MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.8*MatrixA.matrix.14\\n\\n-MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.11*MatrixA.matrix.12\\n-MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.9*MatrixA.matrix.12\\n-MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.10*MatrixA.matrix.12\\n+MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.9*MatrixA.matrix.12\\n+MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.11*MatrixA.matrix.12\\n+MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.10*MatrixA.matrix.12\"}}\naddUserKnob {7 oneOver l \"1 / Determinant\"}\noneOver {{1/determinant}}\n}\nMatrix {\ninputs 0\nmatrix {\n    {{\"+MatrixA.matrix.5*MatrixA.matrix.10*MatrixA.matrix.15\\n+MatrixA.matrix.6*MatrixA.matrix.11*MatrixA.matrix.13\\n+MatrixA.matrix.7*MatrixA.matrix.9*MatrixA.matrix.14\\n-MatrixA.matrix.7*MatrixA.matrix.10*MatrixA.matrix.13\\n-MatrixA.matrix.6*MatrixA.matrix.9*MatrixA.matrix.15\\n-MatrixA.matrix.5*MatrixA.matrix.11*MatrixA.matrix.14\"} {\"-MatrixA.matrix.1*MatrixA.matrix.10*MatrixA.matrix.15\\n-MatrixA.matrix.2*MatrixA.matrix.11*MatrixA.matrix.13\\n-MatrixA.matrix.3*MatrixA.matrix.9*MatrixA.matrix.14\\n+MatrixA.matrix.3*MatrixA.matrix.10*MatrixA.matrix.13\\n+MatrixA.matrix.2*MatrixA.matrix.9*MatrixA.matrix.15\\n+MatrixA.matrix.1*MatrixA.matrix.11*MatrixA.matrix.14\"} {\"+MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.15\\n+MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.13\\n+MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.14\\n-MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.13\\n-MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.15\\n-MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.14\"} {\"-MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.11\\n-MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.9\\n-MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.10\\n+MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.9\\n+MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.11\\n+MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.10\"}}\n    {{\"-MatrixA.matrix.4*MatrixA.matrix.10*MatrixA.matrix.15\\n-MatrixA.matrix.6*MatrixA.matrix.11*MatrixA.matrix.12\\n-MatrixA.matrix.7*MatrixA.matrix.11*MatrixA.matrix.14\\n+MatrixA.matrix.7*MatrixA.matrix.10*MatrixA.matrix.12\\n+MatrixA.matrix.6*MatrixA.matrix.8*MatrixA.matrix.15\\n+MatrixA.matrix.4*MatrixA.matrix.11*MatrixA.matrix.14\"} {\"+MatrixA.matrix.0*MatrixA.matrix.10*MatrixA.matrix.15\\n+MatrixA.matrix.2*MatrixA.matrix.11*MatrixA.matrix.12\\n+MatrixA.matrix.3*MatrixA.matrix.8*MatrixA.matrix.14\\n-MatrixA.matrix.3*MatrixA.matrix.10*MatrixA.matrix.12\\n-MatrixA.matrix.2*MatrixA.matrix.8*MatrixA.matrix.15\\n-MatrixA.matrix.0*MatrixA.matrix.11*MatrixA.matrix.14\"} {\"-MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.15\\n-MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.12\\n-MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.14\\n+MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.12\\n+MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.15\\n+MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.14\"} {\"+MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.11\\n+MatrixA.matrix.2*MatrixA.matrix.7*MatrixA.matrix.8\\n+MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.10\\n-MatrixA.matrix.3*MatrixA.matrix.6*MatrixA.matrix.8\\n-MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.11\\n-MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.10\"}}\n    {{\"+MatrixA.matrix.4*MatrixA.matrix.9*MatrixA.matrix.15\\n+MatrixA.matrix.5*MatrixA.matrix.11*MatrixA.matrix.12\\n+MatrixA.matrix.7*MatrixA.matrix.8*MatrixA.matrix.13\\n-MatrixA.matrix.7*MatrixA.matrix.9*MatrixA.matrix.12\\n-MatrixA.matrix.5*MatrixA.matrix.8*MatrixA.matrix.15\\n-MatrixA.matrix.4*MatrixA.matrix.11*MatrixA.matrix.13\"} {\"-MatrixA.matrix.0*MatrixA.matrix.9*MatrixA.matrix.15\\n-MatrixA.matrix.1*MatrixA.matrix.11*MatrixA.matrix.12\\n-MatrixA.matrix.3*MatrixA.matrix.8*MatrixA.matrix.13\\n+MatrixA.matrix.3*MatrixA.matrix.9*MatrixA.matrix.12\\n+MatrixA.matrix.1*MatrixA.matrix.8*MatrixA.matrix.15\\n+MatrixA.matrix.0*MatrixA.matrix.11*MatrixA.matrix.13\"} {\"+MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.15\\n+MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.12\\n+MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.13\\n-MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.12\\n-MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.15\\n-MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.13\"} {\"-MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.11\\n-MatrixA.matrix.1*MatrixA.matrix.7*MatrixA.matrix.8\\n-MatrixA.matrix.3*MatrixA.matrix.4*MatrixA.matrix.9\\n+MatrixA.matrix.3*MatrixA.matrix.5*MatrixA.matrix.8\\n+MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.11\\n+MatrixA.matrix.0*MatrixA.matrix.7*MatrixA.matrix.9\"}}\n    {{\"-MatrixA.matrix.4*MatrixA.matrix.9*MatrixA.matrix.14\\n-MatrixA.matrix.5*MatrixA.matrix.10*MatrixA.matrix.12\\n-MatrixA.matrix.6*MatrixA.matrix.8*MatrixA.matrix.13\\n+MatrixA.matrix.6*MatrixA.matrix.9*MatrixA.matrix.12\\n+MatrixA.matrix.5*MatrixA.matrix.8*MatrixA.matrix.14\\n+MatrixA.matrix.4*MatrixA.matrix.10*MatrixA.matrix.13\"} {\"+MatrixA.matrix.0*MatrixA.matrix.9*MatrixA.matrix.14\\n+MatrixA.matrix.1*MatrixA.matrix.10*MatrixA.matrix.12\\n+MatrixA.matrix.2*MatrixA.matrix.8*MatrixA.matrix.13\\n-MatrixA.matrix.2*MatrixA.matrix.9*MatrixA.matrix.12\\n-MatrixA.matrix.1*MatrixA.matrix.8*MatrixA.matrix.14\\n-MatrixA.matrix.0*MatrixA.matrix.10*MatrixA.matrix.13\"} {\"-MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.14\\n-MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.12\\n-MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.13\\n+MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.12\\n+MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.14\\n+MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.13\"} {\"+MatrixA.matrix.0*MatrixA.matrix.5*MatrixA.matrix.10\\n+MatrixA.matrix.1*MatrixA.matrix.6*MatrixA.matrix.8\\n+MatrixA.matrix.2*MatrixA.matrix.4*MatrixA.matrix.9\\n-MatrixA.matrix.2*MatrixA.matrix.5*MatrixA.matrix.8\\n-MatrixA.matrix.1*MatrixA.matrix.4*MatrixA.matrix.10\\n-MatrixA.matrix.0*MatrixA.matrix.6*MatrixA.matrix.9\"}}\n  }\nname MatrixA_Adjugate\nxpos -390\nypos -287\n}\npush $N47f88800\nMatrix {\ninputs 0\nmatrix {\n    {{parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver}}\n    {{parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver}}\n    {{parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver}}\n    {{parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver} {parent.MatrixA_Adjugate.matrix*parent.DeterminantA.oneOver}}\n  }\nname Matrix_InverseResult\nxpos -391\nypos -225\n}\nGroup {\ninputs 2\nname Matrix4x4Math\ntile_color 0x9c0000ff\nxpos -391\nypos -146\naddUserKnob {20 MatrixMult4x4}\naddUserKnob {4 output l Output t \"Add (A+B)\\nSub (A-B)\\nMult (AB)\" M {Add Sub Mult \"\" \"\"}}\noutput Mult\naddUserKnob {4 chooseMatrixA l \"Choose Matrix A\" M {local world \"\"}}\naddUserKnob {41 matrixA l \"Matrix A\" T MatrixA.matrix}\naddUserKnob {26 \"\"}\naddUserKnob {4 chooseMatrixB l \"Choose Matrix B\" M {local world}}\naddUserKnob {41 matrixB l \"Matrix B\" T MatrixB.matrix}\naddUserKnob {26 result l Result:}\naddUserKnob {41 matrixC l \"Matrix C\" T Matrix_Result.matrix}\n}\nInput {\ninputs 0\nname InputA\nlabel \"\\[value this.number]\"\nxpos -656\nypos -308\nnumber 1\n}\nMatrix {\nmatrix {\n    {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n    {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n    {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n    {{\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"} {\"chooseMatrixA == 0 ? parent.input1.matrix : parent.input1.world_matrix\"}}\n  }\nname MatrixA\nxpos -656\nypos -218\n}\nInput {\ninputs 0\nname InputB\nlabel \"\\[value this.number]\"\nxpos -544\nypos -310\n}\nMatrix {\nmatrix {\n    {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n    {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n    {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n    {{\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"} {\"chooseMatrixB == 0 ? parent.input0.matrix : parent.input0.world_matrix\"}}\n  }\nname MatrixB\nxpos -544\nypos -220\n}\nMatrix {\ninputs 0\nmatrix {\n    {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n    {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n    {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n    {{MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix} {MatrixA.matrix+MatrixB.matrix}}\n  }\nname MatrixC_Add\nxpos -692\nypos -107\n}\nMatrix {\ninputs 0\nmatrix {\n    {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n    {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n    {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n    {{MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix} {MatrixA.matrix-MatrixB.matrix}}\n  }\nname MatrixC_Sub\nxpos -572\nypos -104\n}\nMatrix {\ninputs 0\nmatrix {\n    {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n    {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n    {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n    {{\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"} {\"output == 0 ? MatrixC_Add.matrix : output == 1 ? MatrixC_Sub.matrix : MatrixC_Mult.matrix\"}}\n  }\nname Matrix_Result\nselected true\nxpos -587\n}\nOutput {\nname Output1\nxpos -587\nypos 61\n}\nMatrix {\ninputs 0\nmatrix {\n    {{(MatrixA.matrix.0*MatrixB.matrix.0)+(MatrixA.matrix.1*MatrixB.matrix.4)+(MatrixA.matrix.2*MatrixB.matrix.8)+(MatrixA.matrix.3*MatrixB.matrix.12)} {(MatrixA.matrix.0*MatrixB.matrix.1)+(MatrixA.matrix.1*MatrixB.matrix.5)+(MatrixA.matrix.2*MatrixB.matrix.9)+(MatrixA.matrix.3*MatrixB.matrix.13)} {(MatrixA.matrix.0*MatrixB.matrix.2)+(MatrixA.matrix.1*MatrixB.matrix.6)+(MatrixA.matrix.2*MatrixB.matrix.10)+(MatrixA.matrix.3*MatrixB.matrix.14)} {(MatrixA.matrix.0*MatrixB.matrix.3)+(MatrixA.matrix.1*MatrixB.matrix.7)+(MatrixA.matrix.2*MatrixB.matrix.11)+(MatrixA.matrix.3*MatrixB.matrix.15)}}\n    {{(MatrixA.matrix.4*MatrixB.matrix.0)+(MatrixA.matrix.5*MatrixB.matrix.4)+(MatrixA.matrix.6*MatrixB.matrix.8)+(MatrixA.matrix.7*MatrixB.matrix.12)} {(MatrixA.matrix.4*MatrixB.matrix.1)+(MatrixA.matrix.5*MatrixB.matrix.5)+(MatrixA.matrix.6*MatrixB.matrix.9)+(MatrixA.matrix.7*MatrixB.matrix.13)} {(MatrixA.matrix.4*MatrixB.matrix.2)+(MatrixA.matrix.5*MatrixB.matrix.6)+(MatrixA.matrix.6*MatrixB.matrix.10)+(MatrixA.matrix.7*MatrixB.matrix.14)} {(MatrixA.matrix.4*MatrixB.matrix.3)+(MatrixA.matrix.5*MatrixB.matrix.7)+(MatrixA.matrix.6*MatrixB.matrix.11)+(MatrixA.matrix.7*MatrixB.matrix.15)}}\n    {{(MatrixA.matrix.8*MatrixB.matrix.0)+(MatrixA.matrix.9*MatrixB.matrix.4)+(MatrixA.matrix.10*MatrixB.matrix.8)+(MatrixA.matrix.11*MatrixB.matrix.12)} {(MatrixA.matrix.8*MatrixB.matrix.1)+(MatrixA.matrix.9*MatrixB.matrix.5)+(MatrixA.matrix.10*MatrixB.matrix.9)+(MatrixA.matrix.11*MatrixB.matrix.13)} {(MatrixA.matrix.8*MatrixB.matrix.2)+(MatrixA.matrix.9*MatrixB.matrix.6)+(MatrixA.matrix.10*MatrixB.matrix.10)+(MatrixA.matrix.11*MatrixB.matrix.14)} {(MatrixA.matrix.8*MatrixB.matrix.3)+(MatrixA.matrix.9*MatrixB.matrix.7)+(MatrixA.matrix.10*MatrixB.matrix.11)+(MatrixA.matrix.11*MatrixB.matrix.15)}}\n    {{(MatrixA.matrix.12*MatrixB.matrix.0)+(MatrixA.matrix.13*MatrixB.matrix.4)+(MatrixA.matrix.14*MatrixB.matrix.8)+(MatrixA.matrix.15*MatrixB.matrix.12)} {(MatrixA.matrix.12*MatrixB.matrix.1)+(MatrixA.matrix.13*MatrixB.matrix.5)+(MatrixA.matrix.14*MatrixB.matrix.9)+(MatrixA.matrix.15*MatrixB.matrix.13)} {(MatrixA.matrix.12*MatrixB.matrix.2)+(MatrixA.matrix.13*MatrixB.matrix.6)+(MatrixA.matrix.14*MatrixB.matrix.10)+(MatrixA.matrix.15*MatrixB.matrix.14)} {(MatrixA.matrix.12*MatrixB.matrix.3)+(MatrixA.matrix.13*MatrixB.matrix.7)+(MatrixA.matrix.14*MatrixB.matrix.11)+(MatrixA.matrix.15*MatrixB.matrix.15)}}\n  }\nname MatrixC_Mult\nxpos -445\nypos -105\n}\nend_group\nAxis2 {\ninputs 0\nuseMatrix true\nmatrix {\n    {{parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix}}\n    {{parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix}}\n    {{parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix}}\n    {{parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix} {parent.Matrix_InverseResult.matrix}}\n  }\nname Axis1\nxpos -533\nypos -124\n}\nOutput {\nname Output1\nxpos -543\nypos -23\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeAll.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name MergeAll\n help \"MergeAll v1.0\\n\\nMerges all the channels as expected! Especially useful for workflows with AOVs or multi-channel mattes, where you want to mask or stencil multiple channels at the same time.\\n\\nDecyphered with the awesome Tony Lyons.\\n\\nadrianpueyo.com, 2019\"\n tile_color 0x4b60c3ff\n selected true\n addUserKnob {20 MergeAll}\n addUserKnob {41 operation T MergeAllChannels.operation}\n addUserKnob {41 sRGB l \"Video colorspace\" -STARTLINE T MergeAllChannels.sRGB}\n addUserKnob {41 screen_alpha l \"alpha masking\" -STARTLINE T MergeAllChannels.screen_alpha}\n addUserKnob {41 bbox l \"set bbox to \" T MergeAllChannels.bbox}\n addUserKnob {41 metainput l \"metadata from\" -STARTLINE T MergeAllChannels.metainput}\n addUserKnob {41 rangeinput l \"range from\" -STARTLINE T MergeAllChannels.rangeinput}\n addUserKnob {26 \"\"}\n addUserKnob {41 Achannels l \"A channels\" T MergeAllChannels.Achannels}\n addUserKnob {41 Bchannels l \"B channels\" T MergeAllChannels.Bchannels}\n addUserKnob {41 output T MergeAllChannels.output}\n addUserKnob {41 also_merge l \"also merge\" T MergeAllChannels.also_merge}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T MergeAllChannels.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T MergeAllChannels.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeAllChannels.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeAllChannels.fringe}\n addUserKnob {41 mix T MergeAllChannels.mix}\n addUserKnob {26 version_author l \" \" t \"MergeAll v1.0\\n24 Sep 2019\" T \"<br/><span style=\\\"color:#666\\\"><b>MergeAll v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 941\n  ypos -466\n  number 2\n }\n Input {\n  inputs 0\n  name InputB\n  xpos 831\n  ypos -663\n }\nset N34d09f40 [stack 0]\n Multiply {\n  value 0\n  name Multiply11\n  label \"\\[value value]\"\n  xpos 502\n  ypos -572\n }\n Input {\n  inputs 0\n  name InputA\n  xpos 392\n  ypos -672\n  number 1\n }\nset Ndbaf1390 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  Achannels {{{parent.MergeAllChannels.Achannels}}}\n  Bchannels {{{parent.MergeAllChannels.Bchannels}}}\n  output {{{parent.MergeAllChannels.output}}}\n  also_merge {{{parent.MergeAllChannels.also_merge}}}\n  name MergeBChannels\n  xpos 392\n  ypos -560\n }\n Dot {\n  name Dot1\n  xpos 426\n  ypos -462\n }\npush $Ndbaf1390\n Multiply {\n  value 0\n  name Multiply12\n  label \"\\[value value]\"\n  xpos 721\n  ypos -571\n }\npush $N34d09f40\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  Achannels {{{parent.MergeAllChannels.Achannels}}}\n  Bchannels {{{parent.MergeAllChannels.Bchannels}}}\n  output {{{parent.MergeAllChannels.output}}}\n  also_merge {{{parent.MergeAllChannels.also_merge}}}\n  name MergeAChannels\n  selected true\n  xpos 831\n  ypos -559\n }\n Merge2 {\n  inputs 2+1\n  also_merge all\n  name MergeAllChannels\n  xpos 831\n  ypos -466\n }\n Output {\n  name Output1\n  xpos 831\n  ypos -413\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeAtmos.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name MergeAtmos\n tile_color 0x4b5ec6ff\n note_font \"Verdana Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 MergeAtmos}\n addUserKnob {41 channels T MergeKeymix.also_merge}\n addUserKnob {41 size l \"blur size\" T Blur1.size}\n addUserKnob {26 text_1 l \" \" T \" \"}\n addUserKnob {41 plusmix l \"plus mix\" T MergePlus.mix}\n addUserKnob {41 mix_1 l \"over mix\" T MergeOver.mix}\n addUserKnob {26 text l \" \" T \" \"}\n addUserKnob {41 value l \"Gamma Alpha A\" T Gamma1.value}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T MergeKeymix.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"For merging Dust, Smoke, Atmos\\n\\nMix between plus and over\\n\\nUses alpha of FG to blur the BG which mimicks diffusion.\" T MergeAtmos}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 508\n  ypos 591\n  number 2\n }\n Dot {\n  name Dot7\n  xpos 542\n  ypos 729\n }\n Input {\n  inputs 0\n  name InputA\n  xpos 358\n  ypos 84\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 358\n  ypos 212\n }\n Gamma {\n  channels alpha\n  name Gamma1\n  xpos 358\n  ypos 280\n }\n Dot {\n  name Dot87\n  xpos 392\n  ypos 377\n }\nset N21d63b90 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 392\n  ypos 452\n }\nset N475d840 [stack 0]\n Dot {\n  name Dot1\n  xpos 392\n  ypos 522\n }\npush $N475d840\npush $N21d63b90\n Input {\n  inputs 0\n  name InputB\n  xpos 155\n  ypos 83\n }\n Dot {\n  name Dot4\n  xpos 189\n  ypos 250\n }\nset N475dd80 [stack 0]\n Blur {\n  inputs 1+1\n  size 10\n  crop false\n  name Blur1\n  label \"\\[value size]\"\n  xpos 155\n  ypos 365\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix 0.5\n  name MergePlus\n  xpos 155\n  ypos 445\n }\n Merge2 {\n  inputs 2\n  also_merge all\n  mix 0.5\n  name MergeOver\n  xpos 155\n  ypos 519\n }\npush $N475dd80\n Dot {\n  name Dot5\n  xpos 34\n  ypos 250\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 34\n  ypos 729\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeKeymix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 155\n  ypos 722\n }\n Output {\n  name Output1\n  xpos 155\n  ypos 989\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeBlend.gizmo",
    "content": "Group {\n inputs 2\n name MergeBlend\n tile_color 0x4b5ec6ff\n label \"\\[value merge1] | \\[value merge2]\"\n note_font \"Verdana Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 MergeBlend}\n addUserKnob {41 channels T Merge1.also_merge}\n addUserKnob {41 bbox l \"set bbox to \" T Merge9.bbox}\n addUserKnob {41 metainput l \"metadata from\" -STARTLINE T Merge9.metainput}\n addUserKnob {41 rangeinput l \"range from\" -STARTLINE T Merge9.rangeinput}\n addUserKnob {26 \"\"}\n addUserKnob {41 merge1 l Merge1 T Merge9.operation}\n addUserKnob {41 merge2 l \"         Merge2\" -STARTLINE T Merge8.operation}\n addUserKnob {26 text l \" \" T \"0 is Merge1 <------> 1 is Merge2\"}\n addUserKnob {41 blend l Blend T Dissolve1.which}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Mix between 2 Merge Operations\" T MergeBlend}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -239\n  ypos 761\n  number 2\n }\n Input {\n  inputs 0\n  name InputA\n  xpos -332\n  ypos 355\n  number 1\n }\n Dot {\n  name Dot16\n  xpos -298\n  ypos 448\n }\nset Nc7745230 [stack 0]\n Input {\n  inputs 0\n  name InputB\n  xpos -569\n  ypos 353\n }\n Dot {\n  name Dot19\n  xpos -535\n  ypos 461\n }\nset Nc774ca40 [stack 0]\n Merge2 {\n  inputs 2\n  operation plus\n  bbox {{Merge9.bbox}}\n  metainput {{Merge9.metainput}}\n  rangeinput {{Merge9.rangeinput}}\n  also_merge all\n  name Merge8\n  xpos -332\n  ypos 572\n }\npush $Nc7745230\npush $Nc774ca40\n Merge2 {\n  inputs 2\n  operation screen\n  also_merge all\n  name Merge9\n  xpos -569\n  ypos 572\n }\n Dissolve {\n  inputs 2\n  which 0.5\n  name Dissolve1\n  xpos -460\n  ypos 673\n }\npush $Nc774ca40\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -645\n  ypos 461\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -645\n  ypos 764\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox {{Merge9.bbox}}\n  metainput {{Merge9.metainput}}\n  rangeinput {{Merge9.rangeinput}}\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name Merge1\n  xpos -460\n  ypos 757\n }\n Output {\n  name Output1\n  xpos -460\n  ypos 854\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MirrorBorder.gizmo",
    "content": "Group {\n name MirrorBorder\n onCreate \"n = nuke.thisNode()\\nsize = n.knob(\\\"size\\\")\\n\\nsize.setRange(0, 500)\"\n tile_color 0xa57aaaff\n note_font \"Bitstream Vera Sans Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 MirrorBorder}\n addUserKnob {4 type l \"Tile Region\" M {\"to Format\" \"to input BBox\" \"\" \"\"}}\n addUserKnob {14 size l \"Tile Amount\" R 0 500}\n size 500\n addUserKnob {26 chokeEdgesText l \"<b><font color=skyblue>Choke Edges\"}\n addUserKnob {7 leftChoke l \"Left Choke\" R -100 100}\n addUserKnob {7 rightChoke l \"Right Choke\" R -100 100}\n addUserKnob {7 topChoke l \"Top Choke\" R -100 100}\n addUserKnob {7 bottomChoke l \"Bottom Choke\" R -100 100}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelMask l \"\" -STARTLINE T Multiply1.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Multiply1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Multiply1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Multiply1.fringe}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {20 Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T MirrorBorder}\n addUserKnob {26 ver l Version: T v03}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x3f414400\n  label \"width mirror\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 704\n  ypos -277\n  bdwidth 265\n  bdheight 260\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x43504700\n  label \"height mirror\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 1072\n  ypos -271\n  bdwidth 259\n  bdheight 267\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x5f6870ff\n  label Corners\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos 1416\n  ypos -270\n  bdwidth 545\n  bdheight 264\n }\n Input {\n  inputs 0\n  name Input\n  xpos 2050\n  ypos -606\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 2084\n  ypos -546\n }\nset N81deb2f0 [stack 0]\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 1907\n  ypos -549\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" +HIDDEN R 1 4}\n  overscanPercent 1\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N83862910 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N83c07610 [stack 0]\npush $N83862910\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N83c005a0 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N819e4950 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $N819e4950\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N83c07610\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N83c005a0\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N83a16300 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N83a16300\n  NoOp {\n   name OutputBBox1\n   selected true\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\n NoOp {\n  name Settings\n  xpos 1907\n  ypos -493\n  addUserKnob {20 User}\n  addUserKnob {15 mirrorRegion l \"Mirror Region\"}\n  mirrorRegion {{\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) + int(parent.leftChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) + int(parent.bottomChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) - int(parent.rightChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) - int(parent.topChoke)\"}}\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 1818\n  ypos 134\n  number 1\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 1852\n  ypos 236\n }\nset N81fb32b0 [stack 0]\n Invert {\n  name Invert1\n  xpos 1818\n  ypos 275\n }\npush $N81fb32b0\npush $N81deb2f0\n Dot {\n  name Dot4\n  xpos 2084\n  ypos -344\n }\nset N80e84b90 [stack 0]\n Dot {\n  name Dot8\n  xpos 1491\n  ypos -344\n }\nset N80e80a90 [stack 0]\n Dot {\n  name Dot9\n  xpos 1491\n  ypos -170\n }\nset N80e30c70 [stack 0]\n Dot {\n  name Dot11\n  xpos 1607\n  ypos -170\n }\nset N80e45df0 [stack 0]\n Dot {\n  name Dot13\n  xpos 1735\n  ypos -170\n }\nset N80e7c770 [stack 0]\n Dot {\n  name Dot14\n  xpos 1876\n  ypos -170\n }\n Crop {\n  box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y+parent.size.h}}\n  name Crop_BR\n  xpos 1842\n  ypos -124\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale -1\n  center {{parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y}}\n  name Transform_BR\n  label BottomRight\n  xpos 1842\n  ypos -71\n }\npush $N80e7c770\n Crop {\n  box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.y+parent.size.h}}\n  name Crop_BL\n  xpos 1701\n  ypos -125\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale -1\n  center {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y}}\n  name Transform_BL\n  label \"Bottom Left\"\n  xpos 1701\n  ypos -70\n }\npush $N80e45df0\n Crop {\n  box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n  name Crop_TR\n  xpos 1573\n  ypos -122\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale -1\n  center {{parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n  name Transform_TR\n  label \"Top Right\"\n  xpos 1573\n  ypos -70\n }\npush $N80e30c70\n Crop {\n  box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.t}}\n  name Crop_TL\n  xpos 1457\n  ypos -124\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale -1\n  center {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t}}\n  name Transform_TL\n  label \"Top Left\"\n  xpos 1457\n  ypos -72\n }\npush $N80e80a90\n Dot {\n  name Dot7\n  xpos 1146\n  ypos -344\n }\nset N80ff2030 [stack 0]\n Dot {\n  name Dot5\n  xpos 1146\n  ypos -171\n }\nset N80feba50 [stack 0]\n Dot {\n  name Dot6\n  xpos 1245\n  ypos -171\n }\n Crop {\n  box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n  name Crop_T\n  xpos 1211\n  ypos -124\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale {1 -1}\n  center {0 {parent.Settings.mirrorRegion.t}}\n  name Transform_T\n  label Top\n  xpos 1211\n  ypos -73\n }\npush $N80feba50\n Crop {\n  box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y+parent.size.h}}\n  name Crop_B\n  xpos 1112\n  ypos -126\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale {1 -1}\n  center {0 {parent.Settings.mirrorRegion.y}}\n  name Transform_B\n  label Bottom\n  xpos 1112\n  ypos -71\n }\npush 0\npush $N80ff2030\n Dot {\n  name Dot2\n  xpos 883\n  ypos -344\n }\nset N80f923a0 [stack 0]\n Dot {\n  name Dot3\n  xpos 883\n  ypos -177\n }\nset N80f8daf0 [stack 0]\n Crop {\n  box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n  name Crop_R\n  xpos 849\n  ypos -128\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale {-1 1}\n  center {{parent.Settings.mirrorRegion.r} 0}\n  filter Impulse\n  name Transform_R\n  label Right\n  xpos 849\n  ypos -84\n }\npush $N80f8daf0\n Dot {\n  name Dot10\n  xpos 778\n  ypos -177\n }\n Crop {\n  box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.t}}\n  name Crop_L\n  xpos 744\n  ypos -126\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Transform {\n  scale {-1 1}\n  center {{parent.Settings.mirrorRegion.x} 0}\n  filter Impulse\n  name Transform_L\n  label Left\n  xpos 744\n  ypos -82\n }\n Merge2 {\n  inputs 8+1\n  operation disjoint-over\n  also_merge all\n  name Merge5\n  xpos 1346\n  ypos 122\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 1380\n  ypos 236\n }\nset N80f44280 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  bbox intersection\n  name MergeIntersection1\n  xpos 1701\n  ypos 233\n  disable {{\"!\\[exists parent.input1]\"}}\n }\npush $N80f44280\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 1380\n  ypos 359\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 1701\n  ypos 356\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 1818\n  ypos 347\n  disable {{\"!\\[exists parent.input1]\"}}\n }\npush $N80e84b90\n Crop {\n  box {{parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion}}\n  name Crop1\n  xpos 2050\n  ypos -200\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Merge2 {\n  inputs 2\n  operation disjoint-over\n  also_merge all\n  maskChannelMask {{{exists parent.input[value input1.number] == 0 ? 0 : 5}}}\n  name Merge3\n  xpos 2050\n  ypos 356\n }\n Dot {\n  name Dot20\n  label A\n  note_font_size 41\n  xpos 2084\n  ypos 469\n }\npush $N80f923a0\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 600\n  ypos -344\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos 600\n  ypos 471\n }\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 600\n  ypos 558\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 1940\n  ypos 558\n }\nset N81848aa0 [stack 0]\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{parent.mix}}\n  name MergeKeymix\n  xpos 2050\n  ypos 551\n }\npush $N81848aa0\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 1940\n  ypos 640\n }\n Switch {\n  inputs 2\n  which {{\"parent.mix > 0 ? 1 : 0\"}}\n  name Switch1\n  xpos 2050\n  ypos 637\n }\n Output {\n  name Output1\n  xpos 2050\n  ypos 841\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MirrorDimension.gizmo",
    "content": "Group {\n name MirrorDimension\n tile_color 0x9c0000ff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 MirrorDimension}\n addUserKnob {26 Instructions l Instructions: T \"1.) Plug in the MirrorCard input to the Card or Axis node you would like to be the mirror.  \\n\\n-   The scale of Card Does not matter as long as the orientation  (translation/rotation) are correct.\\n\\n-   The Card's +Z access is the front of mirror, point that towards subject / camera.  This is the blue Z arrow in 3D viewer.\\n\\n2.) Duplicate your Camera, and plug in the \\\"axis\\\" input of this new Camera to the output of this node.\\n\\n3.) Your new Camera will be Mirrored according to the plane / card / axis.\\n\\n4.) Render using this New Camera Setup to get the mirrored CG output.\"}\n addUserKnob {26 version_author l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b> MirrorDimension v1.0</b> - Tony Lyons, 2024</span>\"}\n}\n Input {\n  inputs 0\n  name InputMirrorCard\n  xpos 1093\n  ypos 175\n }\n Axis2 {\n  inputs 0\n  useMatrix true\n  matrix {\n      {{parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix}}\n      {{parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix}}\n      {{parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix}}\n      {{parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix} {parent.Axis_parent.world_matrix}}\n    }\n  name Axis9\n  xpos 752\n  ypos 315\n }\n Axis2 {\n  scaling {1 1 -1}\n  name Axis12\n  xpos 752\n  ypos 444\n }\n Axis2 {\n  useMatrix true\n  matrix {\n      {{parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix}}\n      {{parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix}}\n      {{parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix}}\n      {{parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix} {parent.InverseMatrix44_1.result.matrix}}\n    }\n  name Axis14\n  xpos 752\n  ypos 577\n }\n Output {\n  name Output1\n  xpos 742\n  ypos 775\n }\n Group {\n  inputs 0\n  name InverseMatrix44_1\n  tile_color 0x337f4cff\n  xpos 975\n  ypos 462\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path Axis_parent.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T assignID.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 grp_math l math n 1}\n  grp_math 0\n  addUserKnob {7 m l determinant}\n  m {{\"\\[value \\[value knob_path].\\[value id.0]] * \\n(\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.1]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n+\\n\\n\\[value \\[value knob_path].\\[value id.2]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.3]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\"}}\n  addUserKnob {41 a l cofactor T co.matrix}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 iMatrix T result.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.1}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-24}\n  addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"live&nbsp;inverse&nbsp;matrix<br>iMatrix33<br>iMatrix44\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2 3}\n       {4 5 6 7}\n       {8 9 10 11}\n       {12 13 14 15}\n     }\n   name assignID\n   xpos -150\n   ypos -255\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"pow(-1,0+0) * (\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+1) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+2) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+3) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,1+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,2+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,3+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"} {\"pow(-1,3+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"}}\n     }\n   name co\n   xpos -44\n   ypos -255\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"a.0==0 || m==0 ? 0 : a.0/m\"} {\"a.4==0 || m==0 ? 0 : a.4/m\"} {\"a.8==0 || m==0 ? 0 : a.8/m\"} {\"a.12==0 || m==0 ? 0 : a.12/m\"}}\n       {{\"a.1==0 || m==0 ? 0 : a.1/m\"} {\"a.5==0 || m==0 ? 0 : a.5/m\"} {\"a.9==0 || m==0 ? 0 : a.9/m\"} {\"a.13==0 || m==0 ? 0 : a.13/m\"}}\n       {{\"a.2==0 || m==0 ? 0 : a.2/m\"} {\"a.6==0 || m==0 ? 0 : a.6/m\"} {\"a.10==0 || m==0 ? 0 : a.10/m\"} {\"a.14==0 || m==0 ? 0 : a.14/m\"}}\n       {{\"a.3==0 || m==0 ? 0 : a.3/m\"} {\"a.7==0 || m==0 ? 0 : a.7/m\"} {\"a.11==0 || m==0 ? 0 : a.11/m\"} {\"a.15==0 || m==0 ? 0 : a.15/m\"}}\n     }\n   name result\n   xpos 56\n   ypos -254\n  }\n end_group\n Axis2 {\n  inputs 0\n  translate {{parent.input0.translate.x} {parent.input0.translate.y} {parent.input0.translate.z}}\n  rotate {{parent.input0.rotate.x} {parent.input0.rotate.y} {parent.input0.rotate.z}}\n  scaling {{parent.input0.scaling.x} {parent.input0.scaling.y} {parent.input0.scaling.z}}\n  uniform_scale {{parent.input0.uniform_scale}}\n  skew {{parent.input0.skew.x} {parent.input0.skew.y} {parent.input0.skew.z}}\n  pivot {{parent.input0.pivot.x} {parent.input0.pivot.y} {parent.input0.pivot.z}}\n  name Axis_parent\n  xpos 1103\n  ypos 258\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MonochromePlus.gizmo",
    "content": "Group {\n name MonochromePlus\n tile_color 0x7aa9ffff\n note_font \"Bitstream Vera Sans\"\n selected true\n addUserKnob {20 MonochromePlus}\n addUserKnob {41 weight T Expression1.weight}\n addUserKnob {41 source T Expression1.source}\n addUserKnob {41 target T Expression1.target}\n addUserKnob {41 multiply T Expression1.multiply}\n addUserKnob {41 sourceFromTarget l \"use weighted target as source\" T Expression1.sourceFromTarget}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 _1 l \"\" +STARTLINE T \"Chris Fryer | 2019\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 512\n  ypos 669\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 359\n  ypos 462\n }\n Dot {\n  name Dot1\n  xpos 393\n  ypos 504\n }\nset Nfed0d800 [stack 0]\n Expression {\n  expr0 \"(weight.r*r + weight.g*g + weight.b*b) * multiply\"\n  name Expression1\n  note_font \"Bitstream Vera Sans\"\n  xpos 359\n  ypos 549\n  addUserKnob {20 User}\n  addUserKnob {6 sourceFromTarget l \"use weighted target as source\" +STARTLINE}\n  sourceFromTarget true\n  addUserKnob {6 source_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 weight}\n  weight {0.2126 0.7152 0.0722}\n  addUserKnob {6 weight_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  weight_panelDropped true\n  addUserKnob {6 weight_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 source}\n  source {1 1 1}\n  addUserKnob {6 source_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 target}\n  target {1 1 1}\n  addUserKnob {6 target_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 multiply R 0 2}\n  multiply 1\n  addUserKnob {6 multiply_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Shuffle {\n  green red\n  blue red\n  name Shuffle1\n  tile_color 0xffffff00\n  label \"\\[value in]-->\\[value out]\"\n  note_font \"Bitstream Vera Sans\"\n  xpos 359\n  ypos 573\n }\n Grade {\n  whitepoint {{\"Expression1.sourceFromTarget == 0 ? parent.Expression1.source : parent.Expression1.target.r*Expression1.weight.r+parent.Expression1.target.g*Expression1.weight.g+parent.Expression1.target.b*Expression1.weight.b\"} {\"Expression1.sourceFromTarget == 0 ? parent.Expression1.source : parent.Expression1.target.r*Expression1.weight.r+parent.Expression1.target.g*Expression1.weight.g+parent.Expression1.target.b*Expression1.weight.b\"} {\"Expression1.sourceFromTarget == 0 ? parent.Expression1.source : parent.Expression1.target.r*Expression1.weight.r+parent.Expression1.target.g*Expression1.weight.g+parent.Expression1.target.b*Expression1.weight.b\"} {\"Expression1.sourceFromTarget == 0 ? parent.Expression1.source : parent.Expression1.target.r*Expression1.weight.r+parent.Expression1.target.g*Expression1.weight.g+parent.Expression1.target.b*Expression1.weight.b\"}}\n  white {{parent.Expression1.target} {parent.Expression1.target} {parent.Expression1.target} {parent.Expression1.target}}\n  multiply {{parent.Expression1.multiply} {parent.Expression1.multiply} {parent.Expression1.multiply} {parent.Expression1.multiply}}\n  black_clamp false\n  name Grade1\n  note_font \"Bitstream Vera Sans\"\n  xpos 359\n  ypos 609\n }\npush $Nfed0d800\n Dot {\n  name Dot2\n  xpos 267\n  ypos 504\n }\n Dot {\n  name Dot3\n  xpos 267\n  ypos 672\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  xpos 359\n  ypos 669\n }\n Output {\n  name Output1\n  xpos 359\n  ypos 753\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MorphDissolve.gizmo",
    "content": "Group {\n name MorphDissolve\n help \"Allows to morph between two moving plates automatically, or can be used to improve manual Morphs.\"\n tile_color 0x890074ff\n label \"(Plate \\[value morph])\"\n selected true\n addUserKnob {20 MorphDissolve}\n addUserKnob {7 morph l Morph t \"Morphs between input 0 and input 1\"}\n addUserKnob {26 \"\"}\n addUserKnob {4 method l \"Morph Method\" t \"Pick which method to use. They may both display artifacts in different areas, try both to see which one produces the best results for your specific morph.\" M {iDistort Kronos \"\"}}\n addUserKnob {4 direction l Direction -STARTLINE M {In-Between \"0 --> 1\" \"1 --> 0\" \"\"}}\n addUserKnob {4 result l Result -STARTLINE M {Morph STmap \"\" \"\" \"\" \"\"}}\n addUserKnob {7 vectorDetail l \"Vector Detail\" t \"Use this to adjust the density of the calculated motion vector field. Higher details capture finer movements, but take will longer to calculate.\" R 0.01 1}\n vectorDetail 0.75\n addUserKnob {7 strength l Strength t \"Match Strength : Stonger values will match larger differences between the two plates.\" R 0 1.5}\n strength 1.5\n addUserKnob {41 scale l \"STmap Overscan\" T UV_Map.scale}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 - by Erwan Leroy - 2017\"}\n}\n BackdropNode {\n  inputs 0\n  name Backdrop1\n  tile_color 0x5b4e5658\n  label Zipping\n  note_font_size 40\n  xpos 600\n  ypos -55\n  bdwidth 180\n  bdheight 241\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 1355\n  ypos -123\n  number 1\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 1389\n  ypos -72\n }\nset Nffa41ee0 [stack 0]\n Dot {\n  name Dot8\n  tile_color 0xcccccc00\n  xpos 1389\n  ypos 1115\n }\npush $Nffa41ee0\n Dot {\n  name Dot13\n  tile_color 0xcccccc00\n  xpos 1247\n  ypos -72\n }\n NoTimeBlur {\n  rounding floor\n  single false\n  name NoTimeBlur2\n  xpos 1213\n  ypos -15\n }\n Retime {\n  input.first 1001\n  input.first_lock true\n  output.first 1001\n  output.last 1002\n  speed 0.5\n  before continue\n  after continue\n  filter none\n  time \"\"\n  name Retime2\n  label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n  xpos 1213\n  ypos 23\n }\n Input {\n  inputs 0\n  name Input0\n  xpos -24\n  ypos -121\n }\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 10\n  ypos -75\n }\nset N3db7b800 [stack 0]\n Dot {\n  name Dot14\n  tile_color 0xcccccc00\n  xpos 155\n  ypos -75\n }\n NoTimeBlur {\n  rounding floor\n  single false\n  name NoTimeBlur1\n  xpos 121\n  ypos -13\n }\n Retime {\n  input.first 1001\n  input.first_lock true\n  input.last 1218\n  output.first 1001\n  output.last 1436\n  speed 0.5\n  before continue\n  after continue\n  filter none\n  time \"\"\n  name Retime1\n  label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n  xpos 121\n  ypos 23\n }\n Switch {\n  inputs 2\n  which {{(frame-1001)%2}}\n  name Switch1\n  xpos 650\n  ypos 35\n }\n Dot {\n  name Dot9\n  tile_color 0xcccccc00\n  xpos 684\n  ypos 124\n }\nset Nf88d8d0 [stack 0]\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 985\n  ypos 124\n }\n Kronos {\n  retimedChannels all\n  timing2 Frame\n  timingFrame2 {{(frame-1001)*2+1001+parent.morph}}\n  motionEstimation Regularized\n  vectorDetailReg {{parent.vectorDetail}}\n  strengthReg {{parent.strength}}\n  name Kronos1\n  xpos 951\n  ypos 273\n }\n Dot {\n  name Dot12\n  tile_color 0xcccccc00\n  xpos 985\n  ypos 903\n }\npush $Nf88d8d0\n Dot {\n  name Dot10\n  tile_color 0xcccccc00\n  xpos 415\n  ypos 124\n }\n VectorGenerator {\n  motionEstimation Regularized\n  vectorDetailReg {{parent.vectorDetail}}\n  strengthReg {{parent.strength}}\n  name VectorGenerator1\n  xpos 381\n  ypos 277\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 415\n  ypos 350\n }\nset Na0df1320 [stack 0]\n Shuffle {\n  in backward\n  blue black\n  alpha black\n  name Shuffle2\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 217\n  ypos 340\n }\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset2\n  label \"\\[value time_offset]\"\n  xpos 217\n  ypos 484\n }\npush $Na0df1320\n Shuffle {\n  in forward\n  blue black\n  alpha black\n  name Shuffle1\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 560\n  ypos 340\n }\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset1\n  label \"\\[value time_offset]\"\n  xpos 560\n  ypos 414\n }\npush $Na0df1320\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  bbox B\n  name Copy1\n  xpos 381\n  ypos 408\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 backward.u\n  from1 backward.v\n  to1 backward.v\n  bbox B\n  name Copy2\n  xpos 381\n  ypos 484\n }\n Group {\n  name UV_Map\n  help \"Create an uvmap from the input format or the selected format that can be used for example for baking transformations and applying them through a STmap node.\\nUse the overscan to create values outside of the viewing window and the 0-1 range.\"\n  tile_color 0x578100ff\n  note_font \"Bitstream Vera Sans\"\n  note_font_color 0xffffffff\n  selected true\n  xpos 381\n  ypos 549\n  disable {{!result}}\n  mapsize {0.15 0.15}\n  addUserKnob {20 tab l \"UV Map\"}\n  addUserKnob {41 format T Constant1.format}\n  addUserKnob {41 scale l overscan T Reformat1.scale}\n  addUserKnob {6 alpha l \"alpha 1\" +STARTLINE}\n  addUserKnob {41 black_outside l \"black outside\" -STARTLINE T Reformat2.black_outside}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 620\n   ypos -370\n  }\n  Shuffle {\n   red black\n   green black\n   blue black\n   alpha black\n   name Shuffle1\n   xpos 620\n   ypos -309\n  }\n  Constant {\n   inputs 0\n   name Constant1\n   xpos 479\n   ypos -214\n  }\n  Switch {\n   inputs 2\n   which {{\"\\[exists parent.input0]\"}}\n   name Switch1\n   xpos 620\n   ypos -190\n  }\n  Reformat {\n   type scale\n   resize none\n   pbb true\n   name Reformat1\n   selected true\n   xpos 620\n   ypos -71\n  }\n  Reformat {\n   type scale\n   scale {{1/Reformat1.scale} {1/Reformat1.scale}}\n   resize none\n   black_outside true\n   pbb true\n   name Reformat2\n   xpos 620\n   ypos -37\n  }\n  Shuffle {\n   alpha white\n   name Shuffle13\n   tile_color 0xffffff00\n   label \"\\[value in]\"\n   xpos 620\n   ypos 12\n   disable {{!parent.alpha}}\n  }\n  Expression {\n   expr0 (x+0.5)/width\n   expr1 (y+0.5)/height\n   name Expression2\n   xpos 620\n   ypos 75\n  }\n  Output {\n   name Output1\n   xpos 620\n   ypos 127\n  }\n end_group\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 415\n  ypos 601\n }\nset N704f3310 [stack 0]\n Retime {\n  input.first 1000\n  input.first_lock true\n  input.last 1002\n  output.first 1000\n  output.last 1001\n  speed 2\n  before continue\n  after continue\n  filter none\n  time \"\"\n  name Retime4\n  label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n  xpos 459\n  ypos 672\n }\n IDistort {\n  uv forward\n  uv_scale {{1-parent.morph}}\n  name IDistort2\n  xpos 459\n  ypos 741\n }\nset N4c486100 [stack 0]\npush $N704f3310\n Retime {\n  input.first 1001\n  input.first_lock true\n  input.last 1436\n  output.first 1001\n  output.last 1218\n  speed 2\n  before continue\n  after continue\n  filter none\n  time \"\"\n  name Retime3\n  label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n  xpos 308\n  ypos 673\n }\n IDistort {\n  uv backward\n  uv_scale {{parent.morph}}\n  name IDistort1\n  xpos 308\n  ypos 738\n }\nset N40def0f0 [stack 0]\npush $N4c486100\npush $N40def0f0\n Dissolve {\n  inputs 2\n  which {{parent.morph}}\n  name Dissolve1\n  xpos 379\n  ypos 823\n }\n Dot {\n  name Dot11\n  tile_color 0xcccccc00\n  xpos 413\n  ypos 903\n }\n Switch {\n  inputs 3\n  which {{direction}}\n  name Switch4\n  label \"\\[value which]\"\n  xpos 491\n  ypos 893\n }\n Switch {\n  inputs 2\n  which {{parent.method}}\n  name Switch3\n  xpos 627\n  ypos 899\n }\nset N40770720 [stack 0]\npush $N3db7b800\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  xpos 10\n  ypos 1115\n }\n Switch {\n  inputs 3\n  which {{\"parent.morph<=0?0:parent.morph>=1  ?2:1\"}}\n  name Switch2\n  xpos 547\n  ypos 1111\n }\nset N4077d620 [stack 0]\npush $N40770720\npush $N40770720\npush $N4077d620\n Switch {\n  inputs 3\n  which {{\"result + direction\"}}\n  name Switch5\n  label \"\\[value which]\"\n  xpos 627\n  ypos 1181\n }\n Switch {\n  inputs 2\n  which {{method}}\n  name Switch6\n  label \"\\[value which]\"\n  xpos 627\n  ypos 1257\n }\n Output {\n  name Output1\n  xpos 627\n  ypos 1333\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MotionBlurPaint.gizmo",
    "content": "Group {\n name MotionBlurPaint\n onCreate \"n = nuke.thisNode()\\nn\\['format'].setFlag(nuke.DISABLED)\"\n tile_color 0xcc804e00\n note_font \"Verdana Bold\"\n selected true\n addUserKnob {20 Parameters}\n addUserKnob {26 instructions l \"\" +STARTLINE T \"<i>Click the button 'Select brush' below to select the right brush.<br/> Paint on the image to apply the motion blur<br/>\\nClose the 'Paint' Tab to disable the node with D key\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 output_1_1 l \"<b><font color=\\\"dodgerblue\\\">OUTPUT\"}\n addUserKnob {41 channels T VectorBlur9.channels}\n addUserKnob {41 format T Constant1.format}\n addUserKnob {6 img_format l \"format from img\" -STARTLINE}\n img_format true\n addUserKnob {7 overscan R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {4 output t \"Select which output you want to have: the final result with the distortion or the Vector Map\" M {\"Final Result\" Vector \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 motion_blur l \"<b><font color=\\\"sandybrown\\\">MOTION BLUR\" T \"\"}\n addUserKnob {41 scale l \"motion amount\" T VectorBlur9.scale}\n addUserKnob {41 offset l \"shutter offset\" T VectorBlur9.offset}\n addUserKnob {41 grow_bbox l \"expand bbox\" T VectorBlur9.grow_bbox}\n addUserKnob {41 constant l \"uv offset\" T VectorBlur9.constant}\n addUserKnob {41 method T VectorBlur9.method}\n addUserKnob {26 line l \"\" +STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {22 move l \"<font color=\\\"tomato\\\">Select brush\" t \"Select automatically the right brush\" T \"n = nuke.thisNode()\\nn\\['toolbox'].setValue(0)\\nn\\['toolbox'].setValue(25)\" +STARTLINE}\n addUserKnob {6 check l \"check painting\" t \"Use the checkerboard to check your paint\" -STARTLINE}\n addUserKnob {41 size l smooth t \"Smooth the paint\" T Blur1.size}\n addUserKnob {26 paint l \"<b><font color=\\\"lightgreen\\\">PAINT\"}\n addUserKnob {20 paints l \"\" +STARTLINE n 1}\n addUserKnob {41 opacity l INVISIBLE +INVISIBLE T RotoPaint.opacity}\n addUserKnob {41 toolbar_opacity l opacity T RotoPaint.toolbar_opacity}\n addUserKnob {41 brush_hardness l \"brush hardness\" T RotoPaint.brush_hardness}\n addUserKnob {41 brush_spacing l \"brush spacing\" T RotoPaint.brush_spacing}\n addUserKnob {26 \"\"}\n addUserKnob {41 opacity_1 l opacity T RotoPaint.opacity}\n addUserKnob {41 lifetime_type l \"lifetime type\" T RotoPaint.lifetime_type}\n addUserKnob {41 lifetime_start l from -STARTLINE T RotoPaint.lifetime_start}\n addUserKnob {41 lifetime_end l to -STARTLINE T RotoPaint.lifetime_end}\n addUserKnob {41 toolbox l \"\" +STARTLINE T RotoPaint.toolbox}\n addUserKnob {41 curves l \"\" -STARTLINE T RotoPaint.curves}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T VectorBlur9.maskChannelMask}\n addUserKnob {41 invert_mask l invert -STARTLINE T VectorBlur9.invert_mask}\n addUserKnob {26 \"\"}\n addUserKnob {41 mix T VectorBlur9.mix}\n addUserKnob {20 \"\" l Transform}\n addUserKnob {41 transform T RotoPaint.transform}\n addUserKnob {41 translate T RotoPaint.translate}\n addUserKnob {41 rotate T RotoPaint.rotate}\n addUserKnob {41 scale_1 l scale T RotoPaint.scale}\n addUserKnob {41 skewX l \"skew X\" T RotoPaint.skewX}\n addUserKnob {41 skewY l \"skew Y\" T RotoPaint.skewY}\n addUserKnob {41 skew_order l \"skew order\" T RotoPaint.skew_order}\n addUserKnob {41 center T RotoPaint.center}\n addUserKnob {20 \"extra matrix\" n 2}\n \"extra matrix\" 1\n addUserKnob {41 transform_matrix l \"\" -STARTLINE T RotoPaint.transform_matrix}\n addUserKnob {20 \"\" n -1}\n addUserKnob {20 email l @}\n addUserKnob {26 message l \"\" +STARTLINE T \"<b><font color=\\\"SandyBrown\\\">MotionBlur Paint v1.0</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n}\n Constant {\n  inputs 0\n  channels rgb\n  format \"2048 2048 0 0 2048 2048 1 square_2K\"\n  name Constant1\n  xpos -178\n  ypos -455\n }\n Input {\n  inputs 0\n  name img\n  xpos 178\n  ypos -568\n }\n Dot {\n  name Dot10\n  xpos 212\n  ypos -522\n }\nset Nd8d4d400 [stack 0]\n Remove {\n  name Remove1\n  xpos -7\n  ypos -529\n }\n Switch {\n  inputs 2\n  which {{!parent.img_format}}\n  name Switch_Format\n  label \"\\[value which]\"\n  xpos -7\n  ypos -437\n }\n AdjBBox {\n  numpixels {{parent.overscan}}\n  name AdjBBox1\n  xpos -7\n  ypos -362\n }\n Expression {\n  expr0 x\n  expr1 y\n  expr2 0\n  expr3 1\n  name Expression6\n  xpos -7\n  ypos -314\n }\n Dot {\n  name Dot8\n  xpos 22\n  ypos -268\n }\nset Nd8d4c400 [stack 0]\n Dot {\n  name Dot3\n  xpos 23\n  ypos -107\n }\nset Nd8857c00 [stack 0]\npush $Nd8d4c400\n Dot {\n  name Dot9\n  xpos -125\n  ypos -268\n }\nset Nd8857800 [stack 0]\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n\n  {f 0}\n\n  {n\n\n   {layer Root\n\n    {f 2097664}\n\n    {t x4493a000 x440b8000}\n\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}}}}}\n  toolbox {selectAll {\n  { selectAll bs 1000 h 1 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 180 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1034 ltm 1034 tt 17 }\n  { eraser bs 86.2 src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1033 ltm 1033 tt 18 }\n  { clone opc 0.1 bs 44.8 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 21 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 22 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 tt 23 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 24 }\n  { smear bs 1000 h 1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 2 ltm 2 tt 25 }\n} }\n  toolbar_brush_size 1000\n  toolbar_brush_hardness 1\n  toolbar_lifetime_type single\n  toolbar_lifetime_start 1001\n  toolbar_lifetime_end 1001\n  toolbar_effect_parameter1 1\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {1024 778}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  lifetime_start 2\n  lifetime_end 2\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  brush_type smear\n  brush_size 1000\n  brush_spacing 0.05000000075\n  brush_hardness 1\n  effect_parameter1 1\n  source_black_outside true\n  name RotoPaint\n  xpos -154\n  ypos -226\n }\nset Nd8857400 [stack 0]\npush $Nd8857800\n Dot {\n  name Dot2\n  xpos -364\n  ypos -265\n }\n Difference {\n  inputs 2\n  gain 1000000\n  name Difference1\n  xpos -398\n  ypos -230\n }\n Dilate {\n  channels alpha\n  size {{parent.Blur1.size}}\n  name Dilate1\n  label \"\\[value size]\"\n  xpos -398\n  ypos -149\n }\npush $Nd8857400\n Blur {\n  inputs 1+1\n  channels rgb\n  name Blur1\n  label \"\\[value size]\"\n  xpos -154\n  ypos -144\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -153\n  ypos -21\n }\npush $Nd8857c00\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  xpos -10\n  ypos -21\n }\nset Nd8855c00 [stack 0]\n Dot {\n  name Dot1\n  xpos 23\n  ypos 197\n }\n Input {\n  inputs 0\n  name mask\n  xpos 388\n  ypos -31\n  number 1\n }\n Dot {\n  name Dot7\n  xpos 417\n  ypos 52\n }\npush $Nd8855c00\n CheckerBoard2 {\n  inputs 0\n  format {{{parent.input.format}}}\n  name CheckerBoard1\n  selected true\n  xpos 306\n  ypos -379\n }\npush $Nd8d4d400\n Switch {\n  inputs 2\n  which {{parent.check}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 179\n  ypos -361\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.green\n  to1 forward.v\n  name Copy28\n  xpos 179\n  ypos -30\n }\n VectorBlur {\n  inputs 1+1\n  channels rgba\n  uv forward\n  name VectorBlur9\n  xpos 179\n  ypos 53\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 179\n  ypos 107\n }\n Switch {\n  inputs 2\n  which {{parent.output}}\n  name Switch_output\n  label \"\\[value which]\"\n  xpos 179\n  ypos 193\n }\n Output {\n  name Output1\n  xpos 179\n  ypos 279\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MultiplyVector3Matrix3.gizmo",
    "content": "Group {\n name MultiplyVector3Matrix3_\n help \"Multiply (transform) a Vector3 by a Matrix3. This is the equivalent of applying Rotation/Scale/Skew from a Matrix to the vector.\\nA Matrix4 can be used, but the last row/column will be ignored.\"\n addUserKnob {20 main_tab l \"Mutiply Vector3 Matrix3\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name InputMatrix3\n  xpos 402\n  ypos 7\n  number 1\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 436\n  ypos 62\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Shuffle {\n  in matrix0\n  name Shuffle1\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 402\n  ypos 109\n }\nset Ne478bfd0 [stack 0]\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Shuffle {\n  in matrix1\n  name Shuffle2\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 402\n  ypos 147\n }\nset Nd8882950 [stack 0]\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Shuffle {\n  in matrix2\n  name Shuffle3\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 402\n  ypos 185\n }\nset N2858d430 [stack 0]\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Shuffle {\n  in matrix3\n  name Shuffle4\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 402\n  ypos 223\n }\npush $N2858d430\n Dot {\n  name Dot7\n  tile_color 0x9e3c6300\n  xpos 343\n  ypos 195\n }\npush $Nd8882950\n Dot {\n  name Dot6\n  tile_color 0x9e3c6300\n  xpos 343\n  ypos 157\n }\npush $Ne478bfd0\n Dot {\n  name Dot5\n  tile_color 0x9e3c6300\n  xpos 343\n  ypos 119\n }\n Input {\n  inputs 0\n  name InputVector3\n  xpos 219\n  ypos 8\n }\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 253\n  ypos 115\n }\n BlinkScript {\n  inputs 4\n  recompileCount 12\n  ProgramGroup 1\n  KernelDescription \"2 \\\"TransformVector3byMatrix3\\\" iterate pixelWise 156e29276da8287b847626148a2a784d9969b7d1a3ad81e28187d00a7aaafaca 5 \\\"src\\\" Read Point \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n  kernelSource \"kernel TransformVector3byMatrix3 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(src) input = src();\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float3x3  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n\\n    // Multiply the Matrix and the Vector\\n    float3 vector(input.x, input.y, input.z);\\n    vector = matrix*vector;\\n\\n    // Write the result to the output image\\n    dst() = float4(vector.x, vector.y, vector.z, input.w);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 219\n  ypos 223\n }\n Output {\n  name Output1\n  xpos 219\n  ypos 323\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NAN_INF_Killer.gizmo",
    "content": "Group {\n name NAN_INF_Killer\n tile_color 0xff6200ff\n label \"\\[value which]\"\n note_font \"Bitstream Vera Sans Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 NAN_INF_Killer}\n addUserKnob {26 text l \" \" T \"<big><b><font color=darkorange>Detects and Kills <font color=white>NAN <font color=darkorange>and <font color=white>INF <font color=darkorange>pixels\"}\n addUserKnob {41 channels T Shuffle1.in}\n addUserKnob {4 which l Method M {\"Replace with 0\" \"Replace with Color\" \"Clone Over\" \"Blur Unpremult\" TimeOffset \"\" \"\" \"\" \"\"}}\n addUserKnob {6 keepAlpha l \"Keep Alpha\" +STARTLINE}\n keepAlpha true\n addUserKnob {26 \"\"}\n addUserKnob {19 replaceColor l \"Replace Color\"}\n replaceColor {0 0 0 0}\n addUserKnob {6 replaceColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 replaceColor_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {41 translateText_1 l Translate T Transform1.translate}\n addUserKnob {20 extraTranslate l \"Extra tranlate Options\" n 1}\n extraTranslate 0\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform1.skewY}\n addUserKnob {41 skew_order l \"skew order\" T Transform1.skew_order}\n addUserKnob {41 center T Transform1.center}\n addUserKnob {41 invert_matrix l invert T Transform1.invert_matrix}\n addUserKnob {41 filter T Transform1.filter}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 blurUnpremult l Blur/Unpremult T \" \"}\n addUserKnob {41 size l \"Blur Size\" T Blur1.size}\n addUserKnob {26 \"\"}\n addUserKnob {3 timeOffset l TimeOffset}\n timeOffset -1\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"kills NANs with options of how to replace\" T NAN_Killer}\n addUserKnob {26 ver l Version: T v04}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x383b5000\n  label \"Replace with Color\"\n  note_font_size 36\n  note_font_color 0xffffffff\n  xpos 439\n  ypos 455\n  bdwidth 331\n  bdheight 349\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4f4b4200\n  label \"Replace\\nwith 0\"\n  note_font_size 40\n  note_font_color 0xffffffff\n  xpos 53\n  ypos 259\n  bdwidth 372\n  bdheight 214\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x634c7400\n  label \"Clone Over\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos 823\n  ypos 458\n  bdwidth 187\n  bdheight 176\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x3f2d4100\n  label Blur/Unpremult\n  note_font_size 50\n  note_font_color 0xffffffff\n  xpos 1097\n  ypos 434\n  bdwidth 368\n  bdheight 726\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x3c4d4400\n  label Timeoffset\n  note_font_size 50\n  note_font_color 0xffffffff\n  xpos 1760\n  ypos 727\n  bdwidth 270\n  bdheight 312\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 314\n  ypos 1901\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 168\n  ypos -227\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 202\n  ypos -90\n }\nset N335887c0 [stack 0]\n Reformat {\n  type scale\n  scale 2\n  resize none\n  pbb true\n  name Reformat142\n  xpos 166\n  ypos -23\n }\n Shuffle {\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 166\n  ypos 21\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 166\n  ypos 79\n }\nset N3359edc0 [stack 0]\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 200\n  ypos 191\n }\nset N335a6230 [stack 0]\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos 337\n  ypos 191\n }\n Expression {\n  expr3 isnan(a)||isinf(a)?0:a\n  name nan_killer_ReplaceWithZero1\n  selected true\n  xpos 303\n  ypos 354\n }\npush $N335a6230\n Expression {\n  expr0 (isnan(r)||isnan(g)||isnan(b)||isnan(a))||(isinf(r)||isinf(g)||isinf(b)||isinf(a))?0:r\n  expr1 (isnan(r)||isnan(g)||isnan(b)||isnan(a))||(isinf(r)||isinf(g)||isinf(b)||isinf(a))?0:g\n  expr2 (isnan(r)||isnan(g)||isnan(b)||isnan(a))||(isinf(r)||isinf(g)||isinf(b)||isinf(a))?0:b\n  expr3 (isnan(r)||isnan(g)||isnan(b)||isnan(a))||(isinf(r)||isinf(g)||isinf(b)||isinf(a))?0:a\n  name nan_killer_ReplaceWithZero\n  xpos 166\n  ypos 305\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos 166\n  ypos 350\n  disable {{!parent.keepAlpha}}\n }\n Dot {\n  name Dot1301\n  note_font_size 41\n  xpos 200\n  ypos 404\n }\nset N3353c2a0 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 200\n  ypos 774\n }\nset N335040e0 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 57\n  ypos 774\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 57\n  ypos 1642\n }\nset N335092f0 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 56\n  ypos 1712\n }\nset N335214d0 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 57\n  ypos 1765\n }\npush $N335214d0\npush $N3359edc0\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 1620\n  ypos 82\n }\n Expression {\n  expr3 (isnan(r)||isnan(g)||isnan(b)||isnan(a))||(isinf(r)||isinf(g)||isinf(b)||isinf(a))\n  name nan_killer_Alpha1\n  xpos 1586\n  ypos 456\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  tile_color 0xffffffff\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 1586\n  ypos 520\n }\n Dot {\n  name Dot1\n  label mask\n  note_font_size 41\n  xpos 1620\n  ypos 578\n }\nset N333f8a10 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 1620\n  ypos 659\n }\nset N33273270 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 1620\n  ypos 982\n }\nset N332ebb40 [stack 0]\n Dot {\n  name Dot2\n  label mask\n  note_font_size 41\n  xpos 1704\n  ypos 982\n }\npush $N3353c2a0\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 519\n  ypos 404\n }\nset N332ec880 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 629\n  ypos 404\n }\nset N332635c0 [stack 0]\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos 904\n  ypos 404\n }\nset N3328efd0 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 1188\n  ypos 404\n }\nset N334f7380 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 1834\n  ypos 404\n }\nset N334c9e90 [stack 0]\n TimeOffset {\n  time_offset {{parent.timeOffset}}\n  time \"\"\n  name TimeOffset1\n  label \"\\[value time_offset]\"\n  xpos 1800\n  ypos 827\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 1834\n  ypos 914\n }\npush $N334c9e90\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 1944\n  ypos 404\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge3\n  xpos 1910\n  ypos 979\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 1944\n  ypos 1132\n }\npush $N332ebb40\npush $N33273270\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 1308\n  ypos 659\n }\nset N334b51f0 [stack 0]\n Invert {\n  channels rgba\n  name Invert1\n  xpos 1274\n  ypos 758\n }\npush $N334f7380\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 1188\n  ypos 834\n }\nset N334c0d10 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos 1274\n  ypos 827\n }\n Blur {\n  channels rgba\n  size 3\n  name Blur1\n  label \"\\[value size]\"\n  xpos 1274\n  ypos 873\n }\n Unpremult {\n  name Unpremult1\n  xpos 1274\n  ypos 922\n }\npush $N334c0d10\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge4\n  xpos 1154\n  ypos 979\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 1188\n  ypos 1079\n }\npush $N333f8a10\npush $N3328efd0\n TransformMasked {\n  inputs 1+1\n  channels rgba\n  translate {4 4}\n  center {2362 1116}\n  shutteroffset centred\n  name Transform1\n  xpos 870\n  ypos 575\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 904\n  ypos 937\n }\npush $N334b51f0\n Dot {\n  name Dot3\n  label mask\n  note_font_size 41\n  xpos 705\n  ypos 659\n }\npush $N332ec880\n Grade {\n  multiply 0\n  add {{parent.replaceColor} {parent.replaceColor} {parent.replaceColor} {parent.replaceColor}}\n  name Grade1\n  xpos 485\n  ypos 569\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 519\n  ypos 660\n }\npush $N332635c0\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge2\n  xpos 595\n  ypos 656\n }\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 629\n  ypos 846\n }\npush $N335040e0\n Switch {\n  inputs 5\n  which {{parent.which}}\n  name Switch20\n  label \"\\[value which]\"\n  xpos 166\n  ypos 1439\n }\npush $N335092f0\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out2 {{{parent.Shuffle1.in}}}\n  name ShuffleCopy1\n  xpos 166\n  ypos 1639\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 166\n  ypos 1705\n  disable {{!parent.keepAlpha}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 166\n  ypos 1761\n }\n Reformat {\n  type scale\n  scale {{1/parent.Reformat142.scale}}\n  resize none\n  pbb true\n  name Reformat143\n  xpos 166\n  ypos 1826\n }\npush $N335887c0\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -33\n  ypos -90\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos -33\n  ypos 1905\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name Merge1\n  xpos 166\n  ypos 1901\n }\n Output {\n  name Output1\n  xpos 167\n  ypos 2027\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_N_Reflection.gizmo",
    "content": "Group {\n name N_Reflection\n tile_color 0x417c3eff\n note_font Verdana\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 nReflection}\n addUserKnob {41 in l \"Normal Vector\" T Shuffle1.in}\n addUserKnob {26 EnvMapSettings l \"<font color=skyblue>Env Map Settings\"}\n addUserKnob {7 scale l \"Scale Resolution\" R 0.1 1}\n scale 1\n addUserKnob {41 exposure l Exposure T Exposure1.red}\n addUserKnob {41 iRotation l Rotate T Transform1.iRotation}\n}\n Input {\n  inputs 0\n  name N\n  label src\n  xpos -65\n  ypos 46\n }\n Shuffle {\n  in rgb\n  name Shuffle1\n  xpos -65\n  ypos 108\n }\n Expression {\n  temp_name0 h\n  temp_expr0 -.001\n  expr0 r+h\n  expr1 g+h\n  expr2 b+h\n  name Expression1\n  xpos -65\n  ypos 167\n }\n Expression {\n  temp_name0 f1\n  temp_expr0 atan(b/r)\n  temp_name1 f2\n  temp_expr1 \"atan (r/b)\"\n  expr0 \"b > 0 ? (r>= 0 ? f1 : pi + f1) : (r<=0 ? (3*pi/2) - f2 : (2*pi) + f1)\"\n  expr1 \"asin (g)\"\n  expr2 0\n  name pos_to_rad\n  xpos -65\n  ypos 214\n }\n Expression {\n  expr0 degrees(r)\n  expr1 degrees(g)\n  name rad_degree\n  xpos -65\n  ypos 276\n }\n Expression {\n  expr0 r/360\n  expr1 (g+90)/180\n  expr2 0\n  name degree_UV\n  xpos -65\n  ypos 344\n }\n Input {\n  inputs 0\n  name EnvMap\n  label \"Environment Map\"\n  xpos 215\n  ypos 56\n  number 1\n }\n EXPTool {\n  mode Stops\n  green {{red}}\n  blue {{red}}\n  name Exposure1\n  label \"\\[value red]\"\n  xpos 215\n  ypos 115\n }\n Reformat {\n  type scale\n  scale {{parent.scale}}\n  name Reformat1\n  xpos 215\n  ypos 172\n }\n Tile {\n  columns 4\n  name Tile1\n  xpos 215\n  ypos 216\n }\n Transform {\n  translate {{\"(((normalize*(center.x*2)) - center.x)) % (center.x*2)\"} 0}\n  scale {-4 1}\n  center {{input.width/2} {input.height/2}}\n  name Transform1\n  xpos 215\n  ypos 274\n  addUserKnob {20 User}\n  addUserKnob {7 normalize}\n  normalize {{\"((iRotation + 180)/360)\" x70 0.245}}\n  addUserKnob {7 iRotation R -180 180}\n  addUserKnob {41 translate_1 l translate T Transform1.translate}\n  addUserKnob {41 rotate_1 l rotate T Transform1.rotate}\n  addUserKnob {41 center_1 l center T Transform1.center}\n }\n STMap {\n  inputs 2\n  uv rgb\n  name STMap1\n  xpos 143\n  ypos 446\n }\n Output {\n  name Output1\n  xpos 143\n  ypos 546\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Noise3DTexture.gizmo",
    "content": "Group {\n name Noise3DTexture\n tile_color 0x303030ff\n note_font_color 0x99ffffff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 outputtype l \"output type\" T Expression1.outputtype}\n addUserKnob {41 textureRes l \"texture resolution\" T Expression1.textureRes}\n addUserKnob {41 position l \"Position offset\" T Expression1.position}\n addUserKnob {41 scale l \"World scale\" T Expression1.scale}\n addUserKnob {41 octaves T Expression1.octaves}\n addUserKnob {41 lacunarity T Expression1.lacunarity}\n addUserKnob {41 gain T Expression1.gain}\n addUserKnob {41 alphatype l \"Alpha output\" T Expression1.alphatype}\n addUserKnob {41 premultalpha l \"Premult color by output alpha?\" -STARTLINE T Expression1.premultalpha}\n addUserKnob {26 \"\"}\n addUserKnob {20 About l \"Created by Ben Sumner - expand for info\" n 1}\n About 0\n addUserKnob {26 description l \"\" +STARTLINE T \"This Gizmo outputs either the input geometry\\nwith a 3D world position noise applied as a \\ntexture, or it can output the texture itself in \\nthe UV space of the model.\\n\\nYour model must have UVs!\\n\\nYou can output noise or textured model, \\neither with the originally applied alpha, solid \\nwhite alpha, or with the generated noise in \\nthe alpha channel.\\n\\nThis node is a good way to get seamless \\nnoise textures on your 3D models, or to\\nexport a texture to be used for seamless \\ndisplacement.\\n\\ncreated by Ben Sumner\\nFeel free to modify and share, just keep \\noriginal credit in this description!\"}\n addUserKnob {20 endGroup n -1}\n}\n Crop {\n  inputs 0\n  box {0 0 {Expression1.textureRes.w} {Expression1.textureRes.h}}\n  reformat true\n  crop false\n  name Crop2\n  xpos 557\n  ypos 313\n }\nset N4a9be6b0 [stack 0]\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name Shuffle4\n  label \"<font size = \\\"5\\\"> \\[value in]\"\n  selected true\n  xpos 727\n  ypos 258\n  postage_stamp true\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 1015\n  ypos 180\n }\n Dot {\n  name Dot4\n  xpos 1049\n  ypos 227\n }\nset N4acb4180 [stack 0]\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial2\n  xpos 1015\n  ypos 294\n }\n Dot {\n  name Dot1\n  xpos 1049\n  ypos 326\n }\nset N4a8830e0 [stack 0]\npush $N4a9be6b0\nadd_layer {P P.red P.green P.blue P.alpha}\nadd_layer {N N.red N.green N.blue N.alpha}\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  filter Mitchell\n  projection_mode uv\n  shutter 0\n  spatial_jitter 0.1\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender1\n  xpos 676\n  ypos 405\n }\n Shuffle {\n  in P\n  in2 rgba\n  alpha alpha2\n  name Shuffle2\n  label \"<font size = \\\"5\\\"> \\[value in]\"\n  xpos 745\n  ypos 443\n  postage_stamp true\n }\nset N4a9f0d60 [stack 0]\n Blur {\n  size 2\n  crop false\n  name Blur2\n  xpos 844\n  ypos 473\n }\n Shuffle {\n  black alpha\n  out2 mask\n  name Shuffle7\n  xpos 844\n  ypos 511\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult1\n  xpos 844\n  ypos 538\n }\n Remove {\n  channels mask\n  name Remove1\n  xpos 844\n  ypos 576\n }\n Add {\n  channels rgb\n  value {{parent.Expression1.position.x} {parent.Expression1.position.y} {parent.Expression1.position.z} 0}\n  name Add6\n  xpos 844\n  ypos 614\n }\n Expression {\n  expr0 (fBm(r*scale.x,g*scale.y,b*scale.z,octaves,lacunarity,gain)/2+0.5)\n  expr1 (fBm(r*scale.x,g*scale.y,b*scale.z,octaves,lacunarity,gain)/2+0.5)\n  expr2 (fBm(r*scale.x,g*scale.y,b*scale.z,octaves,lacunarity,gain)/2+0.5)\n  expr3 (fBm(r*scale.x,g*scale.y,b*scale.z,octaves,lacunarity,gain)/2+0.5)\n  maskChannelInput -rgba.alpha\n  name Expression1\n  xpos 844\n  ypos 640\n  addUserKnob {20 User}\n  addUserKnob {4 outputtype l \"output type\" M {\"UV Texture\" \"Textured Geometry\"}}\n  addUserKnob {14 textureRes l \"texture resolution\" R 0 100}\n  textureRes 2048\n  addUserKnob {13 position l \"Position offset\"}\n  addUserKnob {13 scale l \"World scale\"}\n  scale {1 1 1}\n  addUserKnob {3 octaves}\n  octaves 10\n  addUserKnob {7 lacunarity R 0 10}\n  lacunarity 2\n  addUserKnob {7 gain}\n  gain 0.5\n  addUserKnob {4 alphatype l \"Alpha output\" M {Input \"Solid white\" \"Noise output\"}}\n  alphatype \"Solid white\"\n  addUserKnob {6 premultalpha l \"Premult color by output alpha?\" -STARTLINE}\n }\nset N4ac045f0 [stack 0]\n Dot {\n  name Dot3\n  xpos 960\n  ypos 697\n }\n Premult {\n  name Premult2\n  xpos 926\n  ypos 734\n  disable {{1-parent.Expression1.premultalpha}}\n }\npush $N4ac045f0\n Shuffle {\n  alpha white\n  name Shuffle6\n  xpos 844\n  ypos 694\n }\npush $N4acb4180\npush $N4a9be6b0\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  filter Mitchell\n  projection_mode uv\n  shutter 0\n  spatial_jitter 0.1\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender2\n  xpos 513\n  ypos 375\n }\nset N4accf280 [stack 0]\npush $N4a9f0d60\n ShuffleCopy {\n  inputs 2\n  red alpha\n  green alpha\n  blue alpha\n  black alpha2\n  out2 mask\n  name ShuffleCopy1\n  xpos 592\n  ypos 416\n }\nset N4acdfa30 [stack 0]\n Shuffle {\n  in2 mask\n  alpha red2\n  name Shuffle3\n  xpos 391\n  ypos 446\n }\npush $N4acdfa30\n Blur {\n  size 2\n  crop false\n  name Blur1\n  xpos 513\n  ypos 443\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult2\n  xpos 513\n  ypos 497\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 391\n  ypos 542\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle5\n  label \"<font size = \\\"5\\\"> \\[value in]\"\n  xpos 391\n  ypos 568\n  postage_stamp true\n }\npush $N4ac045f0\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 752\n  ypos 683\n }\n Premult {\n  name Premult1\n  xpos 752\n  ypos 734\n  disable {{1-parent.Expression1.premultalpha}}\n }\n Switch {\n  inputs 3\n  which {{Expression1.alphatype}}\n  name Switch2\n  xpos 844\n  ypos 776\n }\nset N4ad3da80 [stack 0]\npush $N4a8830e0\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos 1015\n  ypos 818\n }\npush $N4ad3da80\n Switch {\n  inputs 2\n  which {{Expression1.outputtype}}\n  name Switch1\n  xpos 1015\n  ypos 911\n }\n Dot {\n  name Dot5\n  xpos 1049\n  ypos 977\n }\n Output {\n  name Output1\n  xpos 1015\n  ypos 1075\n }\npush $N4accf280\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  black alpha\n  out2 mask\n  name Shuffle1\n  xpos 513\n  ypos 397\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Noise3D_spin.gizmo",
    "content": "Group {\n name Noise3D\n inputs 2\n help \"Generate Noise in 3D space based on Position passes. It includes pre-made Position passes for some 3D primitives, or can use a custom pass. Uses a 4D noise internally so that the 4th dimension can be used to add a 'boiling' effect\"\n addUserKnob {20 noise3d l \"3D Noise\"}\n addUserKnob {4 mapping l Mapping t \"Generates a Noise based on a 3D shape, unfolded to fit into a UV plane.\\n\\nThe Custom P Input lets you input the shape of your choice. Using a pWorld pass as cutom P will generate a 3D noise as seen from the same camera as used to render the Pworld. Ensure an Alpha channel is present for Custom P.\" M {\"Card (Flat)\" Spherical \"Cylindrical (Tile X)\" \"Cylinder 4D (Tile X and Y)\" \"Custom P Input\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {41 translate T Axis_3D.translate}\n addUserKnob {41 rotate T Axis_3D.rotate}\n addUserKnob {41 scaling l scale T Axis_3D.scaling}\n addUserKnob {41 uniform_scale l \"uniform scale\" T Axis_3D.uniform_scale}\n addUserKnob {26 \"\"}\n addUserKnob {7 boiling t \"Use this knob to animate the noise and create a 'boiling' effect without a visible 3D direction.\" R 0 10}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {4 type t \"Choose between an fBm and Turbulent Noise model.\" M {fBm Turbulence \"\"}}\n addUserKnob {7 octaves R 0 10}\n octaves 5\n addUserKnob {7 lacunarity R 0 10}\n lacunarity 2\n addUserKnob {7 contrast}\n contrast 0.5\n addUserKnob {7 gain}\n gain 0.5\n addUserKnob {7 gamma}\n gamma 0.5\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nNoise_3D\\nVersion 1.0\\n2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.0 - 2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Axis2 {\n  inputs 0\n  translate {1 0 0}\n  rotate {30 30 0}\n  name Axis_3D\n  xpos 534\n  ypos 170\n }\n Input {\n  inputs 0\n  name P\n  label 1\n  xpos 205\n  ypos -58\n  number 1\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 205\n  ypos 17\n }\n Dot {\n  name Dot14\n  tile_color 0x9e3c6300\n  xpos 239\n  ypos 57\n }\nset Nacd90f0 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0x9e3c6300\n  xpos 239\n  ypos 568\n }\npush $Nacd90f0\n Shuffle {\n  alpha white\n  name Shuffle2\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 279\n  ypos 47\n }\n Input {\n  inputs 0\n  name img\n  label 0\n  xpos 1077\n  ypos -389\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 1111\n  ypos -223\n }\n Constant {\n  inputs 0\n  channels rgb\n  name Constant1\n  xpos 955\n  ypos -385\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0] \"}}\n  name Switch1\n  xpos 955\n  ypos -227\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 989\n  ypos -187\n }\nset Nacf7e30 [stack 0]\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 418\n  ypos -187\n }\n Crop {\n  box {0 0 {width} {height}}\n  crop false\n  name Crop2\n  xpos 384\n  ypos -146\n }\n Dot {\n  name Dot8\n  tile_color 0xa57aaa00\n  xpos 418\n  ypos -64\n }\nset Nad0c430 [stack 0]\n Dot {\n  name Dot9\n  tile_color 0xa57aaa00\n  xpos 553\n  ypos -64\n }\nset Nad10ee0 [stack 0]\n Dot {\n  name Dot11\n  tile_color 0xa57aaa00\n  xpos 688\n  ypos -64\n }\nset Nad15960 [stack 0]\n Dot {\n  name Dot7\n  tile_color 0xa57aaa00\n  xpos 839\n  ypos -64\n }\n Expression {\n  temp_name0 lat\n  temp_expr0 \"y / height *360-180\"\n  temp_name1 lon\n  temp_expr1 \"x / width * 360-180\"\n  temp_name2 r\n  temp_expr2 0.5\n  expr0 \"(r * cos (0.017453292519943295769236907684886 * lon) +1)*1.5\"\n  expr1 \"(r * cos (0.017453292519943295769236907684886 * lat) +1)*1.5\"\n  expr2 \"(r * sin(0.017453292519943295769236907684886 * lon)+1)*1.5\"\n  expr3 \"(r * sin(0.017453292519943295769236907684886 * lat)+1)*1.5\"\n  name Cylinder4D\n  xpos 805\n  ypos -21\n }\n Dot {\n  name Dot15\n  tile_color 0xcccccc00\n  xpos 839\n  ypos 57\n }\npush $Nad15960\n Expression {\n  temp_name0 lat\n  temp_expr0 \"y / height * 180- 90\"\n  temp_name1 lon\n  temp_expr1 \"x / width * 360-180\"\n  temp_name2 r\n  temp_expr2 0.5\n  expr0 \"(r * cos (0.017453292519943295769236907684886 * lon) +1)*1.5\"\n  expr1 y/height*3\n  expr2 \"(r * sin(0.017453292519943295769236907684886 * lon)+1)*1.5\"\n  expr3 1\n  name CylinderP\n  xpos 654\n  ypos -23\n }\n Dot {\n  name Dot13\n  tile_color 0xcccccc00\n  xpos 688\n  ypos 21\n }\npush $Nad10ee0\n Expression {\n  temp_name0 lat\n  temp_expr0 \"y / height * 180- 90\"\n  temp_name1 lon\n  temp_expr1 \"x / width * 360-180\"\n  temp_name2 r\n  temp_expr2 \"cos(0.017453292519943295769236907684886 *  lat)\"\n  expr0 \"(r * cos (0.017453292519943295769236907684886 * lon) +1)*1.5\"\n  expr1 \"(sin (0.017453292519943295769236907684886 * lat)+1)*1.5\"\n  expr2 \"(r * sin(0.017453292519943295769236907684886 * lon)+1)*1.5\"\n  expr3 1\n  name SphereP\n  xpos 519\n  ypos -21\n }\npush $Nad0c430\n Expression {\n  expr0 x/350\n  expr1 y/350\n  expr2 0\n  expr3 1\n  name CardP\n  xpos 384\n  ypos -21\n }\n Switch {\n  inputs 5\n  which {{parent.mapping}}\n  name Switch3\n  xpos 384\n  ypos 53\n }\n ColorMatrix {\n  matrix {\n      {{Axis_3D.world_matrix.0} {Axis_3D.world_matrix.1} {Axis_3D.world_matrix.2}}\n      {{Axis_3D.world_matrix.4} {Axis_3D.world_matrix.5} {Axis_3D.world_matrix.6}}\n      {{Axis_3D.world_matrix.8} {Axis_3D.world_matrix.9} {Axis_3D.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 384\n  ypos 186\n }\n Add {\n  channels rgba\n  value {{Axis_3D.translate.x} {Axis_3D.translate.y} {Axis_3D.translate.z} {parent.boiling}}\n  name Add1\n  xpos 384\n  ypos 229\n }\n BlinkScript {\n  recompileCount 27\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Noise4D\\\" iterate pixelWise d60f21004827daf93cc7aae3c8a9d35a464dc4075e83f5304202d888c93a31ad 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 5 \\\"octaves\\\" Int 1 CAAAAA== \\\"lacunarity\\\" Float 1 AAAAQA== \\\"amplitude\\\" Float 1 mpkZPw== \\\"gain\\\" Float 1 AAAAPw== \\\"mode\\\" Int 1 AAAAAA== 5 \\\"octaves\\\" 1 1 \\\"lacunarity\\\" 1 1 \\\"amplitude\\\" 1 1 \\\"gain\\\" 1 1 \\\"mode\\\" 1 1 0\"\n  kernelSource \"//Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n//Ported by Mads Hagbarth Lund 2014\\n//Modifications (fBm and Turbulence) by Erwan Leroy 2018 at Spin VFX\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\n\\ninline float raw_noise_4d(const float4 coord)\\n\\{\\n  int simplex\\[64]\\[4] =\\n  \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n  \\};\\n\\n  int perm\\[512] =\\n  \\{\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n    151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n    8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n    35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n    134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n    55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n    18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n    250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n    189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n    172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n    228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n    107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n    138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n  \\};\\n\\n  int grad4\\[32]\\[4]=\\n  \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n  \\};\\n  float x = coord.x;\\n  float y = coord.y;\\n  float z = coord.z;\\n  float w = coord.w;\\n  float F4 = (sqrt(5.0f)-1.0)/4.0;\\n  float G4 = (5.0-sqrt(5.0f))/20.0;\\n  float n0, n1, n2, n3, n4;\\n  float s = (x + y + z + w) * F4;\\n  int i = fastfloor(x + s);\\n  int j = fastfloor(y + s);\\n  int k = fastfloor(z + s);\\n  int l = fastfloor(w + s);\\n  float t = (i + j + k + l) * G4;\\n  float X0 = i - t;\\n  float Y0 = j - t;\\n  float Z0 = k - t;\\n  float W0 = l - t;\\n  float x0 = x - X0;\\n  float y0 = y - Y0;\\n  float z0 = z - Z0;\\n  float w0 = w - W0;\\n  int c1 = (x0 > y0) ? 32 : 0;\\n  int c2 = (x0 > z0) ? 16 : 0;\\n  int c3 = (y0 > z0) ? 8 : 0;\\n  int c4 = (x0 > w0) ? 4 : 0;\\n  int c5 = (y0 > w0) ? 2 : 0;\\n  int c6 = (z0 > w0) ? 1 : 0;\\n  int c = c1 + c2 + c3 + c4 + c5 + c6;\\n  int i1, j1, k1, l1;\\n  int i2, j2, k2, l2;\\n  int i3, j3, k3, l3;\\n  i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n  j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n  k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n  l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n  i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n  j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n  k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n  l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n  i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n  j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n  k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n  l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n  float x1 = x0 - i1 + G4;\\n  float y1 = y0 - j1 + G4;\\n  float z1 = z0 - k1 + G4;\\n  float w1 = w0 - l1 + G4;\\n  float x2 = x0 - i2 + 2.0*G4;\\n  float y2 = y0 - j2 + 2.0*G4;\\n  float z2 = z0 - k2 + 2.0*G4;\\n  float w2 = w0 - l2 + 2.0*G4;\\n  float x3 = x0 - i3 + 3.0*G4;\\n  float y3 = y0 - j3 + 3.0*G4;\\n  float z3 = z0 - k3 + 3.0*G4;\\n  float w3 = w0 - l3 + 3.0*G4;\\n  float x4 = x0 - 1.0 + 4.0*G4;\\n  float y4 = y0 - 1.0 + 4.0*G4;\\n  float z4 = z0 - 1.0 + 4.0*G4;\\n  float w4 = w0 - 1.0 + 4.0*G4;\\n  int ii = i & 255;\\n  int jj = j & 255;\\n  int kk = k & 255;\\n  int ll = l & 255;\\n  int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n  int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n  int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n  int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n  int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n\\n  float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n\\n  if(t0<0) \\{\\n    n0 = 0.0;\\n  \\}\\n  else\\n  \\{\\n    t0 *= t0;\\n    n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n  \\}\\n\\n  float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n\\n  if(t1<0) \\{\\n    n1 = 0.0;\\n  \\}\\n  else \\{\\n    t1 *= t1;\\n    n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n  \\}\\n\\n  float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n\\n  if(t2<0) \\{\\n    n2 = 0.0;\\n  \\}\\n  else \\{\\n    t2 *= t2;\\n    n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n  \\}\\n\\n  float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n\\n  if(t3<0) \\{\\n    n3 = 0.0;\\n  \\}\\n  else \\{\\n    t3 *= t3;\\n    n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n  \\}\\n\\n  float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n\\n  if(t4<0) \\{\\n    n4 = 0.0;\\n  \\}\\n  else \\{\\n    t4 *= t4;\\n    n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n  \\}\\n  return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\n\\ninline float fBm_4d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float total = 0;\\n  float4 frequency = coord;\\n  for( int i=0; i < octaves; i++ ) \\{\\n    total += (float)raw_noise_4d(frequency) * amplitude;\\n    frequency *= lacunarity;\\n    amplitude *= gain;\\n  \\}\\n  return float(total)*0.5f+0.5f;\\n\\}\\n\\ninline float turbulence_4d(const float octaves, const float lacunarity, const float gain, const float4 coord, float amplitude)\\n\\{\\n  float total = 0;\\n  float4 frequency = coord;\\n  for( int i=0; i < octaves; i++ ) \\{\\n    total += fabs((float)raw_noise_4d(frequency)) * amplitude;\\n    frequency *= lacunarity;\\n    amplitude *= gain;\\n  \\}\\n  return float(total);\\n\\}\\n\\nkernel Noise4D : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite, eAccessPoint> dst;\\nparam:\\n  int octaves;\\n  float lacunarity;\\n  float amplitude;\\n  float gain;\\n  int mode;\\n\\n  void define() \\{\\n    defineParam(octaves, \\\"octaves\\\", 8);\\n    defineParam(lacunarity, \\\"lacunarity\\\",  2.0f);\\n    defineParam(amplitude, \\\"amplitude\\\", 0.6f);\\n    defineParam(gain, \\\"gain\\\", 0.5f);\\n  \\}\\n  void process() \\{\\n    float sample;\\n    if (mode == 0)\\{\\n      sample = (float)fBm_4d(float(octaves),lacunarity,gain,src(), amplitude);\\n    \\} else \\{\\n      sample = (float)turbulence_4d(float(octaves),lacunarity,gain,src(), amplitude);\\n    \\}\\n    dst() = float4(sample,sample,sample,sample);\\n\\}\\n\\};\"\n  rebuild \"\"\n  Noise4D_octaves {{parent.octaves}}\n  Noise4D_lacunarity {{parent.lacunarity}}\n  Noise4D_amplitude {{parent.contrast}}\n  Noise4D_gain {{parent.gain}}\n  Noise4D_mode {{parent.type}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  selected true\n  xpos 384\n  ypos 332\n }\n Clamp {\n  name Clamp1\n  xpos 384\n  ypos 370\n }\n Gamma {\n  channels {rgba.red rgba.green rgba.blue none}\n  value {{parent.gamma}}\n  name Gamma1\n  xpos 384\n  ypos 417\n }\n Shuffle {\n  alpha blue\n  name Shuffle1\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 384\n  ypos 463\n }\nset N20731ba0 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  bbox B\n  name Merge2\n  xpos 384\n  ypos 564\n  disable {{\"parent.mapping != 4\"}}\n }\n Dot {\n  name Dot4\n  tile_color 0x4b5ec600\n  xpos 418\n  ypos 620\n }\npush $Nacf7e30\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge1\n  xpos 955\n  ypos 616\n }\n Output {\n  name Output1\n  xpos 955\n  ypos 789\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NoiseAdvanced.gizmo",
    "content": "Group {\n name NoiseAdvanced\n help \"Noise node with various time sliders.  Can quickly create animated noise.\\n\\nAdded an Overscan Slider for when you need the noise pattern to extend beyond the format edges.\"\n onCreate \"n = nuke.thisNode()\\no = n.knob('overscan')\\no.setRange(0, 500)\"\n tile_color 0x5f5f5fff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 Noise}\n addUserKnob {41 output T Noise1.output}\n addUserKnob {41 premult T Noise1.premult}\n addUserKnob {41 cliptype l \"clip to\" T Noise1.cliptype}\n addUserKnob {41 replace -STARTLINE T Noise1.replace}\n addUserKnob {41 invert -STARTLINE T Noise1.invert}\n addUserKnob {41 opacity T Noise1.opacity}\n addUserKnob {41 maskChannelInput l mask T Noise1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Noise1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Noise1.invert_mask}\n addUserKnob {26 \"\"}\n addUserKnob {14 overscan l Overscan R 0 500}\n addUserKnob {26 \"\"}\n addUserKnob {41 type T Noise1.type}\n addUserKnob {41 size l x/ysize T FOR_SETTINGS.size}\n addUserKnob {7 speedSizeX l \"Speed of size X\" R 0 4}\n addUserKnob {7 speedSizeY l \"Speed of size Y\" R 0 4}\n addUserKnob {26 \"\"}\n addUserKnob {41 zoffset l z T FOR_SETTINGS.zoffset}\n addUserKnob {7 speedZ l \"Speed of Z\" R 0 0.25}\n addUserKnob {26 \"\"}\n addUserKnob {41 octaves T Noise1.octaves}\n addUserKnob {41 nyquist l \"clip at Nyquist limit\" -STARTLINE T Noise1.nyquist}\n addUserKnob {41 lacunarity T Noise1.lacunarity}\n addUserKnob {41 gain T Noise1.gain}\n addUserKnob {41 gamma T Noise1.gamma}\n addUserKnob {20 Transform}\n addUserKnob {41 transform T Noise1.transform}\n addUserKnob {41 translate T FOR_SETTINGS.translate}\n addUserKnob {7 transX l \"Speed of Trans X\" R 0 400}\n addUserKnob {7 transY l \"Speed of Trans Y\" R 0 400}\n addUserKnob {26 \"\"}\n addUserKnob {41 rotate T FOR_SETTINGS.rotate}\n addUserKnob {7 rotSpeed l \"Speed of Rotation\" R 0 60}\n addUserKnob {26 \"\"}\n addUserKnob {41 scale T FOR_SETTINGS.scale}\n addUserKnob {7 speedScaleX l \"Speed of Scale X\" R 0 4}\n addUserKnob {7 speedScaleY l \"Speed of Scale Y\" R 0 4}\n addUserKnob {26 \"\"}\n addUserKnob {41 skew +INVISIBLE T Noise1.skew}\n addUserKnob {41 skewX l \"skew X\" T FOR_SETTINGS.skewX}\n addUserKnob {41 skewY l \"skew Y\" T FOR_SETTINGS.skewY}\n addUserKnob {41 skew_order l \"skew order\" T FOR_SETTINGS.skew_order}\n addUserKnob {41 center T FOR_SETTINGS.center}\n addUserKnob {41 xrotate T Noise1.xrotate}\n addUserKnob {41 yrotate T Noise1.yrotate}\n addUserKnob {20 \"\" l Color}\n addUserKnob {41 color T Noise1.color}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T NoiseAdvanced}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -79\n  ypos -147\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -205\n  ypos -295\n }\n Group {\n  name CropBBox\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\n\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n  note_font_color 0xffffffff\n  xpos -205\n  ypos -256\n  disable {{\"\\[exists parent.input0]\\n\"}}\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {20 inputBbox l \"input Bbox Data\" n 1}\n  inputBbox 0\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {14 bboxCenter l \"BBox Center\" R 0 100}\n  bboxCenter {{\"(this.Crop6.box.r-this.Crop6.box.x)/2 + this.Crop6.box.x\"} {\"(this.Crop6.box.t-this.Crop6.box.y)/2 + this.Crop6.box.y\"}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 369\n  }\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 466\n  }\n  Output {\n   name Output1\n   xpos 261\n   ypos 583\n  }\n end_group\nset N3cfa5000 [stack 0]\n AdjBBox {\n  numpixels {{parent.overscan} {parent.overscan}}\n  name AdjBBox1\n  xpos -205\n  ypos -206\n }\n Noise {\n  inputs 1+1\n  cliptype none\n  size {{parent.FOR_SETTINGS.size.0+(t*parent.speedSizeX)} {parent.FOR_SETTINGS.size.1+(t*parent.speedSizeY)}}\n  zoffset {{parent.FOR_SETTINGS.zoffset+(frame*speedZ)}}\n  translate {{parent.FOR_SETTINGS.translate.x+t*transX} {parent.FOR_SETTINGS.translate.y+t*transY}}\n  rotate {{parent.FOR_SETTINGS.rotate+(t*rotSpeed)}}\n  scale {{parent.FOR_SETTINGS.scale.w+(t*speedScaleX)} {parent.FOR_SETTINGS.scale.h+(t*speedScaleY)}}\n  center {{parent.FOR_SETTINGS.center} {parent.FOR_SETTINGS.center}}\n  name Noise1\n  selected true\n  xpos -205\n  ypos -147\n }\n Output {\n  name Output1\n  xpos -205\n  ypos -35\n }\npush $N3cfa5000\n Noise {\n  center {{input.width/2} {input.height/2}}\n  name FOR_SETTINGS\n  xpos -331\n  ypos -200\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalizeVector2.gizmo",
    "content": "Group {\n name NormalizeVector2_\n help \"Normalize the magnitude of a Vector2 (to be of magnitude 1)\"\n addUserKnob {20 main_tab l \"Normalize Vector2\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N78cf630 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\nset N78e2f00 [stack 0]\npush $N78e2f00\n Expression {\n  channel0 {rgba.red rgba.green -rgba.blue -rgba.alpha}\n  expr0 sqrt((r*r)+(g*g))\n  channel1 {-rgba.red -rgba.green rgba.blue rgba.alpha}\n  expr1 1\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Mag2\n  xpos 289\n  ypos 216\n }\n Merge2 {\n  inputs 2\n  operation divide\n  bbox B\n  name Merge1\n  xpos 140\n  ypos 267\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N78cf630\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalizeVector3.gizmo",
    "content": "Group {\n name NormalizeVector3_\n help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n addUserKnob {20 main_tab l \"Normalize Vector3\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N792f390 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 174\n  ypos 156\n }\nset Ne7eccb90 [stack 0]\npush $Ne7eccb90\n Dot {\n  name Dot4\n  tile_color 0x9e3c6300\n  xpos 377\n  ypos 156\n }\n Expression {\n  channel0 rgba\n  expr0 sqrt((r*r)+(g*g)+(b*b))\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Mag3\n  xpos 343\n  ypos 209\n }\n Dot {\n  name Dot5\n  tile_color 0xcccccc00\n  xpos 377\n  ypos 271\n }\n Merge2 {\n  inputs 2\n  operation divide\n  bbox B\n  name Merge1\n  xpos 140\n  ypos 267\n }\n Dot {\n  name Dot2\n  tile_color 0x4b5ec600\n  xpos 174\n  ypos 364\n }\npush $N792f390\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalsRotate.gizmo",
    "content": "Group {\n name NormalsRotate\n onCreate \"\\nn=nuke.thisNode()\\nn\\['mblack'].setFlag(0x0000000000000004)\\nn\\['mgain'].setFlag(0x0000000000000004)\\nn\\['mgamma'].setFlag(0x0000000000000004)\\n\"\n tile_color 0xff00ff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 in l \"Normals in\" t \"Select the layer containing the \\nnormals\" T Shuffle1.in}\n addUserKnob {41 pick l \"Pick Plane\" T Plane.pick}\n addUserKnob {22 planereset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"pick\\\").setValue(0,0)\\nnuke.thisNode().knob(\\\"pick\\\").setValue(0,1)\\nnuke.thisNode().knob(\\\"pick\\\").setValue(1,2)\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 divider_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 manual l \"<b>Manual Rotation</b>\" -STARTLINE T \"  \"}\n addUserKnob {22 rotreset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"yoffset\\\").setValue(0)\\nnuke.thisNode().knob(\\\"xzrot\\\").setValue(0)\"}\n addUserKnob {7 yoffset l Horizontal t \"Rotate around the world Y axis\" R -180 180}\n addUserKnob {7 xzrot l Vertical t \"Rotates around the rotated X axis\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {26 matte l \"@b;Matte Output\" T \"      \"}\n addUserKnob {6 inv l \"Invert    \" t \"This happens before the matte \\ntweaks\" -STARTLINE}\n addUserKnob {6 amask l \"Mask by Alpha    \" -STARTLINE}\n addUserKnob {6 unpre l Unpremult -STARTLINE}\n addUserKnob {7 exp l Exponent t \"Exponential falloff\" R 1 10}\n exp 2\n addUserKnob {22 expreset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"exp\\\").setValue(2)\"}\n addUserKnob {7 mblack l Black R -1 1}\n addUserKnob {22 mblackreset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"mblack\\\").setValue(0)\"}\n addUserKnob {7 mgain l White R 0 4}\n mgain 1\n addUserKnob {22 mgainreset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"mgain\\\").setValue(1)\"}\n addUserKnob {7 mgamma l Gamma R 0 4}\n mgamma 1\n addUserKnob {22 mgammareset l Reset -STARTLINE T \"nuke.thisNode().knob(\\\"mgamma\\\").setValue(1)\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 infotext l \"\" +STARTLINE T \"W_SuperNormal generates a surface angle based matte using normals.\\n\\n1. Select the layer containing normals in the dropdown menu.\\n2. Enable color picker and pick the point where you want the matte to be white.\\n  (I look at the alpha output, hold ctrl+alt and \\\"glide\\\" over the surfaces.)\\n3. You can also manually rotate the matte. When you colorpick a new point,\\n  it is recommended that you reset the manual rotation values to 0.\\n\"}\n addUserKnob {20 v2_1_group l \"v2.1 - Feb 2019\" n 1}\n v2_1_group 0\n addUserKnob {26 v2_1_text l \"\" +STARTLINE T \"  -Manual rotation working as originally envisioned: It is more intuitive \\n   and faster to reach any desired angle with horizontal(Y) and vertical\\n   rotation than with separate XYZ rotations.\\n  -General cleanup & refinements.\\n\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 v2group l \"v2.0 - 2018\" n 1}\n v2group 0\n addUserKnob {26 v2text l \"\" +STARTLINE T \"  -Adopted a different method for rotating normals shown to me by Daniel Pelc\\n  -Simpler math for converting normals into a matte with the help of Erwan Leroy\\n\"}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 v1_1_text l \"\" +STARTLINE T \"    v1.1 - 2016\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T \"     \"}\n addUserKnob {26 copyright l \"&#169;  Wes Heo\" -STARTLINE T \" \"}\n}\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {0 {-parent.yoffset} 0}\n  name Axis10\n  label H\n  xpos -173\n  ypos -163\n }\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {{parent.xzrot} {-degrees(parent.Plane.picked.g)} 0}\n  name Axis2\n  label V\n  xpos -171\n  ypos -62\n }\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {0 {-parent.Axis2.rotate.y} 0}\n  name Axis5\n  label V\n  xpos -170\n  ypos 34\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 132\n  ypos 544\n  number 1\n }\n Input {\n  inputs 0\n  name N\n  xpos 0\n  ypos -425\n }\n Shuffle {\n  in rgb\n  alpha red2\n  out rgb\n  name Shuffle1\n  xpos 0\n  ypos -347\n }\nset Ndc5b920 [stack 0]\n Dot {\n  name Dot1\n  xpos 315\n  ypos 289\n }\npush $Ndc5b920\n Unpremult {\n  name Unpremult1\n  xpos 0\n  ypos -286\n  disable {{!parent.unpre}}\n }\n NoOp {\n  name Plane\n  xpos 0\n  ypos -218\n  addUserKnob {20 User}\n  addUserKnob {18 pick l \"User Picked Plane\" R -1 1}\n  pick {0 0 1}\n  addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 calc l \"Internal Conversions\"}\n  addUserKnob {18 picked}\n  picked {0 {\"(atan2(pick.r, pick.b))\"} 0}\n  addUserKnob {6 picked_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis10.world_matrix.0} {parent.Axis10.world_matrix.1} {parent.Axis10.world_matrix.2}}\n      {{parent.Axis10.world_matrix.4} {parent.Axis10.world_matrix.5} {parent.Axis10.world_matrix.6}}\n      {{parent.Axis10.world_matrix.8} {parent.Axis10.world_matrix.9} {parent.Axis10.world_matrix.10}}\n    }\n  name ColorMatrix2\n  xpos 0\n  ypos -148\n  disable {{parent.yoffset==0}}\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis2.world_matrix.0} {parent.Axis2.world_matrix.1} {parent.Axis2.world_matrix.2}}\n      {{parent.Axis2.world_matrix.4} {parent.Axis2.world_matrix.5} {parent.Axis2.world_matrix.6}}\n      {{parent.Axis2.world_matrix.8} {parent.Axis2.world_matrix.9} {parent.Axis2.world_matrix.10}}\n    }\n  name ColorMatrix3\n  xpos 0\n  ypos -42\n  disable {{parent.xzrot==0}}\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis5.world_matrix.0} {parent.Axis5.world_matrix.1} {parent.Axis5.world_matrix.2}}\n      {{parent.Axis5.world_matrix.4} {parent.Axis5.world_matrix.5} {parent.Axis5.world_matrix.6}}\n      {{parent.Axis5.world_matrix.8} {parent.Axis5.world_matrix.9} {parent.Axis5.world_matrix.10}}\n    }\n  name ColorMatrix5\n  xpos 0\n  ypos 54\n  disable {{parent.xzrot==0}}\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 parent.Plane.pick.r\n  temp_name1 ny\n  temp_expr1 parent.Plane.pick.g\n  temp_name2 nz\n  temp_expr2 parent.Plane.pick.b\n  channel0 {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  expr0 r*nx\n  channel1 {-rgba.red rgba.green -rgba.blue none}\n  expr1 g*ny\n  channel2 {-rgba.red -rgba.green rgba.blue none}\n  expr2 b*nz\n  channel3 {none none none -rgba.alpha}\n  name Expression1\n  xpos 0\n  ypos 121\n  cached true\n }\n Expression {\n  expr3 clamp(r+g+b)\n  name Expression3\n  xpos 0\n  ypos 187\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos 0\n  ypos 249\n  disable {{!parent.inv}}\n }\n Expression {\n  expr3 pow(a,max(1,parent.exp))\n  name Expression4\n  xpos 0\n  ypos 317\n }\n Grade {\n  channels alpha\n  blackpoint {{-parent.mblack}}\n  white {{parent.mgain}}\n  gamma {{max(0.001,parent.mgamma)}}\n  white_clamp true\n  name Grade1\n  xpos 0\n  ypos 369\n }\n ChannelMerge {\n  inputs 2\n  operation multiply\n  name ChannelMerge1\n  selected true\n  xpos 0\n  ypos 444\n  disable {{!parent.amask}}\n }\npush 0\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 0\n  ypos 544\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 623\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NukeZ.gizmo",
    "content": "Group {\n name NukeZ\n inputs 0\n tile_color 0xffc900ff\n label \"<center><img src='PoissonMesh.png'></center>\"\n note_font \"DejaVu Sans Bold\"\n note_font_size 16\n addUserKnob {20 tab_general l General}\n addUserKnob {4 node M {AddSTMap ApplyLUT Assert AttribGeo Axis Axis2 BakedPointCloud BakedPointCloudMesh Bilateral Bilateral2 BlockGPU Blocky BumpMat BurnIn CCorrect Camera Camera2 CameraShake CameraShake2 CameraShake3 CameraTracker1_0 Card Card2 CardObj ChannelSelector Checker CheckerBoard CheckerBoard2 ChromaKeyer ColorTransferWrapper Compare Convolve Convolve2 Convolve2 CubeObj CylinderObj DeInterlace DeepChannelBlanker DeepClip DeepClipZ DeepColorCorrect DeepColorCorrect2 DeepCompare DeepDeOverlap DeepHoldout DeepHoldout2 DeepMask DeepMerge DeepMerge2 DeepOmit DeepShift DeepToImage DeepToImage2 DeepVolumeMaker Denoise Denoise2 Denoise2 DepthGenerator DepthGenerator1_0 DirBlur DirBlurWrapper DualBlend EdgeDetect EdgeScatter ExecuteTreeMT FFT FFTMultiply FieldSelect Fill FishEye FloodFill Fog FromDeep GPUFileShader GPUOp GenerateLUTGeo Grain Grain2 GridWarp GridWarp2 GridWarp3 IBK IBK2Gizmo IBKColour IBKColourV3 IBKEdge IBKGizmo IBKGizmoV3 IBKSFill IBKSplit IT8_Reader IT8_Writer Inpaint Inpaint2 InvFFT LensDistortion LensDistortion1_0 LensDistortion2 LevelSet Light Light2 LogGeo MakeLatLongMap Merge Merge2 MergeGeo MeshGeo MindRead Mirror Mirror2 ModelBuilderGeo Modeler Modeler1_0 Morph MultiTexture NodeWrapper OFlow OpStatisticsOp PLogLin PSDMerge ParticleBlinkScriptRender ParticleMove ParticleSystem ParticleToImage PerspDistort PixelStat PixelSum PlanarTracker PlanarTracker1_0 PointCloudGenerator1_0 PositionToPoints PositionToPoints2 Posterize Primatte Primatte2 Primatte3 Primatte3OLD PrintHash PrintMetaData Project3D Project3D2 ProjectionSolver ProjectionSolver1_0 PythonGeo ReadGeo ReadGeo2 Reconcile3D Rectangle RendermanShader Resize Shuffle Shuffle2 SimpleAxis SphereObj SphereToLatLongMap SphericalMap SphericalTransform SphericalTransform2 SplineWarp SplineWarp2 Spotlight Stabilize2D StarField TVIscale Text Text2 TextureFile TimeBlend TimeShift TimeToDepth ToDeep Tracker Tracker3 Tracker4 Tracker4 Transform3D Trilinear Twist TwistGeo UI_Silver UI_Standard UnmultColor Unwrap UpRez VectorBlur VectorBlur2 ViewerProcess_None ViewerProcess_rec709 ViewerProcess_sRGB ZBlur ZComp ZDefocus ZDefocus2 ZDefocus2 ZFDefocus ZRMerge ZoomTV achannels allchars autocrop cache_clear cache_report color_nodes create_read date default_font_pathname drop formats goofy_title goto_frame import_action import_adobe_lut import_boujou import_chan import_discreet_lut import_sequence infoviewer load_all_plugins makescratch mov32Reader mov32Writer node_delete nukev objReaderObj remove_inputs script_command script_data script_info script_version_up select_by_name showname start topnode version_down version_up}}\n addUserKnob {22 get_tools_menu l \"update menu\" -STARTLINE T \"import os\\nimport re\\n\\nnkPath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\nnkPath.pop()\\nnkPath += \\['plugins']\\nnkPath = os.sep.join( nkPath )\\n\\nthisGRP = nuke.thisGroup()\\nfileEXT = thisGRP\\['fileEXT'].value().split(',')\\nblacklist = thisGRP\\['blacklist'].value().split(',')\\nwhitelist = thisGRP\\['whitelist'].value().split(',')\\n\\ntools = \\[]\\nfor file in os.listdir( nkPath ) :\\n\\tif os.path.isfile( nkPath+os.sep+file ) :\\n\\t\\tif file.split('.')\\[1] in fileEXT and file.split('.')\\[0] not in blacklist :\\n\\t\\t\\ttools.append( file.split('.')\\[0] )\\ntools += whitelist\\ntools.sort()\\n\\nthisGRP\\['node'].setValues( tools )\\nthisGRP\\['total_count'].setValue( str(len(tools)) )\\n\\n\"}\n addUserKnob {26 total_count l \"<font color=orange>Total : </font>\" -STARTLINE T 235}\n addUserKnob {22 create l \"<b>\\[--- create node ---]</b>\" T \"import random\\n\\nthisGRP = nuke.thisGroup()\\n\\ntry :\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\txspace = int( nuke.toNode('preferences')\\['GridWidth'].getValue() )\\n\\twith getLevel() :\\n\\t\\tmakeNode = nuke.createNode( thisGRP\\['node'].value() )\\n\\t\\tmakeNode.setXYpos( thisGRP.xpos() + xspace + random.randint(0,xspace) , thisGRP.ypos() )\\n\\t\\tmakeNode.hideControlPanel()\\nexcept :\\n\\tnukescripts.script_command( thisGRP\\['node'].value() )\" +STARTLINE}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {43 favorite +DISABLED}\n addUserKnob {22 unlock_favorite l unlock -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nlockMisc( 'favorite' )\"}\n addUserKnob {3 favorite_status l \"\" -STARTLINE +INVISIBLE}\n addUserKnob {6 sort l \"sort by alphabet\" +STARTLINE}\n addUserKnob {22 add_favorite l \"add to favorite\" T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\naddItem( 'favorite' )\" +STARTLINE}\n addUserKnob {22 remove_favorite l \"remove from favorite\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nremoveListItem( 'favorite' )\"}\n addUserKnob {22 reset_favorite l \"reset favorite\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nreset( 'favorite' )\"}\n addUserKnob {22 fav_access l \"<b>\\[--- create quick access node ---]</b>\" T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\ngenFav()\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 filter_list_menu l \"filter list menu\" n 1}\n filter_list_menu 0\n addUserKnob {26 title_blacklist l blacklist}\n addUserKnob {22 add_blacklist l \"add to blacklist\" T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\naddItem( 'blacklist' )\" +STARTLINE}\n addUserKnob {22 remove_blacklist l \"remove from blacklist\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nremoveListItem( 'blacklist' )\"}\n addUserKnob {22 reset_blacklist l \"reset blacklist\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nreset( 'blacklist' )\"}\n addUserKnob {26 title_whitelist l whitelist}\n addUserKnob {22 add_whitelist l \"add to whitelist\" T \"thisGRP = nuke.thisGroup()\\nif len( thisGRP\\['whitelist'].value() ) :\\n\\twhitelist = thisGRP\\['whitelist'].value().split(',')\\nelse :\\n\\twhitelist = \\[]\\n\\np = nuke.Panel('Add to Whitelist :')\\np.addSingleLineInput('node class : ', '')\\np.setWidth(300)\\n\\nif p.show() :\\n\\tinClass = p.value('node class : ')\\n\\tif len( inClass ) :\\n\\t\\tif inClass not in whitelist :\\n\\t\\t\\twhitelist.append( inClass )\\n\\n\\t\\twhitelist.sort()\\n\\n\\t\\tthisGRP\\['whitelist'].setValue( ','.join(whitelist) )\\n\\telse :\\n\\t\\tnuke.message('Entry is empty. Process denied...')\" +STARTLINE}\n addUserKnob {22 remove_whitelist l \"remove from whitelist\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nremoveListItem( 'whitelist' )\"}\n addUserKnob {22 reset_whitelist l \"reset whitelist\" -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nreset( 'whitelist' )\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {1 fileEXT l \"file extension\" +DISABLED}\n fileEXT gizmo,so,tcl,dll\n addUserKnob {22 unlock_fileEXT l unlock -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nlockMisc( 'fileEXT' )\"}\n addUserKnob {3 fileEXT_status l \"\" -STARTLINE +INVISIBLE}\n addUserKnob {43 blacklist +DISABLED}\n blacklist Add,AddChannels,AddMix,AddTimeCode,AdjBBox,Alembic_In,AmbientOcclusion,Anaglyph,Append2,ApplyMaterial,BasicMaterial,BlackOutside,Blend,BlendMat,BlinkScript,BumpBoss,CCrosstalk,CHueCorrect,CMSTestPattern,CameraTracker,Card3D,ChannelCopy,ChannelMerge,Clamp,ClipTest,ColorBars,ColorCorrect,ColorLookup,ColorMatrix,ColorTransfer,ColorWheel,Colorspace,CompareMetaData,Constant,ContactSheet,Copy,CopyBBox,CopyMetaData,CopyRectangle,CornerPin2D,Crop,CrosstalkGeo,Cube,CurveTool,Cylinder,DecalMat,DeepCrop,DeepFromFrames,DeepFromImage,DeepRead,DeepRecolor,DeepReformat,DeepSample,DeepToPoints,DeepTransform,DeepWrite,Defocus,DegrainBlue,DegrainSimple,DepthToPoints,DepthToPosition,Difference,Diffuse,Dilate,Direct,DirectLight,DiskCache,DisplaceGeo,Displacement,Dissolve,Dither,DropShadow,DustBust,EXPTool,EdgeBlur,EdgeDetectWrapper,EdgeExtend,EditClip,EditGeo,Emboss,Emission,Environment,Erode,FillMat,FilterErode,Flare,FrameBlend,FrameSelect,Gamma,GenerateLUT,Glint,Glow,Glow2,GodRays,Grade,Greyscale,Grid,GridWarpTracker,HSVTool,HistEQ,HueCorrect,HueKeyer,HueShift,IDistort,IDistort2,Invert,Keyer,Keyer2,Keymix,Kronos,Laplacian,LayerContactSheet,LayerCopy,LightWrap,Log2Lin,LookupGeo,MarkerRemoval,MatchGrade,MaterialGeo,Median,MergeMat,MinColor,MixViews,ModelBuilder,ModifyMetaData,ModifyRIB,MotionBlur,MotionBlur2D,MotionBlur3D,Multiply,No-op,NoTimeBlend,Noise,Normals,OCIOCDLTransform,OCIOColorSpace,OCIODisplay,OCIOFileTransform,OCIOLogConvert,OCIOLookTransform,OFlow2,OneView,ParticleAttractToSphere,ParticleBlinkScript,ParticleBounce,ParticleColorByAge,ParticleConstrainToSphere,ParticleCurve,ParticleCylinderFlow,ParticleDirection,ParticleDirectionalForce,ParticleDistributeSphere,ParticleDrag,ParticleEmitter,ParticleExpression,ParticleFlock,ParticleFuse,ParticleGravity,ParticleGrid,ParticleHelixFlow,ParticleInfo,ParticleKill,ParticleLookAt,ParticleMerge,ParticleMotionAlign,ParticlePointForce,ParticleProjectDisplace,ParticleProjectImage,ParticleSettings,ParticleShockWave,ParticleSpawn,ParticleSpeedLimit,ParticleTurbulence,ParticleVortex,ParticleWind,Phong,PointCloudGenerator,PointsTo3D,PoissonMesh,Position,Premult,PrmanRender,ProcGeo,ProceduralNoise,Radial,RadialDistort,Ramp,RayRender,ReLight,Reflection,Reformat,Refraction,Remove,Retime,RolloffContrast,STMap,Sampler,Saturation,ScanlineRender,ScannedGrain,Scene,Sharpen,ShuffleViews,SideBySide,SmartVector,SoftClip,Soften,Sparkles,Specular,Sphere,Spot,StabTrack,StartTimeBlur,TemporalMedian,Tile,TimeBlur,TimeDissolve,TimeEcho,TimeWarp,Toe2,Transcode,Transform,TransformMasked,Transmission,UIchooser,UVProject,UVTile2,Ultimatte,Unpremult,VFInterpGeo,VFTransformGeo,VectorCornerPin,VectorDistort,VectorGenerator,VectorToMotion,Vectorfield,ViewerProcess_1DLUT,VolumeRays,Wireframe,ZMerge,ZSlice,abcReader,abcWriter,add32p,animation_expressions,animation_filter,animation_generate,animation_loop,animation_move,animation_negate,animation_reverse,ariReader,arriReader,arxReader,auto_connect,autocolor,autocolor_add,autocolor_node,autolabel,autolabel_node,aviReader,aviWriter,basename,branch,cam_ver_panel,camera_down,camera_up,camera_ver,cdfReaderDeep,cdfWriterDeep,cinReader,cinWriter,copy_gizmo_to_group,copy_knobs,copy_to_group,cr2Reader,create_curve,crwReader,declone,deepshadReaderDeep,dngReader,dpxReader,dpxWriter,dshdReaderDeep,dtexReaderDeep,execute_panel,export_ascii,export_chan,export_chan_file,export_chan_menu,export_discreet_lut,exrReader,exrReaderDeep,exrWriter,exrWriterDeep,extract,fbxReader,fbxWriter,ffmpegReader,ffmpegWriter,filter_multiple,fixclone,flipbook,fpiReader,fpiWriter,ftifReader,ftifWriter,ftiffReader,ftiffWriter,get_reads,getenv,gifReader,hdrReader,hdrWriter,hdriReader,hdriWriter,iffReader,import_ascii,import_chan_button,import_chan_file,import_chan_menu,import_discreet,init,invert,it8,jpegReader,jpegWriter,jpgReader,jpgWriter,lset,m4vReader,m4vWriter,max_curve,min_curve,mov64Reader,mov64Writer,movReader,movWriter,mp4Reader,mp4Writer,mxfReader,mxfWriter,nfb_this,nilWriter,nkReader,nkcReader,nkncReader,node_copypaste,node_cutpaste,node_status,nullWriter,objReader,objWriter,parray,paste_to_selected,picReader,picWriter,png16Writer,pngReader,pngWriter,psdReader,pstack,pxdtexReaderDeep,r3dReader,read_file,remove32p,renderfarm_example,rgbReader,rgbWriter,rgbaReader,rgbaWriter,rgbeReader,rgbeWriter,rgbeaReader,rgbeaWriter,rlaReader,scroll_scr,search_plugins,search_replace,select_similar,setenv,sgi16Reader,sgi16Writer,sgiReader,sgiWriter,swapAB,sxrReader,sxrWriter,targaReader,targaWriter,texReaderDeep,tgaReader,tgaWriter,tif16Reader,tif16Writer,tifReader,tifWriter,tiff16Reader,tiff16Writer,tiffReader,tiffWriter,toggle,toolbars,unsetenv,update_plugin_menu,version_get,version_latest,version_set,write_file,xpmReader,xpmWriter,yuvReader,yuvWriter\n addUserKnob {22 unlock_blacklist l unlock -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nlockMisc( 'blacklist' )\"}\n addUserKnob {3 blacklist_status l \"\" -STARTLINE +INVISIBLE}\n addUserKnob {43 whitelist +DISABLED}\n whitelist Axis,Camera,Denoise,Light,OFlow,ReadGeo,Shuffle\n addUserKnob {22 unlock_whitelist l unlock -STARTLINE T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nlockMisc( 'whitelist' )\"}\n addUserKnob {3 whitelist_status l \"\" -STARTLINE +INVISIBLE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.1}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-03-06}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.1<br>-&nbsp;blacklist&nbsp;filter&nbsp;updated<br><br>1.0<br>-&nbsp;easy&nbsp;access&nbsp;nuke's&nbsp;hidden/old&nbsp;nodes\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n NoOp {\n  inputs 0\n  name store\n  selected true\n  xpos -45\n  ypos -36\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"import random\\n\\ndef getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join( nodePath ))\\n\\treturn ggLevel\\n\\n##########\\n\\ndef lockMisc( _mainName ) :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['\\{0\\}_status'.format( _mainName )].getValue() :\\n\\t\\tthisGRP\\[_mainName].setEnabled(False)\\n\\t\\tthisGRP\\['\\{0\\}_status'.format( _mainName )].setValue(0)\\n\\t\\tthisGRP\\['unlock_\\{0\\}'.format( _mainName )].setLabel( 'unlock' )\\n\\telse :\\n\\t\\tthisGRP\\[_mainName].setEnabled(True)\\n\\t\\tthisGRP\\['\\{0\\}_status'.format( _mainName )].setValue(1)\\n\\t\\tthisGRP\\['unlock_\\{0\\}'.format( _mainName )].setLabel( 'lock' )\\n\\n##########\\n\\ndef removeListItem( _mainName ) :\\n\\tthisGRP = nuke.thisGroup()\\n\\titemList = thisGRP\\[_mainName].value().split(',')\\n\\n\\tif len( itemList\\[0] ) :\\n\\t\\tp = nuke.Panel( 'Remove from \\{0\\} :'.format( _mainName ) )\\n\\t\\tp.addEnumerationPulldown( 'select : ' , ' '.join( itemList ) )\\n\\t\\tp.setWidth(300)\\n\\n\\t\\tif p.show() :\\n\\t\\t\\titemList.remove( p.value('select : ') )\\n\\t\\t\\titemList.sort()\\n\\t\\t\\tthisGRP\\[_mainName].setValue( ','.join( itemList ) )\\n\\telse :\\n\\t\\tnuke.message( '\\{0\\} list is empty.'.format( _mainName ) )\\n\\n##########\\n\\ndef reset( _mainName ) :\\n\\tif nuke.ask( 'Are you sure to reset the \\{0\\} ?'.format( _mainName ) ) :\\n\\t\\tnuke.thisGroup()\\[_mainName].setValue('')\\n\\n##########\\n\\ndef addItem( _mainName ) :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif len( thisGRP\\[_mainName].value() ) :\\n\\t\\titemList = thisGRP\\[_mainName].value().split(',')\\n\\telse :\\n\\t\\titemList = \\[]\\n\\n\\tif thisGRP\\['node'].value() not in itemList :\\n\\t\\titemList.append( thisGRP\\['node'].value() )\\n\\n\\tif _mainName != 'favorite' :\\n\\t\\titemList.sort()\\n\\telse :\\n\\t\\tif thisGRP\\['sort'].value() :\\n\\t\\t\\titemList.sort()\\n\\n\\tthisGRP\\[_mainName].setValue( ','.join( itemList ) )\\n\\n##########\\n\\ndef genFav() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif len( thisGRP\\['favorite'].value() ) :\\n\\t\\tfavList = thisGRP\\['favorite'].value().split(',')\\n\\n\\t\\twith getLevel() :\\n\\t\\t\\tnkzGRP = makePackage( 'NukeZfav', favList , thisGRP )\\n\\telse :\\n\\t\\tnuke.message('Nothing in favorite list. Process denied...')\\n\\n##########\\n\\ndef makePackage( _name , _favLS , _thisG ) :\\n\\tavailableName = findAvailableName( _name )\\n\\txspace = int( nuke.toNode('preferences')\\['GridWidth'].getValue() )\\n\\tyspace = int( nuke.toNode('preferences')\\['GridHeight'].getValue() )\\n\\n\\t##### make group\\n\\tnewName = _name + '_' + str(availableName)\\n\\tnkzGRP = nuke.nodes.Group(\\n\\t\\tname = newName , \\n\\t\\ttile_color = int( _thisG\\['tile_color'].getValue()) , \\n\\t\\txpos = _thisG.xpos()+random.randint(0,xspace) , \\n\\t\\typos = _thisG.ypos()+yspace+random.randint(0,yspace)\\n\\t\\t)\\n\\n\\tnkzGRP.addKnob( nuke.Tab_Knob( 'tab_myFavorite' , 'My favorite' ) )\\n\\tfor key,value in enumerate( _favLS ) :\\n\\t\\tnkzGRP.addKnob( nuke.PyScript_Knob( value, value, \\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\ncreateNode( nuke.thisKnob().name() )\\\" ) )\\n\\t\\tif key%3 == 0 :\\n\\t\\t\\tnkzGRP\\[value].setFlag(0x00001000)\\n\\n\\twith nkzGRP :\\n\\t\\tsubstore = nuke.nodes.NoOp( name = 'store' )\\n\\t\\tsubstore.addKnob( nuke.PyScript_Knob( 'fn' , 'fn' , \\\"import random\\\\ndef getLevel() :\\\\n\\\\tif len(nuke.thisNode().fullName().split(\\\\'.\\\\')) == 1 :\\\\n\\\\t\\\\t  ggLevel = nuke.root()\\\\n\\\\telse :\\\\n\\\\t\\\\t  nodePath = nuke.thisNode().fullName().split(\\\\'.\\\\')\\\\n\\\\t\\\\t  nodePath.pop()\\\\n\\\\t\\\\t  ggLevel = nuke.toNode(\\\\'.\\\\'.join( nodePath ))\\\\n\\\\treturn ggLevel\\\\ndef createNode( _mainName ) :\\\\n\\\\tthisGRP = nuke.thisGroup()\\\\n\\\\ttry :\\\\n\\\\t\\\\txspace = int( nuke.toNode(\\\\'preferences\\\\')\\[\\\\'GridWidth\\\\'].getValue() )\\\\n\\\\t\\\\twith getLevel() :\\\\n\\\\t\\\\t\\\\tmakeNode = nuke.createNode( _mainName )\\\\n\\\\t\\\\t\\\\tmakeNode.setXYpos( thisGRP.xpos() + xspace + random.randint(0,xspace) , thisGRP.ypos() )\\\\n\\\\t\\\\t\\\\tmakeNode.hideControlPanel()\\\\n\\\\texcept :\\\\n\\\\t\\\\tnukescripts.script_command( _mainName )\\\" ) )\\n\\n\\treturn nkzGRP\\n\\n##########\\n\\ndef findAvailableName( _name ) :\\n\\tfindName = 0\\n\\tdetectName = \\[]\\n\\n\\tfor node in nuke.allNodes():\\n\\t\\tif node.name().split('_')\\[0] == _name :\\n\\t\\t\\tdetectName.append(int(node.name().split('_')\\[1]))\\n\\tdetectName.sort()\\n\\twhile detectName.count(findName) != 0 :\\n\\t\\tfindName += 1\\n\\n\\treturn findName\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P2N.gizmo",
    "content": "Group {\n name P2N\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x7f0072ff\n label \"output : normal(\\[value nor_space])\"\n addUserKnob {20 general l General}\n addUserKnob {41 \"Local GPU: \" T BS_PosToNor.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BS_PosToNor.useGPUIfAvailable}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_in l <b>INPUT</b>}\n addUserKnob {41 pos_space l \"position space\" -STARTLINE T menu1.pos_space}\n addUserKnob {26 title_out l <b>OUTPUT</b>}\n addUserKnob {41 nor_space l \"normal space\" T menu1.nor_space}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {20 CamTabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_cam_setup l \"Camera Setup\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"All the process calculated in camera space. So when doing any convertion, it required the camera data. Unless input data 'space' is camera.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture, filmback window and world matrix from selected camera.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll',\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 CamTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {7 depth_threshold l \"depth threshold\" t \"depththreshold to adjust the edge defination.\"}\n depth_threshold 0.1\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {2 font}\n font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n addUserKnob {6 disable_error l \"disable onscreen message\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;a&nbsp;package&nbsp;convert&nbsp;3D&nbsp;tech&nbsp;passes<br>&nbsp;&nbsp;included<br>&nbsp;&nbsp;*&nbsp;P2Z&nbsp;(&nbsp;Position&nbsp;To&nbsp;Depth&nbsp;)<br>&nbsp;&nbsp;*&nbsp;P2N&nbsp;(&nbsp;Position&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2P&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Position&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2N&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;ConvertPNZ&nbsp;(&nbsp;self&nbsp;convertion&nbsp;)<br>-&nbsp;fixed&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;issue<br><br>1.2<br>-&nbsp;changed&nbsp;camera&nbsp;input&nbsp;to&nbsp;expression&nbsp;link<br>-&nbsp;fix&nbsp;alpha&nbsp;check<br>-&nbsp;added&nbsp;support&nbsp;camera&nbsp;window&nbsp;roll<br><br>1.0<br>-&nbsp;Convert&nbsp;Position&nbsp;data&nbsp;to&nbsp;Normal\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x38408cff\n  label blinkscript\n  note_font_size 42\n  xpos 332\n  ypos 256\n  bdwidth 224\n  bdheight 134\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -488\n  ypos -476\n  bdwidth 262\n  bdheight 196\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label bin\n  note_font_size 42\n  xpos -488\n  ypos -174\n  bdwidth 272\n  bdheight 503\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  name Reformat1\n  xpos 731\n  ypos 618\n }\n Text {\n  message \"missing position pass\"\n  font \"\\[value parent.font]\"\n  size {{global.res.x/15}}\n  xjustify center\n  yjustify center\n  Transform 1\n  box {0 0 {global.res.x} {global.res.y}}\n  center {640 360}\n  name Text1\n  xpos 731\n  ypos 700\n  disable {{parent.disable_error}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  black_outside true\n  name Reformat2\n  xpos 731\n  ypos 782\n }\n Dot {\n  name Dot5\n  xpos 765\n  ypos 864\n }\n Input {\n  inputs 0\n  name position\n  xpos 404\n  ypos -533\n }\n Expression {\n  temp_name0 detectA\n  temp_expr0 \"red == 0 && green == 0 && blue == 0 ? 0 : 1\"\n  expr3 detectA\n  name Expression3\n  label \"non-filtered alpha\"\n  xpos 404\n  ypos -439\n }\n Dot {\n  name Dot8\n  xpos 438\n  ypos -357\n }\nset Nca09d400 [stack 0]\n Expression {\n  expr2 -blue\n  name Expression4\n  label \"position (cam)\"\n  xpos 631\n  ypos -367\n }\n Dot {\n  name Dot2\n  xpos 665\n  ypos -115\n }\npush $Nca09d400\n Add {\n  channels rgb\n  value {{-parent.world_matrix.3} {-parent.world_matrix.7} {-parent.world_matrix.11} 0}\n  name Add2\n  label \"invert translation\"\n  xpos 404\n  ypos -283\n  bookmark true\n }\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix2\n  label \"invert transmation\"\n  xpos 404\n  ypos -177\n }\n Expression {\n  temp_name0 newR\n  temp_expr0 \"( red - ( global.hratio * abs( blue ) * parent.cam_win_translate.u / 2 ) ) * 1 / parent.cam_win_scale.u\"\n  temp_name1 newG\n  temp_expr1 \"( green - ( global.hratio * abs( blue ) * parent.cam_win_translate.v /2 ) ) * 1 / parent.cam_win_scale.v\"\n  expr0 \"newR * fb_data.world_matrix.0 + newG * fb_data.world_matrix.1\"\n  expr1 \"newR * fb_data.world_matrix.4 + newG * fb_data.world_matrix.5\"\n  name Expression5\n  label \"invert camera window\"\n  xpos 404\n  ypos -105\n }\n Switch {\n  inputs 2\n  which {{parent.pos_space}}\n  name Switch6\n  xpos 404\n  ypos 27\n }\n Premult {\n  name Premult1\n  label \"premult non-filtered alpha\"\n  xpos 404\n  ypos 109\n }\n BlinkScript {\n  recompileCount 376\n  KernelDescription \"2 \\\"PosToNor\\\" iterate pixelWise 02cf16da23aea1612dfbcc053c87db54f6b4c4e44f3ad9894ac3d7a7730044cc 2 \\\"ppass\\\" Read Random \\\"dst\\\" Write Point 1 \\\"deep threshold\\\" Float 1 zczMPQ== 1 \\\"dThreshold\\\" 1 1 0\"\n  EncodedSource \"1 2924 5yXW0xYFMJslpopUtj52AV/Io3x/f6K86Tht0ug2nRn+Pl5BtcKt7yOZtlJAGYcZhwFjuDgpOVcH+JYiF2EFRVtpxuWSctkcGm9s+mt73vdnVTG5DErmZb7UaE51wML710Mnz4xW/dHYU98yrOnkQjhpiGWpnJfaZRsYb9zg4THW+7vImS4rn1HMaDx+e7MguZZU8VlNDr0yt3+oqK5JqPha++yGjxd6U2y6Mcfa4QbIm2NAmKIzdkyYct+2X7Obj1XdMIpRBBYpl1JtTEM22BpY9I2hxiJln4Ut3IPhp9F96phL2JQIveQ7xR9u1BJiYTw/su++BoJZ1MbcIUAiYitUZSRS8yctZ0E+e5wGmJn8TXlNaLCx/L4RRE35TUY39uz3NaDzUdi4mnKNKMQcPTLVbJbm+Qxpe71YCRZRnrMlbtuhCI5/wZXmQCGGDF06bzY0clTgJdUxKLkqgCCIkkU5N3RRekb+Hit95FprW/toVKlxS6kxQgFwywG2fRflbudUOP1Oi6ZGl1KYu0ymY1i2Va+z8sWvl1K3Df6PDYPGGTto+QeRYjRWJ6M8yuYQXjW84drm00CMTPsD4o6nEN703fvBCK4oMA1uB+B+f1Ks/yex6rqL8W0RdNPgzCCOOw1NTWp1DG0/grDqBsRUyESUq58oZ7pNZkB94dkFqH3DdQTCK+QVjkiQpnht5xRazBjPsJuE3HJWGjcDjbxdqmT8Q2FQ3hrEz5iD2PeM5P2CQHEHPP9/BDujHY9fRay5iodG5asnPYBTnsoHGW06e8aKgkyLrg8wXC6BDVIYFgwNxzIX0KCcXlycqtGleq3cC2HahCVNQH52ugdy15yi0GzFaOjF3k1orC2x1VnKZQvoImV5yWUPwU+k9DPLSnCd3VL5LioZrLP54n0kJBKpwEiJNvnIM7rjaz1S7SbwmRfoQEVy01/06ppj2YT9+G3KQVEDwD7thlAE/w7/K/OdJ72Xr75gqUU1heOD5Ze8ZWZcKfCibiCLjcb7vUef2AQTe0MWElmo61jeK30rWvJLWuVFyFFcYXvU36xXlq28SnTMMO94aU+3cfcxDzlIMF2wfyYXNOOCe7gv/ed22EtJQU/O4qrXWIQbBP/sc3IZ4PUSnE4CgVSpNL1K8NZwlXGEjlE40BOHiFsXotpJNvKvxgQIEFStsptpdfVCFqNQ8N3A+s8y/QUrXJ8nQsiNykHmuRWa0hcNihaOTpIGuVk7eDECVy/ebkNv11ImrGAkndoV67OjZy+FUTBaO1rD1uTtZeCIdycfnoCFIJejQOtzoSNYjJOkVJ4T0luOO8yKCqkgAHtthZE3h+WObi2wcRzDAk7y62rJDA2DzC+VM6EoBf31gMxRrZ71tHgMY+zUgWdBPLTqTKBtPcxsHaUVvEnpBmaUHhm9mwlwMa4yOO3pJf1ZYsrL0Gx1jMDPZVzZOM/1KyVWNaWEGy+baCvGjt/xteo/VgGPre38KEL7Mxtrc7mehF2T8Fh5shHdU7NmxRyfQHjZfugwqY3U4HqVi/T5DftVK9aaMm2w+RC7j4LbFg971DTXzA2rQDNa5pOMqbwBRTRQSGCdH0dfNFaWOug/ez+dRkMgWMY4CVv4qtxrWtk1G+WlNV806YKLlVrsWkaqgV70IL0sX8Yg03roBQHv2ulCVMBLpoTeAzn1nWZq7Bc2OA4Bm8YJz/pqxBF76HbVRtYTsBC9RR11HtoJ05OPWt3TtkZ3dvZf3vRsBkSvZ2pRdoUoQXXl8sPzzJmoNXbXsRfymhkbQeH1g15zcuXX+0ieT+0zCd9PvFIRM1inf/DbfVFU3XQhbxVLT6Ivbs7JCGlT5IKe8p9Wz19NJqkbkQdGe3+ewHdZ4SZBjfAeaOWCn3hVWLqMtnI8WtiKfX23SqoscOa+S+kwE52r4A2PHLg/dAKN778y2ifcEsubR9RodouzJyMuDP9Vt6m3NOIYOg9YlmwH7WdyqU+r6kEitQjLiehTmIqejUlmEfGCHD2P6Bimnp+hxxRR1MFupXMQwLMjw3aWwsht64QCRtNw0mHv64lxEwaK6fDzYNlRFHF/agvo39NT/ISzm377qXzLBIBc89kQsUDdOA7Hms8mE4hqEGEtkaCQNas/5a3jsPyM5r1u3Basix0O3dHAY4x6uq6ticdXw+ybCh2KD5W2MlZXJHavrsmtI1RUXQxWRq1Xj+7JTjAovglRyryaJ9RIiBC0gZO8/eInoSawWPZGnaOg1Qa94F2nORWmuGddIaAbwK9nMGEq119T2L0tqoXHq/wA088HnCNM2cHRKe4oNfBmvq8qgvcdqfxvz3T6W0rzFD2YQJ4VDlypuR+ninR7oT37Mj2wuhngjev30qi26zYgIhqtjEc7+ZYEzsHm0K5u1K8s1F+w7OH4h5ywzMMjpgXaPWCsWwPdWqnDYr318BbhgQiJwbQWiMQJHPKUoxWNfgiqoPTUExavRPn+vuSrKkbg7IbPsNMA3DfzT4ptkrFEDSJuz2lJuw9kNRA8e8WmjLippFRvNjh+ggM0BikNn2zHNqWVhmMDIr1IZBXFTPwvyi4/vG+CHJ24t2F26eKeaGikb4LC++D/EKrWqCnb2RVS5A1yz/yZuUXzTT/G6H81FSHDMcVy9ZP22KkaBf67gGUFFJCLeZJ3hyUaxG4kLhPquUY1KgdQlZtLKEWqJW622yQNsBKk/BtHTosNWLoGjYA3Jd95s1uH8miJHc2pOF9AQxAlq2RPL4X9uPJrAFxU87T0uEWDU+itkMG0fOdtTGU7AlgMTzhzusfiydkPIP5+uOgs9G4aIF6x/2RgkR0IpXqO4jIpCATskx4kQEd5XM6ArganbSlwVXKQnqNMvhiFJod+1IZIbW15OdjYrgUaSbvKWUNcBp7raPmbkueWUgjcABDCwLzCd0d9MIH6oaIVi53xXG8jFFg4mspWFlIqOi6pGr1Ekto36WtLVc52SOsdGXb1bseOqDKelEK5fglFs2FPmLhmhHGDZHP8LT2Tou56Ek6HsAmvC4BGqKIYgieohD2HIGkCpEj/Sp9YK8CGgBkhzkV5e8jmD3a+0DPfA0UBmP0mRoc7zuS+KtsQ4osgPEFvxRTW3wcK03vMQl3iXGyD6iui3WDZPHYCEjI6L8SKY7L/NY2orchDm8Hyu+MHbv+4II9kigJarcc+2AbxFsaGKWLt8QFBqvnPI13NMBFB4d7CqF9YgrLeSO/L4sj1MWOwhxvmb+Iq8UHdsnpDSNWcyg5X+4rVtu/BUSoAoM5HHxJ4ewGIVc/C/Jsv7R1k9TWjXIov0+zAqi3+6uihDI1oFIG0fGL/7lALT7uVMgIwzt+ndikUI3tK8yjrBAzJAMv+7t0sSpl7rAsDqILPn5cfHvL2ApAOwjrN7pKlDsx142JiqBE7wwL1GNQotS7I0mjUt6U8hYom+K22Z1XihxVBCpA4bOURZAVeWlQ/1z73gmWAUk+yUGNHBfCZvWMwDFw8GInlKFlJ4mIRx/J36zEyqEAlkLhThIf9d9LZApuMyORCOq8K9sbncWAgmDWKCqR3V+yfabtMuqbvJ9TG1vPd21InUUXcQ7VIlpzOZN9AHF/ELh7daih3ovpILkCA7cdycyxQjADMYzeN2IOG1UICBb4UpPG7ZbBhjAiKQ0YRaUZ4oL1aFJxHa1pfVRZ/38WwX5WjYBSBEQJtidVXWnXjXJM5ZsWI29h7nktgCySwCaDfqpHh3Bbum73TPcvHF9ukFMUTdI3WaYlP+Twzvvgrc8d20sa9ZnB5W8vCnbPV2YbLNcjHsjqHHGpiXKInPSZhiQi2l2UWklmK5cKAhMVL6aHrvbpm2hSEUkQSShYRGi1ZtA2RodPRsGbQxPBoY6dz5WCLFKBhl0WTsbRG6K1jXggvWGgGmCdz\"\n  rebuild \"\"\n  \"PosToNor_deep threshold\" {{parent.depth_threshold}}\n  protectKernelWhenPublishing true\n  rebuild_finalise \"\"\n  name BS_PosToNor\n  xpos 404\n  ypos 330\n }\n Expression {\n  expr0 \"isnan(r) || isinf(r) ? 0 : r\"\n  expr1 \"isnan(g) || isinf(g) ? 0 : g\"\n  expr2 \"isnan(b) || isinf(b) ? 0 : b\"\n  name Expression1\n  label \"remove nan&inf\"\n  xpos 404\n  ypos 436\n }\n ColorMatrix {\n  matrix {\n      {{fb_data.world_matrix.0} {fb_data.world_matrix.1} {fb_data.world_matrix.2}}\n      {{fb_data.world_matrix.4} {fb_data.world_matrix.5} {fb_data.world_matrix.6}}\n      {{fb_data.world_matrix.8} {fb_data.world_matrix.9} {fb_data.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix4\n  label \"apply camera window\"\n  xpos 404\n  ypos 619\n }\n Dot {\n  name Dot4\n  xpos 438\n  ypos 703\n }\nset Nca0cc800 [stack 0]\n Dot {\n  name Dot1\n  xpos 575\n  ypos 796\n }\npush $Nca0cc800\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  name ColorMatrix3\n  label \"normal (world)\"\n  xpos 404\n  ypos 777\n }\n Switch {\n  inputs 2\n  which {{parent.nor_space}}\n  name Switch2\n  xpos 404\n  ypos 871\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name Switch3\n  xpos 404\n  ypos 1069\n }\n Output {\n  name Output1\n  xpos 404\n  ypos 1285\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\ncamKnobs = \\['set_link','remove_link','bake_link','copy_data','cam_data_grp','cam_winroll','world_matrix','endGroup_1']\\nif thisGRP\\['pos_space'].value() == 'camera' and thisGRP\\['nor_space'].value() == 'camera' :\\n    for knob in camKnobs :\\n        thisGRP\\[knob].setEnabled(False)\\nelse :\\n    for knob in camKnobs :\\n        thisGRP\\[knob].setEnabled(True)\\n\"\n  xpos -410\n  ypos -366\n  addUserKnob {20 User}\n  addUserKnob {4 pos_space l \"position space\" M {world camera}}\n  addUserKnob {4 nor_space l \"normal space\" M {world camera}}\n  nor_space camera\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {parent.cam_winroll}}\n  name fb_data\n  xpos -438\n  ypos 50\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name cam_data\n  xpos -329\n  ypos 50\n }\n NoOp {\n  inputs 0\n  name global\n  xpos -449\n  ypos -49\n  addUserKnob {20 User}\n  addUserKnob {12 res}\n  res {{\"\\[exists parent.input0] ? parent.input0.width : width\"} {\"\\[exists parent.input0] ? parent.input0.height : height\"}}\n  addUserKnob {7 pxa}\n  pxa {{\"\\[exists parent.input0] ? parent.input0.pixel_aspect : pixel_aspect\"}}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_haperture / cam_focal\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P2Z.gizmo",
    "content": "Group {\n name P2Z\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x7f0072ff\n label \"output : depth\"\n addUserKnob {20 general l General}\n addUserKnob {26 title_in l <b>INPUT</b>}\n addUserKnob {4 pos_space l \"position space\" M {world camera}}\n addUserKnob {26 title_out l <b>OUTPUT</b>}\n addUserKnob {6 depth_invert l \"depth (1/z)\" +STARTLINE}\n depth_invert true\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {20 CamTabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_cam_setup l \"Camera Setup\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"All the process calculated in camera space. So when doing any convertion, it required the camera data. Unless input data 'space' is camera.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture, filmback window and world matrix from selected camera.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll',\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 CamTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {2 font}\n font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n addUserKnob {6 disable_error l \"disable onscreen message\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;a&nbsp;package&nbsp;convert&nbsp;3D&nbsp;tech&nbsp;passes<br>&nbsp;&nbsp;included<br>&nbsp;&nbsp;*&nbsp;P2Z&nbsp;(&nbsp;Position&nbsp;To&nbsp;Depth&nbsp;)<br>&nbsp;&nbsp;*&nbsp;P2N&nbsp;(&nbsp;Position&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2P&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Position&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2N&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;ConvertPNZ&nbsp;(&nbsp;self&nbsp;convertion&nbsp;)<br>-&nbsp;fixed&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;issue<br><br>1.2<br>-&nbsp;changed&nbsp;camera&nbsp;input&nbsp;to&nbsp;expression&nbsp;link<br>-&nbsp;fix&nbsp;alpha&nbsp;check<br>-&nbsp;added&nbsp;support&nbsp;camera&nbsp;window&nbsp;roll<br><br>1.0<br>-&nbsp;Convert&nbsp;Position&nbsp;data&nbsp;to&nbsp;Normal\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label bin\n  note_font_size 42\n  xpos -146\n  ypos -417\n  bdwidth 272\n  bdheight 503\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  name Reformat1\n  xpos 755\n  ypos 434\n }\n Text {\n  message \"missing position pass\"\n  font \"\\[value parent.font]\"\n  size {{global.res.x/15}}\n  xjustify center\n  yjustify center\n  Transform 1\n  box {0 0 {global.res.x} {global.res.y}}\n  center {640 360}\n  name Text1\n  xpos 755\n  ypos 516\n  disable {{parent.disable_error}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  black_outside true\n  name Reformat2\n  xpos 755\n  ypos 598\n }\n Dot {\n  name Dot5\n  xpos 789\n  ypos 680\n }\n Input {\n  inputs 0\n  name position\n  xpos 404\n  ypos -534\n }\n Expression {\n  temp_name0 detectA\n  temp_expr0 \"red == 0 && green == 0 && blue == 0 ? 0 : 1\"\n  expr3 detectA\n  name Expression3\n  label \"non-filtered alpha\"\n  xpos 404\n  ypos -427\n }\n Dot {\n  name Dot8\n  xpos 438\n  ypos -344\n }\nset Nca141400 [stack 0]\n Dot {\n  name Dot6\n  xpos 665\n  ypos -344\n }\n Expression {\n  expr0 blue\n  expr1 blue\n  expr2 blue\n  name Expression5\n  label \"depth from position (cam)\"\n  xpos 631\n  ypos -270\n }\n Dot {\n  name Dot3\n  xpos 665\n  ypos 135\n }\npush $Nca141400\n Add {\n  channels rgb\n  value {{-parent.world_matrix.3} {-parent.world_matrix.7} {-parent.world_matrix.11} 0}\n  name Add2\n  label \"invert translation\"\n  xpos 404\n  ypos -270\n  bookmark true\n }\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix2\n  label \"invert transformation\"\n  xpos 404\n  ypos -164\n }\n Expression {\n  temp_name0 newR\n  temp_expr0 \"( red - ( global.hratio * abs( blue ) * parent.cam_win_translate.u / 2 ) ) * 1 / parent.cam_win_scale.u\"\n  temp_name1 newG\n  temp_expr1 \"( green - ( global.hratio * abs( blue ) * parent.cam_win_translate.v /2 ) ) * 1 / parent.cam_win_scale.v\"\n  expr0 \"newR * fb_data.world_matrix.0 + newG * fb_data.world_matrix.1\"\n  expr1 \"newR * fb_data.world_matrix.4 + newG * fb_data.world_matrix.5\"\n  name Expression4\n  label \"invert camera window\"\n  xpos 404\n  ypos -54\n }\n Expression {\n  expr0 \"abs( blue )\"\n  expr1 \"abs( blue )\"\n  expr2 \"abs( blue )\"\n  name Expression7\n  label \"keep Z\"\n  selected true\n  xpos 404\n  ypos 40\n }\n Switch {\n  inputs 2\n  which {{parent.pos_space}}\n  name Switch6\n  xpos 404\n  ypos 218\n }\n Dot {\n  name Dot2\n  xpos 438\n  ypos 324\n }\nset Nca16f000 [stack 0]\n Expression {\n  expr0 1/red\n  expr1 1/green\n  expr2 1/blue\n  name Expression6\n  label \"depth invert\"\n  xpos 521\n  ypos 371\n }\npush $Nca16f000\n Switch {\n  inputs 2\n  which {{depth_invert}}\n  name Switch1\n  xpos 404\n  ypos 432\n }\n Expression {\n  expr0 \"isnan(r) || isinf(r) ? 0 : r\"\n  expr1 \"isnan(g) || isinf(g) ? 0 : g\"\n  expr2 \"isnan(b) || isinf(b) ? 0 : b\"\n  name Expression2\n  label \"remove nan&inf\"\n  xpos 404\n  ypos 514\n }\n Expression {\n  expr0 \"red * alpha\"\n  expr1 \"green * alpha\"\n  expr2 \"blue * alpha\"\n  expr3 0\n  name Expression1\n  label \"premult non-filter alpha\"\n  xpos 404\n  ypos 608\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name Switch3\n  xpos 404\n  ypos 770\n }\n Output {\n  name Output1\n  xpos 404\n  ypos 897\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -104\n  ypos -79\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path fb_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {parent.cam_winroll}}\n  name fb_data\n  xpos -90\n  ypos -194\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name cam_data\n  xpos 13\n  ypos -195\n }\n NoOp {\n  inputs 0\n  name global\n  xpos -107\n  ypos -295\n  addUserKnob {20 User}\n  addUserKnob {12 res}\n  res {{\"\\[exists parent.input0] ? parent.input0.width : width\"} {\"\\[exists parent.input0] ? parent.input0.height : height\"}}\n  addUserKnob {7 pxa}\n  pxa {{\"\\[exists parent.input0] ? parent.input0.pixel_aspect : pixel_aspect\"}}\n  addUserKnob {7 hratio}\n  hratio {{\"parent.cam_haperture / parent.cam_focal\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P_Noise_Advanced.gizmo",
    "content": "Group {\n name P_Noise_Advanced\n knobChanged \"\\nn = nuke.thisNode()\\ntype = n\\['noisetype'].value()\\nblock = n\\['Trunc'].getValue()\\nVis = \\[]\\nHide = \\[]\\nif type in ('fBm', 'turbulent'):\\n    Vis.extend(\\['octaves', 'lacunarity', 'gain', 'gamma'])\\n    Hide.extend(\\['rays', 'range', 'invert', 'ringsSeed', 'raysSeed', 'gammaNormalize'])   \\nelif type == 'p_rings':\\n    Vis.extend(\\['ringsSeed', 'gammaNormalize'])\\n    Hide.extend(\\['rays', 'range', 'invert', 'octaves', 'lacunarity', 'gain', 'gamma', 'raysSeed'])\\nelif type == 'p_rays':\\n    Vis.extend(\\['rays', 'raysSeed', 'gammaNormalize'])\\n    Hide.extend(\\['range', 'invert', 'octaves', 'lacunarity', 'gain', 'gamma', 'ringsSeed'])\\nelif type in ('Euclidian', 'Voronoi', 'Manhattan', 'ChebyShev'):\\n    Vis.extend(\\['range', 'gammaNormalize'])\\n    Hide.extend(\\['rays', 'invert', 'octaves', 'lacunarity', 'gain', 'gamma', 'ringsSeed', 'raysSeed'])\\nelif type == 'Worley':\\n    Vis.extend(\\['invert', 'gammaNormalize'])\\n    Hide.extend(\\['rays', 'range', 'octaves', 'lacunarity', 'gain', 'gamma', 'ringsSeed', 'raysSeed'])\\nfor r in Vis: n\\[r].setVisible(True)\\nfor x in Hide: n\\[x].setVisible(False)\\n\\nif block == True:\\n    n\\['truncSize'].setVisible(True)\\nelse:\\n    n\\['truncSize'].setVisible(False)\\n\"\n label \"(\\[value in])\"\n selected true\n xpos 598\n ypos 235\n addUserKnob {20 User}\n addUserKnob {41 in l \"position data\" T Shuffle_Input_Channels.in}\n addUserKnob {6 unpremultiply +STARTLINE}\n addUserKnob {6 useAlpha l \"ignore outside alpha\" -STARTLINE}\n addUserKnob {6 useGPU l \"use GPU if available\" -STARTLINE}\n useGPU true\n addUserKnob {26 \"\"}\n addUserKnob {4 noisetype M {fBm turbulent p_rings p_rays Euclidian Voronoi Manhattan Chebyslev Worley \"\" \"\" \"\"}}\n addUserKnob {6 Trunc l \"blocky (trunc)\" -STARTLINE}\n addUserKnob {41 Position2d T SampleXY.Position2d}\n addUserKnob {41 rgbSample l center T Sample.rgbSample}\n addUserKnob {6 useCenter -STARTLINE}\n useCenter true\n addUserKnob {26 \"\"}\n addUserKnob {18 size R 1 100}\n size 10\n addUserKnob {6 size_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 seed}\n seed {0 0 0}\n addUserKnob {6 seed_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 truncSize l \"blocky size\" +HIDDEN R 0 2}\n truncSize 0.5\n addUserKnob {6 truncSize_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 rays +HIDDEN}\n rays 30\n addUserKnob {7 raysSeed l \"rays seed\" +HIDDEN R 0 10}\n addUserKnob {7 ringsSeed l \"rings seed\" +HIDDEN R 0 10}\n addUserKnob {7 range +HIDDEN R 0 6}\n range 1\n addUserKnob {6 invert +HIDDEN +STARTLINE}\n addUserKnob {3 octaves}\n octaves 10\n addUserKnob {7 lacunarity R 1 10}\n lacunarity 2\n addUserKnob {7 gain R 0.1 1}\n gain 0.5\n addUserKnob {7 gamma}\n gamma 0.5\n addUserKnob {7 gammaNormalize l gamma +HIDDEN R 0 2}\n gammaNormalize 1\n addUserKnob {26 \"\"}\n addUserKnob {26 INFO l \"\" +STARTLINE T \"v1.02 (c) Riley Gray and Owen Bulka 2020\\nBased on \\\"Cell Noise v1.1\\\" by Matthew Shaw     \"}\n addUserKnob {26 c44_version_author l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>C44Kernel v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2018</span>\"}\n addUserKnob {20 Transform}\n addUserKnob {41 rot_order l \"rotation order\" T Axis1.rot_order}\n addUserKnob {41 translate T Axis1.translate}\n addUserKnob {41 rotate T Axis1.rotate}\n addUserKnob {41 scaling l scale T Axis1.scaling}\n addUserKnob {41 uniform_scale l \"uniform scale\" T Axis1.uniform_scale}\n addUserKnob {41 skew T Axis1.skew}\n addUserKnob {41 pivot T Axis1.pivot}\n}\n Input {\n  inputs 0\n  name img\n  xpos 0\n  ypos -116\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 0\n  ypos -64\n }\n Shuffle {\n  alpha blue\n  out rgb\n  name Shuffle_Input_Channels\n  xpos 0\n  ypos -18\n }\n Unpremult {\n  name Unpremult1\n  xpos 0\n  ypos 16\n  disable {{!parent.unpremultiply i}}\n }\n Dot {\n  name Dot2\n  xpos 34\n  ypos 66\n }\nset N92db82d0 [stack 0]\n Dot {\n  name Dot4\n  xpos -130\n  ypos 66\n }\nset N81ae9a60 [stack 0]\n Dot {\n  name Dot3\n  xpos -292\n  ypos 66\n }\n Expression {\n  channel0 alpha\n  expr0 \"a == 0 ? 1 :0\"\n  channel1 none\n  channel2 none\n  channel3 {none none none -rgba.alpha}\n  name Expression1\n  xpos -326\n  ypos 751\n }\n Axis2 {\n  inputs 0\n  name Axis1\n  xpos 265\n  ypos 200\n }\npush $N92db82d0\n Add {\n  channels rgb\n  value {{parent.Sample.rgbSample/-1} {parent.Sample.rgbSample/-1} {parent.Sample.rgbSample/-1} 0}\n  name center\n  xpos 0\n  ypos 141\n  disable {{1-parent.useCenter}}\n }\n Group {\n  inputs 2\n  name C44Kernel\n  help \"C44Kernel v1.0 by Adrian Pueyo\\n\\nMultiply the rgb or rgba colors by an arbitrary 4x4 Matrix. Useful for transforming a Position pass.\\n\\nYou can plug in an Axis or Camera node into the axis input, to also apply its transformations.\\n\\nadrianpueyo.com, 2017\"\n  tile_color 0xe88543ff\n  xpos 0\n  ypos 221\n  lock_connections true\n  addUserKnob {20 C44Kernel}\n  addUserKnob {41 channels T MergeIn.Achannels}\n  addUserKnob {41 matrix T Axis1.matrix}\n  addUserKnob {6 invert -STARTLINE}\n  addUserKnob {6 alpha_masking l \"alpha masking\" t \"Apply only where rgba.alpha>0\" +STARTLINE}\n  addUserKnob {20 advanced l Advanced n 1}\n  advanced 0\n  addUserKnob {6 transpose +STARTLINE}\n  addUserKnob {6 w_divide +STARTLINE}\n  addUserKnob {6 rgba_mode l \"apply on Vector4\" t \"Usually you'll want to apply the matrix on the RGB only, which uses a white alpha. Enable this to use the full Vector4 (RGBA).\" +STARTLINE}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 mix T MergeOut.mix}\n  addUserKnob {26 version_author l \"\" t \"C44Kernel v1.0\\n23 June, 2018\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>C44Kernel v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2018</span>\"}\n  addUserKnob {20 GPU_Settings l \"GPU Settings\"}\n }\n  Input {\n   inputs 0\n   name Inputaxis\n   xpos 133\n   ypos -181\n   number 1\n  }\n  Axis2 {\n   useMatrix true\n   name Axis1\n   xpos 143\n   ypos -133\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -110\n   ypos -192\n  }\nset N87975480 [stack 0]\n  Dot {\n   name Dot1\n   xpos -76\n   ypos -161\n  }\nset N87971510 [stack 0]\n  Expression {\n   expr3 a>0\n   name ExpressionA\n   xpos -220\n   ypos -164\n  }\n  Switch {\n   which {{!parent.alpha_masking}}\n   name SwitchMasking\n   xpos -220\n   ypos -112\n  }\npush $N87971510\npush $N87975480\n  Remove {\n   name RemoveAll\n   xpos 34\n   ypos -196\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   Bchannels none\n   name MergeIn\n   xpos 34\n   ypos -164\n  }\n  Shuffle {\n   alpha white\n   name ShuffleWhiteA\n   xpos 34\n   ypos -140\n   disable {{parent.rgba_mode}}\n  }\n  BlinkScript {\n   recompileCount 147\n   ProgramGroup 1\n   KernelDescription \"2 \\\"C44MatrixKernel\\\" iterate pixelWise 10f1841ce0aee43165aca4445fb9ce0126826eedd71da6339f12b8f8de8e52eb 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 4 \\\"m\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"invert\\\" Int 1 AAAAAA== \\\"transpose\\\" Int 1 AAAAAA== \\\"w_divide\\\" Int 1 AAAAAA== 4 \\\"m\\\" 16 1 \\\"invert\\\" 1 1 \\\"transpose\\\" 1 1 \\\"w_divide\\\" 1 1 0\"\n   kernelSource \"kernel C44MatrixKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float4x4 m;\\n    int invert;\\n    int transpose;\\n    int w_divide;\\n\\n  void process(int2 pos) \\{\\n    SampleType(src) p = src();\\n    float4 result = 1.0f;\\n    float4x4 mi = m;\\n    mi = invert?mi.invert():mi;\\n    mi = transpose?mi.transpose():mi;\\n    for(int c = 0; c<dst.kComps; c++)\\{\\n      result\\[c] = mi\\[c]\\[0]*p.x + mi\\[c]\\[1]*p.y + mi\\[c]\\[2]*p.z + mi\\[c]\\[3]*p.w;\\n    \\}\\n    dst() = w_divide?result/result.w:result;\\n  \\}\\n\\};\\n\"\n   rebuild \"\"\n   C44MatrixKernel_m {\n       {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n       {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n       {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n       {{Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix} {Axis1.world_matrix}}\n     }\n   C44MatrixKernel_invert {{parent.invert}}\n   C44MatrixKernel_transpose {{parent.transpose}}\n   C44MatrixKernel_w_divide {{parent.w_divide}}\n   rebuild_finalise \"\"\n   name C44MatrixKernel\n   xpos 34\n   ypos -116\n  }\npush $N87971510\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Bchannels {{{parent.MergeIn.Achannels}}}\n   output {{{parent.MergeIn.Achannels}}}\n   name MergeOut\n   xpos -110\n   ypos -112\n  }\n  Output {\n   name Output1\n   xpos -110\n   ypos -88\n  }\n end_group\n Add {\n  channels rgb\n  value {{parent.seed} {parent.seed} {parent.seed} {parent.seed}}\n  name Seed\n  xpos 0\n  ypos 279\n }\n Multiply {\n  channels rgb\n  value {{10/parent.size} {10/parent.size} {10/parent.size} {10/parent.size}}\n  name size\n  xpos 0\n  ypos 327\n }\n Expression {\n  expr0 trunc(r*truncScale.r)/truncScale.r/.95\n  expr1 trunc(g*truncScale.g)/truncScale.g/.95\n  expr2 trunc(b*truncScale.b)/truncScale.b/.95\n  name Trunc\n  xpos 0\n  ypos 391\n  disable {{1-parent.Trunc}}\n  addUserKnob {20 User}\n  addUserKnob {18 truncScale R 0.1 10}\n  truncScale {{1/parent.truncSize} {1/parent.truncSize} {1/parent.truncSize}}\n }\n Dot {\n  name Dot1\n  xpos 34\n  ypos 469\n }\nset N81e232f0 [stack 0]\n BlinkScript {\n  recompileCount 5\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Worley\\\" iterate pixelWise 438e1f780c47470c5df359606fb43213aedb3c954840151838b0bafe69a5cec8 2 \\\"position_pass\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Invert\\\" Bool 1 AA== 1 \\\"invert\\\" 1 1 0\"\n  kernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n// C++11\\nconst uint rand_multiplier = 48271;\\nconst uint rand_increment  = 0;\\nconst uint rand_modulus    = 2147483647;\\n\\nstatic int lcgRandom(int seed)\\n\\{\\n  return abs((seed * rand_multiplier + rand_increment) % rand_modulus);\\n\\}\\n\\n// FNV Hash\\nconst uint OFFSET_BASIS = 2166136261;\\nconst uint FNV_PRIME = 16777619;\\n\\nstatic uint hash(uint i, uint j, uint k)\\n\\{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n\\}\\n\\n// Poisson Distribution\\nconst uint one   =  393325350;\\nconst uint two   = 1022645910;\\nconst uint three = 1861739990;\\nconst uint four  = 2700834071;\\nconst uint five  = 3372109335;\\nconst uint six   = 3819626178;\\nconst uint seven = 4075350088;\\nconst uint eight = 4203212043;\\n\\nstatic uint probLookup(uint value)\\n\\{\\n  if (value < one) return 1;\\n  if (value < two) return 2;\\n  if (value < three) return 3;\\n  if (value < four) return 4;\\n  if (value < five) return 5;\\n  if (value < six) return 6;\\n  if (value < seven) return 7;\\n  if (value < eight) return 8;\\n  return 9;\\n\\}\\n\\n// Distance Functions\\nstatic float EuclidianDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z);\\n\\}\\n\\nstatic float ManhattanDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  return fabs(p1.x - p2.x) + fabs(p1.y - p2.y) + fabs(p1.z - p2.z);\\n\\}\\n\\nstatic float ChebyshevDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  float3 diff = p1 - p2;\\n  return max(max(fabs(diff.x), fabs(diff.y)), fabs(diff.z));\\n\\}\\n\\n\\n// Blink Kernel\\nkernel Worley : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint> position_pass;\\n  Image<eWrite> dst;\\n\\n  param:\\n    bool invert;\\n\\n  void define()\\n  \\{\\n    defineParam(invert, \\\"Invert\\\", false);\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float distance = 6666.0f;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float4 position = position_pass();\\n    float3 input = float3(position.x, position.y, position.z);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    \\{\\n      for (int j = -1; j < 2; ++j)\\n      \\{\\n        for (int k = -1; k < 2; ++k)\\n        \\{\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            \\{\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / rand_modulus;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              distance = min(distance, dot(input - featurePoint, input - featurePoint));\\n            \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    distance = sqrt(distance);\\n    if (invert)\\n      distance = 1.0f - distance;\\n    dst() = distance;\\n\\n  \\}\\n\\n\\};\"\n  useGPUIfAvailable {{parent.useGPU}}\n  rebuild \"\"\n  Worley_Invert {{parent.invert}}\n  rebuild_finalise \"\"\n  name WorleyNoise\n  xpos 990\n  ypos 579\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma2\n  xpos 990\n  ypos 615\n }\npush $N81e232f0\n BlinkScript {\n  recompileCount 4\n  ProgramGroup 1\n  KernelDescription \"2 \\\"ChebyshevNoise\\\" iterate pixelWise 517a1358a56b1248ee4a1cc426f04457776dbd1836be53c12b3ff4f236c7ecd9 2 \\\"position_pass\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Range\\\" Float 1 AABAQA== 1 \\\"range\\\" 1 1 2 \\\"fRange\\\" Float 1 1 AAAAAA== \\\"iRange\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11\\nconst uint rand_multiplier = 48271;\\nconst uint rand_increment  = 0;\\nconst uint rand_modulus    = 2147483647;\\n\\nstatic int lcgRandom(int seed)\\n\\{\\n  return abs((seed * rand_multiplier + rand_increment) % rand_modulus);\\n\\}\\n\\n// FNV Hash\\nconst uint OFFSET_BASIS = 2166136261;\\nconst uint FNV_PRIME = 16777619;\\n\\nstatic uint hash(uint i, uint j, uint k)\\n\\{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n\\}\\n\\n// Poisson Distribution\\nconst uint one   =  393325350;\\nconst uint two   = 1022645910;\\nconst uint three = 1861739990;\\nconst uint four  = 2700834071;\\nconst uint five  = 3372109335;\\nconst uint six   = 3819626178;\\nconst uint seven = 4075350088;\\nconst uint eight = 4203212043;\\n\\nstatic uint probLookup(uint value)\\n\\{\\n  if (value < one) return 1;\\n  if (value < two) return 2;\\n  if (value < three) return 3;\\n  if (value < four) return 4;\\n  if (value < five) return 5;\\n  if (value < six) return 6;\\n  if (value < seven) return 7;\\n  if (value < eight) return 8;\\n  return 9;\\n\\}\\n\\n// Distance Function\\nstatic float ChebyshevDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  float3 diff = p1 - p2;\\n  return max(max(fabs(diff.x), fabs(diff.y)), fabs(diff.z));\\n\\}\\n\\n// Insertion Array\\nstatic void insert(float arr\\[], float value)\\n\\{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  \\{\\n    if (value > arr\\[i])\\n      break;\\n    temp = arr\\[i];\\n    arr\\[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    \\{\\n      arr\\[i + 1] = temp;\\n    \\}\\n  \\}\\n\\}\\n\\n\\n// Blink Kernel\\nkernel ChebyshevNoise : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint> position_pass;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n\\n  void define()\\n  \\{\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n  \\}\\n\\n  void init()\\n  \\{\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray\\[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray\\[i] = 6666;\\n\\n    float4 position = position_pass();\\n    float3 input = float3(position.x, position.y, position.z);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    \\{\\n      for (int j = -1; j < 2; ++j)\\n      \\{\\n        for (int k = -1; k < 2; ++k)\\n        \\{\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            \\{\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / rand_modulus;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, ChebyshevDistanceFunc(input, featurePoint));\\n            \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    float color = (distanceArray\\[ iRange + 2 ] - distanceArray\\[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray\\[ iRange + 1] - distanceArray\\[0];\\n    dst() = color;\\n\\n  \\}\\n\\n\\};\"\n  useGPUIfAvailable {{parent.useGPU}}\n  rebuild \"\"\n  ChebyshevNoise_Range 1\n  format {{{WorleyNoise.format}}}\n  rebuild_finalise \"\"\n  name ChebyShevNoise\n  xpos 880\n  ypos 578\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma3\n  xpos 880\n  ypos 614\n }\npush $N81e232f0\n BlinkScript {\n  recompileCount 15\n  ProgramGroup 1\n  KernelDescription \"2 \\\"ManhattanNoise\\\" iterate pixelWise 8f4d3375bd506ca9e28dc8e57d643af6a2e1e4628d082801994f4dfea81563d1 2 \\\"position_pass\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Range\\\" Float 1 AABAQA== 1 \\\"range\\\" 1 1 2 \\\"fRange\\\" Float 1 1 AAAAAA== \\\"iRange\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11\\nconst uint rand_multiplier = 48271;\\nconst uint rand_increment  = 0;\\nconst uint rand_modulus    = 2147483647;\\n\\nstatic int lcgRandom(int seed)\\n\\{\\n  return abs((seed * rand_multiplier + rand_increment) % rand_modulus);\\n\\}\\n\\n// FNV Hash\\nconst uint OFFSET_BASIS = 2166136261;\\nconst uint FNV_PRIME = 16777619;\\n\\nstatic uint hash(uint i, uint j, uint k)\\n\\{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n\\}\\n\\n// Poisson Distribution\\nconst uint one   =  393325350;\\nconst uint two   = 1022645910;\\nconst uint three = 1861739990;\\nconst uint four  = 2700834071;\\nconst uint five  = 3372109335;\\nconst uint six   = 3819626178;\\nconst uint seven = 4075350088;\\nconst uint eight = 4203212043;\\n\\nstatic uint probLookup(uint value)\\n\\{\\n  if (value < one) return 1;\\n  if (value < two) return 2;\\n  if (value < three) return 3;\\n  if (value < four) return 4;\\n  if (value < five) return 5;\\n  if (value < six) return 6;\\n  if (value < seven) return 7;\\n  if (value < eight) return 8;\\n  return 9;\\n\\}\\n\\n// Distance Function\\nstatic float ManhattanDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  return fabs(p1.x - p2.x) + fabs(p1.y - p2.y) + fabs(p1.z - p2.z);\\n\\}\\n\\n// Insertion Array\\nstatic void insert(float arr\\[], float value)\\n\\{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  \\{\\n    if (value > arr\\[i])\\n      break;\\n    temp = arr\\[i];\\n    arr\\[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    \\{\\n      arr\\[i + 1] = temp;\\n    \\}\\n  \\}\\n\\}\\n\\n// Blink Kernel\\nkernel ManhattanNoise : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint> position_pass;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n\\n  void define()\\n  \\{\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n  \\}\\n\\n  void init()\\n  \\{\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray\\[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray\\[i] = 6666;\\n\\n    float4 position = position_pass();\\n    float3 input = float3(position.x, position.y, position.z);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    \\{\\n      for (int j = -1; j < 2; ++j)\\n      \\{\\n        for (int k = -1; k < 2; ++k)\\n        \\{\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            \\{\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / rand_modulus;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, ManhattanDistanceFunc(input, featurePoint));\\n            \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    float color = (distanceArray\\[ iRange + 2 ] - distanceArray\\[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray\\[ iRange + 1] - distanceArray\\[0];\\n    dst() = color;\\n\\n  \\}\\n\\n\\};\"\n  useGPUIfAvailable {{parent.useGPU}}\n  rebuild \"\"\n  ManhattanNoise_Range 1\n  format {{{WorleyNoise.format}}}\n  rebuild_finalise \"\"\n  name ManhattanNoise\n  xpos 770\n  ypos 577\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma4\n  xpos 770\n  ypos 613\n }\npush $N81e232f0\n BlinkScript {\n  recompileCount 15\n  ProgramGroup 1\n  KernelDescription \"2 \\\"VoronoiNoise\\\" iterate pixelWise 67095f19952c7fb522e989b2d6691d9d342affbd2c266bc258f83435f13f21f7 2 \\\"position_pass\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Range\\\" Float 1 AABAQA== 1 \\\"range\\\" 1 1 2 \\\"fRange\\\" Float 1 1 AAAAAA== \\\"iRange\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11\\nconst uint rand_multiplier = 48271;\\nconst uint rand_increment  = 0;\\nconst uint rand_modulus    = 2147483647;\\n\\nstatic int lcgRandom(int seed)\\n\\{\\n  return abs((seed * rand_multiplier + rand_increment) % rand_modulus);\\n\\}\\n\\n// FNV Hash\\nconst uint OFFSET_BASIS = 2166136261;\\nconst uint FNV_PRIME = 16777619;\\n\\nstatic uint hash(uint i, uint j, uint k)\\n\\{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n\\}\\n\\n// Poisson Distribution\\nconst uint one   =  393325350;\\nconst uint two   = 1022645910;\\nconst uint three = 1861739990;\\nconst uint four  = 2700834071;\\nconst uint five  = 3372109335;\\nconst uint six   = 3819626178;\\nconst uint seven = 4075350088;\\nconst uint eight = 4203212043;\\n\\nstatic uint probLookup(uint value)\\n\\{\\n  if (value < one) return 1;\\n  if (value < two) return 2;\\n  if (value < three) return 3;\\n  if (value < four) return 4;\\n  if (value < five) return 5;\\n  if (value < six) return 6;\\n  if (value < seven) return 7;\\n  if (value < eight) return 8;\\n  return 9;\\n\\}\\n\\n// Insertion Array\\nstatic void insert(float arr\\[], int idArr\\[], float value, int id)\\n\\{\\n  float temp;\\n  int tempID;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  \\{\\n    if (value > arr\\[i])\\n      break;\\n    temp = arr\\[i];\\n    tempID = idArr\\[i];\\n    arr\\[i] = value;\\n    idArr\\[i] = id;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    \\{\\n      arr\\[i + 1] = temp;\\n      idArr\\[i + 1] = tempID;\\n    \\}\\n  \\}\\n\\}\\n\\n\\n// Blink Kernel\\nkernel VoronoiNoise : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint> position_pass;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n    \\n  local:\\n    float fRange;\\n    int iRange;\\n\\n  void define()\\n  \\{\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n  \\}\\n\\n  void init()\\n  \\{\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    //Declare some values for later use\\n    int lastRandom, id, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray\\[MAX_DISTANCE_ARRAY];\\n    int idArray\\[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray\\[i] = 6666;\\n\\n    float4 position = position_pass();\\n    float3 input = float3(position.x, position.y, position.z);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    \\{\\n      for (int j = -1; j < 2; ++j)\\n      \\{\\n        for (int k = -1; k < 2; ++k)\\n        \\{\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            id = lastRandom;\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            \\{\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / rand_modulus;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, idArray, length(input - featurePoint), id+l);\\n            \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n    float3 col = float3(float(idArray\\[iRange]) / rand_modulus, 0.0f, 0.0f);\\n    lastRandom = lcgRandom(idArray\\[iRange]);\\n    col.y = float(lastRandom) / rand_modulus;\\n    lastRandom = lcgRandom(lastRandom);\\n    col.z = float(lastRandom) / rand_modulus;\\n\\n    for(int component = 0; component < 3; component++)\\n      dst(component) = col\\[component];\\n    dst(3) = 1.0f;\\n  \\}\\n\\n\\};\"\n  useGPUIfAvailable {{parent.useGPU}}\n  rebuild \"\"\n  VoronoiNoise_Range 1\n  format {{{WorleyNoise.format}}}\n  rebuild_finalise \"\"\n  name VoronoiNoise\n  xpos 658\n  ypos 579\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma5\n  xpos 658\n  ypos 615\n }\npush $N81e232f0\n BlinkScript {\n  recompileCount 3\n  ProgramGroup 1\n  KernelDescription \"2 \\\"EuclidianNoise\\\" iterate pixelWise b78f7b94022701a0fe7a0b3d8a219cf673ea1032aea12739f59fb3562a78ed42 2 \\\"position_pass\\\" Read Point \\\"dst\\\" Write Point 1 \\\"Range\\\" Float 1 AABAQA== 1 \\\"range\\\" 1 1 2 \\\"fRange\\\" Float 1 1 AAAAAA== \\\"iRange\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"// https://aftbit.com/cell-noise-2/\\n\\n# define MAX_DISTANCE_ARRAY 12\\n\\n// C++11\\nconst uint rand_multiplier = 48271;\\nconst uint rand_increment  = 0;\\nconst uint rand_modulus    = 2147483647;\\n\\nstatic int lcgRandom(int seed)\\n\\{\\n  return abs((seed * rand_multiplier + rand_increment) % rand_modulus);\\n\\}\\n\\n// FNV Hash\\nconst uint OFFSET_BASIS = 2166136261;\\nconst uint FNV_PRIME = 16777619;\\n\\nstatic uint hash(uint i, uint j, uint k)\\n\\{\\n  return ((((((OFFSET_BASIS ^ i) * FNV_PRIME) ^ j) * FNV_PRIME) ^ k) * FNV_PRIME);\\n\\}\\n\\n// Poisson Distribution\\nconst uint one   =  393325350;\\nconst uint two   = 1022645910;\\nconst uint three = 1861739990;\\nconst uint four  = 2700834071;\\nconst uint five  = 3372109335;\\nconst uint six   = 3819626178;\\nconst uint seven = 4075350088;\\nconst uint eight = 4203212043;\\n\\nstatic uint probLookup(uint value)\\n\\{\\n  if (value < one) return 1;\\n  if (value < two) return 2;\\n  if (value < three) return 3;\\n  if (value < four) return 4;\\n  if (value < five) return 5;\\n  if (value < six) return 6;\\n  if (value < seven) return 7;\\n  if (value < eight) return 8;\\n  return 9;\\n\\}\\n\\n// Distance Functions\\nstatic float EuclidianDistanceFunc(float3 p1, float3 p2)\\n\\{\\n  return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z);\\n\\}\\n\\n\\n// Insertion Array\\nstatic void insert(float arr\\[], float value)\\n\\{\\n  float temp;\\n  for (int i = MAX_DISTANCE_ARRAY - 1; i >= 0; i--)\\n  \\{\\n    if (value > arr\\[i])\\n      break;\\n    temp = arr\\[i];\\n    arr\\[i] = value;\\n    if (i + 1 < MAX_DISTANCE_ARRAY)\\n    \\{\\n      arr\\[i + 1] = temp;\\n    \\}\\n  \\}\\n\\}\\n\\n\\n// Blink Kernel\\nkernel EuclidianNoise : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint> position_pass;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float range;\\n\\n  local:\\n    float fRange;\\n    int iRange;\\n\\n  void define()\\n  \\{\\n    defineParam(range, \\\"Range\\\", 3.0f);\\n  \\}\\n\\n  void init()\\n  \\{\\n    fRange = clamp(range, 0.0f, float(MAX_DISTANCE_ARRAY - 2));\\n    iRange = int(fRange);\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    //Declare some values for later use\\n    int lastRandom, numberFeaturePoints;\\n    float3 randomDiff, featurePoint;\\n    int cubeX, cubeY, cubeZ;\\n\\n    float distanceArray\\[MAX_DISTANCE_ARRAY];\\n\\n    // Initialize values in distance array to large values\\n    for (int i = 0; i < MAX_DISTANCE_ARRAY; i++)\\n        distanceArray\\[i] = 6666;\\n\\n    float4 position = position_pass();\\n    float3 input = float3(position.x, position.y, position.z);\\n\\n    // Determine which cube the evaluation point is in\\n    int evalCubeX = floor(input.x);\\n    int evalCubeY = floor(input.y);\\n    int evalCubeZ = floor(input.z);\\n\\n    for (int i = -1; i < 2; ++i)\\n    \\{\\n      for (int j = -1; j < 2; ++j)\\n      \\{\\n        for (int k = -1; k < 2; ++k)\\n        \\{\\n            cubeX = evalCubeX + i;\\n            cubeY = evalCubeY + j;\\n            cubeZ = evalCubeZ + k;\\n\\n            // Generate a reproducible random number generator for the cube\\n            lastRandom = lcgRandom(hash(cubeX, cubeY, cubeZ));\\n            // Determine how many feature points are in the cube\\n            numberFeaturePoints = probLookup(lastRandom);\\n            // Check each feature point\\n            for (uint l = 0; l < numberFeaturePoints; ++l)\\n            \\{\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.x = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.y = float(lastRandom) / rand_modulus;\\n\\n              lastRandom = lcgRandom(lastRandom);\\n              randomDiff.z = float(lastRandom) / rand_modulus;\\n\\n              featurePoint = float3(randomDiff.x + float(cubeX), randomDiff.y + float(cubeY), randomDiff.z + float(cubeZ));\\n\\n              insert(distanceArray, EuclidianDistanceFunc(input, featurePoint));\\n            \\}\\n        \\}\\n      \\}\\n    \\}\\n\\n\\n    float color = (distanceArray\\[ iRange + 2 ] - distanceArray\\[ iRange + 1 ]) * fmod(fRange, 1.0f) + distanceArray\\[ iRange + 1] - distanceArray\\[0];\\n    dst() = color;\\n\\n  \\}\\n\\n\\};\"\n  useGPUIfAvailable {{parent.useGPU}}\n  rebuild \"\"\n  EuclidianNoise_Range 1\n  format {{{WorleyNoise.format}}}\n  rebuild_finalise \"\"\n  name EuclidianNoise\n  xpos 550\n  ypos 579\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma6\n  xpos 550\n  ypos 615\n }\npush $N81e232f0\n Expression {\n  channel0 rgba\n  expr0 \"sin( atan(r, g) *rays+rays_seed)\"\n  channel1 none\n  channel2 none\n  name rays\n  xpos 400\n  ypos 582\n  addUserKnob {20 User}\n  addUserKnob {7 rays}\n  rays {{parent.rays}}\n  addUserKnob {7 rays_seed l \"rays seed\"}\n  rays_seed {{parent.raysSeed}}\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma7\n  xpos 400\n  ypos 606\n }\npush $N81e232f0\n Expression {\n  channel0 rgba\n  expr0 \"sin(sqrt( r*r + g*g + b*b)+rings_seed)\"\n  channel1 none\n  channel2 none\n  name rings\n  xpos 259\n  ypos 581\n  addUserKnob {20 User}\n  addUserKnob {7 rings_seed l \"rings seed\"}\n  rings_seed {{parent.ringsSeed}}\n }\n Gamma {\n  channels rgba\n  value {{parent.gammaNormalize}}\n  name Gamma8\n  xpos 259\n  ypos 605\n }\npush $N81e232f0\n Expression {\n  channel0 rgba\n  expr0 \"pow(turbulence (r, g, b, octaves, lacunarity, gain), 1/gamma)\"\n  channel1 none\n  channel2 none\n  channel3 {none none none -rgba.alpha}\n  name Turb\n  xpos 128\n  ypos 579\n  addUserKnob {20 User}\n  addUserKnob {3 octaves}\n  octaves {{parent.octaves}}\n  addUserKnob {7 lacunarity R 1 10}\n  lacunarity {{parent.lacunarity}}\n  addUserKnob {7 gain R 0.1 1}\n  gain {{parent.gain}}\n  addUserKnob {7 gamma}\n  gamma {{parent.gamma}}\n }\npush $N81e232f0\n Expression {\n  channel0 rgba\n  expr0 \"pow((fBm (r, g, b, octaves, lacunarity, gain) +1)/2, 1/gamma)\"\n  channel1 none\n  channel2 none\n  channel3 {none none none -rgba.alpha}\n  name FBM\n  xpos 0\n  ypos 577\n  addUserKnob {20 User}\n  addUserKnob {3 octaves}\n  octaves {{parent.octaves}}\n  addUserKnob {7 lacunarity R 1 10}\n  lacunarity {{parent.lacunarity}}\n  addUserKnob {7 gain R 0.1 1}\n  gain {{parent.gain}}\n  addUserKnob {7 gamma}\n  gamma {{parent.gamma}}\n }\n Switch {\n  inputs 9\n  which {{noisetype}}\n  name Type\n  xpos 0\n  ypos 692\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply1\n  xpos 0\n  ypos 751\n  disable {{1-parent.useAlpha}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 885\n }\npush $N81ae9a60\n NoOp {\n  name SampleXY\n  knobChanged \"\\nn = nuke.thisNode()\\nrgbNode = nuke.toNode('Sample')\\nposition = n.knob('Position2d').getValue()\\npositionX = position\\[0]\\npositionY = position\\[-1]\\nrSample = n.sample(\\\"r\\\",positionX,positionY)\\ngSample = n.sample(\\\"g\\\",positionX,positionY)\\nbSample = n.sample(\\\"b\\\",positionX,positionY)\\nrgbNode.knob('rgbSample').setValue(\\[rSample, gSample, bSample])\\n\"\n  xpos -164\n  ypos 95\n  addUserKnob {20 User}\n  addUserKnob {12 Position2d}\n  Position2d {914 591}\n }\n NoOp {\n  inputs 0\n  name Sample\n  xpos -162\n  ypos 140\n  addUserKnob {20 User}\n  addUserKnob {18 rgbSample}\n  rgbSample {0 0 0}\n  addUserKnob {6 rgbSample_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ParticleKiller.gizmo",
    "content": "Group {\nname ParticleKiller\ntile_color 0x101010ff\nselected true\naddUserKnob {20 particleKillerTab l ParticleKiller}\naddUserKnob {41 ids t \"The ids of the particles that should be affected. Separate using spaces or comma's.\" T ParticleExpression2.ids}\naddUserKnob {41 operation l \"\" t \"Kill: all the named particles are deleted.\\nKeep: all but the named particles are deleted.\" -STARTLINE T ParticleExpression2.operation}\naddUserKnob {26 \"\"}\naddUserKnob {22 displayPoints l \"display point numbers\" t \"Toggle the visibility of the particle ids in the 3D viewer.\" T \"knob = nuke.activeViewer().node().knob('show_vertex_num')\\nknob.setValue(1 - knob.value())\" +STARTLINE}\naddUserKnob {6 colorPreview l \"overwrite color with particle id\" t \"Replace the particles' color values with their ids for easy identification.\" -STARTLINE}\naddUserKnob {1 channels l INVISIBLE +INVISIBLE}\nchannels \"\\[expr \\{ \\[value colorPreview] ? \\\"Color Preview Enabled\\\" : \\\"rgb\\\"\\}]\"\n}\nInput {\ninputs 0\nname Input\nlabel \"\\[value number]\"\nxpos 167\nypos -29\n}\nParticleExpression {\ncolexpr id\nname ParticleExpression1\nxpos 167\nypos 47\ndisable {{\"max(parent.disable, (1 - parent.colorPreview))\"}}\n}\nParticleExpression {\nchannelsexpr_onlynew true\nnew_channels {}\nname ParticleExpression2\nknobChanged \"node = nuke.thisNode()\\n\\nmode = int(node.knob(\\\"operation\\\").getValue())\\noperation = \\[\\\"=\\\",\\\"!\\\"]\\[mode]\\ndivider = \\[\\\"|\\\",\\\"&\\\"]\\[mode]\\ndivider = \\\" %s \\\"%(divider*2)\\n\\nnumbers = \\[str(i) for i in range(10)]\\n\\nids = node.knob(\\\"ids\\\").value()\\n\\nids = ids.replace(\\\",\\\",\\\" \\\").split()\\nids = sorted(list(set(\\[int(id) for id in ids if all(\\[number in numbers for number in id])])))\\nids = \\[\\\"id %s= %s\\\"%(operation, id) for id in ids]\\n\\nexpression = divider.join(ids)\\n\\nnode.knob(\\\"channelsexpr\\\").setValue(expression)\"\nxpos 167\nypos 112\ndisable {{\"max( parent.disable, (1 - clamp(\\[string length \\[value channelsexpr]])))\"}}\naddUserKnob {20 killTab l Kill}\naddUserKnob {26 credits l \"\" +STARTLINE T \"ParticleKiller v1.0 - Wouter Gilsing\"}\naddUserKnob {1 ids}\naddUserKnob {4 operation -STARTLINE M {kill keep \"\" \"\"}}\n}\nOutput {\nname Output1\nxpos 167\nypos 193\n}\nend_group\n\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ParticleLights.gizmo",
    "content": "Group {\n name ParticleLights\n selected true\n addUserKnob {20 User}\n addUserKnob {26 info1 l \"\" +STARTLINE T \"Particle Lights v1.1\"}\n addUserKnob {26 info2 l \"\" +STARTLINE T \"by Mads Hagbarth Lund\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 \"blinnShader_Diffuse Multiplier\" l \"Diffuse Multiplier\" T \"BlinkScript8.blinnShader_Diffuse Multiplier\"}\n addUserKnob {41 \"blinnShader_Specular Power\" l \"Specular Power\" T \"BlinkScript8.blinnShader_Specular Power\"}\n addUserKnob {41 \"blinnShader_Specular Hardness\" l \"Specular Hardness\" T \"BlinkScript8.blinnShader_Specular Hardness\"}\n addUserKnob {41 \"blinnShader_Half Lambert\" l \"Half Lambert\" T \"BlinkScript8.blinnShader_Half Lambert\"}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"A bug in the blink node means that the input size must be atleast 2x2. \\nSo we fake this by adding 2 null particles.\"\n  xpos -847\n  ypos 354\n }\n Group {\n  inputs 0\n  name Light2\n  xpos -679\n  ypos 487\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\n Group {\n  inputs 0\n  name Light1\n  xpos -684\n  ypos 428\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\npush 0\n Input {\n  inputs 0\n  name Particles\n  xpos -452\n  ypos 324\n }\n ParticleMerge {\n  inputs 4\n  name ParticleMerge1\n  xpos -452\n  ypos 428\n }\nadd_layer {hag_pos hag_pos.red hag_pos.green hag_pos.blue hag_pos.alpha}\nadd_layer {hag_active hag_active.a}\n ParticleToImage {\n  pos hag_pos\n  active hag_active.a\n  name ParticleToImage1\n  xpos -452\n  ypos 511\n }\nset N4d0e2420 [stack 0]\n Shuffle {\n  in hag_pos\n  name light_pos\n  xpos -329\n  ypos 511\n }\n Dot {\n  name Dot2\n  xpos -295\n  ypos 559\n }\npush $N4d0e2420\n Shuffle {\n  in rgb\n  in2 hag_active\n  alpha red2\n  name light_color\n  xpos -452\n  ypos 581\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -149\n  ypos 282\n  number 1\n }\n Camera2 {\n  name Camera1\n  xpos -136\n  ypos 320\n }\n Dot {\n  name Dot1\n  xpos -112\n  ypos 396\n }\n Input {\n  inputs 0\n  name Scene3D\n  xpos -275\n  ypos 323\n  number 2\n }\npush 0\nadd_layer {P P.red P.green P.blue P.alpha}\nadd_layer {N N.red N.green N.blue N.alpha}\n ScanlineRender {\n  inputs 3\n  max_tessellation 2\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender2\n  xpos -275\n  ypos 393\n }\n Dot {\n  name Dot10\n  xpos -241\n  ypos 421\n }\nset N4e0a23c0 [stack 0]\n Dot {\n  name Dot3\n  xpos -152\n  ypos 421\n }\n Shuffle {\n  in N\n  in2 rgba\n  alpha alpha2\n  name NormalSplit\n  xpos -186\n  ypos 472\n }\npush $N4e0a23c0\n Shuffle {\n  in P\n  in2 rgba\n  alpha alpha2\n  name PointPosSplit\n  xpos -275\n  ypos 472\n }\n BlinkScript {\n  inputs 4\n  ProgramGroup 1\n  KernelDescription \"1 \\\"blinnShader\\\" iterate pixelWise 4b6604ba5b4299095f03f9edf77da6dbf1f946c319dc7f6e6962ca67a375f9f8 5 \\\"pointPos\\\" Read Point \\\"normal\\\" Read Point \\\"light_color\\\" Read Random \\\"light_pos\\\" Read Random \\\"dst\\\" Write Point 5 \\\"Camera Position\\\" Float 3 AACAPwAAgD8AAIA/AAAAAA== \\\"Diffuse Multiplier\\\" Float 1 AACAPw== \\\"Specular Power\\\" Float 1 AAAgQQ== \\\"Specular Hardness\\\" Float 1 AADIQg== \\\"Half Lambert\\\" Bool 1 AQ==\"\n  kernelSource \"kernel blinnShader : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> pointPos;  //the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> normal;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_color;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_pos;  //the input image\\n\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float3 cameraPosition;\\n    float diffuseMultiplier;\\n    float specularPower;\\n    float specularHardness;\\n    bool halfLambert;\\n\\n  local:\\n    float3 lightDir;\\n    float3 viewDir;\\n\\n  void define() \\{\\n    defineParam(halfLambert,\\\"Half Lambert\\\",bool(1));\\n    defineParam(cameraPosition, \\\"Camera Position\\\", float3(1.0f,1.0f,1.0f));\\n    defineParam(diffuseMultiplier,\\\"Diffuse Multiplier\\\",float(1.0f));\\n    defineParam(specularPower,\\\"Specular Power\\\",float(10.0f));\\n    defineParam(specularHardness,\\\"Specular Hardness\\\",float(100.0f));\\n  \\}\\n\\n  void init() \\{\\n  \\}\\n\\n  void process() \\{\\n\\n    SampleType(dst) sampleBase(0.0f);\\n\\n    float newVal = 0;\\n    for(int j = 0; j < light_pos.bounds.y2; j++) \\{\\n      for(int i = 0; i < light_pos.bounds.x2; i++) \\{\\n        if (light_color(i,j).w == 1) \\{        \\n\\n        lightDir = (float3(light_pos(i,j).x,light_pos(i,j).y,light_pos(i,j).z)-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        float distance = length(lightDir);\\n        lightDir = normalize(lightDir);\\n        distance = distance * distance;\\n\\n        viewDir = (cameraPosition-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        viewDir = normalize(viewDir);\\n\\n\\n        //Calculating Diffuse\\n        float NdotL = dot(float3(normal(0),normal(1),normal(2)),lightDir);\\n        if (halfLambert) \\{      \\n           NdotL = NdotL * 0.5 + 0.5; //Added option for half lambert\\n         \\}\\n        else\\n        \\{\\n        NdotL = min(1.0f,max(0.0f,NdotL));\\n        \\}\\n\\n        float diffuse = NdotL * (light_pos(i,j).w*diffuseMultiplier) / distance;\\n\\n\\n        //Calculating Specular\\n        float3 H = normalize(lightDir+viewDir);\\n        float NdotH = dot(float3(normal(0),normal(1),normal(2)),H);\\n        float intensity = pow(NdotH,specularHardness);\\n        float specular = intensity * specularPower / distance;\\n\\n\\n        SampleType(dst) sample(0.0f);\\n        sample.x = max(0.0f,(diffuse+specular) * light_color(i,j).x);\\n        sample.y =  max(0.0f,(diffuse+specular) * light_color(i,j).y);\\n        sample.z =  max(0.0f, (diffuse+specular) * light_color(i,j).z);\\n        sampleBase += sample;\\n        \\}\\n      \\}\\n    \\}\\n\\n    dst() = sampleBase+float4(0,0,0,pointPos(3)); //Reaplying Alpha\\n   \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  \"blinnShader_Camera Position\" {{parent.Camera1.world_matrix.3} {parent.Camera1.world_matrix.7} {parent.Camera1.world_matrix.11}}\n  \"blinnShader_Diffuse Multiplier\" 4\n  \"blinnShader_Specular Power\" 0.45\n  \"blinnShader_Specular Hardness\" 200\n  \"blinnShader_Half Lambert\" false\n  rebuild_finalise \"\"\n  name BlinkScript8\n  xpos -186\n  ypos 575\n }\nset N4e0c4f40 [stack 0]\n Premult {\n  name Premult1\n  xpos -186\n  ypos 718\n }\n Output {\n  name Output1\n  xpos -186\n  ypos 785\n }\npush $N4e0c4f40\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PerspectiveGuide.gizmo",
    "content": "Group {\n name PerspectiveGuide_BB\n tile_color 0x566d6dff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 options l Options}\n addUserKnob {4 overlay l Overlay t \"Choose layer operation.\" M {add over \"\"}}\n overlay over\n addUserKnob {6 invertOver t \"If you're using over operation, you can use the lines with the background image's inverted colour values.\" -STARTLINE}\n addUserKnob {3 linesVisible t \"Choose the amount of visible lines. (1-8)\"}\n linesVisible 8\n addUserKnob {7 linesThickness R 0 10}\n addUserKnob {18 lineColour}\n lineColour {1 1 1}\n addUserKnob {6 lineColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 horizonGrp l horizon n 1}\n addUserKnob {6 horizon +STARTLINE}\n horizon true\n addUserKnob {18 horizonColour}\n horizonColour {1 0 0}\n addUserKnob {6 horizonColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 lineOpacity}\n lineOpacity 1\n addUserKnob {20 endGroup n -1}\n addUserKnob {22 resetPoints l \"Reset Points\" T \"def setPerspectivePointValues():\\n    w = int (nuke.thisNode().width())\\n    h = int (nuke.thisNode().height())\\n    wHalf = int (w/2)\\n    hHalf = int (h/2)\\n\\n    persp = nuke.thisNode()\\n    persp\\[ 'origin' ].setValue( \\[wHalf, hHalf] )\\n    persp\\[ 'point1' ].setValue( \\[0, h] )\\n    persp\\[ 'point2' ].setValue( \\[wHalf+1, h] )\\n    persp\\[ 'point3' ].setValue( \\[w, h] )\\n    persp\\[ 'point4' ].setValue( \\[0, hHalf+1] )\\n    persp\\[ 'point5' ].setValue( \\[w, hHalf+1] )\\n    persp\\[ 'point6' ].setValue( \\[0, 0] )\\n    persp\\[ 'point7' ].setValue( \\[wHalf+1, 0] )\\n    persp\\[ 'point8' ].setValue( \\[w, 0] )\\n\\nsetPerspectivePointValues()\" +STARTLINE}\n addUserKnob {12 origin l Origin}\n origin {960 540}\n addUserKnob {12 point1 l Point1}\n point1 {0 1080}\n addUserKnob {12 point2 l Point2}\n point2 {961 1080}\n addUserKnob {12 point3 l Point3}\n point3 {1920 1080}\n addUserKnob {12 point4 l Point4}\n point4 {0 541}\n addUserKnob {12 point5 l Point5}\n point5 {1920 541}\n addUserKnob {12 point6 l Point6}\n addUserKnob {12 point7 l Point7}\n point7 {961 0}\n addUserKnob {12 point8 l Point8}\n point8 {1920 0}\n addUserKnob {26 \"\"}\n addUserKnob {26 version l \"\" t \"Horizon Line added\" +STARTLINE T \"version 1.1.0\"}\n addUserKnob {26 Copyright l \"\" +STARTLINE T \"Copyright 2010 Baseblack (London) Ltd.\"}\n}\n RotoPaint {\n  inputs 0\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier2 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4474c000}\n   {=origin.y x442c8000}}\n        {}\n        {}\n        {{=0 xbca3d70a}\n   {=origin.y+1 x44074000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x443fe000 x4402e000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}\n    {curvegroup Bezier1 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4474c000}\n   {=origin.y x442c8000}}\n        {}\n        {}\n        {{=1920 xbca3d70a}\n   {=origin.y+1 x44074000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x443fe000 x4402e000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  lifetime_type \"all frames\"\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name RotoPaint10\n  xpos -806\n  ypos -179\n  disable {{\"linesVisible < 5\"}}\n }\n Grade {\n  channels rgba\n  whitepoint 0\n  white_clamp true\n  name Grade3\n  xpos -806\n  ypos -131\n }\n Dilate {\n  size {{linesThickness+1 i}}\n  name Dilate2\n  xpos -806\n  ypos -89\n }\nset Nec3247a0 [stack 0]\n Grade {\n  channels rgba\n  whitepoint 0\n  multiply {{horizonColour i} {horizonColour i} {horizonColour i} {curve i}}\n  white_clamp true\n  name horizonGrade\n  xpos -806\n  ypos -1\n }\n Multiply {\n  value {{lineOpacity i}}\n  name Multiply2\n  xpos -806\n  ypos 62\n }\n RotoPaint {\n  inputs 0\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier1 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x44ceb333}\n   {=origin.y x44921333}}\n        {}\n        {}\n        {{=point1.x x43400000}\n   {=point1.y x4492c000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x4447a000 x442d8000}\n     {a spx x44800000 spy x44428000 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint1\n  xpos -590\n  ypos -565\n  disable {{\"linesVisible < 1\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier2 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=point2.x x44d50000}\n   {=point2.y x4492d000}}\n        {}\n        {}\n        {{=origin.x x448f8000}\n   {=origin.y x42cc0000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x44654000 x442af000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  lifetime_type \"all frames\"\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name RotoPaint2\n  xpos -590\n  ypos -516\n  disable {{\"linesVisible < 2\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier3 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4496e000}\n   {=origin.y x443e0000}}\n        {}\n        {}\n        {{=point3.x x44da8000}\n   {=point3.y x44994000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x44b8b000 x44784000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint3\n  xpos -590\n  ypos -467\n  disable {{\"linesVisible < 3\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier4 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4474c000}\n   {=origin.y x442c8000}}\n        {}\n        {}\n        {{=point4.x x440b0000}\n   {=point4.y x43b28000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x443fe000 x4402e000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint4\n  xpos -590\n  ypos -420\n  disable {{\"linesVisible < 4\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier5 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x448e6000}\n   {=origin.y x43ea0000}}\n        {}\n        {}\n        {{=point5.x x44f0a000}\n   {=point5.y x43f30000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x44bf8000 x43ee8000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint5\n  xpos -590\n  ypos -371\n  disable {{\"linesVisible < 5\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier6 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x44780000}\n   {=origin.y x441ac000}}\n        {}\n        {}\n        {{=point6.x x43c78000}\n   {=point6.y x43790000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x442de000 x43d90000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint6\n  xpos -590\n  ypos -323\n  disable {{\"linesVisible < 6\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier7 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4486c000}\n   {=origin.y x441a0000}}\n        {}\n        {}\n        {{=point7.x x44bd4000}\n   {=point7.y x43a10000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x44a20000 x43ea8000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint7\n  xpos -590\n  ypos -276\n  disable {{\"linesVisible < 7\" i}}\n }\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 512}\n    {t x44800000 x44428000}\n    {a}\n    {curvegroup Bezier8 1536 bezier\n     {{cc\n       {f 8192}\n       {p\n        {}\n        {{=origin.x x4489e000}\n   {=origin.y x44284000}}\n        {}\n        {}\n        {{=point8.x x44cd0000}\n   {=point8.y x43aa0000}}\n        {}}}\n      {cc\n       {f 8192}\n       {p\n        {}\n        {}\n        {}\n        {}\n        {}\n        {}}}}\n     {t x44ab7000 x43fd4000}\n     {a spx 0 spy 0 sb 1 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 tt 8 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_autokey false\n  toolbar_ripple_range_type \"to end\"\n  toolbar_ripple_range_from 1\n  toolbar_ripple_range_to 1\n  toolbar_feather_link false\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay 0\n  lifetime_type \"all frames\"\n  locked true\n  motionblur_shutter_offset_type centred\n  source_translate_round false\n  source_black_outside true\n  name RotoPaint8\n  xpos -590\n  ypos -227\n  disable {{\"linesVisible < 8\" i}}\n }\n Grade {\n  channels rgba\n  whitepoint 0\n  white_clamp true\n  name Grade1\n  xpos -590\n  ypos -176\n }\n Dilate {\n  size {{linesThickness i}}\n  name Dilate1\n  xpos -590\n  ypos -138\n }\nset Nec27c3a0 [stack 0]\n Grade {\n  multiply {{lineColour.r i} {lineColour.g i} {lineColour.b i} {1 i}}\n  white_clamp true\n  name Grade2\n  xpos -590\n  ypos -82\n }\n Multiply {\n  value {{lineOpacity i}}\n  name Multiply1\n  xpos -590\n  ypos -42\n }\n Merge2 {\n  inputs 2\n  name Merge4\n  xpos -696\n  ypos 69\n  disable {{\"horizon == 0 ? 1:0\" i}}\n }\n Clamp {\n  name Clamp1\n  xpos -590\n  ypos 62\n }\nset Nec1c19e0 [stack 0]\n Dot {\n  name Dot3\n  xpos -556\n  ypos 114\n }\npush $Nec3247a0\npush $Nec27c3a0\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  name Max\n  xpos -480\n  ypos -131\n  disable {{\"horizon == 0 ? 1:0\" i}}\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -370\n  ypos -611\n }\nset Nec251570 [stack 0]\n Dot {\n  name Dot2\n  xpos -226\n  ypos -606\n }\nset Nec22c640 [stack 0]\n Dot {\n  name Dot1\n  xpos -6\n  ypos -606\n }\n Invert {\n  name Invert1\n  xpos -40\n  ypos -330\n }\n Blur {\n  size 3\n  name Blur1\n  label \"\\[value size]\"\n  xpos -40\n  ypos -265\n }\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy1\n  xpos -40\n  ypos -131\n }\n Premult {\n  name Premult1\n  xpos -40\n  ypos 61\n }\npush $Nec22c640\n Merge2 {\n  inputs 2\n  name Merge3\n  xpos -260\n  ypos 61\n  disable {{\"invertOver == 0 ? 1:0\" i}}\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -260\n  ypos 110\n  disable {{\"invertOver == 1 ? 1:0\" i}}\n }\n Dot {\n  name Dot4\n  xpos -226\n  ypos 186\n }\npush $Nec1c19e0\npush $Nec251570\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge1\n  xpos -370\n  ypos 68\n }\n Dissolve {\n  inputs 2\n  which {{overlay i}}\n  name Dissolve1\n  xpos -370\n  ypos 176\n }\n Output {\n  name Output1\n  xpos -370\n  ypos 251\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PlanarProjection.gizmo",
    "content": "Group {\n name PlanarProjection\n help \"<b>Planar Projection</b>\\nGenerates 2D coordinates for points in 3D space. Type in 3D point coordinates, or use vertex selection in 3D viewer and click set to pick average of selected points, or set points to set all four points at once. \\n\\nYou can connect node output to scene together with your pointcloud or geometry and see where your points are located in 3d space. Double click any of them to move it in 3d space like any traditional nuke transform control. \\n\\nA matrix transform is also generated to be used with RotoPaint, SplineWarp and GridWarp nodes. If you are using matrix in GridWarp, points have to be in clockwise order, pick them one by one! \\n\\nCommand set points doesn't respect selection order! \\n\\nCheck out the demo video on my website! Kudos to Ivan Busquets for help with matrix math. \\n\\n-- developed by Vit Sedlacek 2012 www.vitsedlacek.com \\n\\n-- Modified by Jed Smith to make calculation time nearly instantaneous, fix some bugs and create a BG input so that the sampled format could be easily specified instead of using nuke.root() format. Also enabled animated 3d input points, and added some functionality in the set knobs to snarf data from axis nodes.\\nhttp://gist.github.com/jedypod\"\n addUserKnob {20 PlanarProjection}\n addUserKnob {26 \"\"}\n addUserKnob {26 usage_label_header l \" \" T \"<font size=4>\\n<b>Input 3D Positions</b>\"}\n addUserKnob {20 usage_label_grp l \"       help\" n 1}\n usage_label_grp 0\n addUserKnob {26 usage_label l \" \" T \"<font size=3>\\nSelect any number of points in the 3D view, in vertex selection mode.<br/>\\n<b>Set from Selection</b>: 4 points will be set based on the selection bounds.<br/>\\n<b>Set from Axes</b>: Gets position from 4 axis nodes with or without animation.<br/>\\n<b>Set Animated</b>: Set the target point. For animated geometry.<br/>\\n<b>Set Point</b>: Set point from vertex selection. If no vertex selection,<br/>\\n set from selected Axis. If no axis, set from selected pixel value (for PWorld).<br/>\\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {22 set_from_selection l \"Set from Selection\" t \"Set value of all points If Axis nodes are selected, it grabs translate values from them. If not, the first 4 selected vertexes in the 3D viewport is used instead. \" T \"## Set points to selected\\nfrom __future__ import with_statement\\nfrom nukescripts import snap3d as sn\\n\\n\\nnode = nuke.thisNode()\\nnode.begin()\\nmatch_sel = nuke.toNode('_MATCH_SELECTION_')\\n\\nsn.translateRotateScaleToPoints(match_sel)\\n\\naxes = \\[nuke.toNode('LL'), nuke.toNode('LR'), nuke.toNode('UR'), nuke.toNode('UL')]\\nfor i, axis in enumerate(axes):\\n    matrix = axis\\['world_matrix']\\n    translate = \\[matrix.getValue(3), matrix.getValue(7), matrix.getValue(11)]\\n    node\\['ip\\{0\\}'.format(i+1)].setValue(translate)\" +STARTLINE}\n addUserKnob {22 set_from_axes l \"Set from Axes\" t \"Select up to 4 different axes, which can be animated. This button will set the points to each axis in selection order.\" -STARTLINE T \"node = nuke.thisNode()\\nnuke.root().begin()\\n\\naxis_nodes = \\[axis for axis in nuke.selectedNodes() if axis.Class() == \\\"Axis2\\\"]\\nif axis_nodes:\\n    if len(axis_nodes) > 4:\\n        nuke.message(\\\"More than 4 axis nodes selected: Will only use the first 4 selected ones.\\\")\\n    axis_nodes = list(reversed(axis_nodes)) # Reverse selected so it goes in selection order\\n    for i in range(4):\\n        point = node\\[\\\"ip\\{0\\}\\\".format(i+1)]\\n        axis = axis_nodes\\[i]\\n        if axis\\['translate'].isAnimated():\\n            point.clearAnimated()\\n            point.copyAnimations(axis\\['translate'].animations())\\n        else:\\n            point.clearAnimated()\\n            point.setValue(axis\\['translate'].getValue())\"}\n addUserKnob {22 clear_input l Clear t \"Remove all animated and non-default knob values.\" -STARTLINE T \"n = nuke.thisNode()\\n\\nfor i in range(4):\\n    kip = n\\['ip'+str(i+1)]\\n    kip.clearAnimated()\\n    kip.setValue(kip.defaultValue())\"}\n addUserKnob {22 set_single_animated l \"Set Animated\" t \"Sets single point to selected vertex position. Set the target knob to put the data on.\" T \"import nuke\\nfrom nukescripts import snap3d as sn\\n\\ndef _get_framerange():\\n    first_frame = int(nuke.numvalue('root.first_frame'))\\n    last_frame = int(nuke.numvalue('root.last_frame'))\\n    step = 1\\n    default_frange = str(nuke.FrameRange(first_frame, last_frame, step))\\n    frange = nuke.getInput('Enter Frame Range:', default_frange)\\n    if not frange:\\n        return None\\n    else:\\n        try:\\n            return nuke.FrameRange(frange)\\n        except:\\n            nuke.message('Invalid frame range')\\n            return None\\n\\ndef get_vertex_position(frame):\\n    # return last selected vertex position on specified frame\\n    vertices = sn.getSelection()\\n    if not vertices:\\n        nuke.message(\\\"A vertex must be selected.\\\")\\n        return\\n    center = sn.calcAveragePosition(vertices)\\n    vertices.translate(-center)\\n    return center\\n\\ndef calc_vertex_positions():\\n    framerange = _get_framerange()\\n    if not framerange:\\n        return\\n    curvetool = nuke.nodes.CurveTool()\\n    positions_animcurve = \\[\\[], \\[], \\[]]\\n    for frame in framerange:\\n        nuke.execute(curvetool, frame, frame)\\n        curpos = get_vertex_position(frame)\\n        if curpos:\\n            for i in range(3):\\n                positions_animcurve\\[i].append(nuke.AnimationKey(frame, curpos\\[i]))\\n    if curvetool:\\n        nuke.delete(curvetool)\\n    return positions_animcurve\\n\\nnode = nuke.thisNode()\\nnuke.root().begin()\\niptarget = node\\['iptarget'].getValue()\\nipknob = node\\['ip\\{0\\}'.format(int(iptarget)+1)]\\nipknob.clearAnimated()\\nipknob.setAnimated()\\n\\npositions = calc_vertex_positions()\\nfor index, curve in enumerate(ipknob.animations()):\\n    curve.addKey(positions\\[index])\" +STARTLINE}\n addUserKnob {22 set_point l \"Set Point\" -STARTLINE T \"import nuke\\nfrom nukescripts import snap3d as sn\\n\\ndef get_vertex_position():\\n    points = sn.getSelection()\\n    if not points:\\n        return None\\n    pos = sn.calcAveragePosition(points)\\n    return pos\\n\\nif __name__==\\\"__main__\\\":\\n    node = nuke.thisNode()\\n    nuke.root().begin()\\n    axis_nodes = \\[axis for axis in nuke.selectedNodes() if axis.Class() == \\\"Axis2\\\"]\\n    iptarget = node\\['iptarget'].getValue()\\n    ipknob = node\\['ip\\{0\\}'.format(int(iptarget)+1)]\\n    pos = get_vertex_position()\\n    if pos:\\n        ipknob.setValue(pos)\\n    elif axis_nodes:\\n        axis = axis_nodes\\[-1]\\n        if axis\\['translate'].isAnimated():\\n            ipknob.clearAnimated()\\n            ipknob.copyAnimations(axis\\['translate'].animations())\\n        else:\\n            ipknob.clearAnimated()\\n            ipknob.setValue(axis\\['translate'].getValue())\\n    else:\\n        viewer = nuke.activeViewer().node()\\n        if viewer.input(0):\\n            viewed_node = viewer.input(0)\\n            if not nuke.selectedNodes():\\n                viewed_node.setSelected(1)\\n        else:\\n            viewed_node = nuke.activeViewer().node()\\n        bboxinfo = nuke.activeViewer().node()\\['colour_sample_bbox'].value()\\n        aspect = float(viewed_node.width() * viewed_node.pixelAspect()) / float(viewed_node.height())\\n        cornerA = \\[(bboxinfo\\[0]*0.5+0.5) * viewed_node.width(), (((bboxinfo\\[1] * 0.5) + (0.5/aspect)) * aspect) * viewed_node.height()]\\n        cornerB = \\[(bboxinfo\\[2]*0.5+0.5) * viewed_node.width(), (((bboxinfo\\[3] * 0.5) + (0.5/aspect)) * aspect) * viewed_node.height()]\\n        area = \\[cornerB\\[0] - cornerA\\[0], cornerB\\[1] - cornerA\\[1]]\\n        center = \\[cornerA\\[0] + (area\\[0]/2), cornerA\\[1] + (area\\[1] / 2)]\\n        color_sample = \\[viewed_node.sample('rgba.red', center\\[0], center\\[1], area\\[0], area\\[1]), viewed_node.sample('rgba.green', center\\[0], center\\[1], area\\[0], area\\[1]), viewed_node.sample('rgba.blue', center\\[0], center\\[1], area\\[0], area\\[1])]\\n        ipknob.setValue(color_sample)\"}\n addUserKnob {4 iptarget l \"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target\" -STARTLINE M {\"point 1\" \"point 2\" \"point 3\" \"point 4\" \"\" \"\"}}\n iptarget \"point 2\"\n addUserKnob {41 ip1 l \"point 1\" T point_1.translate}\n addUserKnob {22 set_ip1 l \"Set 1\" t \"Set point 1 to current selection.\" -STARTLINE T \"node = nuke.thisNode()\\nnode\\['iptarget'].setValue(0)\\nnode\\['set_point'].execute()\"}\n addUserKnob {41 ip2 l \"point 2\" T point_2.translate}\n addUserKnob {22 set_ip2 l \"Set 2\" t \"Set point 2 to current selection.\" -STARTLINE T \"node = nuke.thisNode()\\nnode\\['iptarget'].setValue(1)\\nnode\\['set_point'].execute()\"}\n addUserKnob {41 ip3 l \"point 3\" T point_3.translate}\n addUserKnob {22 set_ip3 l \"Set 3\" t \"Set point 3 to current selection.\" -STARTLINE T \"node = nuke.thisNode()\\nnode\\['iptarget'].setValue(2)\\nnode\\['set_point'].execute()\"}\n addUserKnob {41 ip4 l \"point 4\" T point_4.translate}\n addUserKnob {22 set_ip4 l \"Set 4\" t \"Set point 4 to current selection.\" -STARTLINE T \"node = nuke.thisNode()\\nnode\\['iptarget'].setValue(3)\\nnode\\['set_point'].execute()\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 reconcile_explanation l \" \" T \"<font size=4><b>Reconcile Points into Screen Space</b>\"}\n addUserKnob {20 reconcile_points_grp l \"       help\" n 1}\n reconcile_points_grp 0\n addUserKnob {26 reconcile_points_help l \" \" T \"<font size=3>Press Calculate and the 3D points will be reconciled into 2d tracking data. <br/>\\nA perspective transform matrix is also calculated. <br/>This enables tracking in \\ntranslation, rotation, scale and perspective.\\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {22 Calculate t \"Calculate the reconciled 2D points for each 3D point.\\n\\nAlso calculate a matrix transform for the planar surface, if there are 4 total points. This can then be used for Rotos and CornerPins.\" T \"import nuke\\nfrom nukescripts import snap3d as sn\\nimport math\\n\\n\\ndef cameraProjectionMatrix(cameraNode, frame, imageformat):\\n    ## modified code from nukescripts/Snap3D\\n\\n    # Matrix to transform points into camera-relative coords.\\n    wm = nuke.math.Matrix4()\\n    for i in range(16):\\n        wm\\[i] = cameraNode\\['matrix'].getValueAt(frame,i)\\n    wm.transpose()\\n    camTransform = wm.inverse()\\n\\n    # Matrix to take the camera projection knobs into account\\n    roll = float(cameraNode\\['winroll'].getValueAt(frame,0))\\n    scale_x = float(cameraNode\\['win_scale'].getValueAt(frame,0))\\n    scale_y = float(cameraNode\\['win_scale'].getValueAt(frame,1))\\n    translate_x = float(cameraNode\\['win_translate'].getValueAt(frame,0))\\n    translate_y = float(cameraNode\\['win_translate'].getValueAt(frame,1))\\n    m = nuke.math.Matrix4()\\n    m.makeIdentity()\\n    m.rotateZ(math.radians(roll))\\n    m.scale(1.0 / scale_x, 1.0 / scale_y, 1.0)\\n    m.translate(-translate_x, -translate_y, 0.0)\\n\\n    # Projection matrix based on the focal length, aperture and clipping planes of the camera\\n    focal_length = float(cameraNode\\['focal'].getValueAt(frame))\\n    h_aperture = float(cameraNode\\['haperture'].getValueAt(frame))\\n    near = float(cameraNode\\['near'].getValueAt(frame))\\n    far = float(cameraNode\\['far'].getValueAt(frame))\\n    projection_mode = int(cameraNode\\['projection_mode'].getValueAt(frame))\\n    p = nuke.math.Matrix4()\\n    p.projection(focal_length / h_aperture, near, far, projection_mode == 0)\\n\\n    # Matrix to translate the projected points into normalised pixel coords\\n    imageAspect = float(imageformat.height()) / float(imageformat.width())\\n\\n    t = nuke.math.Matrix4()\\n    t.makeIdentity()\\n    t.translate( 1.0, 1.0 - (1.0 - imageAspect / float(imageformat.pixelAspect())), 0.0 )\\n\\n    # Matrix to scale normalised pixel coords into actual pixel coords.\\n    x_scale = float(imageformat.width()) / 2.0\\n    y_scale = x_scale * imageformat.pixelAspect()\\n    s = nuke.math.Matrix4()\\n    s.makeIdentity()\\n    s.scale(x_scale, y_scale, 1.0)\\n\\n    # The projection matrix transforms points into camera coords, modifies based\\n    # on the camera knob values, projects points into clip coords, translates the\\n    # clip coords so that they lie in the range 0,0 - 2,2 instead of -1,-1 - 1,1,\\n    # then scales the clip coords to proper pixel coords.\\n    return s * t * p * m * camTransform\\n\\n\\n\\ndef pointsToMatrix(frame, node, reference_frame=None):\\n    cpToMtx = nuke.math.Matrix4()\\n    cpFromMtx = nuke.math.Matrix4()\\n\\n    # Get a list of Vector2 objects for each of the 'to' knobs and each of the 'from' knobs.\\n    ToVectors = \\[nuke.math.Vector2(node\\[f].getValueAt(frame, 0), node\\[f].getValueAt(frame, 1)) for f in sorted(node.knobs().keys()) if f.startswith('op')]\\n\\n    # Feed all 4 coordinates into the mapUnitSquareToQuad() function\\n    cpToMtx.mapUnitSquareToQuad(ToVectors\\[0].x, ToVectors\\[0].y, ToVectors\\[1].x, ToVectors\\[1].y, ToVectors\\[2].x, ToVectors\\[2].y, ToVectors\\[3].x, ToVectors\\[3].y)\\n\\n    # If we have a reference frame, use the to vectors on that frame as our from matrix, otherwise use the image width and height\\n    if reference_frame:\\n        FromVectors = \\[nuke.math.Vector2(node\\[f].getValueAt(reference_frame, 0), node\\[f].getValueAt(reference_frame, 1)) for f in sorted(node.knobs().keys()) if f.startswith('op')]\\n        cpFromMtx.mapUnitSquareToQuad(FromVectors\\[0].x, FromVectors\\[0].y, FromVectors\\[1].x, FromVectors\\[1].y, FromVectors\\[2].x, FromVectors\\[2].y, FromVectors\\[3].x, FromVectors\\[3].y)\\n    else:\\n        cpFromMtx.mapUnitSquareToQuad(0, 0, node.width(), 0, node.width(), node.height(), 0, node.height())\\n\\n    transform_matrix = cpToMtx * cpFromMtx.inverse()\\n\\n    # This is not needed to apply the transformation. The matrix is already correct.\\n    # However, the matrix knob in rotopaint is indexed differently (row major), so I just transpose the matrix here to make it easier to copy its values to the knob\\n    transform_matrix.transpose()\\n\\n    # Fill in the transform_matrix knob of the target node\\n    return transform_matrix\\n\\n\\n\\ndef projectPoints(frame, camera=None, point=None, imageformat=None):\\n    # Modify projectpoint function in nukescripts.snap3d to add frame argument\\n    if not imageformat:\\n        imageformat = nuke.root()\\['format'].value()\\n    camMatrix = cameraProjectionMatrix(camera, frame, imageformat)\\n    if camMatrix == None:\\n        raise RuntimeError(\\\"snap3d.cameraProjectionMatrix() returned None for camera.\\\")\\n\\n    if not ( isinstance(point, list) or isinstance(point, tuple) ):\\n        raise ValueError(\\\"Argument point must be a list or tuple.\\\")\\n\\n    for point in point:\\n        # Would be nice to not do this for every item but since lists/tuples can\\n        # containg anything...\\n        if isinstance(point, nuke.math.Vector3):\\n            pt = point\\n        elif isinstance(point, list) or isinstance(point, tuple):\\n            pt = nuke.math.Vector3(point\\[0], point\\[1], point\\[2])\\n        else:\\n            raise ValueError(\\\"All items in point must be nuke.math.Vector3 or list/tuple of 3 floats.\\\")\\n\\n        tPos = camMatrix * nuke.math.Vector4(pt.x, pt.y, pt.z, 1.0)\\n        #print tPos\\n        try:\\n            yield nuke.math.Vector2(tPos.x / tPos.w, tPos.y / tPos.w)\\n        except ZeroDivisionError:\\n            print(\\\"Zero Division Error on frame \\{0\\} with point data \\{1\\}\\\".format(frame, point))\\n            yield nuke.math.Vector2()\\n\\n\\ndef calculate(node):\\n    # Get the input Camera and verify it is right. (Assume camera is topnode of input to handle dots)\\n    cam_input = node.input(1)\\n    # Sanity check\\n    if not (cam_input and isinstance(cam_input, nuke.Node)):\\n        nuke.message(\\\"A Camera node must be connected.\\\")\\n        return\\n    if 'Camera' in cam_input.Class():\\n        cam = cam_input\\n    else:\\n        cam = nuke.toNode(nuke.tcl(\\\"full_name \\[topnode %s]\\\" % cam_input.name()))\\n    bg = node.input(0)\\n    if not bg:\\n        nuke.message(\\\"BG not connected, so the root format will be used to reconcile the 3D points into screen space.\\\")\\n\\n    # Get framerange to operate on from camera animation curves\\n    first = None\\n    last = None\\n    try:\\n        if cam\\['translate'].isAnimated():\\n            for curve in cam\\['translate'].animations():\\n                if first == None:\\n                    first = int(curve.keys()\\[0].x)\\n                else:\\n                    first = min(first, int(curve.keys()\\[0].x))\\n            for curve in cam\\['translate'].animations():\\n                if last == None:\\n                    last = int(curve.keys()\\[-1].x)\\n                else:\\n                    last = max(last, int(curve.keys()\\[-1].x))\\n        elif cam\\['rotate'].isAnimated():\\n            for curve in cam\\['rotate'].animations():\\n                if first == None:\\n                    first = int(curve.keys()\\[0].x)\\n                else:\\n                    first = min(first, int(curve.keys()\\[0].x))\\n            for curve in cam\\['rotate'].animations():\\n                if last == None:\\n                    last = int(curve.keys()\\[-1].x)\\n                else:\\n                    last = max(last, int(curve.keys()\\[-1].x))\\n        else:\\n            nuke.message(\\\"Input Camera is not animated.\\\")\\n            return\\n    except:\\n        nuke.message(\\\"Something went wrong getting the camera animation. Using Root framerange...\\\")\\n        first = nuke.root().firstFrame()\\n        last = nuke.root().lastFrame()\\n\\n\\n    framerange = nuke.FrameRange('\\{0\\}-\\{1\\}'.format(first, last))\\n\\n    # Loop through the 3D points, reconcile the coordinates through the camera into screen space\\n    for opnum in range(4):\\n        # Only run if the ip knob is not default\\n        ipknob = node\\[\\\"ip\\{0\\}\\\".format(opnum+1)]\\n        if not ipknob.notDefault():\\n            print(\\\"Skipping \\{0\\} because it is still default!\\\".format('ip'+str(opnum+1)))\\n            continue\\n\\n        opknob = node\\[\\\"op\\{0\\}\\\".format(opnum+1)]\\n        opknob.clearAnimated()\\n        opknob.setAnimated()\\n\\n        # Building the data into a list of AnimationKey objects,\\n        # and then applying that list to the knob using addKey is significantly faster than other methods.\\n        # This makes the Calculate button instantaneous instead of taking forever.\\n        point_animcurve = \\[\\[], \\[]]\\n        for frame in framerange:\\n\\n            #print \\\"values are \\\", ipknob.getValueAt(frame)\\n            # Sample input point knob on every frame if it's animated or expression-linked\\n            if ipknob.isAnimated() or ipknob.hasExpression():\\n                point = projectPoints(frame, cam, \\[ipknob.getValueAt(frame)], node.format()).next()\\n            else:\\n                point = projectPoints(frame, cam, \\[ipknob.value()], node.format()).next()\\n            for index in range(2):\\n                point_animcurve\\[index].append(nuke.AnimationKey(frame, point\\[index]))\\n\\n        for index, curve in enumerate(opknob.animations()):\\n            curve.addKey(point_animcurve\\[index])\\n\\n    # Calculate the transformation Matrix, if we have 4 output points\\n    for i in range(4):\\n        ipknob = node\\[\\\"op\\{0\\}\\\".format(i+1)]\\n        #print 'op'+str(i+1)+' IS NOT DEFAULT'\\n        if not ipknob.notDefault():\\n            return\\n    mknob = node\\['matrix']\\n    mknob.clearAnimated()\\n    mknob.setAnimated()\\n\\n    use_reference_frame = True\\n    reference_frame = node\\['identity_frame'].getValue()\\n\\n    matrix_animcurve = \\[\\[] for i in range(16)]\\n    for frame in framerange:\\n        if use_reference_frame:\\n            matrix_data = pointsToMatrix(frame, node, reference_frame)\\n        else:\\n            matrix_data = pointsToMatrix(frame, node)\\n        for index in range(16):\\n            matrix_animcurve\\[index].append(nuke.AnimationKey(frame, matrix_data\\[index]))\\n    matrix_animcurve = \\[\\[] for i in range(16)]\\n    for frame in framerange:\\n        if use_reference_frame:\\n            matrix_data = pointsToMatrix(frame, node, reference_frame)\\n        else:\\n            matrix_data = pointsToMatrix(frame, node)\\n        for index in range(16):\\n            matrix_animcurve\\[index].append(nuke.AnimationKey(frame, matrix_data\\[index]))\\n\\n    for index, item in enumerate(mknob.animations()):\\n        item.addKey(matrix_animcurve\\[index])\\n    for index, item in enumerate(mknob.animations()):\\n        item.addKey(matrix_animcurve\\[index])\\n\\nif __name__==\\\"__main__\\\":\\n    calculate(nuke.thisNode())\" +STARTLINE}\n addUserKnob {22 clear_out l Clear t \"Clear output knobs.\" -STARTLINE T \"n = nuke.thisNode()\\n\\nfor i in range(4):\\n    kop = n\\['op'+str(i+1)]\\n    kop.clearAnimated()\\n    kop.setValue(kop.defaultValue())\\n    n\\['matrix'].clearAnimated()\\n    n\\['matrix'].setValue(\\[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])\"}\n addUserKnob {12 op1 l \"point 1\"}\n addUserKnob {12 op2 l \"point 2\"}\n addUserKnob {12 op3 l \"point 3\"}\n addUserKnob {12 op4 l \"point 4\"}\n addUserKnob {41 matrix t \"Calculated matrix.\" T Matrix_original.matrix}\n addUserKnob {26 identity_frame_label l \" \" T \"\\nIdentity Frame\"}\n addUserKnob {3 identity_frame l \" \" t \"If a frame is specified here, the matrix calculated will be relative to this frame. On the reference frame the matrix will be a null transformation.\"}\n identity_frame 1001\n addUserKnob {22 set_current l Current -STARTLINE T nuke.thisNode().knob('identity_frame').setValue(nuke.frame())}\n addUserKnob {26 \"\"}\n addUserKnob {26 link_tracking_label l \" \" T \"<font size=4><b>Link Tracking Data to Nodes</b>\"}\n addUserKnob {20 link_tracking_help_grp l \"       help\" n 1}\n link_tracking_help_grp 0\n addUserKnob {26 link_tracking_help l \" \" T \"<font size=3>\\n<b>Expression link</b> will keep a live expression to the data on this node, in case it is updated.\\n<br/><b>Independent identity frame</b> will add extra knobs to the created node to allow you to \\n<br/>specify an independent identity frame on the node. It's heavier!\\n<br/>&nbsp;&nbsp;&nbsp;&nbsp;\"}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {22 create_tracker3 l Tracker3 t \"Create a Tracker3 class Tracker node, in case this is what you prefer to link roto shapes to.\" T \"# Create tracker3 node\\nfrom __future__ import with_statement\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\npproj = nuke.thisNode()\\nwith nuke.root():\\n    track_node = nuke.nodes.Tracker3()\\n    track_node.setXYpos(pproj.xpos()-grid_x*0, pproj.ypos()+grid_y*2)\\n    _ = \\[n.setSelected(False) for n in nuke.allNodes()]\\n    track_node.setSelected(True)\\n    enable_knobs = \\['enable1', 'enable2', 'enable3', 'enable4']\\n    trs_knobs = \\['use_for1', 'use_for2', 'use_for3', 'use_for4']\\n    track_knobs = \\['track1', 'track2', 'track3', 'track4']\\n\\n    for i, k in enumerate(enable_knobs):\\n        if pproj\\['op\\{0\\}'.format(i+1)].isAnimated():\\n            track_node\\[k].setValue(True)\\n    for i, k in enumerate(trs_knobs):\\n        if pproj\\['op\\{0\\}'.format(i+1)].isAnimated():\\n            track_node\\[k].setValue(7)\\n    for i, track in enumerate(track_knobs):\\n        if pproj\\['op\\{0\\}'.format(i+1)].isAnimated():\\n            tknob = track_node\\[track]\\n            tknob.clearAnimated()\\n            tknob.setAnimated()\\n            for x, c in enumerate(tknob.animations()):\\n                opknob = pproj\\['op\\{0\\}'.format(track.split('track')\\[-1])]\\n                if opknob.isAnimated():\\n                    c.addKey(opknob.animation(x).keys())\\n                else:\\n                    tknob.clearAnimated()\\n    # This hackiness is necessary so knob values work correctly\\n    track_node.setTab(2)\\n    track_node.showControlPanel()\\n    track_node\\[trs_knobs\\[0]].setValue(1)\\n    track_node\\[trs_knobs\\[0]].setValue(7)\\n    track_node.hideControlPanel()\" +STARTLINE}\n addUserKnob {22 create_tracker4 l Tracker4 t \"Create Tracker4 class tracker node.\" -STARTLINE T \"from __future__ import with_statement\\n\\n# http://community.foundry.com/discuss/topic/99665\\n# https://www.mail-archive.com/nuke-python@support.thefoundry.co.uk/msg04697.html\\n\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\nnode = nuke.thisNode()\\nexpression_link = node\\['expression_link'].getValue()\\n# pros not worth the cons ... disabling expression linking Tracker4 nodes for now\\nexpression_link = False\\n\\nif expression_link:\\n    nuke.message(\\\"Warning: If expression linking a Tracker4 node, it must be placed in the \\\\nimage stream in order to evaluate correctly.\\\")\\n\\nwith nuke.root():\\n    _ = \\[n.setSelected(False) for n in nuke.allNodes()]\\n    track_node = nuke.createNode('Tracker4')\\n    track_node.setXYpos(node.xpos()-grid_x*0, node.ypos()+grid_y*2)\\n    _ = \\[n.setSelected(False) for n in nuke.allNodes()]\\n    track_node.setSelected(True)\\n\\n    # First line 3rd number is length of tracks: explicitly setting it to 4 here.\\n    tracks_fromscript = \\\"\\{ 1 31 4 \\} \\\\n\\{ \\{ 5 1 20 enable e 1 \\} \\\\n\\{ 3 1 75 name name 1 \\} \\\\n\\{ 2 1 58 track_x track_x 1 \\} \\\\n\\{ 2 1 58 track_y track_y 1 \\} \\\\n\\{ 2 1 63 offset_x offset_x 1 \\} \\\\n\\{ 2 1 63 offset_y offset_y 1 \\} \\\\n\\{ 4 1 27 T T 1 \\} \\\\n\\{ 4 1 27 R R 1 \\} \\\\n\\{ 4 1 27 S S 1 \\} \\\\n\\{ 2 0 45 error error 1 \\} \\\\n\\{ 1 1 0 error_min error_min 1 \\} \\\\n\\{ 1 1 0 error_max error_max 1 \\} \\\\n\\{ 1 1 0 pattern_x pattern_x 1 \\} \\\\n\\{ 1 1 0 pattern_y pattern_y 1 \\} \\\\n\\{ 1 1 0 pattern_r pattern_r 1 \\} \\\\n\\{ 1 1 0 pattern_t pattern_t 1 \\} \\\\n\\{ 1 1 0 search_x search_x 1 \\} \\\\n\\{ 1 1 0 search_y search_y 1 \\} \\\\n\\{ 1 1 0 search_r search_r 1 \\} \\\\n\\{ 1 1 0 search_t search_t 1 \\} \\\\n\\{ 2 1 0 key_track key_track 1 \\} \\\\n\\{ 2 1 0 key_search_x key_search_x 1 \\} \\\\n\\{ 2 1 0 key_search_y key_search_y 1 \\} \\\\n\\{ 2 1 0 key_search_r key_search_r 1 \\} \\\\n\\{ 2 1 0 key_search_t key_search_t 1 \\} \\\\n\\{ 2 1 0 key_track_x key_track_x 1 \\} \\\\n\\{ 2 1 0 key_track_y key_track_y 1 \\} \\\\n\\{ 2 1 0 key_track_r key_track_r 1 \\} \\\\n\\{ 2 1 0 key_track_t key_track_t 1 \\} \\\\n\\{ 2 1 0 key_centre_offset_x key_centre_offset_x 1 \\} \\\\n\\{ 2 1 0 key_centre_offset_y key_centre_offset_y 1 \\} \\\\n\\} \\\"\\n    default_track_end_script = \\\" \\{0\\} \\{0\\} 1 1 1 \\{0\\} 1 0 -32 -32 32 32 -22 -22 22 22 \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\{0\\} \\}\\\\n\\\"\\n\\n    # Loop through each 2d track knob and add it's animation to the Tracker4 node.\\n    track_knobs = \\['op1', 'op2', 'op3', 'op4']\\n    all_trackdata = \\[]\\n    for i, knobname in enumerate(track_knobs):\\n        opknob = node\\[knobname]\\n        if opknob.isAnimated():\\n            trackdata = \\[]\\n            # Gather animation data from opknobs\\n            for i, curve in enumerate(opknob.animations()):\\n                if expression_link:\\n                    if i == 0:\\n                        dimension = 'x'\\n                    elif i == 1:\\n                        dimension = 'y'\\n                    trackdata_string = \\\" \\{\\{\\{0\\}\\}\\}\\\".format(\\\"parent.\\{0\\}.\\{1\\}.\\{2\\}\\\".format(node.fullName(), knobname, dimension))\\n                    trackdata.append(trackdata_string)\\n                    # livelink_transform must be true in order for expression links to work correctly on a tracker node\\n                    track_node\\['livelink_transform'].setValue(True)\\n                else:\\n                    trackdata_string = \\\" \\{ curve\\\"\\n                    for key in curve.keys():\\n                        trackdata_string += \\\" x\\{0\\} \\{1\\}\\\".format(int(key.x), key.y)\\n                    trackdata_string += \\\"\\}\\\"\\n                    trackdata.append(trackdata_string)\\n            all_trackdata.append(trackdata)\\n\\n        else:\\n            i -= 1\\n            continue\\n    # Append data to fromscript\\n    tracks_fromscript += \\\"\\\\n\\{\\\\n\\\"\\n    for i, curve in enumerate(all_trackdata):\\n        tracks_fromscript += \\\"  \\{ \\{1\\} \\\"\\n        tracks_fromscript += \\\"\\\\\\\"track_\\{0\\}\\\\\\\"\\\".format(i)\\n        for dim in curve:\\n            tracks_fromscript += \\\"\\{0\\}\\\".format(dim)\\n        tracks_fromscript += default_track_end_script\\n    tracks_fromscript += \\\"\\\\n\\}\\\"\\n    tracks_knob = track_node\\['tracks']\\n    tracks_knob.fromScript(tracks_fromscript)\\n    # Force update of Translate / Rotate / Scale\\n    track_node.showControlPanel()\\n    track_node.setTab(0)\\n    tracks_knob.setValue(0, 6)\\n    tracks_knob.setValue(1, 6)\\n    track_node.hideControlPanel()\\n    track_node\\['keyframe_display'].setValue(3)\"}\n addUserKnob {6 expression_link l \"expression link\" t \"If enabled, expression links will be created instead of copying the animation curves\" +STARTLINE}\n expression_link true\n addUserKnob {6 independent_identity_frame l \"independent identity frame\" t \"Add an independent identity frame to the output node. (More expressions! Use with caution.)\" -STARTLINE}\n addUserKnob {22 create_rotopaint l \"Roto / Add Layer\" t \"Create a roto node with a layer that has the matrix transform in it to use for tracking. \\n\\nWorks with any number of Existing Roto / RotoPaint / SplineWarp nodes as well if they are selected.\" T \"## Create Rotopaint\\nimport nuke\\nimport nuke.rotopaint as rp\\nimport _curvelib as cl\\n\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\nnode = nuke.thisNode()\\nmatrix = node\\['matrix']\\nnuke.root().begin()\\nidentity_frame = int(node\\['identity_frame'].getValue())\\nexpression_link = node\\['expression_link'].getValue()\\nindependent_identity_frame = node\\['independent_identity_frame'].getValue()\\n\\nfirst = None\\nfor every in matrix.animations():\\n    if first == None:\\n        first = int(every.keys()\\[0].x)\\n    else:\\n        first = min(first, int(every.keys()\\[0].x))\\n\\nlast = None\\nfor every in matrix.animations():\\n    if last == None:\\n        last = int(every.keys()\\[0].x)\\n    else:\\n        last = max(last, int(every.keys()\\[-1].x))\\n\\n\\nif first != None and last != None:\\n    if matrix.isAnimated():\\n        # Get all selected roto nodes\\n        selected_roto_nodes = \\[n for n in nuke.selectedNodes() if n.Class() in \\[\\\"Roto\\\", \\\"RotoPaint\\\", \\\"SplineWarp3\\\"]]\\n        if not selected_roto_nodes:\\n            _ = \\[n.setSelected(False) for n in nuke.allNodes()]\\n            roto_node = nuke.createNode(\\\"Roto\\\", inpanel=False)\\n            roto_node.setXYpos(node.xpos()-grid_x*0, node.ypos()+grid_y*2)\\n            roto_node.setSelected(True)\\n            selected_roto_nodes = \\[roto_node]\\n\\n        for roto_node in selected_roto_nodes:\\n\\n            curve_knob = roto_node\\['curves']\\n            roto_layer = rp.Layer(curve_knob)\\n            roto_layer.name = node.name()\\n\\n            curve = \\[cl.AnimCurve() for i in range(16)]\\n\\n            # Add independent identity frame calculation onto the target node.\\n            if expression_link and independent_identity_frame:\\n                # Add identity frame knob\\n                roto_node.addKnob(nuke.Tab_Knob('Identity Frame'))\\n                roto_node.addKnob(nuke.Int_Knob('identity_frame', 'identity frame'))\\n                roto_node\\['identity_frame'].setValue(int(node\\['identity_frame'].getValue()))\\n                roto_node.addKnob(nuke.PyScript_Knob('identity_to_curframe', 'Current'))\\n                roto_node.knob('identity_to_curframe').setTooltip(\\\"Set identity frame to current frame.\\\")\\n                roto_node.knob('identity_to_curframe').setCommand(\\\"nuke.thisNode().knob('identity_frame').setValue(nuke.frame())\\\")\\n                roto_node.setTab(1)\\n\\n                roto_node.addKnob(nuke.Double_Knob('determinant', 'determinant'))\\n                determinant = \\\"parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)\\\".format(node.fullName())\\n                roto_node\\['determinant'].setExpression(determinant)\\n                for i in range(4):\\n                    roto_node.addKnob(nuke.BBox_Knob(\\\"invmatrix\\{0\\}\\\".format(i)))\\n                # view-source:https://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\\n                roto_node\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n                roto_node\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n                roto_node\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n                roto_node\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n                roto_node\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n                roto_node\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n                roto_node\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n                roto_node\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n                roto_node\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n                roto_node\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n                roto_node\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n                roto_node\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n                roto_node\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n                roto_node\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n                roto_node\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n                roto_node\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n\\n                # view-source:https://www.euclideanspace.com/maths/algebra/matrix/arithmetic/fourD/index.htm\\n                curve\\[0].expressionString = \\\"parent.\\{0\\}.matrix.0*invmatrix0.0 + parent.\\{0\\}.matrix.1*invmatrix1.0 + parent.\\{0\\}.matrix.2*invmatrix2.0 + parent.\\{0\\}.matrix.3*invmatrix3.0\\\".format(node.fullName())\\n                curve\\[1].expressionString = \\\"parent.\\{0\\}.matrix.0*invmatrix0.1 + parent.\\{0\\}.matrix.1*invmatrix1.1 + parent.\\{0\\}.matrix.2*invmatrix2.1 + parent.\\{0\\}.matrix.3*invmatrix3.1\\\".format(node.fullName())\\n                curve\\[2].expressionString = \\\"parent.\\{0\\}.matrix.0*invmatrix0.2 + parent.\\{0\\}.matrix.1*invmatrix1.2 + parent.\\{0\\}.matrix.2*invmatrix2.2 + parent.\\{0\\}.matrix.3*invmatrix3.2\\\".format(node.fullName())\\n                curve\\[3].expressionString = \\\"parent.\\{0\\}.matrix.0*invmatrix0.3 + parent.\\{0\\}.matrix.1*invmatrix1.3 + parent.\\{0\\}.matrix.2*invmatrix2.3 + parent.\\{0\\}.matrix.3*invmatrix3.3\\\".format(node.fullName())\\n\\n                curve\\[4].expressionString = \\\"parent.\\{0\\}.matrix.4*invmatrix0.0 + parent.\\{0\\}.matrix.5*invmatrix1.0 + parent.\\{0\\}.matrix.6*invmatrix2.0 + parent.\\{0\\}.matrix.7*invmatrix3.0\\\".format(node.fullName())\\n                curve\\[5].expressionString = \\\"parent.\\{0\\}.matrix.4*invmatrix0.1 + parent.\\{0\\}.matrix.5*invmatrix1.1 + parent.\\{0\\}.matrix.6*invmatrix2.1 + parent.\\{0\\}.matrix.7*invmatrix3.1\\\".format(node.fullName())\\n                curve\\[6].expressionString = \\\"parent.\\{0\\}.matrix.4*invmatrix0.2 + parent.\\{0\\}.matrix.5*invmatrix1.2 + parent.\\{0\\}.matrix.6*invmatrix2.2 + parent.\\{0\\}.matrix.7*invmatrix3.2\\\".format(node.fullName())\\n                curve\\[7].expressionString = \\\"parent.\\{0\\}.matrix.4*invmatrix0.3 + parent.\\{0\\}.matrix.5*invmatrix1.3 + parent.\\{0\\}.matrix.6*invmatrix2.3 + parent.\\{0\\}.matrix.7*invmatrix3.3\\\".format(node.fullName())\\n\\n                curve\\[8].expressionString = \\\"parent.\\{0\\}.matrix.8*invmatrix0.0 + parent.\\{0\\}.matrix.9*invmatrix1.0 + parent.\\{0\\}.matrix.10*invmatrix2.0 + parent.\\{0\\}.matrix.11*invmatrix3.0\\\".format(node.fullName())\\n                curve\\[9].expressionString = \\\"parent.\\{0\\}.matrix.8*invmatrix0.1 + parent.\\{0\\}.matrix.9*invmatrix1.1 + parent.\\{0\\}.matrix.10*invmatrix2.1 + parent.\\{0\\}.matrix.11*invmatrix3.1\\\".format(node.fullName())\\n                curve\\[10].expressionString = \\\"parent.\\{0\\}.matrix.8*invmatrix0.2 + parent.\\{0\\}.matrix.9*invmatrix1.2 + parent.\\{0\\}.matrix.10*invmatrix2.2 + parent.\\{0\\}.matrix.11*invmatrix3.2\\\".format(node.fullName())\\n                curve\\[11].expressionString = \\\"parent.\\{0\\}.matrix.8*invmatrix0.3 + parent.\\{0\\}.matrix.9*invmatrix1.3 + parent.\\{0\\}.matrix.10*invmatrix2.3 + parent.\\{0\\}.matrix.11*invmatrix3.3\\\".format(node.fullName())\\n\\n                curve\\[12].expressionString = \\\"parent.\\{0\\}.matrix.12*invmatrix0.0 + parent.\\{0\\}.matrix.13*invmatrix1.0 + parent.\\{0\\}.matrix.14*invmatrix2.0 + parent.\\{0\\}.matrix.15*invmatrix3.0\\\".format(node.fullName())\\n                curve\\[13].expressionString = \\\"parent.\\{0\\}.matrix.12*invmatrix0.1 + parent.\\{0\\}.matrix.13*invmatrix1.1 + parent.\\{0\\}.matrix.14*invmatrix2.1 + parent.\\{0\\}.matrix.15*invmatrix3.1\\\".format(node.fullName())\\n                curve\\[14].expressionString = \\\"parent.\\{0\\}.matrix.12*invmatrix0.2 + parent.\\{0\\}.matrix.13*invmatrix1.2 + parent.\\{0\\}.matrix.14*invmatrix2.2 + parent.\\{0\\}.matrix.15*invmatrix3.2\\\".format(node.fullName())\\n                curve\\[15].expressionString = \\\"parent.\\{0\\}.matrix.12*invmatrix0.3 + parent.\\{0\\}.matrix.13*invmatrix1.3 + parent.\\{0\\}.matrix.14*invmatrix2.3 + parent.\\{0\\}.matrix.15*invmatrix3.3\\\".format(node.fullName())\\n\\n                for i in range(16):\\n                    curve\\[i].useExpression = True\\n                roto_node\\['label'].setValue('\\{0\\}: x\\[value identity_frame]'.format(node.name()))\\n\\n            elif expression_link and not independent_identity_frame:\\n                # Just expression link\\n                for f in range(first,last+1):\\n                    for i in range(16):\\n                        if node\\['expression_link'].getValue():\\n                            curve\\[i].expressionString = \\\"parent.\\{0\\}.matrix.\\{1\\}\\\".format(node.fullName(), i)\\n                            curve\\[i].useExpression = True\\n                        else:\\n                            curve\\[i].addKey(int(f), matrix.valueAt(f)\\[i])\\n                roto_node\\['label'].setValue('\\{0\\}: x\\{1\\}'.format(node.name(), identity_frame))\\n            else:\\n                # Copy the animation curves as is\\n                for f in range(first, last+1):\\n                    for i in range(16):\\n                        curve\\[i].addKey(int(f), node\\['matrix'].getValueAt(f, i))\\n                roto_node\\['label'].setValue('\\{0\\}: x\\{1\\}'.format(node.name(), identity_frame))\\n\\n            for y in range(1,5):\\n                for x in range(1,5):\\n                    cell = ((y-1)*4)+x-1\\n                    roto_layer.getTransform().setExtraMatrixAnimCurve(y-1,x-1, curve\\[cell])\\n            curve_knob.rootLayer.append(roto_layer)\\n            roto_node.setTab(1)\" +STARTLINE}\n addUserKnob {22 create_cornerpin l CornerPin t \"Create a cornerpin node, using the specified identity frame, if enabled. \\n\\nIf you need a CornerPin stabilizing, click the invert checkbox.\" -STARTLINE T \"## Create Cornerpin\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\n\\nnode = nuke.thisNode()\\nnuke.root().begin()\\n\\n_ = \\[n.setSelected(False) for n in nuke.allNodes()]\\ncornerpin = nuke.createNode(\\\"CornerPin2D\\\", inpanel=False)\\ncornerpin.setXYpos(node.xpos()-grid_x*0, node.ypos()+grid_y*2)\\ncornerpin.setSelected(True)\\ncornerpin.addKnob(nuke.Tab_Knob('Identity Frame'))\\ncornerpin.addKnob(nuke.Int_Knob('identity_frame', 'identity frame'))\\nreference_frame = int(node\\['identity_frame'].getValue())\\ncornerpin\\['identity_frame'].setValue(int(node\\['identity_frame'].getValue()))\\ncornerpin\\['label'].setValue(\\\"PlanarProjection : ref x\\{0\\}\\\".format('\\[value identity_frame]'))\\n\\nfor i in range(1, 5):\\n    if node\\['expression_link'].getValue():\\n        cornerpin\\['to\\{0\\}'.format(i)].setExpression(\\\"parent.\\{0\\}.op\\{1\\}\\\".format(node.fullName(), i))\\n    else:\\n        cornerpin\\['to\\{0\\}'.format(i)].copyAnimations(node\\['op\\{0\\}'.format(i)].animations())\\n    cornerpin\\['from\\{0\\}'.format(i)].setExpression('to\\{0\\}(identity_frame)'.format(i))\\ncornerpin.setTab(1)\"}\n addUserKnob {22 create_cornerpin_matrix l \"CornerPin Matrix\" t \"Create a Cornerpin with the animation in the extra matrix knob instead of the to/from knobs.\" -STARTLINE T \"## Create Cornerpin with tracking data in matrix\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\n\\nnode = nuke.thisNode()\\nnuke.root().begin()\\n\\n_ = \\[n.setSelected(False) for n in nuke.allNodes()]\\ncornerpin = nuke.createNode(\\\"CornerPin2D\\\", inpanel=False)\\ncornerpin.setXYpos(node.xpos()-grid_x*0, node.ypos()+grid_y*2)\\ncornerpin.setSelected(True)\\n\\n\\nreference_frame = int(node\\['identity_frame'].getValue())\\nexpression_link = node\\['expression_link'].getValue()\\nindependent_identity_frame = node\\['independent_identity_frame'].getValue()\\ncpmatrix = cornerpin\\['transform_matrix']\\n\\nif expression_link and independent_identity_frame:\\n    # Add identity frame knob\\n    cornerpin.addKnob(nuke.Tab_Knob('Identity Frame'))\\n    cornerpin.addKnob(nuke.Int_Knob('identity_frame', 'identity frame'))\\n    cornerpin\\['identity_frame'].setValue(int(node\\['identity_frame'].getValue()))\\n    cornerpin.addKnob(nuke.PyScript_Knob('identity_to_curframe', 'Current'))\\n    cornerpin.knob('identity_to_curframe').setTooltip(\\\"Set identity frame to current frame.\\\")\\n    cornerpin.knob('identity_to_curframe').setCommand(\\\"nuke.thisNode().knob('identity_frame').setValue(nuke.frame())\\\")\\n    cornerpin.setTab(1)\\n\\n    cornerpin.addKnob(nuke.Double_Knob('determinant', 'determinant'))\\n    determinant = \\\"parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.12(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.13(identity_frame)+  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.3(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.7(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.11(identity_frame) * parent.\\{0\\}.matrix.14(identity_frame)-  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.8(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.2(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)-  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.6(identity_frame) * parent.\\{0\\}.matrix.9(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)-  parent.\\{0\\}.matrix.1(identity_frame) * parent.\\{0\\}.matrix.4(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)+  parent.\\{0\\}.matrix.0(identity_frame) * parent.\\{0\\}.matrix.5(identity_frame) * parent.\\{0\\}.matrix.10(identity_frame) * parent.\\{0\\}.matrix.15(identity_frame)\\\".format(node.fullName())\\n    cornerpin\\['determinant'].setExpression(determinant)\\n    for i in range(4):\\n        cornerpin.addKnob(nuke.BBox_Knob(\\\"invmatrix\\{0\\}\\\".format(i)))\\n    # view-source:https://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\\n    cornerpin\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n    cornerpin\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n    cornerpin\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n    cornerpin\\['invmatrix0'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n    cornerpin\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n    cornerpin\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n    cornerpin\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n    cornerpin\\['invmatrix1'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n    cornerpin\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n    cornerpin\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n    cornerpin\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.15(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n    cornerpin\\['invmatrix2'].setExpression(\\\"(parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.3(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.7(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.11(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n    cornerpin\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 0)\\n    cornerpin\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 1)\\n    cornerpin\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.12(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.13(identity_frame) + parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.14(identity_frame))/determinant\\\".format(node.fullName()), 2)\\n    cornerpin\\['invmatrix3'].setExpression(\\\"(parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) - parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.8(identity_frame) + parent.\\{0\\}.matrix.2(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.6(identity_frame)*parent.\\{0\\}.matrix.9(identity_frame) - parent.\\{0\\}.matrix.1(identity_frame)*parent.\\{0\\}.matrix.4(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame) + parent.\\{0\\}.matrix.0(identity_frame)*parent.\\{0\\}.matrix.5(identity_frame)*parent.\\{0\\}.matrix.10(identity_frame))/determinant\\\".format(node.fullName()), 3)\\n\\n    # view-source:https://www.euclideanspace.com/maths/algebra/matrix/arithmetic/fourD/index.htm\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.0*invmatrix0.0 + parent.\\{0\\}.matrix.1*invmatrix1.0 + parent.\\{0\\}.matrix.2*invmatrix2.0 + parent.\\{0\\}.matrix.3*invmatrix3.0\\\".format(node.fullName()), 0)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.0*invmatrix0.1 + parent.\\{0\\}.matrix.1*invmatrix1.1 + parent.\\{0\\}.matrix.2*invmatrix2.1 + parent.\\{0\\}.matrix.3*invmatrix3.1\\\".format(node.fullName()), 1)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.0*invmatrix0.2 + parent.\\{0\\}.matrix.1*invmatrix1.2 + parent.\\{0\\}.matrix.2*invmatrix2.2 + parent.\\{0\\}.matrix.3*invmatrix3.2\\\".format(node.fullName()), 2)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.0*invmatrix0.3 + parent.\\{0\\}.matrix.1*invmatrix1.3 + parent.\\{0\\}.matrix.2*invmatrix2.3 + parent.\\{0\\}.matrix.3*invmatrix3.3\\\".format(node.fullName()), 3)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.4*invmatrix0.0 + parent.\\{0\\}.matrix.5*invmatrix1.0 + parent.\\{0\\}.matrix.6*invmatrix2.0 + parent.\\{0\\}.matrix.7*invmatrix3.0\\\".format(node.fullName()), 4)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.4*invmatrix0.1 + parent.\\{0\\}.matrix.5*invmatrix1.1 + parent.\\{0\\}.matrix.6*invmatrix2.1 + parent.\\{0\\}.matrix.7*invmatrix3.1\\\".format(node.fullName()), 5)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.4*invmatrix0.2 + parent.\\{0\\}.matrix.5*invmatrix1.2 + parent.\\{0\\}.matrix.6*invmatrix2.2 + parent.\\{0\\}.matrix.7*invmatrix3.2\\\".format(node.fullName()), 6)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.4*invmatrix0.3 + parent.\\{0\\}.matrix.5*invmatrix1.3 + parent.\\{0\\}.matrix.6*invmatrix2.3 + parent.\\{0\\}.matrix.7*invmatrix3.3\\\".format(node.fullName()), 7)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.8*invmatrix0.0 + parent.\\{0\\}.matrix.9*invmatrix1.0 + parent.\\{0\\}.matrix.10*invmatrix2.0 + parent.\\{0\\}.matrix.11*invmatrix3.0\\\".format(node.fullName()), 8)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.8*invmatrix0.1 + parent.\\{0\\}.matrix.9*invmatrix1.1 + parent.\\{0\\}.matrix.10*invmatrix2.1 + parent.\\{0\\}.matrix.11*invmatrix3.1\\\".format(node.fullName()), 9)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.8*invmatrix0.2 + parent.\\{0\\}.matrix.9*invmatrix1.2 + parent.\\{0\\}.matrix.10*invmatrix2.2 + parent.\\{0\\}.matrix.11*invmatrix3.2\\\".format(node.fullName()), 10)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.8*invmatrix0.3 + parent.\\{0\\}.matrix.9*invmatrix1.3 + parent.\\{0\\}.matrix.10*invmatrix2.3 + parent.\\{0\\}.matrix.11*invmatrix3.3\\\".format(node.fullName()), 11)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.12*invmatrix0.0 + parent.\\{0\\}.matrix.13*invmatrix1.0 + parent.\\{0\\}.matrix.14*invmatrix2.0 + parent.\\{0\\}.matrix.15*invmatrix3.0\\\".format(node.fullName()), 12)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.12*invmatrix0.1 + parent.\\{0\\}.matrix.13*invmatrix1.1 + parent.\\{0\\}.matrix.14*invmatrix2.1 + parent.\\{0\\}.matrix.15*invmatrix3.1\\\".format(node.fullName()), 13)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.12*invmatrix0.2 + parent.\\{0\\}.matrix.13*invmatrix1.2 + parent.\\{0\\}.matrix.14*invmatrix2.2 + parent.\\{0\\}.matrix.15*invmatrix3.2\\\".format(node.fullName()), 14)\\n    cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.12*invmatrix0.3 + parent.\\{0\\}.matrix.13*invmatrix1.3 + parent.\\{0\\}.matrix.14*invmatrix2.3 + parent.\\{0\\}.matrix.15*invmatrix3.3\\\".format(node.fullName()), 15)\\n\\n    cornerpin\\['label'].setValue(\\\"PlanarProjection : ref x\\{0\\}\\\".format('\\[value identity_frame]'))\\nelif expression_link and not independent_identity_frame:\\n    cornerpin\\['label'].setValue('\\{0\\}: x\\{1\\}'.format(node.name(), reference_frame))\\n    for i in range(16):\\n        cpmatrix.setExpression(\\\"parent.\\{0\\}.matrix.\\{1\\}\\\".format(node.fullName(), i), i)\\nelse:\\n    cornerpin\\['label'].setValue('\\{0\\}: x\\{1\\}'.format(node.name(), reference_frame))\\n    cpmatrix.copyAnimations(matrix.animations())\"}\n addUserKnob {22 create_gridwarp l GridWarp -STARTLINE T \"node = nuke.thisNode()\\nmatrix = node\\['matrix']\\nnuke.root().begin()\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\nexpression_link = node\\['expression_link'].getValue()\\n\\nif matrix.isAnimated():\\n    _ = \\[n.setSelected(False) for n in nuke.allNodes()]\\n    gridwarp = nuke.createNode(\\\"GridWarp3\\\")\\n    gridwarp.setXYpos(node.xpos()-grid_x*0, node.ypos()+grid_y*2)\\n    gridwarp.setSelected(True)\\n\\n    # Add Label\\n    reference_frame = int(node\\['identity_frame'].getValue())\\n    if expression_link:\\n        gridwarp\\['label'].setValue('\\{0\\}: x\\[value identity_frame]'.format(node.name()))\\n    else:\\n        gridwarp\\['label'].setValue('\\{0\\}: x\\{1\\}'.format(node.name(), reference_frame))\\n\\n    gridwarp_matrices = \\[gridwarp\\['source_grid_transform_matrix'], gridwarp\\['destination_grid_transform_matrix']]\\n\\n    if expression_link:\\n        for i in range(16):\\n            for gridwarp_matrix in gridwarp_matrices:\\n                gridwarp_matrix.setExpression(\\\"parent.\\{0\\}.matrix.\\{1\\}\\\".format(node.fullName(), i), i)\\n    else:\\n        gridwarp_matrices\\[0].copyAnimations(matrix.animations())\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 desc l \" \" T \"developed by Vit Sedlacek www.vitsedlacek.com\\noptimized and improved by Jed Smith - http://gist.github.com/jedypod\"}\n}\n Axis2 {\n  inputs 0\n  useMatrix true\n  name Matrix_original\n  xpos -276\n  ypos -260\n  disable true\n }\n Input {\n  inputs 0\n  name InputBG\n  label \"\\[value number]\"\n  xpos 620\n  ypos -304\n  addUserKnob {20 User}\n  addUserKnob {18 ip1 R -100 100}\n  ip1 {0 0 0}\n  addUserKnob {6 ip1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip1_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip1_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip1_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 ip2 l \"\" +STARTLINE R -100 100}\n  ip2 {0 0 0}\n  addUserKnob {6 ip2_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip2_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip2_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip2_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 ip3 l \"\" +STARTLINE R -100 100}\n  ip3 {0 0 0}\n  addUserKnob {6 ip3_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip3_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip3_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip3_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 ip4 l \"\" +STARTLINE R -100 100}\n  ip4 {0 0 0}\n  addUserKnob {6 ip4_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip4_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip4_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 ip4_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Output {\n  name Output1\n  xpos 600\n  ypos 531\n }\n Axis2 {\n  inputs 0\n  translate {0.5 0.5 0}\n  useMatrix true\n  matrix {\n      {{parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix}}\n      {{parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix}}\n      {{parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix}}\n      {{parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix} {parent._MATCH_SELECTION_.matrix}}\n    }\n  name CENTER\n  xpos -190\n  ypos 78\n  addUserKnob {20 User}\n  addUserKnob {7 plane_size l \"\" +STARTLINE R 0.1 100}\n  plane_size 1\n }\nset Na05aa70 [stack 0]\n Axis2 {\n  translate {{parent.CENTER.plane_size/2} {parent.CENTER.plane_size/2} 0}\n  name UR\n  xpos -131\n  ypos 222\n }\npush $Na05aa70\n Axis2 {\n  translate {{-parent.CENTER.plane_size/2} {parent.CENTER.plane_size/2} 0}\n  name UL\n  xpos -23\n  ypos 222\n }\npush $Na05aa70\n Axis2 {\n  translate {{parent.CENTER.plane_size/2} {-parent.CENTER.plane_size/2} 0}\n  name LR\n  xpos -241\n  ypos 222\n }\npush $Na05aa70\n Axis2 {\n  translate {{-parent.CENTER.plane_size/2} {-parent.CENTER.plane_size/2} 0}\n  name LL\n  xpos -367\n  ypos 222\n }\n TransformGeo {\n  inputs 0\n  translate {-53.84128952 26.45331383 -89.45389557}\n  rotate {-36.82652664 86.55776215 93.70707703}\n  scaling {3.87788868 4.277028561 1.28276515}\n  name _MATCH_SELECTION_\n  xpos -40\n  ypos 99\n }\n Input {\n  inputs 0\n  name InputCam\n  label \"\\[value number]\"\n  xpos 440\n  ypos -303\n  number 1\n }\npush 0\n Axis2 {\n  inputs 0\n  name point_4\n  xpos 300\n  ypos -270\n }\n Axis2 {\n  inputs 0\n  name point_3\n  xpos 190\n  ypos -270\n }\n Axis2 {\n  inputs 0\n  name point_2\n  xpos 80\n  ypos -270\n }\n Axis2 {\n  inputs 0\n  name point_1\n  xpos -30\n  ypos -271\n }\n Scene {\n  inputs 6\n  name Scene1\n  xpos 450\n  ypos -95\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PlotScanline.gizmo",
    "content": "Group {\nname PlotScanline\ntile_color 0x9c0000ff\nselected true\naddUserKnob {20 Controls}\naddUserKnob {4 mode l \"Sampling method\" M {\"Slice Per Pixel (faster)\" \"Slice Area (slower)\" \"Full Scanline\" \"\" \"\" \"\"}}\nmode \"Full Scanline\"\naddUserKnob {6 add2image l \"Add to original\" +STARTLINE}\nadd2image true\naddUserKnob {6 Normalize -STARTLINE}\naddUserKnob {6 tonemap l \"Tone Map (HDRI)\" -STARTLINE}\naddUserKnob {6 curve l \"Plot as curve\" +STARTLINE}\ncurve true\naddUserKnob {3 curveFat l \"Curve Thickness\" -STARTLINE}\naddUserKnob {3 sa l \"Sample Area\" t \"Disabled when using pr pixel method.\"}\nsa 1\naddUserKnob {7 lift l Lift R -1 1}\naddUserKnob {7 scale l Scale R 0 5}\nscale 1\naddUserKnob {26 \"\"}\naddUserKnob {12 p1 l \"Start Point\"}\np1 {376 418}\naddUserKnob {12 p2 l \"End Point\" -STARTLINE}\np2 {428.5 425.5}\naddUserKnob {26 \"\"}\naddUserKnob {26 \"\" l \"About \" T \"Plot Scanline v0.4 | theo@euqahuba.com\\nUse P1 to select your scanline and/or you start slice.\"}\n}\nInput {\ninputs 0\nname Input1\nxpos -480\nypos 62\n}\nset N29fc2280 [stack 0]\nExpression {\ntemp_name0 length\ntemp_expr0 sqrt(r*r+g*g+b*b)\nexpr0 r/length\nexpr1 g/length\nexpr2 b/length\nname Normalize\nxpos -480\nypos 108\ndisable {{1-parent.Normalize i}}\n}\nExpression {\nexpr0 r/(r+1)\nexpr1 g/(g+1)\nexpr2 b/(b+1)\nname tonamap\nxpos -480\nypos 134\ndisable {{1-parent.tonemap i}}\n}\nset N29c18730 [stack 0]\nExpression {\ntemp_name0 rExpr\ntemp_expr0 \"min(max(0,\\r\\nceil(r(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name1 gExpr\ntemp_expr1 \"min(max(0,\\r\\nceil(g(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name2 bExpr\ntemp_expr2 \"min(max(0,\\r\\nceil(b(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\nexpr0 rExpr\nexpr1 gExpr\nexpr2 bExpr\nexpr3 0\nname scanline\nxpos -302\nypos 193\naddUserKnob {20 User}\n}\npush $N29c18730\nExpression {\ntemp_name0 rExpr\ntemp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name1 gExpr\ntemp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name2 bExpr\ntemp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\nexpr0 rExpr\nexpr1 gExpr\nexpr2 bExpr\nexpr3 0\nname Expression_highQuality\nxpos -515\nypos 197\naddUserKnob {20 User}\n}\npush $N29c18730\nExpression {\ntemp_name0 rExpr\ntemp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name1 gExpr\ntemp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\ntemp_name2 bExpr\ntemp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\nexpr0 rExpr\nexpr1 gExpr\nexpr2 bExpr\nexpr3 0\nname perPixel\nxpos -419\nypos 201\naddUserKnob {20 User}\n}\nSwitch {\ninputs 3\nwhich {{parent.mode i}}\nname Switch2\nxpos -480\nypos 253\n}\nMatrix {\nmatrix {\n    {0 1 0}\n    {1 -4 1}\n    {0 1 0}\n  }\nname Matrix2\nselected true\nxpos -480\nypos 284\ndisable {{-1+parent.curve i x70 1}}\n}\nDilate {\nsize {{parent.curveFat}}\nname Dilate1\nxpos -480\nypos 326\ndisable {{-1+parent.curve.main}}\n}\nClamp {\nname Clamp1\nxpos -480\nypos 383\n}\nset N2a7d6ae0 [stack 0]\npush $N29fc2280\nDot {\nname Dot1\nxpos -556\nypos 66\n}\nClamp {\nmaximum 331\nname Clamp2\nxpos -590\nypos 352\n}\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nxpos -590\nypos 394\n}\nDot {\nname Dot2\nxpos -556\nypos 433\n}\npush $N2a7d6ae0\nSwitch {\ninputs 2\nwhich {{parent.add2image i}}\nname Switch1\nxpos -480\nypos 425\n}\nOutput {\nname Output1\nxpos -480\nypos 470\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PointCloudKeyer.gizmo",
    "content": "Group {\n name PointCloudKeyer\n onCreate \"try: \\n    n = nuke.thisNode()\\n    n\\['translate'].setFlag(0x0000002000000000)\\nexcept:\\n    print('failed to set flag')\"\n tile_color 0xff00ff\n selected true\n addUserKnob {20 PointCloudKeyer}\n addUserKnob {4 view l View t \"Point Cloud - plots the x,y values from the selected color space\\nComposite - premulted Fg over Bg\\nFinal Result - unpremulted Fg with alpha from the key\\n\" M {\"Point Cloud\" Composite \"Final Result\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n view Composite\n addUserKnob {6 overlayPointCloud l \"overlay point cloud\" +STARTLINE}\n addUserKnob {26 _2 l \"<b>Point Cloud</b>\"}\n addUserKnob {4 colorspace l \"color space\" t \"Chroma Red/Blue - YCbCr colorspace. Plots chroma difference blue vs chroma different red. Generally gives the most predictable results.\\n\\nChroma x/y - CIE-Yxy colorspace. Plots choma red vs chroma blue. Similar to the Chroma Red/Blue but different math. \\n\\nChroma/Hue - CIE-LCH colorspace. Plots choma vs hue.\\n\\nRed/Blue Average - Plots the g channel vs  (r+b)/2\\n\\nCustom - use the channels input\" M {\"Chroma Red/Blue\" \"Chroma x/y\" Chroma/Hue \"Red/Blue Average\" Custom \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {12 translate}\n addUserKnob {14 scale t \"Increasing this value by a large amount will mirror the point cloud\" R 0 100}\n scale 1\n addUserKnob {6 densePointCloud l \"dense point cloud\" t \"Merges additional points under the generated point cloud. \" +STARTLINE}\n addUserKnob {6 mirror l \"swap axis\" -STARTLINE}\n addUserKnob {41 disable_1 l \"invert alpha\" T Invert1.disable}\n addUserKnob {20 about}\n addUserKnob {26 _4 l \"\" +STARTLINE T \"instructions and demo at \"}\n addUserKnob {26 _3 l \"\" -STARTLINE T \"<a href=\\\"http://www.isaacspiegel.com/blog\\\">isaacspiegel.com/blog</a>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 _1 l \"\" +STARTLINE T \"by isaac spiegel\\nisaacspiegel.com\\n\\nfeedback on this tool? email me!\\nisaacspiegel.freelance@gmail.com\"}\n}\n Input {\n  inputs 0\n  name custom\n  xpos -150\n  ypos 62\n  number 3\n }\n Dot {\n  name Dot12\n  note_font_size 25\n  xpos -119\n  ypos 183\n }\n Input {\n  inputs 0\n  name Src\n  xpos -590\n  ypos -106\n }\n Dot {\n  name Dot7\n  label \"input footage\"\n  note_font_size 25\n  xpos -559\n  ypos -57\n }\n Dot {\n  name Dot2\n  note_font_size 25\n  xpos -559\n  ypos 63\n }\nset N10d16a50 [stack 0]\n Expression {\n  expr0 g\n  expr1 (r+b)/2\n  name Expression1\n  label \"red/blue average\"\n  xpos -260\n  ypos 104\n }\npush $N10d16a50\n Colorspace {\n  colorspace_out CIE-LCH\n  name Colorspace2\n  label CIE-LCH\n  xpos -370\n  ypos 104\n }\npush $N10d16a50\n Colorspace {\n  colorspace_out CIE-Yxy\n  name Colorspace1\n  label CIE_Yxy\n  xpos -480\n  ypos 104\n }\npush $N10d16a50\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace3\n  label yCbCr\n  xpos -590\n  ypos 104\n }\n Switch {\n  inputs 5\n  which {{parent.colorspace}}\n  name colorspace\n  xpos -590\n  ypos 182\n }\n Dot {\n  name Dot8\n  note_font_size 25\n  xpos -559\n  ypos 279\n }\nset N10d8cf40 [stack 0]\n Shuffle {\n  red blue\n  blue alpha\n  name Shuffle_horiz\n  xpos -480\n  ypos 326\n }\npush $N10d8cf40\n Shuffle {\n  red green\n  green blue\n  blue alpha\n  name Shuffle_vert\n  xpos -590\n  ypos 326\n }\nset N1155d430 [stack 0]\n Switch {\n  inputs 2\n  which {{parent.mirror}}\n  name layout\n  xpos -590\n  ypos 398\n }\n Grade {\n  blackpoint {{(parent.scale.0-1)/scaleDiv} {(parent.scale.1-1)/scaleDiv} 0 0}\n  whitepoint {{1-((parent.scale.0-1))/scaleDiv} {1-((parent.scale.1-1))/scaleDiv} 1 1}\n  add {{parent.translate.0/width} {parent.translate.1/height} 0 0}\n  black_clamp false\n  name Grade_translate\n  label \"offset: L/R/Up/Dn\"\n  xpos -590\n  ypos 440\n  addUserKnob {20 User}\n  addUserKnob {3 scaleDiv}\n  scaleDiv 200\n }\nset N1158be90 [stack 0]\n Input {\n  inputs 0\n  name Shape\n  xpos -40\n  ypos -106\n  number 1\n }\n Dot {\n  name Dot4\n  label \"input roto\"\n  note_font_size 25\n  xpos -9\n  ypos -57\n }\n STMap {\n  inputs 2\n  uv rgb\n  name STMap1\n  xpos -40\n  ypos 440\n }\n Invert {\n  name Invert1\n  xpos -40\n  ypos 488\n }\npush $N10d16a50\n Dot {\n  name Dot3\n  note_font_size 25\n  xpos -669\n  ypos 63\n }\n Dot {\n  name Dot1\n  note_font_size 25\n  xpos -669\n  ypos 543\n }\nset N115c2870 [stack 0]\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -40\n  ypos 536\n }\nset N115c7780 [stack 0]\n Dot {\n  name Dot6\n  label \"output alpha + rgba\"\n  note_font_size 25\n  xpos -9\n  ypos 711\n }\nset N115d5d00 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 25\n  xpos 101\n  ypos 879\n }\npush $N1158be90\npush $N115c2870\n BlinkScript {\n  inputs 2\n  recompileCount 2\n  ProgramGroup 1\n  KernelDescription \"2 \\\"InverseSTKernel\\\" iterate pixelWise 79737837f0b8f5ef5ba9dd8c86c9e76f184ef0da76c94577b5431d3e3e08b063 3 \\\"src\\\" Read Point \\\"stmap\\\" Read Point \\\"dst\\\" Write Random 1 \\\"resolution\\\" Float 2 AAAAAAAAAAA= 1 \\\"resolution\\\" 2 1 0\"\n  kernelSource \"// Original Kernel by Mads Hagbarth, modified to use STMaps by Erwan Leroy\\n\\nkernel InverseSTKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> stmap;\\n  Image<eWrite, eAccessRandom> dst;\\n\\n  param:\\n    float2 resolution;\\n\\n  void process() \\{\\n    float2 uv;\\n    uv.x = stmap().x * resolution.x - 0.5f;\\n    uv.y = stmap().y * resolution.y - 0.5f;\\n    //always make sure that you don't write outside bounds\\n    //as it will usually crash nuke.\\n    if (dst.bounds.inside(uv.x,uv.y)) \\{ \\n      dst(uv.x,uv.y) = src(); \\n    \\}\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  InverseSTKernel_resolution {{width} {height}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos -590\n  ypos 608\n }\n Dot {\n  name Dot14\n  note_font_size 25\n  xpos -559\n  ypos 663\n }\nset N115fcac0 [stack 0]\n Blur {\n  channels rgba\n  size 1.5\n  name Blur3\n  xpos -810\n  ypos 662\n }\nset N116015d0 [stack 0]\n Expression {\n  expr0 r/a\n  expr1 g/a\n  expr2 b/a\n  expr3 \"a > 0 ? 1 : a\"\n  name Expression2\n  xpos -810\n  ypos 708\n }\n Premult {\n  name Premult3\n  xpos -810\n  ypos 734\n }\npush $N115fcac0\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge4\n  xpos -590\n  ypos 734\n  disable {{!parent.densePointCloud}}\n }\n Dot {\n  name Dot15\n  note_font_size 25\n  xpos -559\n  ypos 783\n }\nset N12a097d0 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 25\n  xpos -119\n  ypos 783\n }\nset N12a0e480 [stack 0]\npush $N115d5d00\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge3\n  xpos -40\n  ypos 830\n  disable {{!parent.overlayPointCloud}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -40\n  ypos 872\n }\npush $N115c7780\n Premult {\n  name Premult1\n  xpos 180\n  ypos 542\n }\nset N12a32630 [stack 0]\n Input {\n  inputs 0\n  name Bg\n  xpos 400\n  ypos 302\n  number 2\n }\n Dot {\n  name Dot10\n  label \"BG input\"\n  note_font_size 25\n  xpos 431\n  ypos 375\n }\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge1\n  xpos 400\n  ypos 542\n }\npush $N12a32630\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input2]\"}}\n  name Switch_BgInput\n  xpos 400\n  ypos 602\n }\n Dot {\n  name Dot18\n  note_font_size 25\n  xpos 431\n  ypos 711\n }\nset N12a5d4b0 [stack 0]\n Dot {\n  name Dot19\n  note_font_size 25\n  xpos 541\n  ypos 879\n }\npush $N12a0e480\npush $N12a5d4b0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge2\n  xpos 400\n  ypos 782\n  disable {{!parent.overlayPointCloud}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy3\n  xpos 400\n  ypos 872\n }\n Dot {\n  name Dot11\n  label composite\n  note_font_size 25\n  xpos 431\n  ypos 927\n }\nset N12a864b0 [stack 0]\npush $N12a097d0\n Dot {\n  name Dot5\n  label \"output view help\"\n  note_font_size 25\n  xpos -559\n  ypos 879\n }\n Dot {\n  name Dot9\n  note_font_size 25\n  xpos -559\n  ypos 927\n }\n Switch {\n  inputs 3\n  which {{parent.view}}\n  name output_toggle\n  xpos -40\n  ypos 926\n }\n Output {\n  name Output1\n  xpos -40\n  ypos 998\n }\npush $N12a864b0\npush $N116015d0\npush $N1155d430\n Viewer {\n  inputs 3\n  frame_range 1-37\n  colour_sample_bbox {-0.2989583313 -0.08749999851 -0.2979166806 -0.08645833284}\n  name Viewer1\n  xpos 220\n  ypos 1214\n  hide_input true\n  addUserKnob {20 Lock}\n  addUserKnob {6 lock_all_buffers l \"lock all buffers\" -STARTLINE}\n  addUserKnob {6 lock_buffer_1 l \"lock buffer 1\" +STARTLINE}\n  addUserKnob {6 lock_buffer_2 l \"lock buffer 2\" +STARTLINE}\n  addUserKnob {6 lock_buffer_3 l \"lock buffer 3\" +STARTLINE}\n  addUserKnob {6 lock_buffer_4 l \"lock buffer 4\" +STARTLINE}\n  addUserKnob {6 lock_buffer_5 l \"lock buffer 5\" +STARTLINE}\n  addUserKnob {6 lock_buffer_6 l \"lock buffer 6\" +STARTLINE}\n  addUserKnob {6 lock_buffer_7 l \"lock buffer 7\" +STARTLINE}\n  addUserKnob {6 lock_buffer_8 l \"lock buffer 8\" +STARTLINE}\n  addUserKnob {6 lock_buffer_9 l \"lock buffer 9\" +STARTLINE}\n  addUserKnob {6 lock_buffer_0 l \"lock buffer 0\" +STARTLINE}\n  addUserKnob {6 toAddBtn -STARTLINE}\n  toAddBtn true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosMatte_MJ.gizmo",
    "content": "Group {\n name PosMatte\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 geo_select T geoCTRL.geo_select}\n addUserKnob {41 transform T geoCTRL.transform}\n addUserKnob {41 position l \"world position\" t \"Select position (world space) channel.\\nIf position is camera space, use 'ConvertPNZ' to convert to world space.\" T shuffle_pos.in}\n addUserKnob {6 unpremult_src l \"unpremult source\" t \"Anti-aliasing edge will process improper matte on the edge. Unpremult the data with alpha will fix this issue.\\n\\n* input must contain alpha in alpha channel.\\n** uncheck this box if position data is un-filtered.\\n*** this can be fix the external edge, but not the intersect edge.\" +STARTLINE}\n addUserKnob {6 premult_result l \"premult result\" t \"Toggle the premult result.\" -STARTLINE}\n premult_result true\n addUserKnob {26 title_matte l <b>MATTE</b>}\n addUserKnob {41 mat_shape l shape T menu02.mat_shape}\n addUserKnob {6 invert_matte l \"invert matte\" t \"Invert the matte of the shape. Same as deepHoldout but with falloff support (soften matte).\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 pos2D l \"2D pos\" t \"Select the matte spot in 2D space.\" T menu03.pos2D}\n addUserKnob {41 mat_translate l \"3D pos\" T geoCTRL.translate}\n addUserKnob {41 file_menu l @FolderIcon T geoCTRL.file_menu}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T geoCTRL.snap_menu}\n addUserKnob {26 \"\"}\n addUserKnob {41 mat_rot_order l \"rotation order\" T geoCTRL.rot_order}\n addUserKnob {41 mat_rotate l rotate T geoCTRL.rotate}\n addUserKnob {41 mat_scaling l scale T geoCTRL.scaling}\n addUserKnob {41 mat_uniform_scale l \"uniform scale\" T geoCTRL.uniform_scale}\n addUserKnob {41 mat_skew l skew T geoCTRL.skew}\n addUserKnob {41 mat_pivot l pivot T geoCTRL.pivot}\n addUserKnob {22 set_link l \"link to selected axis/geo\" t \"Select any 3D nodes and link the node with this button. It gives you a control in 3D for transformation.\" T \"def getLevel() :\\n    ### level define ###\\n    if len(nuke.thisNode().fullName().split('.')) == 1 :\\n          ggLevel = nuke.root()\\n    else :\\n          nodePath = nuke.thisNode().fullName().split('.')\\n          nodePath.pop()\\n          ggLevel = nuke.toNode('.'.join(nodePath))\\n    return ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\nmainKnobs = \\['mat_rot_order','mat_translate','mat_rotate','mat_scaling','mat_uniform_scale','mat_skew','mat_pivot']\\n\\naxWhiteList = \\['Axis','Axis2','Cube','Sphere','Cylinder','Card','Card2','ReadGeo','ReadGeo2','TransformGeo']\\n\\ntry :\\n    with root :\\n        selNode = nuke.selectedNode()\\n    \\n    with thisGRP :\\n        if axWhiteList.count(selNode.Class()) != 0 :\\n            for knob in mainKnobs :\\n                thisGRP\\[knob].clearAnimated()\\n            \\n            thisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.rot_order'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.translate'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.rotate'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.scaling'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.uniform_scale'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.skew'.format(selNode.name()) )\\n            thisGRP\\[mainKnobs\\[6]].setExpression( '\\{0\\}.pivot'.format(selNode.name()) )\\n        else :\\n            nuke.message('No support node selected.')\\nexcept :\\n    nuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the expression link but won't reset any data. So the transformation data still works if input doesn't contain any movement.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['mat_rot_order','mat_translate','mat_rotate','mat_scaling','mat_uniform_scale','mat_skew','mat_pivot']\\n\\nfor i in range (0, len(mainKnobs), 1) :\\n    thisGRP\\[mainKnobs\\[i]].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, the linked node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['mat_translate','mat_rotate','mat_scaling','mat_uniform_scale','mat_skew','mat_pivot']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected axis/geo\" t \"Select the axis/geo, then this will process 'link to selected axis/geo' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with matte applied</b>\\nThis can show the instant result of the projection. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with matte applied\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" T PositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" T PositionToPoints.pointSize}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_falloff l <b>FALLOFF</b>}\n addUserKnob {13 cube3d_falloff l \"cube3D falloff\" +DISABLED}\n cube3d_falloff {1 1 1}\n addUserKnob {41 falloff_type l \"falloff type\" T menu01.falloff_type}\n addUserKnob {7 uniform_falloff l \"uniform falloff\" t \"This is a globel falloff value. Support for any shape of matte.\" R 0.001 1}\n uniform_falloff 0.5\n addUserKnob {7 exp_in l \"exponential in\" +DISABLED R 0.1 10}\n exp_in 1\n addUserKnob {7 exp_out l out -STARTLINE +DISABLED R 0.1 10}\n exp_out 4\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.2}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-09-04}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"v1.2<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'2D&nbsp;sample'&nbsp;will&nbsp;break&nbsp;animated&nbsp;'3D&nbsp;pos'&nbsp;knob<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'cube3D&nbsp;falloff'&nbsp;separation<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;matte:&nbsp;cube&nbsp;pivot,&nbsp;also&nbsp;in&nbsp;3D&nbsp;preview<br>'PosProjection'<br>&nbsp;&nbsp;-&nbsp;support&nbsp;overscan<br><br>1.1<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;corrected&nbsp;pivot&nbsp;result<br>&nbsp;&nbsp;-&nbsp;'position'&nbsp;knob&nbsp;label&nbsp;changed&nbsp;to&nbsp;'world&nbsp;position'<br><br>1.0<br>-&nbsp;using&nbsp;Deep2VP&nbsp;setup&nbsp;in&nbsp;2D&nbsp;comp\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1509\n  ypos 255\n  bdwidth 270\n  bdheight 479\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x7f7f7fff\n  label bin\n  note_font_size 42\n  xpos -1164\n  ypos 257\n  bdwidth 452\n  bdheight 1357\n }\n Input {\n  inputs 0\n  name CG\n  xpos 0\n  ypos -32\n }\n Dot {\n  name Dot1\n  xpos 34\n  ypos 86\n }\nset N1e8ac800 [stack 0]\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -524\n  ypos 79\n  disable {{!parent.unpremult_src}}\n }\nset N1e8ac400 [stack 0]\n Shuffle {\n  in none\n  in2 alpha\n  alpha red2\n  name shuffle_pos\n  xpos -524\n  ypos 167\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -524\n  ypos 247\n }\n Add {\n  channels rgb\n  value {{-geoCTRL.translate} {-geoCTRL.translate} {-geoCTRL.translate} {curve}}\n  name Add1\n  xpos -524\n  ypos 313\n }\n Add {\n  channels rgb\n  value {{-parent.mat_pivot} {-parent.mat_pivot} {-parent.mat_pivot} {curve}}\n  name Add3\n  xpos -524\n  ypos 395\n }\n ColorMatrix {\n  matrix {\n      {{ax_data.world_matrix.0} {ax_data.world_matrix.1} {ax_data.world_matrix.2}}\n      {{ax_data.world_matrix.4} {ax_data.world_matrix.5} {ax_data.world_matrix.6}}\n      {{ax_data.world_matrix.8} {ax_data.world_matrix.9} {ax_data.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos -524\n  ypos 523\n }\n Add {\n  channels rgb\n  value {{parent.mat_pivot} {parent.mat_pivot} {parent.mat_pivot} {curve}}\n  name Add2\n  xpos -524\n  ypos 627\n }\n Dot {\n  name Dot2\n  xpos -490\n  ypos 707\n }\nset N1e8d4800 [stack 0]\n Expression {\n  temp_name0 circle\n  temp_expr0 \"sqrt( pow2( red ) + pow2( blue ) )\"\n  temp_name1 height\n  temp_expr1 \"abs( green )\"\n  expr3 \"( \\[value parent.invert_matte] ? clamp( max( circle , height ) ) : 1 - clamp( max( circle , height ) ) ) * alpha\"\n  name Expression3\n  label cylinder\n  xpos -404\n  ypos 782\n }\npush $N1e8d4800\n Expression {\n  temp_name0 newR\n  temp_expr0 \"clamp( 1-(1-abs(red)) * (1/ clamp(\\[value parent.cube3d_falloff.x],0.00001,1) ) )\"\n  temp_name1 newG\n  temp_expr1 \"clamp( 1-(1-abs(green)) * (1/ clamp(\\[value parent.cube3d_falloff.y],0.00001,1) ) )\"\n  temp_name2 newB\n  temp_expr2 \"clamp( 1-(1-abs(blue)) * (1/ clamp(\\[value parent.cube3d_falloff.z],0.00001,1) ) )\"\n  expr3 \"( \\[value parent.invert_matte] ? clamp(max(abs(newR),abs(newG),abs(newB))) : 1 - clamp(max(abs(newR),abs(newG),abs(newB))) ) * alpha\"\n  name Expression7\n  label cube\n  xpos -524\n  ypos 781\n }\npush $N1e8d4800\n Expression {\n  temp_name0 shape\n  temp_expr0 \"clamp( sqrt( pow2(red) + pow2(green) + pow2(blue) ) )\"\n  expr3 \"( \\[value parent.invert_matte] ? shape : 1 - shape ) * alpha\"\n  name Expression9\n  label sphere\n  xpos -633\n  ypos 782\n  addUserKnob {20 User}\n  addUserKnob {3 type}\n  addUserKnob {1 sphere}\n  sphere \"clamp( sqrt( pow2(red) + pow2(green) + pow2(blue) ) )\"\n }\n Switch {\n  inputs 3\n  which {{parent.mat_shape}}\n  name Switch1\n  xpos -524\n  ypos 882\n }\n Expression {\n  temp_name0 gfo\n  temp_expr0 \"alpha * (1/ clamp(\\[value parent.uniform_falloff],0.00001,1) )\"\n  expr3 \"\\[value type] == 0 ? ( gfo > 0 ? 1 : 0 ) : \\[value type] == 1 ? gfo : \\[value type] == 2 ? smoothstep( 0 , 1 , gfo ) : \\[value type] == 3 ? clamp( pow2 ( gfo ) ) : \\[value type] == 4 ? clamp( gfo ** 3 ) : pow( 1 - pow( 1 - gfo , \\[value parent.exp_in] ) , \\[value parent.exp_out] )\"\n  name Expression4\n  label falloff\n  xpos -524\n  ypos 953\n  addUserKnob {20 User}\n  addUserKnob {3 type}\n  type {{parent.falloff_type}}\n }\npush $N1e8ac800\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 0\n  ypos 953\n }\n Premult {\n  channels all\n  name Premult1\n  xpos 0\n  ypos 1092\n  disable {{!parent.premult_result}}\n }\n Dot {\n  name Dot3\n  xpos 34\n  ypos 1186\n }\nset N1f92a800 [stack 0]\nadd_layer {ptc ptc.red ptc.green ptc.blue}\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle3\n  xpos -525\n  ypos 1183\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove1\n  xpos -525\n  ypos 1264\n }\n Unpremult {\n  channels all\n  name Unpremult2\n  xpos -525\n  ypos 1346\n }\n Expression {\n  expr3 \"alpha > 0 ? 1 : 0\"\n  name Expression5\n  xpos -525\n  ypos 1440\n }\npush $N1e8ac400\n Dot {\n  name Dot8\n  xpos -969\n  ypos 89\n }\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle2\n  xpos -1003\n  ypos 1276\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove2\n  xpos -1003\n  ypos 1358\n }\npush 0\n Switch {\n  inputs 3\n  which {{parent.display_ptc_type}}\n  name Switch2\n  xpos -1003\n  ypos 1440\n }\n PositionToPoints2 {\n  display textured\n  render_mode textured\n  P_channel ptc\n  detail 0.1\n  pointSize 1\n  name PositionToPoints\n  xpos -1003\n  ypos 1499\n  disable {{!parent.display_ptc_type}}\n }\n Cylinder {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  rows 1\n  columns 10\n  name Cylinder1\n  xpos 631\n  ypos 222\n }\n Cube {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 1\n  columns 1\n  separate_faces false\n  uniform_scale 2\n  name Cube1\n  xpos 508\n  ypos 220\n }\n Sphere {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 8\n  columns 8\n  name Sphere1\n  xpos 387\n  ypos 218\n }\n Switch {\n  inputs 3\n  which {{mat_shape}}\n  name Switch4\n  xpos 508\n  ypos 291\n }\n TransformGeo {\n  name geoCTRL\n  xpos 508\n  ypos 373\n }\n Scene {\n  display wireframe\n  render_mode wireframe\n  name Scene1\n  xpos 518\n  ypos 1011\n }\npush 0\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 508\n  ypos 1133\n }\npush $N1f92a800\n Switch {\n  inputs 2\n  name preview_3D\n  xpos 0\n  ypos 1337\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1644\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['falloff_type'].getValue() == 5 :\\n    thisGRP\\['exp_in'].setEnabled(True)\\n    thisGRP\\['exp_out'].setEnabled(True)\\nelse :\\n    thisGRP\\['exp_in'].setEnabled(False)\\n    thisGRP\\['exp_out'].setEnabled(False)\\n\"\n  xpos -1420\n  ypos 400\n  addUserKnob {20 User}\n  addUserKnob {4 falloff_type l \"falloff type\" M {none linear smooth quadratic cubic exponential}}\n  falloff_type linear\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['mat_shape'].getValue() == 1 :\\n    thisGRP\\['cube3d_falloff'].setEnabled(True)\\nelse :\\n    thisGRP\\['cube3d_falloff'].setEnabled(False)\\n\"\n  xpos -1421\n  ypos 461\n  addUserKnob {20 User}\n  addUserKnob {4 mat_shape l shape M {Sphere Cube Cylinder}}\n }\n NoOp {\n  inputs 0\n  name menu03\n  knobChanged \"\\nloop = \\['red','green','blue']\\nsamPos = nuke.thisGroup()\\['pos2D'].getValue()\\nfor i in range(3) :\\n    nuke.thisGroup()\\['mat_translate'].setValue( nuke.toNode('shuffle_pos').sample( loop\\[i], samPos\\[0], samPos\\[1] ) , i )\\n\"\n  xpos -1420\n  ypos 529\n  addUserKnob {20 User}\n  addUserKnob {12 pos2D l \"2D pos\"}\n }\n Axis {\n  inputs 0\n  rot_order {{parent.mat_rot_order}}\n  rotate {{parent.mat_rotate} {parent.mat_rotate} {parent.mat_rotate}}\n  scaling {{parent.mat_scaling} {parent.mat_scaling} {parent.mat_scaling}}\n  uniform_scale {{parent.mat_uniform_scale}}\n  skew {{parent.mat_skew} {parent.mat_skew} {parent.mat_skew}}\n  pivot {{parent.mat_pivot} {parent.mat_pivot} {parent.mat_pivot}}\n  name ax_data\n  xpos -849\n  ypos 510\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosPattern_MJ.gizmo",
    "content": "Group {\n name PosPattern\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 position l \"world position\" t \"Select position (world space) channel.\\nIf position is camera space, use 'ConvertPNZ' to convert to world space.\" T shuffle_pos.in}\n addUserKnob {6 unpremult_src l \"unpremult source\" t \"Anti-aliasing edge will process improper matte on the edge. Unpremult the data with alpha will fix this issue.\\n\\n* input must contain alpha in alpha channel.\\n** uncheck this box if position data is un-filtered.\\n*** this can be fix the external edge, but not the intersect edge.\" +STARTLINE}\n addUserKnob {6 premult_result l \"premult result\" t \"Toggle the premult result.\" -STARTLINE}\n premult_result true\n addUserKnob {26 title_pattern l <b>PATTERN</b>}\n addUserKnob {41 pattern_type l \"pattern type\" t \"Select parttern type on world space position.\\n\\nfBm : octaves, lacunarity, gain, gamma setting available.\\nturbulence : octaves, lacunarity, gain, gamma setting available.\\nnoise : gain, gamma setting available.\\nrandom : gain, gamma setting available.\\nstripes : xyz can be enable separate. gain, gamma setting available.\\nripple : gain, gamma setting available.\\nrays : gain, gamma, number of rays setting available.\" T menu.pattern_type}\n addUserKnob {41 file_menu l @FolderIcon T transformation.file_menu}\n addUserKnob {41 snap_menu l @AxisIcon -STARTLINE T transformation.snap_menu}\n addUserKnob {41 n_translate l translate T transformation.translate}\n addUserKnob {41 n_scale l scale T transformation.scaling}\n addUserKnob {41 n_uniform_scale l \"uniform scale\" T transformation.uniform_scale}\n addUserKnob {6 invert l \"invert pattern\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {6 stripes_x l x +HIDDEN +STARTLINE}\n stripes_x true\n addUserKnob {6 stripes_y l y -STARTLINE +HIDDEN}\n stripes_y true\n addUserKnob {6 stripes_z l z -STARTLINE +HIDDEN}\n stripes_z true\n addUserKnob {3 octaves}\n octaves 4\n addUserKnob {7 lacunarity R 1 10}\n lacunarity 2\n addUserKnob {7 gain R 0.1 2}\n gain 1\n addUserKnob {7 gamma R 0 2}\n gamma 1\n addUserKnob {3 rays l \"numbers of rays\" +HIDDEN}\n rays 10\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with pattern applied</b>\\nThis can show the instant result of the pattern. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with pattern applied\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" T PositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" T PositionToPoints.pointSize}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.2}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-09-04}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"v1.2<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'2D&nbsp;sample'&nbsp;will&nbsp;break&nbsp;animated&nbsp;'3D&nbsp;pos'&nbsp;knob<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'cube3D&nbsp;falloff'&nbsp;separation<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;matte:&nbsp;cube&nbsp;pivot,&nbsp;also&nbsp;in&nbsp;3D&nbsp;preview<br>'PosProjection'<br>&nbsp;&nbsp;-&nbsp;support&nbsp;overscan<br><br>1.1<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;corrected&nbsp;pivot&nbsp;result<br>&nbsp;&nbsp;-&nbsp;'position'&nbsp;knob&nbsp;label&nbsp;changed&nbsp;to&nbsp;'world&nbsp;position'<br><br>1.0<br>-&nbsp;using&nbsp;Deep2VP&nbsp;setup&nbsp;in&nbsp;2D&nbsp;comp\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -2000\n  ypos 339\n  bdwidth 368\n  bdheight 186\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  label bin\n  xpos -1535\n  ypos 169\n  bdwidth 498\n  bdheight 1286\n }\n NoOp {\n  inputs 0\n  name menu\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['pattern_type'].getValue() == 0 or thisGRP\\['pattern_type'].getValue() == 1  :\\n    thisGRP\\['octaves'].setVisible(True)\\n    thisGRP\\['lacunarity'].setVisible(True)\\nelse :\\n    thisGRP\\['octaves'].setVisible(False)\\n    thisGRP\\['lacunarity'].setVisible(False)\\n\\nif thisGRP\\['pattern_type'].getValue() == 4 :\\n    thisGRP\\['stripes_x'].setVisible(True)\\n    thisGRP\\['stripes_y'].setVisible(True)\\n    thisGRP\\['stripes_z'].setVisible(True)\\nelse :\\n    thisGRP\\['stripes_x'].setVisible(False)\\n    thisGRP\\['stripes_y'].setVisible(False)\\n    thisGRP\\['stripes_z'].setVisible(False)\\n\\nif thisGRP\\['pattern_type'].getValue() == 6 :\\n    thisGRP\\['rays'].setVisible(True)\\nelse :\\n    thisGRP\\['rays'].setVisible(False)\\n\"\n  xpos -1918\n  ypos 440\n  addUserKnob {20 User}\n  addUserKnob {4 pattern_type l \"pattern type\" M {fBm turbulence noise random stripes ripple rays \"\" \"\" \"\"}}\n }\n Input {\n  inputs 0\n  name CG\n  xpos 0\n  ypos 2\n }\n Dot {\n  name Dot1\n  xpos 34\n  ypos 122\n }\nset N1e6bf800 [stack 0]\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -572\n  ypos 112\n  disable {{!parent.unpremult_src}}\n }\nset N1e6bf400 [stack 0]\n Shuffle {\n  in none\n  in2 alpha\n  alpha red2\n  name shuffle_pos\n  xpos -572\n  ypos 206\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -572\n  ypos 288\n }\n Dot {\n  name Dot2\n  xpos -538\n  ypos 370\n }\nset N1e6be800 [stack 0]\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) ) \"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp( ( ( sin( atan(pnx, pnz) * \\[value parent.rays] + atan(pnx, pny) * \\[value parent.rays] + atan(pny, pnz) * \\[value parent.rays] ) +1) /2 ) * \\[value gain]) * alpha\"\n  name Expression7\n  label rays\n  xpos -197\n  ypos 499\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale]*\\[value parent.n_scale.x] ) )\"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale]*\\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue  - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale]*\\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp ( ( ( sin( sqrt( pow2(pnx) + pow2(pny) + pow2(pnz) ) ) +1) /2 ) * \\[value gain] ) * alpha\"\n  name Expression6\n  label ripple\n  xpos -331\n  ypos 499\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"\\[value status_x] == 0 ? 0 : ( sin( ( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) ) ) + 1 ) / 2\"\n  temp_name1 pny\n  temp_expr1 \"\\[value status_y] == 0 ? 0 : ( sin( ( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) ) ) + 1 ) / 2\"\n  temp_name2 pnz\n  temp_expr2 \"\\[value status_z] == 0 ? 0 : ( sin( ( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) ) ) + 1 ) / 2\"\n  expr3 \"max( clamp( pnx * \\[value gain] ), clamp( pny * \\[value gain] ), clamp( pnz * \\[value gain] ) ) * alpha\"\n  name Expression5\n  label strip\n  xpos -451\n  ypos 501\n  addUserKnob {20 User}\n  addUserKnob {7 status_x}\n  status_x {{parent.stripes_x}}\n  addUserKnob {7 status_y}\n  status_y {{parent.stripes_y}}\n  addUserKnob {7 status_z}\n  status_z {{parent.stripes_z}}\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) )\"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp( random(pnx, pny, pnz) * \\[value gain] ) * alpha\"\n  name Expression4\n  label random\n  xpos -572\n  ypos 501\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) )\"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp( (noise(pnx, pny, pnz)+0.5) * \\[value gain] ) * alpha\"\n  name Expression3\n  label noise\n  xpos -703\n  ypos 499\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) )\"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp( turbulence(pnx, pny, pnz, \\[value octaves], \\[value lacunarity], \\[value gain]/2) ) * alpha\"\n  name Expression2\n  label turbulence\n  xpos -837\n  ypos 499\n }\npush $N1e6be800\n Expression {\n  temp_name0 pnx\n  temp_expr0 \"( red - \\[value parent.n_translate.x] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.x] ) )\"\n  temp_name1 pny\n  temp_expr1 \"( green - \\[value parent.n_translate.y] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.y] ) )\"\n  temp_name2 pnz\n  temp_expr2 \"( blue - \\[value parent.n_translate.z] ) * ( 1 / ( \\[value parent.n_uniform_scale] * \\[value parent.n_scale.z] ) )\"\n  expr3 \"clamp( fBm(pnx, pny, pnz, \\[value octaves], \\[value lacunarity], \\[value gain]/2) ) * alpha\"\n  name Expression1\n  label fBm\n  xpos -968\n  ypos 499\n }\n Switch {\n  inputs 7\n  which {{pattern_type}}\n  name Switch1\n  xpos -572\n  ypos 644\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -572\n  ypos 726\n  disable {{!invert}}\n }\n Gamma {\n  channels alpha\n  value {{parent.gamma}}\n  name Gamma1\n  xpos -572\n  ypos 820\n }\npush $N1e6bf800\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 0\n  ypos 820\n }\n Premult {\n  channels all\n  name Premult1\n  xpos 0\n  ypos 914\n }\n Dot {\n  name Dot5\n  xpos 34\n  ypos 1010\n }\nset N1e72f800 [stack 0]\n Output {\n  name Output1\n  xpos 0\n  ypos 1299\n }\n Axis {\n  inputs 0\n  display off\n  name transformation\n  xpos -1173\n  ypos 389\n }\npush $N1e72f800\nadd_layer {ptc ptc.red ptc.green ptc.blue}\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle3\n  xpos -573\n  ypos 1006\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove1\n  xpos -573\n  ypos 1088\n }\n Unpremult {\n  channels all\n  name Unpremult2\n  xpos -573\n  ypos 1170\n }\n Expression {\n  expr3 \"alpha > 0 ? 1 : 0\"\n  name Expression8\n  xpos -573\n  ypos 1264\n }\npush $N1e6bf400\n Dot {\n  name Dot3\n  xpos -1295\n  ypos 122\n }\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle1\n  xpos -1329\n  ypos 1100\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove2\n  xpos -1329\n  ypos 1182\n }\npush 0\n Switch {\n  inputs 3\n  which {{parent.display_ptc_type}}\n  name Switch2\n  xpos -1329\n  ypos 1264\n }\n PositionToPoints2 {\n  display textured\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  P_channel ptc\n  detail 0.1\n  pointSize 1\n  name PositionToPoints\n  xpos -1329\n  ypos 1346\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosProjection_MJ.gizmo",
    "content": "Group {\n name PosProjection\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 position l \"world position\" t \"Select position (world space) channel.\\nIf position is camera space, use 'ConvertPNZ' to convert to world space.\" T shuffle_pos.in}\n addUserKnob {6 unpremult_src l \"unpremult source\" t \"Anti-aliasing edge will process improper matte on the edge. Unpremult the data with alpha will fix this issue.\\n\\n* input must contain alpha in alpha channel.\\n** uncheck this box if position data is un-filtered.\\n*** this can be fix the external edge, but not the intersect edge.\" +STARTLINE}\n addUserKnob {26 title_projcam l <b>PROJECTION</b>}\n addUserKnob {41 freeze_frame l \"freeze frame\" t \"Check this box to enable framehold function for animated camera\" T menu01.freeze_frame}\n addUserKnob {3 proj_framehold l framehold t \"Input the frame number and freeze the projection camera's animation\" +DISABLED}\n proj_framehold 1001\n addUserKnob {22 setframe l \"set current frame\" t \"Automatically set frame frame into framehold knob.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['proj_framehold'].setValue( nuke.frame() )\"}\n addUserKnob {14 overscan t \"The number of pixels to render beyond the left/right and top/bottom of frame, if requested by subsequent operations.\" R 0 100}\n addUserKnob {78 proj_zrange l \"project z range\" n 4}\n proj_zrange {0 1 999999 1000000}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Selected any Camera nodes and this button will link the position to the projection camera.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\nmainKnobs = \\['proj_focal','proj_haperture','proj_win_translate','proj_win_scale','proj_winroll','proj_world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll' ,\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.focal'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.haperture'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.win_translate'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.win_scale'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.winroll'.format(CAMnode) )\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.world_matrix'.format(CAMnode) )\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['winroll']) )\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression( '\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']) )\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['proj_focal','proj_haperture','proj_win_translate','proj_win_scale','proj_winroll','proj_world_matrix']\\n\\nfor i in range (0, len(mainKnobs), 1) :\\n    thisGRP\\[mainKnobs\\[i]].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['proj_focal','proj_haperture','proj_win_translate','proj_win_scale','proj_winroll','proj_world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 proj_focal l \"focal length\" R 5 100}\n addUserKnob {7 proj_haperture l \"horiz aperture\" R 0.1 50}\n addUserKnob {30 proj_win_translate l \"window translate\"}\n addUserKnob {30 proj_win_scale l \"window scale\"}\n addUserKnob {7 proj_winroll l \"window roll\" R -45 45}\n addUserKnob {41 proj_world_matrix l \"world matrix\" T ui_mtx.matrix}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_3dpreview l \"Pointcloud preview\" n 1}\n grp_3dpreview 0\n addUserKnob {4 display_ptc_type l \"display type\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\n<b>none</b>\\nwill not show the pointcloud in 3D\\n\\n<b>raw pointcloud</b>\\nshow the pointcloud from input data, without any effects from this node\\n\\n<b>with project image</b>\\nThis can show the instant result of the projection. Since it feedback in real time, it might slow down the progress in 3D space.\" M {\"no pointcloud preview\" \"raw pointcloud\" \"with project image (slow)\" \"\" \"\" \"\" \"\" \"\"}}\n display_ptc_type \"raw pointcloud\"\n addUserKnob {41 detail l \"point detail\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the density of the pointcloud.\" T PositionToPoints.detail}\n addUserKnob {41 pointSize l \"point size\" t \"When you open this node's panel, you can check the pointcloud under 3D view.\\n\\nThis control the point size of the pointcloud.\" T PositionToPoints.pointSize}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer01 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_output l \"<b>OUTPUT SETTING</b>\"}\n addUserKnob {4 output t \"wrapped texture + source\\nwhich is a projected texture composite with the input.\\n\\nwrapped texture\\nwhich is only projected texture\\n\\nuv\\nwhich is a uv map, can use this with STMap in downstream.\" M {\"wrapped texture + source\" \"wrapped texture\" uv \"\" \"\"}}\n addUserKnob {20 grp_stmap l \"STMap setting\" n 1}\n grp_stmap 0\n addUserKnob {41 channels l \"apply channels\" t \"Select channel to apply this projected texture.\" T STMap.channels}\n addUserKnob {41 filter t \"pixel filter of projected texture.\" T STMap.filter}\n addUserKnob {6 black_outside l \"black outside\" +STARTLINE}\n black_outside true\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.2}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-09-04}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"v1.2<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'2D&nbsp;sample'&nbsp;will&nbsp;break&nbsp;animated&nbsp;'3D&nbsp;pos'&nbsp;knob<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;'cube3D&nbsp;falloff'&nbsp;separation<br>&nbsp;&nbsp;-&nbsp;fix&nbsp;matte:&nbsp;cube&nbsp;pivot,&nbsp;also&nbsp;in&nbsp;3D&nbsp;preview<br>'PosProjection'<br>&nbsp;&nbsp;-&nbsp;support&nbsp;overscan<br><br>1.1<br>'PosMatte'<br>&nbsp;&nbsp;-&nbsp;corrected&nbsp;pivot&nbsp;result<br>&nbsp;&nbsp;-&nbsp;'position'&nbsp;knob&nbsp;label&nbsp;changed&nbsp;to&nbsp;'world&nbsp;position'<br><br>1.0<br>-&nbsp;using&nbsp;Deep2VP&nbsp;setup&nbsp;in&nbsp;2D&nbsp;comp\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 42\n  xpos -1839\n  ypos 247\n  bdwidth 390\n  bdheight 201\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4f4f4fff\n  label bin\n  note_font_size 42\n  xpos -1375\n  ypos 247\n  bdwidth 484\n  bdheight 1262\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['freeze_frame'].getValue() == 1 :\\n    thisGRP\\['proj_framehold'].setEnabled(True)\\n    thisGRP\\['setframe'].setEnabled(True)\\nelse :\\n    thisGRP\\['proj_framehold'].setEnabled(False)\\n    thisGRP\\['setframe'].setEnabled(False)\\n\"\n  xpos -1805\n  ypos 322\n  addUserKnob {20 User}\n  addUserKnob {6 freeze_frame l \"freeze frame\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['proj_zrange'].isAnimated() :\\n    thisGRP\\['proj_zrange_buffer'].clearAnimated()\\n    thisGRP\\['proj_zrange_buffer'].setValue( thisGRP\\['proj_zrange'].getValue() )\\nelse :\\n    thisGRP\\['proj_zrange_buffer'].setAnimated()\\n    anizrange0 = thisGRP\\['proj_zrange'].animation( 0 )\\n    anizrange1 = thisGRP\\['proj_zrange'].animation( 1 )\\n    anizrange2 = thisGRP\\['proj_zrange'].animation( 2 )\\n    anizrange3 = thisGRP\\['proj_zrange'].animation( 3 )\\n    for key in anizrange0.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 0 )\\n    for key in anizrange1.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 1 )\\n    for key in anizrange2.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 2 )\\n    for key in anizrange3.keys() :\\n        thisGRP\\['proj_zrange_buffer'].setValueAt( key.y, key.x, 3 )\\n\"\n  xpos -1679\n  ypos 321\n  addUserKnob {20 User}\n  addUserKnob {78 proj_zrange l \"distance range\" n 4}\n }\n Input {\n  inputs 0\n  name CG\n  xpos 132\n  ypos -107\n }\n Dot {\n  name Dot1\n  xpos 166\n  ypos 150\n }\nset N1e7e7400 [stack 0]\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -524\n  ypos 140\n  disable {{!parent.unpremult_src}}\n }\nset N1e7e7000 [stack 0]\n Shuffle {\n  in none\n  in2 alpha\n  alpha red2\n  name shuffle_pos\n  xpos -524\n  ypos 275\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -524\n  ypos 346\n }\n Add {\n  channels rgb\n  value {{-projCam_data.world_matrix.3} {-projCam_data.world_matrix.7} {-projCam_data.world_matrix.11} {curve}}\n  name Add1\n  xpos -524\n  ypos 428\n }\n ColorMatrix {\n  matrix {\n      {{projCam_data.world_matrix.0} {projCam_data.world_matrix.1} {projCam_data.world_matrix.2}}\n      {{projCam_data.world_matrix.4} {projCam_data.world_matrix.5} {projCam_data.world_matrix.6}}\n      {{projCam_data.world_matrix.8} {projCam_data.world_matrix.9} {projCam_data.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos -524\n  ypos 510\n }\n Expression {\n  temp_name0 newR\n  temp_expr0 \"( red - ( \\[value globalm.hratio] * abs( blue ) * \\[value projFB_data.win_translate.u] / 2 ) ) * 1 / \\[value projFB_data.win_scale.u]\"\n  temp_name1 newG\n  temp_expr1 \"( green - ( \\[value globalm.hratio] * abs( blue ) * \\[value projFB_data.win_translate.v] / 2 ) ) * 1 / \\[value projFB_data.win_scale.v]\"\n  expr0 \"newR * \\[value projFB_data.world_matrix.0] + newG *\\n\\[value projFB_data.world_matrix.1]\"\n  expr1 \"newR * \\[value projFB_data.world_matrix.4] + newG *\\n\\[value projFB_data.world_matrix.5]\"\n  name Expression1\n  xpos -524\n  ypos 592\n }\n Dot {\n  name Dot2\n  xpos -490\n  ypos 710\n }\nset N1e809800 [stack 0]\n Expression {\n  expr0 \"( r / ( abs(b) * \\[value globalm.hratio] ) ) + 0.5\"\n  expr1 \"( g / ( ( abs(b) * \\[value globalm.hratio] ) / ( \\[value tex_dot.width] / \\[value tex_dot.height] ) ) ) + 0.5\"\n  name Expression2\n  xpos -524\n  ypos 816\n }\nset N1e809400 [stack 0]\n Dot {\n  name Dot6\n  xpos -265\n  ypos 819\n }\nset N1e809000 [stack 0]\n Dot {\n  name Dot7\n  xpos -265\n  ypos 1168\n }\npush $N1e809800\n Dot {\n  name Dot3\n  xpos -697\n  ypos 710\n }\n Expression {\n  temp_name0 posb\n  temp_expr0 \"abs( blue )\"\n  expr3 \"posb < \\[value parent.proj_zrange.0] || posb > \\[value parent.proj_zrange.3] ? 0 : posb < \\[value parent.proj_zrange.1] ? clamp( ( posb - \\[value parent.proj_zrange.0] ) / ( \\[value parent.proj_zrange.1] - \\[value parent.proj_zrange.0] ) ) * alpha : posb > \\[value parent.proj_zrange.2] ? clamp( 1 - ( posb - \\[value parent.proj_zrange.2] ) / ( \\[value parent.proj_zrange.3] - \\[value parent.proj_zrange.2] ) ) * alpha : alpha\"\n  name Expression3\n  xpos -731\n  ypos 811\n }\n Dot {\n  name Dot4\n  xpos -697\n  ypos 930\n }\npush $N1e809400\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge1\n  xpos -524\n  ypos 926\n }\npush $N1e809000\n Input {\n  inputs 0\n  name tex\n  xpos -134\n  ypos -106\n  number 1\n }\n Crop {\n  box {{-parent.overscan.w} {-parent.overscan.h} {input.width+parent.overscan.w} {input.height+parent.overscan.h}}\n  crop {{parent.black_outside}}\n  name Crop1\n  xpos -134\n  ypos -26\n }\n Dot {\n  name tex_dot\n  xpos -100\n  ypos 56\n }\n STMap {\n  inputs 2\n  channels rgba\n  uv rgba\n  maskChannel rgba.alpha\n  name STMap\n  xpos -134\n  ypos 815\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos -134\n  ypos 926\n }\nset N1e834800 [stack 0]\npush $N1e834800\npush $N1e7e7400\n Merge2 {\n  inputs 2\n  name Merge3\n  xpos 132\n  ypos 926\n }\n Dot {\n  name Dot10\n  xpos 166\n  ypos 1061\n }\nset N1e834000 [stack 0]\n Switch {\n  inputs 3\n  which {{output}}\n  name Switch2\n  xpos 132\n  ypos 1313\n }\n Output {\n  name Output1\n  xpos 132\n  ypos 1539\n }\npush $N1e834000\nadd_layer {ptc ptc.red ptc.green ptc.blue}\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle3\n  xpos -713\n  ypos 1057\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove3\n  xpos -713\n  ypos 1139\n }\n Unpremult {\n  channels all\n  name Unpremult2\n  xpos -713\n  ypos 1221\n }\n Expression {\n  expr3 \"alpha > 0 ? 1 : 0\"\n  name Expression5\n  xpos -713\n  ypos 1315\n }\npush $N1e7e7000\n Dot {\n  name Dot8\n  xpos -1252\n  ypos 150\n }\n Shuffle {\n  in {{{shuffle_pos.in}}}\n  out ptc\n  name Shuffle2\n  xpos -1286\n  ypos 1151\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 ptc\n  name Remove2\n  xpos -1286\n  ypos 1233\n }\npush 0\n Switch {\n  inputs 3\n  which {{parent.display_ptc_type}}\n  name Switch3\n  xpos -1286\n  ypos 1315\n }\n PositionToPoints2 {\n  display textured\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  P_channel ptc\n  detail 0.1\n  pointSize 1\n  name PositionToPoints\n  xpos -1286\n  ypos 1397\n  disable {{\"parent.display_ptc_type == 0 ? 1 : 0\"}}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {\"parent.freeze_frame ? \\nparent.proj_winroll( parent.proj_framehold ) : \\nparent.proj_winroll\"}}\n  win_translate {{\"parent.freeze_frame ? \\nparent.proj_win_translate(parent.proj_framehold) : \\nparent.proj_win_translate\"} {\"parent.freeze_frame ? \\nparent.proj_win_translate(parent.proj_framehold) : \\nparent.proj_win_translate\"}}\n  win_scale {{\"parent.freeze_frame ? \\nparent.proj_win_scale(parent.proj_framehold) : \\nparent.proj_win_scale\"} {\"parent.freeze_frame ? \\nparent.proj_win_scale(parent.proj_framehold) : \\nparent.proj_win_scale\"}}\n  name projFB_data\n  xpos -1090\n  ypos 507\n }\n NoOp {\n  inputs 0\n  name globalm\n  xpos -1097\n  ypos 629\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"parent.freeze_frame ? parent.proj_haperture( parent.proj_framehold )/parent.proj_focal( parent.proj_framehold ) : parent.proj_haperture/parent.proj_focal\"}}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"}}\n      {{\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"} {\"parent.freeze_frame ? parent.proj_world_matrix( parent.proj_framehold ) : parent.proj_world_matrix\"}}\n    }\n  name projCam_data\n  xpos -1089\n  ypos 418\n }\n Camera {\n  inputs 0\n  useMatrix true\n  matrix {\n      {0 0 0 0}\n      {0 0 0 0}\n      {0 0 0 0}\n      {0 0 0 0}\n    }\n  name ui_mtx\n  xpos -1088\n  ypos 319\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ProductMatrix4.gizmo",
    "content": "Group {\n name ProductMatrix4_\n help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name matrixA\n  xpos 344\n  ypos 139\n }\n Dot {\n  name Dot3\n  xpos 378\n  ypos 252\n }\nset N1dd52c30 [stack 0]\npush $N1dd52c30\npush $N1dd52c30\npush $N1dd52c30\n Input {\n  inputs 0\n  name matrixB\n  xpos 21\n  ypos 142\n  number 1\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n  name MergeExpression1\n  xpos 21\n  ypos 249\n }\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n  name MergeExpression2\n  xpos 21\n  ypos 273\n }\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n  name MergeExpression3\n  xpos 21\n  ypos 297\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n  name MergeExpression4\n  selected true\n  xpos 21\n  ypos 321\n }\n Output {\n  name Output1\n  xpos 21\n  ypos 421\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Pyclopedia.gizmo",
    "content": "Group {\n inputs 0\n name Pyclopedia\n onCreate \"\\nimport os, pydoc, re\\n\\n##########\\n\\ndef pyclopediaLoadField( _thisG ) :\\n    usrStar = \\[]\\n    if _thisG\\['use_module'].getValue() :\\n        importMod = _thisG\\['module'].value()\\n        if len( importMod ) :\\n            exec ('import \\{0\\}'.format( importMod ))\\n\\n        try :\\n            usrStar = pyclopediaListStar( _thisG )\\[importMod]\\n        except :\\n            pass\\n\\n    else :\\n\\n        try :\\n            usrStar = pyclopediaListStar( _thisG )\\['']\\n        except :\\n            pass\\n\\n    try :\\n        knobstatus = pyclopediaGetKnobs( _thisG )\\n\\n        cline = _thisG\\['cmd_line'].value().replace( ' ' , '' )\\n        kwfilter = _thisG\\['keyword_filter'].value().replace( ' ' , '' )\\n        if len( cline ) :\\n            if knobstatus\\[0] == 0 :\\n                _thisG\\['basechk'].setValue( cline )\\n\\n            if _thisG\\['basechk'].value() == cline :\\n                if len( knobstatus\\[1] ) :\\n                    knobstatus\\[1].sort()\\n                    for knob in knobstatus\\[1] :\\n                        cline = cline + '.' + _thisG\\[knob].value().replace('\\[*] ','')\\n\\n                matchStar = pyclopediaMatchStar( usrStar , cline , knobstatus\\[0] )\\n                matchStar.sort()\\n                matchStar.reverse()\\n\\n                try  :\\n                    fields = \\[]\\n                    for i in eval( 'dir( \\{0\\} )'.format( cline ) ) :\\n                        if not i\\[:2] == '__' and not i\\[:1] == '_' :\\n                            if len(kwfilter) :\\n                                if kwfilter.lower() in i.lower() :\\n                                    fields.append(i)\\n                            else :\\n                                fields.append(i)\\n\\n                    for star in matchStar :\\n                        try :\\n                            fields.remove( star )\\n                            fields.insert( 0, '\\[*] '+star )\\n                        except ValueError :\\n                            pass\\n\\n                    ### generate ###\\n                    if len( fields ) :\\n                        _thisG\\[ 'field_' + str( knobstatus\\[0]+1 ) ].setVisible( True )\\n                        _thisG\\[ 'field_' + str( knobstatus\\[0]+1 ) ].setValues( fields )\\n                    else :\\n                        nuke.message( 'no more sub-field' )\\n                except NameError as err :\\n                    nuke.message( 'NameError : \\{0\\}<br><br><i>Make sure the command line belongs to correct module.<i>'.format( err ) )\\n            else :\\n                _thisG\\['reset'].execute()\\n                pyclopediaLoadField( _thisG )\\n        else :\\n            nuke.message('command line is empty.')\\n    except AttributeError as err :\\n        if nuke.ask( 'AttributeError : \\{0\\}<br><br><i>Do you want to fix this error?<i>'.format( err ) ) :\\n            pyclopediaFixField( _thisG )\\n\\n##########\\n\\ndef pyclopediaGetKnobs( _thisG ) :\\n    maxfield = 0\\n    fieldknobs = \\[]\\n\\n    for knob in _thisG.knobs() :\\n        if knob\\[:6] == 'field_' :\\n            if len( _thisG\\[knob].values()\\[0] ) :\\n                fieldknobs.append( knob )\\n\\n                if int( knob.split('_')\\[1] ) > maxfield :\\n                    maxfield = int( knob.split('_')\\[1] )\\n            else :\\n                _thisG\\[knob].setVisible( False )\\n                _thisG\\[knob].setValue(0)\\n                _thisG\\[knob].setValues( \\[''] )\\n\\n    return maxfield, fieldknobs\\n\\n##########\\n\\ndef pyclopediaFixField( _thisG ) :\\n    if _thisG\\['use_module'].getValue() :\\n        importMod = _thisG\\['module'].value()\\n        if len( importMod ) :\\n            exec ('import \\{0\\}'.format( importMod ))\\n\\n    knobstatus = pyclopediaGetKnobs( _thisG )\\n\\n    cline = _thisG\\['cmd_line'].value()\\n    if knobstatus\\[0] == 0 :\\n        _thisG\\['basechk'].setValue( cline )\\n\\n    knobstatus\\[1].sort()\\n\\n    check = 0\\n    while check < len(knobstatus\\[1]) :\\n        try :\\n            temp = \\[ _thisG\\[knobstatus\\[1]\\[i]].value() for i in range( check+1 ) ]\\n            temp.insert( 0, cline )\\n            eval( 'dir( \\{0\\} )'.format( '.'.join( temp ) ) )\\n            check += 1\\n        except :\\n            for knob in knobstatus\\[1]\\[check:] :\\n                _thisG\\[ knob ].setVisible( False )\\n                _thisG\\[ knob ].setValue(0)\\n                _thisG\\[ knob ].setValues( \\[''] )\\n            check = len(knobstatus\\[1])\\n\\n##########\\n\\ndef pyclopediaShowDoc( _thisG ) :\\n    try :\\n        if _thisG\\['use_module'].getValue() :\\n            importMod = _thisG\\['module'].value()\\n            if len( importMod ) :\\n                exec ('import \\{0\\}'.format( importMod ))\\n\\n        fieldknobs = \\[]\\n\\n        for knob in _thisG.knobs() :\\n            if knob\\[:6] == 'field_' :\\n                if len( _thisG\\[knob].values()\\[0] ) :\\n                    fieldknobs.append( knob )\\n\\n        cline = _thisG\\['cmd_line'].value()\\n\\n        if len( fieldknobs ) :\\n            fieldknobs.sort()\\n            for knob in fieldknobs :\\n                cline = cline + '.' + _thisG\\[knob].value().replace('\\[*] ','')\\n\\n        content = pydoc.plain( pydoc.render_doc( eval( cline ) ) )\\n\\n        displayPanel = pyclopediaPanel( cline , content )\\n        if displayPanel\\[1] :\\n            pyclopediaAddStar( _thisG , displayPanel\\[0].value('line') )\\n\\n    except AttributeError as err :\\n        if nuke.ask( 'AttributeError : \\{0\\}<br><br><i>Do you want to fix this error?<i>'.format( err ) ) :\\n            pyclopediaFixField( _thisG )\\n            _thisG\\['show_doc'].execute()\\n\\n##########\\n\\ndef pyclopediaPanel( _line , _content ) :\\n    p = nuke.Panel( 'Help on : \\{0\\}'.format( _line ) )\\n    p.addSingleLineInput( 'line' , _line )\\n    p.addNotepad( '', _content )\\n    p.addButton('Close')\\n    p.addButton('Starred this')\\n    p.setWidth( 960 )\\n    return ( p , p.show() )\\n\\n##########\\n\\ndef pyclopediaBackField( _thisG ) :\\n    knobstatus = pyclopediaGetKnobs( _thisG )\\n\\n    if knobstatus\\[0] :\\n        _thisG\\[ 'field_' + str(knobstatus\\[0]) ].setVisible( False )\\n        _thisG\\[ 'field_' + str(knobstatus\\[0]) ].setValue(0)\\n        _thisG\\[ 'field_' + str(knobstatus\\[0]) ].setValues( \\[''] )\\n\\n##########\\n\\ndef pyclopediaReset( _thisG ) :\\n    for knob in _thisG.knobs() :\\n        if knob\\[:6] == 'field_' :\\n            _thisG\\[knob].setVisible( False )\\n            _thisG\\[knob].setValue(0)\\n            _thisG\\[knob].setValues( \\[''] )\\n    _thisG\\['basechk'].setValue('')\\n\\n##########\\n\\ndef pyclopediaReadStar() :\\n    nkfolder = \\[ os.environ\\['HOME'] , '.nuke' ]\\n    file = open( os.sep.join( nkfolder + \\[ 'pyclopedia' , 'favourite' ] ) , 'r' )\\n    context = file.readlines()\\n    file.close()\\n    return context\\n\\n##########\\n\\ndef pyclopediaWriteStar( _context=\\[] , _mode='update') :\\n    nkfolder = \\[ os.environ\\['HOME'] , '.nuke' ]\\n    if _mode == 'new' :\\n        os.mkdir( os.sep.join( nkfolder + \\[ 'pyclopedia' ] ) )\\n    file = open( os.sep.join( nkfolder + \\[ 'pyclopedia' , 'favourite' ] ) , 'w' )\\n    if _mode == 'update' :\\n        file.write( ''.join( _context ) )\\n    file.close()\\n\\n##########\\n\\ndef pyclopediaAddStar( _thisG , _line ) :\\n    nkfolder = \\[ os.environ\\['HOME'] , '.nuke' ]\\n\\n    ##### if file not exist, create one\\n    try :\\n        context = pyclopediaReadStar()\\n    except IOError :\\n        pyclopediaWriteStar( _mode='new' )\\n        context = \\[]\\n\\n    if _thisG\\['use_module'].value() :\\n        fline = '|'.join( \\[ _thisG\\['module'].value() , _line ] ) + '\\\\n'\\n    else :\\n        fline = '|'.join( \\[ '' , _line ] ) + '\\\\n'\\n\\n    if fline not in context :\\n        context.append( fline )\\n        pyclopediaWriteStar( context )\\n        pyclopediaGetFData( _thisG )\\n    else :\\n        nuke.message('This command already in Starred list.')\\n\\n##########\\n\\ndef pyclopediaListStar( _thisG ) :\\n    starItems = \\{\\}\\n    try :\\n        context = pyclopediaReadStar()\\n        for line in context :\\n            items = re.split( '\\\\||\\\\n' , line )\\[:2]\\n            try :\\n                starItems\\[items\\[0]].append( items\\[1] )\\n            except :\\n                starItems\\[items\\[0]] = \\[ items\\[1] ]\\n    except :\\n        pass\\n    return starItems\\n\\n##########\\n\\ndef pyclopediaMatchStar( _listStar , _cin , _kcount ) :\\n    matchStar = \\[]\\n    for star in _listStar :\\n        if len( star.split('.') ) == _kcount + 2 :\\n            if star.split('.')\\[:_kcount+1] == _cin.split('.') :\\n                matchStar.append( star.split('.')\\[-1:]\\[0] )\\n    return matchStar\\n\\n##########\\n\\ndef pyclopediaGetFData( _thisG ) :\\n    data = pyclopediaListStar( _thisG )\\n    temp = \\[]\\n    for key, value in data.items() :\\n        for cmd in value :\\n            if key == '' :\\n                temp.append( '\\{set ' + '\\\"\\\"' + ' ' + cmd + '\\}' )\\n            else :\\n                temp.append( '\\{set \\\"' + key + '\\\" ' + cmd + '\\}' )\\n    _thisG\\['modStarData'].fromScript( '\\\\n'.join(temp) )\\n\\n##########\\n\\ndef pyclopediaModFData( _thisG ) :\\n    fmd = _thisG\\['modStarData'].toScript().split('\\\\n')\\n    context = \\[]\\n    for line in fmd :\\n        if len( ''.join( line\\[5:-1].replace('\\\"','').split(' ') ) ) :\\n            mod =  ' '.join( line\\[5:-1].split(' ')\\[:-1] )\\n            cmd = line\\[5:-1].split(' ')\\[-1:]\\[0]\\n            context.append( ''.join( \\[ '|'.join( \\[ mod, cmd ] ).replace('\\\"','') , '\\\\n' ] ) )\\n    try :\\n        pyclopediaWriteStar( context )\\n    except :\\n        pyclopediaWriteStar( _mode='new')\\n\\n##### startup command #####\\n\\npyclopediaGetFData( nuke.thisGroup() )\\n\"\n tile_color 0x7f7f7fff\n selected true\n addUserKnob {20 tab_general l General}\n addUserKnob {1 keyword_filter l \"keyword filter\" t \"keyword to filter next field result.\\n\\n*non-case sensitive\"}\n addUserKnob {22 get_sub_field l \"get sub field\" t \"get next field\" -STARTLINE T \"pyclopediaLoadField( nuke.thisGroup() )\"}\n addUserKnob {22 back_field l \"back field\" t \"revert to one field backward\" -STARTLINE T \"pyclopediaBackField( nuke.thisGroup() )\"}\n addUserKnob {22 show_doc l \"show doc\" -STARTLINE T \"pyclopediaShowDoc( nuke.thisGroup() )\"}\n addUserKnob {22 reset -STARTLINE +INVISIBLE T \"pyclopediaReset( nuke.thisGroup() )\"}\n addUserKnob {26 \"\"}\n addUserKnob {1 basechk +HIDDEN}\n basechk nuke\n addUserKnob {41 use_module l \"import module\" T menu01.use_module}\n addUserKnob {1 module +HIDDEN}\n addUserKnob {1 cmd_line l \"command line\"}\n cmd_line nuke\n addUserKnob {4 field_1 l \"field 1\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_2 l \"field 2\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_3 l \"field 3\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_4 l \"field 4\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_5 l \"field 5\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_6 l \"field 6\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_7 l \"field 7\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_8 l \"field 8\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_9 l \"field 9\" +HIDDEN M {\"\"}}\n addUserKnob {4 field_10 l \"field 10\" +HIDDEN M {\"\"}}\n addUserKnob {20 starred_manager l \"starred manager\" n 1}\n starred_manager 0\n addUserKnob {41 modStarData l \"\" +STARTLINE T ModifyMetaData.metadata}\n addUserKnob {22 clear_all l \"clear all starred command\" T \"pyclopediaWriteStar( \\[] )\\npyclopediaGetFData( nuke.thisGroup() )\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-03-18}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;compatible&nbsp;with&nbsp;python3<br><br>1.3<br>-&nbsp;remove&nbsp;gizmo&nbsp;version,&nbsp;some&nbsp;setup&nbsp;not&nbsp;compatible&nbsp;in&nbsp;gizmo&nbsp;format.<br><br>1.2<br>-&nbsp;enhanced&nbsp;entire&nbsp;code<br>-&nbsp;improved&nbsp;error&nbsp;detection<br>-&nbsp;removed&nbsp;reset&nbsp;button<br>-&nbsp;some&nbsp;labels&nbsp;updated&nbsp;the&nbsp;name<br>-&nbsp;added&nbsp;'starred'&nbsp;function<br>-&nbsp;added&nbsp;'keyword&nbsp;filter'<br><br>1.1<br>-&nbsp;fixed&nbsp;'back&nbsp;level'&nbsp;error<br><br>1.0<br>-&nbsp;python&nbsp;encyclopedia\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -287\n  ypos -247\n  bdwidth 296\n  bdheight 273\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nnuke.thisGroup()\\['module'].setVisible( nuke.thisGroup()\\['use_module'].value() )\\n\"\n  xpos -183\n  ypos -157\n  addUserKnob {20 User}\n  addUserKnob {6 use_module l \"use module\" +STARTLINE}\n }\n ModifyMetaData {\n  inputs 0\n  name ModifyMetaData\n  knobChanged \"pyclopediaModFData( nuke.thisGroup() )\"\n  xpos -180\n  ypos -77\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Python_and_TCL.gizmo",
    "content": "Group {\n inputs 0\n name Python_and_TCL\n knobChanged \"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 0 ):\\n    python = nuke.toNode('StickyNote_PythonOverview')\\['label'].getValue()\\n    tcl = nuke.toNode('StickyNote_TCLOverview')\\['label'].getValue()\\n    website = nuke.toNode('StickyNote_WebsiteOverview')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 1 ):\\n    python = nuke.toNode('StickyNote_CreateNode')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_CreateNode_website')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 2 ):\\n    python = nuke.toNode('StickyNote_SelectNode')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = \\\"\\\"\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 3 ):\\n    python = nuke.toNode('StickyNote_ConnectNodes')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = \\\"\\\"\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 4 ):\\n    python = nuke.toNode('StickyNote_ReadKnob')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = \\\"\\\"\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 5 ):\\n    python = nuke.toNode('StickyNote_WriteKnob')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = \\\"\\\"\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 6 ):\\n    python = nuke.toNode('StickyNote_CreateKnob')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_CreateKnob_website')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 7 ):\\n    python = nuke.toNode('StickyNote_Animation')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_Animation_website')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 8 ):\\n    python = nuke.toNode('StickyNote_PythonExpression')\\['label'].getValue()\\n    tcl = nuke.toNode('StickyNote_TCLExpression')\\['label'].getValue()\\n    website = nuke.toNode('StickyNote_WebsiteExpression')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 9 ):\\n    python = nuke.toNode('StickyNote_PythonMath')\\['label'].getValue()\\n    tcl = nuke.toNode('StickyNote_TCLMath')\\['label'].getValue()\\n    website = nuke.toNode('StickyNote_websiteMath')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 10 ):\\n    python = nuke.toNode('StickyNote_Def')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = \\\"\\\"\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 11 ):\\n    python = nuke.toNode('StickyNote_Callbacks')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_websiteCallbacks')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 12 ):\\n    python = nuke.toNode('StickyNote_CustomPanels')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_WebsiteCustomPanels')\\['label'].getValue()\\n\\nelif ('operation' in k.name() and int(nk\\['operation'].getValue()) == 13 ):\\n    python = nuke.toNode('StickyNote_Tricks')\\['label'].getValue()\\n    tcl = \\\"\\\"\\n    website = nuke.toNode('StickyNote_WebsiteTricks')\\['label'].getValue()\\n\\nif ('operation' in k.name()):\\n    nk\\['message_python'].setValue(python)\\n    nk\\['message_tcl'].setValue(tcl)\\n    nk\\['message_website'].setValue(website)\\n\"\n autolabel \"nuke.thisNode().name() + \\\"\\\\n\\\" + '(' + nuke.thisNode()\\['operation'].value() + ')' \"\n tile_color 0xff00ffff\n note_font \"Bitstream Vera Sans Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_size 13\n selected true\n addUserKnob {20 read l \"Read Me\"}\n addUserKnob {4 operation M {\"00. Python & TCL Overview\" \"01. Create node\" \"02. Select a node\" \"03. Connect nodes\" \"04. Read from a knob\" \"05. Write into a knob\" \"06. Create new knob\" \"07. Animation and Curve\" \"08. Expressions\" \"09. Math functions and Wave Generator\" \"10. Functions def()\" \"11. Callbacks\" \"12. Custom Panels\" \"13. Tricks\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {22 create_sticky_note l \"Create Sticky Note\" -STARTLINE T \"n=nuke.thisNode()\\nname = n.name()\\nnuke.root().begin()\\n\\ndef create_sticky():\\n    if(text!=\\\"\\\"):\\n        stickyNote = nuke.createNode('StickyNote')\\n        nuke.autoplace(stickyNote)\\n        stickyNote\\[\\\"label\\\"].setValue(text)\\n\\n\\ntext=n\\['message_python'].getValue()\\ncreate_sticky()\\n\\ntext=n\\['message_tcl'].getValue()\\ncreate_sticky()\\n\\ntext=n\\['message_website'].getValue()\\ncreate_sticky()\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 message_python l Python T Text_python.message}\n addUserKnob {41 message_tcl l TCL T Text_TCL.message}\n addUserKnob {41 message_website l Website T Text_websites.message}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 message l \"\" +STARTLINE T \"<b><font color=\\\"hotpink\\\">Python and TCL v1.1</font></b>\\n<i>by Andrea Geremia</i>\\n\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {22 tutorial l \"<b><font color=\\\"hotpink\\\">Tutorial\" T \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial_python_tcl.html')\\n\" +STARTLINE}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x8e388e00\n  note_font_size 42\n  xpos -13\n  ypos -126\n  bdwidth 103\n  bdheight 456\n }\n Output {\n  inputs 0\n  name Output1\n  xpos 0\n  ypos 300\n }\n StickyNote {\n  inputs 0\n  name StickyNote_TCLOverview\n  label \"TCL OVERVIEW\\n\\nGetting a knob’s value of a specific node:\\n\\n#First frame of current read/write:\\n\\[value Read1.first]\\n\\n#Getting a knob’s value of current node:\\n\\[value this.first_frame]\\n\\n#Return label value of the input node:\\n\\[value this.size]\\n\\n#Name of the input node:\\n\\[value this.input0.label]\\n\\n#Name of the node before the group (Outside):\\n\\[value this.input.name]\\n\\n#Return 1 if the node is on error otherwise 0:\\n\\[value this.parent.input.name]\\n\\n#Get the bounding Box from the input of the node:\\n\\[value error]\\n\\n\\n#Here some expression for the Format\\nformat.x\\nformat.y\\nwidth\\nheight\\nbbox.x\\nbbox.y\\nbbox.w\\nbbox.h\\n\\n#Get the format from the input of the node:\\n\\[value input.bbox.x]#left boundary\\n\\[value input.bbox.r]#right boundary\\n\\nGet the format from the input of the node:\\n\\[value input.format.r]#width\\n\\[value input.format.t]#height\\n\\n#Get the x position of the point #3 of the Bezier1 of the Roto1 node:\\n\\[value Roto1.curves.Bezier1.curve_points.3.main.x]\\n\\n#Return sample pixel value of the node Add1 reading in the red at position of knob Center:\\n\\[sample Add1 Red Center.x Center.y]\\n\\n#Get the value of the channel of a node, at a specific pixelcoordinates (e.g.: 10,10):\\n\\[sample \\[node input] red 10 10]\\n\\n#---------------------------------------------------------------------\\n#SET VALUES\\n\\n#Setting a knob’s value of a specific node:\\n\\[knob Read1.first 10]\\n\\n#Setting a variable, without returning that (useful in a textnode):\\n\\[set seq \\[value Read1.file]; return]\\n\\n#---------------------------------------------------------------------\\n#STRING\\n\\n#Replace string in current node file knob with regex (string “proj” to “projects” in all occurences):\\n\\[regsub -all \\\"proj\\\" \\[value \\[node this].file] \\\"projects\\\"] \\n\\n#String map (replace multiple stringpairs) (this returns: xxffffxxyy):\\n\\[string map \\{\\\"aa\\\" \\\"xx\\\" \\\"bb\\\" \\\"yy\\\"\\} \\\"aaffffaabb\\\" ]\\n\\n#Compare strings:\\n\\[string equal \\[value Text1.message] \\\"bla\\\"]\\n\\n#Regexp matching:\\n\\[regexp -inline \\\"_v\\\\\\[0-9]\\{3\\}\\\" \\[value Read2.file]] \\n\\n#Evaluating string\\n\\[python os.getenv('rotate') == 'xavierb']\\n\\n#---------------------------------------------------------------------\\n#IF CONDITION\\n\\n\\[if \\{condition\\} \\{expr1\\} else \\{expr2\\}]\\n\\n#Example:\\n\\[if \\{\\[value blackpoint]==1\\} \\{return 2\\} \\{return 3\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return True\\} \\{return False\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return blackpoint\\} \\{return whitepoint\\}]\\n\\[if \\{\\[value filter]==\\\"gaussian\\\"\\} \\{return filter\\} \\{return False\\}]\\n\\n#OTHER METHOD\\ncondition ? then : else\\n\\n#Example:\\n#if (r==1)? return 0: else (return r*2)\\nr ==1 ? 0 : r*2\\n\\n#---------------------------------------------------------------------\\n#PATH MANIPULATIONS:\\n\\n#Filepath without extension:\\n\\[file rootname \\[value \\[topnode].file]]\\n\\n#Filename only:\\n\\[basename \\[value \\[topnode].file ]]\\n\\n#Filename only without extension:\\n\\[basename\\[file rootname \\[value \\[topnode].file]]]\"\n  xpos -1411\n  ypos -3379\n }\n StickyNote {\n  inputs 0\n  name StickyNote_PythonOverview\n  label \"PYTHON OVERVIEW\\n\\n#-------------------------------------------------------\\n#PRINT and VARIABLES\\nprint 'Hello World'\\n\\nname = 'Andrea'\\nprint 'Hello' + name\\n\\n#-------------------------------------------------------\\n#VARIABLES TYPES\\n\\nint(x)\\nlong(x)\\nfloat(x)\\nstr(x)\\n\\n#convert string o int\\nint (stringa)\\n\\n#convert int to string\\nstr(integer)\\n\\n#-------------------------------------------------------\\n#STRINGs\\n\\nvar1 = 'Hello World!'\\nprint \\\"Updated String : \\\", var1\\[:6] + 'Python'\\n#Result: Updated String :  Hello Python\\n\\nvar2 = \\\"Hello, Ciao, Halo,\\\"\\nlist = var2.split(',')\\nfor x  in list:\\n    print(x)\\n#Result \\tHello\\n#\\tCiao\\n# \\tHalo\\n\\n#-------------------------------------------------------\\n#IF CONDITION\\n\\nif expression:\\n   statement(s)\\nelse:\\n   statement(s)\\n\\n#Example 01\\nif var == 200:\\n\\tprint 'ciao'\\nelif var<200:\\n\\tprint 'ok'\\n\\n#Example 02\\nanswer = 'y'\\nif answer is 'y':\\n    print(\\\"answer is equal to 'y'\\\")\\n\\n#Example 03\\nif answer in \\['y', 'Y', 'yes', 'Yes', 'YES']:\\n    print(\\\"answer is in this list\\\")\\n\\n#-------------------------------------------------------\\n#IF CONDITION in 1 line\\n(\\\"some string\\\" if expression else \\\"another string\\\")\\n\\n#if size > 100 then print 'big', otherwise print 'small'\\n(' big!' if nuke.thisNode()\\['size'].value()>100 else ' small')\\n\\n#-------------------------------------------------------\\nFOR LOOP\\n\\n#simple structure\\nfor x in range(0, 3):\\nprint x\\n\\n#Lists as an iterable\\ncollection = \\['hey', 5, 'd']\\nfor x in collection:\\n    print x\\n\\n#-------------------------------------------------------\\nWHILE LOOP\\n\\ncount = 0\\nwhile (count < 9):\\n   print 'The count is:', count\\n   count = count + 1\\n\\nprint \\\"Good bye!\\\"\\n\\n# Result: The count is: 0\\n#The count is: 1\\n#The count is: 2\\n#The count is: 3\\n#The count is: 4\\n#The count is: 5\\n#The count is: 6\\n#The count is: 7\\n#The count is: 8\\n#Good bye!\"\n  xpos -1822\n  ypos -3379\n }\n StickyNote {\n  inputs 0\n  name StickyNote_WebsiteOverview\n  label \"https://www.tutorialspoint.com/python/index.htm\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/basics.html\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/index.html\\n\\n#----------------------------------------------------------------------------------------------\\n\\nhttp://www.nukepedia.com/tcl/tcl-reference\\n\\nhttp://www.nukepedia.com/reference/Tcl/group__tcl__builtin.html\\\\\\n\\nhttp://www.lookinvfx.com/nuke-tcl-snippets/\\n\\nhttp://thoughtvfx.blogspot.de/2012/12/nuke-tcl-tips.html\\n\"\n  xpos -825\n  ypos -3383\n }\n StickyNote {\n  inputs 0\n  name StickyNote_CreateNode\n  label \"CREATE NODE\\n\\n#create node with nuke.nodes.xxx()\\nnuke.nodes.Blur()\\nnuke.createNode(\\\"Grade\\\")\\n\\n#create 3 Blur Nodes\\nfor x in range(0, 3):\\n    nuke.nodes.Blur()\\n\\n#----------------------------------------------------------------------------------\\n#Python Button in a Group create a Blur Node outside the Group\\n#Copy this in a Python Button in a Group\\n#Example01\\nnuke.root().begin()\\nstickyNote = nuke.createNode('Blur')\\n\\n\\n#Python Button in a Group create a StickyNode outside the Group, reading the value in the knob 'python'\\n#Example02\\nn=nuke.thisNode()\\nname = n.name()\\ntext=nuke.toNode(name)\\['python'].getValue()\\n\\nnuke.root().begin()\\nstickyNote = nuke.createNode('StickyNote')\\nstickyNote\\[\\\"label\\\"].setValue(text)\"\n  xpos -1750\n  ypos -1942\n }\n StickyNote {\n  inputs 0\n  name StickyNote_CreateNode_website\n  label \"#https://learn.foundry.com/nuke/developers/63/pythondevguide/basics.html\\n\\n#List of all the nodes in Nuke: http://nukexexperts.blogspot.de/2013/05/nuke-node-reference-image-nodes.html\\n\"\n  xpos -1122\n  ypos -1926\n }\n StickyNote {\n  inputs 0\n  name StickyNote_ReadKnob\n  label \"READ KNOB\\n\\n# List all knobs for selected node\\nprint( nuke.toNode('Read1') )\\n\\n# List all knobs for specific node\\nprint( nuke.selectedNode() )\\n\\n# Get value from specific node, method 01\\nvalue = nuke.toNode('Read1').knob('file').getValue()\\n\\n#Print value from specific node, method 02\\nnode = nuke.toNode(\\\"Blur1\\\")\\nprint node\\['size'].value()\\n\\n# Get value from selected node\\nvalue = nuke.selectedNode().knob('file').getValue()\\n\\n#Get default value\\nnuke.toNode('Blur6').knob('size').defaultValue()\\n\\n# Get value from specific node and evaluate it (good for expressions)\\nvalue = nuke.toNode('Read1').knob('file').evaluate()\\n\\n#get the expression of a knob\\nif nuke.toNode('Blur6').knob('size').hasExpression():\\n    print nuke.toNode('Blur6').knob('size').toScript()\\n\\n#Get value XY_knob individually\\nnuke.toNode('Transform1').knob('scale').getValue(0)\\t#w\\nnuke.toNode('Transform1').knob('scale').getValue(1)\\t#h\\n\\n#get me the height and width from a selected node\\nnuke.selectedNode().height()\\nnuke.selectedNode().width()\\nnuke.selectedNode().pixelAspect\\n\\n#--------------------------------------------------------------------------------\\n#DROPDOWN MENU / PULLDOWN CHOICE\\n\\n#Get value from Pulldown Choice (name)\\nnuke.selectedNode()\\['attribute'].value()\\n\\n#Get index from Pulldown Choice (name)\\nint(nuke.toNode('Blur6').knob('filter').getValue())\\nint(nuke.selectedNode().knob('filter').getValue())\\n\\n#--------------------------------------------------------------------------------\\n#Check the name of a knob (will be useful later)\\nnode = nuke.selectedNode()\\nknob = node\\['filter']\\nif('filter' in knob.name()):\\n    print \\\"found it!\\\"\\n\\n#Calculate the max and min value in a framerange\\nret = nuke.getFramesAndViews('get range', '1-100')\\nframe_range = ret\\[0].split('-')\\n\\nmin=0\\nmax=0\\n\\nfor i in range(int(frame_range\\[0]), int(frame_range\\[1])+1):\\n    knob = nuke.selectedNode()\\['size'].getValueAt(i)\\n    print 'value: ' + knob\\n    print 'frame: ' + i\\n    if (knob > max):\\n        max = knob\\n\\n    if (knob < min):\\n        min = knob\\n\\nprint 'max is', max\\nprint 'min is', min\\n\\n#--------------------------------------------------------------------------------\\n#Get Frame Range from node\\nfirst_frame = nuke.selectedNode().firstFrame()\\nlast_frame = nuke.selectedNode().lastFrame()\\n\\n#-------------------------------------------------------------------------------\\n#READ KNOB INSIDE GROUP\\n#Get a knob of a Node inside a Group. This works only into a Python Button of the Group\\nn=nuke.thisNode()\\nname = n.name()\\nprint nuke.toNode('StickyNote_PythonOverview')\\['label'].getValue()\\n\"\n  xpos -1664\n  ypos -407\n }\n StickyNote {\n  inputs 0\n  name StickyNote_WriteKnob\n  label \"WRITE KNOB\\n#Set default value for a knob\\nnuke.knobDefault( 'Blur.size', '77' )\\nnuke.knobDefault( 'channels', 'rgba' )\\n\\n# Set specific node's value\\nnuke.toNode('Read1').knob('file').setValue('c:/hello.tif')\\nnuke.toNode('Transform2').knob('scale').setValue(2)\\n\\n# Set selected node's value\\nnuke.selectedNode().knob('file').setValue('c:/hello.tif')\\nnuke.selectedNode()\\['scale'].setValue(3)\\n\\n# Set this node's value\\nnuke.thisNode().knob('file').setValue('c:/hello.tif')\\n\\n#Set knob with 4 values (x, y, w, h)\\nn = nuke.selectedNode()\\nn\\['box'].setValue((0, 150, 4096, 2010))\\n\\n#Set knob with 2 values (w, h)\\nnuke.selectedNode()\\['scale'].setValue(1250, 0)\\n\\n#When a node has XY Knob, use this code to split values and assign 2 different values\\nnuke.selectedNode()\\['scale'].setSingleValue(False)\\nnuke.selectedNode()\\['scale'].setExpression('scale.w*2',1)\\n\\n# Set specific node's knob to default value\\nnuke.toNode('Grade1').knob('gamma').setValue( nuke.toNode('Grade1').knob('gamma').defaultValue() )\\n\\n#set Expression in a knob\\nnode = nuke.selectedNode()\\nnode.knob('mix').setExpression('size + 5')\\n\\n#disable a node\\nnuke.toNode('Blur7')\\['disable'].setValue(True)\\n\\n#single or multiple values in a Knob\\nnuke.toNode('Transform2')\\['scale'].setSingleValue(True)\\n\\n#set a checkbox\\nnuke.toNode('Transform2')\\['invert_matrix'].setValue(True)\\nnuke.toNode('Transform2')\\['invert_matrix'].setValue(1)\\n\\n#--------------------------------------------------------------------------------\\n#DROPDOWN MENU / PULLDOWN CHOICE\\n\\n#set a pulldown choice\\nnuke.toNode('Transform2')\\['filter'].setValue(2)\\n\\n#populate pulldown choice (dropdown menu)\\npulldown = nuke.toNode('Group1')\\n\\npulldown\\['id'].setValues(\\['a', 'b', 'c'])\\n\\n\\n#expression in Pulldown choice\\ntcl:\\nin Transform1.filter \\{set_expression \\{Transform2.filter\\}\\}\\n\\npython\\nk=nuke.toNode('Transform1')\\['filter']\\nk.setExpression('Transform2.filter',0)\\n\\n#--------------------------------------------------------------------------------\\n#set a knob as the current frame\\nnk = nuke.thisNode()\\nnk.knob('translate').setValue(nuke.frame())\"\n  xpos -1744\n  ypos 686\n }\n StickyNote {\n  inputs 0\n  name StickyNote_CreateKnob\n  label \"CREATE KNOB\\n\\n#formula\\nnode = nuke.toNode('Name Node')\\nknob = nuke.nuke.Double_Knob('name', 'Label')\\nnode.addKnob(knob)\\n\\n\\n#create a Slider knob\\nnode = nuke.selectedNode()\\nknob = nuke.nuke.Double_Knob('slider', 'Slider') \\nknob.setRange(1,100)\\nknob.setValue(10)\\nnode.addKnob(knob)\\n\\n#------------------------------------------------------------------------------\\n# create a Checkbox\\nsn = nuke.selectedNode()\\n\\nuk = nuke.nuke.Boolean_Knob('checkbox', 'Checkbox') \\nuk.setValue(True)\\nsn.addKnob(uk)\"\n  xpos -1741\n  ypos 1567\n }\n StickyNote {\n  inputs 0\n  name StickyNote_CreateKnob_website\n  label \"#Find all the Knob Types here:\\n\\nhttps://learn.foundry.com/nuke/developers/63/ndkdevguide/knobs-and-handles/knobtypes.html\"\n  xpos -1411\n  ypos 1567\n }\n StickyNote {\n  inputs 0\n  name StickyNote_Animation\n  label \"ANIMATION\\n\\n#current frame\\nprint nuke.frame()\\n\\n#go to frame x\\nnuke.frame(x)\\n\\n#get value of knob at frame 5\\nknob = nuke.selectedNode()\\['size'].getValueAt(5)\\n\\n#if knob is animated\\nnode = nuke.createNode( 'Blur' )\\nk = node\\['size']\\nk.isAnimated()\\n\\n#if has an expression\\nk.hasExpression()\\n\\n#Return True if there is a keyframe at the current frame \\nk.isKey()\\n\\n#Return True if there is a keyframe at the frame 5 \\nk.isKeyAt(5)\\n\\n#get key value at frame 3\\nnuke.selectedNode()\\['rotate'].getValueAt(3)\\n\\n# print key value at current frame\\nnk = nuke.selectedNode()\\nknob = nk.knob('rotate')\\nprint knob.getValueAt(nuke.frame())\\n\\n#set knob to accept animation\\nnode = nuke.createNode( 'Blur' )\\nk = node\\['size']\\nk.setAnimated()\\n\\n#set key in the current frame\\nk.setValue( 5 )\\n\\n#two more keys at frame 10 and 100 with values of 55 and 66 respectively\\nk.setValueAt( 55, 10 )\\nk.setValueAt( 66, 100 )\\n\\n\\n#if knob is an array, this sets the first field/channel to 77 and the second to 88 at frame 100\\nk.setValueAt( 77, 100, 0 )\\nk.setValueAt( 88, 100, 1 )\\n\\n#------------------------------------------------------------------------------------------------\\n#print all the keys with the values for the given animation curve\\nfor key in animCurve.keys():\\n    xValue = key.x\\n    yValue = key.y\\n    print 'ket at %s has value %s' % ( xValue, yValue )\\n\\n# Result:\\nket at 1.0 has value 5.0\\nket at 10.0 has value 55.0\\nket at 100.0 has value 77.0\\n\\n#------------------------------------------------------------------------------------------------\\n#Clear all the animation in a node\\nn=nuke.selectedNode()\\nk=n.allKnobs()\\nfor i in k:\\n    i.clearAnimated()\\n----------------------------------------------------------------------------\\n\\n#Bake animation\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/animation.html\\n\\n----------------------------------------------------------------------------\\n#Example 01: Select the anim curve\\ng1 = nuke.toNode(\\\"Grade1\\\")\\ngBlack = g1\\['blackpoint']\\nanim = gBlack.animation(0)\\nprint anim\\n\\n\\n#------------------------------------------------------------------------------------------------\\n#Example 02: create a Frade Node with 2 keys on the blackpoint at frame 1 and 10\\ng = nuke.nodes.Grade()\\na = nuke.AnimationC urve(g\\['blackpo int'], 0, 'r')\\na.setKey(1, .1)\\na.setKey(10, .125)\\ng\\['blackpoint'].copyAnimation(0, a)\\n#------------------------------------------------------------------------------------------------\\n#Evaluate: This simply takes a numeric frame argument (int or float) and returns the curve’s value at that frame\\nanim.evaluate(30)\\n\\n#frame number and a key value\\nanim.setKey(48, .044)\\n\\n#This returns True if the animation is driven by keys, or False if the animation is linked by an expression. \\nanim.noExpression()\\n\\n#attach an expression to an AnimationCurve\\ngWhite = g1\\['whitepoint']\\ngWhite.setAnimated()\\nanim2 = gWhite.animation(0)\\nanim2.setExpression(\\\"blackpoint\\\")\\n\\n#------------------------------------------------------------------------------------------------\\n#this method will still return the value ‘curve if the parent knob isn’t linked using an expression\\nanim.expression()\\n\\n#This returns a list of AnimationKey objects\\nkeys = anim.keys()\\nprint keys\\n#------------------------------------------------------------------------------------------------\\n#DELETE ANIMATION\\n\\n#Delete all keys from the curve\\nanim.clear()\\n\\n#Remove key \\nknob.removeKey()\\n\\n#Remove key at time 't' \\nknob.removeKeyAt(t)\\n\\n#Delete the animation from all the selected nodes\\nnodes = nuke.selectedNodes()\\nfor n in nodes:\\n    knobs = n.allKnobs()\\nfor k in knobs:\\n    k.clearAnimated()\"\n  xpos -1771\n  ypos 1901\n }\n StickyNote {\n  inputs 0\n  name StickyNote_Animation_website\n  label \"http://www.nukepedia.com/python/animationcurve-and-animationkey-objects\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/animation.html\\n\\nhttps://learn.foundry.com/nuke/developers/80/pythonreference/nuke.Knob-class.html\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/basics.html#copying-an-animation-curve-between-nodes\"\n  xpos -1120\n  ypos 1898\n }\n StickyNote {\n  inputs 0\n  name StickyNote_PythonExpression\n  label \"EXPRESSION in PYTHON\\n\\n• nuke.expression() to use a Nuke expression in Python code.\\n\\n• expression to use a Nuke expression in TCL.\\n\\n• nuke.tcl() to run TCL code in Python.\\n\\n• python to run Python code in TCL\\n\\n• \\[ ] (square brackets) to embed TCL in a Nuke expression (or a string knob)\\n\\n• \\[python \\{...\\}] to embed Python in a Nuke expression.\\n\\n\\n#set knob with an Expression\\nnode = nuke.selectedNode()\\nnode.knob('mix').setExpression('size + 5')\\n\\n#another example\\nnode = nuke.toNode('Grade1')\\nnode.knob('whitepoint').setExpression('gain + 1')\\n\\n#Use Python in the Expression (with TCL)\\n\\[python nuke.thisNode().metadata().keys()]\\n\\n\\[python nuke.thisNode().metadata()\\\\\\['input/filename'\\\\]]\\n\\n\\[python \\{nuke.thisNode().metadata\\['input/filename']\\}]\\n\\n\\[python \\{nuke.thisNode().metadata\\['input/filename']\\}]\\n\\n#Use python in Expression\\n\\[python \\{nuke.thisNode().knob(\\\\'rotate\\\\').value()\\}]\\n\\n\\n#TCL in Python\\nnuke.tcl('return '+nuke.selectedNode()\\['filter'].value())\"\n  xpos -1895\n  ypos 3622\n }\n StickyNote {\n  inputs 0\n  name StickyNote_TCLExpression\n  label \"EXPRESSION TCL\\n\\nGetting a knob’s value of a specific node:\\n\\n#First frame of current read/write:\\n\\[value Read1.first]\\n\\n#Getting a knob’s value of current node:\\n\\[value this.first_frame]\\n\\n#Return label value of the input node:\\n\\[value this.size]\\n\\n#Name of the input node:\\n\\[value this.input0.label]\\n\\n#Name of the node before the group (Outside):\\n\\[value this.input.name]\\n\\n#Return 1 if the node is on error otherwise 0:\\n\\[value this.parent.input.name]\\n\\n#Get the bounding Box from the input of the node:\\n\\[value error]\\n\\n\\n#Here some expression for the Format\\nformat.x\\nformat.y\\nwidth\\nheight\\nbbox.x\\nbbox.y\\nbbox.w\\nbbox.h\\n\\n#Get the format from the input of the node:\\n\\[value input.bbox.x]#left boundary\\n\\[value input.bbox.r]#right boundary\\n\\nGet the format from the input of the node:\\n\\[value input.format.r]#width\\n\\[value input.format.t]#height\\n\\n#Get the x position of the point #3 of the Bezier1 of the Roto1 node:\\n\\[value Roto1.curves.Bezier1.curve_points.3.main.x]\\n\\n#Return sample pixel value of the node Add1 reading in the red at position of knob Center:\\n\\[sample Add1 Red Center.x Center.y]\\n\\n#Get the value of the channel of a node, at a specific pixelcoordinates (e.g.: 10,10):\\n\\[sample \\[node input] red 10 10]\\n\\n#---------------------------------------------------------------------\\n#SET VALUES\\n\\n#Setting a knob’s value of a specific node:\\n\\[knob Read1.first 10]\\n\\n#Setting a variable, without returning that (useful in a textnode):\\n\\[set seq \\[value Read1.file]; return]\\n\\n#---------------------------------------------------------------------\\n#STRING\\n\\n#Replace string in current node file knob with regex (string “proj” to “projects” in all occurences):\\n\\[regsub -all \\\"proj\\\" \\[value \\[node this].file] \\\"projects\\\"] \\n\\n#String map (replace multiple stringpairs) (this returns: xxffffxxyy):\\n\\[string map \\{\\\"aa\\\" \\\"xx\\\" \\\"bb\\\" \\\"yy\\\"\\} \\\"aaffffaabb\\\" ]\\n\\n#Compare strings:\\n\\[string equal \\[value Text1.message] \\\"bla\\\"]\\n\\n#Regexp matching:\\n\\[regexp -inline \\\"_v\\\\\\[0-9]\\{3\\}\\\" \\[value Read2.file]] \\n\\n#Evaluating string\\n\\[python os.getenv('rotate') == 'xavierb']\\n\\n#---------------------------------------------------------------------\\n#IF CONDITION\\n\\n\\[if \\{condition\\} \\{expr1\\} else \\{expr2\\}]\\n\\n#Example:\\n\\[if \\{\\[value blackpoint]==1\\} \\{return 2\\} \\{return 3\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return True\\} \\{return False\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return blackpoint\\} \\{return whitepoint\\}]\\n\\[if \\{\\[value filter]==\\\"gaussian\\\"\\} \\{return filter\\} \\{return False\\}]\\n\\n#OTHER METHOD\\ncondition ? then : else\\n\\n#Example:\\n#if (r==1)? return 0: else (return r*2)\\nr ==1 ? 0 : r*2\\n\\n#---------------------------------------------------------------------\\n#PATH MANIPULATIONS:\\n\\n#Filepath without extension:\\n\\[file rootname \\[value \\[topnode].file]]\\n\\n#Filename only:\\n\\[basename \\[value \\[topnode].file ]]\\n\\n#Filename only without extension:\\n\\[basename\\[file rootname \\[value \\[topnode].file]]]\"\n  xpos -1364\n  ypos 3624\n }\n StickyNote {\n  inputs 0\n  name StickyNote_WebsiteExpression\n  label \"http://community.foundry.com/discuss/topic/101836\\n\\nhttps://docs.python.org/3/reference/expressions.html\\n\\n#----------------------------------------------------------------------------\\n\\nhttp://www.nukepedia.com/tcl/tcl-reference\\n\\nhttp://www.nukepedia.com/reference/Tcl/group__tcl__builtin.html\\\\\\n\\nhttp://www.lookinvfx.com/nuke-tcl-snippets/\\n\\nhttp://thoughtvfx.blogspot.de/2012/12/nuke-tcl-tips.html\\n\"\n  xpos -784\n  ypos 3632\n }\n StickyNote {\n  inputs 0\n  name StickyNote_TCLMath\n  label \"MATH FUNCTIONS\\nTCL\\n\\n#Returns the absolute value of the floating-point number x.\\nabs (x)\\n\\n#Round x up to the nearest integer.\\nceil (x)\\n\\n#Round x down to the nearest integer.\\nfloor (x)\\n\\n#Round x to the nearest integer not larger in absolute value\\nint (x)\\n\\n#Return x clamped to \\[0.0 ... 1.0].\\nclamp (x)\\n\\n#Returns the cosine of x.\\ncos(x)\\n\\n#Returns the sine of x.\\nsin (x)\\n\\n#Returns the y value of the animation curve at the given frame\\ncurve (frame)\\nrotate(frame)\\n\\n#Returns the current frame\\nframe\\n\\n#Convert the angle x from radians into degrees\\ndegrees (x)\\n\\n#Convert the angle x from degrees into radians\\nradians (x)\\n\\n#Return the greatest of all values\\nmax (x, y, ... )\\n\\n#Return the smallest of all values\\nmin (x, y, ... )\\n\\n#Return the value for pi (3.141592654...)\\npi\\n\\n#Returns the value of x raised to the power of y.\\npow (x, y)\\n\\n#Returns the non-negative square root of x.\\nsqrt (x)\\n\\n#Evaluates the y value for an animation at the given frame\\nvalue (frame)\"\n  xpos -1839\n  ypos 5097\n }\n StickyNote {\n  inputs 0\n  name StickyNote_Def\n  label \"DEF\\n\\n#sintax\\ndef function_name( parameters ):\\n   \\\"function_docstring\\\"\\n   function_suite\\n   return \\[expression]\\n\\n#example\\ndef printme( str ):\\n   \\\"This prints a passed string into this function\\\"\\n   print str\\n   return\\n\\ndef sum(a, b)\\n c = a+b   \\n return c\\n---------------------\\n print \\\"the sum is \\\" + sum(10, 5)\"\n  xpos -1543\n  ypos 5822\n }\n StickyNote {\n  inputs 0\n  name StickyNote_Callbacks\n  label \"#CALLBACKS\\n\\n#----------------------------------------------------------------\\n#KNOB CHANGED\\n\\n#sintax\\n#copy this in the Script Editor in Nuke, select your node (or subsistute nuke.selectedNode() with nuke.toNode(\\\"NodeName\\\")) and launch the script\\n#Example 01\\n\\nnuke.selectedNode().knob('knobChanged').setValue(\\\"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\nif ('rotate' in k.name()):\\n    #YOUR CODE\\\")\\n\\n\\n#every time that rotate will change, it will execute your code\\n#This was just an example, in your Script Editor use THIS VERSION with \\\\n for a new line\\nnuke.selectedNode().knob('knobChanged').setValue(\\\"nk = nuke.thisNode()\\\\nk =nuke.thisKnob()\\\\nif ('rotate' in k.name()):    #YOUR CODE\\\")\\n\\n#----------------------------------------------------------------\\n#Example 02\\n#To avoid the \\\\n to every line, just use \\\"\\\"\\\"\\nnuke.selectedNode().knob('knobChanged').setValue(\\\"\\\"\\\"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\nif ('gain' in k.name()):\\n    print 'ciao'\\n\\\"\\\"\\\")\\n\\n#----------------------------------------------------------------\\nnuke.selectedNode()\\['knobChanged'].setValue(\\\"if nuke.thisKnob().name() == 'inputChange': print 'input has Changed'\\\")\\n\\n#remember to use the ' ' instead of \\\" \\\" inside the python code\\n\\n#----------------------------------------------------------------\\n#ON CREATE\\nnuke.selectedNode().knob('onCreate').setValue(\\\"nk = nuke.thisNode()\\\\nk = nk\\['first_frame']\\\\nk.setValue(nuke.frame())\\\")\"\n  xpos -1786\n  ypos 6103\n }\n StickyNote {\n  inputs 0\n  name StickyNote_websiteCallbacks\n  label \"https://learn.foundry.com/nuke/developers/63/pythondevguide/callbacks.html\\n\\nhttps://learn.foundry.com/nuke/developers/63/ndkdevguide/knobs-and-handles/knobchanged.html\\n\"\n  xpos -963\n  ypos 6117\n }\n StickyNote {\n  inputs 0\n  name StickyNote_WebsiteCustomPanels\n  label \"https://learn.foundry.com/nuke/developers/63/pythondevguide/custom_panels.html\\n\"\n  xpos -1247\n  ypos 6654\n }\n StickyNote {\n  inputs 0\n  name StickyNote_WebsiteTricks\n  label #http://www.comp-fu.com/2014/07/nuke-autolabel-magic/\n  xpos -900\n  ypos 6831\n }\n StickyNote {\n  inputs 0\n  name StickyNote_CustomPanels\n  label \"CUSTOM PANELS\\n\\n#----------------------------------------------------------------\\npan = nuke.Panel('test')\\nchoices = 'fistchoice secondchoice thridchoice'\\npan.addEnumerationPulldown('choice:', choices)\\npan.show()\"\n  xpos -1624\n  ypos 6639\n }\n StickyNote {\n  inputs 0\n  name StickyNote_SelectNode\n  label \"SELECT NODE\\n#get selected node\\nnuke.selectedNode()\\n\\n#get multiple nodes selected\\nnuke.selectedNodes()\\n\\n#select node by name\\nnode = nuke.toNode(\\\"Blur1\\\")\\nnode.knob('selected').setValue(True)\\n\\n#select all the nodes\\nfor node in nuke.allNodes():\\t\\t\\t# The 'for loop'\\n        node\\['selected'].setValue(True)\\t\\t#Attribute 'selected' becomes True\\n\\n#-------------------------------------------------------------------------------------\\n#select nodes that start with a specific \\\"string\\\"\\nfor node in nuke.allNodes():\\n    if node\\['name'].value().startswith(\\\"ColorCor\\\"):\\t#Instead of 'ColorCor' put the name that you want\\n        node\\['selected'].setValue(True)\\n\\n#-------------------------------------------------------------------------------------\\n#select node by class\\nfor node in nuke.allNodes():\\n    if node.Class() == \\\"Blur\\\":\\t\\t#Select all the Blur nodes\\n        node\\['selected'].setValue(True)\\n\\n\\n#-------------------------------------------------------------------------------------\\n#Run a script for every selected node\\nsn = nuke.selectedNodes()               \\t# The list of nodes.\\nfor node in sn:\\t\\t\\n    print nodes\\['name'].getValue()      \\t# Put your code here.\\n\\n#-------------------------------------------------------------------------------------\\n#Add name of nodes into a Array (List). Select nodes and create a list of all the names\\narray = \\[]\\t\\t\\t#create the array\\nfor node in nuke.selectedNodes():\\t\\n    n = node\\['name'].value()\\n    array.append(n)\\t\\t#Add the value to the list\\nprint array\\t\\t\\t#print the list\\n\\n#---------------------------------------------------------------------------------------\\n#DESELECT ALL SELECTED NODES\\nif nuke.selectedNodes():\\n\\tfor i in nuke.selectedNodes():\\n\\t\\ti\\['selected'].setValue(False)\"\n  xpos -1715\n  ypos -1578\n }\n StickyNote {\n  inputs 0\n  name StickyNote_ConnectNodes\n  label \"CONNECT NODES\\n\\n#Connect the output of the select node to the input 0 of ColorCorrect\\nnuke.toNode('ColorCorrect3').setInput( 0, nuke.selectedNode() )\\n\\n#Connect the output of the select node to the input 1 (mask) of ColorCorrect\\nnuke.toNode('ColorCorrect3').setInput( 1, nuke.selectedNode() )\\n\\n#Connect output of ColorCorrection to all the selected nodes\\nfor i in nuke.selectedNodes():\\n    i.setInput( 0, nuke.toNode('ColorCorrect3'))\\n\\n#-------------------------------------------------------------------------------------\\n#Create a merge node e connect the inputs to the selected nodes\\na = nuke.createNode('Merge')\\nb = nuke.selectedNodes()\\nx=0\\nfor i in b:\\n    if x==2:\\n        x+=1\\n    continue\\n    a.setInput(x,i)\\n    x+=1\\n\\n#-------------------------------------------------------------------------------------\\n#DISCONNECT NODES\\n\\n#Disconnect input\\nnuke.selectedNode().setInput(1, None)\\n\\n#Disconnect all the inputs of the selected node\\nfor i in range(0, nuke.selectedNode().maxInputs()):\\n         nuke.selectedNode().setInput(i, None)\\n\\n#-------------------------------------------------------------------------------------\\n#DEPENDENT AND DEPENDENCIES\\n\\n#List of nodes dependent and dependencies\\nnuke.selectedNode().dependent()\\nnuke.selectedNode().dependencies()\\n\\n#Print the name of the nodes\\nfor i in nuke.selectedNode().dependencies():\\n    print i.name()\"\n  xpos -1644\n  ypos -976\n }\n Text2 {\n  inputs 0\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"PYTHON OVERVIEW\\n\\n#-------------------------------------------------------\\n#PRINT and VARIABLES\\nprint 'Hello World'\\n\\nname = 'Andrea'\\nprint 'Hello' + name\\n\\n#-------------------------------------------------------\\n#VARIABLES TYPES\\n\\nint(x)\\nlong(x)\\nfloat(x)\\nstr(x)\\n\\n#convert string o int\\nint (stringa)\\n\\n#convert int to string\\nstr(integer)\\n\\n#-------------------------------------------------------\\n#STRINGs\\n\\nvar1 = 'Hello World!'\\nprint \\\"Updated String : \\\", var1\\[:6] + 'Python'\\n#Result: Updated String :  Hello Python\\n\\nvar2 = \\\"Hello, Ciao, Halo,\\\"\\nlist = var2.split(',')\\nfor x  in list:\\n    print(x)\\n#Result \\tHello\\n#\\tCiao\\n# \\tHalo\\n\\n#-------------------------------------------------------\\n#IF CONDITION\\n\\nif expression:\\n   statement(s)\\nelse:\\n   statement(s)\\n\\n#Example 01\\nif var == 200:\\n\\tprint 'ciao'\\nelif var<200:\\n\\tprint 'ok'\\n\\n#Example 02\\nanswer = 'y'\\nif answer is 'y':\\n    print(\\\"answer is equal to 'y'\\\")\\n\\n#Example 03\\nif answer in \\['y', 'Y', 'yes', 'Yes', 'YES']:\\n    print(\\\"answer is in this list\\\")\\n\\n#-------------------------------------------------------\\n#IF CONDITION in 1 line\\n(\\\"some string\\\" if expression else \\\"another string\\\")\\n\\n#if size > 100 then print 'big', otherwise print 'small'\\n(' big!' if nuke.thisNode()\\['size'].value()>100 else ' small')\\n\\n#-------------------------------------------------------\\nFOR LOOP\\n\\n#simple structure\\nfor x in range(0, 3):\\nprint x\\n\\n#Lists as an iterable\\ncollection = \\['hey', 5, 'd']\\nfor x in collection:\\n    print x\\n\\n#-------------------------------------------------------\\nWHILE LOOP\\n\\ncount = 0\\nwhile (count < 9):\\n   print 'The count is:', count\\n   count = count + 1\\n\\nprint \\\"Good bye!\\\"\\n\\n# Result: The count is: 0\\n#The count is: 1\\n#The count is: 2\\n#The count is: 3\\n#The count is: 4\\n#The count is: 5\\n#The count is: 6\\n#The count is: 7\\n#The count is: 8\\n#Good bye!\"\n  old_message {{69 88 80 82 69 83 83 73 79 78 32 105 110 32 80 89 84 72 79 78 10 10 8226 32 110 117 107 101 46 101 120 112 114 101 115 115 105 111 110 40 41 32 116 111 32 117 115 101 32 97 32 78 117 107 101 32 101 120 112 114 101 115 115 105 111 110 32 105 110 32 80 121 116 104 111 110 32 99 111 100 101 46 10 10 8226 32 101 120 112 114 101 115 115 105 111 110 32 116 111 32 117 115 101 32 97 32 78 117 107 101 32 101 120 112 114 101 115 115 105 111 110 32 105 110 32 84 67 76 46 10 10 8226 32 110 117 107 101 46 116 99 108 40 41 32 116 111 32 114 117 110 32 84 67 76 32 99 111 100 101 32 105 110 32 80 121 116 104 111 110 46 10 10 8226 32 112 121 116 104 111 110 32 116 111 32 114 117 110 32 80 121 116 104 111 110 32 99 111 100 101 32 105 110 32 84 67 76 10 10 8226 32 91 32 93 32 40 115 113 117 97 114 101 32 98 114 97 99 107 101 116 115 41 32 116 111 32 101 109 98 101 100 32 84 67 76 32 105 110 32 97 32 78 117 107 101 32 101 120 112 114 101 115 115 105 111 110 32 40 111 114 32 97 32 115 116 114 105 110 103 32 107 110 111 98 41 10 10 8226 32 91 112 121 116 104 111 110 32 123 46 46 46 125 93 32 116 111 32 101 109 98 101 100 32 80 121 116 104 111 110 32 105 110 32 97 32 78 117 107 101 32 101 120 112 114 101 115 115 105 111 110 46 10 10 10 35 115 101 116 32 107 110 111 98 32 119 105 116 104 32 97 110 32 69 120 112 114 101 115 115 105 111 110 10 110 111 100 101 32 61 32 110 117 107 101 46 115 101 108 101 99 116 101 100 78 111 100 101 40 41 10 110 111 100 101 46 107 110 111 98 40 39 109 105 120 39 41 46 115 101 116 69 120 112 114 101 115 115 105 111 110 40 39 115 105 122 101 32 43 32 53 39 41 10 10 35 97 110 111 116 104 101 114 32 101 120 97 109 112 108 101 10 110 111 100 101 32 61 32 110 117 107 101 46 116 111 78 111 100 101 40 39 71 114 97 100 101 49 39 41 10 110 111 100 101 46 107 110 111 98 40 39 119 104 105 116 101 112 111 105 110 116 39 41 46 115 101 116 69 120 112 114 101 115 115 105 111 110 40 39 103 97 105 110 32 43 32 49 39 41 10 10 35 85 115 101 32 80 121 116 104 111 110 32 105 110 32 116 104 101 32 69 120 112 114 101 115 115 105 111 110 32 40 119 105 116 104 32 84 67 76 41 10 91 93 10 10 91 112 121 116 104 111 110 32 110 117 107 101 46 116 104 105 115 78 111 100 101 40 41 46 109 101 116 97 100 97 116 97 40 41 92 91 39 105 110 112 117 116 47 102 105 108 101 110 97 109 101 39 92 93 93 10 10 91 112 121 116 104 111 110 32 123 110 117 107 101 46 116 104 105 115 78 111 100 101 40 41 46 109 101 116 97 100 97 116 97 91 39 105 110 112 117 116 47 102 105 108 101 110 97 109 101 39 93 125 93 10 10 91 112 121 116 104 111 110 32 123 110 117 107 101 46 116 104 105 115 78 111 100 101 40 41 46 109 101 116 97 100 97 116 97 91 39 105 110 112 117 116 47 102 105 108 101 110 97 109 101 39 93 125 93 10 10 35 85 115 101 32 112 121 116 104 111 110 32 105 110 32 69 120 112 114 101 115 115 105 111 110 10 91 112 121 116 104 111 110 32 123 110 117 107 101 46 116 104 105 115 78 111 100 101 40 41 46 107 110 111 98 40 92 39 114 111 116 97 116 101 92 39 41 46 118 97 108 117 101 40 41 125 93 10 10 10 35 84 67 76 32 105 110 32 80 121 116 104 111 110 10 110 117 107 101 46 116 99 108 40 39 114 101 116 117 114 110 32 39 43 110 117 107 101 46 115 101 108 101 99 116 101 100 78 111 100 101 40 41 91 39 102 105 108 116 101 114 39 93 46 118 97 108 117 101 40 41 41}\n    }\n  old_expression_markers {{210 212 581 582 675 692 730 747 885 894}\n    }\n  box {0 -1121 3385 1580}\n  transforms {{0 2}\n    }\n  cursor_position 1735\n  scale {1 1}\n  center {1536 790}\n  cursor_initialised true\n  initial_cursor_position {{0 1580}\n    }\n  group_animations {{0} imported: 0 selected: 0 items: \"root transform/\"}\n  animation_layers {{1 11 1536 790 0 0 1 1 0 0 0 0}\n    }\n  name Text_python\n  xpos -1\n  ypos -46\n }\n Text2 {\n  inputs 0\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"TCL OVERVIEW\\n\\nGetting a knob’s value of a specific node:\\n\\n#First frame of current read/write:\\n\\[value Read1.first]\\n\\n#Getting a knob’s value of current node:\\n\\[value this.first_frame]\\n\\n#Return label value of the input node:\\n\\[value this.size]\\n\\n#Name of the input node:\\n\\[value this.input0.label]\\n\\n#Name of the node before the group (Outside):\\n\\[value this.input.name]\\n\\n#Return 1 if the node is on error otherwise 0:\\n\\[value this.parent.input.name]\\n\\n#Get the bounding Box from the input of the node:\\n\\[value error]\\n\\n\\n#Here some expression for the Format\\nformat.x\\nformat.y\\nwidth\\nheight\\nbbox.x\\nbbox.y\\nbbox.w\\nbbox.h\\n\\n#Get the format from the input of the node:\\n\\[value input.bbox.x]#left boundary\\n\\[value input.bbox.r]#right boundary\\n\\nGet the format from the input of the node:\\n\\[value input.format.r]#width\\n\\[value input.format.t]#height\\n\\n#Get the x position of the point #3 of the Bezier1 of the Roto1 node:\\n\\[value Roto1.curves.Bezier1.curve_points.3.main.x]\\n\\n#Return sample pixel value of the node Add1 reading in the red at position of knob Center:\\n\\[sample Add1 Red Center.x Center.y]\\n\\n#Get the value of the channel of a node, at a specific pixelcoordinates (e.g.: 10,10):\\n\\[sample \\[node input] red 10 10]\\n\\n#---------------------------------------------------------------------\\n#SET VALUES\\n\\n#Setting a knob’s value of a specific node:\\n\\[knob Read1.first 10]\\n\\n#Setting a variable, without returning that (useful in a textnode):\\n\\[set seq \\[value Read1.file]; return]\\n\\n#---------------------------------------------------------------------\\n#STRING\\n\\n#Replace string in current node file knob with regex (string “proj” to “projects” in all occurences):\\n\\[regsub -all \\\"proj\\\" \\[value \\[node this].file] \\\"projects\\\"] \\n\\n#String map (replace multiple stringpairs) (this returns: xxffffxxyy):\\n\\[string map \\{\\\"aa\\\" \\\"xx\\\" \\\"bb\\\" \\\"yy\\\"\\} \\\"aaffffaabb\\\" ]\\n\\n#Compare strings:\\n\\[string equal \\[value Text1.message] \\\"bla\\\"]\\n\\n#Regexp matching:\\n\\[regexp -inline \\\"_v\\\\\\[0-9]\\{3\\}\\\" \\[value Read2.file]] \\n\\n#Evaluating string\\n\\[python os.getenv('rotate') == 'xavierb']\\n\\n#---------------------------------------------------------------------\\n#IF CONDITION\\n\\n\\[if \\{condition\\} \\{expr1\\} else \\{expr2\\}]\\n\\n#Example:\\n\\[if \\{\\[value blackpoint]==1\\} \\{return 2\\} \\{return 3\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return True\\} \\{return False\\}]\\n\\[if \\{\\[value blackpoint]==1\\} \\{return blackpoint\\} \\{return whitepoint\\}]\\n\\[if \\{\\[value filter]==\\\"gaussian\\\"\\} \\{return filter\\} \\{return False\\}]\\n\\n#OTHER METHOD\\ncondition ? then : else\\n\\n#Example:\\n#if (r==1)? return 0: else (return r*2)\\nr ==1 ? 0 : r*2\\n\\n#---------------------------------------------------------------------\\n#PATH MANIPULATIONS:\\n\\n#Filepath without extension:\\n\\[file rootname \\[value \\[topnode].file]]\\n\\n#Filename only:\\n\\[basename \\[value \\[topnode].file ]]\\n\\n#Filename only without extension:\\n\\[basename\\[file rootname \\[value \\[topnode].file]]]\"\n  old_message {{69 88 80 82 69 83 83 73 79 78 32 84 67 76 10 10 71 101 116 116 105 110 103 32 97 32 107 110 111 98 8217 115 32 118 97 108 117 101 32 111 102 32 97 32 115 112 101 99 105 102 105 99 32 110 111 100 101 58 10 10 35 70 105 114 115 116 32 102 114 97 109 101 32 111 102 32 99 117 114 114 101 110 116 32 114 101 97 100 47 119 114 105 116 101 58 10 91 118 97 108 117 101 32 82 101 97 100 49 46 102 105 114 115 116 93 10 10 35 71 101 116 116 105 110 103 32 97 32 107 110 111 98 8217 115 32 118 97 108 117 101 32 111 102 32 99 117 114 114 101 110 116 32 110 111 100 101 58 10 49 10 10 35 82 101 116 117 114 110 32 108 97 98 101 108 32 118 97 108 117 101 32 111 102 32 116 104 101 32 105 110 112 117 116 32 110 111 100 101 58 10 91 118 97 108 117 101 32 116 104 105 115 46 115 105 122 101 93 10 10 35 78 97 109 101 32 111 102 32 116 104 101 32 105 110 112 117 116 32 110 111 100 101 58 10 91 118 97 108 117 101 32 116 104 105 115 46 105 110 112 117 116 48 46 108 97 98 101 108 93 10 10 35 78 97 109 101 32 111 102 32 116 104 101 32 110 111 100 101 32 98 101 102 111 114 101 32 116 104 101 32 103 114 111 117 112 32 40 79 117 116 115 105 100 101 41 58 10 91 118 97 108 117 101 32 116 104 105 115 46 105 110 112 117 116 46 110 97 109 101 93 10 10 35 82 101 116 117 114 110 32 49 32 105 102 32 116 104 101 32 110 111 100 101 32 105 115 32 111 110 32 101 114 114 111 114 32 111 116 104 101 114 119 105 115 101 32 48 58 10 91 118 97 108 117 101 32 116 104 105 115 46 112 97 114 101 110 116 46 105 110 112 117 116 46 110 97 109 101 93 10 10 35 71 101 116 32 116 104 101 32 98 111 117 110 100 105 110 103 32 66 111 120 32 102 114 111 109 32 116 104 101 32 105 110 112 117 116 32 111 102 32 116 104 101 32 110 111 100 101 58 10 48 10 10 10 35 72 101 114 101 32 115 111 109 101 32 101 120 112 114 101 115 115 105 111 110 32 102 111 114 32 116 104 101 32 70 111 114 109 97 116 10 102 111 114 109 97 116 46 120 10 102 111 114 109 97 116 46 121 10 119 105 100 116 104 10 104 101 105 103 104 116 10 98 98 111 120 46 120 10 98 98 111 120 46 121 10 98 98 111 120 46 119 10 98 98 111 120 46 104 10 10 35 71 101 116 32 116 104 101 32 102 111 114 109 97 116 32 102 114 111 109 32 116 104 101 32 105 110 112 117 116 32 111 102 32 116 104 101 32 110 111 100 101 58 10 91 118 97 108 117 101 32 105 110 112 117 116 46 98 98 111 120 46 120 93 35 108 101 102 116 32 98 111 117 110 100 97 114 121 10 91 118 97 108 117 101 32 105 110 112 117 116 46 98 98 111 120 46 114 93 35 114 105 103 104 116 32 98 111 117 110 100 97 114 121 10 10 71 101 116 32 116 104 101 32 102 111 114 109 97 116 32 102 114 111 109 32 116 104 101 32 105 110 112 117 116 32 111 102 32 116 104 101 32 110 111 100 101 58 10 91 118 97 108 117 101 32 105 110 112 117 116 46 102 111 114 109 97 116 46 114 93 35 119 105 100 116 104 10 91 118 97 108 117 101 32 105 110 112 117 116 46 102 111 114 109 97 116 46 116 93 35 104 101 105 103 104 116 10 10 35 71 101 116 32 116 104 101 32 120 32 112 111 115 105 116 105 111 110 32 111 102 32 116 104 101 32 112 111 105 110 116 32 35 51 32 111 102 32 116 104 101 32 66 101 122 105 101 114 49 32 111 102 32 116 104 101 32 82 111 116 111 49 32 110 111 100 101 58 10 91 118 97 108 117 101 32 82 111 116 111 49 46 99 117 114 118 101 115 46 66 101 122 105 101 114 49 46 99 117 114 118 101 95 112 111 105 110 116 115 46 51 46 109 97 105 110 46 120 93 10 10 35 82 101 116 117 114 110 32 115 97 109 112 108 101 32 112 105 120 101 108 32 118 97 108 117 101 32 111 102 32 116 104 101 32 110 111 100 101 32 65 100 100 49 32 114 101 97 100 105 110 103 32 105 110 32 116 104 101 32 114 101 100 32 97 116 32 112 111 115 105 116 105 111 110 32 111 102 32 107 110 111 98 32 67 101 110 116 101 114 58 10 91 115 97 109 112 108 101 32 65 100 100 49 32 82 101 100 32 67 101 110 116 101 114 46 120 32 67 101 110 116 101 114 46 121 93 10 10 35 71 101 116 32 116 104 101 32 118 97 108 117 101 32 111 102 32 116 104 101 32 99 104 97 110 110 101 108 32 111 102 32 97 32 110 111 100 101 44 32 97 116 32 97 32 115 112 101 99 105 102 105 99 32 112 105 120 101 108 99 111 111 114 100 105 110 97 116 101 115 32 40 101 46 103 46 58 32 49 48 44 49 48 41 58 10 91 115 97 109 112 108 101 32 91 110 111 100 101 32 105 110 112 117 116 93 32 114 101 100 32 49 48 32 49 48 93 10 10 35 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 10 35 83 69 84 32 86 65 76 85 69 83 10 10 35 83 101 116 116 105 110 103 32 97 32 107 110 111 98 8217 115 32 118 97 108 117 101 32 111 102 32 97 32 115 112 101 99 105 102 105 99 32 110 111 100 101 58 10 91 107 110 111 98 32 82 101 97 100 49 46 102 105 114 115 116 32 49 48 93 10 10 35 83 101 116 116 105 110 103 32 97 32 118 97 114 105 97 98 108 101 44 32 119 105 116 104 111 117 116 32 114 101 116 117 114 110 105 110 103 32 116 104 97 116 32 40 117 115 101 102 117 108 32 105 110 32 97 32 116 101 120 116 110 111 100 101 41 58 10 91 115 101 116 32 115 101 113 32 91 118 97 108 117 101 32 82 101 97 100 49 46 102 105 108 101 93 59 32 114 101 116 117 114 110 93 10 10 35 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 10 35 83 84 82 73 78 71 10 10 35 82 101 112 108 97 99 101 32 115 116 114 105 110 103 32 105 110 32 99 117 114 114 101 110 116 32 110 111 100 101 32 102 105 108 101 32 107 110 111 98 32 119 105 116 104 32 114 101 103 101 120 32 40 115 116 114 105 110 103 32 8220 112 114 111 106 8221 32 116 111 32 8220 112 114 111 106 101 99 116 115 8221 32 105 110 32 97 108 108 32 111 99 99 117 114 101 110 99 101 115 41 58 10 91 114 101 103 115 117 98 32 45 97 108 108 32 34 112 114 111 106 34 32 91 118 97 108 117 101 32 110 111 100 101 49 52 48 97 56 49 51 50 48 46 102 105 108 101 93 32 34 112 114 111 106 101 99 116 115 34 93 32 10 10 35 83 116 114 105 110 103 32 109 97 112 32 40 114 101 112 108 97 99 101 32 109 117 108 116 105 112 108 101 32 115 116 114 105 110 103 112 97 105 114 115 41 32 40 116 104 105 115 32 114 101 116 117 114 110 115 58 32 120 120 102 102 102 102 120 120 121 121 41 58 10 120 120 102 102 102 102 120 120 121 121 10 10 35 67 111 109 112 97 114 101 32 115 116 114 105 110 103 115 58 10 91 115 116 114 105 110 103 32 101 113 117 97 108 32 91 118 97 108 117 101 32 84 101 120 116 49 46 109 101 115 115 97 103 101 93 32 34 98 108 97 34 93 10 10 35 82 101 103 101 120 112 32 109 97 116 99 104 105 110 103 58 10 91 114 101 103 101 120 112 32 45 105 110 108 105 110 101 32 34 95 118 92 91 48 45 57 93 123 51 125 34 32 91 118 97 108 117 101 32 82 101 97 100 50 46 102 105 108 101 93 93 32 10 10 35 69 118 97 108 117 97 116 105 110 103 32 115 116 114 105 110 103 10 70 97 108 115 101 10 10 35 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 10 35 73 70 32 67 79 78 68 73 84 73 79 78 10 10 91 105 102 32 123 99 111 110 100 105 116 105 111 110 125 32 123 101 120 112 114 49 125 32 101 108 115 101 32 123 101 120 112 114 50 125 93 10 10 35 69 120 97 109 112 108 101 58 10 91 105 102 32 123 91 118 97 108 117 101 32 98 108 97 99 107 112 111 105 110 116 93 61 61 49 125 32 123 114 101 116 117 114 110 32 50 125 32 123 114 101 116 117 114 110 32 51 125 93 10 91 105 102 32 123 91 118 97 108 117 101 32 98 108 97 99 107 112 111 105 110 116 93 61 61 49 125 32 123 114 101 116 117 114 110 32 84 114 117 101 125 32 123 114 101 116 117 114 110 32 70 97 108 115 101 125 93 10 91 105 102 32 123 91 118 97 108 117 101 32 98 108 97 99 107 112 111 105 110 116 93 61 61 49 125 32 123 114 101 116 117 114 110 32 98 108 97 99 107 112 111 105 110 116 125 32 123 114 101 116 117 114 110 32 119 104 105 116 101 112 111 105 110 116 125 93 10 91 105 102 32 123 91 118 97 108 117 101 32 102 105 108 116 101 114 93 61 61 34 103 97 117 115 115 105 97 110 34 125 32 123 114 101 116 117 114 110 32 102 105 108 116 101 114 125 32 123 114 101 116 117 114 110 32 70 97 108 115 101 125 93 10 10 35 79 84 72 69 82 32 77 69 84 72 79 68 10 99 111 110 100 105 116 105 111 110 32 63 32 116 104 101 110 32 58 32 101 108 115 101 10 10 35 69 120 97 109 112 108 101 58 10 35 105 102 32 40 114 61 61 49 41 63 32 114 101 116 117 114 110 32 48 58 32 101 108 115 101 32 40 114 101 116 117 114 110 32 114 42 50 41 10 114 32 61 61 49 32 63 32 48 32 58 32 114 42 50 10 10 35 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 10 35 80 65 84 72 32 77 65 78 73 80 85 76 65 84 73 79 78 83 58 10 10 35 70 105 108 101 112 97 116 104 32 119 105 116 104 111 117 116 32 101 120 116 101 110 115 105 111 110 58 10 91 102 105 108 101 32 114 111 111 116 110 97 109 101 32 91 118 97 108 117 101 32 110 111 100 101 49 52 48 97 56 49 51 50 48 46 102 105 108 101 93 93 10 10 35 70 105 108 101 110 97 109 101 32 111 110 108 121 58 10 91 98 97 115 101 110 97 109 101 32 91 118 97 108 117 101 32 110 111 100 101 49 52 48 97 56 49 51 50 48 46 102 105 108 101 32 93 93 10 10 35 70 105 108 101 110 97 109 101 32 111 110 108 121 32 119 105 116 104 111 117 116 32 101 120 116 101 110 115 105 111 110 58 10 91 98 97 115 101 110 97 109 101 91 102 105 108 101 32 114 111 111 116 110 97 109 101 32 91 118 97 108 117 101 32 110 111 100 101 49 52 48 97 56 49 51 50 48 46 102 105 108 101 93 93 93}\n    }\n  old_expression_markers {{158 158 471 471 1627 1639 1732 1741 1895 1899 2531 2543 2586 2598 2674 2686}\n    }\n  transforms {{0 2}\n    }\n  cursor_position 954\n  scale {1 1}\n  center {1536 790}\n  group_animations {{0} imported: 0 selected: 0 items: \"root transform/\"}\n  animation_layers {{1 11 1536 790 0 0 1 1 0 0 0 0}\n    }\n  name Text_TCL\n  xpos -2\n  ypos 35\n }\n Text2 {\n  inputs 0\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  message \"https://www.tutorialspoint.com/python/index.htm\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/basics.html\\n\\nhttps://learn.foundry.com/nuke/developers/63/pythondevguide/index.html\\n\\n#----------------------------------------------------------------------------------------------\\n\\nhttp://www.nukepedia.com/tcl/tcl-reference\\n\\nhttp://www.nukepedia.com/reference/Tcl/group__tcl__builtin.html\\\\\\n\\nhttp://www.lookinvfx.com/nuke-tcl-snippets/\\n\\nhttp://thoughtvfx.blogspot.de/2012/12/nuke-tcl-tips.html\\n\"\n  old_message {{101 119 113 101 113 119 101 113}\n    }\n  transforms {{0 2}\n    }\n  cursor_position 52\n  scale {1 1}\n  center {1536 790}\n  cursor_initialised true\n  initial_cursor_position {{0 1580}\n    }\n  group_animations {{0} imported: 0 selected: 0 items: \"root transform/\"}\n  animation_layers {{1 11 1536 790 0 0 1 1 0 0 0 0}\n    }\n  name Text_websites\n  xpos -3\n  ypos 115\n }\n StickyNote {\n  inputs 0\n  name StickyNote_PythonMath\n  label \"#MATH FUNCTIONS AND WAVE GENERATOR\\n#PYTHON\\n#--------------------------------------------------------\\n\\n#IMPORT THE MATH LIBRARY\\nimport math\\n\\n#--------------------------------------------------------\\n#WAVE GENERATOR\\n\\n#RANDOM WAVE\\nrandom((frame+offset)/waveLength) * (maxVal-minVal) + minVal\\n\\n#NOISE WAVE\\n(noise((frame+offset)/waveLength)+1)/2 * (maxVal-minVal) + minVal\\n\\n#SINE WAVE\\n(sin(2*pi*(frame+offset)/waveLength)+1)/2 * (maxVal-minVal) + minVal\\n\\n#TRIANGLE WAVE\\n(asin(sin(2*pi*(frame+offset)/waveLength))/pi+0.5) * (maxVal-minVal) + minVal\\n\\n#SQUARE WAVE\\nint(sin(2*pi*(frame+offset)/waveLength)+1) * (maxVal-minVal) + minVal\\n\\n#SAWTOOTH WAVE\\n((frame+offset) % waveLength)/waveLength * (maxVal-minVal) + minVal\\n\\n#SAWTOOTH (PARABOLIC) WAVE\\nsin((pi*(frame+offset)/(2*waveLength)) % (pi/2)) * (maxVal-minVal) + minVal\\n\\n#SAWTOOTH (PARABOLIC REVERSED) WAVE\\ncos((pi*(frame+offset)/(2*waveLength)) % (pi/2)) * (maxVal-minVal) + minVal\\n\\n#SAWTOOTH (EXPONENTIAL) WAVE\\n(exp(2*pi*((frame+offset) % waveLength)/waveLength)-1)/exp(2*pi) * (maxVal-minVal) + minVal\\n\\n#BOUNCE WAVE\\nabs(sin(pi*(frame + offset)/waveLength))* (maxVal-minVal) + minVal\\n\\n#BLIP\\n((frame+(offset+waveLength)) % (waveLength+blipLength)/(waveLength)) *(waveLength/blipLength) - (waveLength/blipLength) >= 0 ? maxVal : minVa\\n\\n#SINEBLIP\\n((int((frame+offset) % waveLength)) >= 0 ? ((int((frame+offset) % waveLength)) <= (0+(blipLength-1)) ? ((sin(pi*((frame+offset) % waveLength)/blipLength)/2+1/2) * (2*maxVal-2*minVal) + (2*minVal-maxVal)) : minVal)  : minVal)\\n\"\n  xpos -1473\n  ypos 5091\n }\n StickyNote {\n  inputs 0\n  name StickyNote_websiteMath\n  label \"www.cameroncarson.com/nuke-wave-expressions/\\n\\nhttps://docs.python.org/2/library/math.html\\n\\nhttps://en.wikibooks.org/wiki/Python_Programming/Basic_Math\\n\\n#--------------------------------------------------------------------------\\n\\nhttps://help.thefoundry.co.uk/nuke/8.0/content/user_guide/expressions/adding_math_functions.html\\n\"\n  xpos -415\n  ypos 5085\n }\n StickyNote {\n  inputs 0\n  name StickyNote_Tricks\n  label \"TRICKS\\n\\n#-----------------------------------------------------------------------------\\n#In case you would like to switch the antialiasing inside a Scanline Renderer to “high” when rendering on the farm, but keep working in the GUI with “none”, you could use a line like this:\\nnuke.selectedNode()\\['antialiasing'].setExpression('\\$gui? 0:3')\\n\\n#-----------------------------------------------------------------------------\\ntcl:\\nin Transform1.filter \\{set_expression \\{Transform2.filter\\}\\}\\npython\\nk=nuke.toNode('Transform1')\\['filter']\\nk.setExpression('Transform2.filter',0)\\n\\n#-----------------------------------------------------------------------------\\n#Switch Node change only in the frames in the list\\n# If you use this inside a Switch Node, it can change value only in those frames\\nnuke.frame() in \\[1025,1072,1074]\\n\\n#current frame\\nprint nuke.frame()\\n\\n#go to frame x\\nnuke.frame(x)\\n\\n#------------------------------------------------------------------------------------------\\n#AUTOLABEL\\n\\nn = nuke.selectedNodes()\\nfor p in n:\\n    p\\['autolabel'].setValue(\\\"nuke.thisNode().name()\\\")\\n\\n#Example01\\n#Try this with a Grade Node\\nn = nuke.selectedNodes()\\nfor p in n:\\n    p\\['autolabel'].setValue(\\\"nuke.thisNode().name() + \\\\\\\"\\\\\\\\n\\\\\\\" + '(' + str(nuke.thisNode()\\['white'].value()) + ')' \\\")\\n\\n#Example02\\n#Try this with a Blur Node\\nn = nuke.selectedNodes()\\nfor p in n:\\n    p\\['autolabel'].setValue(\\\"nuke.thisNode().name() + \\\\\\\"\\\\\\\\n\\\\\\\" + '(' + nuke.thisNode()\\['filter'].value() + ')' \\\")\\n\\n#Example03\\n#When you create a Blur node, every time you will see this autolabel\\ndef BlurLabel():\\n    n = nuke.thisNode()\\n    if n.Class() == \\\"Blur\\\":\\n        autoLabel = n.name() + (' big!' if n\\['size'].value()>100 else ' small')\\n        if n\\['label'].value():\\n            autoLabel = autoLabel + '\\\\n' + str(n\\['size'].value())\\n        return autoLabel\\n \\nnuke.addAutolabel(BlurLabel)\"\n  selected true\n  xpos -1890\n  ypos 6835\n }\nend_group"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RP_Reformat.gizmo",
    "content": "Group {\n name RP_Reformat\n onCreate \"\\nnuke.thisGroup()\\['old_pixel_aspect'].setFlag(0x00000100)\\nnuke.thisGroup()\\['new_pixel_aspect'].setFlag(0x00000100)\\n\"\n tile_color 0x115918ff\n note_font \"DejaVu LGC Sans\"\n addUserKnob {20 tab_general l General}\n addUserKnob {26 title_oldres l \"<b>OLD RESOLUTION</b>\"}\n addUserKnob {41 use_from l \"use 'from' input to define\" T menu01.use_from}\n addUserKnob {3 old_width l width/height +DISABLED}\n old_width 1280\n addUserKnob {3 old_height l \"\" -STARTLINE +DISABLED}\n old_height 720\n addUserKnob {78 old_pixel_aspect l \"pixel aspect\" +DISABLED n 1}\n old_pixel_aspect 1\n addUserKnob {26 title_newres l \"<b>NEW RESOLUTION<b>\"}\n addUserKnob {41 use_to l \"use 'to' input to define\" T menu02.use_to}\n addUserKnob {3 new_width l width/height +DISABLED}\n new_width 1920\n addUserKnob {3 new_height l \"\" -STARTLINE +DISABLED}\n new_height 1080\n addUserKnob {78 new_pixel_aspect l \"pixel aspect\" +DISABLED n 1}\n new_pixel_aspect 1\n addUserKnob {26 \"\"}\n addUserKnob {4 resize l \"resize type\" t \"Choose which direction controls the scaling factor:\\n\\nwidth : scale so it fills the output width\\nheight : scale so it fills the output height\\ndistort : non-uniform scale to match both width & height\" M {width height \"distort  \" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {6 new_connection l \"connect to the new roto/rotopaint node(s)\" t \"Replace the new reformated Roto/Rotopaint into the tree.\" +STARTLINE}\n addUserKnob {22 convert_rp l \"convert roto/rotopaint node(s)\" t \"Convertion will generate a new roto/rotopaint node instead of override the existing one. Support multiple roto/rotopaint selected at the same time.\\n\\nGenerated roto/rotopaint node :\\n\\nclip to : will force to 'no clip'\\n\\nfeather : will multiply the value change\\n\\ntranslate : only override the new value when resize type is width/height\\nscale : will override the new value\\ncenter : will override the new value\\n\\nbrush size : will multiply the value change\\neffect : will multiply the value change\\n\\nclone\\nsource translate : will multiply the value change\" T \"import nuke.rotopaint as rp\\nimport _curvelib as cl\\nimport random\\n\\n##### function #####\\n\\ndef getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\ndef getItems( rpn , eleD , mode ) :\\n\\tif mode == 'root' :\\n\\t\\tfor element in rpn\\['curves'].rootLayer :\\n\\t\\t\\tif isinstance( element , rp.Shape ) :\\n\\t\\t\\t\\teleD\\['Shape'].append( element.name )\\n\\t\\t\\tif isinstance( element , rp.Stroke ) :\\n\\t\\t\\t\\teleD\\['Stroke'].append( element.name )\\n\\t\\t\\tif isinstance( element , rp.Layer ) :\\n\\t\\t\\t\\teleD\\['Layer'].append( element.name )\\n\\tif mode == 'sub' :\\n\\t\\ttempLay = \\[]\\n\\t\\tfor i in eleD\\['Layer'] :\\n\\t\\t\\tfor j in rpn\\['curves'].toElement( i ) :\\n\\t\\t\\t\\tif isinstance( j , rp.Shape ) :\\n\\t\\t\\t\\t\\teleD\\['Shape'].append( i + '/' + j.name )\\n\\t\\t\\t\\tif isinstance( j , rp.Stroke ) :\\n\\t\\t\\t\\t\\teleD\\['Stroke'].append( i + '/' + j.name )\\n\\t\\t\\t\\tif isinstance( j , rp.Layer ) :\\n\\t\\t\\t\\t\\ttempLay.append( i + '/' + j.name )\\n\\t\\teleD\\['Layer'] = tempLay\\n\\treturn eleD\\n\\ndef checkLay( layList ) :\\n\\tif len( layList ) > 0 :\\n\\t\\tstatus = 0\\n\\telse :\\n\\t\\tstatus = 1\\n\\treturn status\\n\\ndef duplicateNode( srcNode ) :\\n\\tdNode = nuke.createNode( srcNode.Class(), srcNode.writeKnobs( nuke.TO_SCRIPT | nuke.WRITE_NON_DEFAULT_ONLY ) )\\n\\tdNode\\['cliptype'].setValue(0)\\n\\tfor i in range( dNode.inputs() ) :\\n\\t\\tdNode.setInput( i, None )\\n\\tdNode.hideControlPanel()\\n\\treturn dNode\\n\\ndef gatherDown( srcNode ) :\\n\\tds = srcNode.dependent()\\n\\tdsCon = \\[]\\n\\tfor dnode in ds :\\n\\t\\ttemp = \\[ dnode ]\\n\\t\\tfor i in range( dnode.inputs() ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tif dnode.input(i).name() == srcNode.name() :\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\ttemp.append( i )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\t\\tdsCon.append( temp )\\n\\treturn dsCon\\n\\n###############\\n\\n##### base #####\\nrpNodes = \\[]\\nrpCon = \\{\\}\\n\\nthisGRP = nuke.thisGroup()\\n\\nif thisGRP\\['use_from'].value() :\\n\\tifrom = nuke.toNode('from')\\n\\toldres = \\[ int( ifrom.width() ) , int( ifrom.height() ) , float( ifrom.pixelAspect() ) ]\\nelse :\\n\\toldres = \\[ int( thisGRP\\['old_width'].getValue() ) , int( thisGRP\\['old_height'].getValue() ) , float( thisGRP\\['old_pixel_aspect'].getValue() ) ]\\n\\nif thisGRP\\['use_to'].value() :\\n\\tito = nuke.toNode('to')\\n\\tnewres = \\[ int( ito.width() ) , int( ito.height() ) , float( ito.pixelAspect() ) ]\\nelse :\\n\\tnewres = \\[ int( thisGRP\\['new_width'].getValue() ) , int( thisGRP\\['new_height'].getValue() ) , float( thisGRP\\['new_pixel_aspect'].getValue() ) ]\\n\\nxGrid = int( nuke.toNode('preferences')\\['GridWidth'].getValue() )\\n\\nwith getLevel() :\\n\\tnodeCheck = 0\\n\\n\\tfor node in nuke.selectedNodes() :\\n\\t\\tif node.Class() == 'Roto' or node.Class() == 'RotoPaint' :\\n\\t\\t\\trpNodes.append( node )\\n\\t\\t\\tnodeCheck = 1\\n\\n\\tif nodeCheck :\\n\\n\\t\\t##### transformation curve #####\\n\\n\\t\\tif thisGRP\\['resize'].getValue() == 0 :\\n\\t\\t\\twidthRatio = newres\\[0] / oldres\\[0]\\n\\t\\t\\theightRatio = ( newres\\[0] / oldres\\[0] ) * ( newres\\[2] / oldres\\[2] )\\n\\t\\telif thisGRP\\['resize'].getValue() == 1 :\\n\\t\\t\\twidthRatio = ( newres\\[1] / oldres\\[1] ) * ( oldres\\[2] / newres\\[2] )\\n\\t\\t\\theightRatio = newres\\[1] / oldres\\[1]\\n\\t\\telse :\\n\\t\\t\\twidthRatio = newres\\[0] / oldres\\[0]\\n\\t\\t\\theightRatio = newres\\[1] / oldres\\[1]\\n\\n\\t\\tTranslateNC_x = cl.AnimCurve()\\n\\t\\tTranslateNC_y = cl.AnimCurve()\\n\\t\\tScaleNC_x = cl.AnimCurve()\\n\\t\\tScaleNC_y = cl.AnimCurve()\\n\\t\\tPivotNC = cl.AnimCurve()\\n\\n\\t\\tif thisGRP\\['resize'].getValue() == 0 :\\n\\t\\t\\tTranslateNC_y.expressionString = str( (newres\\[1]-(oldres\\[1]*heightRatio))/2 )\\n\\t\\tif thisGRP\\['resize'].getValue() == 1 :\\n\\t\\t\\tTranslateNC_x.expressionString = str( (newres\\[0]-(oldres\\[0]*widthRatio))/2 )\\n\\t\\tScaleNC_x.expressionString = str( widthRatio )\\n\\t\\tScaleNC_y.expressionString = str( heightRatio )\\n\\t\\tPivotNC.expressionString = '0'\\n\\t\\tfor curve in \\[ TranslateNC_x , TranslateNC_y , ScaleNC_x , ScaleNC_y , PivotNC ]:\\n\\t\\t\\tcurve.useExpression = True\\n\\n\\t\\t###############\\n\\n\\t\\tfor o_rpNode in rpNodes :\\n\\t\\t\\teleD = \\{\\n\\t\\t\\t\\t'Shape' : \\[] ,\\n\\t\\t\\t\\t'Stroke' : \\[] ,\\n\\t\\t\\t\\t'Layer' : \\[]\\n\\t\\t\\t\\t\\}\\n\\n\\t\\t\\tdownNodes = gatherDown( o_rpNode )\\n\\n\\t\\t\\trpNode = duplicateNode( o_rpNode )\\n\\t\\t\\trpNode.setXYpos( int( o_rpNode.xpos() + xGrid + random.randint( 0 , xGrid ) ) , int( o_rpNode.ypos() ) )\\n\\t\\t\\trpNode\\['output'].setValue( o_rpNode\\['output'].value() )\\n\\t\\t\\trpNode\\['label'].setValue( 'old : \\{0\\}x\\{1\\}   \\{2\\}<br>new : \\{3\\}x\\{4\\}   \\{5\\}<br>reize type : \\{6\\}'.format( str(oldres\\[0]) , str(oldres\\[1]) , str(int(oldres\\[2])) , str(newres\\[0]) , str(newres\\[1]) , str(int(newres\\[2])) , thisGRP\\['resize'].value() ) )\\n\\n\\t\\t\\tif thisGRP\\['new_connection'].value() :\\n\\t\\t\\t\\tif len(o_rpNode.dependencies()) :\\n\\t\\t\\t\\t\\trpCon\\[rpNode.name()] = \\[ o_rpNode.dependencies()\\[0] , downNodes ]\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\trpCon\\[rpNode.name()] = \\[ None , downNodes ]\\n\\t\\t\\telse :\\n\\t\\t\\t\\tif len(o_rpNode.dependencies()) :\\n\\t\\t\\t\\t\\trpCon\\[o_rpNode.name()] = \\[ o_rpNode.dependencies()\\[0] , downNodes ]\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\trpCon\\[o_rpNode.name()] = \\[ None , downNodes ]\\n\\n\\t\\t\\t##### get all items #####\\n\\t\\t\\teleD = getItems( rpNode , eleD , 'root' )\\n\\t\\t\\tchkstatus = checkLay( eleD\\['Layer'] )\\n\\t\\t\\twhile chkstatus < 1 :\\n\\t\\t\\t\\teleD = getItems( rpNode , eleD , 'sub' )\\n\\t\\t\\t\\tchkstatus = checkLay( eleD\\['Layer'] )\\n\\t\\t\\tdel eleD\\['Layer']\\n\\n\\t\\t\\t##### process #####\\n\\t\\t\\tfor key in eleD.keys() :\\n\\t\\t\\t\\tfor i in eleD\\[key] :\\n\\t\\t\\t\\t\\tshape = rpNode\\['curves'].toElement( i )\\n\\t\\t\\t\\t\\tst = shape.getTransform()\\n\\t\\t\\t\\t\\tsa = shape.getAttributes()\\n\\n\\t\\t\\t\\t\\tst.setTranslationAnimCurve( 0 , TranslateNC_x )\\n\\t\\t\\t\\t\\tst.setTranslationAnimCurve( 1 , TranslateNC_y )\\n\\t\\t\\t\\t\\tst.setScaleAnimCurve( 0 , ScaleNC_x )\\n\\t\\t\\t\\t\\tst.setScaleAnimCurve( 1 , ScaleNC_y )\\n\\t\\t\\t\\t\\tst.setPivotPointAnimCurve( 0 , PivotNC )\\n\\t\\t\\t\\t\\tst.setPivotPointAnimCurve( 1 , PivotNC )\\n\\n\\t\\t\\t\\t\\ttry :\\n\\t\\t\\t\\t\\t\\tsa.set( 'fx' , sa.getCurve('fx').constantValue * widthRatio )\\n\\t\\t\\t\\t\\t\\tsa.set( 'fy' , sa.getCurve('fy').constantValue * heightRatio )\\n\\t\\t\\t\\t\\texcept :\\n\\t\\t\\t\\t\\t\\tpass\\n\\n\\t\\t\\t\\t\\tif key == 'Stroke' :\\n\\t\\t\\t\\t\\t\\tsa.set( 'bs' , sa.getCurve('bs').constantValue * widthRatio )\\n\\t\\t\\t\\t\\t\\tsa.set( 'ep1' , sa.getCurve('ep1').constantValue * widthRatio )\\n\\t\\t\\t\\t\\t\\tsa.set( 'stx' , sa.getCurve('stx').constantValue * widthRatio )\\n\\t\\t\\t\\t\\t\\tsa.set( 'sty' , sa.getCurve('sty').constantValue * heightRatio )\\n\\n\\t\\t\\trpNode\\['curves'].changed()\\n\\n\\t\\tfor key, value in rpCon.items() :\\n\\t\\t\\tnuke.toNode(key).setInput( 0, value\\[0] )\\n\\t\\t\\tfor dNode in value\\[1] :\\n\\t\\t\\t\\tfor i in range( 1 , len(dNode) , 1 ) :\\n\\t\\t\\t\\t\\tdNode\\[0].setInput( dNode\\[i] , nuke.toNode( key ) )\\n\\n\\telse :\\n\\t\\tnuke.message('Only work with Roto / RotoPaint node(s).<br><br>Select one or more Roto / RotoPaint node(s) and run again.')\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-05-06}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fixed&nbsp;gizmo&nbsp;is&nbsp;a&nbsp;gizmo,&nbsp;not&nbsp;group<br><br>1.2<br>-&nbsp;Tong&nbsp;Lyons's&nbsp;feedback&nbsp;:<br>&nbsp;&nbsp;added&nbsp;'from'&nbsp;&&nbsp;'to'&nbsp;input&nbsp;for&nbsp;the&nbsp;old/new&nbsp;resolution<br><br>1.1<br>-&nbsp;fixed&nbsp;the&nbsp;Rotopaint&nbsp;nodes&nbsp;connection&nbsp;issue<br>-&nbsp;fixed&nbsp;the&nbsp;new&nbsp;Rotopaint&nbsp;node's&nbsp;output&nbsp;channel,<br>&nbsp;&nbsp;will&nbsp;keep&nbsp;that&nbsp;same&nbsp;as&nbsp;the&nbsp;source&nbsp;node.<br>-&nbsp;added&nbsp;'resize&nbsp;type'&nbsp;info&nbsp;in&nbsp;new&nbsp;RP&nbsp;node's&nbsp;label<br>-&nbsp;removed&nbsp;the&nbsp;animation&nbsp;menu&nbsp;on&nbsp;pixel_aspect&nbsp;knob.<br><br>1.0<br>-&nbsp;batch&nbsp;resize&nbsp;Roto&nbsp;/&nbsp;RotoPaint's&nbsp;vector&nbsp;data&nbsp;\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -412\n  ypos -182\n  bdwidth 226\n  bdheight 208\n }\n Input {\n  inputs 0\n  name to\n  xpos 62\n  ypos -125\n  number 1\n }\n Input {\n  inputs 0\n  name from\n  xpos -99\n  ypos -124\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nknobs = \\['old_width','old_height','old_pixel_aspect']\\nfor knob in knobs :\\n    nuke.thisGroup()\\[knob].setEnabled( not nuke.thisGroup()\\['use_from'].value() )\\n\"\n  xpos -343\n  ypos -95\n  addUserKnob {20 User}\n  addUserKnob {6 use_from l \"use 'from' input to define\" +STARTLINE}\n  use_from true\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nknobs = \\['new_width','new_height','new_pixel_aspect']\\nfor knob in knobs :\\n    nuke.thisGroup()\\[knob].setEnabled( not nuke.thisGroup()\\['use_to'].value() )\\n\"\n  xpos -343\n  ypos -32\n  addUserKnob {20 User}\n  addUserKnob {6 use_to l \"use 'to' input to define\" +STARTLINE}\n  use_to true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RadialAdvanced.gizmo",
    "content": "Group {\n name RadialAdvanced\n tile_color 0x5f5f5fff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 RadialAdvanced}\n addUserKnob {41 format l \"output format\" T Reformat1.format}\n addUserKnob {6 replace +STARTLINE}\n addUserKnob {6 invert -STARTLINE}\n addUserKnob {41 color T OUTER_EDGE_RADIAL.color}\n addUserKnob {26 \"\"}\n addUserKnob {41 scale l \"Master Scale\" T MasterTransform.scale}\n addUserKnob {26 \"\"}\n addUserKnob {26 innerDiv l Inner}\n addUserKnob {41 scale_1 l \"Inner Scale\" T InnerControl.scale}\n addUserKnob {7 innerFeather l \"Inner Feather\"}\n innerFeather 0.3\n addUserKnob {26 \"\"}\n addUserKnob {26 OuterDiv l Outer}\n addUserKnob {41 size l \"Blur Outer Edge\" T Outer_Edge_Blur.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge3.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge3.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge3.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge3.fringe}\n addUserKnob {41 mix T Merge3.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"sliders and controls to easier animate Radial Tool\" T RadialAdvanced}\n addUserKnob {26 ver l Version: T v03}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -230\n  ypos -583\n }\n Reformat {\n  pbb true\n  name Reformat1\n  xpos -230\n  ypos -527\n  disable {{\"\\[exists parent.input0]\"}}\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -196\n  ypos -457\n }\nset N9918c220 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -349\n  ypos -457\n }\nset N991900f0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -459\n  ypos -457\n }\nset N99193fd0 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -549\n  ypos -457\n }\n Transform {\n  center {{input.width/2} {input.height/2}}\n  name MasterTransform\n  xpos -583\n  ypos -405\n }\npush $N99193fd0\n Transform {\n  center {{input.width/2} {input.height/2}}\n  name InnerControl\n  xpos -493\n  ypos -406\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos -544\n  ypos 135\n  number 1\n }\npush $N9918c220\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -230\n  ypos -424\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos -230\n  ypos -400\n }\n Dot {\n  name Dot1\n  xpos -196\n  ypos -352\n }\nset N991beaa0 [stack 0]\n Dot {\n  name Dot3\n  xpos -72\n  ypos -352\n }\n Radial {\n  area {4 4 {input.width-4} {input.height-4}}\n  softness {{3*parent.innerFeather}}\n  name INNER_EDGE_RADIAL\n  xpos -106\n  ypos -307\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  name Crop2\n  xpos -106\n  ypos -261\n }\n Transform {\n  scale {{parent.InnerControl.scale}}\n  center {{input.width/2} {input.height/2}}\n  filter Mitchell\n  name Transform3\n  xpos -106\n  ypos -216\n }\n Blur {\n  channels rgba\n  crop false\n  name Inner_Edge_Blur\n  label \"\\[value size]\"\n  xpos -106\n  ypos -171\n }\n Dot {\n  name Dot2\n  xpos -72\n  ypos -97\n }\nset N991e6d30 [stack 0]\npush $N991beaa0\n Radial {\n  area {{parent.INNER_EDGE_RADIAL.area} {parent.INNER_EDGE_RADIAL.area} {parent.INNER_EDGE_RADIAL.area} {parent.INNER_EDGE_RADIAL.area}}\n  softness 0\n  name OUTER_EDGE_RADIAL\n  xpos -230\n  ypos -286\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  name Crop1\n  xpos -230\n  ypos -262\n }\n Blur {\n  channels rgba\n  size 2\n  crop false\n  name Outer_Edge_Blur\n  label \"\\[value size]\"\n  xpos -230\n  ypos -169\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -196\n  ypos -103\n }\nset N9930ecc0 [stack 0]\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge2\n  xpos -106\n  ypos -46\n }\npush $N991e6d30\npush $N9930ecc0\n Merge2 {\n  inputs 2\n  operation stencil\n  bbox B\n  name Merge1\n  xpos -230\n  ypos -53\n }\n Switch {\n  inputs 2\n  which {{parent.invert i}}\n  name INVERT_SWITCH\n  xpos -230\n  ypos 13\n }\n Transform {\n  scale {{parent.MasterTransform.scale}}\n  center {{parent.Transform3.center} {parent.Transform3.center}}\n  filter Mitchell\n  black_outside false\n  name transform4\n  xpos -230\n  ypos 65\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -196\n  ypos 138\n }\npush $N991beaa0\npush $N991900f0\n Switch {\n  inputs 2\n  which {{parent.replace}}\n  name Switch1\n  xpos -383\n  ypos -355\n }\n Merge2 {\n  inputs 2+1\n  Achannels {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  also_merge rgba\n  name Merge3\n  xpos -383\n  ypos 135\n }\n Output {\n  name Output1\n  xpos -383\n  ypos 221\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RadialDilate.gizmo",
    "content": "Group {\n name RadialDilate\n tile_color 0xcc804eff\n note_font_color 0xffffffff\n addUserKnob {20 RadialDilate}\n addUserKnob {41 \"Local GPU: \" T BlinkScript4.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript4.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {41 size_wh l size T BlinkScript4.size_wh}\n addUserKnob {41 blackoutside l \"black outside\" -STARTLINE T BlinkScript4.blackoutside}\n addUserKnob {26 _1 l \"\" +STARTLINE}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge1.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"Chris Fryer | 2021\\n\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -54\n  ypos 43\n  number 1\n }\n Dot {\n  name Dot1\n  xpos -20\n  ypos 106\n }\n Input {\n  inputs 0\n  name Input\n  xpos -270\n  ypos -100\n }\n AdjBBox {\n  numpixels {{ceil(abs(parent.BlinkScript4.size_wh.w))} {ceil(abs(parent.BlinkScript4.size_wh.h))}}\n  name AdjBBox1\n  xpos -270\n  ypos -45\n }\nset N6b5f9400 [stack 0]\n BlackOutside {\n  name BlackOutside1\n  xpos -195\n  ypos -5\n  disable {{1-parent.BlinkScript4.blackoutside}}\n }\n BlinkScript {\n  recompileCount 69\n  ProgramGroup 1\n  KernelDescription \"2 \\\"RadialDilate\\\" iterate pixelWise 575f702e36ae4a4540fceb6e0eb10c07d958cba14a62650f9022854aca2b2c0d 2 \\\"src\\\" Read Ranged2D \\\"dst\\\" Write Point 2 \\\"size\\\" Float 2 AAAAAAAAAAA= \\\"invert\\\" Bool 1 AA== 2 \\\"size\\\" 2 1 \\\"invert\\\" 1 1 3 \\\"srcrangeMin\\\" Int 2 1 AAAAAAAAAAA= \\\"srcrangeMax\\\" Int 2 1 AAAAAAAAAAA= \\\"output\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"\\nkernel RadialDilate : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRanged2D, eEdgeClamped> src; // the input image\\n  \\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n\\n    //user controls for size\\n    float2 size;\\n    //hidden control to decide min vs max\\n    bool invert;\\n  local:\\n    // will become our output image\\n    float4 output = 0;\\n\\n  void define() \\{\\n\\n  \\}\\n\\n  void init() \\{\\n\\n    src.setRange(-size.x, -size.y, size.x, size.y);\\n\\n  \\}\\n\\n  void process() \\{\\n\\n    //this applies a foundation for our output (stops us getting minimum values of zero unless they're in the image)\\n    output = src(0,0);\\n\\n    for(int X = -size.x; X <= size.x; X++)\\{\\n      for(int Y = -size.y; Y <= size.y; Y++)\\{        \\n\\n        //only includes values inside out virtual radial\\n        if( (size.x -   pow((pow(float(X),2)+pow(float(Y*(float(size.x)/float(size.y))),2)),0.5f)) > 0)\\{\\n\\n          //assigns min vs max output depending on whether or not the input size is negative \\n          output = invert ? min(output,src(X,Y)) : max(output,src(X,Y));\\n\\n        \\}\\n      \\}\\n\\n    \\}\\n\\n    dst() = output;\\n  \\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  RadialDilate_size {{abs(size_wh.w)+1} {abs(size_wh.h)+1}}\n  RadialDilate_invert {{\"size_wh.w < 0 || size_wh.h < 0 \"}}\n  rebuild_finalise \"\"\n  name BlinkScript4\n  selected true\n  xpos -195\n  ypos 44\n  addUserKnob {20 User}\n  addUserKnob {6 blackoutside l \"black outside\" +STARTLINE}\n  addUserKnob {14 size_wh R -100 100}\n }\npush $N6b5f9400\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  xpos -270\n  ypos 103\n }\nset N6b5f8800 [stack 0]\n Output {\n  name Output1\n  xpos -270\n  ypos 180\n }\npush $N6b5f8800\n Viewer {\n  frame_range 1-100\n  name Viewer1\n  xpos -270\n  ypos 127\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RainMaker.gizmo",
    "content": "Group {\n name RainMaker\n selected true\n addUserKnob {20 User l RainMaker}\n addUserKnob {6 rainonly l \"Rain only (No comp)\" +STARTLINE}\n addUserKnob {6 dropspass l \"Use Pre-Rendered Drops input\" t \"If you have pre-rendered the \\\"Rain only?\\\" outpout, you can use this instead of re-siming at rendertime. \" +STARTLINE}\n addUserKnob {20 globals_1 l Globals n 1}\n addUserKnob {7 emissionmulti l \"Emission Multiplier\"}\n emissionmulti 1\n addUserKnob {7 res l Resolution t \"This controls the resolution for the render of the effect. The default value (0.5) works well in most cases.\" R 0.25 1}\n res 0.5\n addUserKnob {41 start_frame l \"Big start frame\" T ParticleEmitter1.start_frame}\n addUserKnob {41 start_frame_1 l \"Med start frame\" T ParticleEmitter3.start_frame}\n addUserKnob {41 start_frame_2 l \"Small start frame\" T ParticleEmitter2.start_frame}\n addUserKnob {41 lifetime T ParticleEmitter1.lifetime}\n addUserKnob {7 ygravity l \"Y Gravity Component\" R -1 1}\n ygravity -1\n addUserKnob {7 xgravity l \"X Gravity Component\" R -1 1}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {20 particles l Particles n 1}\n particles 0\n addUserKnob {6 bigenabled l Big? +STARTLINE}\n bigenabled true\n addUserKnob {6 medenabled l Medium? -STARTLINE}\n medenabled true\n addUserKnob {6 smalenabled l Small? -STARTLINE}\n smalenabled true\n addUserKnob {6 trailkill l \"Disable trails\" t \"Turning off the trails, will speed things up considerably. Its best to disable the trails while you get the drops right, then turn them back on later (if you have moving particles)\" +STARTLINE}\n addUserKnob {20 bigparts l \"Big Ctrls\" n 1}\n addUserKnob {41 seed l \"random seed\" T ParticleEmitter1.seed}\n addUserKnob {7 bigamount l Amount}\n bigamount 0.1\n addUserKnob {41 size T ParticleEmitter1.size}\n addUserKnob {41 size_variation l \"size variation\" T ParticleEmitter1.size_variation}\n addUserKnob {6 biggravity l \"Gravity Enabled?\" +STARTLINE}\n biggravity true\n addUserKnob {7 gravity l \"Gravity Multiplier\"}\n gravity 0.1\n addUserKnob {41 probability l \"Gravity Probability\" T ParticleGravity1.probability}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 meddrop l \"Med Ctrls\" n 1}\n addUserKnob {41 seed_1 l \"random seed\" T ParticleEmitter3.seed}\n addUserKnob {7 medrate l Amount R 0 5}\n medrate 1.5\n addUserKnob {41 size_1 l size T ParticleEmitter3.size}\n addUserKnob {41 size_variation_1 l \"size variation\" T ParticleEmitter3.size_variation}\n addUserKnob {6 medgrav l \"Gravity Enabled?\" +STARTLINE}\n medgrav true\n addUserKnob {7 medgavity l \"Gravity Multiplier\"}\n medgavity 0.05\n addUserKnob {41 probability_1 l \"Gravity Probability\" T ParticleGravity2.probability}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 smldrop l \"Small Ctrls\" n 1}\n smldrop 0\n addUserKnob {7 smallrate l Amount R 0 10}\n smallrate 10\n addUserKnob {41 seed_2 l \"random seed\" T ParticleEmitter2.seed}\n addUserKnob {41 size_2 l size T ParticleEmitter2.size}\n addUserKnob {41 size_variation_2 l \"size variation\" T ParticleEmitter2.size_variation}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup_4 l endGroup n -1}\n addUserKnob {20 effects l Effects n 1}\n effects 0\n addUserKnob {7 blobify l \"blobify radius\" R 0 10}\n blobify 3.95\n addUserKnob {7 displace l \"Displace Amount\"}\n displace 0.23\n addUserKnob {41 size_3 l \"Displace Noise Size\" T Noise2.size}\n addUserKnob {3 trails l \"Trail Length\" t \"slows it down considerably\"}\n trails 20\n addUserKnob {20 endGroup_5 l endGroup n -1}\n addUserKnob {20 comp l Comp n 1}\n comp 0\n addUserKnob {6 alpha l \"Copy rain to alpha?\" +STARTLINE}\n addUserKnob {41 size_4 l \"Blur Size\" T Blur2.size}\n addUserKnob {7 ringing l \"Gamma Lift\"}\n ringing 0.19\n addUserKnob {7 ringing_1 l \"Ringing Ratio\"}\n ringing_1 0.25\n addUserKnob {41 mix l \"Emboss Amount\" T Merge2.mix}\n addUserKnob {41 displace_2 l Displace T Group3.displace}\n addUserKnob {41 size_5 l Defocus T Blur1.size}\n addUserKnob {20 endGroup_6 l endGroup n -1}\n addUserKnob {26 txt l \"\" +STARTLINE T \"\\nMade by Matt Richardson (matt_richardson_@hotmail.com)\"}\n}\n Input {\n  inputs 0\n  name Drops\n  xpos 1107\n  ypos -58\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 1107\n  ypos -20\n }\n Constant {\n  inputs 0\n  channels rgb\n  name Constant2\n  xpos 667\n  ypos -220\n }\n Reformat {\n  type scale\n  scale {{parent.res x336 1}}\n  name Reformat1\n  xpos 816\n  ypos -173\n }\n set C5fb5bc00 [stack 0]\n Noise {\n  size 120\n  zoffset 1\n  octaves 4\n  center {960 410}\n  name Noise2\n  xpos 953\n  ypos -173\n }\n Input {\n  inputs 0\n  name BG\n  xpos 1815\n  ypos -818\n }\nset N5fb5b000 [stack 0]\n Camera2 {\n  translate {0 0 42.04999924}\n  name Camera1\n  xpos 1485\n  ypos -562\n }\nset N5fb5ac00 [stack 0]\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Constant1\n  xpos 1043\n  ypos -719\n }\n Radial {\n  invert true\n  area {9.5 8.5 246.5 247.5}\n  softness 0\n  color 0\n  name Radial1\n  xpos 1043\n  ypos -597\n }\nset N5fb5a400 [stack 0]\n Constant {\n  inputs 0\n  channels rgb\n  name Constant3\n  xpos 1537\n  ypos -680\n }\nset N5fb5a000 [stack 0]\n Card2 {\n  translate {0 0 38.72000122}\n  uniform_scale 1.7\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card1\n  xpos 1327\n  ypos -656\n }\nset N5fb59c00 [stack 0]\npush $N5fb5b000\n ParticleEmitter {\n  inputs 3\n  emit_from faces\n  rate {{\"parent.emissionmulti * parent.medrate\"}}\n  rate_variation 1\n  lifetime {{parent.ParticleEmitter1.lifetime}}\n  velocity 0\n  size 0.024\n  size_variation 0.5\n  seed 2\n  name ParticleEmitter3\n  xpos 1175\n  ypos -517\n  disable {{1-parent.medenabled}}\n }\n ParticleGravity {\n  to {{\"parent.medgavity * 0.0002 * parent.xgravity\"} {\"parent.medgavity * 0.0002 * parent.ygravity\"} 0}\n  probability 0.1\n  name ParticleGravity2\n  xpos 1175\n  ypos -459\n  disable {{1-parent.medgrav}}\n }\npush $N5fb5a400\npush $N5fb59c00\npush $N5fb5b000\n ParticleEmitter {\n  inputs 3\n  emit_from faces\n  rate {{\"parent.bigamount * parent.emissionmulti\"}}\n  rate_variation 1\n  lifetime 100\n  velocity 0\n  size 0.05\n  size_variation 1\n  seed 1\n  name ParticleEmitter1\n  xpos 1327\n  ypos -597\n  disable {{1-parent.bigenabled}}\n }\n ParticleGravity {\n  to {{\"parent.gravity * 0.007 * parent.xgravity\"} {\"parent.gravity * 0.007 * parent.ygravity\"} 0}\n  probability 0.03\n  name ParticleGravity1\n  xpos 1327\n  ypos -523\n  disable {{1-parent.biggravity}}\n }\n ParticleMerge {\n  inputs 2\n  name ParticleMerge1\n  xpos 1327\n  ypos -418\n }\npush $N5fb5a000\nclone $C5fb5bc00 {\n  xpos 1537\n  ypos -404\n  selected false\n }\nset N5fb58400 [stack 0]\n ScanlineRender {\n  inputs 3\n  ztest_enabled false\n  filter impulse\n  motion_vectors_type distance\n  name ScanlineRender1\n  xpos 1327\n  ypos -361\n }\n Erode {\n  channels rgb\n  size {{0-Erode3.size}}\n  name Erode2\n  xpos 1327\n  ypos -308\n }\nset N435ab400 [stack 0]\n Erode {\n  channels rgb\n  size -5\n  name Erode4\n  xpos 1217\n  ypos -309\n }\npush $N5fb5ac00\npush $N5fb5a400\npush $N5fb59c00\npush $N5fb5b000\n ParticleEmitter {\n  inputs 3\n  emit_from faces\n  rate {{\"parent.smallrate * parent.emissionmulti\"}}\n  rate_variation 1\n  lifetime {{parent.ParticleEmitter1.lifetime}}\n  velocity 0\n  size 0.006\n  size_variation 1\n  name ParticleEmitter2\n  xpos 1043\n  ypos -488\n  disable {{1-parent.smalenabled}}\n }\npush $N5fb58400\n ScanlineRender {\n  inputs 3\n  ztest_enabled false\n  filter impulse\n  motion_vectors_type distance\n  name ScanlineRender2\n  xpos 1043\n  ypos -373\n }\n ColorCorrect {\n  inputs 1+1\n  gain 0\n  maskChannelMask rgba.red\n  name ColorCorrect3\n  xpos 1043\n  ypos -309\n }\npush $N435ab400\n Erode {\n  channels rgb\n  size {{parent.blobify}}\n  name Erode3\n  xpos 1327\n  ypos -271\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 1327\n  ypos -228\n }\n Group {\n  inputs 2\n  name Group1\n  xpos 1327\n  ypos -185\n  addUserKnob {20 \"\" l Glass}\n  addUserKnob {7 displace l Displace R 0 20}\n  displace {{parent.displace}}\n  addUserKnob {41 size_1 l \"smooth vectors\" T Blur1.size}\n  addUserKnob {7 abberation l Abberation}\n  addUserKnob {26 \"\" l Defocus}\n  addUserKnob {6 useDef l \"Apply Defocus\" -STARTLINE}\n  addUserKnob {41 size T ZBlur1.size}\n  addUserKnob {41 max_size l maximum T ZBlur1.max_size}\n  addUserKnob {41 shape l \"filter shape\" T ZBlur1.shape}\n }\n  Input {\n   inputs 0\n   name img\n   xpos -289\n   ypos 81\n  }\nset N435a9800 [stack 0]\n  Dot {\n   name Dot1\n   xpos -255\n   ypos 634\n  }\n  Input {\n   inputs 0\n   name control\n   xpos -64\n   ypos -388\n   number 1\n  }\nset N435a9000 [stack 0]\npush $N435a9000\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy6\n   xpos -64\n   ypos -354\n   disable {{hasError i}}\n  }\nset N435a8c00 [stack 0]\n  Dot {\n   name Dot2\n   xpos 94\n   ypos -343\n  }\nset N435a8800 [stack 0]\n  Transform {\n   translate {0 -1}\n   center {320 240}\n   name down\n   xpos 60\n   ypos -140\n  }\npush $N435a8c00\n  Dot {\n   name Dot3\n   xpos -122\n   ypos -343\n  }\n  Dot {\n   name Dot4\n   xpos -207\n   ypos -343\n  }\n  Transform {\n   translate {0 1}\n   center {320 240}\n   name up\n   xpos -241\n   ypos -180\n  }\npush $N435a8800\n  Dot {\n   name Dot5\n   xpos 176\n   ypos -343\n  }\n  Transform {\n   translate {1 0}\n   center {320 240}\n   name right\n   xpos 142\n   ypos -221\n  }\npush $N435a8c00\n  Shuffle {\n   in alpha\n   green black\n   blue black\n   out rgb\n   name Shuffle1\n   xpos -64\n   ypos -311\n  }\n  Transform {\n   translate {-1 0}\n   center {320 240}\n   name left\n   xpos -64\n   ypos -285\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.green\n   name Copy2\n   xpos -64\n   ypos -228\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.blue\n   name Copy3\n   xpos -64\n   ypos -187\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy4\n   xpos -64\n   ypos -147\n  }\n  Expression {\n   temp_name0 l\n   temp_expr0 red\n   temp_name1 r\n   temp_expr1 green\n   temp_name2 u\n   temp_expr2 blue\n   temp_name3 d\n   temp_expr3 alpha\n   channel0 {forward.u -forward.v none -backward.u}\n   expr0 (l-r)*width\n   channel1 {-forward.u forward.v none -backward.u}\n   expr1 (d-u)*width\n   channel2 depth\n   expr2 (abs(l-r)+abs(d-u))*width/2\n   name Expression1\n   xpos -64\n   ypos -15\n  }\n  Blur {\n   channels motion\n   crop false\n   name Blur1\n   xpos -64\n   ypos 13\n  }\nset N60f55000 [stack 0]\n  Dot {\n   name Dot6\n   xpos 89\n   ypos 22\n  }\n  Dot {\n   name Dot7\n   xpos 89\n   ypos 193\n  }\npush $N60f55000\npush $N435a9800\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels forward\n   name Copy1\n   xpos -64\n   ypos 67\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels depth\n   name Copy8\n   xpos -64\n   ypos 175\n  }\n  ZBlur {\n   channels rgba\n   math -linear\n   shape 1\n   name ZBlur1\n   xpos -64\n   ypos 229\n   disable {{!parent.useDef}}\n  }\nset N60ef7800 [stack 0]\n  IDistort {\n   channels rgba\n   uv forward\n   uv_scale {{parent.displace i}}\n   name IDistort4\n   xpos 98\n   ypos 491\n  }\npush $N60ef7800\n  IDistort {\n   channels {-rgba.red -rgba.green rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace/(1+parent.abberation/10)}}\n   name IDistort3\n   xpos 66\n   ypos 314\n  }\npush $N60ef7800\n  IDistort {\n   channels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace/(1-parent.abberation/10)}}\n   name IDistort1\n   xpos -188\n   ypos 309\n  }\npush $N60ef7800\n  IDistort {\n   channels {-rgba.red rgba.green -rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace i}}\n   name IDistort2\n   xpos -64\n   ypos 311\n  }\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 rgba.red\n   name Copy9\n   xpos -64\n   ypos 372\n  }\n  Copy {\n   inputs 2\n   from0 rgba.blue\n   to0 rgba.blue\n   name Copy10\n   xpos -64\n   ypos 412\n  }\n  Switch {\n   inputs 2\n   which {{parent.abberation==0}}\n   name Switch1\n   xpos -64\n   ypos 491\n   addUserKnob {20 \"\" l Weta}\n   addUserKnob {32 knob l \"update input order\" t \"changes the input order according to the input nodes' horizontal order (left most node becomes input 0)\" -STARTLINE T \" reconnectInputs\"}\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels depth\n   name Copy5\n   xpos -64\n   ypos 616\n  }\n  Output {\n   name Output1\n   xpos -59\n   ypos 747\n  }\n end_group\n TimeEcho {\n  framesbehind {{parent.trails}}\n  frmaesfade {{parent.trails}}\n  name TimeEcho2\n  xpos 1327\n  ypos -124\n  disable {{parent.trailkill}}\n }\n Switch {\n  inputs 2\n  which {{parent.dropspass}}\n  name Switch2\n  xpos 1327\n  ypos -48\n }\nset N61b2c800 [stack 0]\npush $N61b2c800\n Reformat {\n  name Reformat2\n  xpos 1449\n  ypos -124\n }\nset N60ef5000 [stack 0]\n Shuffle {\n  alpha green\n  name Shuffle1\n  xpos 1651\n  ypos -221\n }\nset N60ef4800 [stack 0]\n Blur {\n  size 11\n  name Blur1\n  xpos 1982\n  ypos 88\n }\n set C60ef4400 [stack 0]\nset N60ef4400 [stack 0]\npush $N60ef4400\npush $N61b2c800\n Emboss {\n  Angle 53\n  name Emboss1\n  xpos 1327\n  ypos 32\n }\n ColorCorrect {\n  gain 2\n  offset -1\n  name ColorCorrect2\n  xpos 1327\n  ypos 102\n }\n Reformat {\n  name Reformat3\n  xpos 1512\n  ypos 102\n }\nclone $C60ef4400 {\n  xpos 1653\n  ypos 96\n  selected false\n }\npush $N60ef5000\npush $N60ef5000\n Erode {\n  channels rgb\n  size 0.25\n  maskChannelMask rgba.red\n  name Erode1\n  xpos 1576\n  ypos -124\n }\npush $N60ef5000\n ColorCorrect {\n  inputs 1+1\n  gain 0\n  maskChannelMask rgba.red\n  name ColorCorrect4\n  xpos 1576\n  ypos -64\n }\n Merge2 {\n  inputs 2\n  operation max\n  mix {{parent.ringing_1}}\n  name Merge3\n  xpos 1576\n  ypos 3\n }\nclone $C60ef4400 {\n  xpos 1716\n  ypos -3\n  selected false\n }\npush $N60ef4800\npush $N60ef5000\nclone $C60ef4400 {\n  xpos 1473\n  ypos -330\n  selected false\n }\npush $N5fb5b000\n AddChannels {\n  channels rgba\n  name AddChannels3\n  xpos 1815\n  ypos -780\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 1815\n  ypos -738\n }\nset N616a9400 [stack 0]\n Blur {\n  inputs 1+1\n  size 8\n  maskChannelMask rgba.red\n  name Blur2\n  xpos 1815\n  ypos -330\n }\n Group {\n  inputs 2\n  name Group3\n  xpos 1815\n  ypos -221\n  addUserKnob {20 \"\" l Glass}\n  addUserKnob {7 displace l Displace R 0 20}\n  displace 0.4\n  addUserKnob {41 size_1 l \"smooth vectors\" T Blur1.size}\n  addUserKnob {7 abberation l Abberation}\n  abberation 1\n  addUserKnob {26 \"\" l Defocus}\n  addUserKnob {6 useDef l \"Apply Defocus\" -STARTLINE}\n  addUserKnob {41 size T ZBlur1.size}\n  addUserKnob {41 max_size l maximum T ZBlur1.max_size}\n  addUserKnob {41 shape l \"filter shape\" T ZBlur1.shape}\n }\n  Input {\n   inputs 0\n   name img\n   xpos -289\n   ypos 81\n  }\nset N616a8c00 [stack 0]\n  Dot {\n   name Dot1\n   xpos -255\n   ypos 634\n  }\n  Input {\n   inputs 0\n   name control\n   xpos -64\n   ypos -388\n   number 1\n  }\nset N616a8400 [stack 0]\npush $N616a8400\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy6\n   xpos -64\n   ypos -354\n   disable {{hasError i}}\n  }\nset N43597c00 [stack 0]\n  Dot {\n   name Dot2\n   xpos 94\n   ypos -343\n  }\nset N43597800 [stack 0]\n  Transform {\n   translate {0 -1}\n   center {320 240}\n   name down\n   xpos 60\n   ypos -140\n  }\npush $N43597c00\n  Dot {\n   name Dot3\n   xpos -122\n   ypos -343\n  }\n  Dot {\n   name Dot4\n   xpos -207\n   ypos -343\n  }\n  Transform {\n   translate {0 1}\n   center {320 240}\n   name up\n   xpos -241\n   ypos -180\n  }\npush $N43597800\n  Dot {\n   name Dot5\n   xpos 176\n   ypos -343\n  }\n  Transform {\n   translate {1 0}\n   center {320 240}\n   name right\n   xpos 142\n   ypos -221\n  }\npush $N43597c00\n  Shuffle {\n   in alpha\n   green black\n   blue black\n   out rgb\n   name Shuffle1\n   xpos -64\n   ypos -311\n  }\n  Transform {\n   translate {-1 0}\n   center {320 240}\n   name left\n   xpos -64\n   ypos -285\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.green\n   name Copy2\n   xpos -64\n   ypos -228\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.blue\n   name Copy3\n   xpos -64\n   ypos -187\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy4\n   xpos -64\n   ypos -147\n  }\n  Expression {\n   temp_name0 l\n   temp_expr0 red\n   temp_name1 r\n   temp_expr1 green\n   temp_name2 u\n   temp_expr2 blue\n   temp_name3 d\n   temp_expr3 alpha\n   channel0 {forward.u -forward.v none -backward.u}\n   expr0 (l-r)*width\n   channel1 {-forward.u forward.v none -backward.u}\n   expr1 (d-u)*width\n   channel2 depth\n   expr2 (abs(l-r)+abs(d-u))*width/2\n   name Expression1\n   xpos -64\n   ypos -15\n  }\n  Blur {\n   channels motion\n   size 15\n   crop false\n   name Blur1\n   xpos -64\n   ypos 13\n  }\nset N43594400 [stack 0]\n  Dot {\n   name Dot6\n   xpos 89\n   ypos 22\n  }\n  Dot {\n   name Dot7\n   xpos 89\n   ypos 193\n  }\npush $N43594400\npush $N616a8c00\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels forward\n   name Copy1\n   xpos -64\n   ypos 67\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels depth\n   name Copy8\n   xpos -64\n   ypos 175\n  }\n  ZBlur {\n   channels rgba\n   math -linear\n   max_size 2.2\n   shape 1\n   name ZBlur1\n   xpos -64\n   ypos 229\n   disable {{!parent.useDef}}\n  }\nset N60e7ec00 [stack 0]\n  IDistort {\n   channels rgba\n   uv forward\n   uv_scale {{parent.displace i}}\n   name IDistort4\n   xpos 98\n   ypos 491\n  }\npush $N60e7ec00\n  IDistort {\n   channels {-rgba.red -rgba.green rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace/(1+parent.abberation/10)}}\n   name IDistort3\n   xpos 66\n   ypos 314\n  }\npush $N60e7ec00\n  IDistort {\n   channels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace/(1-parent.abberation/10)}}\n   name IDistort1\n   xpos -188\n   ypos 309\n  }\npush $N60e7ec00\n  IDistort {\n   channels {-rgba.red rgba.green -rgba.blue rgba.alpha}\n   uv forward\n   uv_scale {{parent.displace i}}\n   name IDistort2\n   xpos -64\n   ypos 311\n  }\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 rgba.red\n   name Copy9\n   xpos -64\n   ypos 372\n  }\n  Copy {\n   inputs 2\n   from0 rgba.blue\n   to0 rgba.blue\n   name Copy10\n   xpos -64\n   ypos 412\n  }\n  Switch {\n   inputs 2\n   which {{parent.abberation==0}}\n   name Switch1\n   xpos -64\n   ypos 491\n   addUserKnob {20 \"\" l Weta}\n   addUserKnob {32 knob l \"update input order\" t \"changes the input order according to the input nodes' horizontal order (left most node becomes input 0)\" -STARTLINE T \" reconnectInputs\"}\n  }\n  Copy {\n   inputs 2\n   from0 -rgba.alpha\n   to0 -rgba.alpha\n   channels depth\n   name Copy5\n   xpos -64\n   ypos 616\n  }\n  Output {\n   name Output1\n   xpos -59\n   ypos 747\n  }\n end_group\n ColorCorrect {\n  inputs 1+1\n  gamma {{\"1 + parent.ringing\"}}\n  maskChannelMask rgba.red\n  name ColorCorrect1\n  xpos 1815\n  ypos 3\n }\n Merge2 {\n  inputs 2\n  operation plus\n  sRGB true\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix 0.085\n  name Merge2\n  xpos 1815\n  ypos 102\n }\nclone $C60ef4400 {\n  xpos 1815\n  ypos 178\n  selected false\n }\npush $N616a9400\n Dot {\n  name Dot1\n  xpos 2131\n  ypos -112\n }\n Merge2 {\n  inputs 2+1\n  name Merge4\n  xpos 2097\n  ypos 205\n }\n ShuffleCopy {\n  inputs 2\n  alpha red\n  name ShuffleCopy1\n  xpos 2097\n  ypos 310\n  disable {{1-parent.alpha}}\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch1\n  xpos 2097\n  ypos 389\n  disable {{1-parent.rainonly}}\n }\n Output {\n  name Output1\n  xpos 2097\n  ypos 474\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Randomizer.gizmo",
    "content": "Group {\n name Randomizer\n tile_color 0x5f5f5fff\n label \"\\[value type]\"\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 Settings}\n addUserKnob {4 type l Type: M {random noise sine triangle square bounce sawtooth \"sawtooth (parabolic)\" \"sawtooth (parabolic reversed)\" \"sawtooth (exponential)\" blip \"sine blip\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {4 scaleAmpFrom l \"Amplitude Pivot:\" M {center min max \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {7 scaleFromNum -STARTLINE +INVISIBLE}\n scaleFromNum {{\"scaleAmpFrom == 0 ? 0 : scaleAmpFrom == 1 ? -.5 : .5\"}}\n addUserKnob {41 Amplitude T Randomizer.Amplitude}\n addUserKnob {3 pivotFrame l \"Pivot Frame\"}\n addUserKnob {41 Frequency T Randomizer.Frequency}\n addUserKnob {26 \"\"}\n addUserKnob {41 PositionX T Randomizer.PositionX}\n addUserKnob {41 PositionY T Randomizer.PositionY}\n addUserKnob {26 \"\"}\n addUserKnob {6 squarify l \"squarify | \" +STARTLINE}\n addUserKnob {3 seed -STARTLINE}\n seed 12345\n addUserKnob {22 randomSeedButton l \"Randomize Seed\" -STARTLINE T \"import random\\nnuke.thisNode().knob('seed').setValue(random.randint(1,99999))\"}\n addUserKnob {41 output l \"Output Curve\" T Randomizer.Curve}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Creates a random curve with controls.\\nBest to view curve editor while tweaking.\" T Randomizer}\n addUserKnob {26 ver l Version: T v02}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 289\n  ypos -533\n }\n NoOp {\n  name Randomizer\n  selected true\n  xpos 289\n  ypos -486\n  addUserKnob {20 Settings}\n  addUserKnob {7 Curve t \"Copy this Curve to another nodes attributes and use the below sliders to adjust this curve. Use graph editor for guidance.\\n\" R -1 1}\n  Curve {{\"type == 0 ? squarify == 1 ? Amplitude*((random(floor(((frame+seed-pivotFrame)/Frequency+pivotFrame)/2)+PositionX))-scaleFromNum)-(abs(Amplitude/2))+(PositionY+scaleFromNum) : Amplitude*((random((((frame+seed-pivotFrame)/Frequency+pivotFrame)/2)+PositionX))-scaleFromNum)-(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 1 ? squarify == 1 ? Amplitude*(((noise(((floor((frame+seed-pivotFrame)/Frequency+pivotFrame)/2)+PositionX))/2)-scaleFromNum+.5))-(abs(Amplitude/2))+(PositionY+scaleFromNum) : Amplitude*(((noise((((frame+seed-pivotFrame)/Frequency+pivotFrame)/2)+PositionX))/2)-scaleFromNum+.5)-(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 2 ? Amplitude*(((sin(2*pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX))+1)/2)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 3 ? Amplitude*((asin(sin(2*pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX)))/pi+0.5)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 4 ? Amplitude*(int(sin(2*pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX))+1)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 5 ? Amplitude*(abs(sin(pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX)))-scaleFromNum)-(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 6 ? Amplitude*(((((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX)% 1)/1)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 7 ? Amplitude*((sin((pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX)/2) % (pi/2)))-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 8 ? Amplitude*((cos((pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX)/(2)) % (pi/2)))-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 9 ? Amplitude*(((exp(2*pi*(((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX) % 1)/1)-1)/exp(2*pi))-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 10 ? Amplitude*((((((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10)+PositionX) % (1+1)/(1)) *(1/1) - (1/1) >= 0 ? -.5 : .5)+.5)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\ntype == 11 ? Amplitude*((((int((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10+PositionX) % 2)) >= 0 ? ((int((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10+PositionX) % 2)) <= (0+(1-1)) ? ((sin(pi*((((frame+seed-pivotFrame)/Frequency+pivotFrame)/10+PositionX) % 2)/1)/2+1/2) * (2*.5-2*-.5) + (2*-.5-.5)) : -.5)  : -.5)+.5)-scaleFromNum) -(abs(Amplitude/2))+(PositionY+scaleFromNum) :\\n0\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 Amplitude t \"Use this to control the amplitude or \\\"height\\\" of the curve.\" R 0 3}\n  Amplitude 1\n  addUserKnob {7 Frequency t \"Use this to control the frequency or \\\"height\\\" of the curve.\" R 0.1 20}\n  Frequency 1\n  addUserKnob {26 \"\"}\n  addUserKnob {7 PositionX t \"This will \\\"slide\\\" the Random curve along the X axis.  It is most useful for creating a variation of the random curve.\\n\\nEx: A curve with this set to 1 will be way different than a curve with this set to 430.\" R -10 10}\n  addUserKnob {7 PositionY t \"This changes the Y position of the curve in the graph editor along the Y axis.\\n\\nKeyframing this will create a new curve which the random curve will be guided along.\\n\" R -4 4}\n }\n Output {\n  name Output1\n  xpos 289\n  ypos -392\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RankFilter.gizmo",
    "content": "Group {\n inputs 0\n name RankFilter\n tile_color 0x168696ff\n addUserKnob {20 RankFilter}\n addUserKnob {41 \"Local GPU: \" T BlinkScript1.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {7 rankpicker_1 l \"Rank Picker\"}\n rankpicker_1 0.5\n addUserKnob {41 \"filter size\" T \"BlinkScript1.RankFilter_filter size\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"Rank Filter made by Josh Parks\\n\"}\n addUserKnob {26 credit2 l \"\" +STARTLINE T www.joshparks.co.uk}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -199\n  ypos -188\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -356\n  ypos -444\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -322\n  ypos -370\n }\nset N37d4400 [stack 0]\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -356\n  ypos -318\n }\n BlinkScript {\n  recompileCount 136\n  ProgramGroup 1\n  KernelDescription \"2 \\\"RankFilter\\\" iterate componentWise 8f4632feddf6438e381689a2ba97b17de2940d93cef050361f5f241bb1ec4f00 2 \\\"imageIn\\\" Read Ranged2D \\\"imageOut\\\" Write Point 2 \\\"filter size\\\" Int 1 AQAAAA== \\\"number picker\\\" Float 1 AACAPw== 2 \\\"size\\\" 1 1 \\\"number_picker\\\" 1 1 2 \\\"imageInrangeMin\\\" Int 2 1 AAAAAAAAAAA= \\\"imageInrangeMax\\\" Int 2 1 AAAAAAAAAAA=\"\n  kernelSource \"kernel RankFilter : public ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRanged2D, eEdgeClamped> imageIn; \\n  Image<eWrite, eAccessPoint> imageOut;          \\n\\nparam:\\n  int size;  //The filter size\\n  float number_picker; \\n\\nlocal:\\n\\n\\n  void define() \\{\\n    defineParam(size, \\\"filter size\\\", 1); \\n    defineParam(number_picker, \\\"number picker\\\", 1.0f); \\n  \\}\\n\\n  void init()\\n  \\{\\n    imageIn.setRange(-size-1, -size-1, size+1, size+1);\\n\\n  \\}\\n\\n  void process()\\n  \\{\\n\\n    float vals\\[512]; ///creates array is this to big?\\n\\n    float size_ref = size; \\n\\n   \\n\\n    for (int j = -size_ref, index = 0; j <= size_ref; j++) \\{ //this section is just collecting all the values in the filter size and putting them in the array\\n      for (int i = -size_ref; i <= size_ref; i++, index++) \\{\\n        vals\\[index] = imageIn(i, j);\\n      \\}\\n    \\}\\n\\n\\n    float tempvaluesforsorting;\\n    int filterSizeref = (2 * size_ref + 1) * (2 * size_ref + 1); //  setting the amount of times to run the sort\\n\\n    for (int i = 0; i < filterSizeref; i++) \\{     //this is sorting the values\\n      for (int j = 0; j < (filterSizeref - i - 1); j++) \\{\\n        if (vals\\[j] > vals\\[j + 1]) \\{\\n          tempvaluesforsorting = vals\\[j];\\n          vals\\[j] = vals\\[j + 1];\\n          vals\\[j + 1] = tempvaluesforsorting;\\n        \\}\\n      \\}\\n    \\}\\n\\n  \\n    int normalised = number_picker *((2 * size_ref + 1) * (2 * size_ref + 1)-1);\\n\\n    imageOut() = vals\\[normalised]; // selecting a certain value in the aray\\n    \\n  \\}\\n\\};\"\n  vectorize false\n  rebuild \"\"\n  \"RankFilter_number picker\" {{slider}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos -356\n  ypos -262\n  addUserKnob {20 User}\n  addUserKnob {7 slider}\n  slider {{rankpicker_1}}\n }\npush $N37d4400\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -487\n  ypos -370\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -487\n  ypos -184\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -356\n  ypos -188\n }\n Output {\n  name Output1\n  xpos -356\n  ypos -97\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RayDeepAO.gizmo",
    "content": "Group {\n name RayDeepAO\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if knob.split('_')\\[1] == 'panelDropped' :\\n            thisGRP.removeKnob( thisGRP\\[knob] )\\n    except :\\n        pass\\n\"\n tile_color 0xffee00ff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 use_texture l \"use texture\" t \"The 5th input is the texture for main scene (msc). Texture need to be UV space\" T menu01.use_texture}\n addUserKnob {18 diffuse_color l \"diffuse color\"}\n diffuse_color 1\n addUserKnob {6 diffuse_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 t_ao l \"ambient occlusion\" T \" \"}\n addUserKnob {41 samples T AmbientOcclusion2.samples}\n addUserKnob {41 spread T AmbientOcclusion2.spread}\n addUserKnob {41 falloff T AmbientOcclusion2.falloff}\n addUserKnob {41 near l \"near clip\" T AmbientOcclusion2.near}\n addUserKnob {41 far l \"far clip\" T AmbientOcclusion2.far}\n addUserKnob {26 \"\"}\n addUserKnob {7 stochastic_samples l \"stochastic samples\" t \"Number of samples per pixel to use in stochastic estimation. Zero disables stochastic sampling. It is recommended for motion blur that the number of scenes to sample (<b>samples</b> knob) is adjusted. This will also provide anti-aliasing by jittering the sample point.\" R 0 50}\n addUserKnob {26 \"\"}\n addUserKnob {41 output_shader_vectors l \"output vectors\" T dRender.output_shader_vectors}\n addUserKnob {41 P_channel l \"surface point\" T dRender.P_channel}\n addUserKnob {41 N_channel l \"surface normal\" T dRender.N_channel}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.1}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-12-18}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.1<br>-&nbsp;added&nbsp;diffuse&nbsp;color&nbsp;parameter<br>-&nbsp;added&nbsp;use&nbsp;texture&nbsp;input&nbsp;option<br>-&nbsp;added&nbsp;output&nbsp;vectors&nbsp;option&nbsp;in&nbsp;deep<br><br>1.0<br>-&nbsp;render&nbsp;AO&nbsp;in&nbsp;deep&nbsp;with&nbsp;non-renderable&nbsp;objects\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -627\n  ypos -267\n  bdwidth 258\n  bdheight 190\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label AO\n  note_font_size 42\n  xpos 1076\n  ypos -161\n  bdwidth 337\n  bdheight 720\n }\n Input {\n  inputs 0\n  name cam\n  label \"\\[value number]\"\n  xpos -46\n  ypos -352\n  number 1\n }\n Dot {\n  name Dot3\n  xpos -12\n  ypos -259\n }\nset Nbf344000 [stack 0]\n Constant {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Constant5\n  xpos 1275\n  ypos -84\n }\n Input {\n  inputs 0\n  name ssc\n  label \"\\[value number]\"\n  xpos 545\n  ypos -352\n  number 3\n }\n Dot {\n  name Dot4\n  xpos 579\n  ypos -259\n }\n ApplyMaterial {\n  inputs 2\n  name scene_noren_2\n  xpos 1275\n  ypos 322\n }\n Input {\n  inputs 0\n  name msc_tex\n  xpos 756\n  ypos -346\n  number 4\n }\n Dot {\n  name Dot5\n  xpos 790\n  ypos -259\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{parent.diffuse_color} {parent.diffuse_color} {parent.diffuse_color} {curve}}\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Constant4\n  xpos 1138\n  ypos -85\n }\n Switch {\n  inputs 2\n  which {{parent.use_texture}}\n  name Switch1\n  xpos 1138\n  ypos 38\n }\n AmbientOcclusion {\n  samples 16\n  name AmbientOcclusion2\n  xpos 1138\n  ypos 120\n }\n Input {\n  inputs 0\n  name msc\n  label \"\\[value number]\"\n  xpos 384\n  ypos -352\n  number 2\n }\n Dot {\n  name Dot2\n  xpos 418\n  ypos -259\n }\nset Nc5edb800 [stack 0]\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos 1138\n  ypos 319\n }\n Scene {\n  inputs 2\n  name mainSC\n  xpos 1148\n  ypos 440\n }\n Input {\n  inputs 0\n  name bg\n  label \"\\[value number]\"\n  xpos 121\n  ypos -352\n }\n Dot {\n  name Dot1\n  xpos 155\n  ypos -259\n }\nset Nd0bfc800 [stack 0]\n RayRender {\n  inputs 3\n  stochastic_samples {{parent.stochastic_samples}}\n  name RayRender1\n  xpos 1138\n  ypos 796\n }\npush $Nbf344000\npush $Nc5edb800\npush $Nd0bfc800\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  stochastic_samples {{parent.stochastic_samples}}\n  motion_vectors_type off\n  MB_channel none\n  name dRender\n  xpos -46\n  ypos 596\n }\n DeepRecolor {\n  inputs 2\n  name DeepRecolor1\n  xpos -46\n  ypos 796\n }\n Output {\n  name Output1\n  xpos -46\n  ypos 1114\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['use_texture'].getValue() == 1 :\\n    thisGRP\\['diffuse_color'].setEnabled(False)\\nelse :\\n    thisGRP\\['diffuse_color'].setEnabled(True)\\n\"\n  xpos -536\n  ypos -166\n  addUserKnob {20 User}\n  addUserKnob {6 use_texture l \"use texture\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ReProject_3D.gizmo",
    "content": "Group {\n name Reproject_3D\n help \"This gizmo does camera projection using the STMap node to remap all the layers in the input image.  It uses a 3D render of point positions in world space (as output by Nuke's ScanlineRender node) and a 3D camera to create UV texture coordinates that are then used to warp an input image such as a matte painting.\\n\\nNOTE: The projection works best with unmatted input images or at least unpremulted matting with some coverage, then all masking occurs within the gizmo.\\n\\nIt can mask the projected image in the following ways:\\n- Input alpha from the 3D render.\\n- Projecting on surfaces facing camera, using normal (N) in world space. This means all surfaces facing the projecting camera will receive the projection regardless of whether they are blocked by other geometry. This is like Nuke's existing camera projection masking.\"\n addUserKnob {20 reproject3d l ReProject3D}\n addUserKnob {41 pworld_channel l \"Surface Pworld\" t \"Choose the input Position Pass layer from the \\\"Pworld\\\" input.  Note that it needs to be rendered in world space.\" T ShuffleP.in}\n addUserKnob {41 maskChannelMask l \"Surface Alpha\" t \"Choose the input surface's alpha channel, from the \\\"Pworld\\\" input.  This is used as an overall object mask to matte the camera projection.\" T Multiply2.maskChannelMask}\n addUserKnob {26 \"\"}\n addUserKnob {6 front_only l \"Project on Front Only (Requires Normals)\" t \"This will mask the projection in the same way Nuke does in full 3D.  Requires world N (normals) in the stream of the \\\"Nworld\\\" input.\" +STARTLINE}\n addUserKnob {41 nworld l \"Surface Normals\" t \"Choose the normal vectors layer (in world space) from the \\\"Nworld\\\" input. Used to derive the front-facing matte.\" T ShuffleN.in}\n addUserKnob {7 focal l INVISIBLE +INVISIBLE R 5 200}\n focal {{\"\\[python -execlocal #\\\\ Reproject_3D\\\\ Expression\\\\nnode\\\\ =\\\\ nuke.thisNode()\\\\nparent\\\\ =\\\\ node.input(2)\\\\nwhile\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Dot':\\\\n\\\\ \\\\ \\\\ \\\\ parent\\\\ =\\\\ parent.input(0)\\\\nif\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Camera2':\\\\n\\\\ \\\\ \\\\ \\\\ ret=\\\\ parent\\\\\\['focal'\\\\].value()\\\\nelse:\\\\n\\\\ \\\\ \\\\ \\\\ ret\\\\ =\\\\ 50.0]\"}}\n addUserKnob {7 h_apert l INVISIBLE +INVISIBLE}\n h_apert {{\"\\[python -execlocal #\\\\ Reproject_3D\\\\ Expression\\\\nnode\\\\ =\\\\ nuke.thisNode()\\\\nparent\\\\ =\\\\ node.input(2)\\\\nwhile\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Dot':\\\\n\\\\ \\\\ \\\\ \\\\ parent\\\\ =\\\\ parent.input(0)\\\\nif\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Camera2':\\\\n\\\\ \\\\ \\\\ \\\\ ret=\\\\ parent\\\\\\['haperture'\\\\].value()\\\\nelse:\\\\n\\\\ \\\\ \\\\ \\\\ ret\\\\ =\\\\ 24.576]\"}}\n addUserKnob {7 v_apert l INVISIBLE +INVISIBLE}\n v_apert {{\"\\[python -execlocal #\\\\ Reproject_3D\\\\ Expression\\\\nnode\\\\ =\\\\ nuke.thisNode()\\\\nparent\\\\ =\\\\ node.input(2)\\\\nwhile\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Dot':\\\\n\\\\ \\\\ \\\\ \\\\ parent\\\\ =\\\\ parent.input(0)\\\\nif\\\\ parent\\\\ and\\\\ parent.Class()\\\\ ==\\\\ 'Camera2':\\\\n\\\\ \\\\ \\\\ \\\\ ret=\\\\ parent\\\\\\['vaperture'\\\\].value()\\\\nelse:\\\\n\\\\ \\\\ \\\\ \\\\ ret\\\\ =\\\\ 18.672]\"}}\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nReProject_3D\\nVersion 1.1\\n2017\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.1 - 2017 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  label \"Pworld to Pcam\"\n  note_font_size 18\n  xpos 334\n  ypos 312\n  bdwidth 190\n  bdheight 338\n }\n BackdropNode {\n  inputs 0\n  name kbd7117\n  tile_color 0x625b575a\n  label \"Facing Bool\"\n  note_font_size 40\n  xpos -318\n  ypos 184\n  bdwidth 189\n  bdheight 428\n }\n Input {\n  inputs 0\n  name Pworld\n  label \"\\[value number]\"\n  xpos -17\n  ypos -1\n  number 1\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 17\n  ypos 95\n }\nset N3652e6b0 [stack 0]\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 127\n  ypos 95\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 127\n  ypos 206\n }\npush $N3652e6b0\n Shuffle {\n  alpha white\n  name ShuffleP\n  xpos -17\n  ypos 145\n }\n Multiply {\n  inputs 1+1\n  channels alpha\n  value {{\"!\\[value . maskChannelMask]\"}}\n  maskChannelMask none\n  invert_mask true\n  name Multiply2\n  xpos -17\n  ypos 196\n  disable {{\"!\\[exists parent.input0]\" x1023 1}}\n }\n Dot {\n  name Dot4\n  tile_color 0x7aa9ff00\n  xpos 17\n  ypos 262\n }\nset N3655a770 [stack 0]\n Input {\n  inputs 0\n  name Nworld\n  label \"\\[value number]\"\n  xpos -269\n  ypos 4\n  number 3\n }\n Shuffle {\n  in none\n  name ShuffleN\n  xpos -269\n  ypos 124\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  name Copy1\n  xpos -269\n  ypos 252\n }\n Unpremult {\n  name Unpremult3\n  xpos -269\n  ypos 318\n  disable {{!Multiply2.maskChannelMask}}\n }\n ColorMatrix {\n  matrix {\n      {{Axis1.world_matrix.0 i} {Axis1.world_matrix.1 i} {Axis1.world_matrix.2 i}}\n      {{Axis1.world_matrix.4 i} {Axis1.world_matrix.5 i} {Axis1.world_matrix.6 i}}\n      {{Axis1.world_matrix.8 i} {Axis1.world_matrix.9 i} {Axis1.world_matrix.10 i}}\n    }\n  invert true\n  name ColorMatrix2\n  label \"Convert to camera space\"\n  xpos -269\n  ypos 377\n }\n Multiply {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  value -1\n  name Multiply10\n  label \"reverse z\"\n  xpos -269\n  ypos 463\n }\n Expression {\n  expr0 clamp(-b)\n  expr1 0\n  expr2 0\n  name Expression5\n  xpos -269\n  ypos 501\n }\n Expression {\n  channel0 rgba\n  expr0 \"step(0, r)\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name cull_backfaces\n  label step\n  xpos -269\n  ypos 540\n }\n Dot {\n  name Dot6\n  tile_color 0xcccccc00\n  xpos -235\n  ypos 917\n }\npush $N3655a770\n Dot {\n  name Dot5\n  tile_color 0x7aa9ff00\n  xpos 17\n  ypos 811\n }\npush $N3655a770\n Dot {\n  name Dot16\n  tile_color 0x7aa9ff00\n  xpos 427\n  ypos 264\n }\n Unpremult {\n  name Unpremult1\n  xpos 393\n  ypos 357\n  disable {{!Multiply2.maskChannelMask}}\n }\n Expression {\n  temp_name0 R\n  temp_expr0 Axis1.world_matrix.3\n  temp_name1 G\n  temp_expr1 Axis1.world_matrix.7\n  temp_name2 B\n  temp_expr2 Axis1.world_matrix.11\n  expr0 r-R\n  expr1 g-G\n  expr2 b-B\n  name Expression14\n  label \"translate Pworld to camera\"\n  xpos 393\n  ypos 383\n }\n ColorMatrix {\n  matrix {\n      {{Axis1.world_matrix.0 i} {Axis1.world_matrix.1 i} {Axis1.world_matrix.2 i}}\n      {{Axis1.world_matrix.4 i} {Axis1.world_matrix.5 i} {Axis1.world_matrix.6 i}}\n      {{Axis1.world_matrix.8 i} {Axis1.world_matrix.9 i} {Axis1.world_matrix.10 i}}\n    }\n  invert true\n  name ColorMatrix4\n  label \"Rotate to camera\"\n  xpos 393\n  ypos 444\n }\n Multiply {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  value -1\n  name Multiply13\n  label \"reverse Z\"\n  xpos 393\n  ypos 529\n }\n Dot {\n  name Dot7\n  tile_color 0x7aa9ff00\n  xpos 427\n  ypos 702\n }\nset N36600e30 [stack 0]\n Expression {\n  channel0 rgba\n  expr0 b>0\n  name Expression15\n  label \"clip Z behind cam\"\n  xpos 393\n  ypos 749\n }\npush $N36600e30\n Expression {\n  temp_name0 h_tan\n  temp_expr0 \"(h_apert /2) / focal\"\n  temp_name1 v_tan\n  temp_expr1 \"(v_apert /2)  / focal\"\n  expr0 \"0.5 + 0.5 * r / h_tan / b\"\n  expr1 \"0.5 + 0.5 * g / v_tan / b\"\n  expr2 0\n  channel3 {none none none -rgba.alpha}\n  name Expression16\n  label CameraUVs\n  xpos 477\n  ypos 692\n  addUserKnob {20 \"\" l User}\n  addUserKnob {26 \"\" l \"camera settings\"}\n  addUserKnob {7 focal l \"focal length\" t \"Link to projecting camera's focal length\" R 0 100}\n  focal {{(parent.v_apert*(img.width/img.height))/(parent.h_apert/parent.focal)}}\n  addUserKnob {7 h_apert l \"horiz aperture\" t \"Link to projecting camera's horizontal aperture\" R 0 50}\n  h_apert {{parent.v_apert*(img.width/img.height)}}\n  addUserKnob {7 v_apert l \"vert aperture\" t \"Link to projecting camera's vertical aperture\" R 0 50}\n  v_apert {{parent.v_apert}}\n }\n Input {\n  inputs 0\n  name img\n  label \"\\[value number]\"\n  xpos 742\n  ypos 375\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 742\n  ypos 472\n }\n STMap {\n  inputs 2\n  uv rgb\n  blur -rgba.alpha\n  blur_scale 0\n  maskChannel -rgba.alpha\n  name STMap1\n  xpos 742\n  ypos 692\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge2\n  xpos 742\n  ypos 755\n }\n Multiply {\n  inputs 1+1\n  value {{\"\\[value . maskChannelMask]>0?0:1\"}}\n  invert_mask true\n  name Multiply3\n  label \"by surface alpha\"\n  xpos 742\n  ypos 795\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge1\n  xpos 742\n  ypos 913\n  disable {{!parent.front_only}}\n }\n Output {\n  name Output1\n  xpos 742\n  ypos 1014\n }\n Input {\n  inputs 0\n  name cam\n  label \"\\[value number]\"\n  xpos 94\n  ypos 397\n  number 2\n }\n Axis2 {\n  name Axis1\n  xpos 104\n  ypos 504\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Reconcile3DFast.gizmo",
    "content": "Group {\n inputs 3\n name reconcile3DFast\n tile_color 0x421010ff\n addUserKnob {20 PlanarProjection l reconcile3DFast}\n addUserKnob {22 Calculate t \"Calculate the reconciled 2D points for each 3D point.\\n\\nAlso calculate a matrix transform for the planar surface, if there are 4 total points. This can then be used for Rotos and CornerPins.\" T \"import nuke\\nfrom nukescripts import snap3d as sn\\nimport math\\n\\n\\n## Based on Planar Projection by Vit Sedlacek and Jed Smith\\n\\n\\ndef cameraProjectionMatrix(cameraNode, frame, imageformat):\\n    ## modified code from nukescripts/Snap3D\\n\\n    # Matrix to transform points into camera-relative coords.\\n    wm = nuke.math.Matrix4()\\n    for i in range(16):\\n        wm\\[i] = cameraNode\\['matrix'].getValueAt(frame, i)\\n\\n    wm.transpose()\\n    camTransform = wm.inverse()\\n\\n    # Matrix to take the camera projection knobs into account\\n    roll = float(cameraNode\\['winroll'].getValueAt(frame, 0))\\n    scale_x = float(cameraNode\\['win_scale'].getValueAt(frame, 0))\\n    scale_y = float(cameraNode\\['win_scale'].getValueAt(frame, 1))\\n    translate_x = float(cameraNode\\['win_translate'].getValueAt(frame, 0))\\n    translate_y = float(cameraNode\\['win_translate'].getValueAt(frame, 1))\\n    m = nuke.math.Matrix4()\\n    m.makeIdentity()\\n    m.rotateZ(math.radians(roll))\\n    m.scale(1.0 / scale_x, 1.0 / scale_y, 1.0)\\n    m.translate(-translate_x, -translate_y, 0.0)\\n\\n    # Projection matrix based on the focal length, aperture and clipping planes of the camera\\n    focal_length = float(cameraNode\\['focal'].getValueAt(frame))\\n    h_aperture = float(cameraNode\\['haperture'].getValueAt(frame))\\n    near = float(cameraNode\\['near'].getValueAt(frame))\\n    far = float(cameraNode\\['far'].getValueAt(frame))\\n    projection_mode = int(cameraNode\\['projection_mode'].getValueAt(frame))\\n    p = nuke.math.Matrix4()\\n    p.projection(focal_length / h_aperture, near, far, projection_mode == 0)\\n\\n    # Matrix to translate the projected points into normalised pixel coords\\n    imageAspect = float(imageformat.height()) / float(imageformat.width())\\n\\n    t = nuke.math.Matrix4()\\n    t.makeIdentity()\\n    t.translate(1.0, 1.0 - (1.0 - imageAspect / float(imageformat.pixelAspect())), 0.0)\\n\\n    # Matrix to scale normalised pixel coords into actual pixel coords.\\n    x_scale = float(imageformat.width()) / 2.0\\n    y_scale = x_scale * imageformat.pixelAspect()\\n    s = nuke.math.Matrix4()\\n    s.makeIdentity()\\n    s.scale(x_scale, y_scale, 1.0)\\n\\n    # The projection matrix transforms points into camera coords, modifies based\\n    # on the camera knob values, projects points into clip coords, translates the\\n    # clip coords so that they lie in the range 0,0 - 2,2 instead of -1,-1 - 1,1,\\n    # then scales the clip coords to proper pixel coords.\\n    return s * t * p * m * camTransform\\n\\n\\ndef projectPoints(frame, camera=None, point=None, imageformat=None):\\n    # Modify projectpoint function in nukescripts.snap3d to add frame argument\\n    if not imageformat:\\n        imageformat = nuke.root()\\['format'].value()\\n    camMatrix = cameraProjectionMatrix(camera, frame, imageformat)\\n    if camMatrix == None:\\n        raise RuntimeError(\\\"snap3d.cameraProjectionMatrix() returned None for camera.\\\")\\n\\n    if not (isinstance(point, list) or isinstance(point, tuple)):\\n        raise ValueError(\\\"Argument point must be a list or tuple.\\\")\\n\\n    for point in point:\\n        # Would be nice to not do this for every item but since lists/tuples can\\n        # containg anything...\\n        if isinstance(point, nuke.math.Vector3):\\n            pt = point\\n        elif isinstance(point, list) or isinstance(point, tuple):\\n            pt = nuke.math.Vector3(point\\[0], point\\[1], point\\[2])\\n        else:\\n            raise ValueError(\\\"All items in point must be nuke.math.Vector3 or list/tuple of 3 floats.\\\")\\n\\n        tPos = camMatrix * nuke.math.Vector4(pt.x, pt.y, pt.z, 1.0)\\n        try:\\n            yield nuke.math.Vector2(tPos.x / tPos.w, tPos.y / tPos.w)\\n        except ZeroDivisionError:\\n            print(\\\"Zero Division Error on frame \\{0\\} with point data \\{1\\}\\\".format(frame, point))\\n            yield nuke.math.Vector2()\\n\\n\\ndef calculate(node):\\n    # Get the input Camera and verify it is right. (Assume camera is topnode of input to handle dots)\\n    cam_input = node.input(1)\\n    # Sanity check\\n    if not (cam_input and isinstance(cam_input, nuke.Node)):\\n        nuke.message(\\\"A Camera node must be connected.\\\")\\n        return\\n    if 'Camera' in cam_input.Class():\\n        cam = cam_input\\n    else:\\n        cam = nuke.toNode(nuke.tcl(\\\"full_name \\[topnode %s]\\\" % cam_input.name()))\\n        \\n    #AXIS INPUT\\n    axis_input = node.input(2)\\n    if not (axis_input and isinstance(axis_input, nuke.Node)):\\n        nuke.message(\\\"A axis node must be connected.\\\")\\n        return\\n    if 'Axis' in axis_input.Class():\\n        axis = axis_input\\n    else:\\n        axis = nuke.toNode(nuke.tcl(\\\"full_name \\[topnode %s]\\\" % axis_input.name()))\\n        \\n    # BG INPUT  \\n    bg = node.input(0)\\n    if not bg:\\n        nuke.message(\\\"BG not connected, so the root format will be used to reconcile the 3D point into screen space.\\\")\\n\\n    # Get framerange to operate on from camera animation curves\\n    first = None\\n    last = None\\n    try:\\n        if cam\\['translate'].isAnimated():\\n            for curve in cam\\['translate'].animations():\\n                if first == None:\\n                    first = int(curve.keys()\\[0].x)\\n                else:\\n                    first = min(first, int(curve.keys()\\[0].x))\\n            for curve in cam\\['translate'].animations():\\n                if last == None:\\n                    last = int(curve.keys()\\[-1].x)\\n                else:\\n                    last = max(last, int(curve.keys()\\[-1].x))\\n        elif cam\\['rotate'].isAnimated():\\n            for curve in cam\\['rotate'].animations():\\n                if first == None:\\n                    first = int(curve.keys()\\[0].x)\\n                else:\\n\\n                  first = min(first, int(curve.keys()\\[0].x))\\n            for curve in cam\\['rotate'].animations():\\n                if last == None:\\n                    last = int(curve.keys()\\[-1].x)\\n                else:\\n                    last = max(last, int(curve.keys()\\[-1].x))\\n        else:\\n            nuke.message(\\\"Input Camera is not animated.\\\")\\n            return\\n    except:\\n        nuke.message(\\\"Something went wrong getting the camera animation. Using Root framerange...\\\")\\n        first = nuke.root().firstFrame()\\n        last = nuke.root().lastFrame()\\n\\n    framerange = nuke.FrameRange('\\{0\\}-\\{1\\}'.format(first, last))\\n\\n    # Only run if the ip knob is not default\\n    ipknob = axis\\[\\\"translate\\\"]\\n\\n    opknob = node\\[\\\"op1\\\"]\\n    opknob.clearAnimated()\\n    opknob.setAnimated()\\n\\n    # Building the data into a list of AnimationKey objects,\\n    # and then applying that list to the knob using addKey is significantly faster than other methods.\\n    # This makes the Calculate button instantaneous instead of taking forever.\\n    point_animcurve = \\[\\[], \\[]]\\n    for frame in framerange:\\n\\n        # Sample input point knob on every frame if it's animated or expression-linked\\n        if ipknob.isAnimated() or ipknob.hasExpression():\\n            point = next(projectPoints(frame, cam, \\[ipknob.getValueAt(frame)], node.format()))\\n        else:\\n            point = next(projectPoints(frame, cam, \\[ipknob.value()], node.format()))\\n        for index in range(2):\\n            point_animcurve\\[index].append(nuke.AnimationKey(frame, point\\[index]))\\n\\n    for index, curve in enumerate(opknob.animations()):\\n        curve.addKey(point_animcurve\\[index])\\n\\n\\nif __name__ == \\\"__main__\\\":\\n    calculate(nuke.thisNode())\" +STARTLINE}\n addUserKnob {22 clear_out l Clear t \"Clear output knobs.\" -STARTLINE T \"n = nuke.thisNode()\\n\\nkop = n\\['op1']\\nkop.clearAnimated()\\nkop.setValue(kop.defaultValue())\"}\n addUserKnob {12 op1 l \"XY output\"}\n addUserKnob {22 Transform T \"# Create tracker node\\nfrom __future__ import with_statement\\n\\ngrid_x = int(nuke.toNode('preferences').knob('GridWidth').value())\\ngrid_y = int(nuke.toNode('preferences').knob('GridHeight').value())\\npproj = nuke.thisNode()\\n\\nwith nuke.root():\\n    transform_node = nuke.nodes.Transform()\\n    transform_node.setXYpos(pproj.xpos() - grid_x * 0, pproj.ypos() + grid_y * 2)\\n    \\[n.setSelected(False) for n in nuke.allNodes()]\\n    transform_node.setSelected(True)\\n\\n    if pproj\\['op1'].isAnimated():\\n        tknob = transform_node\\['translate']\\n        tknob.clearAnimated()\\n        tknob.setAnimated()\\n        for x, c in enumerate(tknob.animations()):\\n            opknob = pproj\\['op1']\\n            if opknob.isAnimated():\\n                c.addKey(opknob.animation(x).keys())\\n            else:\\n                tknob.clearAnimated()\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 lbl l \"\" +STARTLINE T \"Reconcile3DFast v1.0\"}\n addUserKnob {22 btn l DerekVFX.ca T \"import os\\nimport sys\\nimport webbrowser\\n\\ndef _open(url, wait=0):\\n    try:\\n        if sys.platform == \\\"darwin\\\":\\n            cmd = \\[\\\"open\\\", url]\\n        elif hasattr(os, \\\"startfile\\\"):\\n            return os.startfile(url)\\n        elif \\\"KDE_FULL_SESSION\\\" in os.environ or \\\"KDE_MULTIHEAD\\\" in os.environ or \\\\\\n            \\\"GNOME_DESKTOP_SESSION_ID\\\" in os.environ or \\\"GNOME_KEYRING_SOCKET\\\" in os.environ:\\n            cmd = \\[\\\"xdg-open\\\", url]\\n        else:\\n            # Fallback option for unsupported desktops\\n            webbrowser.open(url)\\n            return\\n\\n        _run(cmd, 0, wait)\\n\\n    except OSError as e:\\n        print(f\\\"Error: \\{e\\}\\\")\\n\\ndef _run(cmd, shell, wait):\\n    try:\\n        subprocess.Popen(cmd, shell=shell, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\\n        if wait:\\n            opener.wait()\\n    except Exception as e:\\n        print(f\\\"Error: \\{e\\}\\\")\\n\\n_open('http://www.derekvfx.ca/')\\n\" +STARTLINE}\n}\n Input {\n  inputs 0\n  name cam\n  label \"\\[value number]\"\n  xpos 400\n  ypos -301\n  number 1\n }\n Input {\n  inputs 0\n  name axis\n  label \"\\[value number]\"\n  xpos 197\n  ypos -307\n  number 2\n }\n Input {\n  inputs 0\n  name img\n  label \"\\[value number]\"\n  xpos 620\n  ypos -302\n }\n Output {\n  name Output1\n  selected true\n  xpos 620\n  ypos 158\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Relight_Simple.gizmo",
    "content": "Group {\n name Relight_Simple\n help \"Simpliflied relight node.\\nOnly requires a normal map to get started.\\n\\nThis node will not reproduce accurate lighting, as it does not take into account the actual 3D world space, but instead considers the image in its own local space.\"\n addUserKnob {20 relight_simple l Relight_Simple}\n addUserKnob {12 light l \"Light XY\" t \"Controls the light position in X and Y axis\"}\n light {50 50}\n addUserKnob {7 light_z l \"Light Z\" t \"Controls the light position in Z axis\" R 0 1000}\n light_z 150\n addUserKnob {18 light_color l \"Light Color\" t \"Change the color of the light\"}\n light_color 1\n addUserKnob {6 light_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {18 albedo l \"Object Color (Albedo)\" t \"Control the color of the object being lit. Only used when the Albedo input is not connected.\"}\n albedo 1\n addUserKnob {6 albedo_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 specularity l Specularity t \"Amount of specularity\"}\n specularity 0.2\n addUserKnob {7 shine l Shininess t \"Controls the shininess of the specular highlights.\" R 1 20}\n shine 10\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nRelight_Simple\\nVersion 1.0\\n2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.0 - 2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0 1 0}\n  color_panelDropped true\n  name Constant1\n  xpos 689\n  ypos 218\n }\n Input {\n  inputs 0\n  name Normals\n  xpos 829\n  ypos 134\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 863\n  ypos 196\n }\nset N82a6cc0 [stack 0]\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input]\"}}\n  name Switch2\n  xpos 829\n  ypos 241\n }\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 863\n  ypos 296\n }\nset Na305b260 [stack 0]\n Input {\n  inputs 0\n  name Albedo\n  xpos 1081\n  ypos 132\n  number 1\n }\npush $N82a6cc0\n Grade {\n  multiply 0\n  add {{parent.albedo} {parent.albedo} {parent.albedo} {parent.albedo}}\n  name Grade1\n  xpos 959\n  ypos 192\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1]\"}}\n  name Switch1\n  xpos 1081\n  ypos 192\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 1081\n  ypos 292\n }\n Dot {\n  name Dot2\n  tile_color 0x9e3c6300\n  xpos 1115\n  ypos 354\n }\npush $Na305b260\n BlinkScript {\n  inputs 2\n  recompileCount 15\n  ProgramGroup 1\n  KernelDescription \"2 \\\"Dirlight\\\" iterate pixelWise af5b94d41d487f750c3564ae8419928a837a2e86bb8f7eba952ec26187d6fb21 3 \\\"src\\\" Read Point \\\"albedoIn\\\" Read Point \\\"dst\\\" Write Point 7 \\\"lightPos\\\" Float 2 AAAAAAAAAAA= \\\"lightZ\\\" Float 1 AAAAAA== \\\"lightColor\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"specularity\\\" Float 1 AAAAAA== \\\"shininess\\\" Float 1 AAAAAA== \\\"softness\\\" Float 1 AAAAAA== \\\"proxy\\\" Float 1 AAAAAA== 7 \\\"lightPos\\\" 2 1 \\\"lightZ\\\" 1 1 \\\"lightColor\\\" 3 1 \\\"specularity\\\" 1 1 \\\"shininess\\\" 1 1 \\\"softness\\\" 1 1 \\\"proxy\\\" 1 1 0\"\n  kernelSource \"kernel Dirlight : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;  //the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> albedoIn;  //the input image\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float2 lightPos;\\n    float lightZ;\\n    float3 lightColor;\\n    float specularity;\\n    float shininess;\\n    float softness;\\n    float proxy;\\n\\n  local:\\n\\n\\n  //In define(), parameters can be given labels and default values.\\n  void define() \\{\\n  \\}\\n\\n  //The init() function is run before any calls to kernel().\\n  void init() \\{\\n  \\}\\n\\n  //The kernel function is run at every pixel to produce the output.\\n  void process(int2 pos) \\{\\n    //Normalize LightDirection\\n    lightPos = lightPos*proxy;\\n    float3 normal = float3(src(0),src(1), src(2));\\n    float3 albedo =  float3(albedoIn(0),albedoIn(1), albedoIn(2));\\n    float2 lightDir =  lightPos-float2(pos.x, pos.y);\\n    float3 nLightDir =  normalize(float3(lightDir.x, lightDir.y, lightZ*proxy));\\n    float3 nSpecDir = normalize(float3(nLightDir.x, nLightDir.y, nLightDir.z + 1.0f));\\n    float rawLight = max(0.0f,dot(normal, nLightDir)); // Lambertian\\n    rawLight = pow(rawLight,max(min(softness,3.0f), 1.0f));\\n    float3 diffuse = lightColor*albedo*rawLight;\\n    float rawSpecular =  max(0.0f,dot(normal, nSpecDir));\\n    float n = max(2.0f, shininess);\\n    float shine = pow(rawSpecular, n) * ((n + 8.0f) / 25.0f) ;\\n    float3 specular = lightColor * specularity * shine;\\n    float3 lighting = (diffuse+specular);\\n    \\n    dst() = float4(lighting.x, lighting.y, lighting.z, 0.0f);\\n   \\}\\n\\};\\n\\n\"\n  rebuild \"\"\n  Dirlight_lightPos {{parent.light} {parent.light}}\n  Dirlight_lightZ {{parent.light_z}}\n  Dirlight_lightColor {{parent.light_color} {parent.light_color} {parent.light_color}}\n  Dirlight_specularity {{parent.specularity}}\n  Dirlight_shininess {{parent.shine*50+2}}\n  Dirlight_softness 3\n  Dirlight_proxy {{\"proxy ? (proxy_type ? proxy_scale : \\[lindex \\[value proxy_format] 0] / \\[lindex \\[value format] 0]) : 1\"}}\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos 829\n  ypos 344\n }\nset N82cd0e0 [stack 0]\n Output {\n  name Output1\n  xpos 829\n  ypos 428\n }\npush $N82cd0e0\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Relight_bb.gizmo",
    "content": "Group {\n name Relight_BB\n help \"2D tool to help relight 3d renders with help of a normals pass\\n\\nFeed it with a normals pass through the \\\"image\\\" input, and select the right channel for it.\\nUse the \\\"mask\\\" input to isolate a specific object in your scene.\\n\\n\\n- Antialias normals to get rid of flickering\\n- use ReNorm if your normals are coded from 0 to 1\\n\\nHave fun !\\n\\nby bflat (Bastien Brenot)\\nmail@bastienbrenot.com\"\n tile_color 0x55ffbfff\n label \"diff \\[value enableDiffuse] / spec \\[value enableSpec] / AA \\[value AntiAlias_normals]\"\n selected true\n xpos 133\n ypos 149\n addUserKnob {20 Settings}\n addUserKnob {41 normalsChannel l \"Normals : \" T Shuffle15.in}\n addUserKnob {6 AntiAlias_normals l antiAlias -STARTLINE}\n addUserKnob {6 oldWay l \"reNorm ( 0/1 -> -1/1 )\" -STARTLINE}\n addUserKnob {6 testRange l \"test range\" +STARTLINE}\n addUserKnob {7 remapNorm l \"    // old max value :\" -STARTLINE R 1 4}\n remapNorm 1\n addUserKnob {6 softClip l \"softClip ultra high\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {6 SpecColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 DiffuseColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 lightdirection l \"light direction\" n 1}\n addUserKnob {6 enableDiffuse l \"DIFFUSE     \" +STARTLINE}\n enableDiffuse true\n addUserKnob {6 enableSpec l \"SPECULAR     \" -STARTLINE}\n enableSpec true\n addUserKnob {26 noText l \"\" +STARTLINE T \" \"}\n addUserKnob {7 X_Angle l \"X Angle\" R -180 180}\n X_Angle -15\n addUserKnob {7 Y_Angle l \"Y Angle\" R -180 180}\n Y_Angle 75\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 settings l \"light settings\" n 1}\n addUserKnob {26 void l \" \"}\n addUserKnob {18 DiffuseColor l \"Diffuse Color\"}\n DiffuseColor 1\n addUserKnob {6 DiffuseColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 affectDiffuseAlpha l \"affect alpha\" -STARTLINE}\n affectDiffuseAlpha true\n addUserKnob {26 \"\"}\n addUserKnob {7 spec_cosinPower l \"cosin power\"}\n spec_cosinPower 0.75\n addUserKnob {18 SpecColor l \"Specular Color\"}\n SpecColor 1\n addUserKnob {6 SpecColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 affectSpecAlpha l \"affect alpha\" -STARTLINE}\n affectSpecAlpha true\n addUserKnob {6 boostSpec l \"boost spec\" +STARTLINE}\n boostSpec true\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 mask n 1}\n addUserKnob {26 void2 l \" \"}\n addUserKnob {6 postMult l \"post multiply by original Alpha ? \" +STARTLINE}\n addUserKnob {6 enableMask l \"enable mask\" +STARTLINE}\n addUserKnob {41 maskChannelMask l \"\" -STARTLINE T maskMultiply.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T maskMultiply.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T maskMultiply.invert_mask}\n addUserKnob {41 fringe -STARTLINE T maskMultiply.fringe}\n addUserKnob {41 mix T maskMultiply.mix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff00bfff\n  label ZEBRAS\n  note_font_size 42\n  xpos -638\n  ypos -74\n  bdwidth 643\n  bdheight 288\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode13\n  tile_color 0x8e8e3800\n  label \"RELIGHT DIFF + SPEC\"\n  note_font_size 42\n  xpos -1014\n  ypos -702\n  bdwidth 1025\n  bdheight 371\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x71c67100\n  label \"remap normals\\n\\n+ softclip high\\n\\nPOSITIF\\n\\n\\n\\n\\n\\nNEGATIF\"\n  note_font_size 42\n  xpos -817\n  ypos -1664\n  bdwidth 827\n  bdheight 772\n }\n Input {\n  inputs 0\n  name InputNormals\n  xpos -439\n  ypos -1994\n }\n Dot {\n  name Dot53\n  xpos -405\n  ypos -1914\n }\nset Nb728d1c0 [stack 0]\n Shuffle {\n  green blue\n  blue green\n  alpha black\n  name Shuffle15\n  label \"\\[value in]\"\n  xpos -439\n  ypos -1875\n }\n Dot {\n  name Dot9\n  xpos -405\n  ypos -1803\n }\nset Nb729dfc0 [stack 0]\n Dot {\n  name Dot10\n  xpos -528\n  ypos -1803\n }\n Expression {\n  expr0 r*2-1\n  expr1 g*2-1\n  expr2 b*2-1\n  name normalize\n  label \"\\[value expr0]\"\n  xpos -562\n  ypos -1756\n }\npush $Nb729dfc0\n Switch {\n  inputs 2\n  which 1\n  name Switch_oldWay\n  xpos -439\n  ypos -1750\n  disable {{parent.oldWay==0?1:0}}\n }\nset Nb72b11c0 [stack 0]\n Multiply {\n  channels rgb\n  value {{1/parent.remapNorm}}\n  name Multiply_setNewRange\n  label \"\\[value value]\"\n  xpos -439\n  ypos -1639\n }\n Dot {\n  name Dot14\n  xpos -405\n  ypos -1582\n }\nset Nb72c1080 [stack 0]\n Dot {\n  name Dot15\n  xpos -260\n  ypos -1582\n }\nset Nb72c4cd0 [stack 0]\n ClipTest {\n  channels rgb\n  lower -10000\n  name ClipTest2\n  xpos -176\n  ypos -1585\n }\npush $Nb72c4cd0\n Difference {\n  inputs 2\n  name Difference2\n  xpos -176\n  ypos -1546\n }\n FilterErode {\n  size -3\n  name FilterErode1\n  xpos -176\n  ypos -1510\n }\n Blur {\n  channels rgba\n  size 5\n  name Blur1\n  label \"\\[value size]\"\n  xpos -176\n  ypos -1449\n }\n Multiply {\n  channels rgba\n  value 1.2\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -176\n  ypos -1413\n }\n Clamp {\n  name Clamp2\n  xpos -176\n  ypos -1377\n }\npush $Nb72c1080\n Dot {\n  name Dot12\n  xpos -406\n  ypos -1482\n }\nset Nb73070e0 [stack 0]\n Expression {\n  temp_name0 Y\n  temp_expr0 \"0.2126*r + 0.7152*g + 0.0722*b\"\n  temp_name1 L\n  temp_expr1 (r+g+b)/3\n  channel0 rgba\n  expr0 Y\n  name Expression1\n  label \"\\[value expr0]\"\n  xpos -296\n  ypos -1491\n }\n ColorLookup {\n  lut {master {curve C x0.3000000119 0 s0 x0.6999999881 1 s3.200000048}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup1\n  xpos -296\n  ypos -1443\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  invert_mask true\n  name Multiply2\n  label \"\\[value value]\"\n  xpos -296\n  ypos -1377\n }\npush $Nb73070e0\n SoftClip {\n  conversion \"logarithmic compress\"\n  softclip_min 0.6\n  name SoftClip1\n  xpos -692\n  ypos -1371\n }\npush $Nb73070e0\n Keymix {\n  inputs 3\n  name Keymix2\n  xpos -440\n  ypos -1377\n  disable {{!parent.softClip}}\n }\n Expression {\n  expr0 -r\n  expr1 -g\n  expr2 -b\n  name Expression2\n  label \"\\[value expr0]\"\n  xpos -439\n  ypos -1281\n }\n Dot {\n  name Dot16\n  xpos -405\n  ypos -1223\n }\nset Nb7165f20 [stack 0]\n Dot {\n  name Dot17\n  xpos -258\n  ypos -1223\n }\nset Nb7169df0 [stack 0]\n ClipTest {\n  channels rgb\n  lower -10000\n  name ClipTest3\n  xpos -175\n  ypos -1226\n }\npush $Nb7169df0\n Difference {\n  inputs 2\n  name Difference3\n  xpos -175\n  ypos -1188\n }\n FilterErode {\n  size -5\n  name FilterErode2\n  xpos -175\n  ypos -1152\n }\n Blur {\n  channels rgba\n  size 5\n  name Blur2\n  label \"\\[value size]\"\n  xpos -175\n  ypos -1093\n }\n Multiply {\n  channels rgba\n  value 1.2\n  name Multiply4\n  label \"\\[value value]\"\n  xpos -175\n  ypos -1057\n }\n Clamp {\n  name Clamp3\n  xpos -175\n  ypos -1021\n }\npush $Nb7165f20\n Dot {\n  name Dot13\n  xpos -405\n  ypos -1189\n }\nset Nb71a8b90 [stack 0]\n Expression {\n  temp_name0 Y\n  temp_expr0 \"0.2126*r + 0.7152*g + 0.0722*b\"\n  temp_name1 L\n  temp_expr1 (r+g+b)/3\n  channel0 rgba\n  expr0 L\n  name Expression3\n  label \"\\[value expr0]\"\n  xpos -295\n  ypos -1198\n }\n ColorLookup {\n  lut {master {curve C x0.3000000119 0 s0 x0.6999999881 1 s3.200000048}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup2\n  xpos -295\n  ypos -1149\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  invert_mask true\n  name Multiply5\n  label \"\\[value value]\"\n  xpos -295\n  ypos -1021\n }\npush $Nb71a8b90\n SoftClip {\n  conversion \"logarithmic compress\"\n  softclip_min 0.6\n  name SoftClip2\n  xpos -691\n  ypos -1015\n }\npush $Nb71a8b90\n Keymix {\n  inputs 3\n  name Keymix3\n  xpos -439\n  ypos -1021\n  disable {{!parent.softClip}}\n }\n Expression {\n  expr0 -r\n  expr1 -g\n  expr2 -b\n  name Expression4\n  label \"\\[value expr0]\"\n  xpos -439\n  ypos -971\n }\nset Nb7316ed0 [stack 0]\n Dot {\n  name Dot4\n  xpos -405\n  ypos -808\n }\nset Nb731f1f0 [stack 0]\n Dot {\n  name Dot3\n  xpos -1170\n  ypos -808\n }\n Dot {\n  name Dot8\n  xpos -1170\n  ypos 3\n }\n Dot {\n  name Dot7\n  xpos -536\n  ypos 3\n }\nset Nb732ae70 [stack 0]\n Dot {\n  name Dot6\n  xpos -536\n  ypos 137\n }\npush $Nb732ae70\n Dot {\n  name Dot5\n  xpos -464\n  ypos 3\n }\n ClipTest {\n  channels rgb\n  lower -1\n  name ClipTest1\n  xpos -498\n  ypos 38\n }\n Difference {\n  inputs 2\n  name Difference1\n  xpos -498\n  ypos 128\n }\n Clamp {\n  name Clamp1\n  xpos -331\n  ypos 128\n }\n Dot {\n  name Dot2\n  xpos -205\n  ypos 137\n }\nset Nb7353150 [stack 0]\npush $Nb7353150\n Grade {\n  white 10\n  name Grade1\n  xpos -239\n  ypos 169\n }\npush $Nb7353150\npush $Nb728d1c0\n Dot {\n  name Dot55\n  xpos -727\n  ypos -1914\n }\n Dot {\n  name Dot11\n  xpos -727\n  ypos -175\n }\n Input {\n  inputs 0\n  name mask\n  xpos 151\n  ypos -286\n  number 1\n }\n Invert {\n  name Invert1\n  xpos 9\n  ypos -292\n }\n Expression {\n  inputs 0\n  temp_name0 Xx\n  temp_expr0 sin(pi*(parent.X_Angle)/180)\n  temp_name1 Xy\n  temp_expr1 cos(pi*(parent.X_Angle)/180)\n  temp_name2 Yx\n  temp_expr2 sin(pi*(parent.Y_Angle-90)/180)\n  temp_name3 Yy\n  temp_expr3 cos(pi*(parent.Y_Angle-90)/180)\n  expr0 Xx*Yx\n  expr1 Xy*Yx\n  expr2 Yy\n  name diffuseDirectionColor\n  xpos -685\n  ypos -585\n }\nset Nb71f2190 [stack 0]\npush $Nb731f1f0\n Matrix {\n  channels rgb\n  matrix {\n      {1 2 1}\n      {2 4 2}\n      {1 2 1}\n    }\n  normalize true\n  name antiAlias_Normals\n  xpos -439\n  ypos -768\n  disable {{parent.AntiAlias_normals==0?1:0}}\n }\n Dot {\n  name Dot54\n  xpos -405\n  ypos -635\n }\nset Nb7372960 [stack 0]\n Dot {\n  name Dot1\n  xpos -547\n  ypos -635\n }\n MergeExpression {\n  inputs 2\n  temp_name0 X\n  temp_expr0 A.r*B.r\n  temp_name1 Y\n  temp_expr1 A.g*B.g\n  temp_name2 Z\n  temp_expr2 A.b*B.b\n  temp_name3 DIR\n  temp_expr3 X+Y+Z\n  channel0 rgba\n  expr0 pow(DIR,(parent.spec_cosinPower/pow(parent.spec_cosinPower/1.2,5)))\n  channel1 none\n  channel2 none\n  name SpecDirMult\n  xpos -581\n  ypos -471\n }\n Multiply {\n  channels rgba\n  value 3\n  name Spec_Multiply\n  label \"\\[value value]\"\n  xpos -397\n  ypos -477\n  disable {{!parent.boostSpec}}\n }\nset Nb7386150 [stack 0]\n Multiply {\n  channels alpha\n  value {{(0.2126*parent.SpecColor.r+0.7152*parent.SpecColor.g+0.0722*parent.SpecColor.b)}}\n  name MultiplySpecAlpha\n  label \"\\[value value]\"\n  xpos -315\n  ypos -522\n }\npush $Nb7386150\n Multiply {\n  channels rgb\n  value {{parent.SpecColor.r} {parent.SpecColor.g} {parent.SpecColor.b} 1}\n  name SpecColor\n  label \"\\[value value]\"\n  xpos -317\n  ypos -431\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopySpecAlpha\n  xpos -229\n  ypos -467\n  disable {{parent.affectSpecAlpha==0?1:0}}\n }\npush $Nb71f2190\npush $Nb7372960\n MergeExpression {\n  inputs 2\n  temp_name0 X\n  temp_expr0 A.r*B.r\n  temp_name1 Y\n  temp_expr1 A.g*B.g\n  temp_name2 Z\n  temp_expr2 A.b*B.b\n  temp_name3 DIR\n  temp_expr3 X+Y+Z\n  channel0 rgba\n  expr0 DIR\n  channel1 none\n  channel2 none\n  name DiffuseDirMult\n  xpos -439\n  ypos -585\n }\nset Nb6719f70 [stack 0]\n Multiply {\n  channels alpha\n  value {{(0.2126*parent.DiffuseColor.r+0.7152*parent.DiffuseColor.g+0.0722*parent.DiffuseColor.b)}}\n  name MultiplyDiffAlpha\n  label \"\\[value value]\"\n  xpos -338\n  ypos -635\n }\npush $Nb6719f70\n Multiply {\n  channels rgb\n  value {{parent.DiffuseColor.r} {parent.DiffuseColor.g} {parent.DiffuseColor.b} {parent.affectDiffuseAlpha==0?1:((parent.DiffuseColor.r+parent.DiffuseColor.g+parent.DiffuseColor.b)/3)}}\n  name DiffuseColor\n  label \"\\[value value]\"\n  xpos -341\n  ypos -571\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyDiffAlpha\n  xpos -227\n  ypos -581\n  disable {{parent.affectDiffuseAlpha==0?1:0}}\n }\npush $Nb728d1c0\n Dot {\n  name Dot59\n  xpos -85\n  ypos -1914\n }\n Expression {\n  channel0 rgba\n  expr0 0\n  name BlackExpression\n  label \"RGBA = 0\"\n  xpos -119\n  ypos -1845\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge_DIFFUSE\n  xpos -119\n  ypos -575\n  disable {{parent.enableDiffuse==0?1:0}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge_SPEC\n  xpos -119\n  ypos -461\n  disable {{parent.enableSpec==0?1:0}}\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name maskMultiply\n  label \"\\[value value]\"\n  xpos -119\n  ypos -292\n  disable {{parent.enableMask==0?1:0}}\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  invert_mask true\n  name postMultiply\n  label \"\\[value value]\"\n  xpos -119\n  ypos -184\n  disable {{parent.postMult==0?1:0}}\n }\n Multiply {\n  inputs 1+1\n  channels rgb\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -119\n  ypos 128\n  disable {{!parent.testRange}}\n }\n Keymix {\n  inputs 3\n  channels {rgba.red -rgba.green rgba.blue none}\n  name Keymix1\n  xpos -119\n  ypos 169\n  disable {{!parent.testRange}}\n }\n Output {\n  name Output1\n  xpos -119\n  ypos 379\n }\n Expression {\n  inputs 0\n  temp_name0 Xx\n  temp_expr0 sin(pi*(parent.X_Angle/2)/180)\n  temp_name1 Xy\n  temp_expr1 cos(pi*(parent.X_Angle/2)/180)\n  temp_name2 Yx\n  temp_expr2 sin(pi*(parent.Y_Angle/2-90)/180)\n  temp_name3 Yy\n  temp_expr3 cos(pi*(parent.Y_Angle/2-90)/180)\n  expr0 Xx*Yx\n  expr1 Xy*Yx\n  expr2 Yy\n  name specDirectionColor\n  xpos -693\n  ypos -471\n  disable true\n }\npush $Nb72b11c0\n ClipTest {\n  channels rgb\n  lower -1\n  upper 100\n  name ClipTest4\n  xpos -250\n  ypos -1703\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Rings_of_Power.gizmo",
    "content": "Group {\n name Rings_of_Power\n onCreate \"n = nuke.thisNode()\\nn.knob('outerRadius').setRange(0, 2)\\nn.knob('innerRadius').setRange(0, 2)\\nn.knob('outerBlur').setRange(0, 400)\\nn.knob('innerBlur').setRange(0, 400)\\nn.knob('noiseSize').setRange(0, 1000)\"\n tile_color 0x7f764cff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 RingsOfPower}\n addUserKnob {12 center}\n center {3334.5 1137}\n addUserKnob {22 setCenter l \"set center\" -STARTLINE T \"n = nuke.thisNode()\\nw= n.width()\\nh=n.height()\\nn\\['center'].setValue(\\[w/2,h/2])\"}\n addUserKnob {7 size R 0 400}\n size 100\n addUserKnob {7 speed R 0 2}\n speed 0.5\n addUserKnob {7 phase R -10 10}\n addUserKnob {20 radialmask l \"Radial Masks\" n 1}\n radialmask 0\n addUserKnob {26 outerMask l \"<b> <font color = turquoise>Outer Mask\" T \" \"}\n addUserKnob {6 outerRadiusCheck l toggle -STARTLINE}\n outerRadiusCheck true\n addUserKnob {14 outerRadius l radius R 0 2}\n outerRadius 0.5\n addUserKnob {41 softness T RadialOuter.softness}\n addUserKnob {41 plinear l \"perceptually linear\" -STARTLINE T RadialOuter.plinear}\n addUserKnob {41 outerBlur l blur T Blur2.size}\n addUserKnob {26 innerMask l \"<b> <font color = turquoise>Inner Mask\" T \" \"}\n addUserKnob {6 innerMaskCheck l toggle -STARTLINE}\n addUserKnob {14 innerRadius l radius R 0 2}\n innerRadius 0.21\n addUserKnob {41 softness_1 l softness T RadialInner.softness}\n addUserKnob {41 plinear_1 l \"perceptually linear\" -STARTLINE T RadialInner.plinear}\n addUserKnob {41 innerBlur l blur T Blur1.size}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 NoiseGroup l \"Noise Mask\" n 1}\n NoiseGroup 0\n addUserKnob {26 Noise l \"<b> <font color = turquoise>Noise\" T \" \"}\n addUserKnob {6 noiseCheck l \"toggle (heavy and little broken)\" -STARTLINE}\n addUserKnob {41 type T Noise2.type}\n addUserKnob {14 noiseSize l x/ysize R 0 1000}\n noiseSize 350\n addUserKnob {7 z R 0 5}\n addUserKnob {7 zSpeed R 0 4}\n addUserKnob {41 octaves T Noise2.octaves}\n addUserKnob {41 nyquist l \"clip at Nyquist limit\" T Noise2.nyquist}\n addUserKnob {41 lacunarity T Noise2.lacunarity}\n addUserKnob {41 gain T Noise2.gain}\n addUserKnob {41 gamma T Noise2.gamma}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 overscan T BBoxToFormat.overscanPercent}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Circles.mix}\n}\n NoOp {\n  inputs 0\n  name NoOp1\n  xpos 226\n  ypos -530\n  addUserKnob {20 User}\n  addUserKnob {7 speed R 0 4}\n  speed 0.25\n  addUserKnob {7 output}\n  output {{-((frame-1000)*(parent.speed/2)*50)}}\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos -319\n  ypos 117\n  number 1\n }\n Reformat {\n  inputs 0\n  format \"4096 4096 0 0 4096 4096 1 square_4k\"\n  black_outside true\n  name Reformat5\n  xpos 886\n  ypos -491\n }\n Group {\n  name BBoxToFormat1\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 886\n  ypos -433\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType Percentage\n  addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent {{parent.BBoxToFormat.outputBBox.r/4000}}\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  inputBbox 0\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset Na869eb00 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset Na869e400 [stack 0]\npush $Na869eb00\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset Na869dd00 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset Na869d600 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $Na869d600\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $Na869e400\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $Na869dd00\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N240d9d00 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N240d9d00\n  NoOp {\n   name OutputBBox1\n   selected true\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\n Expression {\n  temp_name0 gg\n  temp_expr0 (0.5+x)/(width)-.5\n  temp_name1 rr\n  temp_expr1 (0.5+y)/(height)-.5\n  temp_name2 xx\n  temp_expr2 sqrt(rr*rr+gg*gg)/(1.25*(parent.BBoxToFormat.outputBBox.r/4000))\n  temp_name3 yy\n  temp_expr3 \"atan2(x-width/2 , y-height/2 )/pi\"\n  channel0 {rgba.red -rgba.green -rgba.blue none}\n  expr0 1-(yy<0?1-abs(yy)/2:yy/2)\n  channel1 {-rgba.red rgba.green -rgba.blue none}\n  expr1 (.5-xx)*2\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 0\n  channel3 {none none none -rgba.alpha}\n  expr3 0\n  name Expression2\n  xpos 886\n  ypos -373\n  addUserKnob {20 User}\n }\n Transform {\n  translate {{-width/2} {-width/2}}\n  black_outside false\n  shutteroffset centred\n  name Transform1\n  xpos 886\n  ypos -277\n }\n Reformat {\n  inputs 0\n  format \"2048 1024 0 0 2048 1024 1 2K_LatLong\"\n  pbb true\n  name Reformat4\n  xpos 374\n  ypos -661\n }\nset N9fbfb900 [stack 0]\n Ramp {\n  p0 {{width/2} 0}\n  p1 {{width} 0}\n  name Ramp2\n  xpos 705\n  ypos -480\n }\nset N9fbfb200 [stack 0]\npush $N9fbfb900\n Ramp {\n  p0 {{width/2} 0}\n  p1 {0 0}\n  name Ramp1\n  xpos 692\n  ypos -550\n }\nset N9fbfa400 [stack 0]\npush $N9fbfb200\npush $N9fbfa400\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 512\n  ypos -529\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\npush $N9fbfb900\n Noise {\n  inputs 1+1\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  invert_mask true\n  size {{parent.noiseSize*(parent.size/50)}}\n  zoffset {{((frame*parent.zSpeed)*.1)+parent.z}}\n  translate {0 {parent.NoOp1.output}}\n  scale {-1 1}\n  name Noise2\n  xpos 374\n  ypos -529\n }\n Noise {\n  inputs 1+1\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  type {{parent.Noise2.type}}\n  size {{parent.Noise2.size}}\n  zoffset {{parent.Noise2.zoffset}}\n  octaves {{parent.Noise2.octaves}}\n  lacunarity {{parent.Noise2.lacunarity}}\n  gain {{parent.Noise2.gain}}\n  gamma {{parent.Noise2.gamma}}\n  translate {{-width/2} {parent.NoOp1.output}}\n  name Noise3\n  xpos 374\n  ypos -460\n }\n Noise {\n  inputs 1+1\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  type {{parent.Noise2.type}}\n  size {{parent.Noise2.size}}\n  zoffset {{parent.Noise2.zoffset}}\n  octaves {{parent.Noise2.octaves}}\n  lacunarity {{parent.Noise2.lacunarity}}\n  gain {{parent.Noise2.gain}}\n  gamma {{parent.Noise2.gamma}}\n  translate {{width/2} {parent.NoOp1.output}}\n  name Noise1\n  xpos 374\n  ypos -390\n }\n STMap {\n  inputs 2\n  channels {rgba.red -rgba.green rgba.blue none}\n  uv rgba\n  name STMap2\n  xpos 374\n  ypos -277\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 374\n  ypos -192\n }\n Transform {\n  translate {{parent.center.x} {parent.center.y}}\n  shutteroffset centred\n  name Transform2\n  xpos 374\n  ypos -147\n }\n Reformat {\n  type \"to box\"\n  box_width {{parent.BBoxToFormat.inputFormat.r}}\n  box_height {{parent.BBoxToFormat.inputFormat.t}}\n  resize none\n  center false\n  pbb true\n  name Reformat1\n  xpos 374\n  ypos -103\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 408\n  ypos -26\n }\n Grade {\n  multiply 2\n  white_clamp true\n  name Grade1\n  xpos -127\n  ypos -30\n }\n Input {\n  inputs 0\n  name Input\n  xpos -489\n  ypos -775\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos -489\n  ypos -651\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType Percentage\n  addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent 1\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N923e9d00 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N923e9600 [stack 0]\npush $N923e9d00\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N923e8f00 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N923e8800 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $N923e8800\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N923e9600\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N923e8f00\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N7733cf00 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N7733cf00\n  NoOp {\n   name OutputBBox1\n   selected true\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -489\n  ypos -582\n }\n Fill {\n  color 0\n  name Fill1\n  xpos -489\n  ypos -556\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -455\n  ypos -492\n }\nset N7acea400 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -344\n  ypos -492\n }\nset N7ace9d00 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -222\n  ypos -492\n }\nset N7ace9600 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -81\n  ypos -492\n }\n Radial {\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  cliptype none\n  replace true\n  area {{\"parent.center.x-(1+( (width/2)* outerRadius.w) )\"} {\"parent.center.y-(1+( (width/2)* outerRadius.h) )\"} {\"parent.center.x+(1+( (width/2)* outerRadius.w) )\"} {\"parent.center.y+(1+( (width/2)* outerRadius.h) )\"}}\n  name RadialOuter\n  xpos -115\n  ypos -400\n }\n Blur {\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Blur2\n  label \"\\[value size]\"\n  xpos -115\n  ypos -342\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -81\n  ypos -191\n }\npush $N7ace9600\n Radial {\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  cliptype none\n  replace true\n  invert_mask true\n  area {{\"parent.center.x-(1+( (width/2)* innerRadius.w) )\"} {\"parent.center.y-(1+( (width/2)* innerRadius.h) )\"} {\"parent.center.x+(1+( (width/2)* innerRadius.w) )\"} {\"parent.center.y+(1+( (width/2)* innerRadius.h) )\"}}\n  softness 0.65\n  name RadialInner\n  xpos -256\n  ypos -400\n }\n Blur {\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Blur1\n  label \"\\[value size]\"\n  xpos -256\n  ypos -340\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -222\n  ypos -263\n }\npush $N7ace9d00\n Expression {\n  expr0 \"clamp (sin( phase+((frame-1000)*speed) - (hypot( x-center.x, y-center.y ) / size ) ) )\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Circles\n  xpos -378\n  ypos -397\n  addUserKnob {20 User}\n  addUserKnob {7 size R 0 10}\n  size {{(width/4367*parent.size)}}\n  addUserKnob {12 center}\n  center {{parent.center.x} {parent.center.y}}\n  addUserKnob {7 phase R -100 100}\n  phase {{parent.phase}}\n  addUserKnob {7 speed R 0 4}\n  speed {{parent.speed}}\n }\n Multiply {\n  inputs 1+1\n  channels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos -378\n  ypos -273\n  disable {{!parent.innerMaskCheck}}\n }\n Multiply {\n  inputs 1+1\n  channels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  value 0\n  invert_mask true\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -378\n  ypos -201\n  disable {{!parent.outerRadiusCheck}}\n }\n Multiply {\n  inputs 1+1\n  channels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  value 0\n  maskChannelMask rgba.red\n  invert_mask true\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -378\n  ypos -36\n  disable {{!parent.noiseCheck}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  tile_color 0x93000000\n  note_font_size 22\n  note_font_color 0xffffffff\n  xpos -378\n  ypos 69\n }\npush $N7acea400\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  selected true\n  xpos -489\n  ypos 117\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\npush $N7acea400\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -565\n  ypos -492\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -565\n  ypos 188\n }\n Switch {\n  inputs 2\n  which {{\"parent.size == 0 || parent.outerRadius == 0 || parent.Circles.mix == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -489\n  ypos 178\n }\n Output {\n  name Output1\n  xpos -489\n  ypos 380\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateMatrix4.gizmo",
    "content": "Group {\n name RotateMatrix4_\n addUserKnob {20 Matrix4x4_Rotate}\n addUserKnob {4 rotation_unit l \"rotation unit\" M {radians degrees}}\n rotation_unit degrees\n addUserKnob {41 rot_order l \"rotation order\" T Axis1.rot_order}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0xaaaaaa00\n  label Rx\n  note_font_size 42\n  xpos 505\n  ypos 349\n  bdwidth 215\n  bdheight 180\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0xaaaaaa00\n  label Ry\n  note_font_size 42\n  xpos 980\n  ypos 346\n  bdwidth 215\n  bdheight 180\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0xaaaaaa00\n  label Rz\n  note_font_size 42\n  xpos 1495\n  ypos 344\n  bdwidth 215\n  bdheight 180\n }\n Input {\n  inputs 0\n  name vector\n  xpos 664\n  ypos 156\n  number 1\n }\n Expression {\n  expr0 radians(r)\n  expr1 radians(g)\n  expr2 radians(b)\n  expr3 radians(a)\n  name Expression1\n  xpos 664\n  ypos 201\n  disable {{1-parent.rotation_unit}}\n }\n Dot {\n  name Dot1\n  xpos 698\n  ypos 251\n }\nset Nc4142d10 [stack 0]\n Dot {\n  name Dot3\n  xpos 698\n  ypos 432\n }\nset N502e3990 [stack 0]\npush $N502e3990\npush $N502e3990\npush $N502e3990\n Input {\n  inputs 0\n  name matrix\n  xpos 344\n  ypos 161\n }\n Dot {\n  name Dot6\n  xpos 378\n  ypos 296\n }\nset N42f3b530 [stack 0]\n Dot {\n  name Dot7\n  xpos 549\n  ypos 296\n }\nset N52e82690 [stack 0]\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 1\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 0\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 0\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 0\n  name MergeExpression9\n  xpos 515\n  ypos 429\n }\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 0\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 cos(Ar)\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 -sin(Ar)\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 0\n  name MergeExpression10\n  xpos 515\n  ypos 453\n }\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 0\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 sin(Ar)\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 cos(Ar)\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 0\n  name MergeExpression11\n  xpos 515\n  ypos 477\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 0\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 0\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 0\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 1\n  name MergeExpression12\n  xpos 515\n  ypos 501\n }\n NoOp {\n  name X\n  tile_color 0xff0000ff\n  xpos 515\n  ypos 542\n }\n Dot {\n  name Dot12\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 773\n }\nset N3b3a7680 [stack 0]\n Dot {\n  name Dot16\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 907\n }\nset N3f7deff0 [stack 0]\n Dot {\n  name Dot21\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 1101\n }\nset N3f7e3a90 [stack 0]\n Dot {\n  name Dot31\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 1309\n }\nset N3f7e80f0 [stack 0]\n Dot {\n  name Dot35\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 1414\n }\nset N1f1e44d0 [stack 0]\n Dot {\n  name Dot41\n  tile_color 0xff0000ff\n  xpos 549\n  ypos 1621\n }\npush $Nc4142d10\n Dot {\n  name Dot4\n  xpos 1173\n  ypos 251\n }\nset N1f1ed880 [stack 0]\n Dot {\n  name Dot2\n  xpos 1173\n  ypos 429\n }\nset N1f1f21d0 [stack 0]\npush $N1f1f21d0\npush $N1f1f21d0\npush $N1f1f21d0\npush $N52e82690\n Dot {\n  name Dot8\n  xpos 1024\n  ypos 296\n }\nset N1f1f6780 [stack 0]\n MergeExpression {\n  inputs 2\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 cos(Ag)\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 0\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 sin(Ag)\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 0\n  name MergeExpression13\n  xpos 990\n  ypos 426\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 0\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 1\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 0\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 0\n  name MergeExpression14\n  xpos 990\n  ypos 450\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 -sin(Ag)\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 0\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 cos(Ag)\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 0\n  name MergeExpression15\n  xpos 990\n  ypos 472\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 0\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 0\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 0\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 1\n  name MergeExpression16\n  xpos 990\n  ypos 498\n }\n NoOp {\n  name Y\n  tile_color 0xff00ff\n  xpos 990\n  ypos 532\n }\n Dot {\n  name Dot13\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 813\n }\nset N3af3db80 [stack 0]\n Dot {\n  name Dot18\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 988\n }\nset N3af426d0 [stack 0]\n Dot {\n  name Dot26\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 1061\n }\nset N3af46fe0 [stack 0]\n Dot {\n  name Dot29\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 1228\n }\nset N3af4b570 [stack 0]\n Dot {\n  name Dot36\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 1455\n }\nset N3af50110 [stack 0]\n Dot {\n  name Dot40\n  tile_color 0xff00ff\n  xpos 1024\n  ypos 1580\n }\npush $N42f3b530\n Dot {\n  name Dot10\n  tile_color 0xcccccc00\n  xpos 378\n  ypos 633\n }\n Dot {\n  name Dot11\n  tile_color 0xcccccc00\n  xpos 460\n  ypos 633\n }\nset N3af5dd10 [stack 0]\n Dot {\n  name Dot15\n  tile_color 0xcccccc00\n  xpos 694\n  ypos 633\n }\nset N3af62610 [stack 0]\n Dot {\n  name Dot20\n  tile_color 0xcccccc00\n  xpos 859\n  ypos 633\n }\nset N3af66c10 [stack 0]\n Dot {\n  name Dot28\n  tile_color 0xcccccc00\n  xpos 1150\n  ypos 633\n }\nset N3af6b420 [stack 0]\n Dot {\n  name Dot33\n  tile_color 0xcccccc00\n  xpos 1369\n  ypos 633\n }\nset N3af700a0 [stack 0]\n Dot {\n  name Dot34\n  tile_color 0xcccccc00\n  xpos 1643\n  ypos 633\n }\npush $N1f1ed880\n Dot {\n  name Dot5\n  xpos 1688\n  ypos 251\n }\n Dot {\n  name Dot22\n  xpos 1688\n  ypos 427\n }\nset N3af7d660 [stack 0]\npush $N3af7d660\npush $N3af7d660\npush $N3af7d660\npush $N1f1f6780\n Dot {\n  name Dot9\n  xpos 1539\n  ypos 296\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 cos(Ab)\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 -sin(Ab)\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 0\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 0\n  name MergeExpression17\n  xpos 1505\n  ypos 424\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 sin(Ab)\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 cos(Ab)\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 0\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 0\n  name MergeExpression18\n  xpos 1505\n  ypos 448\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 0\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 0\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 1\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 0\n  name MergeExpression19\n  xpos 1505\n  ypos 472\n }\n MergeExpression {\n  inputs 2\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 0\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 0\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 0\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 1\n  name MergeExpression20\n  xpos 1505\n  ypos 496\n }\n NoOp {\n  name Z\n  tile_color 0xffff\n  xpos 1505\n  ypos 540\n }\n Dot {\n  name Dot17\n  tile_color 0xffff\n  xpos 1539\n  ypos 788\n }\n Dot {\n  name Dot14\n  tile_color 0xffff\n  xpos 1539\n  ypos 854\n }\nset N3ae440a0 [stack 0]\n Dot {\n  name Dot19\n  tile_color 0xffff\n  xpos 1539\n  ypos 947\n }\nset N3ae48990 [stack 0]\n Dot {\n  name Dot27\n  tile_color 0xffff\n  xpos 1539\n  ypos 1142\n }\nset N3ae4cd90 [stack 0]\n Dot {\n  name Dot30\n  tile_color 0xffff\n  xpos 1539\n  ypos 1268\n }\nset N3ae51b90 [stack 0]\n Dot {\n  name Dot37\n  tile_color 0xffff\n  xpos 1539\n  ypos 1374\n }\nset N3ae56460 [stack 0]\n Dot {\n  name Dot39\n  tile_color 0xffff\n  xpos 1539\n  ypos 1540\n }\n Group {\n  inputs 2\n  name ProductMatrix4_15\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1609\n  ypos 1537\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3ae6c2d0 [stack 0]\npush $N3ae6c2d0\npush $N3ae6c2d0\npush $N3ae6c2d0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_16\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1609\n  ypos 1577\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N5c7002b0 [stack 0]\npush $N5c7002b0\npush $N5c7002b0\npush $N5c7002b0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_17\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1609\n  ypos 1618\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N5c74f310 [stack 0]\npush $N5c74f310\npush $N5c74f310\npush $N5c74f310\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot42\n  tile_color 0xcccccc00\n  xpos 1643\n  ypos 1796\n }\npush $N3af50110\npush $N1f1e44d0\npush $N3af700a0\npush $N3ae56460\n Group {\n  inputs 2\n  name ProductMatrix4_12\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1335\n  ypos 1371\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3ad61c90 [stack 0]\npush $N3ad61c90\npush $N3ad61c90\npush $N3ad61c90\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_13\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1335\n  ypos 1411\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3ac30d80 [stack 0]\npush $N3ac30d80\npush $N3ac30d80\npush $N3ac30d80\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_14\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1335\n  ypos 1452\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3ac7fed0 [stack 0]\npush $N3ac7fed0\npush $N3ac7fed0\npush $N3ac7fed0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot38\n  tile_color 0xcccccc00\n  xpos 1369\n  ypos 1791\n }\npush $N3f7e80f0\npush $N3ae51b90\npush $N3af6b420\npush $N3af4b570\n Group {\n  inputs 2\n  name ProductMatrix4_9\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1116\n  ypos 1225\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3ab53a90 [stack 0]\npush $N3ab53a90\npush $N3ab53a90\npush $N3ab53a90\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_10\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1116\n  ypos 1265\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3aba2cf0 [stack 0]\npush $N3aba2cf0\npush $N3aba2cf0\npush $N3aba2cf0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_11\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 1116\n  ypos 1306\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3aa71bf0 [stack 0]\npush $N3aa71bf0\npush $N3aa71bf0\npush $N3aa71bf0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot32\n  tile_color 0xcccccc00\n  xpos 1150\n  ypos 1788\n }\npush $N3ae4cd90\npush $N3f7e3a90\npush $N3af66c10\npush $N3af46fe0\n Group {\n  inputs 2\n  name ProductMatrix4_6\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 825\n  ypos 1058\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a9455e0 [stack 0]\npush $N3a9455e0\npush $N3a9455e0\npush $N3a9455e0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_7\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 825\n  ypos 1098\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a994610 [stack 0]\npush $N3a994610\npush $N3a994610\npush $N3a994610\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_8\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 825\n  ypos 1139\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a8636e0 [stack 0]\npush $N3a8636e0\npush $N3a8636e0\npush $N3a8636e0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot25\n  tile_color 0xcccccc00\n  xpos 859\n  ypos 1801\n }\npush $N3af426d0\npush $N3ae48990\npush $N3af62610\npush $N3f7deff0\n Group {\n  inputs 2\n  name ProductMatrix4_3\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 660\n  ypos 904\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a737030 [stack 0]\npush $N3a737030\npush $N3a737030\npush $N3a737030\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_4\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 660\n  ypos 944\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a786160 [stack 0]\npush $N3a786160\npush $N3a786160\npush $N3a786160\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_5\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 660\n  ypos 985\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a6551e0 [stack 0]\npush $N3a6551e0\npush $N3a6551e0\npush $N3a6551e0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot24\n  tile_color 0xcccccc00\n  xpos 694\n  ypos 1802\n }\npush $N3ae440a0\npush $N3af3db80\npush $N3af5dd10\npush $N3b3a7680\n Group {\n  inputs 2\n  name ProductMatrix4_\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 426\n  ypos 770\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a528b40 [stack 0]\npush $N3a528b40\npush $N3a528b40\npush $N3a528b40\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_1\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 426\n  ypos 810\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a577c40 [stack 0]\npush $N3a577c40\npush $N3a577c40\npush $N3a577c40\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Group {\n  inputs 2\n  name ProductMatrix4_2\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 426\n  ypos 851\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N3a446bf0 [stack 0]\npush $N3a446bf0\npush $N3a446bf0\npush $N3a446bf0\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Dot {\n  name Dot23\n  tile_color 0xcccccc00\n  xpos 460\n  ypos 1794\n }\n Switch {\n  inputs 6\n  which {{parent.rot_order}}\n  name Switch1\n  xpos 937\n  ypos 1948\n }\n Output {\n  name Output1\n  xpos 937\n  ypos 2058\n }\n Axis2 {\n  inputs 0\n  name Axis1\n  label \"Only used for rotation order knob\"\n  xpos 98\n  ypos 187\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateVector2.gizmo",
    "content": "Group {\n name RotateVector2_\n help \"Rotate a 2D vector on the same 2D plane.\"\n knobChanged \"\\nnode = nuke.thisNode()\\nknob = nuke.thisKnob()\\nif knob.name() == \\\"mode\\\":\\n    if knob.value() == \\\"Knob (Degrees 0-360)\\\":\\n        node\\['angle'].setEnabled(True)\\n    else:\\n        node\\['angle'].setEnabled(False)\\n\"\n addUserKnob {20 main_tab l \"Rotate Vector2\"}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {4 mode l \"Rotate by\" t \"Pick whether to rotate the input vector by:\\nKnob (Degrees 0-360)\\nAngle Map (Degrees 0-360)\\nAngle Map (Degrees 0-1)\\nAngle Map (Radians)\\n\\nAn Angle map is a single channel image (expected in red channel) that represents an angle value at each pixel.\" M {\"Knob (Degrees 0-360)\" \"Angle Map (Degrees 0-360)\" \"Angle Map (Degrees 0-1)\" \"Angle Map (Radians)\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {7 angle l Angle R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name angleMap\n  xpos 479\n  ypos 5\n  number 1\n }\n Multiply {\n  channels rgb\n  value 360\n  name Multiply_360\n  xpos 479\n  ypos 90\n  disable {{parent.mode!=2}}\n }\n Expression {\n  expr0 radians(r)\n  name Degrees_to_Radians\n  xpos 479\n  ypos 132\n  disable {{parent.mode==3}}\n }\n Dot {\n  name Dot5\n  tile_color 0xcccccc00\n  xpos 513\n  ypos 249\n }\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 108\n }\nset N8a49d10 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 140\n  ypos 104\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 140\n  ypos 130\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 174\n  ypos 181\n }\nset N31f4270 [stack 0]\n Dot {\n  name Dot4\n  tile_color 0x9e3c6300\n  xpos 372\n  ypos 181\n }\n MergeExpression {\n  inputs 2\n  expr0 \"Br * cos(Ar) - Bg * sin(Ar)\"\n  expr1 \"Br * sin(Ar) + Bg * cos(Ar)\"\n  name MergeExpression1\n  xpos 338\n  ypos 245\n }\n Dot {\n  name Dot6\n  tile_color 0x4b5ec600\n  xpos 372\n  ypos 311\n }\npush $N31f4270\n Expression {\n  temp_name0 angleRad\n  temp_expr0 radians(parent.angle)\n  expr0 \"r * cos(angleRad) - g * sin(angleRad)\"\n  expr1 \"r * sin(angleRad) + g * cos(angleRad)\"\n  name Rotation\n  xpos 140\n  ypos 240\n }\n Switch {\n  inputs 2\n  which {{parent.mode!=0}}\n  name Switch1\n  xpos 140\n  ypos 307\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 174\n  ypos 364\n }\npush $N8a49d10\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 360\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 506\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateVector3.gizmo",
    "content": "Group {\n name RotateVector3_\n help \"Rotate a Vector3 in 3 dimensions.\"\n knobChanged \"node = nuke.thisNode()\\nknob = nuke.thisKnob()\\nif knob.name() == \\\"mode\\\":\\n    if knob.value() == \\\"Knob\\\":\\n        node\\['rotate'].setEnabled(True)\\n        node\\['rot_order'].setEnabled(True)\\n    else:\\n        node\\['rotate'].setEnabled(False)\\n        node\\['rot_order'].setEnabled(False)\\n\"\n addUserKnob {20 main_tab l RotateVector3}\n addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n addUserKnob {4 mode l \"Rotate by\" t \"Either control the rotation by the knob present on this node, or via the Matrix input.\" M {Knob \"Pixel Matrix\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {4 rot_order l \"rotation order\" t \"Specifies the order to apply euler angles to the rotation.\" M {XYZ XZY YXZ YZX ZXY ZYX \"\" \"\" \"\"}}\n rot_order ZXY\n addUserKnob {13 rotate}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos 0\n  ypos -30\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos 72\n }\nset N101e6610 [stack 0]\n Shuffle {\n  name vector_layer\n  xpos 366\n  ypos 68\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 366\n  ypos 94\n }\n Dot {\n  name Dot3\n  tile_color 0x9e3c6300\n  xpos 400\n  ypos 156\n }\nset N102036e0 [stack 0]\n Dot {\n  name Dot6\n  tile_color 0x9e3c6300\n  xpos 220\n  ypos 156\n }\n Group {\n  name Magnitude_Vector3_\n  help \"Calculate the magnitude (scalar) of an input Vector3.\"\n  xpos 186\n  ypos 231\n  addUserKnob {20 main_tab l \"Magnitude Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N10219760 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 140\n   ypos 227\n  }\n  Dot {\n   name Dot2\n   tile_color 0xcccccc00\n   xpos 174\n   ypos 364\n  }\npush $N10219760\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.vector_layer.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  xpos 220\n  ypos 529\n }\npush $N102036e0\n Dot {\n  name Dot4\n  tile_color 0x9e3c6300\n  xpos 556\n  ypos 156\n }\nset N10261db0 [stack 0]\n Input {\n  inputs 0\n  name matrix\n  xpos 614\n  ypos -30\n  number 1\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 614\n  ypos 152\n }\npush $N10261db0\n Dot {\n  name Dot5\n  tile_color 0x9e3c6300\n  xpos 556\n  ypos 198\n }\n Group {\n  inputs 2\n  name MultiplyVector3Matrix3_2\n  help \"Multiply (transform) a Vector3 by a Matrix3. This is the equivalent of applying Rotation/Scale/Skew from a Matrix to the vector.\\nA Matrix4 can be used, but the last row/column will be ignored.\"\n  xpos 614\n  ypos 195\n  addUserKnob {20 main_tab l \"Mutiply Vector3 Matrix3\"}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name InputMatrix3\n   xpos 402\n   ypos 7\n   number 1\n  }\n  Dot {\n   name Dot3\n   tile_color 0xcccccc00\n   xpos 436\n   ypos 62\n  }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n  Shuffle {\n   in matrix0\n   name Shuffle1\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 402\n   ypos 109\n  }\nset N102888a0 [stack 0]\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n  Shuffle {\n   in matrix1\n   name Shuffle2\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 402\n   ypos 147\n  }\nset N10298df0 [stack 0]\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n  Shuffle {\n   in matrix2\n   name Shuffle3\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 402\n   ypos 185\n  }\nset N102a9320 [stack 0]\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n  Shuffle {\n   in matrix3\n   name Shuffle4\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 402\n   ypos 223\n  }\npush $N102a9320\n  Dot {\n   name Dot7\n   tile_color 0x9e3c6300\n   xpos 343\n   ypos 195\n  }\npush $N10298df0\n  Dot {\n   name Dot6\n   tile_color 0x9e3c6300\n   xpos 343\n   ypos 157\n  }\npush $N102888a0\n  Dot {\n   name Dot5\n   tile_color 0x9e3c6300\n   xpos 343\n   ypos 119\n  }\n  Input {\n   inputs 0\n   name InputVector3\n   xpos 219\n   ypos 8\n  }\n  Dot {\n   name Dot4\n   tile_color 0xcccccc00\n   xpos 253\n   ypos 115\n  }\n  BlinkScript {\n   inputs 4\n   recompileCount 12\n   ProgramGroup 1\n   KernelDescription \"2 \\\"TransformVector3byMatrix3\\\" iterate pixelWise 156e29276da8287b847626148a2a784d9969b7d1a3ad81e28187d00a7aaafaca 5 \\\"src\\\" Read Point \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"dst\\\" Write Point 0 0 0\"\n   kernelSource \"kernel TransformVector3byMatrix3 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(src) input = src();\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float3x3  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n\\n    // Multiply the Matrix and the Vector\\n    float3 vector(input.x, input.y, input.z);\\n    vector = matrix*vector;\\n\\n    // Write the result to the output image\\n    dst() = float4(vector.x, vector.y, vector.z, input.w);\\n  \\}\\n\\};\\n\"\n   rebuild \"\"\n   rebuild_finalise \"\"\n   name BlinkScript1\n   xpos 219\n   ypos 223\n  }\n  Output {\n   name Output1\n   xpos 219\n   ypos 323\n  }\n end_group\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 648\n  ypos 364\n }\npush $N102036e0\n ColorMatrix {\n  matrix {\n      {{Axis1.world_matrix.0} {Axis1.world_matrix.1} {Axis1.world_matrix.2}}\n      {{Axis1.world_matrix.4} {Axis1.world_matrix.5} {Axis1.world_matrix.6}}\n      {{Axis1.world_matrix.8} {Axis1.world_matrix.9} {Axis1.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 366\n  ypos 269\n }\n Switch {\n  inputs 2\n  which {{parent.mode}}\n  name Switch1\n  xpos 366\n  ypos 360\n }\n Group {\n  name NormalizeVector3_\n  help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n  xpos 366\n  ypos 450\n  addUserKnob {20 main_tab l \"Normalize Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N1031bd80 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 174\n   ypos 156\n  }\nset N10338e50 [stack 0]\npush $N10338e50\n  Dot {\n   name Dot4\n   tile_color 0x9e3c6300\n   xpos 377\n   ypos 156\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 343\n   ypos 209\n  }\n  Dot {\n   name Dot5\n   tile_color 0xcccccc00\n   xpos 377\n   ypos 271\n  }\n  Merge2 {\n   inputs 2\n   operation divide\n   bbox B\n   name Merge1\n   xpos 140\n   ypos 267\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N1031bd80\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.vector_layer.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge1\n  xpos 366\n  ypos 525\n }\n Dot {\n  name Dot8\n  tile_color 0x4b5ec600\n  xpos 400\n  ypos 601\n }\npush $N101e6610\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  out {{{parent.vector_layer.in}}}\n  name ShuffleCopy1\n  xpos 0\n  ypos 597\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 671\n }\n Axis2 {\n  inputs 0\n  rot_order {{parent.rot_order x1 2}}\n  rotate {{parent.rotate.x} {parent.rotate.y} {parent.rotate.z}}\n  name Axis1\n  xpos 471\n  ypos 252\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoCentroid.gizmo",
    "content": "Group {\n name RotoCentroid\n tile_color 0x70ff66ff\n selected true\n addUserKnob {20 RotoCentroid}\n addUserKnob {12 centroid}\n centroid {1054.860665 666.3638309}\n addUserKnob {68 rotoshape M {Ellipse1}}\n addUserKnob {3 samples}\n samples 1000\n addUserKnob {7 _calc l INVISIBLE +INVISIBLE}\n _calc {{\"\\[python -execlocal n=nuke.thisNode()\\\\n\\\\ntry:\\\\n\\\\ \\\\ \\\\ \\\\ #\\\\ Setup\\\\ input\\\\ shape\\\\ names\\\\n\\\\ \\\\ \\\\ \\\\ rs\\\\ =\\\\ n\\\\\\[\\\\\\\"rotoshape\\\\\\\"\\\\]\\\\n\\\\ \\\\ \\\\ \\\\ rs_v\\\\ =\\\\ rs.value()\\\\n\\\\ \\\\ \\\\ \\\\ shpl\\\\ =\\\\ \\\\\\[\\\\]\\\\n\\\\ \\\\ \\\\ \\\\ rotos=n.input(0)\\\\n\\\\ \\\\ \\\\ \\\\ curves=rotos\\\\\\[\\\\\\\"curves\\\\\\\"\\\\].rootLayer\\\\n\\\\ \\\\ \\\\ \\\\ for\\\\ c\\\\ in\\\\ curves:\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ shpl.append(c.name)\\\\n\\\\ \\\\ \\\\ \\\\ rs.setValues(shpl)\\\\n\\\\ \\\\ \\\\ \\\\ rs.setValue(rs_v)\\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ ev\\\\ =\\\\ rotos\\\\\\[\\\\\\\"curves\\\\\\\"\\\\].toElement(rs_v).evaluate(0,nuke.frame())\\\\n\\\\ \\\\ \\\\ \\\\ samples\\\\ =\\\\ n\\\\\\[\\\\\\\"samples\\\\\\\"\\\\].value()\\\\n\\\\ \\\\ \\\\ \\\\ nsamp\\\\ =\\\\ int(samples)\\\\n\\\\ \\\\ \\\\ \\\\ pts\\\\ =\\\\ \\\\\\[list(ev.getPoint(i/samples))\\\\\\[:2\\\\]\\\\ for\\\\ i\\\\ in\\\\ range(nsamp)\\\\]\\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ def\\\\ centroid2d(*points):\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ dist\\\\ =\\\\ lambda\\\\ a,b\\\\ :\\\\ ((b\\\\\\[0\\\\]-a\\\\\\[0\\\\])**2\\\\ +\\\\ (b\\\\\\[1\\\\]-a\\\\\\[1\\\\])**2)**0.5\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ l\\\\ =\\\\ len(points)\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ subpts\\\\ =\\\\ \\\\\\[\\\\]\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ weights\\\\ =\\\\ \\\\\\[\\\\]\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ for\\\\ i\\\\ in\\\\ range(l):\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ subpts.append(points\\\\\\[i\\\\])\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ weights.append(\\\\ dist(points\\\\\\[i\\\\],\\\\ points\\\\\\[(i+1)%l\\\\])+dist(points\\\\\\[i\\\\],\\\\ points\\\\\\[(i-1)%l\\\\])\\\\ )\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ nweight\\\\ =\\\\ sum(weights)\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ rx\\\\ =\\\\ 0.0\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ ry\\\\ =\\\\ 0.0\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ for\\\\ i\\\\ in\\\\ range(l):\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ w\\\\ =\\\\ weights\\\\\\[i\\\\]/nweight\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ rx\\\\ +=\\\\ subpts\\\\\\[i\\\\]\\\\\\[0\\\\]*w\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ ry\\\\ +=\\\\ subpts\\\\\\[i\\\\]\\\\\\[1\\\\]*w\\\\n\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ return\\\\ rx,ry\\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ cent\\\\ =\\\\ centroid2d(*pts)\\\\n\\\\ \\\\ \\\\ \\\\ \\\\n\\\\ \\\\ \\\\ \\\\ n\\\\\\[\\\\\\\"centroid\\\\\\\"\\\\].setValue(cent\\\\\\[0\\\\],0)\\\\n\\\\ \\\\ \\\\ \\\\ n\\\\\\[\\\\\\\"centroid\\\\\\\"\\\\].setValue(cent\\\\\\[1\\\\],1)\\\\nexcept:pass\\\\nret=0\\\\n]\"}}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 0\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoPaintTransform.gizmo",
    "content": "Group {\n name RotoPaint_Transform\n onCreate \"n = nuke.thisNode()\\nn\\['format'].setFlag(nuke.DISABLED)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\n#works only if knob 'operation' is changing.\\nif ('operation' in k.name()):\\n    if(k.getValue()==0):\\n        n\\['UV_offset'].setVisible(False)\\n        n\\['UV_scale'].setVisible(False)\\n        n\\['line'].setVisible(False)\\n    elif(k.getValue()==1):\\n        n\\['UV_offset'].setVisible(True)\\n        n\\['UV_scale'].setVisible(True)\\n        n\\['line'].setVisible(True)\\nelif ('output_1' in k.name()):\\n    if(k.getValue()==0):\\n        n\\['operation'].setVisible(True)\\n        n\\['filter'].setVisible(True)\\n    elif(k.getValue()==1):\\n        n\\['operation'].setVisible(False)\\n        n\\['filter'].setVisible(False)\\n    elif(k.getValue()==2):\\n        n\\['operation'].setVisible(False)\\n        n\\['filter'].setVisible(False)\\nelif ('img_format' in k.name()):\\n    if(k.getValue()==0):\\n        n\\['format'].clearFlag(nuke.DISABLED)\\n    elif(k.getValue()==1):\\n        n\\['format'].setFlag(nuke.DISABLED)\"\n tile_color 0xa57aaa00\n note_font \"Verdana Bold\"\n selected true\n addUserKnob {20 Parameters}\n addUserKnob {26 instructions l \"\" +STARTLINE T \"<i>Click the button 'Select brush' below to select the right brush.<br/> Paint to move the elements<br/>\\nClose the Properties to disable the node with D\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 output_2 l \"<b><font color=\\\"dodgerblue\\\">OUTPUT\"}\n addUserKnob {41 channels T STMap37.channels}\n addUserKnob {41 format T Constant1.format}\n addUserKnob {6 img_format l \"format from img\" -STARTLINE}\n img_format true\n addUserKnob {7 overscan R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {4 output t \"Select which output you want to have: the final result with the distortion, the UV Map or the Vector Map to use with the iDistort node\" M {\"Final Result\" \"UV Map\" Vector \"\" \"\" \"\"}}\n addUserKnob {4 operation t \"Choose between\\n- UVMap\\n- Vector distort\\n\\nThe UVMap is without any control, the vector distort is used with the iDistort node, so you can also control the distortion with knobs Offset and Scale.\" M {\"UV Map\" Vector \"\"}}\n addUserKnob {4 filter M {Impulse Cubic Keys Simon Rifman Mitchell Parzen Notch Lanczos4 Lanczos6 Sinc4}}\n filter Cubic\n addUserKnob {26 line l \"\" +STARTLINE +HIDDEN}\n addUserKnob {7 UV_offset l \"UV offset\" +HIDDEN}\n addUserKnob {7 UV_scale l \"UV scale\" +HIDDEN R 0 100}\n UV_scale 2\n addUserKnob {26 \"\"}\n addUserKnob {22 move l \"<font color=\\\"tomato\\\">Select brush\" t \"Select automatically the right brush\" T \"n = nuke.thisNode()\\nn\\['toolbox'].setValue(0)\\nn\\['toolbox'].setValue(25)\" +STARTLINE}\n addUserKnob {6 check l \"check painting\" t \"Use the checkerboard to check your paint\" -STARTLINE}\n addUserKnob {41 size l smooth t \"Smooth the paint\" T Blur1.size}\n addUserKnob {26 paint l \"<b><font color=\\\"lightgreen\\\">PAINT\"}\n addUserKnob {41 opacity l INVISIBLE +INVISIBLE T RotoPaint.opacity}\n addUserKnob {41 toolbar_opacity l opacity T RotoPaint.toolbar_opacity}\n addUserKnob {41 brush_hardness l \"brush hardness\" T RotoPaint.brush_hardness}\n addUserKnob {41 brush_spacing l \"brush spacing\" T RotoPaint.brush_spacing}\n addUserKnob {26 \"\"}\n addUserKnob {20 paint_1 l \"\" +STARTLINE n 1}\n addUserKnob {41 opacity_1 l opacity T RotoPaint.opacity}\n addUserKnob {41 lifetime_type l \"lifetime type\" T RotoPaint.lifetime_type}\n addUserKnob {41 lifetime_start l from -STARTLINE T RotoPaint.lifetime_start}\n addUserKnob {41 lifetime_end l to -STARTLINE T RotoPaint.lifetime_end}\n addUserKnob {41 toolbox l \"\" +STARTLINE T RotoPaint.toolbox}\n addUserKnob {41 curves l \"\" -STARTLINE T RotoPaint.curves}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 maskChannel l \"mask channel\" T STMap37.maskChannel}\n addUserKnob {41 invert_mask l invert -STARTLINE T STMap37.invert_mask}\n addUserKnob {26 \"\"}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {20 \"\" l Transform}\n addUserKnob {41 transform T RotoPaint.transform}\n addUserKnob {41 translate T RotoPaint.translate}\n addUserKnob {41 rotate T RotoPaint.rotate}\n addUserKnob {41 scale_1 l scale T RotoPaint.scale}\n addUserKnob {41 skewX l \"skew X\" T RotoPaint.skewX}\n addUserKnob {41 skewY l \"skew Y\" T RotoPaint.skewY}\n addUserKnob {41 skew_order l \"skew order\" T RotoPaint.skew_order}\n addUserKnob {41 center T RotoPaint.center}\n addUserKnob {20 \"extra matrix\" n 2}\n \"extra matrix\" 1\n addUserKnob {41 transform_matrix l \"\" -STARTLINE T RotoPaint.transform_matrix}\n addUserKnob {20 \"\" n -1}\n addUserKnob {20 email l @}\n addUserKnob {26 message l \"\" +STARTLINE T \"<b><font color=\\\"Violet\\\">RotoPaint Transform v1.2</font></b><br>\\n<font size=“1”><i>by Andrea Geremia</i><br>\\n<br>\\nandrea.geremia89@gmail.com<br>\\nwww.andreageremia.it</font>\"}\n}\n Constant {\n  inputs 0\n  channels rgb\n  format \"2048 2048 0 0 2048 2048 1 square_2K\"\n  name Constant1\n  xpos -177\n  ypos -392\n }\n Input {\n  inputs 0\n  name img\n  xpos 179\n  ypos -505\n }\n Dot {\n  name Dot10\n  xpos 213\n  ypos -459\n }\nset N67f29800 [stack 0]\n Remove {\n  name Remove1\n  xpos -6\n  ypos -466\n }\n Switch {\n  inputs 2\n  which {{!parent.img_format}}\n  name Switch_Format\n  label \"\\[value which]\"\n  xpos -6\n  ypos -372\n }\n AdjBBox {\n  numpixels {{parent.overscan}}\n  name AdjBBox1\n  xpos -6\n  ypos -272\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+0.5)/height\n  name Expression1\n  xpos -6\n  ypos -238\n }\n Dot {\n  name Dot8\n  xpos 28\n  ypos -201\n }\nset N67f28800 [stack 0]\n Dot {\n  name Dot11\n  xpos 28\n  ypos -115\n }\nset N67f28400 [stack 0]\npush $N67f28800\n RotoPaint {\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x4493a000 x440b8000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}}}}}\n  toolbox {smear {\n  { selectAll bs 487.9 h 1 src 1 str 1 ssx 1 ssy 1 sf 1 ep1 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 180 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1034 ltm 1034 tt 17 }\n  { eraser bs 86.2 src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1033 ltm 1033 tt 18 }\n  { clone opc 0.1 bs 44.8 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 21 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 22 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 tt 23 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 24 }\n  { smear bs 487.9 h 1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 25 }\n} }\n  toolbar_brush_size 487.8999939\n  toolbar_brush_hardness 1\n  toolbar_lifetime_type single\n  toolbar_effect_parameter1 1\n  toolbar_paint_source fg\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {1024 778}\n  colorOverlay {0 0 0 0}\n  paint_source foreground\n  view {}\n  motionblur_on true\n  motionblur_shutter_offset_type centred\n  brush_type smear\n  brush_size 487.8999939\n  brush_spacing 0.05000000075\n  brush_hardness 1\n  effect_parameter1 1\n  source_black_outside true\n  name RotoPaint\n  xpos -112\n  ypos -149\n }\nset N79877c00 [stack 0]\npush $N67f28800\n Dot {\n  name Dot9\n  xpos -236\n  ypos -201\n }\n Difference {\n  inputs 2\n  gain 1000000\n  name Difference1\n  xpos -270\n  ypos -153\n }\n Dilate {\n  channels alpha\n  size {{parent.Blur1.size}}\n  name Dilate1\n  label \"\\[value size]\"\n  xpos -270\n  ypos -113\n }\npush $N79877c00\n Blur {\n  inputs 1+1\n  channels rgb\n  name Blur1\n  label \"\\[value size]\"\n  xpos -112\n  ypos -108\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -112\n  ypos -48\n }\npush $N67f28400\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge1\n  xpos -5\n  ypos -48\n }\nset N79876400 [stack 0]\n Dot {\n  name Dot2\n  xpos 28\n  ypos 9\n }\nset N79876000 [stack 0]\n Expression {\n  expr0 (r-(x+0.5)/width)*width\n  expr1 (g-(y+0.5)/height)*height\n  expr2 0\n  name Expression2\n  label \"UVMap to Vector\"\n  xpos 301\n  ypos 2\n }\nset N79875c00 [stack 0]\n Dot {\n  name Dot3\n  xpos 335\n  ypos 176\n }\npush $N79876000\n Dot {\n  name Dot1\n  xpos 28\n  ypos 176\n }\n Input {\n  inputs 0\n  name mask\n  xpos 566\n  ypos -83\n  number 1\n }\n Dot {\n  name Dot7\n  xpos 600\n  ypos -45\n }\nset N79874c00 [stack 0]\n Dot {\n  name Dot6\n  xpos 600\n  ypos 42\n }\npush $N79875c00\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 307\n  ypos -288\n }\npush $N67f29800\n Switch {\n  inputs 2\n  which {{parent.check}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 179\n  ypos -268\n }\n Dot {\n  name Dot4\n  xpos 213\n  ypos -132\n }\nset N7fbe3c00 [stack 0]\n Dot {\n  name Dot5\n  xpos 491\n  ypos -132\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  out motion\n  name ShuffleCopy1\n  xpos 457\n  ypos 6\n }\n IDistort {\n  inputs 1+1\n  channels {{{parent.STMap37.channels}}}\n  uv motion\n  uv_offset {{parent.UV_offset}}\n  uv_scale {{parent.UV_scale}}\n  maskChannel {{{parent.STMap37.maskChannel}}}\n  invert_mask {{parent.STMap37.invert_mask}}\n  filter {{STMap37.filter}}\n  name IDistort1\n  xpos 457\n  ypos 39\n }\npush $N79874c00\npush $N79876400\npush $N7fbe3c00\n STMap {\n  inputs 2+1\n  channels rgba\n  uv rgba\n  blur_scale 0\n  filter {{parent.filter}}\n  name STMap37\n  xpos 179\n  ypos -48\n }\n Switch {\n  inputs 2\n  which {{parent.operation}}\n  name Switch_operation\n  label \"\\[value which]\"\n  xpos 179\n  ypos 35\n }\n Switch {\n  inputs 3\n  which {{parent.output}}\n  name Switch_output\n  label \"\\[value which]\"\n  xpos 179\n  ypos 169\n }\n Output {\n  name Output1\n  xpos 179\n  ypos 230\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoQC.gizmo",
    "content": "set cut_paste_input [stack 0]\npush 0\npush $cut_paste_input\nGroup {\n inputs 2\n name RotoQC\n help \"matte QC tool for checking roto work, choose between different overlay modes or merge-operations to QC the roto work.\\n\\nThe node is stackable, meaning the alpha carries over and is merged properly if you stack multiple matteQC nodes together (keep matte in alpha channel must be checked). This can be used to view Red, Green and Blue mattes at the same time in RGB mode for example.\\n\\nDeveloped by Tor Andreassen - www.fxtor.net\"\n knobChanged \"if nuke.thisKnob().name()=='mode':\\n n=nuke.thisNode()\\n\\n val=n\\['mode'].value()\\n\\n if val == 'red overlay':\\n  n\\['tile_color'].setValue(0xff0000ff)\\n\\n elif val == 'green overlay':\\n  n\\['tile_color'].setValue(0x3d962bff)\\n\\n elif val == 'blue overlay':\\n  n\\['tile_color'].setValue(0x3b54b7ff)\\n\\n elif val == 'premult: grey':\\n  n\\['tile_color'].setValue(0x8e8e8eff)\\n\\n elif val == 'premult: checkerboard':\\n  n\\['tile_color'].setValue(0xf8ff00ff)\\n\\n elif val == 'premult: custom color':\\n  n\\['tile_color'].setValue(0xf8ff00ff)\\n\\n elif val == 'stencil from rgb':\\n  n\\['tile_color'].setValue(0x2c2c2cff)\\n\\n elif val == 'check core for holes':\\n  n\\['tile_color'].setValue(0xf8ff00ff)\"\n tile_color 0xff0000ff\n label \"\\[value mode]\"\n note_font Verdana\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 fxT_matteQC}\n addUserKnob {4 mode t \"pick your display mode\\n___________________________________________\\nmost modes are self explaining.\\n\\npremult agains custom color: the custom color can be set in the 'custom BG color' slider.\\n\\ncheck core for holes:\\nthis is an expression that sets the alpha to 0 if the alpha value is below 1, making it easier to see if overlapping shapes are giving you holes in the core of your matte.\" M {\"red overlay\" \"green overlay\" \"blue overlay\" \"stencil from rgb\" \"premult: grey\" \"premult: checkerboard\" \"premult: custom color\" \"check core for holes\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {7 colorOpacity l \"color opacity\" t \"this will change the overlay opacity when the mode is set to red, green, or blue overlay.\"}\n colorOpacity 0.25\n addUserKnob {41 color l \"custom BG color\" T AddCustom.value}\n addUserKnob {6 keepAlpha l \"keep matte in alpha channel\" t \"When a matte is hooked into the node, this gives you the option to keep the matte in the alpha channel.\\n\\nIf the box is uncheked, the alpha channel will replaced with a solid alpha.\" +STARTLINE}\n keepAlpha true\n addUserKnob {6 bbox l \"keep bbox\" t \"If this is checked, the bbox from the 'rgb' input will be used. Uncheck this checkbox to keep the bbox from the 'matte' input. \" -STARTLINE}\n addUserKnob {6 pipeAlpaThrough l \"pipe alpha through\" t \"This option lets you see the rgb input with alpha channel from the matte input. \\n\\nMode dropdown is ignorored to let you see the raw bg with alpha copied in.\" +STARTLINE}\n addUserKnob {6 invertMatte l \"invert matte\" t \"Click this to invert the input matte.\\n\\nPS: This will only invert the matte if overlay mode is active (red,green, or blue).\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"<font color='#454545'>// fxT_matteQC v2.4 © Tor Andreassen = www.fxtor.net</font>\"}\n addUserKnob {20 tab}\n addUserKnob {26 info l \"\" +STARTLINE T \"<font color = grey>This tool is intended for checking matte accuracy.<br />\\nThe format will default to the rgb input's format.<br /><br />\\n\\nThe node is stackable if you want to see R,G,B<br />\\noverlay at the same time over the plate.<br /><br />\\nThe alpha will carry through between stacked nodes<br />\\nif the 'keep matte in alpha channel' checkbox is checked.<br /><br />\\n\\nPS: for the alpha to carry through, the nodename<br />\\nneeds to start with 'fxT_matteQC', as it's based on regEx<br />\\nto only stack alphas from fxT_matteQC nodes.<br />\\n</font>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x505a6101\n  label \"BG COLOR OVERLAY\\ndefined by user dropdown\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -1211\n  ypos -1017\n  bdwidth 484\n  bdheight 559\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode10\n  tile_color 0x505a6101\n  label \"raw input, but pipe the alpha into the alpha-channel\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -1205\n  ypos 1031\n  bdwidth 1756\n  bdheight 170\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x505a6101\n  label \"WHEN PREMULTED AGAINST BG; USE THIS BG\\ndefined by user dropdown\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos 484\n  ypos -1173\n  bdwidth 876\n  bdheight 721\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x505a6101\n  label \"PREMULTED AGAINST RED,GREEN, BLUE OR INPUT\\ndefined by user dropdown\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -725\n  ypos -371\n  bdwidth 698\n  bdheight 551\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x505a6101\n  label \"merge with or without mix depending on mode\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -1211\n  ypos 297\n  bdwidth 1762\n  bdheight 411\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x505a6101\n  label \"BG INPUT\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos 211\n  ypos -1603\n  bdwidth 365\n  bdheight 314\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode7\n  tile_color 0x505a6101\n  label \"keep RGB input's bbox\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -1206\n  ypos 1222\n  bdwidth 1753\n  bdheight 109\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode8\n  tile_color 0x505a6101\n  label \"keep alpha\"\n  note_font \"Arial Black\"\n  note_font_size 25\n  note_font_color 0xffffff01\n  xpos -1207\n  ypos 753\n  bdwidth 1756\n  bdheight 234\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode12\n  tile_color 0x434b51ff\n  label checkerboard\n  note_font \"Arial Black\"\n  note_font_size 20\n  note_font_color 0xffffff01\n  xpos 839\n  ypos -1045\n  bdwidth 188\n  bdheight 378\n  z_order 1\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode13\n  tile_color 0x434b51ff\n  label \"custom color\"\n  note_font \"Arial Black\"\n  note_font_size 20\n  note_font_color 0xffffff01\n  xpos 1093\n  ypos -1050\n  bdwidth 174\n  bdheight 386\n  z_order 1\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0x434b51ff\n  label \"0.33 grey\"\n  note_font \"Arial Black\"\n  note_font_size 20\n  note_font_color 0xffffff01\n  xpos 576\n  ypos -1047\n  bdwidth 194\n  bdheight 380\n  z_order 1\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xa8a8a8ff\n  label \"merge alpha from previous fxT_matteQC-node if the nodes are stacked.\\nBased on regEx matching. so removing 'fxT_matteQC' from the node-name will break this\"\n  xpos -357\n  ypos 920\n }\n Input {\n  inputs 0\n  name rgb\n  label \"\\[value number]\"\n  xpos 358\n  ypos -1537\n }\nset N567ddb00 [stack 0]\n Shuffle {\n  alpha white\n  name Shuffle8\n  tile_color 0xffffffff\n  label solidAlpha\n  xpos 358\n  ypos -1348\n }\nset N3e024400 [stack 0]\n Dot {\n  name Dot15\n  xpos -1256\n  ypos -1347\n }\n Dot {\n  name Dot17\n  xpos -1256\n  ypos 1129\n }\nset N59ef5860 [stack 0]\n Dot {\n  name Dot19\n  xpos -1256\n  ypos 1271\n }\npush $N567ddb00\npush $N3e024400\n Dot {\n  name Dot9\n  xpos 383\n  ypos -870\n }\nset N18f109b0 [stack 0]\n Remove {\n  name Remove2\n  xpos 631\n  ypos -873\n }\nset N36ff6dd0 [stack 0]\npush $N36ff6dd0\n Shuffle {\n  name Shuffle6\n  label rgba\n  xpos 631\n  ypos -802\n }\nset N21fd8bd0 [stack 0]\n Add {\n  value 0.2\n  name AddCustom\n  tile_color 0x191919ff\n  label custom\n  xpos 1140\n  ypos -807\n }\n Shuffle {\n  alpha white\n  name Shuffle3\n  tile_color 0xffffffff\n  label solidAlpha\n  xpos 1140\n  ypos -744\n }\n Dot {\n  name Dot7\n  xpos 1168\n  ypos -605\n }\npush $N36ff6dd0\n Expression {\n  channel0 rgb\n  expr0 \"(floor(x/64)+floor(y/64)) % 2 == 0 ? 0.1 : 0.5\"\n  channel1 none\n  channel2 none\n  name checkerBoard\n  xpos 902\n  ypos -873\n }\n Shuffle {\n  alpha white\n  name Shuffle7\n  tile_color 0xffffffff\n  label solidAlpha\n  xpos 902\n  ypos -839\n }\n Dot {\n  name Dot5\n  xpos 930\n  ypos -629\n }\npush $N21fd8bd0\n Add {\n  channels rgba\n  value {0.33 0.33 0.33 1}\n  name Add\n  tile_color 0x8e8e8eff\n  label \"grey: .33\"\n  xpos 631\n  ypos -755\n }\n Dot {\n  name Dot4\n  xpos 659\n  ypos -623\n }\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\n Switch {\n  inputs 8\n  which {{parent.mode}}\n  name modeSwitch3\n  tile_color 0x262626ff\n  xpos 364\n  ypos -480\n }\n Dot {\n  name Dot3\n  xpos 389\n  ypos -54\n }\nset N4962a1a0 [stack 0]\n Shuffle {\n  alpha white\n  name Shuffle4\n  tile_color 0xffffffff\n  label solidAlpha\n  xpos -250\n  ypos -55\n }\n Input {\n  inputs 0\n  name matte\n  label \"\\[value number]\"\n  xpos -427\n  ypos -275\n  number 1\n }\nset N4ef04280 [stack 0]\n Invert {\n  channels alpha\n  name Invert1\n  xpos -534\n  ypos -200\n  disable {{modeSwitch01.which>3?1:0}}\n }\npush $N4ef04280\n Switch {\n  inputs 2\n  which {{parent.invertMatte}}\n  name invertMatteSwitch\n  tile_color 0x242424ff\n  xpos -427\n  ypos -194\n }\n Dot {\n  name Dot14\n  xpos -399\n  ypos -133\n }\nset N444b8130 [stack 0]\n Switch {\n  inputs 2\n  which {{!parent.autoAlphaCheck.a}}\n  name Switch1\n  tile_color 0x242424ff\n  label autoInputCheck\n  xpos -424\n  ypos -55\n }\n Expression {\n  channel0 alpha\n  expr0 a<1?0:1\n  name Expression3\n  label checkCore\n  xpos -424\n  ypos 10\n  disable {{parent.mode==7?0:1}}\n }\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\npush $N18f109b0\n Dot {\n  name Dot10\n  xpos -970\n  ypos -870\n }\n Remove {\n  name Remove1\n  xpos -998\n  ypos -773\n }\n Shuffle {\n  name Shuffle5\n  label rgba\n  xpos -998\n  ypos -709\n }\nset N32555cc0 [stack 0]\n Add {\n  value {0 0 1 1}\n  name Add3\n  tile_color 0xffff\n  xpos -899\n  ypos -648\n }\npush $N32555cc0\n Add {\n  value {0 1 0 1}\n  name Add2\n  tile_color 0xff00ff\n  xpos -998\n  ypos -648\n }\npush $N32555cc0\n Add {\n  value {1 0 0 1}\n  name Add1\n  tile_color 0xff0000ff\n  xpos -1107\n  ypos -647\n }\n Switch {\n  inputs 8\n  which {{parent.mode}}\n  name modeSwitch01\n  tile_color 0x262626ff\n  xpos -998\n  ypos -523\n }\n Dot {\n  name Dot2\n  xpos -973\n  ypos 74\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy8\n  xpos -424\n  ypos 73\n }\nset N47636810 [stack 0]\n Dot {\n  name Dot12\n  xpos -506\n  ypos 142\n }\n Dot {\n  name Dot18\n  note_font_size 50\n  xpos -506\n  ypos 800\n }\nset N19a2bbc0 [stack 0]\n Dot {\n  name Dot13\n  xpos -506\n  ypos 873\n }\n ChannelMerge {\n  inputs 2\n  name ChannelMerge1\n  xpos -196\n  ypos 863\n  disable {{\"!\\[regexp \\\"(fxT_matteQC)\\\" \\[value this.parent.input.name] ?0:1]\"}}\n }\nset N34d8a250 [stack 0]\npush $N59ef5860\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -196\n  ypos 1128\n }\npush $N19a2bbc0\n Shuffle {\n  alpha white\n  name Shuffle2\n  tile_color 0xffffffff\n  label solidAlpha\n  xpos 101\n  ypos 799\n }\npush $N34d8a250\n Switch {\n  inputs 2\n  which {{!parent.keepAlpha}}\n  name keepAlphaSwitch\n  xpos 101\n  ypos 875\n }\npush $N47636810\n Premult {\n  name Premult7\n  xpos -424\n  ypos 132\n }\n Dot {\n  name Dot1\n  xpos -399\n  ypos 412\n }\nset N21f5d6d0 [stack 0]\n Dot {\n  name Dot6\n  xpos -399\n  ypos 490\n }\nset N3e0114c0 [stack 0]\npush $N4962a1a0\n Dot {\n  name Dot8\n  xpos 224\n  ypos 230\n }\nset N4efa5a00 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 202\n  ypos 495\n }\nset N8c7f26a0 [stack 0]\npush $N8c7f26a0\npush $N8c7f26a0\npush $N8c7f26a0\npush $N3e0114c0\n Dot {\n  name Dot11\n  xpos -399\n  ypos 574\n }\npush $N4efa5a00\n Dot {\n  name Dot16\n  xpos 127\n  ypos 230\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge2\n  xpos 102\n  ypos 579\n }\npush $N21f5d6d0\npush $N4962a1a0\n Merge2 {\n  inputs 2\n  mix {{parent.colorOpacity}}\n  name Merge45\n  xpos 367\n  ypos 418\n  disable {{parent.disable}}\n }\nset N4b570570 [stack 0]\npush $N4b570570\npush $N4b570570\n Switch {\n  inputs 8\n  which {{parent.mode}}\n  name modeSwitch1\n  tile_color 0x262626ff\n  xpos 358\n  ypos 677\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 367\n  ypos 871\n }\n Switch {\n  inputs 2\n  which {{parent.pipeAlpaThrough}}\n  name pipeAlpaThroughSwitch\n  xpos 367\n  ypos 1134\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 367\n  ypos 1276\n  disable {{!parent.bbox}}\n }\n Output {\n  name Output1\n  xpos 367\n  ypos 1486\n }\npush $N444b8130\n NoOp {\n  name autoAlphaCheck\n  xpos -540\n  ypos -122\n  addUserKnob {20 autoAlphaCheck}\n  addUserKnob {6 a +STARTLINE}\n  a {{\"\\[string first \\\".a\\\" \\[channels \\[input this 0]]]>-1\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SSMesh.gizmo",
    "content": "Group {\n name SSMesh\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n data_type \"depth (normalized far=0)\"\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 10000\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N3835a2e0 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N38bec0c0 [stack 0]\n Shuffle {\n  in depth\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N38c0a4d0 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N38c0f430 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N38c14460 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N38c14460\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N38c0f430\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N38c0a4d0\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N38b56b50 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N38b56b50\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N38b951c0 [stack 0]\npush $N3835a2e0\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N38b9a030 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N38b9a030\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N38bec0c0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N38b951c0\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  firstFrame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N387e4310 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N388567f0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N388567f0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N387e4310\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_STMapToVector2.gizmo",
    "content": "Group {\n name STMapToVector2_\n help \"Transforms a distorted UV Map to Motion Vectors corresponding to the distortion.\"\n addUserKnob {20 UV_to_Vectors l \"STMap to Vector2\"}\n addUserKnob {41 in l UV_Layer t \"Select the layer containing your UV_map\" T UV_Channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -291\n  ypos -63\n }\nset Na0950a0 [stack 0]\n Shuffle {\n  name UV_Channel\n  xpos -151\n  ypos -17\n }\n Expression {\n  expr0 -x+r*width-0.5\n  expr1 -y+g*height-0.5\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name UV_to_Vectors1\n  xpos -151\n  ypos 97\n }\npush $Na0950a0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  alpha black\n  out {{{parent.UV_Channel.in}}}\n  name ShuffleCopy1\n  xpos -291\n  ypos 97\n }\n Output {\n  name Output1\n  xpos -291\n  ypos 167\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_STmapInverse.gizmo",
    "content": "Group {\n name STMapInverse\n tile_color 0x196654ff\n selected true\n addUserKnob {20 InverseSTMap}\n addUserKnob {41 in l channels T Shuffle1.in}\n addUserKnob {41 in2 l \"UV channels\" T Shuffle1.in2}\n addUserKnob {41 box_width l \"UV size\" T Reformat1.box_width}\n addUserKnob {6 fill_gap l \"Fill Gap\" +STARTLINE}\n fill_gap true\n addUserKnob {41 size -STARTLINE T Blur1.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 detail l \"point detail\" T PositionToPoints1.detail}\n addUserKnob {41 pointSize l \"point size\" T PositionToPoints1.pointSize}\n addUserKnob {26 \"\"}\n addUserKnob {32 Lookin T \"start http://www.lookinvfx.com/tools/\" +STARTLINE}\n addUserKnob {26 text l \"\" -STARTLINE T \"   in_inverseSTMap v1.0 | Luca Mignardi | 2014\"}\n}\n Camera2 {\n  inputs 0\n  translate {0.5 0.5 1}\n  projection_mode orthographic\n  focal 25\n  haperture 25\n  vaperture 25\n  near 0.5\n  far 1.5\n  name Camera1\n  xpos 93\n  ypos 157\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -58\n  ypos -118\n }\n Shuffle {\n  in2 forward\n  red red2\n  green green2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out forward\n  out2 rgba\n  name Shuffle1\n  xpos -58\n  ypos -64\n }\n Unpremult {\n  name Unpremult2\n  xpos -58\n  ypos -12\n }\n Unpremult {\n  channels forward\n  name Unpremult3\n  xpos -58\n  ypos 37\n }\nset N1e54a7c0 [stack 0]\npush $N1e54a7c0\n Shuffle {\n  in forward\n  blue black\n  alpha black\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos 64\n  ypos 37\n }\n PositionToPoints {\n  inputs 2\n  render_mode textured\n  detail 1\n  pointSize 10\n  name PositionToPoints1\n  xpos -58\n  ypos 108\n }\nset N1e55bbf0 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  box_width 1024\n  box_height {{box_width i}}\n  box_fixed true\n  name Reformat1\n  selected true\n  xpos -196\n  ypos 177\n }\n ScanlineRender {\n  inputs 3\n  max_tessellation 1\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos -58\n  ypos 177\n }\n Premult {\n  name Premult1\n  xpos -58\n  ypos 220\n }\n Dot {\n  name Dot1\n  xpos -24\n  ypos 276\n }\nset N1e601350 [stack 0]\n Blur {\n  size 1.6\n  name Blur1\n  xpos 49\n  ypos 266\n }\n Unpremult {\n  name Unpremult1\n  xpos 49\n  ypos 316\n }\npush $N1e601350\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -58\n  ypos 316\n  disable {{1-fill_gap}}\n }\nset N1e616fd0 [stack 0]\n Output {\n  name Output1\n  xpos -58\n  ypos 375\n }\npush $N1e616fd0\npush $N1e55bbf0\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ScaleMatrix4.gizmo",
    "content": "Group {\n name ScaleMatrix4_\n help \"Scale a matrix4 using a control channel (rgb from vector input) for which each channel is considered as a scalar for x, y and z\"\n addUserKnob {20 ScaleMatrix4}\n addUserKnob {26 Description l \"\" +STARTLINE T \"Scale a matrix4 using a control channel (rgb) for which each channel is considered as a scalar for x, y and z\"}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vector\n  xpos 491\n  ypos 162\n  number 1\n }\n Dot {\n  name Dot1\n  xpos 525\n  ypos 252\n }\n Input {\n  inputs 0\n  name matrix\n  xpos 344\n  ypos 161\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n MergeExpression {\n  inputs 2\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 matrix0.0*Ar\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 matrix1.1*Ag\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 matrix2.2*Ab\n  channel3 none\n  name MergeExpression1\n  xpos 344\n  ypos 249\n }\n Output {\n  name Output1\n  xpos 344\n  ypos 349\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SceneDepthCalculator.gizmo",
    "content": "Group {\n inputs 0\n name SceneDepthCalculator\n tile_color 0xd6ff32ff\n selected true\n addUserKnob {20 General}\n addUserKnob {26 title_cam_1 l <b>camera</b>}\n addUserKnob {22 set_link_cam l \"link to selected camera\" T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nknobLS = \\['world_matrix_cam']\\nsetLink( knobLS )\" +STARTLINE}\n addUserKnob {22 remove_link_cam l \"remove linked camera expression\" -STARTLINE T \"nuke.thisGroup()\\['world_matrix_cam'].clearAnimated()\"}\n addUserKnob {20 title_cam l \"world matrix\" n 1}\n title_cam 0\n addUserKnob {41 world_matrix_cam l \"\" -STARTLINE T camData.matrix}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 title_target_1 l <b>target</b>}\n addUserKnob {22 set_link_tgt l \"link to selected target\" T \"goStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nknobLS = \\['world_matrix_tgt']\\nsetLink( knobLS )\" +STARTLINE}\n addUserKnob {22 remove_link_tgt l \"remove linked target expression\" -STARTLINE T \"nuke.thisGroup()\\['world_matrix_tgt'].clearAnimated()\"}\n addUserKnob {20 title_target l \"world matrix\" n 1}\n title_target 0\n addUserKnob {41 world_matrix_tgt l \"\" -STARTLINE T axData.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {41 depth T math.depth}\n addUserKnob {41 lock l lock/unlock -STARTLINE T math.lock}\n addUserKnob {7 offset R -100 100}\n addUserKnob {7 result l \"<font color=yellow><b>result</b></font>\"}\n result {{\"invert_depth ? 1/(depth+offset) : (depth+offset)\"}}\n addUserKnob {6 invert_depth l 1/z -STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 2.0}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-25}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"2.0<br>-&nbsp;changed&nbsp;camera&nbsp;&&nbsp;target&nbsp;to&nbsp;use&nbsp;world&nbsp;matrix&nbsp;instead<br>-&nbsp;instant&nbsp;live&nbsp;result&nbsp;of&nbsp;depth&nbsp;value<br>-&nbsp;re-work&nbsp;the&nbsp;interface\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xaaaaaa00\n  label bin\n  note_font_size 42\n  xpos -474\n  ypos 425\n  bdwidth 192\n  bdheight 166\n }\n Group {\n  inputs 0\n  name iMatrix44\n  tile_color 0x337f4cff\n  xpos -246\n  ypos 562\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path camData.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T assignID.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {20 grp_math l math n 1}\n  grp_math 0\n  addUserKnob {7 m l determinant}\n  m {{\"\\[value \\[value knob_path].\\[value id.0]] * \\n(\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.1]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.14]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n+\\n\\n\\[value \\[value knob_path].\\[value id.2]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.15]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.11]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.7]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\\n\\n-\\n\\n\\[value \\[value knob_path].\\[value id.3]] * \\n(\\n\\[value \\[value knob_path].\\[value id.4]] * \\n(( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.13]] ))\\n-\\n\\[value \\[value knob_path].\\[value id.5]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.14]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.10]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n+\\n\\[value \\[value knob_path].\\[value id.6]] * \\n(( \\[value \\[value knob_path].\\[value id.8]] * \\[value \\[value knob_path].\\[value id.13]] )\\n-\\n( \\[value \\[value knob_path].\\[value id.9]] * \\[value \\[value knob_path].\\[value id.12]] ))\\n)\"}}\n  addUserKnob {41 a l cofactor T co.matrix}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 iMatrix T result.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.1}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2021-02-24}\n  addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"live&nbsp;inverse&nbsp;matrix<br>iMatrix33<br>iMatrix44\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2 3}\n       {4 5 6 7}\n       {8 9 10 11}\n       {12 13 14 15}\n     }\n   name assignID\n   xpos -150\n   ypos -255\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"pow(-1,0+0) * (\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+1) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+2) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,0+3) * (\\n+\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,1+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,1+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.9]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.10]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,2+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.13]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.11]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.15]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.15]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.14]]\\n)\"} {\"pow(-1,2+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.14]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.12]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.13]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.12]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.14]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.13]]\\n)\"}}\n       {{\"pow(-1,3+0) * (\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+1) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.10]]\\n)\"} {\"pow(-1,3+2) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.11]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.11]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"} {\"pow(-1,3+3) * (\\n+\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.10]]\\n+\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.8]]\\n+\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.9]]\\n-\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.8]]\\n-\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.10]]\\n-\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.9]]\\n)\"}}\n     }\n   name co\n   xpos -44\n   ypos -255\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"a.0==0 || m==0 ? 0 : a.0/m\"} {\"a.4==0 || m==0 ? 0 : a.4/m\"} {\"a.8==0 || m==0 ? 0 : a.8/m\"} {\"a.12==0 || m==0 ? 0 : a.12/m\"}}\n       {{\"a.1==0 || m==0 ? 0 : a.1/m\"} {\"a.5==0 || m==0 ? 0 : a.5/m\"} {\"a.9==0 || m==0 ? 0 : a.9/m\"} {\"a.13==0 || m==0 ? 0 : a.13/m\"}}\n       {{\"a.2==0 || m==0 ? 0 : a.2/m\"} {\"a.6==0 || m==0 ? 0 : a.6/m\"} {\"a.10==0 || m==0 ? 0 : a.10/m\"} {\"a.14==0 || m==0 ? 0 : a.14/m\"}}\n       {{\"a.3==0 || m==0 ? 0 : a.3/m\"} {\"a.7==0 || m==0 ? 0 : a.7/m\"} {\"a.11==0 || m==0 ? 0 : a.11/m\"} {\"a.15==0 || m==0 ? 0 : a.15/m\"}}\n     }\n   name result\n   xpos 56\n   ypos -254\n  }\n end_group\n NoOp {\n  inputs 0\n  name store\n  xpos -411\n  ypos 512\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n##########\\n\\ndef setLink( _knobLS ) :\\n\\troot = getLevel()\\n\\tthisGRP = nuke.thisGroup()\\n\\n\\tmainKnobs = _knobLS\\n\\tdefaultKnobs = \\{\\n\\t\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t\\t\\}\\n\\tselNodeKnobs = \\[]\\n\\tmissingKnob = \\[]\\n\\n\\ttry :\\n\\t\\twith root :\\n\\t\\t\\tselNode = nuke.selectedNode()\\n\\n\\t\\tfor knob in selNode.knobs() :\\n\\t\\t\\tselNodeKnobs.append( knob )\\n\\n\\t\\tselNodeKnobs.sort()\\n\\n\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\t\\tmissingKnob.append( key )\\n\\n\\t\\tif not len(missingKnob) :\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\telse :\\n\\t\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\t\\tfor rk in missingKnob :\\n\\t\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\t\\tif p.show() :\\n\\t\\t\\t\\ttry :\\n\\t\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\t\\texcept :\\n\\t\\t\\t\\t\\tpass\\n\\n\\t\\t\\t\\twith root :\\n\\t\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\texcept :\\n\\t\\tnuke.message('no node selected.')\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name math\n  xpos -126\n  ypos 564\n  addUserKnob {20 User}\n  addUserKnob {22 lock l lock/unlock T \"nuke.thisNode()\\['depth'].setEnabled( not nuke.thisNode()\\['depth'].enabled() )\" +STARTLINE}\n  addUserKnob {7 depth +DISABLED R 0 100}\n  depth {{\"-( axData.matrix.3 * iMatrix44.iMatrix.8 + axData.matrix.7 * iMatrix44.iMatrix.9 + axData.matrix.11 * iMatrix44.iMatrix.10 + iMatrix44.iMatrix.11 )\"}}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name camData\n  xpos -237\n  ypos 446\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name axData\n  xpos -113\n  ypos 447\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ShadowMult.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name ShadowMult\n tile_color 0x5c7fc0ff\n note_font \"Bitstream Vera Sans Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 ShadowMult}\n addUserKnob {41 inputShadowChannel l \"Shadow Channel\" T ShuffleInputShadow.in}\n addUserKnob {26 text l \"\" +STARTLINE T \" \"}\n addUserKnob {41 multiply T Grade.multiply}\n addUserKnob {41 gamma T Grade.gamma}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge20.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge20.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge20.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge20.fringe}\n addUserKnob {41 mix T Merge20.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 223\n  ypos -145\n  number 2\n }\n Input {\n  inputs 0\n  name InputshadowMatte\n  xpos 377\n  ypos -447\n  number 1\n }\n Shuffle {\n  name ShuffleInputShadow\n  label \"\\[value in]\"\n  xpos 377\n  ypos -398\n }\n Grade {\n  reverse true\n  name Grade\n  xpos 377\n  ypos -348\n }\n Dot {\n  name Dot294\n  note_font_size 41\n  xpos 411\n  ypos -287\n }\nset N28220bf0 [stack 0]\n Dot {\n  name Dot296\n  note_font_size 41\n  xpos 411\n  ypos -249\n }\nset N28224ad0 [stack 0]\n Dot {\n  name Dot297\n  note_font_size 41\n  xpos 411\n  ypos -211\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name ShuffleBlue\n  tile_color 0x3d3f8e00\n  xpos 233\n  ypos -215\n }\npush $N28224ad0\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name ShuffleGreen\n  tile_color 0x3f633800\n  xpos 231\n  ypos -253\n }\npush $N28220bf0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name ShuffleRed\n  tile_color 0x93000000\n  xpos 233\n  ypos -291\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -35\n  ypos -443\n }\n Dot {\n  name Dot299\n  note_font_size 41\n  xpos -1\n  ypos -359\n }\nset N28258920 [stack 0]\n Dot {\n  name Dot295\n  note_font_size 41\n  xpos 128\n  ypos -359\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value {0 1 1 1}\n  name MultiplyRed\n  label \"\\[value value]\"\n  xpos 94\n  ypos -297\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value {1 0 1 1}\n  name MultiplyGreen\n  label \"\\[value value]\"\n  xpos 94\n  ypos -259\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value {1 1 0 1}\n  name MultiplyBlue\n  label \"\\[value value]\"\n  xpos 94\n  ypos -221\n }\npush $N28258920\n Dot {\n  name Dot298\n  note_font_size 41\n  xpos -1\n  ypos -141\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge20\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 94\n  ypos -145\n }\n Output {\n  name Output1\n  xpos 94\n  ypos -45\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SimpleSSS.gizmo",
    "content": "Group {\n name SimpleSSS\n tile_color 0xff5155ff\n selected true\n addUserKnob {20 User}\n addUserKnob {26 infoLabel l \" \" T \"Simple Subsurface Scattering / Translucency\\nby Hagbarth 2020\"}\n addUserKnob {26 didiver_general l \"<b><font color=#F9AD7D>General</font><b>\"}\n addUserKnob {6 ScatterColor_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n ScatterColor_panelDropped true\n addUserKnob {4 method l Method t \"First Backface will calculate the distance from the front facing surface to the first backfacing surface.\\n\\nFull Backface will calculate the distance from the front facing surface to the surface furthest away from the camera\" M {\"First Backface\" \"Full Backface\" \"\" \"\"}}\n addUserKnob {7 scene_scale l \"Scene Scale\" t \"The size of the scene where the object is or the width (in nuke units) of the object.\" -STARTLINE R 0 1000}\n scene_scale 10\n addUserKnob {26 divider_scatter l \"<b><font color=#F9AD7D>Scattering</font><b>\"}\n addUserKnob {7 diffusion l \"Scatter Diffusion\" t \"How much blur to be applied to the depth map.\"}\n diffusion 0.25\n addUserKnob {7 scattering l \"Scatter Depth\" t \"How deep should the translucency be visible.\"}\n scattering 0.4\n addUserKnob {18 scatter_color l \"Scatter Color\" t \"The color of the translucency\"}\n scatter_color {1 0.5 0.4}\n addUserKnob {6 scatter_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n scatter_color_panelDropped true\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n color_rgb_panelDropped true\n addUserKnob {26 dividerr_light l \"<b><font color=#F9AD7D>Light</font><b>\"}\n addUserKnob {6 scenecolor l \"Use Scene Color\" t \"If enabled the tool will use the color and light intensity from the scene itself.\\nIf disabled it will use a constant white (1.0) across the object.\" +STARTLINE}\n addUserKnob {6 normalize l \"Normalize Scene Light\" t \"If enabled the scene color will be \\\"normalized\\\" so that the intensity is evenly distributed across the object.\" -STARTLINE}\n addUserKnob {41 white l \"Light Gain\" t \"This will let you control the gain of the light\" T GrainAndGamma.white}\n addUserKnob {41 gamma l \"Light Gamma\" t \"This will let you control the gamma of the light\" T GrainAndGamma.gamma}\n addUserKnob {7 softlight l \"Soften Scene Light\" t \"How much blur should be applied to the scene light? Setting this low will look like porcelain, and hig more like jade\"}\n softlight 0.1\n addUserKnob {7 frontbackmix l \"Front<->Back mix\" t \"This will control how much light from the back and from the front will affect the light intensity.\\n\\nIf set to -1 only light from the back will cause an effect.\\nIf set to 0 both back and front light will have an effect.\\nIf set to 1 only light comming from the front will have an effect.\" R -1 1}\n addUserKnob {26 \"\"}\n}\n Input {\n  inputs 0\n  name Camera\n  xpos 413\n  ypos -523\n }\n Dot {\n  name Dot5\n  xpos 447\n  ypos -410\n }\nset N13e5ff90 [stack 0]\n Dot {\n  name Dot2\n  xpos 447\n  ypos -269\n }\n BasicMaterial {\n  inputs 0\n  specular 0\n  name BasicMaterial1\n  xpos 224\n  ypos -276\n }\n Input {\n  inputs 0\n  name Scene\n  xpos 132\n  ypos -523\n  number 1\n }\n Dot {\n  name Dot1\n  xpos 166\n  ypos -272\n }\nset N13958ae0 [stack 0]\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos 224\n  ypos -252\n }\npush 0\nadd_layer {point point.red point.green point.blue point.alpha}\nadd_layer {normal normal.red normal.green normal.blue normal.alpha}\n ScanlineRender {\n  inputs 3\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel point\n  N_channel normal\n  name ScanlineRender2\n  xpos 282\n  ypos -181\n }\n Dot {\n  name Dot3\n  xpos 316\n  ypos 7\n }\nset N13a25120 [stack 0]\n Multiply {\n  channels rgb\n  value {{min(1,1+parent.frontbackmix)}}\n  name Multiply2\n  xpos -29\n  ypos 4\n }\npush $N13e5ff90\n Camera2 {\n  inputs 0\n  useMatrix true\n  matrix {\n      {{parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix}}\n      {{parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix}}\n      {{parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix}}\n      {{parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix} {parent.DummyCam.world_matrix}}\n    }\n  focal {{parent.DummyCam.focal}}\n  haperture {{parent.DummyCam.haperture}}\n  vaperture {{parent.DummyCam.vaperture}}\n  near {{parent.DummyCam.far}}\n  far 0.1\n  win_translate {{parent.DummyCam.win_translate} {parent.DummyCam.win_translate}}\n  win_scale {{parent.DummyCam.win_scale} {parent.DummyCam.win_scale}}\n  winroll {{parent.DummyCam.winroll}}\n  focal_point {{parent.DummyCam.focal_point}}\n  fstop {{parent.DummyCam.fstop}}\n  name Camera2\n  xpos -127\n  ypos -434\n }\n Switch {\n  inputs 2\n  which {{!parent.method}}\n  name Switch1\n  xpos -137\n  ypos -306\n }\n Dot {\n  name Dot4\n  xpos -103\n  ypos -270\n }\nset N12cc2430 [stack 0]\npush $N12cc2430\n BasicMaterial {\n  inputs 0\n  specular 0\n  name BasicMaterial2\n  xpos 31\n  ypos -297\n }\n Project3D2 {\n  inputs 2\n  project_on back\n  name Project3D1\n  xpos 31\n  ypos -273\n }\npush $N13958ae0\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial3\n  xpos 31\n  ypos -234\n }\npush 0\n ScanlineRender {\n  inputs 3\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel point\n  N_channel normal\n  name ScanlineRender5\n  xpos 31\n  ypos -164\n }\nset N128e6230 [stack 0]\n Dot {\n  name Dot6\n  xpos -105\n  ypos -161\n }\n Multiply {\n  channels rgb\n  value {{min(1,1-parent.frontbackmix)}}\n  name Multiply1\n  xpos -139\n  ypos -60\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge1\n  xpos -139\n  ypos 4\n }\n Inpaint2 {\n  fillRegion \"Source Inverted Alpha\"\n  center {640 360}\n  name Inpaint1\n  xpos -262\n  ypos 4\n }\n Blur {\n  channels rgb\n  size {{(parent.softlight*1000)+4}}\n  name Blur2\n  xpos -262\n  ypos 52\n }\n Dot {\n  name Dot7\n  xpos -448\n  ypos 55\n }\n Fill {\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name NoLight\n  xpos -482\n  ypos 138\n  disable {{parent.scenecolor}}\n }\n Colorspace {\n  colorspace_out CIE-Lab\n  name Colorspace1\n  xpos -482\n  ypos 256\n }\n Grade {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  black_clamp false\n  name GrainAndGamma\n  xpos -482\n  ypos 280\n }\n Colorspace {\n  colorspace_in CIE-Lab\n  name Colorspace2\n  xpos -482\n  ypos 316\n }\n Expression {\n  expr0 a>0?r/max(r,g,b):0\n  expr1 a>0?g/max(r,g,b):0\n  expr2 a>0?b/max(r,g,b):0\n  name NormalizeLight\n  xpos -482\n  ypos 388\n  disable {{!parent.normalize}}\n }\n Premult {\n  name Premult1\n  xpos -482\n  ypos 499\n }\npush $N13a25120\n Shuffle {\n  in depth\n  in2 rgba\n  red blue\n  green blue\n  alpha alpha2\n  name Shuffle6\n  xpos 282\n  ypos 216\n }\npush $N128e6230\n Shuffle {\n  in depth\n  in2 rgba\n  red blue\n  green blue\n  alpha alpha2\n  name Shuffle7\n  xpos 31\n  ypos 249\n }\n Merge2 {\n  inputs 2\n  operation minus\n  Bchannels rgb\n  name Merge4\n  xpos 282\n  ypos 249\n }\n Blur {\n  channels rgb\n  size {{parent.diffusion*100}}\n  name Blur3\n  xpos 282\n  ypos 499\n }\n Grade {\n  white {{parent.scene_scale}}\n  black_clamp false\n  name Grade11\n  xpos -24\n  ypos 499\n }\n MergeExpression {\n  inputs 2\n  expr0 \"exp(-B.r * sigma_t.r) * A.r\"\n  expr1 \"exp(-B.g * sigma_t.g) * A.g\"\n  expr2 \"exp(-B.b * sigma_t.b) * A.b\"\n  name MergeExpression1\n  xpos -156\n  ypos 499\n  addUserKnob {20 User}\n  addUserKnob {18 sigma_t}\n  sigma_t {{(((1/((parent.scattering*parent.scatter_color)+0.0000001))-0.9999999)*(parent.scene_scale/3))} {(((1/((parent.scattering*parent.scatter_color)+0.0000001))-0.9999999)*(parent.scene_scale/3))} {(((1/((parent.scattering*parent.scatter_color)+0.0000001))-0.9999999)*(parent.scene_scale/3))}}\n  addUserKnob {6 sigma_t_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  color_rgb_panelDropped true\n }\n Output {\n  name Output1\n  xpos -156\n  ypos 640\n }\npush $N13e5ff90\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {10000}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label \"By Adrian Pueyo\"\n  xpos 11\n  ypos -434\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SkyMatte.gizmo",
    "content": "Group {\nname SkyMatte\ntile_color 0x3c9cd8ff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected true\naddUserKnob {20 SkyMatteINGI l \"Sky MatteINGI\"}\naddUserKnob {41 type l Channel T channelstype.type}\naddUserKnob {7 bpmin l Blackpoint t \"Set like a normal blackpoint from a keyer, there is no whitepoint to set however.\" R 0.0005 1}\nbpmin 0.15\naddUserKnob {6 inverted l Invert +STARTLINE}\ninverted true\naddUserKnob {26 Slices}\naddUserKnob {41 on l \"(RGB)Preview Slices\" t \"RGB only\" T showslices.on}\naddUserKnob {7 previewgamma l /Gamma t \"Gamma of the plate under the red slices.\" -STARTLINE}\npreviewgamma 1.8\naddUserKnob {7 previewgain l Gain t \"Gain of the plate under the red slices.\" -STARTLINE}\npreviewgain 0.15\naddUserKnob {7 spread l Spread t \"Keep as low as possible (more precision). If you are missing slices in the higher values increase the value to spread them.\" R 0.002 1}\nspread 0.1\naddUserKnob {26 Refine}\naddUserKnob {7 offsets l offset t \"Repeats the process 4 times with slight offsets to make the slices seamless. The bigger the value, the more different each repetition is.\" R 0 0.4}\noffsets 0.03\naddUserKnob {26 alert l \"\" -STARTLINE T \"0=No refine\"}\naddUserKnob {4 refine t \"Depends on offset. Min offers higher precision but can have lines appearing, average is smoother.\" M {Min Average \"\"}}\nrefine Average\naddUserKnob {26 Contrast}\naddUserKnob {41 blackpoint T Contrastpost.blackpoint}\naddUserKnob {41 whitepoint T Contrastpost.whitepoint}\naddUserKnob {26 \"\"}\naddUserKnob {26 \"\" l mask T \"\"}\naddUserKnob {41 maskChannelMask l \"\" -STARTLINE T Merge11.maskChannelMask}\naddUserKnob {41 inject -STARTLINE T Merge11.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T Merge11.invert_mask}\naddUserKnob {41 fringe -STARTLINE T Merge11.fringe}\naddUserKnob {41 mix T Merge11.mix}\naddUserKnob {26 _1 l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>Sky Matte INGI V1</b> by Corentin Fievet </span>\"}\n}\nBackdropNode {\ninputs 0\nname BackdropNode1\ntile_color 0x332d6801\nnote_font \"Helvetica Bold\"\nnote_font_size 20\nxpos -1179\nypos -726\nbookmark false\nbdwidth 611\nbdheight 396\n}\nBackdropNode {\ninputs 0\nname BackdropNode2\ntile_color 0x35543a01\nnote_font \"Helvetica Bold\"\nnote_font_size 20\nxpos 126\nypos 301\nbookmark false\nbdwidth 388\nbdheight 322\n}\nBackdropNode {\ninputs 0\nname BackdropNode3\ntile_color 0x664c6d01\nnote_font \"Helvetica Bold\"\nnote_font_size 50\nxpos -1253\nypos 57\nbookmark false\nbdwidth 1305\nbdheight 556\n}\nBackdropNode {\ninputs 0\nname BackdropNode4\ntile_color 0x663d6801\nnote_font \"Helvetica Bold\"\nnote_font_size 50\nxpos 3904\nypos 3942\nbookmark false\nbdwidth 534\nbdheight 629\n}\nStickyNote {\ninputs 0\nname StickyNote1\ntile_color 0xffffffff\nlabel \"<b>Channels                .\"\nnote_font \"Helvetica Bold\"\nnote_font_size 20\nxpos -1179\nypos -765\n}\nStickyNote {\ninputs 0\nname StickyNote2\ntile_color 0xffffffff\nlabel \"<b>edgefix                .\"\nnote_font \"Helvetica Bold\"\nnote_font_size 20\nxpos 126\nypos 263\n}\nStickyNote {\ninputs 0\nname StickyNote3\ntile_color 0xffffffff\nlabel \"<b>Slice_prep                .\"\nnote_font \"Helvetica Bold\"\nnote_font_size 50\nxpos -1253\nypos -13\n}\nStickyNote {\ninputs 0\nname StickyNote4\ntile_color 0xffffffff\nlabel \"<b>Preview Slices                .\"\nnote_font \"Helvetica Bold\"\nnote_font_size 50\nxpos 3904\nypos 3872\n}\nInput {\ninputs 0\nname mask\nxpos 3916\nypos 5739\nnumber 1\n}\nInput {\ninputs 0\nname Input\nxpos -832\nypos -1060\n}\nRemove {\noperation keep\nchannels rgb\nname Remove2\nxpos -832\nypos -993\n}\nDot {\nname Dot78\nxpos -798\nypos -944\n}\nset N3bfdb200 [stack 0]\nReformat {\ntype scale\nresize none\nname Reformat1\nxpos -832\nypos -670\n}\nDot {\nname Dot23\nxpos -798\nypos -578\n}\nset N3bfda400 [stack 0]\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle5\nlabel \"\\[value in]\"\nxpos -680\nypos -505\n}\npush $N3bfda400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle1\nlabel \"\\[value in]\"\nxpos -790\nypos -501\n}\npush $N3bfda400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle2\nlabel \"\\[value in]\"\nxpos -885\nypos -506\n}\npush $N3bfda400\nSaturation {\nsaturation 0\nname Saturation1\nxpos -991\nypos -522\n}\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle41\nlabel \"\\[value in]\"\nxpos -991\nypos -494\n}\nSwitch {\ninputs 4\nwhich {{parent.channelstype.type}}\nname Switch2\nlabel \"\\[value which]\"\nxpos -826\nypos -403\n}\nReformat {\ntype scale\nresize none\nname Reformat2\nxpos -826\nypos -158\n}\nClamp {\nchannels rgba\nmaximum {{parent.ControlsD.thirty}}\nname Clamp2\nxpos -826\nypos -117\n}\nset N3bf9eb00 [stack 0]\nDot {\nname Dot52\nxpos -1855\nypos -112\n}\nDot {\nname Dot68\nxpos -1850\nypos 946\n}\npush $N3bf9eb00\nDot {\nname Dot60\nxpos 318\nypos -118\n}\nShuffle {\nred white\ngreen white\nblue white\nalpha white\nname Shuffle4\nlabel \"\\[value in]\"\nxpos 284\nypos 386\n}\nset N3bf87200 [stack 0]\nTransform {\ntranslate {0 {parent.Main_dilate.size*-2}}\ncenter {1112 774}\nshutteroffset centred\nname Transform4\nxpos 419\nypos 460\n}\npush $N3bf87200\nTransform {\ntranslate {0 {parent.Main_dilate.size*2}}\ncenter {1112 774}\nshutteroffset centred\nname Transform3\nxpos 333\nypos 461\n}\npush 0\npush $N3bf87200\nTransform {\ntranslate {{parent.Main_dilate.size*2} 0}\ncenter {1112 774}\nshutteroffset centred\nname Transform1\nxpos 138\nypos 464\n}\npush $N3bf87200\nTransform {\ntranslate {{parent.Main_dilate.size*-2} 0}\ncenter {1112 774}\nshutteroffset centred\nname Transform2\nxpos 234\nypos 460\n}\nMerge2 {\ninputs 4+1\noperation min\nname Merge1\nxpos 279\nypos 520\n}\nBlur {\nchannels rgba\nsize {{parent.Transform1.translate.x*0.5}}\nname Blur1\nlabel \"\\[value size]\"\nxpos 279\nypos 548\n}\nDot {\nname Dot2\nxpos 313\nypos 771\n}\npush $N3bf9eb00\nDot {\nname Dot12\nxpos -792\nypos 142\n}\nset N3bf53900 [stack 0]\nDot {\nname Dot36\nxpos -291\nypos 142\n}\nset N3bf53200 [stack 0]\nDilate {\nchannels rgba\nsize {{parent.Dilate1.size/2}}\nname Dilate4\nxpos -112\nypos 256\n}\nDot {\nname Dot77\nxpos -78\nypos 552\n}\npush $N3bf53900\nDot {\nname Dot34\nxpos -1115\nypos 142\n}\nset N3bf51d00 [stack 0]\nGrade {\nchannels rgba\nblackpoint {{parent.Controls1.min*8}}\nwhitepoint {{parent.Controls1.min*16}}\nwhite_clamp true\nname Grade14\nxpos -1243\nypos 484\n}\npush $N3bf53200\nDilate {\nchannels rgba\nsize {{parent.Main_dilate.size*0.4}}\nname Dilate1\nxpos -215\nypos 255\n}\nDot {\nname Dot24\nxpos -181\nypos 489\n}\npush $N3bf51d00\nGrade {\nchannels rgba\nblackpoint {{parent.Controls1.min*4}}\nwhitepoint {{parent.Controls1.min*8}}\nwhite_clamp true\nname Grade13\nxpos -1124\nypos 435\n}\npush $N3bf53200\nDilate {\nchannels rgba\nsize {{parent.Main_dilate.size*0.7}}\nname Dilate2\nxpos -325\nypos 253\n}\nDot {\nname Dot61\nxpos -291\nypos 440\n}\npush $N3bf51d00\nGrade {\nchannels rgba\nblackpoint {{parent.Controls1.min*2}}\nwhitepoint {{parent.Controls1.min*4}}\nwhite_clamp true\nname Grade12\nxpos -1026\nypos 385\n}\npush $N3bf53200\nDilate {\nchannels rgba\nsize {{width/88.9}}\nname Main_dilate\nxpos -425\nypos 253\n}\nDot {\nname Dot62\nxpos -391\nypos 390\n}\npush $N3bf51d00\nGrade {\nchannels rgba\nblackpoint {{parent.Controls1.min}}\nwhitepoint {{parent.Controls1.min*2}}\nwhite_clamp true\nname Grade11\nxpos -949\nypos 324\n}\npush $N3bf53200\nDilate {\nchannels rgba\nsize {{parent.Main_dilate.size*1.5}}\nname Dilate3\nxpos -525\nypos 256\n}\nDot {\nname Dot85\nxpos -491\nypos 329\n}\npush $N3bf53200\nDilate {\nchannels rgba\nsize {{parent.Main_dilate.size*2}}\nname Dilate5\nxpos -639\nypos 256\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge2\nxpos -796\nypos 324\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge3\nxpos -796\nypos 385\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge4\nxpos -796\nypos 435\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge5\nxpos -796\nypos 484\n}\nKeymix {\ninputs 3\nchannels rgba\ninvertMask true\nname Keymix1\nxpos -565\nypos 766\n}\nBlur {\nchannels rgba\nsize {{parent.Main_dilate.size}}\nname Blur14\nlabel \"\\[value size]\"\nxpos -565\nypos 806\n}\nReformat {\ntype scale\nresize none\nname Reformat3\nxpos -565\nypos 848\n}\nInput {\ninputs 0\nname CleanPlateOptional\nxpos -710\nypos 896\nnumber 2\n}\nSwitch {\ninputs 2\nwhich {{\"!\\[exists parent.input2]\"}}\nname SwitchDefault\nxpos -565\nypos 896\n}\nadd_layer {input input.red input.green input.blue input.alpha}\nShuffleCopy {\ninputs 2\nred red\ngreen green\nblue blue\nout input\nname ShuffleCopy1\nxpos -565\nypos 944\n}\nDot {\nname Dot1\nxpos -531\nypos 998\n}\nset N3beaeb00 [stack 0]\nShuffle {\nin input\nname Shuffle30\nlabel \"\\[value in]\"\nxpos -1594\nypos 1743\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.ControlsA.one*0.9} {parent.ControlsB.one*0.9} {parent.ControlsC.one*0.9} {parent.ControlsD.one*0.9}}\nwhite_clamp true\nname Grade60\nxpos -1594\nypos 1785\n}\npush $N3beaeb00\nDot {\nname Dot17\nxpos -1397\nypos 1700\n}\nset N6766a400 [stack 0]\nShuffle {\nin input\nname Shuffle29\nlabel \"\\[value in]\"\nxpos -1479\nypos 1746\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice.whitepoint} {parent.slice.whitepoint} {parent.slice.whitepoint} {parent.slice.whitepoint}}\nwhite_clamp true\nname Grade59\nxpos -1479\nypos 1824\naddUserKnob {20 User}\n}\npush $N6766a400\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice\nxpos -1386\nypos 1773\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus one\naddUserKnob {1 number}\nnumber two\n}\nDot {\nname Dot16\nxpos -1349\nypos 1820\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix22\ntile_color 0x495bc4ff\nxpos -1479\nypos 1880\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N6764cf00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N67637900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N67636400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N6764cf00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N67637900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N67636400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N6764cf00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N67637900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N67636400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N6764cf00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N67637900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N67636400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot18\nxpos -1216\nypos 1798\n}\nset N675cdd00 [stack 0]\nShuffle {\nin input\nname Shuffle28\nlabel \"\\[value in]\"\nxpos -1323\nypos 1834\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice2.whitepoint} {parent.slice2.whitepoint} {parent.slice2.whitepoint} {parent.slice2.whitepoint}}\nwhite_clamp true\nname Grade58\nxpos -1323\nypos 1915\naddUserKnob {20 User}\n}\npush $N675cdd00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice2\nxpos -1227\nypos 1853\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus two\naddUserKnob {1 number}\nnumber three\n}\nDot {\nname Dot15\nxpos -1193\nypos 1908\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix21\ntile_color 0x495bc4ff\nxpos -1323\nypos 1968\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N675a4800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N6758f200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N6758dd00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N675a4800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N6758f200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N6758dd00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N675a4800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N6758f200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N6758dd00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N675a4800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N6758f200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N6758dd00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot19\nxpos -1060\nypos 1916\n}\nset N67521600 [stack 0]\nShuffle {\nin input\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -1174\nypos 1952\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice3.whitepoint} {parent.slice3.whitepoint} {parent.slice3.whitepoint} {parent.slice3.whitepoint}}\nwhite_clamp true\nname Grade57\nxpos -1174\nypos 2032\naddUserKnob {20 User}\n}\npush $N67521600\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice3\nxpos -1078\nypos 1974\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus three\naddUserKnob {1 number}\nnumber four\n}\nDot {\nname Dot14\nxpos -1044\nypos 2026\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix20\ntile_color 0x495bc4ff\nxpos -1174\nypos 2086\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N674f0100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N674e2b00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N674e1600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N674f0100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N674e2b00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N674e1600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N674f0100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N674e2b00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N674e1600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N674f0100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N674e2b00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N674e1600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot22\nxpos -899\nypos 1988\n}\nset N6748cf00 [stack 0]\nShuffle {\nin input\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -1009\nypos 2026\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice4.whitepoint} {parent.slice4.whitepoint} {parent.slice4.whitepoint} {parent.slice4.whitepoint}}\nwhite_clamp true\nname Grade56\nxpos -1009\nypos 2108\naddUserKnob {20 User}\n}\npush $N6748cf00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice4\nxpos -913\nypos 2046\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus four\naddUserKnob {1 number}\nnumber five\n}\nDot {\nname Dot13\nxpos -879\nypos 2100\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix19\ntile_color 0x495bc4ff\nxpos -1009\nypos 2160\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N6743b900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N6743a400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N67438f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N6743b900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N6743a400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N67438f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N6743b900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N6743a400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N67438f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N6743b900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N6743a400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N67438f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot21\nxpos -741\nypos 2082\n}\nset N673e0800 [stack 0]\nShuffle {\nin input\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -837\nypos 2125\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice5.whitepoint} {parent.slice5.whitepoint} {parent.slice5.whitepoint} {parent.slice5.whitepoint}}\nwhite_clamp true\nname Grade55\nxpos -837\nypos 2207\naddUserKnob {20 User}\n}\npush $N673e0800\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice5\nxpos -741\nypos 2147\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus five\naddUserKnob {1 number}\nnumber six\n}\nDot {\nname Dot11\nxpos -707\nypos 2200\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix18\ntile_color 0x495bc4ff\nxpos -837\nypos 2260\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N67393200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N67391d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N67390800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N67393200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N67391d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N67390800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N67393200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N67391d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N67390800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N67393200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N67391d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N67390800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot20\nxpos -579\nypos 2181\n}\nset N6733c100 [stack 0]\nShuffle {\nin input\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -676\nypos 2216\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice6.whitepoint} {parent.slice6.whitepoint} {parent.slice6.whitepoint} {parent.slice6.whitepoint}}\nwhite_clamp true\nname Grade54\nxpos -676\nypos 2294\naddUserKnob {20 User}\n}\npush $N6733c100\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice6\nxpos -580\nypos 2231\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus six\naddUserKnob {1 number}\nnumber seven\n}\nDot {\nname Dot10\nxpos -546\nypos 2288\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix17\ntile_color 0x495bc4ff\nxpos -676\nypos 2348\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N672eab00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N672e9600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N672e8100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N672eab00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N672e9600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N672e8100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N672eab00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N672e9600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N672e8100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N672eab00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N672e9600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N672e8100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot25\nxpos -417\nypos 2241\n}\nset N3ff8f900 [stack 0]\nShuffle {\nin input\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -500\nypos 2290\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice7.whitepoint} {parent.slice7.whitepoint} {parent.slice7.whitepoint} {parent.slice7.whitepoint}}\nwhite_clamp true\nname Grade53\nxpos -500\nypos 2371\naddUserKnob {20 User}\n}\npush $N3ff8f900\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice7\nxpos -404\nypos 2307\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus seven\naddUserKnob {1 number}\nnumber eight\n}\nDot {\nname Dot9\nxpos -370\nypos 2364\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix16\ntile_color 0x495bc4ff\nxpos -500\nypos 2424\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3ff82400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3ff80f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3ff57900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3ff82400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3ff80f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3ff57900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3ff82400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3ff80f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3ff57900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3ff82400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3ff80f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3ff57900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot26\nxpos -241\nypos 2300\n}\nset N3feef200 [stack 0]\nShuffle {\nin input\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -324\nypos 2364\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice8.whitepoint} {parent.slice8.whitepoint} {parent.slice8.whitepoint} {parent.slice8.whitepoint}}\nwhite_clamp true\nname Grade52\nxpos -324\nypos 2444\naddUserKnob {20 User}\n}\npush $N3feef200\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice8\nxpos -228\nypos 2384\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus eight\naddUserKnob {1 number}\nnumber nine\n}\nDot {\nname Dot8\nxpos -194\nypos 2438\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix15\ntile_color 0x495bc4ff\nxpos -324\nypos 2498\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3fed9d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3fed8800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3feaf200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3fed9d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3fed8800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3feaf200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3fed9d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3fed8800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3feaf200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3fed9d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3fed8800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3feaf200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3beaeb00\nDot {\nname Dot43\nxpos 1079\nypos 1540\n}\nset N3fe52b00 [stack 0]\nDot {\nname Dot27\nxpos -61\nypos 2368\n}\nset N3fe52400 [stack 0]\nShuffle {\nin input\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -152\nypos 2434\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice9.whitepoint} {parent.slice9.whitepoint} {parent.slice9.whitepoint} {parent.slice9.whitepoint}}\nwhite_clamp true\nname Grade51\nxpos -152\nypos 2513\naddUserKnob {20 User}\n}\npush $N3fe52400\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice9\nxpos -56\nypos 2453\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus nine\naddUserKnob {1 number}\nnumber ten\n}\nDot {\nname Dot7\nxpos -22\nypos 2507\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix14\ntile_color 0x495bc4ff\nxpos -152\nypos 2567\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3fe24f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3fe07900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3fe06400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3fe24f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3fe07900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3fe06400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3fe24f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3fe07900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3fe06400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3fe24f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3fe07900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3fe06400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot28\nxpos 122\nypos 2440\n}\nset N3fda5d00 [stack 0]\nShuffle {\nin input\nname Shuffle17\nlabel \"\\[value in]\"\nxpos 27\nypos 2509\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice10.whitepoint} {parent.slice10.whitepoint} {parent.slice10.whitepoint} {parent.slice10.whitepoint}}\nwhite_clamp true\nname Grade50\nxpos 27\nypos 2589\naddUserKnob {20 User}\n}\npush $N3fda5d00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice10\nxpos 123\nypos 2521\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus ten\naddUserKnob {1 number}\nnumber eleven\n}\nDot {\nname Dot6\nxpos 157\nypos 2583\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix13\ntile_color 0x495bc4ff\nxpos 27\nypos 2643\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3fd80800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3fd6b200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3fd69d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3fd80800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3fd6b200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3fd69d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3fd80800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3fd6b200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3fd69d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3fd80800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3fd6b200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3fd69d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot29\nxpos 304\nypos 2515\n}\nset N3fcfd600 [stack 0]\nShuffle {\nin input\nname Shuffle14\nlabel \"\\[value in]\"\nxpos 210\nypos 2599\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice11.whitepoint} {parent.slice11.whitepoint} {parent.slice11.whitepoint} {parent.slice11.whitepoint}}\nwhite_clamp true\nname Grade49\nxpos 210\nypos 2679\naddUserKnob {20 User}\n}\npush $N3fcfd600\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice11\nxpos 306\nypos 2615\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus eleven\naddUserKnob {1 number}\nnumber twelve\n}\nDot {\nname Dot5\nxpos 340\nypos 2673\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix12\ntile_color 0x495bc4ff\nxpos 210\nypos 2733\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3fccc100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3fcbeb00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3fcbd600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3fccc100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3fcbeb00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3fcbd600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3fccc100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3fcbeb00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3fcbd600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3fccc100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3fcbeb00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3fcbd600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot30\nxpos 488\nypos 2613\n}\nset N3fc60f00 [stack 0]\nShuffle {\nin input\nname Shuffle20\nlabel \"\\[value in]\"\nxpos 387\nypos 2674\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice12.whitepoint} {parent.slice12.whitepoint} {parent.slice12.whitepoint} {parent.slice12.whitepoint}}\nwhite_clamp true\nname Grade48\nxpos 387\nypos 2754\naddUserKnob {20 User}\n}\npush $N3fc60f00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice12\nxpos 483\nypos 2689\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twelve\naddUserKnob {1 number}\nnumber thirteen\n}\nDot {\nname Dot4\nxpos 517\nypos 2748\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix11\ntile_color 0x495bc4ff\nxpos 387\nypos 2808\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N3fc17900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N3fc16400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N3fc14f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N3fc17900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N3fc16400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N3fc14f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N3fc17900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N3fc16400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N3fc14f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N3fc17900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N3fc16400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N3fc14f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot3\nxpos 669\nypos 2675\n}\nset Na03ac800 [stack 0]\nShuffle {\nin input\nname Shuffle6\nlabel \"\\[value in]\"\nxpos 568\nypos 2737\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice13.whitepoint} {parent.slice13.whitepoint} {parent.slice13.whitepoint} {parent.slice13.whitepoint}}\nwhite_clamp true\nname Grade10\nxpos 568\nypos 2815\naddUserKnob {20 User}\n}\npush $Na03ac800\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice13\nxpos 664\nypos 2752\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus thirteen\naddUserKnob {1 number}\nnumber fourteen\n}\nDot {\nname Dot31\nxpos 698\nypos 2810\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix1\ntile_color 0x495bc4ff\nxpos 568\nypos 2870\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na0363200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na0361d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na0360800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na0363200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na0361d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na0360800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na0363200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na0361d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na0360800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na0363200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na0361d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na0360800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot32\nxpos 836\nypos 2754\n}\nset Na0308100 [stack 0]\nShuffle {\nin input\nname Shuffle7\nlabel \"\\[value in]\"\nxpos 735\nypos 2815\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice14.whitepoint} {parent.slice14.whitepoint} {parent.slice14.whitepoint} {parent.slice14.whitepoint}}\nwhite_clamp true\nname Grade15\nxpos 735\nypos 2894\naddUserKnob {20 User}\n}\npush $Na0308100\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice14\nxpos 831\nypos 2829\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus fourteen\naddUserKnob {1 number}\nnumber fifteen\n}\nDot {\nname Dot33\nxpos 865\nypos 2889\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix2\ntile_color 0x495bc4ff\nxpos 735\nypos 2949\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na02c2b00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na02c1600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na02c0100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na02c2b00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na02c1600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na02c0100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na02c2b00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na02c1600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na02c0100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na02c2b00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na02c1600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na02c0100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot35\nxpos 1018\nypos 2808\n}\nset Na022f900 [stack 0]\nShuffle {\nin input\nname Shuffle8\nlabel \"\\[value in]\"\nxpos 917\nypos 2871\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice15.whitepoint} {parent.slice15.whitepoint} {parent.slice15.whitepoint} {parent.slice15.whitepoint}}\nwhite_clamp true\nname Grade24\nxpos 917\nypos 2946\naddUserKnob {20 User}\n}\npush $Na022f900\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice15\nxpos 1013\nypos 2882\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus fifteen\naddUserKnob {1 number}\nnumber sixteen\n}\nDot {\nname Dot37\nxpos 1047\nypos 2943\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix3\ntile_color 0x495bc4ff\nxpos 917\nypos 3003\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na020e400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na020cf00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na01ef900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na020e400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na020cf00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na01ef900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na020e400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na020cf00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na01ef900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na020e400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na020cf00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na01ef900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot38\nxpos 1192\nypos 2869\n}\nset Na0187200 [stack 0]\nShuffle {\nin input\nname Shuffle9\nlabel \"\\[value in]\"\nxpos 1091\nypos 2931\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice16.whitepoint} {parent.slice16.whitepoint} {parent.slice16.whitepoint} {parent.slice16.whitepoint}}\nwhite_clamp true\nname Grade25\nxpos 1091\nypos 3009\naddUserKnob {20 User}\n}\npush $Na0187200\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice16\nxpos 1187\nypos 2946\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus sixteen\naddUserKnob {1 number}\nnumber seventeen\n}\nDot {\nname Dot39\nxpos 1221\nypos 3004\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix4\ntile_color 0x495bc4ff\nxpos 1091\nypos 3064\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na016dd00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na016c800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na0147200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na016dd00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na016c800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na0147200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na016dd00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na016c800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na0147200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na016dd00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na016c800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na0147200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N3fe52b00\nDot {\nname Dot45\nxpos 2337\nypos 1947\n}\nset Na00e2b00 [stack 0]\nDot {\nname Dot40\nxpos 1366\nypos 2938\n}\nset Na00e2400 [stack 0]\nShuffle {\nin input\nname Shuffle10\nlabel \"\\[value in]\"\nxpos 1265\nypos 2998\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice17.whitepoint} {parent.slice17.whitepoint} {parent.slice17.whitepoint} {parent.slice17.whitepoint}}\nwhite_clamp true\nname Grade26\nxpos 1265\nypos 3078\naddUserKnob {20 User}\n}\npush $Na00e2400\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice17\nxpos 1361\nypos 3014\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus seventeen\naddUserKnob {1 number}\nnumber eighteen\n}\nDot {\nname Dot41\nxpos 1395\nypos 3073\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix5\ntile_color 0x495bc4ff\nxpos 1265\nypos 3133\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na00bcf00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na009f900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na009e400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na00bcf00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na009f900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na009e400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na00bcf00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na009f900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na009e400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na00bcf00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na009f900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na009e400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot42\nxpos 1555\nypos 2991\n}\nset Na003dd00 [stack 0]\nShuffle {\nin input\nname Shuffle11\nlabel \"\\[value in]\"\nxpos 1454\nypos 3052\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice18.whitepoint} {parent.slice18.whitepoint} {parent.slice18.whitepoint} {parent.slice18.whitepoint}}\nwhite_clamp true\nname Grade27\nxpos 1454\nypos 3132\naddUserKnob {20 User}\n}\npush $Na003dd00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice18\nxpos 1550\nypos 3072\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus eighteen\naddUserKnob {1 number}\nnumber nineteen\n}\nDot {\nname Dot44\nxpos 1584\nypos 3126\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix6\ntile_color 0x495bc4ff\nxpos 1454\nypos 3186\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na0018800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b3f3200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b3f1d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na0018800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b3f3200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b3f1d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na0018800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b3f3200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b3f1d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na0018800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b3f3200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b3f1d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot46\nxpos 1748\nypos 3038\n}\nset N8b385600 [stack 0]\nShuffle {\nin input\nname Shuffle12\nlabel \"\\[value in]\"\nxpos 1647\nypos 3098\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice19.whitepoint} {parent.slice19.whitepoint} {parent.slice19.whitepoint} {parent.slice19.whitepoint}}\nwhite_clamp true\nname Grade28\nxpos 1647\nypos 3178\naddUserKnob {20 User}\n}\npush $N8b385600\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice19\nxpos 1743\nypos 3119\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus nineteen\naddUserKnob {1 number}\nnumber twenty\n}\nDot {\nname Dot48\nxpos 1777\nypos 3173\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix7\ntile_color 0x495bc4ff\nxpos 1647\nypos 3233\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b35c100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b352b00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b351600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b35c100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b352b00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b351600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b35c100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b352b00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b351600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b35c100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b352b00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b351600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot49\nxpos 1943\nypos 3091\n}\nset N8b2e8f00 [stack 0]\nShuffle {\nin input\nname Shuffle13\nlabel \"\\[value in]\"\nxpos 1842\nypos 3152\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice20.whitepoint} {parent.slice20.whitepoint} {parent.slice20.whitepoint} {parent.slice20.whitepoint}}\nwhite_clamp true\nname Grade29\nxpos 1842\nypos 3233\naddUserKnob {20 User}\n}\npush $N8b2e8f00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice20\nxpos 1938\nypos 3173\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twenty\naddUserKnob {1 number}\nnumber twentyone\n}\nDot {\nname Dot50\nxpos 1972\nypos 3226\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix8\ntile_color 0x495bc4ff\nxpos 1842\nypos 3286\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b2ab900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b2aa400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b2a8f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b2ab900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b2aa400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b2a8f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b2ab900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b2aa400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b2a8f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b2ab900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b2aa400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b2a8f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot51\nxpos 2147\nypos 3140\n}\nset N8b23c800 [stack 0]\nShuffle {\nin input\nname Shuffle15\nlabel \"\\[value in]\"\nxpos 2046\nypos 3200\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice21.whitepoint} {parent.slice21.whitepoint} {parent.slice21.whitepoint} {parent.slice21.whitepoint}}\nwhite_clamp true\nname Grade30\nxpos 2046\nypos 3279\naddUserKnob {20 User}\n}\npush $N8b23c800\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice21\nxpos 2142\nypos 3217\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentyone\naddUserKnob {1 number}\nnumber twentytwo\n}\nDot {\nname Dot53\nxpos 2176\nypos 3275\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix9\ntile_color 0x495bc4ff\nxpos 2046\nypos 3335\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b1fb200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b1f9d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b1f8800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b1fb200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b1f9d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b1f8800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b1fb200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b1f9d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b1f8800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b1fb200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b1f9d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b1f8800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot54\nxpos 2337\nypos 3188\n}\nset N8b194100 [stack 0]\nShuffle {\nin input\nname Shuffle16\nlabel \"\\[value in]\"\nxpos 2236\nypos 3248\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice22.whitepoint} {parent.slice22.whitepoint} {parent.slice22.whitepoint} {parent.slice22.whitepoint}}\nwhite_clamp true\nname Grade34\nxpos 2236\nypos 3328\naddUserKnob {20 User}\n}\npush $N8b194100\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice22\nxpos 2332\nypos 3270\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentytwo\naddUserKnob {1 number}\nnumber twentythree\n}\nDot {\nname Dot55\nxpos 2366\nypos 3323\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix10\ntile_color 0x495bc4ff\nxpos 2236\nypos 3383\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b15ab00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b159600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b158100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b15ab00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b159600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b158100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b15ab00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b159600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b158100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b15ab00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b159600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b158100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot56\nxpos 2539\nypos 3224\n}\nset N8b0cb900 [stack 0]\nShuffle {\nin input\nname Shuffle18\nlabel \"\\[value in]\"\nxpos 2434\nypos 3286\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice23.whitepoint} {parent.slice23.whitepoint} {parent.slice23.whitepoint} {parent.slice23.whitepoint}}\nwhite_clamp true\nname Grade35\nxpos 2438\nypos 3364\naddUserKnob {20 User}\n}\npush $N8b0cb900\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice23\nxpos 2534\nypos 3304\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentythree\naddUserKnob {1 number}\nnumber twentyfour\n}\nDot {\nname Dot57\nxpos 2568\nypos 3359\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix23\ntile_color 0x495bc4ff\nxpos 2438\nypos 3419\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b0b2400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b0b0f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset N8b087900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b0b2400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b0b0f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $N8b087900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b0b2400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b0b0f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $N8b087900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b0b2400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b0b0f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $N8b087900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $Na00e2b00\nDot {\nname Dot47\nxpos 3573\nypos 2358\n}\nset N8b01f200 [stack 0]\nDot {\nname Dot58\nxpos 2740\nypos 3281\n}\nset N8b01eb00 [stack 0]\nShuffle {\nin input\nname Shuffle19\nlabel \"\\[value in]\"\nxpos 2639\nypos 3343\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice24.whitepoint} {parent.slice24.whitepoint} {parent.slice24.whitepoint} {parent.slice24.whitepoint}}\nwhite_clamp true\nname Grade36\nxpos 2639\nypos 3422\naddUserKnob {20 User}\n}\npush $N8b01eb00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice24\nxpos 2735\nypos 3360\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentyfour\naddUserKnob {1 number}\nnumber twentyfive\n}\nDot {\nname Dot59\nxpos 2769\nypos 3416\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix24\ntile_color 0x495bc4ff\nxpos 2639\nypos 3476\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset N8b009600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset N8b008100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na13ceb00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $N8b009600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $N8b008100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na13ceb00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $N8b009600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $N8b008100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na13ceb00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $N8b009600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $N8b008100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na13ceb00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N8b01f200\nDot {\nname Dot63\nxpos 2929\nypos 3334\n}\nset Na1372400 [stack 0]\nShuffle {\nin input\nname Shuffle31\nlabel \"\\[value in]\"\nxpos 2828\nypos 3396\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice25.whitepoint} {parent.slice25.whitepoint} {parent.slice25.whitepoint} {parent.slice25.whitepoint}}\nwhite_clamp true\nname Grade37\nxpos 2828\nypos 3474\naddUserKnob {20 User}\n}\npush $Na1372400\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice25\nxpos 2924\nypos 3414\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentyfive\naddUserKnob {1 number}\nnumber twentysix\n}\nDot {\nname Dot64\nxpos 2958\nypos 3469\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix25\ntile_color 0x495bc4ff\nxpos 2828\nypos 3529\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na1348f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na132b900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na132a400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na1348f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na132b900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na132a400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na1348f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na132b900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na132a400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na1348f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na132b900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na132a400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N8b01f200\nDot {\nname Dot65\nxpos 3128\nypos 3374\n}\nset Na12d1d00 [stack 0]\nShuffle {\nin input\nname Shuffle32\nlabel \"\\[value in]\"\nxpos 3027\nypos 3435\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice26.whitepoint} {parent.slice26.whitepoint} {parent.slice26.whitepoint} {parent.slice26.whitepoint}}\nwhite_clamp true\nname Grade38\nxpos 3027\nypos 3514\naddUserKnob {20 User}\n}\npush $Na12d1d00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice26\nxpos 3119\nypos 3451\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentysix\naddUserKnob {1 number}\nnumber twentyseven\n}\nDot {\nname Dot66\nxpos 3157\nypos 3509\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix26\ntile_color 0x495bc4ff\nxpos 3027\nypos 3569\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na12a0800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na127f200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na127dd00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na12a0800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na127f200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na127dd00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na12a0800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na127f200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na127dd00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na12a0800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na127f200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na127dd00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N8b01f200\nDot {\nname Dot67\nxpos 3315\nypos 3432\n}\nset Na1229600 [stack 0]\nShuffle {\nin input\nname Shuffle33\nlabel \"\\[value in]\"\nxpos 3214\nypos 3493\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice27.whitepoint} {parent.slice27.whitepoint} {parent.slice27.whitepoint} {parent.slice27.whitepoint}}\nwhite_clamp true\nname Grade39\nxpos 3214\nypos 3572\naddUserKnob {20 User}\n}\npush $Na1229600\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice27\nxpos 3310\nypos 3514\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentyseven\naddUserKnob {1 number}\nnumber twentyeight\n}\nDot {\nname Dot69\nxpos 3344\nypos 3567\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix27\ntile_color 0x495bc4ff\nxpos 3214\nypos 3627\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na11f4100 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na11deb00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na11dd600 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na11f4100\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na11deb00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na11dd600\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na11f4100\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na11deb00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na11dd600\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na11f4100\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na11deb00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na11dd600\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N8b01f200\nDot {\nname Dot70\nxpos 3503\nypos 3491\n}\nset Na117cf00 [stack 0]\nShuffle {\nin input\nname Shuffle34\nlabel \"\\[value in]\"\nxpos 3402\nypos 3553\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice28.whitepoint} {parent.slice28.whitepoint} {parent.slice28.whitepoint} {parent.slice28.whitepoint}}\nwhite_clamp true\nname Grade40\nxpos 3402\nypos 3631\naddUserKnob {20 User}\n}\npush $Na117cf00\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice28\nxpos 3494\nypos 3572\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentyeight\naddUserKnob {1 number}\nnumber twentynine\n}\nDot {\nname Dot71\nxpos 3532\nypos 3626\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix28\ntile_color 0x495bc4ff\nxpos 3402\nypos 3686\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na113b900 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na113a400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na1138f00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na113b900\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na113a400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na1138f00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na113b900\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na113a400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na1138f00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na113b900\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na113a400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na1138f00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\npush $N8b01f200\nDot {\nname Dot72\nxpos 3698\nypos 3545\n}\nset Na10e0800 [stack 0]\nShuffle {\nin input\nname Shuffle35\nlabel \"\\[value in]\"\nxpos 3597\nypos 3606\ndisable {{showslices.on}}\n}\nGrade {\nchannels rgba\nblackpoint {{parent.ControlsA.min} {parent.ControlsB.min} {parent.ControlsC.min} {parent.ControlsD.min}}\nwhitepoint {{parent.slice29.whitepoint} {parent.slice29.whitepoint} {parent.slice29.whitepoint} {parent.slice29.whitepoint}}\nwhite_clamp true\nname Grade41\nxpos 3597\nypos 3687\naddUserKnob {20 User}\n}\npush $Na10e0800\nGrade {\nchannels rgba\nblackpoint {{\"parent.ControlsA.\\[value this.numberminus]\"} {\"parent.ControlsB.\\[value this.numberminus]\"} {\"parent.ControlsC.\\[value this.numberminus]\"} {\"parent.ControlsD.\\[value this.numberminus]\"}}\nwhitepoint {{\"parent.ControlsA.\\[value this.number]\"} {\"parent.ControlsB.\\[value this.number]\"} {\"parent.ControlsC.\\[value this.number]\"} {\"parent.ControlsD.\\[value this.number]\"}}\nwhite_clamp true\nname slice29\nxpos 3693\nypos 3628\naddUserKnob {20 User}\naddUserKnob {1 numberminus}\nnumberminus twentynine\naddUserKnob {1 number}\nnumber thirty\n}\nDot {\nname Dot73\nxpos 3727\nypos 3680\n}\nGroup {\ninputs 3\nname MultiMaskKeyMix29\ntile_color 0x495bc4ff\nxpos 3597\nypos 3740\n}\nInput {\ninputs 0\nname masks\nxpos -588\nypos 316\n}\nDot {\nname Dot16\nxpos -554\nypos 355\n}\nset Na1093200 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle19\nlabel \"\\[value in]\"\nxpos -491\nypos 516\n}\nInput {\ninputs 0\nname A\nxpos -854\nypos 309\nnumber 1\n}\nDot {\nname Dot14\nxpos -820\nypos 375\n}\nset Na1091d00 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle27\nlabel \"\\[value in]\"\nxpos -813\nypos 632\n}\nInput {\ninputs 0\nname B\nxpos -950\nypos 268\nnumber 2\n}\nDot {\nname Dot15\nxpos -916\nypos 310\n}\nset Na1090800 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle26\nlabel \"\\[value in]\"\nxpos -903\nypos 638\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix3\nxpos -854\nypos 703\n}\npush $Na1093200\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle18\nlabel \"\\[value in]\"\nxpos -588\nypos 479\n}\npush $Na1091d00\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle25\nlabel \"\\[value in]\"\nxpos -955\nypos 573\n}\npush $Na1090800\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle24\nlabel \"\\[value in]\"\nxpos -1038\nypos 585\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix2\nxpos -1038\nypos 665\n}\npush $Na1093200\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle16\nlabel \"\\[value in]\"\nxpos -687\nypos 426\n}\npush $Na1091d00\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle23\nlabel \"\\[value in]\"\nxpos -1103\nypos 517\n}\npush $Na1090800\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle22\nlabel \"\\[value in]\"\nxpos -1147\nypos 459\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix1\nxpos -1147\nypos 588\n}\npush $Na1093200\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle15\nlabel \"\\[value in]\"\nxpos -746\nypos 383\n}\npush $Na1091d00\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle21\nlabel \"\\[value in]\"\nxpos -1204\nypos 407\n}\npush $Na1090800\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle20\nlabel \"\\[value in]\"\nxpos -1283\nypos 373\n}\nKeymix {\ninputs 3\nchannels rgba\nname MultiMaskMix\nxpos -1267\nypos 552\n}\nShuffleCopy {\ninputs 2\nred alpha2\ngreen alpha\nblue black\nalpha black\nname ShuffleCopy2\nxpos -1218\nypos 701\n}\nShuffleCopy {\ninputs 2\nblue alpha\nalpha black\nname ShuffleCopy3\nxpos -1038\nypos 783\n}\nShuffleCopy {\ninputs 2\nname ShuffleCopy4\nxpos -863\nypos 824\n}\nOutput {\nname Output1\nxpos -863\nypos 924\n}\nend_group\nset Na10a8100 [stack 0]\npush $Na10a8100\nInvert {\nchannels rgba\nname Invert2\nxpos 3496\nypos 3876\n}\nset Na1038100 [stack 0]\nMerge2 {\ninputs 2\noperation copy\nname Merge8\nxpos 3597\nypos 3951\ndisable {{parent.inverted}}\n}\nDot {\nname Dot81\nxpos 3631\nypos 4027\n}\nDot {\nname Dot87\nxpos 3631\nypos 4368\n}\nset Na1006b00 [stack 0]\nDot {\nname Dot74\nxpos 3631\nypos 4809\n}\nset Na1006400 [stack 0]\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle39\nlabel \"\\[value in]\"\nxpos 3717\nypos 4870\n}\nset Na1005d00 [stack 0]\npush $Na1006400\nShuffle {\nred blue\ngreen blue\nalpha blue\nname Shuffle38\nlabel \"\\[value in]\"\nxpos 3630\nypos 4871\n}\nset Na1005600 [stack 0]\npush 0\npush $Na1006400\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle36\nlabel \"\\[value in]\"\nxpos 3450\nypos 4869\n}\nset Na1004f00 [stack 0]\npush $Na1006400\nShuffle {\nred green\nblue green\nalpha green\nname Shuffle37\nlabel \"\\[value in]\"\nxpos 3540\nypos 4870\n}\nset Na1004800 [stack 0]\nMerge2 {\ninputs 4+1\noperation plus\nname Merge6\nxpos 3501\nypos 4975\n}\nGrade {\nchannels rgba\nwhite 0.25\nwhite_clamp true\nname Grade2\nxpos 3501\nypos 5003\n}\npush $Na1005d00\npush $Na1005600\npush 0\npush $Na1004f00\npush $Na1004800\nMerge2 {\ninputs 4+1\noperation min\nname Merge7\nxpos 3663\nypos 4984\n}\nSwitch {\ninputs 2\nwhich {{parent.refine}}\nname averageorminswitch\nlabel \"\\[value which]\"\nxpos 3579\nypos 5080\n}\nGrade {\nchannels rgba\nname Contrastpost\nxpos 3579\nypos 5254\n}\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle3\nlabel \"\\[value in]\"\nxpos 3579\nypos 5401\n}\npush $N3bfdb200\nDot {\nname Dot79\nxpos 4227\nypos -920\n}\nDot {\nname Dot83\nxpos 4235\nypos 4035\n}\nset N90f9eb00 [stack 0]\nDot {\nname Dot84\nxpos 4328\nypos 4087\n}\nKeyer {\noperation \"luminance key\"\nrange {0.2 1 1 1}\nname Keyer1\nxpos 4290\nypos 4205\n}\npush $Na1038100\nDot {\nname Dot82\nxpos 4107\nypos 4027\n}\nGrade {\nchannels rgba\ngamma 2\nwhite_clamp true\nname Grade3\nxpos 4073\nypos 4231\n}\nColorLookup {\nlut {master {curve C k 0 s0 l x0.400000006 1 k 0 s0}\n  red {}\n  green {}\n  blue {}\n  alpha {}}\nname ColorLookup1\nxpos 4073\nypos 4259\n}\nShuffle {\nred alpha\ngreen alpha\nblue alpha\nname Shuffle40\nlabel \"\\[value in]\"\nxpos 4073\nypos 4287\n}\npush $Na1006b00\nConstant {\ninputs 0\nchannels rgb\ncolor {1 0 0 0}\ncolor_panelDropped true\nname Constant1\nxpos 3939\nypos 4289\n}\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 3939\nypos 4363\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy1\nxpos 4073\nypos 4353\n}\npush $N90f9eb00\nGrade {\nwhite {{parent.previewgain}}\ngamma {{parent.previewgamma}}\nname Grade4\nxpos 4197\nypos 4117\n}\nMerge2 {\ninputs 2+1\noperation matte\nname Merge9\nxpos 4197\nypos 4360\n}\nShuffle {\nalpha black\nname Shuffle42\nlabel \"\\[value in]\"\nxpos 4197\nypos 4448\n}\nDot {\nname Dot80\nxpos 4235\nypos 5600\n}\nMerge2 {\ninputs 2\noperation copy\nname Merge10\nxpos 3579\nypos 5595\ndisable {{showslices.on x1442 0}}\n}\npush $N3bfdb200\nDot {\nname Dot76\nxpos -2306\nypos -944\n}\nDot {\nname Dot75\nxpos -2301\nypos 5744\n}\nRemove {\noperation keep\nchannels rgba\nname Remove1\nxpos 3103\nypos 5739\n}\nGrade {\nchannels rgba\nwhite 0\nname Grade6\nxpos 3276\nypos 5739\n}\nMerge2 {\ninputs 2+1\noperation copy\nname Merge11\nxpos 3579\nypos 5739\n}\nRemove {\noperation keep\nchannels rgba\nname Remove3\nxpos 3579\nypos 5838\n}\nOutput {\nname Output1\nxpos 3579\nypos 5916\n}\nNoOp {\ninputs 0\nname ControlsA\nxpos -1580\nypos 4146\naddUserKnob {20 User}\naddUserKnob {7 min}\nmin {{Controls1.offsetA}}\naddUserKnob {7 one}\none {{this.min*2}}\naddUserKnob {7 two}\ntwo {{this.one+(this.one)*(decrease+curved_decrease*0)}}\naddUserKnob {7 three}\nthree {{this.two+(this.one)*(decrease+curved_decrease*1)}}\naddUserKnob {7 four}\nfour {{this.three+(this.one)*(decrease+curved_decrease*2)}}\naddUserKnob {7 five}\nfive {{this.four+(this.one)*(decrease+curved_decrease*3)}}\naddUserKnob {7 six}\nsix {{this.five+(this.one)*(decrease+curved_decrease*4)}}\naddUserKnob {7 seven}\nseven {{this.six+(this.one)*(decrease+curved_decrease*5)}}\naddUserKnob {7 eight}\neight {{this.seven+(this.one)*(decrease+curved_decrease*6)}}\naddUserKnob {7 nine}\nnine {{this.eight+(this.one)*(decrease+curved_decrease*7)}}\naddUserKnob {7 ten}\nten {{this.nine+(this.one)*(decrease+curved_decrease*8)}}\naddUserKnob {7 eleven}\neleven {{this.ten+(this.one)*(decrease+curved_decrease*9)}}\naddUserKnob {7 twelve}\ntwelve {{this.eleven+(this.one)*(decrease+curved_decrease*10)}}\naddUserKnob {7 thirteen}\nthirteen {{this.twelve+(this.one)*(decrease+curved_decrease*11)}}\naddUserKnob {7 fourteen}\nfourteen {{this.thirteen+(this.one)*(decrease+curved_decrease*12)}}\naddUserKnob {7 fifteen}\nfifteen {{this.fourteen+(this.one)*(decrease+curved_decrease*13)}}\naddUserKnob {7 sixteen}\nsixteen {{this.fifteen+(this.one)*(decrease+curved_decrease*14)}}\naddUserKnob {7 seventeen}\nseventeen {{this.sixteen+(this.one)*(decrease+curved_decrease*15)}}\naddUserKnob {7 eighteen}\neighteen {{this.seventeen+(this.one)*(decrease+curved_decrease*16)}}\naddUserKnob {7 nineteen}\nnineteen {{this.eighteen+(this.one)*(decrease+curved_decrease*17)}}\naddUserKnob {7 twenty}\ntwenty {{this.nineteen+(this.one)*(decrease+curved_decrease*18)}}\naddUserKnob {7 twentyone}\ntwentyone {{this.twenty+(this.one)*(decrease+curved_decrease*19)}}\naddUserKnob {7 twentytwo}\ntwentytwo {{this.twentyone+(this.one)*(decrease+curved_decrease*20)}}\naddUserKnob {7 twentythree}\ntwentythree {{this.twentytwo+(this.one)*(decrease+curved_decrease*21)}}\naddUserKnob {7 twentyfour}\ntwentyfour {{this.twentythree+(this.one)*(decrease+curved_decrease*22)}}\naddUserKnob {7 twentyfive}\ntwentyfive {{this.twentyfour+(this.one)*(decrease+curved_decrease*23)}}\naddUserKnob {7 twentysix}\ntwentysix {{this.twentyfive+(this.one)*(decrease+curved_decrease*24)}}\naddUserKnob {7 twentyseven}\ntwentyseven {{this.twentysix+(this.one)*(decrease+curved_decrease*25)}}\naddUserKnob {7 twentyeight}\ntwentyeight {{this.twentyseven+(this.one)*(decrease+curved_decrease*26)}}\naddUserKnob {7 twentynine}\ntwentynine {{this.twentyeight+(this.one)*(decrease+curved_decrease*27)}}\naddUserKnob {7 thirty}\nthirty {{this.twentynine+(this.one)*(decrease+curved_decrease*28)}}\naddUserKnob {7 decrease}\ndecrease {{parent.Controls1.decrease}}\naddUserKnob {7 curved_decrease}\ncurved_decrease {{this.decrease*0.8}}\n}\nNoOp {\ninputs 0\nname ControlsB\nxpos -711\nypos 4538\naddUserKnob {20 User}\naddUserKnob {7 min}\nmin {{parent.Controls1.offsetB}}\naddUserKnob {7 one}\none {{this.min*2}}\naddUserKnob {7 two}\ntwo {{this.one+(this.one)*(decrease+curved_decrease*0)}}\naddUserKnob {7 three}\nthree {{this.two+(this.one)*(decrease+curved_decrease*1)}}\naddUserKnob {7 four}\nfour {{this.three+(this.one)*(decrease+curved_decrease*2)}}\naddUserKnob {7 five}\nfive {{this.four+(this.one)*(decrease+curved_decrease*3)}}\naddUserKnob {7 six}\nsix {{this.five+(this.one)*(decrease+curved_decrease*4)}}\naddUserKnob {7 seven}\nseven {{this.six+(this.one)*(decrease+curved_decrease*5)}}\naddUserKnob {7 eight}\neight {{this.seven+(this.one)*(decrease+curved_decrease*6)}}\naddUserKnob {7 nine}\nnine {{this.eight+(this.one)*(decrease+curved_decrease*7)}}\naddUserKnob {7 ten}\nten {{this.nine+(this.one)*(decrease+curved_decrease*8)}}\naddUserKnob {7 eleven}\neleven {{this.ten+(this.one)*(decrease+curved_decrease*9)}}\naddUserKnob {7 twelve}\ntwelve {{this.eleven+(this.one)*(decrease+curved_decrease*10)}}\naddUserKnob {7 thirteen}\nthirteen {{this.twelve+(this.one)*(decrease+curved_decrease*11)}}\naddUserKnob {7 fourteen}\nfourteen {{this.thirteen+(this.one)*(decrease+curved_decrease*12)}}\naddUserKnob {7 fifteen}\nfifteen {{this.fourteen+(this.one)*(decrease+curved_decrease*13)}}\naddUserKnob {7 sixteen}\nsixteen {{this.fifteen+(this.one)*(decrease+curved_decrease*14)}}\naddUserKnob {7 seventeen}\nseventeen {{this.sixteen+(this.one)*(decrease+curved_decrease*15)}}\naddUserKnob {7 eighteen}\neighteen {{this.seventeen+(this.one)*(decrease+curved_decrease*16)}}\naddUserKnob {7 nineteen}\nnineteen {{this.eighteen+(this.one)*(decrease+curved_decrease*17)}}\naddUserKnob {7 twenty}\ntwenty {{this.nineteen+(this.one)*(decrease+curved_decrease*18)}}\naddUserKnob {7 twentyone}\ntwentyone {{this.twenty+(this.one)*(decrease+curved_decrease*19)}}\naddUserKnob {7 twentytwo}\ntwentytwo {{this.twentyone+(this.one)*(decrease+curved_decrease*20)}}\naddUserKnob {7 twentythree}\ntwentythree {{this.twentytwo+(this.one)*(decrease+curved_decrease*21)}}\naddUserKnob {7 twentyfour}\ntwentyfour {{this.twentythree+(this.one)*(decrease+curved_decrease*22)}}\naddUserKnob {7 twentyfive}\ntwentyfive {{this.twentyfour+(this.one)*(decrease+curved_decrease*23)}}\naddUserKnob {7 twentysix}\ntwentysix {{this.twentyfive+(this.one)*(decrease+curved_decrease*24)}}\naddUserKnob {7 twentyseven}\ntwentyseven {{this.twentysix+(this.one)*(decrease+curved_decrease*25)}}\naddUserKnob {7 twentyeight}\ntwentyeight {{this.twentyseven+(this.one)*(decrease+curved_decrease*26)}}\naddUserKnob {7 twentynine}\ntwentynine {{this.twentyeight+(this.one)*(decrease+curved_decrease*27)}}\naddUserKnob {7 thirty}\nthirty {{this.twentynine+(this.one)*(decrease+curved_decrease*28)}}\naddUserKnob {7 decrease}\ndecrease {{parent.Controls1.decrease}}\naddUserKnob {7 curved_decrease}\ncurved_decrease {{this.decrease*0.8}}\n}\nNoOp {\ninputs 0\nname ControlsC\nxpos 421\nypos 4754\naddUserKnob {20 User}\naddUserKnob {7 min}\nmin {{parent.Controls1.offsetC}}\naddUserKnob {7 one}\none {{this.min*2}}\naddUserKnob {7 two}\ntwo {{this.one+(this.one)*(decrease+curved_decrease*0)}}\naddUserKnob {7 three}\nthree {{this.two+(this.one)*(decrease+curved_decrease*1)}}\naddUserKnob {7 four}\nfour {{this.three+(this.one)*(decrease+curved_decrease*2)}}\naddUserKnob {7 five}\nfive {{this.four+(this.one)*(decrease+curved_decrease*3)}}\naddUserKnob {7 six}\nsix {{this.five+(this.one)*(decrease+curved_decrease*4)}}\naddUserKnob {7 seven}\nseven {{this.six+(this.one)*(decrease+curved_decrease*5)}}\naddUserKnob {7 eight}\neight {{this.seven+(this.one)*(decrease+curved_decrease*6)}}\naddUserKnob {7 nine}\nnine {{this.eight+(this.one)*(decrease+curved_decrease*7)}}\naddUserKnob {7 ten}\nten {{this.nine+(this.one)*(decrease+curved_decrease*8)}}\naddUserKnob {7 eleven}\neleven {{this.ten+(this.one)*(decrease+curved_decrease*9)}}\naddUserKnob {7 twelve}\ntwelve {{this.eleven+(this.one)*(decrease+curved_decrease*10)}}\naddUserKnob {7 thirteen}\nthirteen {{this.twelve+(this.one)*(decrease+curved_decrease*11)}}\naddUserKnob {7 fourteen}\nfourteen {{this.thirteen+(this.one)*(decrease+curved_decrease*12)}}\naddUserKnob {7 fifteen}\nfifteen {{this.fourteen+(this.one)*(decrease+curved_decrease*13)}}\naddUserKnob {7 sixteen}\nsixteen {{this.fifteen+(this.one)*(decrease+curved_decrease*14)}}\naddUserKnob {7 seventeen}\nseventeen {{this.sixteen+(this.one)*(decrease+curved_decrease*15)}}\naddUserKnob {7 eighteen}\neighteen {{this.seventeen+(this.one)*(decrease+curved_decrease*16)}}\naddUserKnob {7 nineteen}\nnineteen {{this.eighteen+(this.one)*(decrease+curved_decrease*17)}}\naddUserKnob {7 twenty}\ntwenty {{this.nineteen+(this.one)*(decrease+curved_decrease*18)}}\naddUserKnob {7 twentyone}\ntwentyone {{this.twenty+(this.one)*(decrease+curved_decrease*19)}}\naddUserKnob {7 twentytwo}\ntwentytwo {{this.twentyone+(this.one)*(decrease+curved_decrease*20)}}\naddUserKnob {7 twentythree}\ntwentythree {{this.twentytwo+(this.one)*(decrease+curved_decrease*21)}}\naddUserKnob {7 twentyfour}\ntwentyfour {{this.twentythree+(this.one)*(decrease+curved_decrease*22)}}\naddUserKnob {7 twentyfive}\ntwentyfive {{this.twentyfour+(this.one)*(decrease+curved_decrease*23)}}\naddUserKnob {7 twentysix}\ntwentysix {{this.twentyfive+(this.one)*(decrease+curved_decrease*24)}}\naddUserKnob {7 twentyseven}\ntwentyseven {{this.twentysix+(this.one)*(decrease+curved_decrease*25)}}\naddUserKnob {7 twentyeight}\ntwentyeight {{this.twentyseven+(this.one)*(decrease+curved_decrease*26)}}\naddUserKnob {7 twentynine}\ntwentynine {{this.twentyeight+(this.one)*(decrease+curved_decrease*27)}}\naddUserKnob {7 thirty}\nthirty {{this.twentynine+(this.one)*(decrease+curved_decrease*28)}}\naddUserKnob {7 decrease}\ndecrease {{parent.Controls1.decrease}}\naddUserKnob {7 curved_decrease}\ncurved_decrease {{this.decrease*0.8}}\n}\nNoOp {\ninputs 0\nname ControlsD\nxpos 1332\nypos 4935\naddUserKnob {20 User}\naddUserKnob {7 min}\nmin {{parent.Controls1.offsetD}}\naddUserKnob {7 one}\none {{this.min*2}}\naddUserKnob {7 two}\ntwo {{this.one+(this.one)*(decrease+curved_decrease*0)}}\naddUserKnob {7 three}\nthree {{this.two+(this.one)*(decrease+curved_decrease*1)}}\naddUserKnob {7 four}\nfour {{this.three+(this.one)*(decrease+curved_decrease*2)}}\naddUserKnob {7 five}\nfive {{this.four+(this.one)*(decrease+curved_decrease*3)}}\naddUserKnob {7 six}\nsix {{this.five+(this.one)*(decrease+curved_decrease*4)}}\naddUserKnob {7 seven}\nseven {{this.six+(this.one)*(decrease+curved_decrease*5)}}\naddUserKnob {7 eight}\neight {{this.seven+(this.one)*(decrease+curved_decrease*6)}}\naddUserKnob {7 nine}\nnine {{this.eight+(this.one)*(decrease+curved_decrease*7)}}\naddUserKnob {7 ten}\nten {{this.nine+(this.one)*(decrease+curved_decrease*8)}}\naddUserKnob {7 eleven}\neleven {{this.ten+(this.one)*(decrease+curved_decrease*9)}}\naddUserKnob {7 twelve}\ntwelve {{this.eleven+(this.one)*(decrease+curved_decrease*10)}}\naddUserKnob {7 thirteen}\nthirteen {{this.twelve+(this.one)*(decrease+curved_decrease*11)}}\naddUserKnob {7 fourteen}\nfourteen {{this.thirteen+(this.one)*(decrease+curved_decrease*12)}}\naddUserKnob {7 fifteen}\nfifteen {{this.fourteen+(this.one)*(decrease+curved_decrease*13)}}\naddUserKnob {7 sixteen}\nsixteen {{this.fifteen+(this.one)*(decrease+curved_decrease*14)}}\naddUserKnob {7 seventeen}\nseventeen {{this.sixteen+(this.one)*(decrease+curved_decrease*15)}}\naddUserKnob {7 eighteen}\neighteen {{this.seventeen+(this.one)*(decrease+curved_decrease*16)}}\naddUserKnob {7 nineteen}\nnineteen {{this.eighteen+(this.one)*(decrease+curved_decrease*17)}}\naddUserKnob {7 twenty}\ntwenty {{this.nineteen+(this.one)*(decrease+curved_decrease*18)}}\naddUserKnob {7 twentyone}\ntwentyone {{this.twenty+(this.one)*(decrease+curved_decrease*19)}}\naddUserKnob {7 twentytwo}\ntwentytwo {{this.twentyone+(this.one)*(decrease+curved_decrease*20)}}\naddUserKnob {7 twentythree}\ntwentythree {{this.twentytwo+(this.one)*(decrease+curved_decrease*21)}}\naddUserKnob {7 twentyfour}\ntwentyfour {{this.twentythree+(this.one)*(decrease+curved_decrease*22)}}\naddUserKnob {7 twentyfive}\ntwentyfive {{this.twentyfour+(this.one)*(decrease+curved_decrease*23)}}\naddUserKnob {7 twentysix}\ntwentysix {{this.twentyfive+(this.one)*(decrease+curved_decrease*24)}}\naddUserKnob {7 twentyseven}\ntwentyseven {{this.twentysix+(this.one)*(decrease+curved_decrease*25)}}\naddUserKnob {7 twentyeight}\ntwentyeight {{this.twentyseven+(this.one)*(decrease+curved_decrease*26)}}\naddUserKnob {7 twentynine}\ntwentynine {{this.twentyeight+(this.one)*(decrease+curved_decrease*27)}}\naddUserKnob {7 thirty}\nthirty {{this.twentynine+(this.one)*(decrease+curved_decrease*28)}}\naddUserKnob {7 decrease}\ndecrease {{parent.Controls1.decrease}}\naddUserKnob {7 curved_decrease}\ncurved_decrease {{this.decrease*0.8}}\n}\nNoOp {\ninputs 0\nname showslices\nxpos 2955\nypos 2368\naddUserKnob {20 User}\naddUserKnob {6 on l \"\" t \"RGB only\" +STARTLINE +STARTLINE}\n}\nNoOp {\ninputs 0\nname Controls1\nxpos -308\nypos 5196\naddUserKnob {20 User}\naddUserKnob {7 offset R 1 1.3}\noffset {{parent.offsets}}\naddUserKnob {7 offsetlimit}\noffsetlimit {{offset<0?0:offset}}\naddUserKnob {7 offsetA}\noffsetA {{offsetB/((offsetlimit)+1)}}\naddUserKnob {7 offsetB}\noffsetB {{this.min/((offsetlimit/2)+1)}}\naddUserKnob {7 offsetC}\noffsetC {{this.min*((offsetlimit/2)+1)}}\naddUserKnob {7 offsetD}\noffsetD {{this.offsetC*((offsetlimit+1))}}\naddUserKnob {7 min}\nmin {{parent.bpmin==0?0.0005:parent.bpmin}}\naddUserKnob {7 one R 0 20}\none {{this.min*2}}\naddUserKnob {7 two R 0 20}\ntwo {{this.one+(this.one)*(decrease+curved_decrease*0)}}\naddUserKnob {7 three R 0 20}\nthree {{this.two+(this.one)*(decrease+curved_decrease*1)}}\naddUserKnob {7 four R 0 20}\nfour {{this.three+(this.one)*(decrease+curved_decrease*2)}}\naddUserKnob {7 five R 0 20}\nfive {{this.four+(this.one)*(decrease+curved_decrease*3)}}\naddUserKnob {7 six R 0 20}\nsix {{this.five+(this.one)*(decrease+curved_decrease*4)}}\naddUserKnob {7 seven R 0 20}\nseven {{this.six+(this.one)*(decrease+curved_decrease*5)}}\naddUserKnob {7 eight R 0 20}\neight {{this.seven+(this.one)*(decrease+curved_decrease*6)}}\naddUserKnob {7 nine R 0 20}\nnine {{this.eight+(this.one)*(decrease+curved_decrease*7)}}\naddUserKnob {7 ten R 0 20}\nten {{this.nine+(this.one)*(decrease+curved_decrease*8)}}\naddUserKnob {7 eleven R 0 20}\neleven {{this.ten+(this.one)*(decrease+curved_decrease*9)}}\naddUserKnob {7 twelve R 0 20}\ntwelve {{this.eleven+(this.one)*(decrease+curved_decrease*10)}}\naddUserKnob {7 thirteen R 0 20}\nthirteen {{this.twelve+(this.one)*(decrease+curved_decrease*11)}}\naddUserKnob {7 fourteen R 0 20}\nfourteen {{this.thirteen+(this.one)*(decrease+curved_decrease*12)}}\naddUserKnob {7 fifteen R 0 20}\nfifteen {{this.fourteen+(this.one)*(decrease+curved_decrease*13)}}\naddUserKnob {7 sixteen R 0 20}\nsixteen {{this.fifteen+(this.one)*(decrease+curved_decrease*14)}}\naddUserKnob {7 seventeen R 0 20}\nseventeen {{this.sixteen+(this.one)*(decrease+curved_decrease*15)}}\naddUserKnob {7 eighteen R 0 20}\neighteen {{this.seventeen+(this.one)*(decrease+curved_decrease*16)}}\naddUserKnob {7 nineteen R 0 20}\nnineteen {{this.eighteen+(this.one)*(decrease+curved_decrease*17)}}\naddUserKnob {7 twenty R 0 20}\ntwenty {{this.nineteen+(this.one)*(decrease+curved_decrease*18)}}\naddUserKnob {7 twentyone R 0 20}\ntwentyone {{this.twenty+(this.one)*(decrease+curved_decrease*19)}}\naddUserKnob {7 twentytwo R 0 20}\ntwentytwo {{this.twentyone+(this.one)*(decrease+curved_decrease*20)}}\naddUserKnob {7 twentythree R 0 20}\ntwentythree {{this.twentytwo+(this.one)*(decrease+curved_decrease*21)}}\naddUserKnob {7 twentyfour R 0 20}\ntwentyfour {{this.twentythree+(this.one)*(decrease+curved_decrease*22)}}\naddUserKnob {7 twentyfive R 0 20}\ntwentyfive {{this.twentyfour+(this.one)*(decrease+curved_decrease*23)}}\naddUserKnob {7 twentysix R 0 20}\ntwentysix {{this.twentyfive+(this.one)*(decrease+curved_decrease*24)}}\naddUserKnob {7 twentyseven R 0 20}\ntwentyseven {{this.twentysix+(this.one)*(decrease+curved_decrease*25)}}\naddUserKnob {7 twentyeight R 0 20}\ntwentyeight {{this.twentyseven+(this.one)*(decrease+curved_decrease*26)}}\naddUserKnob {7 twentynine R 0 20}\ntwentynine {{this.twentyeight+(this.one)*(decrease+curved_decrease*27)}}\naddUserKnob {7 thirty R 0 20}\nthirty {{this.twentynine+(this.one)*(decrease+curved_decrease*28)}}\naddUserKnob {7 decrease}\ndecrease {{parent.spread}}\naddUserKnob {7 curved_decrease}\ncurved_decrease {{this.decrease*0.8}}\n}\nPostageStamp {\ninputs 0\nname channelstype\nxpos -1007\nypos -399\naddUserKnob {20 User}\naddUserKnob {4 type M {Luminance Red Green Blue}}\ntype Blue\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SliceTool.gizmo",
    "content": "Group {\nname SliceTool\nselected true\naddUserKnob {20 User}\naddUserKnob {4 output M {Over Right Left Top Bottom ResultOnly}}\naddUserKnob {7 thickness}\nthickness 0.5\naddUserKnob {12 pos1}\npos1 {160 122}\naddUserKnob {12 pos2}\npos2 {392 326}\n}\nInput {\ninputs 0\nname Input1\nxpos -535\nypos -255\n}\nset Ned85690 [stack 0]\nTransform {\ntranslate {{-parent.pos1 i} {-parent.pos1 i}}\nblack_outside false\nname Transform4\nlabel T\nxpos -535\nypos -231\n}\nTransform {\nrotate {{\"-degrees( atan2(parent.pos2.y-parent.pos1.y, parent.pos2.x-parent.pos1.x) )\" i}}\nblack_outside false\nname Transform5\nlabel \"R\\n\"\nxpos -535\nypos -197\n}\nTransform {\nscale {{\"width / sqrt(pow(parent.pos2.x-parent.pos1.x,2) + pow(parent.pos2.y-parent.pos1.y,2))\" i}}\nblack_outside false\nname Transform6\nlabel S\nxpos -535\nypos -160\n}\nCrop {\nbox {0 0 {Input1.width} 1}\nreformat true\ncrop false\nname Crop1\nxpos -536\nypos -121\n}\nReformat {\ntype \"to box\"\nbox_width {{Input1.width}}\nbox_height {{Input1.height}}\nbox_fixed true\nresize distort\nfilter Impulse\nname Reformat1\nxpos -536\nypos -92\n}\nExpression {\nexpr0 \"fabs((y/height)-r)<=tolerance ? 1 : 0\"\nexpr1 \"fabs((y/height)-g)<=tolerance ? 1 : 0\"\nexpr2 \"fabs((y/height)-b)<=tolerance ? 1 : 0\"\nname Expression3\nxpos -536\nypos -47\naddUserKnob {20 User}\naddUserKnob {7 tolerance}\ntolerance {{parent.thickness/100}}\n}\nset N3aace450 [stack 0]\npush $N3aace450\nChannelMerge {\ninputs 2\nA rgba.red\nB rgba.green\nname ChannelMerge1\nxpos -536\nypos -9\n}\nset N3af6cfc0 [stack 0]\npush $N3af6cfc0\nChannelMerge {\ninputs 2\nB rgba.blue\nname ChannelMerge2\nxpos -536\nypos 37\n}\nset N3af6d330 [stack 0]\npush $N3aace450\nDot {\nname Dot3\nxpos -293\nypos -44\n}\nset N3aace7c0 [stack 0]\nDot {\nname Dot4\nxpos -192\nypos -44\n}\nset N3aaceb30 [stack 0]\nDot {\nname Dot6\nxpos -93\nypos -44\n}\nset N3aaceea0 [stack 0]\nDot {\nname Dot9\nxpos 29\nypos -44\n}\npush $Ned85690\nDot {\nname Dot2\nxpos -367\nypos -252\n}\nset N3aacf580 [stack 0]\nDot {\nname Dot1\nxpos -249\nypos -252\n}\nset N3aacf8f0 [stack 0]\nDot {\nname Dot5\nxpos -136\nypos -252\n}\nset N3aacfc60 [stack 0]\nDot {\nname Dot8\nxpos -26\nypos -252\n}\nset N3aacffd0 [stack 0]\nDot {\nname Dot7\nxpos 90\nypos -252\n}\nContactSheet {\ninputs 2\nwidth {{Input1.width i}}\nheight {{Input1.height*2 i}}\nrows 2\ncolumns 1\nroworder TopBottom\nname ContactSheet2\nxpos 56\nypos -23\n}\npush $N3aaceea0\npush $N3aacffd0\nContactSheet {\ninputs 2\nwidth {{Input1.width i}}\nheight {{Input1.height*2 i}}\nrows 2\ncolumns 1\nname ContactSheet3\nxpos -56\nypos -21\n}\npush $N3aaceb30\npush $N3aacfc60\nContactSheet {\ninputs 2\nwidth {{Input1.width*2 i}}\nheight {{Input1.height i}}\nrows 1\ncolumns 2\ncolorder RightLeft\nname ContactSheet4\nxpos -170\nypos -16\n}\npush $N3aace7c0\npush $N3aacf8f0\nContactSheet {\ninputs 2\nwidth {{Input1.width*2 i}}\nheight {{Input1.height i}}\nrows 1\ncolumns 2\nname ContactSheet1\nxpos -283\nypos -17\n}\npush $N3af6d330\npush $N3aacf580\nMerge2 {\ninputs 2\nname Merge1\nxpos -401\nypos 48\n}\nSwitch {\ninputs 6\nwhich {{parent.output}}\nname Switch1\nxpos -283\nypos 126\n}\nOutput {\nname Output1\nxpos -283\nypos 193\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Sparky.gizmo",
    "content": "Group {\n name Sparky\n tile_color 0xbd4600ff\n label \"\\[if \\{\\[value ROrP]==false\\} \\{return \\\"Render Mode\\\"\\} \\{return \\\"!! PARTICLE MODE !! \\\\nENABLED\\\"\\}]\"\n note_font \"Bitstream Vera Sans Bold\"\n selected true\n lock_connections true\n addUserKnob {20 SparkTab l \"Sparky Settings\"}\n addUserKnob {41 start_frame l \"Initial Frame\" T SparkEmit.start_frame}\n addUserKnob {7 EmissionRate l \"Emission Amount\" R 0 100}\n EmissionRate 15\n addUserKnob {26 \"\"}\n addUserKnob {26 emittertext l \"\" +STARTLINE T \"Emitter Settings\"}\n addUserKnob {13 Direction t \"Set the initial velocity applied to the particles. This will orient the sparks in 3D space.\"}\n Direction {100 40 0}\n addUserKnob {7 MaxLife l \"Particle Life\" t \"Maximum amount of frames the particles will live for.\" R 10 100}\n MaxLife 60\n addUserKnob {7 LifeRange l \"Life Range\" t \"Randomizes the Life Range of the particles.\" R 0 2}\n LifeRange 0.75\n addUserKnob {3 seed l \"Particle  Seed\" t \"Randomizes the simulation.\"}\n seed 123\n addUserKnob {26 \"\"}\n addUserKnob {7 ParticleSize l \"Particle Size\" t \"Change Particle Size\" R 1 5}\n ParticleSize 2\n addUserKnob {7 Explosivity t \"Changes how much influence the initial force has on the particles.\" R 0 100}\n Explosivity 45\n addUserKnob {7 Scatter t \"Adds some randomness between particles.\" R 0 100}\n Scatter 100\n addUserKnob {41 Softness l \"Particle Softness\" T CustomKnobs.Softness}\n addUserKnob {26 \"\"}\n addUserKnob {4 ROption l \"Render Options\" t \"Multi Scanline: Output is a ScanlineRender with motionblur enabled. Can be DeepMerged\\nVectorBlur: 2D motionblur added post-render. Can get rid of sample issues, but is not Deep compatible.\" M {\"Multi Scanline\" VectorBlur \"\" \"\"}}\n addUserKnob {41 format l Format T RootFormatSetup.format}\n addUserKnob {14 Overscan R 0 100}\n Overscan 100\n addUserKnob {6 ROrP l \"Output As Particles\" t \"Check this to output Particles instead of a 2D render.\\nIt can then be plugged into a 3D scene.\" +INVISIBLE +STARTLINE}\n addUserKnob {6 OutputDeep l \"Output Deep\" t \"Warning: Will output in Multi-Scanlinde mode only. Doesn't have any effect if \\\"Output As Particles is selected\\\".\" -STARTLINE}\n addUserKnob {22 outParticles l \"Output As Particles\" t \"Click this to output Particles instead of a 2D render.\\nIt can then be plugged into a 3D scene.\" T \"n = nuke.thisNode()\\n\\nn.begin()\\n\\nSwitch = nuke.toNode('DotSwitch')\\nP= nuke.toNode('ParticlesDot')\\nR= nuke.toNode('RenderDot')\\n\\nif n\\['ROrP'].value() ==0:\\n    Switch.setInput(0,P)\\n    n\\['ROrP'].setValue(1)\\n    n\\['outParticles'].setLabel(\\\"Output As 2D Render\\\")\\nelse:\\n    Switch.setInput(0,R)\\n    n\\['ROrP'].setValue(0)\\n    n\\['outParticles'].setLabel(\\\"Output As Particles\\\")\\n\\nn.end()\\n\" +STARTLINE}\n addUserKnob {20 Presets}\n addUserKnob {4 AnimPreset l \"Animation Presets\" t \"None: This wont do anything. Serves as safety to not enable a preset accidentally\\nSingle Hit Heavy: Heavy hit with a double pop.\\nSingle Hit Light : Light pop of sparks.\\nWelding : Expression that will mimic a natural welding feeling.\\nWavy : Constant sim with some strong variation in birth rate.\\nConstant : Softer variation than the Wavy preset.\\nLoopy : Loops the same pop of Sparks.\" M {None \"Single Hit Heavy\" \"Single Hit Light\" Welding Wavy Constant Loopy \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {22 Apply l \"Apply Preset\" t \"    \" T \"def checkPreset():\\n    preset = int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    print(preset)\\n    if preset ==0:\\n        return False\\n    else:\\n        return preset\\n\\ndef checkFrame():\\n    InitFrame = nuke.getInput(\\\"Enter Initial Frame\\\", '1001')\\n    if InitFrame:\\n        try:\\n            InitFrame = int(InitFrame)\\n            return InitFrame\\n        except ValueError:\\n            nuke.message(\\\"Not a valid frame number\\\")\\n            return False\\n\\n\\nif checkPreset() == False:\\n    nuke.ask(\\\"No preset selected\\\")\\nelse:\\n    n=nuke.thisNode()\\['EmissionRate']\\n    s=int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    cf=checkFrame()\\n    if cf!=False and cf!=None:\\n        if s == 1:        \\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 400 x%v2 0 12 x%v3 175 x%v4 20 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+6))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+12))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Heavy Preset\\\")\\n        elif s == 2:\\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 140 x%v2 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Light Preset\\\")\\n        elif s == 3:\\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"max(0,(random(frame+seed)*120*((sin(frame+seed)+1)*0.5)-12))*3\\\")\\n            nuke.message(\\\"Applied Welding Preset\\\")\\n        elif s == 4:\\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame+seed)*120*((sin(frame+seed)+1)*0.5)\\\")\\n            nuke.message(\\\"Applied Wavy Preset\\\")\\n        elif s == 5:\\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame/5+seed)*100+60\\\")\\n            nuke.message(\\\"Applied Constant Preset\\\")\\n        else:\\n            print(\\\"Initial frame is x\\\" + str(cf))\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve(((frame-%v1)%(%v6-%v1+1))+%v1) K x%v1 0 S 400 x%v2 0 x%v3 12 175 x%v4 20 x%v5 0 x%v6 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+4))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+7))\\n            sCurve=sCurve.replace(\\\"%v5\\\",str(cf+11))\\n            sCurve=sCurve.replace(\\\"%v6\\\",str(cf+14))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Loopy Preset\\\")\\n\\n\" +STARTLINE}\n addUserKnob {20 Advanced l \"Advanced Settings\"}\n addUserKnob {7 TVelocity l \"Transfer Velocity\"}\n TVelocity 0.5\n addUserKnob {7 TWindow l \"Transfer window\" R 0 5}\n TWindow 2\n addUserKnob {7 Spread l \"Emission Spread\"}\n Spread 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 samples l \"Scanline Samples\" T MultiSampleRender.samples}\n addUserKnob {7 Shutter}\n Shutter 0.5\n addUserKnob {41 shutteroffset l \"Shutter Offset\" T MultiSampleRender.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T MultiSampleRender.shuttercustomoffset}\n addUserKnob {20 Instructions}\n addUserKnob {26 info l \"\" +STARTLINE T \"Sparky v1.5\\n\\nEasy to use particle setup for Sparks.\\n\\nOutputs an image by default, but can be configured to be rendered through a specific Camera or\\nto output as particles, which allows you to plug Sparky into a 3D scene.\\n\\nIf you wish to use the 3D version of this Gizmo, simply plug your Camera and plug an Axis to \\nmove and place the sparks where you need them.\\n\\nFor more information about presets and changelogs, head to the Nukepedia page!\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode9\n  tile_color 0x557fffff\n  label \"Welcome Curious Comper!\\n\\nI hope you'll find answers\\nto what you are looking for\\ninside here! <img src=\\\"ParticleBounce.png\\\">\"\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 111\n  xpos -2486\n  ypos -861\n  bdwidth 2780\n  bdheight 1970\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -1457\n  ypos 312\n }\n Dot {\n  name Dot3\n  xpos -1423\n  ypos 551\n }\n Camera2 {\n  inputs 0\n  translate {0 -100 1200}\n  focal 20\n  haperture 24\n  vaperture 13.5\n  near 1\n  far 1000000\n  name Default2DCam\n  xpos -1217\n  ypos 210\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name Switch1\n  xpos -1227\n  ypos 548\n }\nset N10a85330 [stack 0]\n ColorWheel {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  gamma 0.45\n  name ColorWheel1\n  xpos -1170\n  ypos -537\n }\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation1\n  xpos -1170\n  ypos -427\n }\n FilterErode {\n  channels all\n  size {{abs(parent.CustomKnobs.Softness)}}\n  filter gaussian\n  name ErodeSoft\n  xpos -1170\n  ypos -384\n }\n Reformat {\n  type scale\n  scale 0.125\n  resize distort\n  black_outside true\n  name Reformat2\n  xpos -1170\n  ypos -325\n }\n Grade {\n  white {0.9 0.35 0.085 1}\n  name Grade1\n  xpos -1170\n  ypos -267\n }\n BlendMat {\n  operation max\n  surfaceblend modulate\n  name BlendMat1\n  xpos -971\n  ypos -267\n }\n Noise {\n  inputs 0\n  size 750\n  zoffset {{frame/5+CustomKnobs.time_offset}}\n  octaves 6\n  lacunarity 1.45\n  gain 0.6\n  center {1440 810}\n  name Noise6\n  xpos -676\n  ypos -548\n }\nset N10a0e6f0 [stack 0]\n Sphere {\n  name Sphere1\n  xpos -770\n  ypos -456\n }\npush $N10a0e6f0\n Sphere {\n  translate {{parent.input1.translate} {parent.input1.translate} {parent.input1.translate}}\n  rotate {{parent.input1.rotate} {parent.input1.rotate} {parent.input1.rotate}}\n  scaling {{parent.input1.scaling} {parent.input1.scaling} {parent.input1.scaling}}\n  name Sphere2\n  xpos -575\n  ypos -460\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos -676\n  ypos -342\n }\npush 0\n ParticleEmitter {\n  inputs 3\n  start_frame 1001\n  emit_from faces\n  randomize_type \"randomized direction\"\n  rate {{parent.EmissionRate}}\n  rate_variation 0.5\n  rate_channel rgba.red\n  lifetime {{parent.MaxLife}}\n  lifetime_variation {{parent.LifeRange}}\n  halflife {{lifetime/2.5}}\n  velocity {{\"!\\[exists parent.input1]?7.5+(10*Explosivity/100):7.5+(10*Explosivity/100)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  velocity_variation {{0.125+abs((min(100,parent.Scatter)*0.035))}}\n  size {{\"!\\[exists parent.input1]?max(0.1,parent.ParticleSize):max(0.01,parent.ParticleSize)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  size_variation 1.6\n  mass {{\"!\\[exists parent.input1]?0.5+(1-(clamp(parent.Explosivity,0,100))/100)*3.5:(0.5+((1-(clamp(parent.Explosivity,0,100))/100)*3.5))*(((parent.input1.uniform_scale-1)*0.25)+1)\"}}\n  mass_variation {{1.5*(clamp(parent.Scatter,0,100))/100}}\n  transfer_velocity {{parent.TVelocity}}\n  transfer_window {{parent.TWindow}}\n  spread {{parent.Spread}}\n  color {0.9 0.35 0.085 1}\n  seed {{CustomKnobs.time_offset}}\n  name SparkEmit\n  xpos -676\n  ypos -267\n }\n ParticleDirectionalForce {\n  strength {{\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"}}\n  max_age {{1/(max(1,parent.SparkEmit.lifetime*1.25))}}\n  name ParticleDirectionalForce\n  xpos -676\n  ypos -120\n }\n ParticleDrag {\n  drag 0.6\n  name ParticleDrag\n  xpos -676\n  ypos -36\n }\n ParticleTurbulence {\n  strength {2 0.85 4}\n  scale {5 10 20}\n  name ParticleTurbulence\n  xpos -676\n  ypos 22\n }\n ParticleDrag {\n  drag 0.1\n  name ParticleDrag2\n  xpos -676\n  ypos 86\n }\n ParticleGravity {\n  to {0 {\"!\\[exists parent.input1]?-3:-1-(2*(parent.input1.uniform_scale))\"} 0}\n  min_age 0.1\n  name ParticleGravity\n  xpos -676\n  ypos 148\n }\n ParticleCurve {\n  curves {r {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    g {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    b {curve L x0.04740819708 1 S l x1 0}\n    a {curve L x0.04740819708 1 S l x0.4939824343 0.7353233099 x1 0}\n    size {}\n    mass {}}\n  seed {{HiddenSeed}}\n  name FadeOut\n  xpos -676\n  ypos 201\n }\n ParticleSettings {\n  name ParticleSettings1\n  xpos -676\n  ypos 265\n }\nset Na063a70 [stack 0]\n Dot {\n  name Dot6\n  xpos -642\n  ypos 516\n }\nset Na06c0d0 [stack 0]\n Constant {\n  inputs 0\n  name Constant1\n  xpos -161\n  ypos 316\n }\n Reformat {\n  resize none\n  name RootFormatSetup\n  xpos -161\n  ypos 406\n  addUserKnob {20 User}\n  addUserKnob {14 Overscan R 0 100}\n  Overscan {{parent.Overscan}}\n }\n Dot {\n  name Dot4\n  xpos -127\n  ypos 551\n }\nset Na08a170 [stack 0]\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  overscan {{parent.RootFormatSetup.Overscan}}\n  spatial_jitter 0.1\n  motion_vectors_type velocity\n  name NO_Motionblur\n  xpos -449\n  ypos 548\n }\n VectorBlur2 {\n  channels rgba\n  uv forward\n  alpha -rgba.alpha\n  scale 0.5\n  motion_falloff 0.65\n  offset 0\n  grow_bbox 40\n  normalize false\n  name MBlur\n  xpos -448\n  ypos 708\n }\npush $N10a85330\n Dot {\n  name Dot48\n  xpos -1192\n  ypos 640\n }\npush $Na06c0d0\npush $Na08a170\n Dot {\n  name Dot5\n  xpos -126\n  ypos 640\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  ambient {{parent.RootFormatSetup.Overscan}}\n  samples 30\n  shutter {{parent.Shutter}}\n  spatial_jitter 0.025\n  motion_vectors_type velocity\n  name MultiSampleRender\n  xpos -676\n  ypos 637\n }\n Switch {\n  inputs 2\n  which {{OutputDeep==1?0:ROption}}\n  name Switch2\n  xpos -677\n  ypos 714\n }\n Dot {\n  name RenderDot\n  xpos -643\n  ypos 763\n }\n Dot {\n  name DotSwitch\n  xpos -643\n  ypos 904\n }\n Output {\n  name Output\n  xpos -677\n  ypos 1014\n }\n NoOp {\n  inputs 0\n  name CustomKnobs\n  tile_color 0xff9fff\n  xpos -90\n  ypos -264\n  addUserKnob {20 User}\n  addUserKnob {7 Softness R 0 100}\n  Softness 10\n  addUserKnob {3 time_offset l Seed}\n  time_offset {{parent.seed}}\n }\n Input {\n  inputs 0\n  name Axis\n  xpos -358\n  ypos -541\n  number 1\n }\n Dot {\n  name Dot7\n  xpos -324\n  ypos -479\n }\npush $Na063a70\n Dot {\n  name Dot2\n  xpos -924\n  ypos 711\n }\n Dot {\n  name ParticlesDot\n  xpos -924\n  ypos 831\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Spill_Correct.gizmo",
    "content": "Group {\n name Spill_Correct\n help \"Use this tool to \\\"despill\\\" or mute colors introduced from Red/Green/Blue screens.\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkName = k.name()\\nif kName == \\\"neutralize\\\":\\n    n.knob('neutral_color').setEnabled(k.value())\\n    n.knob('plate_only').setEnabled(k.value())\"\n addUserKnob {20 Spill_Correct}\n addUserKnob {68 algorithm l Algorithm t \"Choose Algorithm to perform Despill.\\nKillspill is using an IBK inspired process.\\nAverage/Double Average/Limits are algorithms taken from Despill_Madness, extrapolated to work on red despill as well.\" M {KeySpill Average \"Double Average R>G>B\" \"Double Average B>G>R\" \"Limit R>G>B\" \"Limit B>G>R\" \"\" \"\"}}\n addUserKnob {18 screen_color l \"Screen Color\" t \"Pick the color of the spill to remove.\"}\n screen_color {0 1 0}\n addUserKnob {6 screen_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 fine_tune l \"Fine Tune\" t \"Tweak for the algorithms.\" R 0.5 1.5}\n fine_tune 1\n addUserKnob {26 \"\"}\n addUserKnob {6 neutralize l \"Neutralize Color\" t \"On a plate with an overall color tint, the despill might affect more than the spill areas. \\nNeutralizing the color before the despill can solve these this problem.\" +STARTLINE}\n addUserKnob {18 neutral_color l \"Neutral Color\" t \"Pick the color to protect.\\nNote: No Neutralize will happen if one of the color values is 0, as this would break the math.\" +DISABLED}\n neutral_color {1 1 1}\n addUserKnob {6 neutral_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 plate_only l \"Plate Only\" t \"By cheking this box, the Neutralize will leave the replacement color untouched. \\nOtherwise, the replacement color will be tinted according to the original plate tint.\" -STARTLINE +DISABLED}\n plate_only true\n addUserKnob {26 \"\"}\n addUserKnob {18 replace l \"Replacement Gain\" t \"Spill color is desaturated to preserve brightness.\\nGain this up or down to fix dark/bright edges.\" R 0 2}\n replace 1\n addUserKnob {6 replace_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 gamma l \"Replacement Gamma\" t \"Gamma correct your spill replacement.\" R 0.5 1.5}\n gamma 1\n addUserKnob {6 gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {6 out_alpha l \"Output Spill Alpha\" t \"If checked, the node will output an alpha of the area despilled. Otherwise the original alpha will be left untouched.\" +STARTLINE}\n addUserKnob {7 mix l Mix t \"Mix between original and despilled version.\"}\n mix 1\n addUserKnob {26 spin_copyright_div l \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nSpill_Correct\\nVersion 2.0\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 2.0 - 2017-2019 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n BackdropNode {\n  inputs 0\n  name kbd8310\n  tile_color 0x5963525e\n  label \"KeySpill(IBK Style)\"\n  note_font_size 40\n  xpos -168\n  ypos -650\n  bdwidth 532\n  bdheight 471\n }\n BackdropNode {\n  inputs 0\n  name kbd9376\n  tile_color 0x5b655f64\n  label Average\n  note_font_size 40\n  xpos 414\n  ypos -650\n  bdwidth 408\n  bdheight 359\n  z_order 1\n }\n BackdropNode {\n  inputs 0\n  name kbd1\n  tile_color 0x587077ff\n  label \"Double Average BGR\"\n  note_font_size 40\n  xpos 1270\n  ypos -648\n  bdwidth 408\n  bdheight 359\n  z_order 2\n }\n BackdropNode {\n  inputs 0\n  name kbd2\n  tile_color 0x587077ff\n  label \"Limit BGR\"\n  note_font_size 40\n  xpos 2127\n  ypos -649\n  bdwidth 408\n  bdheight 359\n  z_order 2\n }\n BackdropNode {\n  inputs 0\n  name kbd3\n  tile_color 0x5850645d\n  label \"Limit RGB\"\n  note_font_size 40\n  xpos 1716\n  ypos -647\n  bdwidth 408\n  bdheight 359\n  z_order 2\n }\n BackdropNode {\n  inputs 0\n  name kbd3580\n  tile_color 0x5850645d\n  label \"Double Average RGB\"\n  note_font_size 40\n  xpos 859\n  ypos -647\n  bdwidth 408\n  bdheight 359\n  z_order 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos 151\n  ypos 1031\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos 262\n  ypos -920\n }\n Grade {\n  whitepoint {{parent.neutral_color} {parent.neutral_color} {parent.neutral_color} {parent.neutral_color}}\n  white {{parent.neutral_color.r*0.2126+parent.neutral_color.g*0.7152+parent.neutral_color.b*0.0722}}\n  black_clamp false\n  name Neutralize\n  xpos 262\n  ypos -860\n  disable {{(parent.neutral_color.r==0|parent.neutral_color.g==0|parent.neutral_color.b==0)|!parent.neutralize}}\n }\n Dot {\n  name Dot12\n  tile_color 0x7aa9ff00\n  xpos 296\n  ypos -725\n }\nset N615f5000 [stack 0]\n Dot {\n  name Dot13\n  tile_color 0x7aa9ff00\n  xpos 616\n  ypos -725\n }\nset N615f4c00 [stack 0]\n Dot {\n  name Dot24\n  tile_color 0x7aa9ff00\n  xpos 1061\n  ypos -725\n }\nset N615f4800 [stack 0]\n Dot {\n  name Dot26\n  tile_color 0x7aa9ff00\n  xpos 1472\n  ypos -725\n }\nset N615f4400 [stack 0]\n Dot {\n  name Dot31\n  tile_color 0x7aa9ff00\n  xpos 1918\n  ypos -725\n }\nset N615f4000 [stack 0]\n Dot {\n  name Dot36\n  tile_color 0x7aa9ff00\n  xpos 2329\n  ypos -725\n }\n Dot {\n  name Dot37\n  tile_color 0x7aa9ff00\n  xpos 2329\n  ypos -559\n }\nset N61611800 [stack 0]\n Dot {\n  name Dot38\n  tile_color 0x7aa9ff00\n  xpos 2439\n  ypos -559\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr2 b>g*LimitPercentage?g*LimitPercentage:b\n  name Limit_BG\n  xpos 2405\n  ypos -457\n }\npush $N61611800\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr1 g>r*LimitPercentage?r*LimitPercentage:g\n  name Limit_GR\n  xpos 2295\n  ypos -459\n }\npush $N61611800\n Dot {\n  name Dot39\n  tile_color 0x7aa9ff00\n  xpos 2211\n  ypos -559\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr0 r>b*LimitPercentage?b*LimitPercentage:r\n  name Limit_RB\n  xpos 2177\n  ypos -460\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB6\n  xpos 2295\n  ypos -360\n }\n Dot {\n  name Dot40\n  xpos 2329\n  ypos -130\n }\npush $N615f4000\n Dot {\n  name Dot32\n  tile_color 0x7aa9ff00\n  xpos 1918\n  ypos -557\n }\nset N61637800 [stack 0]\n Dot {\n  name Dot33\n  tile_color 0x7aa9ff00\n  xpos 2028\n  ypos -557\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr2 b>r*LimitPercentage?r*LimitPercentage:b\n  name Limit_BR\n  xpos 1994\n  ypos -455\n }\npush $N61637800\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr1 g>b*LimitPercentage?b*LimitPercentage:g\n  name Limit_GB\n  xpos 1884\n  ypos -457\n }\npush $N61637800\n Dot {\n  name Dot34\n  tile_color 0x7aa9ff00\n  xpos 1800\n  ypos -557\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr0 r>g*LimitPercentage?g*LimitPercentage:r\n  name Limit_RG\n  xpos 1766\n  ypos -458\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB5\n  xpos 1884\n  ypos -358\n }\n Dot {\n  name Dot35\n  xpos 1918\n  ypos -119\n }\npush $N615f4400\n Dot {\n  name Dot27\n  tile_color 0x7aa9ff00\n  xpos 1472\n  ypos -558\n }\nset N6165f800 [stack 0]\n Dot {\n  name Dot28\n  tile_color 0x7aa9ff00\n  xpos 1582\n  ypos -558\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr2 b>(2*g+r)/2*LimitPercentage?(r+2*g)/2*LimitPercentage:b\n  name DoubleAverage_B_2\n  xpos 1548\n  ypos -456\n }\npush $N6165f800\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr1 g>(b+2*r)/3*LimitPercentage?(b+2*r)/3*LimitPercentage:g\n  name DoubleAverage_G_2\n  xpos 1438\n  ypos -458\n }\npush $N6165f800\n Dot {\n  name Dot29\n  tile_color 0x7aa9ff00\n  xpos 1354\n  ypos -558\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr0 r>(g+2*b)/3*LimitPercentage?(g+2*b)/3*LimitPercentage:r\n  name DoubleAverage_R_2\n  xpos 1320\n  ypos -459\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB4\n  xpos 1438\n  ypos -359\n }\n Dot {\n  name Dot30\n  xpos 1472\n  ypos -130\n }\npush $N615f4800\n Dot {\n  name Dot21\n  tile_color 0x7aa9ff00\n  xpos 1061\n  ypos -557\n }\nset N61689800 [stack 0]\n Dot {\n  name Dot22\n  tile_color 0x7aa9ff00\n  xpos 1171\n  ypos -557\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr2 b>(g+2*r)/2*LimitPercentage?(2*r+g)/2*LimitPercentage:b\n  name DoubleAverage_B_1\n  xpos 1137\n  ypos -455\n }\npush $N61689800\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr1 g>(2*b+r)/3*LimitPercentage?(2*b+r)/3*LimitPercentage:g\n  name DoubleAverage_G_1\n  xpos 1027\n  ypos -457\n }\npush $N61689800\n Dot {\n  name Dot23\n  tile_color 0x7aa9ff00\n  xpos 943\n  ypos -557\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr0 r>(2*g+b)/3*LimitPercentage?(2*g+b)/3*LimitPercentage:r\n  name DoubleAverage_R_1\n  xpos 909\n  ypos -458\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB3\n  xpos 1027\n  ypos -358\n }\n Dot {\n  name Dot25\n  xpos 1061\n  ypos -119\n }\npush $N615f4c00\n Dot {\n  name Dot6\n  tile_color 0x7aa9ff00\n  xpos 616\n  ypos -560\n }\nset N636b1800 [stack 0]\n Dot {\n  name Dot15\n  tile_color 0x7aa9ff00\n  xpos 726\n  ypos -560\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr2 b>(r+g)/2*LimitPercentage?(r+g)/2*LimitPercentage:b\n  name Average_B\n  xpos 692\n  ypos -458\n }\npush $N636b1800\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr1 g>(b+r)/2*LimitPercentage?(b+r)/2*LimitPercentage:g\n  name Average_G\n  xpos 582\n  ypos -460\n }\npush $N636b1800\n Dot {\n  name Dot14\n  tile_color 0x7aa9ff00\n  xpos 498\n  ypos -560\n }\n Expression {\n  temp_name0 LimitPercentage\n  temp_expr0 parent.fine_tune\n  expr0 r>(g+b)/2*LimitPercentage?(g+b)/2*LimitPercentage:r\n  name Average_R\n  xpos 464\n  ypos -461\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB2\n  xpos 582\n  ypos -361\n }\n Dot {\n  name Dot20\n  xpos 616\n  ypos -130\n }\npush $N615f5000\n Dot {\n  name Dot9\n  tile_color 0x7aa9ff00\n  xpos 296\n  ypos -560\n }\nset N636d9800 [stack 0]\n Dot {\n  name Dot3\n  tile_color 0x7aa9ff00\n  xpos 296\n  ypos -505\n }\nset N636d9400 [stack 0]\n Dot {\n  name Dot11\n  tile_color 0x7aa9ff00\n  xpos 229\n  ypos -505\n }\nset N636d9000 [stack 0]\n Expression {\n  temp_name0 weight\n  temp_expr0 parent.fine_tune-0.5\n  channel0 rgba\n  expr0 (b-(g*weight+r*(1-weight)))/(parent.screen_color.b-(parent.screen_color.g*weight+parent.screen_color.r*(1-weight)))\n  name SpillMatte_B\n  xpos 195\n  ypos -451\n }\npush $N636d9000\n Dot {\n  name Dot10\n  tile_color 0x7aa9ff00\n  xpos 122\n  ypos -505\n }\nset N636d8800 [stack 0]\n Expression {\n  temp_name0 weight\n  temp_expr0 parent.fine_tune-0.5\n  channel0 rgba\n  expr0 (g-(r*weight+b*(1-weight)))/(parent.screen_color.g-(parent.screen_color.r*weight+parent.screen_color.b*(1-weight)))\n  name SpillMatte_G\n  xpos 88\n  ypos -451\n }\npush $N636d8800\n Dot {\n  name Dot1\n  tile_color 0x7aa9ff00\n  xpos 25\n  ypos -505\n }\n Expression {\n  temp_name0 weight\n  temp_expr0 parent.fine_tune-0.5\n  channel0 rgba\n  expr0 (r-(b*weight+g*(1-weight)))/(parent.screen_color.r-(parent.screen_color.b*weight+parent.screen_color.g*(1-weight)))\n  name SpillMatte_R\n  xpos -9\n  ypos -454\n }\n Switch {\n  inputs 3\n  which {{parent.screen_color.r>max(parent.screen_color.g,parent.screen_color.b)?0:parent.screen_color.b>=max(parent.screen_color.r,parent.screen_color.g)?2:1}}\n  name Switch_maxRGB1\n  xpos 89\n  ypos -395\n }\n Clamp {\n  maximum_enable false\n  name Clamp1\n  xpos 89\n  ypos -365\n }\n Expression {\n  channel0 rgba\n  expr0 \"isinf(r)? 0:r\"\n  name fix_inf\n  xpos 89\n  ypos -327\n }\n Expression {\n  channel0 rgba\n  expr0 \"isnan(r)? 0:r\"\n  name fix_nan\n  xpos 89\n  ypos -301\n }\n Dot {\n  name Dot8\n  xpos 123\n  ypos -276\n }\n Dot {\n  name Dot7\n  xpos -50\n  ypos -276\n }\npush $N636d9800\n Dot {\n  name Dot2\n  tile_color 0x7aa9ff00\n  xpos -84\n  ypos -560\n }\n Expression {\n  expr0 parent.screen_color.r\n  expr1 parent.screen_color.g\n  expr2 parent.screen_color.b\n  name Screen_Color\n  xpos -118\n  ypos -479\n }\n Dot {\n  name Dot47\n  xpos -84\n  ypos -419\n }\nset N2421e800 [stack 0]\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  name Merge1\n  xpos -118\n  ypos -251\n }\npush $N636d9400\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  name Merge2\n  xpos 262\n  ypos -251\n }\n Dot {\n  name Dot4\n  xpos 296\n  ypos -139\n }\n Switch {\n  inputs 6\n  which {{parent.algorithm}}\n  name Algorithm_Switch\n  xpos 582\n  ypos 225\n }\n Dot {\n  name Dot19\n  tile_color 0xcccccc00\n  xpos 616\n  ypos 310\n }\nset N6372e800 [stack 0]\npush $N615f5000\n Dot {\n  name Dot17\n  tile_color 0x7aa9ff00\n  xpos -236\n  ypos -725\n }\n Dot {\n  name Dot18\n  tile_color 0x7aa9ff00\n  xpos -236\n  ypos 310\n }\nset N6372e000 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  bbox B\n  name Merge3\n  xpos 371\n  ypos 306\n }\n Saturation {\n  saturation 0\n  name DeSaturate\n  xpos 371\n  ypos 362\n }\nset N63755800 [stack 0]\n Input {\n  inputs 0\n  name Inputbg\n  xpos -198\n  ypos 364\n  number 2\n }\npush $N2421e800\n Dot {\n  name Dot48\n  xpos -155\n  ypos -419\n }\n Saturation {\n  saturation 0\n  name DeSaturate1\n  xpos -68\n  ypos 211\n }\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge7\n  xpos -68\n  ypos 362\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge6\n  xpos 88\n  ypos 362\n }\nset N2421ec00 [stack 0]\n Dot {\n  name Dot49\n  xpos 122\n  ypos 416\n }\npush $N63755800\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input2]\"}}\n  name Switch2\n  xpos 371\n  ypos 412\n }\n Dot {\n  name Dot43\n  tile_color 0x7aa9ff00\n  xpos 405\n  ypos 450\n }\nset N63755400 [stack 0]\n Multiply {\n  value {{parent.replace} {parent.replace} {parent.replace} {parent.replace}}\n  name Replace_color_Mult\n  xpos 371\n  ypos 484\n }\n Gamma {\n  value {{parent.gamma} {parent.gamma} {parent.gamma} {parent.gamma}}\n  name Gamma\n  xpos 371\n  ypos 536\n }\n Dot {\n  name Dot16\n  tile_color 0x7aa9ff00\n  xpos 405\n  ypos 609\n }\npush $N6372e800\n Grade {\n  whitepoint {{parent.neutral_color} {parent.neutral_color} {parent.neutral_color} {parent.neutral_color}}\n  white {{parent.neutral_color.r*0.2126+parent.neutral_color.g*0.7152+parent.neutral_color.b*0.0722}}\n  reverse true\n  black_clamp false\n  name Neutralize1\n  xpos 582\n  ypos 456\n  disable {{((parent.neutral_color.r==0|parent.neutral_color.g==0|parent.neutral_color.b==0)|!parent.neutralize)|!parent.plate_only}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  output rgb\n  name Merge5\n  xpos 582\n  ypos 605\n }\n Dot {\n  name Dot44\n  tile_color 0x4b5ec600\n  xpos 616\n  ypos 692\n }\npush $N6372e000\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  from1 rgba.green\n  to1 rgba.green\n  from2 rgba.blue\n  to2 rgba.blue\n  bbox B\n  name Copy2\n  xpos -270\n  ypos 670\n }\npush $N6372e000\n Dot {\n  name Dot46\n  tile_color 0x7aa9ff00\n  xpos -346\n  ypos 310\n }\n Dot {\n  name Dot41\n  tile_color 0x7aa9ff00\n  xpos -346\n  ypos 879\n }\nset N63784c00 [stack 0]\n Dissolve {\n  inputs 2\n  which {{parent.mix}}\n  name Dissolve1\n  xpos -270\n  ypos 869\n }\nset N63784800 [stack 0]\n Expression {\n  expr0 0\n  expr1 0\n  expr2 0\n  expr3 1\n  name Expression1\n  xpos 26\n  ypos 875\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1] \"}}\n  name Switch1\n  xpos 26\n  ypos 1031\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -88\n  ypos 1025\n }\nset N637afc00 [stack 0]\npush $N63755400\n Dot {\n  name Dot5\n  tile_color 0x7aa9ff00\n  xpos 295\n  ypos 450\n }\n Multiply {\n  value {{parent.mix}}\n  name Multiply1\n  xpos 261\n  ypos 917\n }\n Dot {\n  name Dot45\n  tile_color 0x7aa9ff00\n  xpos 295\n  ypos 1162\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  bbox B\n  name Merge4\n  xpos -88\n  ypos 1158\n }\n Clamp {\n  channels alpha\n  name Clamp2\n  xpos -88\n  ypos 1238\n }\npush $N637afc00\npush $N63784c00\n Dot {\n  name Dot42\n  tile_color 0x7aa9ff00\n  xpos -346\n  ypos 1035\n }\npush $N63784800\n Keymix {\n  inputs 3\n  bbox B\n  name Keymix1\n  xpos -270\n  ypos 1025\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  bbox B\n  name Copy1\n  xpos -270\n  ypos 1238\n  disable {{!parent.out_alpha}}\n }\n Grade {\n  whitepoint {{parent.neutral_color} {parent.neutral_color} {parent.neutral_color} {parent.neutral_color}}\n  white {{parent.neutral_color.r*0.2126+parent.neutral_color.g*0.7152+parent.neutral_color.b*0.0722}}\n  reverse true\n  black_clamp false\n  name Neutralize2\n  xpos -270\n  ypos 1332\n  disable {{((parent.neutral_color.r==0|parent.neutral_color.g==0|parent.neutral_color.b==0)|!parent.neutralize)|parent.plate_only}}\n }\n Output {\n  name Output1\n  xpos -270\n  ypos 1429\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SpotFlare.gizmo",
    "content": "Group {\n inputs 0\n name SpotFlare\n tile_color 0x2f66ff\n addUserKnob {20 User}\n addUserKnob {26 Headline l \"\" +STARTLINE T \"<font color=#80dddd size=\\\"7\\\">S</font><font color=#90dede size=\\\"7\\\">p</font><font color=#a0dfdf size=\\\"7\\\">o</font><font color=#b0e0e0 size=\\\"7\\\">t</font><font color=#c0e1e1 size=\\\"7\\\">F</font><font color=#b0e0e0 size=\\\"7\\\">l</font><font color=#a0dfdf size=\\\"7\\\">are</font><font color=#90dede size=\\\"3\\\">v</font><font color=#80dddd size=\\\"2\\\">1.0</font>\"}\n addUserKnob {26 HeadlineB l \"\" +STARTLINE T \"<font color=#80dddd size=\\\"2\\\">by Mads Hagbarth Lund</font>\"}\n addUserKnob {26 devider001 l \"<b><font color=#70EE70>General</font><b>\"}\n addUserKnob {12 Position}\n Position {1036 496}\n addUserKnob {7 Gain}\n Gain 0.63\n addUserKnob {7 Gamma R 0 5}\n Gamma 1.12\n addUserKnob {7 Scale}\n Scale 0.55\n addUserKnob {6 SoftClip t \"By default, spotflare will be very bright at the center. Use softclip to limit the maximum brightness.\" +STARTLINE}\n addUserKnob {7 softclipmax l max -STARTLINE R 1 100}\n softclipmax 10\n addUserKnob {6 glow_enable l Glow +STARTLINE}\n glow_enable true\n addUserKnob {6 EffectOnly l \"Effect Only\" +STARTLINE}\n EffectOnly true\n addUserKnob {22 FixJitter l \"Fix Jitter\" t \"This does nothing... yet still fixes the bug with the expression node not updating its cashe from time to time.\\nPlease fix The Foundry!\" +STARTLINE}\n addUserKnob {26 devider02 l \"<b><font color=#70EE70>Color</font><b>\"}\n addUserKnob {18 GainTint}\n GainTint {0.601217 0.681301 1}\n addUserKnob {6 GainTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n GainTint_panelDropped true\n addUserKnob {18 GammaTint}\n GammaTint {1 1 1}\n addUserKnob {6 GammaTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n GammaTint_panelDropped true\n addUserKnob {26 devide01 l \"\" +STARTLINE T \" \"}\n addUserKnob {22 Reset l \"Reset Color\" T \"nuke.thisNode().knob(\\\"GainTint\\\").setValue(1,0)\\nnuke.thisNode().knob(\\\"GainTint\\\").setValue(1,1)\\nnuke.thisNode().knob(\\\"GainTint\\\").setValue(1,2)\\nnuke.thisNode().knob(\\\"GainTint\\\").setValue(1,3)\\nnuke.thisNode().knob(\\\"GammaTint\\\").setValue(1,0)\\nnuke.thisNode().knob(\\\"GammaTint\\\").setValue(1,1)\\nnuke.thisNode().knob(\\\"GammaTint\\\").setValue(1,2)\\nnuke.thisNode().knob(\\\"GammaTint\\\").setValue(1,3)\" +STARTLINE}\n addUserKnob {26 DeviderShimmer l \"<b><font color=#70EE70>Shimmer</font><b>\"}\n addUserKnob {6 shimmer_enable l Shimmer +STARTLINE}\n shimmer_enable true\n addUserKnob {7 lacunarity l Detail R 0 5}\n lacunarity 3.5\n addUserKnob {7 noise_gain l Gain}\n noise_gain 1\n addUserKnob {7 Speed}\n Speed 0.76\n addUserKnob {7 Noise_Gang l \"Time Offset\" R 0 1000}\n Noise_Gang 240\n addUserKnob {26 devider04 l \"<b><font color=#70EE70>Masking</font><b>\"}\n addUserKnob {6 Mask +STARTLINE}\n addUserKnob {7 MaskRotation l \"Mask Rotation\"}\n MaskRotation 0.31\n addUserKnob {7 MaskGain l \"Mask Gain\"}\n MaskGain 0.4\n addUserKnob {7 MaskSoftness R 0 10}\n MaskSoftness 2.35\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode5\n  tile_color 0x71c67100\n  label \"Spot Facing\"\n  note_font_size 42\n  xpos -1463\n  ypos 208\n  bdwidth 252\n  bdheight 258\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x388e8e00\n  label Glow\n  note_font_size 42\n  xpos -597\n  ypos 209\n  bdwidth 280\n  bdheight 258\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x7171c600\n  label Spike\n  note_font_size 42\n  xpos -222\n  ypos 207\n  bdwidth 270\n  bdheight 257\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0xffffffff\n  gl_color 0xff\n  label \"WELCOME TO SPOTFLARE\"\n  note_font_size 42\n  xpos -904\n  ypos -206\n  bdwidth 523\n  bdheight 138\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode6\n  tile_color 0xff\n  label \"PLEASE ENJOY\"\n  note_font_size 42\n  xpos -801\n  ypos 896\n  bdwidth 333\n  bdheight 160\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x8e388e00\n  label Glare\n  note_font_size 42\n  xpos -1156\n  ypos 207\n  bdwidth 468\n  bdheight 298\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"This is a super inefficient way\\nto avoid the 1-0 seam and\\na major performence hit.\\nIf anyone have a better solution,\\nplease mail me! =)\"\n  note_font_size 8\n  xpos -1045\n  ypos 350\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xcc0000ff\n  gl_color 0xcc0000ff\n  label \"not yet implamented\"\n  xpos -222\n  ypos 206\n }\n Dot {\n  inputs 0\n  name Dot19\n  tile_color 0xff0000ff\n  xpos -674\n  ypos -127\n  hide_input true\n }\n Dot {\n  inputs 0\n  name Dot20\n  tile_color 0xffff00ff\n  xpos -658\n  ypos -127\n  hide_input true\n }\n Dot {\n  inputs 0\n  name Dot21\n  tile_color 0xff00ff\n  xpos -641\n  ypos -127\n  hide_input true\n }\n Dot {\n  inputs 0\n  name Dot22\n  tile_color 0xffffff\n  xpos -624\n  ypos -127\n  hide_input true\n }\n Dot {\n  inputs 0\n  name Dot23\n  tile_color 0xffff\n  xpos -607\n  ypos -127\n  hide_input true\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -674\n  ypos -106\n }\n Dot {\n  name Dot13\n  xpos -640\n  ypos -25\n }\nset N60fa3bb0 [stack 0]\n Reformat {\n  black_outside true\n  name Reformat1\n  xpos -674\n  ypos 11\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle3\n  xpos -674\n  ypos 35\n }\n Dot {\n  name Dot1\n  xpos -640\n  ypos 131\n }\nset N60fa4600 [stack 0]\n Dot {\n  name Dot9\n  xpos -456\n  ypos 131\n }\nset N60fa8e30 [stack 0]\n Dot {\n  name Dot2\n  xpos -61\n  ypos 131\n }\n Expression {\n  expr0 \"(atan(x-parent.Position.x,-y--parent.Position.y)+ (pi))/(pi*2)\"\n  name Expression8\n  xpos -95\n  ypos 268\n }\n Expression {\n  expr0 sin(r*(16*pi))\n  name Expression14\n  xpos -95\n  ypos 310\n }\n Grade {\n  white 0.89\n  gamma 0.2\n  name Grade6\n  xpos -95\n  ypos 352\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle2\n  xpos -95\n  ypos 396\n }\npush $N60fa8e30\n Expression {\n  temp_name0 xd\n  temp_expr0 parent.Position.x-x\n  temp_name1 yd\n  temp_expr1 parent.Position.y-y\n  temp_name2 dist\n  temp_expr2 \"sqrt(xd*xd + yd*yd)\"\n  temp_name3 scale\n  temp_expr3 \"dist / ((parent.Scale*1))\"\n  expr0 scale\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  enable_mix_luminance false\n  name distance\n  xpos -490\n  ypos 262\n }\n Grade {\n  white {{pow(1-parent.Gain,4)}}\n  gamma {{pow2(parent.Gamma)}}\n  name Grade16\n  xpos -490\n  ypos 305\n }\n Expression {\n  temp_name3 invsqr\n  temp_expr3 isnan(r)?0:1/(r*r)\n  expr0 invsqr\n  expr1 invsqr\n  expr2 invsqr\n  name Inverse_Square\n  xpos -490\n  ypos 341\n }\n Grade {\n  white {{parent.GainTint.r} {parent.GainTint.g} {parent.GainTint.b} 1}\n  white_panelDropped true\n  multiply {1 1 1 1}\n  multiply_panelDropped true\n  gamma {{parent.GammaTint} {parent.GammaTint} {parent.GammaTint} 1}\n  name Grade2\n  xpos -490\n  ypos 387\n }\n Clamp {\n  maximum 59999\n  MinClampTo_enable true\n  MaxClampTo {{maximum}}\n  MaxClampTo_enable true\n  name Clamp_Superbrights\n  xpos -490\n  ypos 428\n }\nset N60fa9f60 [stack 0]\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge3\n  xpos -95\n  ypos 434\n }\n Dot {\n  name Dot3\n  xpos -61\n  ypos 708\n }\n Dot {\n  name Dot15\n  xpos -572\n  ypos 708\n }\npush $N60fa4600\n Dot {\n  name Dot16\n  xpos -750\n  ypos 131\n }\nset N60fa4970 [stack 0]\n Dot {\n  name Dot17\n  xpos -868\n  ypos 131\n }\n Dot {\n  name Dot7\n  xpos -1332\n  ypos 131\n }\n Expression {\n  temp_name0 theta\n  temp_expr0 pi*(parent.MaskRotation*2)\n  temp_name1 px\n  temp_expr1 \"cos(theta) * (x-parent.Position.x) - sin(theta) * (y-parent.Position.y) + parent.Position.x\"\n  temp_name2 py\n  temp_expr2 \"sin(theta) * (x-parent.Position.x) + cos(theta) * (y-parent.Position.y) + parent.Position.y\"\n  temp_name3 val\n  temp_expr3 \"(atan(px-parent.Position.x,-py--parent.Position.y)+ pi)/+ (pi*2)\"\n  expr0 \"smoothstep(0,1, sin(val*pi))\"\n  name Expression1\n  xpos -1366\n  ypos 298\n }\n Grade {\n  black 0.033\n  white {{(pow(parent.MaskGain,2)*10)+0.0001}}\n  gamma {{(pow(parent.MaskSoftness,2)/2)+0.15}}\n  name Grade9\n  xpos -1366\n  ypos 336\n }\n Expression {\n  expr0 max(0,1-r)\n  expr1 max(0,1-r)\n  expr2 max(0,1-r)\n  name Expression17\n  xpos -1366\n  ypos 380\n }\n Dot {\n  name Dot8\n  xpos -1332\n  ypos 745\n }\npush $N60fa4970\n Dot {\n  name Dot4\n  xpos -750\n  ypos 230\n }\nset N60fa6180 [stack 0]\n Dot {\n  name Dot5\n  xpos -868\n  ypos 230\n }\n Expression {\n  expr0 \"(atan(x-parent.Position.x,-y--parent.Position.y)+ pi)/+ (pi*2)\"\n  name inversefacing\n  xpos -902\n  ypos 267\n }\nset N60fa6860 [stack 0]\n Dot {\n  name Dot18\n  xpos -978\n  ypos 270\n }\n Expression {\n  expr0 pow(sin(r*pi),16)\n  name reduction\n  xpos -1012\n  ypos 313\n }\nset N60fa6f40 [stack 0]\n Dot {\n  name Dot10\n  xpos -978\n  ypos 415\n }\npush $N60fa6f40\npush $N60fa6860\n ShuffleCopy {\n  inputs 2\n  green red\n  alpha alpha2\n  name ShuffleCopy1\n  xpos -902\n  ypos 313\n }\n Expression {\n  temp_name0 octaves\n  temp_expr0 5\n  temp_name1 lacunarity\n  temp_expr1 parent.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.noise_gain\n  temp_name3 Noise\n  temp_expr3 g>0.0001?fBm(r,1,1+((frame+parent.Noise_Gang)/((1.0001-parent.Speed)*10000)),octaves,lacunarity,gain):0\n  expr0 Noise\n  expr1 Noise\n  expr2 Noise\n  name noise_top\n  xpos -902\n  ypos 348\n }\n Grade {\n  black 0.54\n  gamma 0.585\n  black_clamp false\n  name Grade14\n  xpos -902\n  ypos 388\n }\npush $N60fa6180\n Expression {\n  temp_name0 xd\n  temp_expr0 parent.Position.x-x\n  temp_name1 yd\n  temp_expr1 parent.Position.y-y\n  temp_name2 dist\n  temp_expr2 \"sqrt(xd*xd + yd*yd)\"\n  expr0 \"(atan(x-parent.Position.x,y-parent.Position.y)+ pi)/+ (pi*2)\"\n  expr1 dist/width\n  name facing\n  xpos -784\n  ypos 267\n }\n Expression {\n  temp_name0 octaves\n  temp_expr0 5\n  temp_name1 lacunarity\n  temp_expr1 parent.lacunarity\n  temp_name2 gain\n  temp_expr2 parent.noise_gain\n  temp_name3 Noise\n  temp_expr3 fBm(r,1,1+((frame+8+parent.Noise_Gang)/((1.0001-parent.Speed)*10000)),octaves,lacunarity,gain)\n  expr0 Noise\n  expr1 Noise\n  expr2 Noise\n  name noise\n  xpos -784\n  ypos 314\n }\n Grade {\n  black 0.54\n  gamma 0.585\n  black_clamp false\n  name Grade15\n  xpos -784\n  ypos 412\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  maskChannelMask rgba.red\n  name FixSeam\n  xpos -902\n  ypos 412\n }\npush $N60fa9f60\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge1\n  xpos -902\n  ypos 436\n }\n Clamp {\n  maximum_enable false\n  name Clamp_Negative_Numbers\n  xpos -902\n  ypos 460\n }\n Dot {\n  name Dot6\n  xpos -868\n  ypos 660\n }\npush $N60fa9f60\n Dot {\n  name Dot11\n  xpos -456\n  ypos 587\n }\npush $N60fa4600\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge6\n  xpos -674\n  ypos 584\n  disable {{1-parent.glow_enable}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -674\n  ypos 657\n  disable {{1-parent.shimmer_enable x2012 1}}\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge5\n  xpos -674\n  ypos 742\n  disable {{1-parent.Mask}}\n }\n SoftClip {\n  conversion \"preserve hue and saturation\"\n  softclip_min 1\n  softclip_max {{parent.softclipmax}}\n  name SoftClip1\n  xpos -674\n  ypos 766\n  disable {{1-parent.SoftClip}}\n }\npush $N60fa3bb0\n Dot {\n  name Dot12\n  xpos -689\n  ypos -25\n }\n Grade {\n  multiply 0\n  black_clamp false\n  enable_mix_luminance false\n  name Grade1\n  xpos -723\n  ypos 77\n  disable {{1-parent.EffectOnly}}\n }\n Dot {\n  name Dot14\n  xpos -692\n  ypos 794\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge7\n  xpos -674\n  ypos 791\n }\n Output {\n  name Output1\n  xpos -674\n  ypos 991\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SpotLight.gizmo",
    "content": "Group {\n name SpotLight\n onCreate \"n = nuke.thisNode()\\nn.knob('outerRadius').setRange(0, 2)\\nn.knob('innerRadius').setRange(0, 2)\\nn.knob('outerBlur').setRange(0, 400)\\nn.knob('innerBlur').setRange(0, 400)\\nn.knob('overallSize').setRange(0, 4)\"\n tile_color 0x4c7b7fff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 SpotLight}\n addUserKnob {6 replace +STARTLINE}\n replace true\n addUserKnob {6 invert -STARTLINE}\n addUserKnob {12 center}\n center {1024 1024}\n addUserKnob {22 setCenter l \"set center\" -STARTLINE T \"n = nuke.thisNode()\\nw= n.width()\\nh=n.height()\\nn\\['center'].setValue(\\[w/2,h/2])\"}\n addUserKnob {14 overallSize l \"Overall Size\" R 0 4}\n overallSize 1\n addUserKnob {26 outerMask l \"<b> <font color = turquoise>Outer Mask\" T \" \"}\n addUserKnob {14 outerRadius l size R 0 2}\n outerRadius 0.4\n addUserKnob {41 softness T RadialOuter.softness}\n addUserKnob {41 plinear l \"perceptually linear\" -STARTLINE T RadialOuter.plinear}\n addUserKnob {41 outerBlur l blur T Blur2.size}\n addUserKnob {26 innerMask l \"<b> <font color = turquoise>Inner Mask\" T \" \"}\n addUserKnob {6 innerMaskCheck l toggle -STARTLINE}\n addUserKnob {14 innerRadius l size R 0 2}\n innerRadius 0.3\n addUserKnob {41 softness_1 l softness T RadialInner.softness}\n addUserKnob {41 plinear_1 l \"perceptually linear\" -STARTLINE T RadialInner.plinear}\n addUserKnob {41 innerBlur l blur T Blur1.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 overscanPercent l \"Overscan Percent\" T BBoxToFormat.overscanPercent}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T RadialOuter.opacity}\n addUserKnob {20 Noise}\n addUserKnob {6 noiseCheck l Enable +STARTLINE}\n addUserKnob {41 type T Noise1.type}\n addUserKnob {41 size l x/ysize T Noise1.size}\n addUserKnob {7 noiseZ l z R 0 5}\n addUserKnob {7 zSpeed l \"z speed\"}\n addUserKnob {41 octaves T Noise1.octaves}\n addUserKnob {41 nyquist l \"clip at Nyquist limit\" T Noise1.nyquist}\n addUserKnob {41 lacunarity T Noise1.lacunarity}\n addUserKnob {41 gain T Noise1.gain}\n addUserKnob {41 gamma T Noise1.gamma}\n addUserKnob {41 noiseMix l mix T Noise1.opacity}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -201\n  ypos 284\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -487\n  ypos -803\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists input0] ? parent.width : root.format.w\"}}\n  box_height {{\"\\[exists input0] ? parent.height : root.format.h\"}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat1\n  xpos -489\n  ypos -647\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -455\n  ypos -492\n }\nset N2f9d1d00 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -321\n  ypos -492\n }\nset N2f9d2b00 [stack 0]\n Radial {\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  cliptype none\n  replace true\n  invert_mask true\n  area {{\"parent.center.x-(1+( (width/2)* (innerRadius.w*overallSize) ) )\"} {\"parent.center.y-(1+( (width/2)* (innerRadius.h*overallSize) ) )\"} {\"parent.center.x+(1+( (width/2)* (innerRadius.w*overallSize) ) )\"} {\"parent.center.y+(1+( (width/2)* (innerRadius.h*overallSize)) )\"}}\n  softness 0.8\n  name RadialInner\n  xpos -355\n  ypos -409\n }\n Blur {\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Blur1\n  label \"\\[value size]\"\n  xpos -355\n  ypos -349\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -321\n  ypos -242\n }\npush $N2f9d2b00\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -180\n  ypos -492\n }\nset N907bdd00 [stack 0]\n Radial {\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  cliptype none\n  replace true\n  area {{\"parent.center.x-(1+( (width/2)* (outerRadius.w*overallSize) ) )\"} {\"parent.center.y-(1+( (width/2)* (outerRadius.h*overallSize) ) )\"} {\"parent.center.x+(1+( (width/2)* (outerRadius.w*overallSize) ) )\"} {\"parent.center.y+(1+( (width/2)* (outerRadius.h*overallSize) ) )\"}}\n  name RadialOuter\n  xpos -214\n  ypos -409\n }\n Blur {\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Blur2\n  label \"\\[value size]\"\n  xpos -214\n  ypos -351\n }\n Multiply {\n  inputs 1+1\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos -214\n  ypos -258\n  disable {{!parent.innerMaskCheck}}\n }\nset N65c2f900 [stack 0]\npush $N907bdd00\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -51\n  ypos -492\n }\n Noise {\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  replace true\n  size 250\n  zoffset {{parent.noiseZ+(frame*zSpeed)*.2}}\n  translate {{parent.center.x} {parent.center.y}}\n  scale {{parent.overallSize} {parent.overallSize}}\n  name Noise1\n  xpos -85\n  ypos -404\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -85\n  ypos -246\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -51\n  ypos -172\n }\npush $N65c2f900\n Multiply {\n  inputs 1+1\n  channels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  value 0\n  invert_mask true\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -214\n  ypos -188\n  disable {{!parent.noiseCheck}}\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  tile_color 0xffffffff\n  note_font_size 22\n  note_font_color 0xffffffff\n  xpos -214\n  ypos -115\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -214\n  ypos -43\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos -214\n  ypos -2\n  disable {{!parent.invert}}\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType Percentage\n  addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent 1.1\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  inputBbox 0\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N953b1600 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N953b0f00 [stack 0]\npush $N953b1600\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N953b0800 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N953b0100 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $N953b0100\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N953b0f00\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N953b0800\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N19bf0800 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N19bf0800\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\n Invert {\n  channels rgba\n  name Invert1\n  xpos -214\n  ypos 40\n  disable {{!parent.invert}}\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -180\n  ypos 113\n }\nset N658e6b00 [stack 0]\npush $N658e6b00\npush $N2f9d1d00\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -455\n  ypos -152\n }\nset N658e6400 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -329\n  ypos -152\n }\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -363\n  ypos 109\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\n Switch {\n  inputs 2\n  which {{parent.replace}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -363\n  ypos 163\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -329\n  ypos 230\n }\npush $N658e6400\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -489\n  ypos 284\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\npush $N2f9d1d00\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -699\n  ypos -492\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -699\n  ypos 389\n }\n Switch {\n  inputs 2\n  which {{\"parent.outerRadius == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -489\n  ypos 379\n }\n BlackOutside {\n  name BlackOutside2\n  xpos -489\n  ypos 456\n }\n Output {\n  name Output1\n  xpos -489\n  ypos 592\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Suppress_RGBCMY.gizmo",
    "content": "Group {\n name Suppress_RGBCMY\n help \"Suppress specific colors in RGBCMY space\"\n tile_color 0xa3bbe6ff\n selected true\n addUserKnob {20 colorSuppress l \"Color Suppression\"}\n addUserKnob {7 red l Red t \"Suppress this color\"}\n red 1\n addUserKnob {18 red_luma l \"Red Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n red_luma 1\n addUserKnob {6 red_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 green l Green t \"Suppress this color\"}\n green 1\n addUserKnob {18 green_luma l \"Green Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n green_luma 1\n addUserKnob {6 green_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 blue l Blue t \"Suppress this color\"}\n blue 1\n addUserKnob {18 blue_luma l \"Blue Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n blue_luma 1\n addUserKnob {6 blue_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 cyan l Cyan t \"Suppress this color\"}\n cyan 1\n addUserKnob {18 cyan_luma l \"Cyan Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n cyan_luma 1\n addUserKnob {6 cyan_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 magenta l Magenta t \"Suppress this color\"}\n magenta 1\n addUserKnob {18 magenta_luma l \"Magenta Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n magenta_luma 1\n addUserKnob {6 magenta_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 yellow l Yellow t \"Suppress this color\"}\n yellow 1\n addUserKnob {18 yellow_luma l \"Yellow Luma\" t \"Restore the luma of this color.\\nCan be used to introduce other colors as well.\"}\n yellow_luma 1\n addUserKnob {6 yellow_luma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge7.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge7.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge7.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge7.fringe}\n addUserKnob {41 mix T Merge7.mix}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 spin_copyright l \"\" t \"© <b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b>\\nSuppress_RGBCMY\\nVersion 1.2\\n2017-2018\" +STARTLINE T \"<span style=\\\"color:#aaa;font-family:sans-serif;font-size:8pt\\\"><b>SPIN<span style=\\\"color:#b32026\\\">VFX</span></b> - Version 1.2 - 2017-2018 - <a href=\\\"https://github.com/SpinVFX/spin_nuke_gizmos/\\\" style=\\\"color:#aaa\\\">Github Page</a></span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -267\n  ypos 1207\n  number 1\n }\n Input {\n  inputs 0\n  name img\n  xpos -389\n  ypos -272\n }\n Dot {\n  name Dot7\n  xpos -355\n  ypos -137\n }\nset N4b898800 [stack 0]\n Dot {\n  name Dot3\n  xpos -106\n  ypos -137\n }\n Dot {\n  name Dot8\n  xpos -106\n  ypos 11\n }\nset N4a04f900 [stack 0]\n Dot {\n  name Dot1\n  xpos -106\n  ypos 211\n }\nset N4a04f200 [stack 0]\n Dot {\n  name Dot6\n  xpos -106\n  ypos 399\n }\nset N4a04eb00 [stack 0]\n Dot {\n  name Dot5\n  xpos -106\n  ypos 585\n }\nset N4a04e400 [stack 0]\n Dot {\n  name Dot4\n  xpos -106\n  ypos 783\n }\nset N4a04dd00 [stack 0]\n Dot {\n  name Dot2\n  xpos -106\n  ypos 989\n }\n Expression {\n  temp_name0 yel\n  temp_expr0 \"max(min(r-b, g-b),0)\"\n  expr0 yel\n  expr1 yel\n  expr2 0\n  name Yellow\n  xpos -258\n  ypos 985\n }\nset N4a04cf00 [stack 0]\n Saturation {\n  saturation {{parent.yellow}}\n  name Saturation6\n  xpos -258\n  ypos 1038\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif5\n  xpos -258\n  ypos 1076\n }\n Multiply {\n  value {{parent.yellow_luma} {parent.yellow_luma} {parent.yellow_luma} {parent.yellow_luma}}\n  name Multiply6\n  xpos -258\n  ypos 1114\n }\npush $N4a04cf00\npush $N4a04dd00\n Expression {\n  temp_name0 mag\n  temp_expr0 \"max(min(r-g, b-g),0)\"\n  expr0 mag\n  expr1 0\n  expr2 mag\n  name Magenta\n  xpos -258\n  ypos 779\n }\nset N5a838f00 [stack 0]\n Saturation {\n  saturation {{parent.magenta}}\n  name Saturation5\n  xpos -258\n  ypos 820\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif4\n  xpos -258\n  ypos 858\n }\n Multiply {\n  value {{parent.magenta_luma} {parent.magenta_luma} {parent.magenta_luma} {parent.magenta_luma}}\n  name Multiply5\n  xpos -258\n  ypos 896\n }\npush $N5a838f00\npush $N4a04e400\n Expression {\n  temp_name0 cyan\n  temp_expr0 \"max(min(g-r, b-r),0)\"\n  expr0 0\n  expr1 cyan\n  expr2 cyan\n  name Cyan\n  xpos -258\n  ypos 581\n }\nset N4c5a0f00 [stack 0]\n Saturation {\n  saturation {{parent.cyan}}\n  name Saturation4\n  xpos -258\n  ypos 622\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif3\n  xpos -258\n  ypos 660\n }\n Multiply {\n  value {{parent.cyan_luma} {parent.cyan_luma} {parent.cyan_luma} {parent.cyan_luma}}\n  name Multiply4\n  xpos -258\n  ypos 698\n }\npush $N4c5a0f00\npush $N4a04eb00\n Expression {\n  expr0 0\n  expr1 0\n  expr2 b-min(max(g,r),b)\n  name Blue\n  xpos -258\n  ypos 395\n }\nset N4718cf00 [stack 0]\n Saturation {\n  saturation {{parent.blue}}\n  name Saturation3\n  xpos -258\n  ypos 436\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif2\n  xpos -258\n  ypos 474\n }\n Multiply {\n  value {{parent.blue_luma} {parent.blue_luma} {parent.blue_luma} {parent.blue_luma}}\n  name Multiply3\n  xpos -258\n  ypos 512\n }\npush $N4718cf00\npush $N4a04f200\n Expression {\n  expr0 0\n  expr1 g-min(max(r,b),g)\n  expr2 0\n  name Green\n  xpos -258\n  ypos 207\n }\nset N6b16cf00 [stack 0]\n Saturation {\n  saturation {{parent.green}}\n  name Saturation2\n  xpos -258\n  ypos 248\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif1\n  xpos -258\n  ypos 286\n }\n Multiply {\n  value {{parent.green_luma} {parent.green_luma} {parent.green_luma} {parent.green_luma}}\n  name Multiply2\n  xpos -258\n  ypos 324\n }\npush $N6b16cf00\npush $N4a04f900\n Expression {\n  expr0 r-min(max(g,b),r)\n  expr1 0\n  expr2 0\n  name Red\n  xpos -257\n  ypos 7\n }\nset Na9ae0f00 [stack 0]\n Saturation {\n  saturation {{parent.red}}\n  name Saturation1\n  xpos -257\n  ypos 45\n }\n Clamp {\n  maximum_enable false\n  name Clamp_negatif\n  xpos -257\n  ypos 86\n }\n Multiply {\n  value {{parent.red_luma} {parent.red_luma} {parent.red_luma} {parent.red_luma}}\n  name Multiply1\n  xpos -257\n  ypos 146\n }\npush $Na9ae0f00\npush $N4b898800\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge1\n  xpos -389\n  ypos 7\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name redLuma\n  xpos -389\n  ypos 152\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge2\n  xpos -389\n  ypos 207\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name greenLuma\n  xpos -389\n  ypos 330\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge3\n  xpos -389\n  ypos 395\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name blueLuma\n  xpos -389\n  ypos 518\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge4\n  xpos -389\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name CyanLuma\n  xpos -389\n  ypos 704\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge5\n  xpos -389\n  ypos 779\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name magentaLuma\n  xpos -389\n  ypos 902\n }\n Merge2 {\n  inputs 2\n  operation from\n  output rgb\n  name Merge6\n  xpos -389\n  ypos 985\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name yellowLuma\n  xpos -389\n  ypos 1120\n }\npush $N4b898800\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -553\n  ypos -137\n }\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -553\n  ypos 1211\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  selected true\n  xpos -389\n  ypos 1207\n  addUserKnob {20 TRX}\n  addUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"import convertMergeToMergeAll;convertMergeToMergeAll.convertMergeToMergeAll()\"}\n }\n Output {\n  name Output2\n  xpos -389\n  ypos 1401\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Symmetry.gizmo",
    "content": "set cut_paste_input [stack 0]\nversion 12.2 v10\npush $cut_paste_input\nGroup {\n name Symmetry\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"steps\\\":\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    \\n    else:\\n        with n:\\n            start = nuke.toNode(\\\"Start\\\")\\n            end = nuke.toNode(\\\"End\\\")\\n            side = nuke.toNode(\\\"side\\\")\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            \\n            startX = side.xpos()\\n            startY = side.ypos()\\n            \\n            \\n            steps = int( n.knob(\\\"steps\\\").getValue() )\\n            \\n            for i in range(1,merge.inputs()):\\n                merge.setInput(i,None)\\n                merge.setInput(0, side)\\n                \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n            for i in range(1,steps):\\n            \\n                t = nuke.nodes.Transform()\\n                t.setXYpos(startX+i*100,startY)                \\n                t.setInput(0,start)\\n                fr = (360/steps)\\n                t\\['center'].setExpression(\\\"width/2\\\", 0)\\n                t\\['center'].setExpression(\\\"height/2\\\", 1)\\n\\n                t\\['rotate'].setValue(fr*i)\\n                merge.setInput(i if i<2 else i+1, t)\"\n tile_color 0xa57aaaff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n xpos -2605\n ypos 4458\n addUserKnob {20 Symmetry}\n addUserKnob {41 operation T Merge1.operation}\n addUserKnob {3 steps -STARTLINE}\n steps 6\n addUserKnob {26 \"\"}\n addUserKnob {20 addTransform l \"Additional Pre-Transform\" n 1}\n addTransform 0\n addUserKnob {41 translate T Transform10.translate}\n addUserKnob {41 rotate T Transform10.rotate}\n addUserKnob {41 scale T Transform10.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform10.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform10.skewY}\n addUserKnob {41 skew_order l \"skew order\" T Transform10.skew_order}\n addUserKnob {41 center T Transform10.center}\n addUserKnob {22 setCenter l \"Set Center\" -STARTLINE T \"n = nuke.thisNode()\\nw= n.width()\\nh=n.height()\\nn\\['center'].setValue(\\[w/2,h/2])\"}\n addUserKnob {20 endGroup n -1}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 742\n  ypos -567\n }\n Transform {\n  center {1024 1024}\n  name Transform10\n  selected true\n  xpos 742\n  ypos -437\n }\n NoOp {\n  name Start\n  xpos 742\n  ypos -353\n }\nset Na81fb900 [stack 0]\n Transform {\n  rotate 300\n  center {{width/2} {height/2}}\n  name Transform5\n  xpos 1242\n  ypos -270\n }\npush $Na81fb900\n Transform {\n  rotate 240\n  center {{width/2} {height/2}}\n  name Transform4\n  xpos 1142\n  ypos -270\n }\npush $Na81fb900\n Transform {\n  rotate 180\n  center {{width/2} {height/2}}\n  name Transform3\n  xpos 1042\n  ypos -270\n }\npush $Na81fb900\n Transform {\n  rotate 120\n  center {{width/2} {height/2}}\n  name Transform2\n  xpos 942\n  ypos -270\n }\npush 0\npush $Na81fb900\n Transform {\n  rotate 60\n  center {{width/2} {height/2}}\n  name Transform1\n  xpos 842\n  ypos -270\n }\npush $Na81fb900\n NoOp {\n  name side\n  xpos 742\n  ypos -270\n }\n Merge2 {\n  inputs 6+1\n  operation plus\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 742\n  ypos -174\n }\n NoOp {\n  name End\n  xpos 742\n }\n Output {\n  name Output1\n  xpos 742\n  ypos 58\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TProject.gizmo",
    "content": "\nGroup {\n name TProject\n help \"it is just transform tracked\\nnothing fancy at all\\nplay with the buttons, have fun\"\n knobChanged \"nn = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"cropP\\\":\\n\\n    if nn\\['cropP'].value() in \\[\\\"Hard Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"Image is cropped to Input, Concatenation preserved.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"Adjustable Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(True)\\n        nn\\[\\\"text\\\"].setValue(\\\"Adjust your Bbox , Downward <b><font color='Dark Red'>Concatenation is broken<b>.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"No Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"No Crop applied, Concatenation preserved.\\\")\"\n tile_color 0x7a4389ff\n note_font Verdana\n note_font_size 14\n note_font_color 0x28565eff\n addUserKnob {20 User l CProject}\n addUserKnob {6 FreezeInput l \"freeze input\" t \"freezing the input on the refrence frame, \\nsame as putting the framehold before the node\" +STARTLINE}\n addUserKnob {22 python_button l \"set current as reference frame\" T \"\\nn = nuke.thisNode()\\nn\\[\\\"translate_1\\\"].setValue(\\[n\\[\\\"translate\\\"].value(0)*-1,n\\[\\\"translate\\\"].value(1)*-1]) \\n\\n\\nframe = nuke.frame()\\nn\\['refFrame'].setValue(frame)\\nn\\['label'].setValue(str(frame))\\n\\nnuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\\n\" +STARTLINE}\n addUserKnob {26 text_2 l \"\" -STARTLINE T or}\n addUserKnob {22 setRefFrame l \"set reference frame\" t \"setting the reference frame,\\nsame as the reference frame when you are doing projection with the camera on the card.\\nyou should expect that the input will be unchenged on this frame.\" -STARTLINE T \"\\nn = nuke.thisNode()\\nframe = int(n\\['refFrame'].value())\\n\\nn\\[\\\"translate_1\\\"].setValue(\\[n\\[\\\"translate\\\"].getValueAt(0,frame)*-1,n\\[\\\"translate\\\"].getValue(1,frame)*-1]) \\n\\n\\nn\\['label'].setValue(str(frame))\\n\\nnuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\\n\\n\"}\n addUserKnob {3 refFrame l \"\" -STARTLINE}\n addUserKnob {41 stabilize T Transform1.invert_matrix}\n addUserKnob {41 motionblur_1 l motionblur T Transform1.motionblur}\n addUserKnob {41 shutter_1 l shutter T Transform1.shutter}\n addUserKnob {20 s l transforms n 1}\n s 0\n addUserKnob {41 translate T Transform1.translate}\n addUserKnob {41 center -STARTLINE T Transform1.center}\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" -STARTLINE T Transform1.skewY}\n addUserKnob {41 shutteroffset_1 l \"shutter offset\" T Transform1.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T Transform1.shuttercustomoffset}\n addUserKnob {41 filter_1 l filter T Reformat1.filter}\n addUserKnob {41 clamp -STARTLINE T Transform1.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T Transform1.black_outside}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 cropP l crop M {\"Hard Crop\" \"Adjustable Crop\" \"No Crop\"}}\n addUserKnob {7 growBbox l \"grow Bbox\" -STARTLINE +HIDDEN R 0 200}\n growBbox 50\n addUserKnob {41 o l overscan +DISABLED +HIDDEN +INVISIBLE T Crop1.o}\n addUserKnob {26 text l tip T \"Image is cropped to Input, Concatenation preserved.\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 translate_1 l translate +INVISIBLE T refPall.translate}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 112\n  ypos -280\n }\n FrameHold {\n  name FHold\n  selected true\n  xpos 112\n  ypos -229\n  disable {{!parent.FreezeInput}}\n }\n Transform {\n  invert_matrix false\n  name Transform1\n  xpos 112\n  ypos -176\n }\n Transform {\n  translate {61.92474365 295.9479017}\n  center {1024 778}\n  invert_matrix {{parent.Transform1.invert_matrix}}\n  name refPall\n  xpos 112\n  ypos -140\n }\nset Nd51711c0 [stack 0]\n Dot {\n  name Dot1\n  xpos 14\n  ypos -62\n }\npush $Nd51711c0\n Crop {\n  box {{curve-parent.growBbox} {curve-parent.growBbox} {width+parent.growBbox} {height+parent.growBbox}}\n  name Crop1\n  xpos 112\n  ypos -62\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\npush $Nd51711c0\n Reformat {\n  type \"to box\"\n  format \"4096 2160 0 0 4096 2160 1 4K_DCP\"\n  box_width {{width}}\n  box_height {{height}}\n  box_pixel_aspect {{pixel_aspect}}\n  resize none\n  name Reformat1\n  xpos 223\n  ypos -68\n }\n Switch {\n  inputs 3\n  which {{parent.cropP x1000 0}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 112\n  ypos 10\n }\n Output {\n  name Output1\n  xpos 112\n  ypos 106\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TProject2.gizmo",
    "content": "Group {\nname TProject\nhelp \"TProject has only transformation of the point in XY space, it has no scale or rotation, usefull if you want simple one point stabilisation\"\nknobChanged \"nn = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn == \\\"cropP\\\":\\n\\n    if nn\\['cropP'].value() in \\[\\\"Hard Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"Image is cropped to Input, Concatenation preserved.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"Adjustable Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(True)\\n        nn\\[\\\"text\\\"].setValue(\\\"Adjust your Bbox , Downward <b><font color='Dark Red'>Concatenation is broken<b>.\\\")\\n\\n    elif nn\\['cropP'].value() in \\[\\\"No Crop\\\"]:\\n        nn\\[\\\"growBbox\\\"].setVisible(False)\\n        nn\\[\\\"text\\\"].setValue(\\\"No Crop applied, Concatenation preserved.\\\")\"\ntile_color 0x7a4389ff\nlabel \"Matchmove\\n46\"\nnote_font Verdana\nnote_font_size 14\nnote_font_color 0x28565eff\naddUserKnob {20 User l TProject}\naddUserKnob {26 card_to_track l \"\" +STARTLINE T \"CardToTrack3:transform: ujo\"}\naddUserKnob {26 \"\"}\naddUserKnob {6 FreezeInput l \"freeze input\" t \"freezing the input on the refrence frame, \\nsame as putting the framehold before the node\" +STARTLINE}\naddUserKnob {22 mode_toggle l \"<h1 style = 'font-size:30'><b><font color=#9667D1>Matchmove\" t \"Toggle between Matchmove and Stabilize modes.\\nPay attention to the reference frame - on this frame no transformation will be applied. You can see it as a projection frame if compare to camera project\" T \"import nuke\\nntn = nuke.thisNode()\\nntk = nuke.thisKnob()\\nref_frame = str(int(ntn\\['refFrame'].value()))\\nlab = ntk.label()\\nmm = \\\"<h1 style = 'font-size:30'><b><font color=#9667D1>Matchmove\\\"\\nstab = \\\"<h1 style = 'font-size:30'><b><font color=#797BFF>Stabilize\\\"\\nif lab == mm:\\n    ntk.setLabel(stab)\\n    ntn\\['invert'].setValue(True)\\n    ntn\\['tile_color'].setValue(1834205695)\\n    ntn\\['label'].setValue(\\\"Stabilize\\\\n\\\"+ref_frame)\\n    with ntn:\\n        nuke.toNode('refPall')\\['disable'].setValue(False)\\nelif lab == stab:\\n    ntk.setLabel(mm)\\n    ntn\\['invert'].setValue(False)\\n    ntn\\['tile_color'].setValue(2051246591)\\n    ntn\\['label'].setValue(\\\"Matchmove\\\\n\\\"+ref_frame)\\n    with ntn:\\n        nuke.toNode('refPall')\\['disable'].setValue(True)\" +STARTLINE}\naddUserKnob {22 setCurrentAsRefFrame l \"set current as reference frame\" T \"import nuke\\nntn = nuke.thisNode()\\nframe = int(nuke.frame())\\nwith ntn:\\n    pall = nuke.toNode(\\\"refPall\\\")\\n    papa = nuke.toNode(\\\"Transform1\\\")\\n    pall\\['disable'].setValue(False)\\n    knobs = \\[\\\"translate\\\", \\\"rotate\\\", \\\"scale\\\", \\\"center\\\"]\\n    for one in knobs:\\n        pall\\[one].setValue(papa\\[one].value())\\nntn\\['label'].setValue(ntn\\['mode_toggle'].label().rpartition(\\\">\\\")[2]+\\\"\\\\n\\\"+str(frame))\\nntn\\['refFrame'].setValue(frame)\\nwith ntn:\\n    nuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\\n\\n\\n\\n\\n\" +STARTLINE}\naddUserKnob {22 setRefFrame l \"set reference frame\" t \"setting the reference frame,\\nsame as the reference frame when you are doing projection with the camera on the card.\\nyou should expect that the input will be unchenged on this frame.\" T \"import nuke\\nntn = nuke.thisNode()\\nframe = int(nuke.thisNode()\\['refFrame'].value())\\nwith ntn:\\n    pall = nuke.toNode(\\\"refPall\\\")\\n    papa = nuke.toNode(\\\"Transform1\\\")\\n    pall\\['disable'].setValue(False)\\n    knobs = \\[\\\"translate\\\", \\\"rotate\\\", \\\"scale\\\", \\\"center\\\"]\\n    for one in knobs:\\n        pall\\[one].setValue(papa\\[one].value())\\nntn\\['label'].setValue(ntn\\['mode_toggle'].label().rpartition(\\\">\\\")[2]+\\\"\\\\n\\\"+str(frame))\\nntn\\['refFrame'].setValue(frame)\\nwith ntn:\\n    nuke.toNode(\\\"FHold\\\")\\['first_frame'].setValue(frame)\" +STARTLINE}\naddUserKnob {3 refFrame l \"\" -STARTLINE}\nrefFrame 46\naddUserKnob {41 invert l stabilize +INVISIBLE T Transform1.invert_matrix}\naddUserKnob {26 \"\"}\naddUserKnob {20 s l transforms n 1}\ns 0\naddUserKnob {41 translate T Transform1.translate}\naddUserKnob {41 center -STARTLINE T Transform1.center}\naddUserKnob {41 rotate T Transform1.rotate}\naddUserKnob {41 scale T Transform1.scale}\naddUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\naddUserKnob {41 skewY l \"skew Y\" -STARTLINE T Transform1.skewY}\naddUserKnob {20 endGroup n -1}\naddUserKnob {26 \"\"}\naddUserKnob {41 motionblur_1 l motionblur T Transform1.motionblur}\naddUserKnob {41 shutter_1 l shutter T Transform1.shutter}\naddUserKnob {41 shutteroffset_1 l \"shutter offset\" T Transform1.shutteroffset}\naddUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T Transform1.shuttercustomoffset}\naddUserKnob {41 filter_1 l filter T Reformat1.filter}\naddUserKnob {41 clamp -STARTLINE T Transform1.clamp}\naddUserKnob {41 black_outside l \"black outside\" -STARTLINE T Transform1.black_outside}\naddUserKnob {26 \"\"}\naddUserKnob {4 cropP l crop M {\"Hard Crop\" \"Adjustable Crop\" \"No Crop\"}}\naddUserKnob {7 growBbox l \"grow Bbox\" -STARTLINE +HIDDEN R 0 200}\ngrowBbox 50\naddUserKnob {41 o l overscan +DISABLED +HIDDEN +INVISIBLE T Crop1.o}\naddUserKnob {26 text l tip T \"Image is cropped to Input, Concatenation preserved.\"}\naddUserKnob {26 \"\"}\naddUserKnob {41 translate_1 l translate +INVISIBLE T refPall.translate}\n}\nInput {\ninputs 0\nname Input1\nxpos 112\nypos -280\n}\nFrameHold {\nname FHold\nselected true\nxpos 112\nypos -229\ndisable {{!parent.FreezeInput}}\n}\nTransform {\ncenter {960 540}\nname Transform1\nxpos 112\nypos -165\n}\nTransform {\ntranslate {{parent.Transform1.translate(parent.refFrame) x4 -128.3774678 x30 -128.3774678 x44 -128.3774678 x46 -128.3774678 x55 -128.3774678 x57 -128.3774678 -128.3774678 -128.3774678 x66 -128.3774678 x67 -128.3774678 x70 -128.3774678 x74 -128.3774678 x77 -128.3774678 x100 -128.3774678} {parent.Transform1.translate(parent.refFrame) x4 120.4071311 x30 67.89515688 x44 27.56713262 x46 22.99436951 x55 11.5775619 x57 11.87522766 13.52917343 16.70423745 x66 32.42253126 x67 37.07234251 x70 54.40229883 x74 86.01397339 x77 116.4269787 x100 379.3734408}}\ncenter {1024 778}\ninvert_matrix {{!parent.Transform1.invert_matrix}}\nname refPall\nxpos 112\nypos -130\n}\nDot {\nname Dot2\nxpos 146\nypos -96\n}\nset N230475c0 [stack 0]\nDot {\nname Dot1\nxpos 14\nypos -62\n}\npush $N230475c0\nCrop {\nbox {{curve-parent.growBbox} {curve-parent.growBbox} {width+parent.growBbox} {height+parent.growBbox}}\nname Crop1\nxpos 112\nypos -62\naddUserKnob {20 User}\naddUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n}\npush $N230475c0\nReformat {\ntype \"to box\"\nformat \"4096 2160 0 0 4096 2160 1 4K_DCP\"\nbox_width {{width}}\nbox_height {{height}}\nbox_pixel_aspect {{pixel_aspect}}\nresize none\nname Reformat1\nxpos 223\nypos -68\n}\nSwitch {\ninputs 3\nwhich {{parent.cropP x1000 0}}\nname Switch1\nlabel \"\\[value which]\"\nxpos 112\nypos 10\n}\nOutput {\nname Output1\nxpos 112\nypos 106\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TimeMachine.gizmo",
    "content": "Group {\n name TimeMachine\n help \"Does a per-pixel time offset on the image, based on a secondary mask input.\\n\\nPixels with a mask value of 1 will be offset by the number of frames set in \\\"frames\\\".\\nMask values of 0 will return the image at the current frame. Values between 0-1 will return an interpolated offset.\"\n knobChanged \"\\n\\ng = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() in \\[\\\"frames\\\",\\\"method\\\"]:\\n    \\n    i = nuke.toNode(\\\"img\\\")\\n    i2 = nuke.toNode(\\\"mask\\\")\\n    o = nuke.toNode(\\\"Output1\\\")\\n    c = nuke.toNode(\\\"Copy1\\\")\\n\\n    if k.name() == \\\"frames\\\":\\n    \\n        defaultNodes = \\[i,i2,o,c]\\n        for n in nuke.allNodes():\\n           if n not in defaultNodes:\\n               nuke.delete(n)\\n        \\n        fvalue = g\\['frames'].value()\\n        step = 1\\n        if fvalue < 0:\\n           step = -1\\n          \\n        for f in range(0,int(fvalue)+step,step):\\n           t = nuke.nodes.TimeOffset()\\n           t\\['time_offset'].setValue(-f)\\n           t.setInput(0,i)\\n        \\n           if f == 0 :\\n               lastnode = t\\n        \\n           else :\\n               slice = nuke.nodes.Grade()\\n               slice\\['channels'].setValue(\\\"alpha\\\")\\n               slice\\['blackpoint'].setValue(abs((1/(fvalue+1))*abs(f)))\\n               slice\\['whitepoint'].setValue(abs((1/(fvalue+1))*(abs(f)+1)))\\n               slice.setInput(0,c)\\n               exp = nuke.nodes.Expression()\\n               if g\\['method'].value() == \\\"average\\\":\\n                   exp\\['expr3'].setValue('a>1?1:a')\\n               else:\\n                   exp\\['expr3'].setValue('a>0?1:0')\\n               exp.setInput(0,slice)\\n               km = nuke.nodes.Keymix()\\n               km.setInput(1,t)\\n               km.setInput(0,lastnode)\\n               km.setInput(2,exp)\\n               lastnode = km\\n        \\n        sw = nuke.nodes.Switch()\\n        sw.setInput(0,i)\\n        sw.setInput(1,lastnode)\\n        sw\\['which'].setExpression('parent.maskChannel!=0')\\n        o.setInput(0,sw)\\n            \\n        for n in nuke.allNodes():\\n           nuke.autoplace(n)\\n\\n    elif k.name() == \\\"method\\\":\\n\\n        for e in nuke.allNodes('Expression'):\\n               if g\\['method'].value() == \\\"average\\\":\\n                   e\\['expr3'].setValue('a>1?1:a')\\n               else:\\n                   e\\['expr3'].setValue('a>0?1:0')\\n\\n\"\n selected true\n addUserKnob {20 TimeMachine}\n addUserKnob {41 maskChannel T Copy1.from0}\n addUserKnob {26 \"\"}\n addUserKnob {4 method M {nearest average}}\n addUserKnob {3 frames}\n}\n Input {\n  inputs 0\n  name mask\n  xpos 400\n  ypos -57\n  number 1\n }\nset N40175820 [stack 0]\npush $N40175820\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  name Copy1\n  xpos 400\n  ypos -33\n }\n Input {\n  inputs 0\n  name img\n  xpos 217\n  ypos -111\n }\nset N400be0e0 [stack 0]\n TimeOffset {\n  time \"\"\n  name TimeOffset1\n }\npush $N400be0e0\n Switch {\n  inputs 2\n  which {{parent.maskChannel!=0}}\n  name Switch1\n }\n Output {\n  name Output1\n  xpos 1390\n  ypos 87\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformCutOut.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name TransformCutOut\n tile_color 0xa57aaaff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 TransformCutOut}\n addUserKnob {41 matrix T Transform1.matrix}\n addUserKnob {41 translate T Transform1.translate}\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform1.skewY}\n addUserKnob {41 skew_order l \"skew order\" T Transform1.skew_order}\n addUserKnob {41 center T Transform1.center}\n addUserKnob {26 SetTo l \"Set to:\" T \" \"}\n addUserKnob {22 InputFormatCenter l \"Input Format Center\" -STARTLINE T \"n = nuke.thisNode()\\nw = n.width()\\nh = n.height()\\n\\nc = n.knob(\\\"center\\\")\\n\\nc.setValue(w/2, 0)\\nc.setValue(h/2, 1)\"}\n addUserKnob {22 MaskBBox l \"Mask BBox Center\" -STARTLINE T \"n = nuke.thisNode()\\nb = nuke.toNode(\\\"BBoxToFormat\\\")\\n\\nbbx = b.knob(\\\"bboxCenter\\\").getValue(0)\\nbby = b.knob(\\\"bboxCenter\\\").getValue(1)\\n\\nc = n.knob(\\\"center\\\")\\n\\nc.setValue(bbx, 0)\\nc.setValue(bby, 1)\"}\n addUserKnob {41 invert_matrix l invert T Transform1.invert_matrix}\n addUserKnob {41 filter T Transform1.filter}\n addUserKnob {41 clamp -STARTLINE T Transform1.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T Transform1.black_outside}\n addUserKnob {41 motionblur T Transform1.motionblur}\n addUserKnob {41 shutter T Transform1.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T Transform1.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T Transform1.shuttercustomoffset}\n addUserKnob {26 \"\"}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {41 bbox l \"set bbox to \" T Merge48.bbox}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"Cuts out and Transforms the Masked Region\" T TransformCutOut}\n addUserKnob {26 ver l Version: T v01}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 319\n  ypos 113\n  number 1\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 353\n  ypos 193\n }\nset N8dc6b10 [stack 0]\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 319\n  ypos 264\n }\n Dot {\n  name Dot42\n  note_font_size 41\n  xpos 353\n  ypos 334\n }\nset N8dd5170 [stack 0]\n Invert {\n  channels rgba\n  name Invert8\n  xpos 319\n  ypos 376\n }\n Dot {\n  name Dot39\n  note_font_size 41\n  xpos 353\n  ypos 427\n }\n Input {\n  inputs 0\n  name Input\n  xpos 601\n  ypos 104\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 601\n  ypos 217\n }\n Dot {\n  name Dot41\n  note_font_size 41\n  xpos 635\n  ypos 281\n }\nset N8e01e60 [stack 0]\n Dot {\n  name Dot40\n  note_font_size 41\n  xpos 497\n  ypos 281\n }\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply18\n  label \"\\[value value]\"\n  xpos 463\n  ypos 411\n }\nset N8e0bf00 [stack 0]\npush $N8dd5170\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 267\n  ypos 334\n }\n Dot {\n  name Dot5\n  xpos 267\n  ypos 476\n }\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 334\n  ypos 466\n }\npush $N8e0bf00\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 463\n  ypos 472\n }\n Transform {\n  center {960 540}\n  shutteroffset centred\n  name Transform1\n  xpos 463\n  ypos 512\n }\n Dot {\n  name Dot43\n  note_font_size 41\n  xpos 497\n  ypos 548\n }\npush $N8dd5170\npush $N8e01e60\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply19\n  label \"\\[value value]\"\n  xpos 601\n  ypos 318\n }\n Merge2 {\n  inputs 2\n  operation disjoint-over\n  also_merge all\n  name Merge48\n  xpos 601\n  ypos 545\n }\npush $N8e01e60\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 777\n  ypos 281\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 777\n  ypos 619\n }\nset N8e556f0 [stack 0]\n Dissolve {\n  inputs 2\n  which {{parent.mix}}\n  name Dissolve1\n  label \"\\[value which]\"\n  xpos 601\n  ypos 603\n }\npush $N8e556f0\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 777\n  ypos 687\n }\n Switch {\n  inputs 2\n  which {{\"Dissolve1.which == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 601\n  ypos 677\n }\n Output {\n  name Output1\n  xpos 601\n  ypos 775\n }\npush $N8dc6b10\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n  note_font_color 0xffffffff\n  xpos 409\n  ypos 190\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" +HIDDEN R 1 4}\n  overscanPercent 1\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {14 bboxCenter l \"BBox Center\" R 0 100}\n  bboxCenter {{\"(inputBBox.r-inputBBox.x)/2 + inputBBox.x\"} {\"(inputBBox.t-inputBBox.y)/2 + inputBBox.y\"}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N8e8b480 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N8e8ffb0 [stack 0]\npush $N8e8b480\n  Crop {\n   box {{curve} {curve} {input.width} {input.height}}\n   intersect true\n   crop {{parent.blackOutside}}\n   name Crop6\n   selected true\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_3 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_4 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_5 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_6 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_7 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_8 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_9 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_10 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_11 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_12 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_13 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_14 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_15 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_16 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_17 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_18 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_19 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_20 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_21 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N8e95460 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N8ea44e0 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{input.bbox.r/2} {input.bbox.t/2}}\n   shutteroffset centred\n   name Transform1\n   xpos 120\n   ypos 555\n  }\npush $N8ea44e0\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N8e8ffb0\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N8e95460\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N8ef19b0 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 912\n  }\npush $N8ef19b0\n  NoOp {\n   name OutputBBox1\n   xpos 372\n   ypos 836\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  }\n end_group\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformMatrix.gizmo",
    "content": "Group {\n name TransformMatrix\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nmatrix = n\\['matrix'].value()\\n\\n\\nif (int(n\\['visualize'].getValue()) == 1):\\n    matrix.translationOnly()\\nelif (int(n\\['visualize'].getValue()) == 2):\\n    matrix.rotationOnly()\\nelif (int(n\\['visualize'].getValue()) == 3):\\n    matrix.scaleOnly()\\nelif (int(n\\['visualize'].getValue()) == 4):\\n    matrix.scaleAndRotationOnly()\\n\\nif (n\\['transpose'].getValue() == 1):\\n    matrix.transpose()\\nn.node(\\\"Matrix1\\\")\\['matrix'].setValue(matrix)\"\n tile_color 0xa57aaa00\n selected true\n addUserKnob {20 Transform}\n addUserKnob {12 translate}\n addUserKnob {7 rotate R -100 100}\n addUserKnob {7 rotateRad l \"rotate Rad\" R -10 10}\n rotateRad {{radians(rotate)}}\n addUserKnob {14 scale R 0 100}\n scale 1\n addUserKnob {7 skewx l \"skew X\" R -1 1}\n addUserKnob {7 skewy l \"skew Y\" R -1 1}\n addUserKnob {12 center}\n addUserKnob {22 centerimg l \"center in the img\" -STARTLINE T \"node = nuke.thisNode()\\n\\nfrom1x = 0\\nfrom1y = 0\\n\\nfrom2x = from1x + node.width()\\nfrom2y = from1y\\n\\nfrom3x = from1x+node.width()\\nfrom3y = from1y + node.height()\\n\\nfrom4x = from1x\\nfrom4y = from1y +  node.height()\\n\\n\\ncenterx= int((from2x+from1x)/2)\\ncentery= int((from4y+from1y)/2)\\n\\nnode\\['center'].setValue(centerx,0)\\nnode\\['center'].setValue(centery,1)\"}\n addUserKnob {6 invert +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 message l \"\" +STARTLINE T \"<i>This is just a visualization. Can't modify directly this matrix\"}\n addUserKnob {68 visualize t \"Select what you want to visualize in the matrix\" M {Translation-Rotation-Scale TranslationOnly RotationOnly scaleOnly scaleAndRotationOnly \"\" \"\"}}\n addUserKnob {6 transpose t \"Operator which flips a matrix over its diagonal, that is it switches the row and column indices of the matrix \" -STARTLINE}\n transpose true\n addUserKnob {41 matrix_3 l matrix T Matrix1.matrix}\n addUserKnob {7 cos l cosθ}\n cos {{cos(rotateRad)}}\n addUserKnob {7 sin l sinθ}\n sin {{sin(rotateRad)}}\n addUserKnob {41 matrix T Transform1.matrix}\n addUserKnob {20 email l @}\n addUserKnob {22 tutorial l Tutorial t http://www.andreageremia.it/tutorial_matrix_transform.html T \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial_matrix_transform.html')\\n\" +STARTLINE}\n addUserKnob {26 from l \"\" +STARTLINE T \"Tool created by Andrea Geremia\\n\\nandrea.geremia89@gmail.com\\nwww.andreageremia.it\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 269\n  ypos -186\n }\n Transform {\n  translate {{parent.translate} {parent.translate}}\n  rotate {{parent.rotate}}\n  scale {{parent.scale.w} {parent.scale.h}}\n  skewX {{parent.skewx}}\n  skewY {{parent.skewy}}\n  center {{parent.center} {parent.center}}\n  invert_matrix {{parent.invert}}\n  shutteroffset centred\n  name Transform1\n  selected true\n  xpos 269\n  ypos -129\n }\n Output {\n  name Output1\n  xpos 269\n  ypos -46\n }\n Matrix {\n  inputs 0\n  matrix {\n      {1 0 0 0}\n      {0 1 0 0}\n      {0 0 1 0}\n      {0 0 0 1}\n    }\n  name Matrix1\n  xpos 420\n  ypos -145\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformMatrix4.gizmo",
    "content": "Group {\n name TransformMatrix4_\n selected true\n addUserKnob {20 Matrix4x4_Transform}\n addUserKnob {41 xform_order l \"transform order\" T Axis1.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T Axis1.rot_order}\n addUserKnob {41 translate T Axis1.translate}\n addUserKnob {41 rotate T Axis1.rotate}\n addUserKnob {41 scaling l scale T Axis1.scaling}\n addUserKnob {41 uniform_scale l \"uniform scale\" T Axis1.uniform_scale}\n addUserKnob {41 skew T Axis1.skew}\n addUserKnob {41 pivot T Axis1.pivot}\n addUserKnob {20 \"\" l \"Local matrix\" n 2}\n addUserKnob {41 useMatrix l \"specify matrix\" T Axis1.useMatrix}\n addUserKnob {41 matrix l \"\" +STARTLINE T Axis1.matrix}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xaaaaaa00\n  label \"Transform\\nTo Matrix\"\n  note_font_size 20\n  xpos 764\n  ypos 251\n  bdwidth 218\n  bdheight 180\n }\n Input {\n  inputs 0\n  name matrix\n  xpos 451\n  ypos 137\n }\n Dot {\n  name Dot1\n  xpos 485\n  ypos 195\n }\nset N1e536770 [stack 0]\n Dot {\n  name Dot2\n  xpos 808\n  ypos 195\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Expression {\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 Axis1.world_matrix.0\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 Axis1.world_matrix.1\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 Axis1.world_matrix.2\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 Axis1.world_matrix.3\n  name Expression1\n  xpos 774\n  ypos 331\n }\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Expression {\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 Axis1.world_matrix.4\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 Axis1.world_matrix.5\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 Axis1.world_matrix.6\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 Axis1.world_matrix.7\n  name Expression2\n  xpos 774\n  ypos 355\n }\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Expression {\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 Axis1.world_matrix.8\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 Axis1.world_matrix.9\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 Axis1.world_matrix.10\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 Axis1.world_matrix.11\n  name Expression3\n  xpos 774\n  ypos 379\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Expression {\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 Axis1.world_matrix.12\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 Axis1.world_matrix.13\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 Axis1.world_matrix.14\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 Axis1.world_matrix.15\n  name Expression4\n  xpos 774\n  ypos 403\n }\n Dot {\n  name Dot3\n  xpos 808\n  ypos 574\n }\nset N1e5759e0 [stack 0]\npush $N1e536770\npush $N1e5759e0\n Group {\n  inputs 2\n  name Product_Matrix4_\n  help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n  xpos 451\n  ypos 571\n  addUserKnob {20 Matrix4Product l \"Product Matrix4\"}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Multiply two matrix4: matrixA*matrixB\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name matrixA\n   xpos 344\n   ypos 139\n  }\n  Dot {\n   name Dot3\n   xpos 378\n   ypos 252\n  }\nset N1ef44020 [stack 0]\npush $N1ef44020\npush $N1ef44020\npush $N1ef44020\n  Input {\n   inputs 0\n   name matrixB\n   xpos 21\n   ypos 142\n   number 1\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 (Bmatrix0.0*Amatrix0.0)+(Bmatrix0.1*Amatrix1.0)+(Bmatrix0.2*Amatrix2.0)+(Bmatrix0.3*Amatrix3.0)\n   channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n   expr1 (Bmatrix0.0*Amatrix0.1)+(Bmatrix0.1*Amatrix1.1)+(Bmatrix0.2*Amatrix2.1)+(Bmatrix0.3*Amatrix3.1)\n   channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n   expr2 (Bmatrix0.0*Amatrix0.2)+(Bmatrix0.1*Amatrix1.2)+(Bmatrix0.2*Amatrix2.2)+(Bmatrix0.3*Amatrix3.2)\n   channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n   expr3 (Bmatrix0.0*Amatrix0.3)+(Bmatrix0.1*Amatrix1.3)+(Bmatrix0.2*Amatrix2.3)+(Bmatrix0.3*Amatrix3.3)\n   name MergeExpression1\n   xpos 21\n   ypos 249\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n   expr0 (Bmatrix1.0*Amatrix0.0)+(Bmatrix1.1*Amatrix1.0)+(Bmatrix1.2*Amatrix2.0)+(Bmatrix1.3*Amatrix3.0)\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 (Bmatrix1.0*Amatrix0.1)+(Bmatrix1.1*Amatrix1.1)+(Bmatrix1.2*Amatrix2.1)+(Bmatrix1.3*Amatrix3.1)\n   channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n   expr2 (Bmatrix1.0*Amatrix0.2)+(Bmatrix1.1*Amatrix1.2)+(Bmatrix1.2*Amatrix2.2)+(Bmatrix1.3*Amatrix3.2)\n   channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n   expr3 (Bmatrix1.0*Amatrix0.3)+(Bmatrix1.1*Amatrix1.3)+(Bmatrix1.2*Amatrix2.3)+(Bmatrix1.3*Amatrix3.3)\n   name MergeExpression2\n   xpos 21\n   ypos 273\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n   expr0 (Bmatrix2.0*Amatrix0.0)+(Bmatrix2.1*Amatrix1.0)+(Bmatrix2.2*Amatrix2.0)+(Bmatrix2.3*Amatrix3.0)\n   channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n   expr1 (Bmatrix2.0*Amatrix0.1)+(Bmatrix2.1*Amatrix1.1)+(Bmatrix2.2*Amatrix2.1)+(Bmatrix2.3*Amatrix3.1)\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 (Bmatrix2.0*Amatrix0.2)+(Bmatrix2.1*Amatrix1.2)+(Bmatrix2.2*Amatrix2.2)+(Bmatrix2.3*Amatrix3.2)\n   channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n   expr3 (Bmatrix2.0*Amatrix0.3)+(Bmatrix2.1*Amatrix1.3)+(Bmatrix2.2*Amatrix2.3)+(Bmatrix2.3*Amatrix3.3)\n   name MergeExpression3\n   xpos 21\n   ypos 297\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n   expr0 (Bmatrix3.0*Amatrix0.0)+(Bmatrix3.1*Amatrix1.0)+(Bmatrix3.2*Amatrix2.0)+(Bmatrix3.3*Amatrix3.0)\n   channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n   expr1 (Bmatrix3.0*Amatrix0.1)+(Bmatrix3.1*Amatrix1.1)+(Bmatrix3.2*Amatrix2.1)+(Bmatrix3.3*Amatrix3.1)\n   channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n   expr2 (Bmatrix3.0*Amatrix0.2)+(Bmatrix3.1*Amatrix1.2)+(Bmatrix3.2*Amatrix2.2)+(Bmatrix3.3*Amatrix3.2)\n   channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n   expr3 (Bmatrix3.0*Amatrix0.3)+(Bmatrix3.1*Amatrix1.3)+(Bmatrix3.2*Amatrix2.3)+(Bmatrix3.3*Amatrix3.3)\n   name MergeExpression4\n   selected true\n   xpos 21\n   ypos 321\n  }\n  Output {\n   name Output1\n   xpos 21\n   ypos 421\n  }\n end_group\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input]\"}}\n  name HasInput\n  xpos 451\n  ypos 788\n }\n Output {\n  name Output1\n  xpos 451\n  ypos 852\n }\n Input {\n  inputs 0\n  name axis\n  xpos 1041\n  ypos 158\n  number 1\n }\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 1075\n  ypos 370\n }\n Axis2 {\n  name Axis1\n  xpos 912\n  ypos 346\n  addUserKnob {20 wpp}\n  addUserKnob {18 pointPosition l \"Point Position\"}\n  pointPosition {0 0 0}\n  addUserKnob {6 pointPosition_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pointPosition_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformMix.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name Transform_Mix\n help \"Transform ( Mix - Dissolve )\\n\\nChange all knobs of a Transform node (linked in this curent node) using two different way.\\n\\nMix:\\nMultiply all the Transform curves by the mix slider value.\\n\\nDissolve:\\nMix two Transform nodes together.\\nOn dissolve slider, \\\"0\\\" to keep the value of the Transform 1 and \\\"1\\\" the Transform 2.\\n\"\n knobChanged \"node = nuke.thisNode()\\nknob = nuke.thisKnob()\\nmode = node\\['mode'].value()\\nglcolor = node\\['gl_color'].value()\\nsavecolor = node\\['tile_color'].value()\\n\\nif knob.name() in ('mode', 'showPanel'):\\n    if mode == 'Mix':\\n        node\\['mode_2'].setValue('Mix')\\n        node\\['dissolve'].setVisible(False)\\n        node\\['mix'].setVisible(True)\\n        node\\['T2'].setVisible(False)\\n\\n        if savecolor == (2989502719):\\n            node\\['tile_color'].setValue(glcolor)\\n            node\\['gl_color'].setValue(savecolor)\\n    else:\\n        node\\['dissolve'].setVisible(True)\\n        node\\['mix'].setVisible(False)\\n        node\\['T2'].setVisible(True)\\n\\n        allnodes = \\[nodeT.name() for nodeT in nuke.allNodes(group=nuke.root())]\\n        if node.knob('T2').value() in allnodes:\\n            if savecolor == (2989502719):\\n                node\\['gl_color'].setValue(savecolor)\\n                node\\['tile_color'].setValue(glcolor)\\n            node\\['mode_2'].setValue('Dissolve')\\n        else:\\n            if savecolor != (2989502719):\\n                node\\['tile_color'].setValue(2989502719)\\n                node\\['gl_color'].setValue(savecolor)\\n                nuke.thisNode()\\['mode_2'].setValue('Need to be link to a Transform node')\\n\\nif knob.name() in \\['T1', 'T2']:\\n    if mode == 'Dissolve':\\n        allnodes = \\[nodeT.name() for nodeT in nuke.allNodes(group=nuke.root())]\\n    \\n        if node.knob('T2').value() in allnodes:\\n            if savecolor == (2989502719):\\n                node\\['gl_color'].setValue(savecolor)\\n                node\\['tile_color'].setValue(glcolor)\\n            nuke.thisNode()\\['mode_2'].setValue('Dissolve')\\n        else:\\n            if savecolor != (2989502719):\\n                node\\['tile_color'].setValue(2989502719)\\n                node\\['gl_color'].setValue(savecolor)\\n                nuke.thisNode()\\['mode_2'].setValue('Need to be link to a Transform node')\\n    else:\\n        if savecolor == (2776279807):\\n            glcolor = node\\['gl_color'].value()\\n            if glcolor == (2776279807):\\n                node\\['tile_color'].setValue(glcolor)\\n        else:\\n            pass\\n\"\n tile_color 0xb23030ff\n gl_color 0xa57aaaff\n selected true\n addUserKnob {20 FT l \"Mix - Dissolve\"}\n addUserKnob {4 mode l \"@b;<font color=\\\"green\\\">Mode\" t \"Mix:\\nMultiply all the Transform curves by the mix slider value.\\n\\nDissolve:\\nMix two Transform nodes together.\\nOn dissolve slider, \\\"0\\\" to keep the value of the Trasform 1 and \\\"1\\\" the Trasform 2.\" M {Mix Dissolve \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n mode Dissolve\n addUserKnob {26 S02 l \" \"}\n addUserKnob {41 T1 l \"     Transform 1\" t \"Type the Transform node name you want to mix / dissolve.\" T Input.T1}\n addUserKnob {1 T2 l \"       2 \" t \"Type the Transform node name you want to dissolve with the Transform 1.\" -STARTLINE}\n T2 Transform_Name\n addUserKnob {7 mix l Mix t \"Multiply all the Transform 1 curves by the mix value.\" +HIDDEN}\n mix 1\n addUserKnob {7 dissolve l Dissolve t \"\\\"0\\\" is the Trasform 1 curves value and \\\"1\\\" is the Trasform 2 curves value.\"}\n dissolve 1\n addUserKnob {26 T01 l \"\" +STARTLINE}\n addUserKnob {20 transform_result l \"Result (Transform)\" n 1}\n transform_result 0\n addUserKnob {26 S01 l \" \" T \" \"}\n addUserKnob {41 translate l Translate T Maths.translate}\n addUserKnob {41 rotate l Rotate T Maths.rotate}\n addUserKnob {41 scale l Scale T Maths.scale}\n addUserKnob {41 skewX l \"Skew X\" T Maths.skewX}\n addUserKnob {41 skewY l \"Skew Y\" T Maths.skewY}\n addUserKnob {41 skew_order l \"Skew order\" T T_RESULT.skew_order}\n addUserKnob {41 center l Center T Maths.center}\n addUserKnob {41 invert_matrix l Invert T T_RESULT.invert_matrix}\n addUserKnob {41 filter l Filter T T_RESULT.filter}\n addUserKnob {41 clamp l Clamp -STARTLINE T T_RESULT.clamp}\n addUserKnob {41 black_outside l \"Black Outside\" -STARTLINE T T_RESULT.black_outside}\n addUserKnob {41 motionblur l Motionblur T T_RESULT.motionblur}\n addUserKnob {41 shutter l Shutter T T_RESULT.shutter}\n addUserKnob {41 shutteroffset l \"Shutter Offset\" T T_RESULT.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T T_RESULT.shuttercustomoffset}\n addUserKnob {26 S03 l \" \" T \" \"}\n addUserKnob {22 create_transform l \"<font color = \\\"springGreen\\\"> Create Transform - Linked\" t \"Create a Transform node that have all knobs linked to this node.\" T \"groupNode = nuke.thisNode()\\nname = groupNode.name()\\ncolornode = groupNode.knob('tile_color').value()\\n\\nNT = nuke.createNode(\\\"Transform\\\", inpanel=False )\\nNT\\['translate'].setExpression(name + \\\".translate\\\")\\nNT\\['rotate'].setExpression(name + \\\".rotate\\\")\\nNT\\['scale'].setExpression(name + \\\".scale\\\")\\nNT\\['scale'].setSingleValue(False)\\nNT\\['center'].setExpression(name + \\\".center\\\")\\nNT\\['invert_matrix'].setExpression(name + \\\".invert_matrix\\\")\\nNT\\['filter'].setExpression(name + \\\".filter\\\")\\nNT\\['clamp'].setExpression(name + \\\".clamp\\\")\\nNT\\['black_outside'].setExpression(name + \\\".black_outside\\\")\\nNT\\['motionblur'].setExpression(name + \\\".motionblur\\\")\\nNT\\['shutter'].setExpression(name + \\\".shutter\\\")\\nNT\\['shutteroffset'].setExpression(name + \\\".shutteroffset\\\")\\nNT\\['shuttercustomoffset'].setExpression(name + \\\".shuttercustomoffset\\\")\\nNT\\['label'].setValue(\\\"(\\\" +name + \\\")\\\")\\nNT\\['tile_color'].setValue(colornode)\\nNT.setSelected(True)\\n\\nnuke.nodeCopy('%clipboard%')\\n\\nn = nuke.selectedNode()\\nnuke.delete(n)\\n\\nnuke.selectAll() \\nnuke.invertSelection()\\n\\nnodePos = ( nuke.thisNode().xpos(), nuke.thisNode().ypos()) \\n\\ngroupNode.end()\\n\\nfor node in nuke.allNodes():\\n    node.setSelected(False)\\n\\nnuke.nodePaste('%clipboard%')\\n\\ngroupNode.setSelected(False)\\n\\nnodesToPlace = sorted( nuke.selectedNodes(), key=lambda node: node.ypos())\\n\\nfor index,node in enumerate(nodesToPlace):\\n    node.setXYpos(nodePos\\[0]+100, nodePos\\[1])\" +STARTLINE}\n addUserKnob {22 createb l \"<font color = \\\"CornflowerBlue\\\">Create Transform - Baked\" t \"Create a Transform node with the same curves as the Camera Shake node.\" -STARTLINE T \"groupNode = nuke.thisNode()\\nname = groupNode.name()\\ncolornode = groupNode.knob('tile_color').value()\\n\\nNT = nuke.createNode(\\\"Transform\\\", inpanel=False )\\nNT\\['translate'].setExpression(name + \\\".translate\\\")\\nNT\\['rotate'].setExpression(name + \\\".rotate\\\")\\nNT\\['scale'].setExpression(name + \\\".scale_1\\\")\\nNT\\['scale'].setSingleValue(False)\\nNT\\['center'].setExpression(name + \\\".center\\\")\\nNT\\['invert_matrix'].setExpression(name + \\\".invert_matrix\\\")\\nNT\\['filter'].setExpression(name + \\\".filter\\\")\\nNT\\['clamp'].setExpression(name + \\\".clamp\\\")\\nNT\\['black_outside'].setExpression(name + \\\".black_outside\\\")\\nNT\\['motionblur'].setExpression(name + \\\".motionblur\\\")\\nNT\\['shutter'].setExpression(name + \\\".shutter\\\")\\nNT\\['shutteroffset'].setExpression(name + \\\".shutteroffset\\\")\\nNT\\['shuttercustomoffset'].setExpression(name + \\\".shuttercustomoffset\\\")\\nNT\\['label'].setValue(\\\"(\\\" +name + \\\")\\\")\\nNT\\['tile_color'].setValue(colornode)\\nNT.setSelected(True)\\n\\n\\ndef bakeExpressions(nodes=None, start=None, end=None, views=None):\\n\\n    if nodes is None:\\n        nodes = nuke.selectedNodes()\\n    if not nodes:\\n        nuke.message('No nodes to bake')\\n        return\\n\\n    scriptRange = nuke.root().frameRange()\\n    if start is None:\\n        start = scriptRange.first()\\n    if end is None:\\n        end = scriptRange.last()\\n\\n    if views is None:\\n        views = nuke.views()\\n    elif not views:\\n        nuke.message('No views to bake')\\n        return\\n    elif not set(views).issubset(nuke.views()):\\n        nuke.message('Not all views in %s exist in script' % views)\\n        return\\n\\n    for node in nodes:\\n        for knob in node.knobs().values():\\n            if isinstance(knob, nuke.Array_Knob):\\n                for view in views:\\n                    if knob.isAnimated(view=view):\\n                        aSize = 1 if knob.singleValue(view) else knob.arraySize()\\n                        for index in range(aSize):\\n                            anim = knob.animation(index, view=view)\\n                            if anim is None or anim.noExpression():\\n                                continue\\n                            for f in range(start, end + 1):\\n                                anim.setKey(f, anim.evaluate(f))\\n                            knob.setExpression('curve', channel=index, view=view)\\n                            if anim.constant():\\n                                knob.clearAnimated(index, view=view)\\n\\ndef promptAndBake():\\n    nodes = nuke.selectedNodes()\\n    fr = nuke.getFramesAndViews(\\\"Range to Bake\\\", str(nuke.root().frameRange()))\\n    if fr is None:\\n        return\\n    fr, v = fr\\n    try:\\n        fr = nuke.FrameRange(fr)\\n    except ValueError as e:\\n        nuke.message(str(e))\\n        return\\n    bakeExpressions(nodes=nodes, start=fr.first(), end=fr.last(), views=v)\\n    \\npromptAndBake()\\n\\nnuke.nodeCopy('%clipboard%')\\n\\nn = nuke.selectedNode()\\nnuke.delete(n)\\n\\nnuke.selectAll() \\nnuke.invertSelection()\\n\\nnodePos = ( nuke.thisNode().xpos(), nuke.thisNode().ypos()) \\n\\ngroupNode.end()\\n\\nfor node in nuke.allNodes():\\n    node.setSelected(False)\\n\\nnuke.nodePaste('%clipboard%')\\n\\ngroupNode.setSelected(False)\\n\\nnodesToPlace = sorted( nuke.selectedNodes(), key=lambda node: node.ypos())\\n\\nfor index,node in enumerate(nodesToPlace):\\n    node.setXYpos(nodePos\\[0]+100, nodePos\\[1])\"}\n addUserKnob {26 S04 l \" \"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 by2 l \" \" T \"                                                                                               \"}\n addUserKnob {26 FTools l \" \" t \"FranklinVFX.com\\n\" -STARTLINE T \"<font color=\\\"#1C1C1C\\\"> Franklin VFX - 2017\"}\n addUserKnob {1 output l INVISIBLE +INVISIBLE}\n output \"\\[if \\{\\[exists \\[value T2]]==\\\"0\\\"\\} \\{return \\\"\\[knob this.name_2 0]\\\"\\} \\{return \\\"\\[knob this.name_2 1]\\\"\\}]\\[value mode_2]\"\n addUserKnob {1 error l INVISIBLE +INVISIBLE}\n error \"\\[if \\{\\[exists \\[value T2]]==\\\"0\\\"\\} \\{return \\\"\\[knob this.name_2 0]\\\"\\} \\{return \\\"\\[knob this.name_2 1]\\\"\\}]\"\n addUserKnob {1 name_2 l INVISIBLE +INVISIBLE}\n name_2 0\n addUserKnob {1 mode_2 l INVISIBLE +INVISIBLE}\n mode_2 \"Need to be link to a Transform node\"\n}\n Transform {\n  inputs 0\n  center {{\"\\[value parent.T1].center.x\"} {\"\\[value parent.T1].center.y\"}}\n  shutteroffset centred\n  name T0\n  tile_color 0xfefefeff\n  xpos 399\n  ypos 703\n  hide_input true\n }\n Transform {\n  translate {{\"\\[value parent.T1].translate\"} {\"\\[value parent.T1].translate\"}}\n  rotate {{\"\\[value parent.T1].rotate\"}}\n  scale {{\"\\[value parent.T1].scale\"}}\n  skewX {{\"\\[value parent.T1].skewX\"}}\n  skewY {{\"\\[value parent.T1].skewY\"}}\n  center {{\"\\[value parent.T1].center.x\"} {\"\\[value parent.T1].center.y\"}}\n  invert_matrix {{\"\\[value parent.T1].invert_matrix\"}}\n  shutteroffset centred\n  name T1\n  tile_color 0xfefefeff\n  label \"\\[value parent.T1]\"\n  xpos 399\n  ypos 729\n }\n Transform {\n  translate {{\"\\[value parent.T2].translate\"} {\"\\[value parent.T2].translate\"}}\n  rotate {{\"\\[value parent.T2].rotate\"}}\n  scale {{\"\\[value parent.T2].scale\"}}\n  skewX {{\"\\[value parent.T2].skewX\"}}\n  skewY {{\"\\[value parent.T2].skewY\"}}\n  center {{\"\\[value parent.T2].center.x\"} {\"\\[value parent.T2].center.y\"}}\n  invert_matrix {{\"\\[value parent.T2].invert_matrix\"}}\n  filter Impulse\n  shutteroffset centred\n  name T2\n  tile_color 0xfefefeff\n  label \"\\[value parent.T2]\\n\"\n  note_font Verdana\n  xpos 399\n  ypos 767\n }\n NoOp {\n  name Maths\n  label \"\\[value parent.T1]\\n\\[value parent.T2]\"\n  note_font Verdana\n  xpos 399\n  ypos 803\n  hide_input true\n  addUserKnob {20 User}\n  addUserKnob {6 mode +STARTLINE}\n  mode {{parent.mode}}\n  addUserKnob {7 mixer2 l mix}\n  mixer2 {{1-parent.mix}}\n  addUserKnob {7 mixer l dissolve}\n  mixer {{parent.dissolve}}\n  addUserKnob {12 translate}\n  translate {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].translate)*(1-mixer))+((\\[value parent.T2].translate)*mixer) : ((\\[value parent.T1].translate)*(1-mixer))+(0*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].translate)*(1-mixer2))+((T0.translate)*mixer2) : ((\\[value parent.T1].translate)*(1-mixer2))+(0*mixer2))\"} {\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].translate)*(1-mixer))+((\\[value parent.T2].translate)*mixer) : ((\\[value parent.T1].translate)*(1-mixer))+(0*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].translate)*(1-mixer2))+((T0.translate)*mixer2) : ((\\[value parent.T1].translate)*(1-mixer2))+(0*mixer2))\"}}\n  addUserKnob {7 rotate R -180 180}\n  rotate {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].rotate)*(1-mixer))+((\\[value parent.T2].rotate)*mixer) : ((\\[value parent.T1].rotate)*(1-mixer))+(0*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].rotate)*(1-mixer2))+((T0.rotate)*mixer2) : ((\\[value parent.T1].rotate)*(1-mixer2))+(0*mixer2))\"}}\n  addUserKnob {14 scale R 0 100}\n  scale {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].scale)*(1-mixer))+((\\[value parent.T2].scale)*mixer) : ((\\[value parent.T1].scale)*(1-mixer))+(1*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].scale)*(1-mixer2))+((T0.scale)*mixer2) : ((\\[value parent.T1].scale)*(1-mixer2))+(1*mixer2))\"} {\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].scale)*(1-mixer))+((\\[value parent.T2].scale)*mixer) : ((\\[value parent.T1].scale)*(1-mixer))+(1*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].scale)*(1-mixer2))+((T0.scale)*mixer2) : ((\\[value parent.T1].scale)*(1-mixer2))+(1*mixer2))\"}}\n  addUserKnob {7 skewX l \"skew X\" R -1 1}\n  skewX {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].skewX)*(1-mixer))+((\\[value parent.T2].skewX)*mixer) : ((\\[value parent.T1].skewX)*(1-mixer))+(0*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].skewX)*(1-mixer2))+((T0.skewX)*mixer2) : ((\\[value parent.T1].skewX)*(1-mixer2))+(0*mixer2))\"}}\n  addUserKnob {7 skewY l \"skew Y\" R -1 1}\n  skewY {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].skewY)*(1-mixer))+((\\[value parent.T2].skewY)*mixer) : ((\\[value parent.T1].skewY)*(1-mixer))+(0*mixer)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].skewY)*(1-mixer2))+((T0.skewY)*mixer2) : ((\\[value parent.T1].skewY)*(1-mixer2))+(0*mixer2))\"}}\n  addUserKnob {12 center}\n  center {{\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].center.x)*(1-mixer))+((\\[value parent.T2].center.x)*mixer) : (\\[value parent.T1].center.x)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].center.x)*(1-mixer2))+((T0.center.x)*mixer2) : (\\[value parent.T1].center.x))\"} {\"\\[value mode] ? (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].center.y)*(1-mixer))+((\\[value parent.T2].center.y)*mixer) : (\\[value parent.T1].center.y)) : (\\[exists \\[value parent.T2]] ? ((\\[value parent.T1].center.y)*(1-mixer2))+((T0.center.y)*mixer2) : (\\[value parent.T1].center.y))\"}}\n }\n Input {\n  inputs 0\n  name Input\n  xpos 399\n  ypos 285\n  addUserKnob {20 User}\n  addUserKnob {1 T1}\n  T1 \"Transform Name\"\n  addUserKnob {1 T2}\n  T2 \"\\[value parent.T2]\"\n }\n Transform {\n  translate {{parent.Maths.translate.x} {parent.Maths.translate.y}}\n  rotate {{parent.Maths.rotate}}\n  scale {{parent.Maths.scale.w} {parent.Maths.scale.h}}\n  skewX {{parent.Maths.skewX}}\n  skewY {{parent.Maths.skewY}}\n  center {{parent.Maths.center.x} {parent.Maths.center.y}}\n  shutteroffset centred\n  name T_RESULT\n  label \"\\[value filter]\"\n  selected true\n  xpos 399\n  ypos 359\n }\n Output {\n  name FranklinVFX\n  xpos 399\n  ypos 664\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformVector2.gizmo",
    "content": "Group {\n name TransformVector2_\n help \"Transforms an image assuming it is a motion vector in RGBA.\\nCompared to a regular transform, this will edit the pixel colors to compensate for vector direction and magnitude.\\n\\nWarning: This node breaks concatenation.\"\n tile_color 0xc692ccff\n addUserKnob {20 transform l \"Transform Vector2\"}\n addUserKnob {41 matrix T Transform1.matrix}\n addUserKnob {41 translate T Transform1.translate}\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform1.skewY}\n addUserKnob {41 skew_order l \"skew order\" T Transform1.skew_order}\n addUserKnob {41 center T Transform1.center}\n addUserKnob {41 invert_matrix l invert T Transform1.invert_matrix}\n addUserKnob {41 filter T Transform1.filter}\n addUserKnob {41 clamp -STARTLINE T Transform1.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T Transform1.black_outside}\n addUserKnob {41 motionblur T Transform1.motionblur}\n addUserKnob {41 shutter T Transform1.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T Transform1.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T Transform1.shuttercustomoffset}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vectorB\n  xpos -482\n  ypos -5\n }\nset N9f70fb0 [stack 0]\n Transform {\n  center {1024 778}\n  shutteroffset centred\n  name Transform1\n  xpos -482\n  ypos 92\n }\nset N9f756d0 [stack 0]\n ColorMatrix {\n  matrix {\n      {{\"\\[python nuke.toNode('Transform1')\\\\\\['matrix'\\\\].value()\\\\\\[0\\\\]]\"} {\"\\[python nuke.toNode('Transform1')\\\\\\['matrix'\\\\].value()\\\\\\[4\\\\]]\"} 0}\n      {{\"\\[python nuke.toNode('Transform1')\\\\\\['matrix'\\\\].value()\\\\\\[1\\\\]]\"} {\"\\[python nuke.toNode('Transform1')\\\\\\['matrix'\\\\].value()\\\\\\[5\\\\]]\"} 0}\n      {0 0 0}\n    }\n  name ColorMatrix1\n  xpos -482\n  ypos 172\n }\n Output {\n  name Output1\n  xpos -482\n  ypos 232\n }\npush $N9f756d0\npush $N9f70fb0\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransformVector3.gizmo",
    "content": "Group {\n name TransformVector3_\n help \"Transform a Vector3 in 3 dimensions.\"\n addUserKnob {20 main_tab l \"Normalize Vector3\"}\n addUserKnob {4 matrix_source l \"Use matrix from\" t \"The vectors can be transformed either by the an Axis connected to the Axis input, or a pixel matrix connected to the matrix input.\\nOnly one can be used at once.\" M {Axis \"Pixel Matrix\"}}\n addUserKnob {6 is_vec4 l \"Use alpha as vector W\" t \"4x4 Matrices can only transform vectors of dimention 4. The common method to transform a vecor3 with a matrix4 is to promote the vector3 to a vector4 by setting the w dimention to 1.\\nBy checking this box, the vector w will be set to the alpha value instead. Only use if you know what you are trying to achieve.\" +STARTLINE}\n addUserKnob {6 normalize l \"Normalize result\" t \"When enabled, the resulting vector is divided by the vector.w after the transformation.\\nFor some type of transformations (for example 3d to 2d projection), this step may be required.\" -STARTLINE}\n normalize true\n addUserKnob {6 invert l Invert t \"Invert the transform Matrix\" -STARTLINE}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name axis\n  xpos 546\n  ypos -298\n  number 2\n }\n Axis2 {\n  useMatrix true\n  name MatrixKnob\n  xpos 556\n  ypos -206\n }\n Input {\n  inputs 0\n  name matrix\n  xpos 358\n  ypos -303\n  number 1\n }\n Input {\n  inputs 0\n  name vector3\n  xpos 0\n  ypos -315\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 34\n  ypos -190\n }\nset Nf115350 [stack 0]\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Expression {\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 MatrixKnob.world_matrix.0\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 MatrixKnob.world_matrix.1\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 MatrixKnob.world_matrix.2\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 MatrixKnob.world_matrix.3\n  name Expression1\n  xpos 195\n  ypos -193\n }\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Expression {\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 MatrixKnob.world_matrix.4\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 MatrixKnob.world_matrix.5\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 MatrixKnob.world_matrix.6\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 MatrixKnob.world_matrix.7\n  name Expression2\n  xpos 195\n  ypos -169\n }\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Expression {\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 MatrixKnob.world_matrix.8\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 MatrixKnob.world_matrix.9\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 MatrixKnob.world_matrix.10\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 MatrixKnob.world_matrix.11\n  name Expression3\n  xpos 195\n  ypos -145\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Expression {\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 MatrixKnob.world_matrix.12\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 MatrixKnob.world_matrix.13\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 MatrixKnob.world_matrix.14\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 MatrixKnob.world_matrix.15\n  name Expression4\n  xpos 195\n  ypos -121\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 229\n  ypos -36\n }\n Switch {\n  inputs 2\n  which {{parent.matrix_source}}\n  name Switch1\n  xpos 358\n  ypos -39\n }\n Shuffle {\n  in matrix0\n  name Shuffle1\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 358\n  ypos 107\n }\nset Ne5f8350 [stack 0]\n Shuffle {\n  in matrix1\n  name Shuffle2\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 358\n  ypos 147\n }\nset Ne68eb10 [stack 0]\n Shuffle {\n  in matrix2\n  name Shuffle3\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 358\n  ypos 183\n }\nset Ne36aef0 [stack 0]\n Shuffle {\n  in matrix3\n  name Shuffle4\n  label \"in \\[value in]-->out \\[value out]\"\n  xpos 358\n  ypos 220\n }\npush $Ne36aef0\npush $Ne68eb10\npush $Ne5f8350\npush $Nf115350\n Dot {\n  name Dot3\n  tile_color 0xcccccc00\n  xpos 30\n  ypos 165\n }\nset N119252d0 [stack 0]\n BlinkScript {\n  inputs 5\n  recompileCount 18\n  ProgramGroup 1\n  KernelDescription \"2 \\\"TransformVector4\\\" iterate pixelWise e9bfb03cdbf363d4b657df0f835e68dba3bb796a594c3822ebad3f28e4e0e81c 6 \\\"src\\\" Read Point \\\"matrix0\\\" Read Point \\\"matrix1\\\" Read Point \\\"matrix2\\\" Read Point \\\"matrix3\\\" Read Point \\\"dst\\\" Write Point 3 \\\"Input is Vector 4\\\" Bool 1 AA== \\\"Divide by W\\\" Bool 1 AQ== \\\"Invert Transform\\\" Bool 1 AA== 3 \\\"is_vector4\\\" 1 1 \\\"do_normalization\\\" 1 1 \\\"invert\\\" 1 1 0\"\n  kernelSource \"kernel TransformVector4 : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix0; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix1; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix2; // the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> matrix3; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    bool is_vector4; \\n    bool do_normalization; \\n    bool invert;\\n\\n  // In define(), parameters can be given labels and default values.\\n  void define() \\{\\n    defineParam(is_vector4, \\\"Input is Vector 4\\\", false);\\n    defineParam(do_normalization, \\\"Divide by W\\\", true);\\n    defineParam(invert, \\\"Invert Transform\\\", false);\\n  \\}\\n\\n  void process() \\{\\n    // Read the input image\\n    SampleType(src) vector = src();\\n    SampleType(matrix0) m0 = matrix0();\\n    SampleType(matrix1) m1 = matrix1();\\n    SampleType(matrix2) m2 = matrix2();\\n    SampleType(matrix3) m3 = matrix3();\\n\\n    // Create the matrix object (matrix3 in this case)\\n    float4x4  matrix;\\n    matrix\\[0]\\[0] = m0.x;\\n    matrix\\[0]\\[1] = m0.y;\\n    matrix\\[0]\\[2] = m0.z;\\n    matrix\\[0]\\[3] = m0.w;\\n    matrix\\[1]\\[0] = m1.x;\\n    matrix\\[1]\\[1] = m1.y;\\n    matrix\\[1]\\[2] = m1.z;\\n    matrix\\[1]\\[3] = m1.w;\\n    matrix\\[2]\\[0] = m2.x;\\n    matrix\\[2]\\[1] = m2.y;\\n    matrix\\[2]\\[2] = m2.z;\\n    matrix\\[2]\\[3] = m2.w;\\n    matrix\\[3]\\[0] = m3.x;\\n    matrix\\[3]\\[1] = m3.y;\\n    matrix\\[3]\\[2] = m3.z;\\n    matrix\\[3]\\[3] = m3.w;\\n\\n    if (invert) \\{\\n      matrix = matrix.invert();\\n    \\}\\n\\n    // Transform\\n    float a = vector.w;\\n    if (!is_vector4) \\{\\n      vector.w = 1.0f;\\n    \\}\\n    vector  = matrix*vector;\\n    if (do_normalization) \\{\\n      vector  = vector/vector.w;\\n    \\}\\n    if (!is_vector4) \\{\\n      vector.w = a;\\n    \\}\\n\\n    // Write the result to the output image\\n    dst() = float4(vector.x, vector.y, vector.z, vector.w);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  \"TransformVector4_Input is Vector 4\" {{parent.is_vec4}}\n  \"TransformVector4_Divide by W\" {{parent.normalize}}\n  \"TransformVector4_Invert Transform\" {{parent.invert}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 128\n  ypos 156\n }\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  xpos 162\n  ypos 296\n }\npush $N119252d0\n Merge2 {\n  inputs 2\n  operation copy\n  bbox B\n  name Merge1\n  xpos -4\n  ypos 293\n }\n Output {\n  name Output1\n  xpos -4\n  ypos 544\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TranslateMatrix4.gizmo",
    "content": "Group {\n name TranslateMatrix4_\n help \"Translate a matrix4 using a control channel (rgb from vector input) for which each channel is considered as a scalar for x, y and z\"\n addUserKnob {20 Matrix4x4_Translate}\n addUserKnob {26 Description l \"\" +STARTLINE T \"Translate a matrix4 using a control channel (rgb) for which each channel is considered as a scalar for x, y and z\"}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name vector\n  xpos 491\n  ypos 155\n  number 1\n }\n Dot {\n  name Dot1\n  xpos 525\n  ypos 252\n }\n Input {\n  inputs 0\n  name matrix\n  xpos 344\n  ypos 161\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n MergeExpression {\n  inputs 2\n  channel0 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr0 matrix0.3+Ar\n  channel1 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr1 matrix1.3+Ag\n  channel2 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr2 matrix2.3+Ab\n  channel3 none\n  name MergeExpression1\n  xpos 344\n  ypos 249\n }\n Output {\n  name Output1\n  xpos 344\n  ypos 349\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_TransposeMatrix4.gizmo",
    "content": "Group {\n name TransposeMatrix4_\n help \"Transpose a pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix3)\"\n addUserKnob {20 Matrix4 l TransposeMatrix4}\n addUserKnob {26 Description l \"\" +STARTLINE T \"Transpose matrix channels\"}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Inputmatrix\n  xpos 361\n  ypos 272\n }\n Dot {\n  name Dot31\n  tile_color 0xcccccc00\n  xpos 395\n  ypos 355\n }\nset N2070ca60 [stack 0]\n Dot {\n  name Dot32\n  tile_color 0xcccccc00\n  xpos 497\n  ypos 355\n }\nset N15d21900 [stack 0]\n Dot {\n  name Dot33\n  tile_color 0xcccccc00\n  xpos 619\n  ypos 355\n }\nset N202b2f20 [stack 0]\n Dot {\n  name Dot34\n  tile_color 0xcccccc00\n  xpos 736\n  ypos 355\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Expression {\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 matrix0.3\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 matrix1.3\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 matrix2.3\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  name Expression56\n  xpos 702\n  ypos 402\n }\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 736\n  ypos 638\n }\npush $N202b2f20\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Expression {\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 matrix0.2\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 matrix1.2\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 matrix3.2\n  name Expression55\n  xpos 585\n  ypos 399\n }\n Dot {\n  name Dot1\n  tile_color 0xcccccc00\n  xpos 619\n  ypos 548\n }\npush $N15d21900\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Expression {\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 matrix0.1\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 matrix2.1\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 matrix3.1\n  name Expression54\n  xpos 463\n  ypos 398\n }\n Dot {\n  name Dot37\n  tile_color 0xcccccc00\n  xpos 497\n  ypos 464\n }\npush $N2070ca60\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Expression {\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 matrix1.0\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 matrix2.0\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 matrix3.0\n  name Expression53\n  xpos 361\n  ypos 395\n }\n Copy {\n  inputs 2\n  from0 matrix1.0\n  to0 matrix1.0\n  from1 matrix1.2\n  to1 matrix1.2\n  from2 matrix1.3\n  to2 matrix1.3\n  bbox B\n  name Copy1\n  xpos 361\n  ypos 442\n }\n Copy {\n  inputs 2\n  from0 matrix2.0\n  to0 matrix2.0\n  from1 matrix2.1\n  to1 matrix2.1\n  from2 matrix2.3\n  to2 matrix2.3\n  bbox B\n  name Copy2\n  xpos 361\n  ypos 526\n }\n Copy {\n  inputs 2\n  from0 matrix3.0\n  to0 matrix3.0\n  from1 matrix3.1\n  to1 matrix3.1\n  from2 matrix3.2\n  to2 matrix3.2\n  bbox B\n  name Copy3\n  xpos 361\n  ypos 616\n }\n Output {\n  name Output1\n  xpos 361\n  ypos 733\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_UVEditor.gizmo",
    "content": "Group {\n name UVEditor\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x6666ff\n addUserKnob {20 tab_general l General}\n addUserKnob {3 texSize l \"texture size\"}\n texSize 1024\n addUserKnob {41 filter T SR.filter}\n addUserKnob {41 antialiasing T SR.antialiasing}\n addUserKnob {26 \"\"}\n addUserKnob {41 view_wireframe l \"view wireframe\" T menu02.view_wireframe}\n addUserKnob {7 wireframe_size l \"wireframe size\" R 0.1 10}\n wireframe_size 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 output T menu01.output}\n addUserKnob {30 uv_shift l INVISIBLE +INVISIBLE}\n addUserKnob {41 scanRes +INVISIBLE T store.scanRes}\n addUserKnob {22 udim_export l export +DISABLED T \"thisGRP = nuke.thisGroup()\\ndataCheckNode = nuke.toNode('dataCheck')\\n\\n########################################################\\n\\nusrUV = thisGRP\\['uv_shift'].getValue()\\ndataReturn = \\[]\\n\\nprogBar = nuke.ProgressTask('Checking UV')\\njobCount = 0\\n\\nfor v in range (0, 10) :\\n  for u in range (0, 10) :\\n\\n    ### progress bar\\n    jobCount += 1\\n    progShow = int(jobCount/100 * 100)\\n    if progBar.isCancelled() :\\n      break;\\n    progBar.setProgress(progShow)\\n    #################\\n\\n    thisGRP\\['uv_shift'].setValue(\\[u,v])\\n    nuke.execute(dataCheckNode, nuke.frame(), nuke.frame())\\n    if dataCheckNode\\['maxlumapixvalue'].getValue() != \\[0.0, 0.0, 0.0] :\\n      dataReturn.append(1)\\n    else :\\n      dataReturn.append(0)\\n\\ndel progBar\\n\\ndataCheckNode\\['maxlumapixdata'].clearAnimated()\\ndataCheckNode\\['maxlumapixvalue'].clearAnimated()\\ndataCheckNode\\['minlumapixdata'].clearAnimated()\\ndataCheckNode\\['minlumapixvalue'].clearAnimated()\\n\\nif len(dataReturn) == 100 :\\n\\tfor i in range (0, 100) :\\n\\t  if dataReturn\\[i] == 1 :\\n\\t    uvMax = i\\n\\n\\tthisGRP\\['uv_shift'].setValue(usrUV)\\n\\n\\t########################################################\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\troot = getLevel()\\n\\n\\troot.begin()\\n\\toutFR = nuke.nodes.FrameRange()\\n\\toutFR\\['first_frame'].setValue(1001)\\n\\toutFR\\['last_frame'].setValue(1001 + uvMax)\\n\\toutFR\\['label'].setValue( 'udim range : 1001 - \\{0\\}'.format( str(1001 + uvMax) ) )\\n\\toutFR.setInput(0, thisGRP)\\n\\toutFR.setXYpos(int(thisGRP\\['xpos'].value()), int(thisGRP\\['ypos'].value()+80))\\n\\n\\texpDot = nuke.nodes.Dot()\\n\\texpDot\\['label'].setValue('Texture modify here : swap the paint/patch texture into udim frame')\\n\\texpDot.setInput(0, outFR)\\n\\n\\tyDot = nuke.nodes.Dot()\\n\\tyDot.setInput(0, expDot)\\n\\n\\tuvGRP = nuke.nodes.Group()\\n\\tuvGRP\\['label'].setValue('udim stitch for nuke')\\n\\n\\tnDot = nuke.nodes.Dot()\\n\\tnDot\\['label'].setValue('Connect to Geo')\\n\\troot.end()\\n\\n\\tuvGRP.begin()\\n\\tinNode = nuke.nodes.Input(name='udim')\\n\\tcropNode = nuke.nodes.Crop()\\n\\tcropNode\\['crop'].setValue(1)\\n\\tcropNode.setInput(0, inNode)\\n\\tallDot = nuke.nodes.Dot()\\n\\tallDot.setInput(0, cropNode)\\n\\n\\tuvMerge = nuke.nodes.Merge2()\\n\\toutNode = nuke.nodes.Output()\\n\\toutNode.setInput(0, uvMerge)\\n\\n\\tfor i in range (0, uvMax+1) :\\n\\t  uDimHold = nuke.nodes.FrameHold()\\n\\t  uDimHold\\['first_frame'].setValue(1001+i)\\n\\t  uDimHold.setInput(0, allDot)\\n\\t  \\n\\t  uvTran = nuke.nodes.Transform()\\n\\t  uvTran.addKnob(nuke.UV_Knob('uv_offset'))\\n\\t  if i < 10 :\\n\\t    u = i\\n\\t    v = 0\\n\\t  else :\\n\\t    if i < 100 :\\n\\t      u = int(str(i)\\[1])\\n\\t      v = int(str(i)\\[0])\\n\\t  uvTran\\['uv_offset'].setValue(\\[u, v])\\n\\t  uvTran\\['translate'].setExpression('input.width*uv_offset.u', 0)\\n\\t  uvTran\\['translate'].setExpression('input.height*uv_offset.v', 1)\\n\\t  uvTran.setInput(0, uDimHold)\\n\\n\\t  uvMerge.setInput(i+3, uvTran)\\n\\n\\n\\tuvGRP.end()\\n\\n\\tuvGRP.setInput(0, yDot)\\n\\tnDot.setInput(0, uvGRP)\\n\\n\\troot.begin()\\n\\texWrite = nuke.nodes.Write()\\n\\texWrite.setInput(0, yDot)\\n\\texWrite\\['label'].setValue('export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]')\\n\\troot.end()\\n\\n\\tdel uvMax\\nelse :\\n\\tnuke.message('Scan process terminated by user.')\\n\\ndel dataReturn\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 font T store.font}\n addUserKnob {6 disable_error l \"disable text\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-04-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fix&nbsp;misspelling&nbsp;of&nbsp;knob's&nbsp;label<br>-&nbsp;fix&nbsp;not&nbsp;working&nbsp;disable&nbsp;text&nbsp;knob<br><br>1.3<br>-&nbsp;fix&nbsp;font&nbsp;issue<br>&nbsp;&nbsp;works&nbsp;on&nbsp;linux,&nbsp;mac&nbsp;&&nbsp;windows<br><br>1.2<br>-&nbsp;preview&nbsp;in&nbsp;uv&nbsp;space&nbsp;set&nbsp;limited&nbsp;<br>&nbsp;&nbsp;in&nbsp;1024&nbsp;resolution&nbsp;for&nbsp;not&nbsp;drag&nbsp;<br>&nbsp;&nbsp;down&nbsp;speed&nbsp;purpose.<br>-&nbsp;added&nbsp;show&nbsp;tile&nbsp;number<br>-&nbsp;changed&nbsp;uv&nbsp;combine&nbsp;to&nbsp;uv&nbsp;stitch<br>&nbsp;&nbsp;in&nbsp;export&nbsp;group<br>-&nbsp;code&nbsp;update<br>-&nbsp;scan&nbsp;size&nbsp;reduce,&nbsp;speed&nbsp;up&nbsp;process\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1755\n  ypos 302\n  bdwidth 263\n  bdheight 296\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x424242ff\n  label \"UV preview\"\n  note_font_size 42\n  xpos -824\n  ypos 451\n  bdwidth 343\n  bdheight 672\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x424242ff\n  label udim\n  note_font_size 42\n  xpos -328\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x424242ff\n  label uvtile\n  note_font_size 42\n  xpos 109\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n Input {\n  inputs 0\n  name tex\n  xpos -1000\n  ypos 83\n  number 1\n }\n Wireframe {\n  inputs 0\n  line_width {{wireframe_size}}\n  name Wireframe1\n  xpos -866\n  ypos 207\n }\n Switch {\n  inputs 2\n  which {{!view_wireframe}}\n  name Switch2\n  xpos -1000\n  ypos 207\n }\n Input {\n  inputs 0\n  name geo\n  xpos -1171\n  ypos 82\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -1171\n  ypos 207\n }\n Dot {\n  name Dot6\n  xpos -1137\n  ypos 287\n }\n Dot {\n  name Dot1\n  xpos -1137\n  ypos 384\n }\nset Na180ec00 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{store.scanRes}}\n  box_height {{box_width}}\n  box_fixed true\n  name scanRes\n  xpos -1061\n  ypos 595\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan {{store.scanRes*10}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR1\n  xpos -1171\n  ypos 595\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -1171\n  ypos 675\n }\n Transform {\n  translate {{store.scanRes*uv_offset.u*-1} {store.scanRes*uv_offset*-1}}\n  shutteroffset centred\n  name pos_shift\n  xpos -1171\n  ypos 740\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{uv_shift} {uv_shift}}\n }\n Crop {\n  box {0 0 {store.scanRes} {store.scanRes}}\n  reformat true\n  crop false\n  name Crop1\n  xpos -1171\n  ypos 801\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  ROI {0 0 {store.scanRes} {store.scanRes}}\n  intensitydata {0 0 0 0}\n  maxlumapixvalue {0 0 0}\n  minlumapixvalue {0 0 0}\n  name dataCheck\n  xpos -1171\n  ypos 881\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['output'].getValue() == 1 :\\n    thisGRP\\['udim_export'].setEnabled(True)\\nelse :\\n    thisGRP\\['udim_export'].setEnabled(False)\\n\"\n  xpos -1669\n  ypos 392\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"preview in uv space\" udim \"uv tile\" \"uv pass\"}}\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize*10}}\n  box_height {{texSize*10}}\n  box_fixed true\n  resize none\n  name Reformat4\n  xpos 719\n  ypos 638\n }\n Expression {\n  expr0 x/width\n  expr1 y/height\n  channel2 none\n  channel3 none\n  name uv\n  xpos 719\n  ypos 720\n }\n Multiply {\n  channels rgb\n  value {10 10 1 1}\n  name Multiply1\n  xpos 719\n  ypos 798\n }\n Reformat {\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{texSize}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat3\n  xpos 719\n  ypos 878\n }\n Dot {\n  name Dot8\n  xpos 753\n  ypos 1225\n }\npush $Na180ec00\n Dot {\n  name Dot4\n  xpos -780\n  ypos 384\n }\nset Na061a800 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{box_width}}\n  box_fixed true\n  name res\n  xpos 5\n  ypos 381\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  filter Impulse\n  projection_mode uv\n  overscan {{texSize*10 x1009 1948}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR\n  xpos -154\n  ypos 381\n }\n Dot {\n  name Dot2\n  xpos -120\n  ypos 628\n }\nset Nb741d400 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -292\n  ypos 625\n }\n Text {\n  output rgb\n  cliptype none\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 {\"( ( texSize * 10 ) / 1024 ) *25\"}}\n  scale {{\"( texSize * 10 ) / 1024\"}}\n  name Text2\n  selected true\n  xpos -292\n  ypos 707\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply3\n  xpos -292\n  ypos 769\n }\n Dot {\n  name Dot13\n  xpos -258\n  ypos 821\n }\n Dot {\n  name Dot11\n  xpos -178\n  ypos 821\n }\nset Nbcba2000 [stack 0]\n Dot {\n  name Dot12\n  xpos 221\n  ypos 821\n }\npush $Nb741d400\n Dot {\n  name Dot5\n  xpos 281\n  ypos 628\n }\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge4\n  xpos 247\n  ypos 879\n }\n Crop {\n  box {0 0 {texSize*10} {texSize*10}}\n  crop false\n  name Crop4\n  xpos 247\n  ypos 961\n }\n Dot {\n  name Dot7\n  xpos 281\n  ypos 1204\n }\npush $Nbcba2000\npush $Nb741d400\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -154\n  ypos 879\n }\n Transform {\n  translate {{texSize*uv_offset.u*-1 i} {texSize*uv_offset*-1 i}}\n  shutteroffset centred\n  name pos_shift1\n  xpos -154\n  ypos 961\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{\"frame <=1001 ? 0 : (frame-1)%10\"} {\"frame < 1000 ? 0 : int(((frame-1)/10)-100)\"}}\n }\n Dot {\n  name Dot3\n  xpos -120\n  ypos 1202\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat2\n  xpos -693\n  ypos 712\n }\n Dot {\n  name Dot9\n  xpos -659\n  ypos 770\n }\nset Nbcb68c00 [stack 0]\n Dot {\n  name Dot10\n  xpos -533\n  ypos 770\n }\n Text {\n  output rgb\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 25}\n  name Text1\n  xpos -567\n  ypos 818\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply2\n  xpos -567\n  ypos 887\n }\npush $Nbcb68c00\n Grid {\n  name Grid1\n  xpos -693\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -693\n  ypos 887\n }\npush $Na061a800\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat5\n  xpos -689\n  ypos 531\n }\n Reformat {\n  type scale\n  scale 0.1\n  resize none\n  name Reformat6\n  xpos -689\n  ypos 594\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan 2560\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR2\n  xpos -814\n  ypos 594\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -814\n  ypos 887\n }\n Crop {\n  box {0 0 1024 1024}\n  reformat true\n  crop false\n  name Crop2\n  xpos -814\n  ypos 969\n }\n Switch {\n  inputs 4\n  which {{output}}\n  name Switch1\n  xpos -814\n  ypos 1412\n }\n Output {\n  name Output1\n  xpos -814\n  ypos 1597\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['view_wireframe'].getValue() == 1 :\\n        thisGRP\\['wireframe_size'].setEnabled(True)\\nelse :\\n        thisGRP\\['wireframe_size'].setEnabled(False)\\n\"\n  xpos -1668\n  ypos 484\n  addUserKnob {20 User}\n  addUserKnob {6 view_wireframe l \"view wireframe\" +STARTLINE}\n  view_wireframe true\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1419\n  ypos 388\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\" +STARTLINE}\n  addUserKnob {3 scanRes}\n  scanRes 64\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_UV_Map.gizmo",
    "content": "Group {\n name UV_Map\n help \"Create an uvmap from the input format or the selected format that can be used for example for baking transformations and applying them through a STmap node.\\nUse the overscan to create values outside of the viewing window and the 0-1 range.\"\n tile_color 0x578100ff\n note_font \"Bitstream Vera Sans\"\n note_font_color 0xffffffff\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 tab l \"UV Map\"}\n addUserKnob {41 format T Constant1.format}\n addUserKnob {41 scale l overscan T Reformat1.scale}\n addUserKnob {6 alpha l \"alpha 1\" +STARTLINE}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T Reformat2.black_outside}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 620\n  ypos -370\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos 620\n  ypos -309\n }\n Constant {\n  inputs 0\n  name Constant1\n  xpos 479\n  ypos -214\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name Switch1\n  xpos 620\n  ypos -190\n }\n Reformat {\n  type scale\n  resize none\n  pbb true\n  name Reformat1\n  xpos 620\n  ypos -71\n }\n Reformat {\n  type scale\n  scale {{1/Reformat1.scale} {1/Reformat1.scale}}\n  resize none\n  black_outside true\n  pbb true\n  name Reformat2\n  xpos 620\n  ypos -45\n }\n Shuffle {\n  alpha white\n  name Shuffle13\n  tile_color 0xffffff00\n  label \"\\[value in]\"\n  xpos 620\n  ypos 12\n  disable {{!parent.alpha}}\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+0.5)/height\n  name Expression2\n  xpos 620\n  ypos 75\n }\n Output {\n  name Output1\n  xpos 620\n  ypos 127\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_UV_Mapper.gizmo",
    "content": "Group {\n name UV_Mapper\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'enable':\\n    if n.knob('enable').getValue() == 0:\\n        n.knob('UDIMinput').setEnabled(False)\\n        n.knob('selectUV').setEnabled(True)\\n\\n    else:\\n        n.knob('UDIMinput').setEnabled(True)\\n        n.knob('selectUV').setEnabled(False)\\n\\nif k.name() == 'UDIMinput': \\n    UDIMinput = n.knob('UDIMinput')\\n    selectUV = n.knob('selectUV')\\n    \\n    UDIMnum = int(UDIMinput.getValue())\\n\\n    \\n    u = ((UDIMnum - 1000) % 10) - 1\\n    v = (UDIMnum - 1000) // 10\\n    \\n    selectUV.setValue(u, 0)\\n    selectUV.setValue(v, 1)\\n\\n    \\n    \"\n tile_color 0x7f7f26ff\n label \"UDIM: (\\[value UDIMnumber])\"\n note_font \"DejaVu Sans\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 UV_Mapper}\n addUserKnob {26 UVs l \"<font color=skyblue><b>UVs</b></font color=skyblue>\" T \" \"}\n addUserKnob {6 previewUVs l \"preview selected UVs\" -STARTLINE}\n addUserKnob {41 operation l \"Img Channels\" T STMap1.channels}\n addUserKnob {41 UVchannels l \"UV Channel\" T Shuffle1.in}\n addUserKnob {3 UDIMinput l \"UDIM number\" +DISABLED}\n UDIMinput 1001\n addUserKnob {6 enable -STARTLINE}\n addUserKnob {18 selectUV l \"Select UV\"}\n selectUV {0 0 0}\n addUserKnob {6 selectUV_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {30 uvCoord +INVISIBLE}\n uvCoord {{Grade1.add.r} {Grade1.add.g}}\n addUserKnob {3 UDIMnumber l \"UDIM number\" +DISABLED +INVISIBLE}\n UDIMnumber {{\"1000 + (10*uvCoord.v) + (1+ uvCoord.u)\"}}\n addUserKnob {6 killOutline l \"Kill Outline\" +STARTLINE}\n killOutline true\n addUserKnob {6 edgeExtendCheck l \"Edge Extend\" -STARTLINE}\n addUserKnob {20 EdgeExtendOptions l \"Edge Extend Options\" n 1}\n EdgeExtendOptions 0\n addUserKnob {7 erodeSize l \"Erode Size\" R 0 10}\n erodeSize 1\n addUserKnob {41 expandsize l \"Expand Size\" T Expand.size}\n addUserKnob {41 mode T Expand.mode}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 STmap l \"<font color=skyblue><b>STmap</b></font color=skyblue>\" T \" \"}\n addUserKnob {41 filter T STMap1.filter}\n addUserKnob {6 takeAlphaUVs l \"Take Alpha From UVs\" +STARTLINE}\n addUserKnob {6 previewInverseSTMap l \"Preview Inverse STMap\" +STARTLINE}\n addUserKnob {6 imgIsRenderBeauty l \"img is Beauty render\" -STARTLINE}\n addUserKnob {20 SettingsInverseSTMAP l \"Inverse STMap settings\" n 1}\n SettingsInverseSTMAP 0\n addUserKnob {41 box_width l \"UV size\" T STMapInverse1.box_width}\n addUserKnob {41 fill_gap l \"Fill Gap\" T STMapInverse1.fill_gap}\n addUserKnob {41 size T STMapInverse1.size}\n addUserKnob {41 detail l \"point detail\" T STMapInverse1.detail}\n addUserKnob {41 pointSize l \"point size\" T STMapInverse1.pointSize}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 info}\n addUserKnob {26 Creator l Creator: T \"<big><b> Tony Lyons\"}\n addUserKnob {26 desc l Name: T UV_Mapper}\n addUserKnob {26 ver l \"Version: \" T v02}\n}\n Input {\n  inputs 0\n  name InputUVs\n  xpos -457\n  ypos 137\n }\n Shuffle {\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos -457\n  ypos 203\n }\n Grade {\n  multiply {1 1 0 1}\n  add {{floor(parent.selectUV.r)} {floor(parent.selectUV.g)} 0 0}\n  reverse true\n  black_clamp false\n  name Grade1\n  xpos -457\n  ypos 268\n }\n Expression {\n  expr0 \"r<0 || r>1 || g<0 || g>1? 0:r\"\n  expr1 \"r<0 || r>1 || g<0 || g>1? 0:g\"\n  expr3 \"r<=0 || r>1 || g<=0 || g>1? 0:1\"\n  name Expression4\n  xpos -457\n  ypos 320\n }\nset N107876b0 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -299\n  ypos 324\n }\n Group {\n  name BinaryAlpha\n  tile_color 0x2a2a2aff\n  label \"(\\[value an] --> \\[value output1])\"\n  note_font Verdana\n  note_font_color 0xfffff9ff\n  xpos -333\n  ypos 364\n  addUserKnob {20 BinaryAlpha}\n  addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n  addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n  output1 alpha\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n  addUserKnob {26 ver l Version: T v03}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -398\n   ypos 275\n  }\n  Expression {\n   temp_name0 rgb_an\n   temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n   temp_name1 rgba_an\n   temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n   temp_name2 alpha_an\n   temp_expr2 a!=0?1:0\n   expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n   name Expression\n   xpos -398\n   ypos 341\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle\n   label \"\\[value in]\"\n   xpos -398\n   ypos 367\n   disable {{parent.output1}}\n  }\n  Output {\n   name Output1\n   xpos -398\n   ypos 456\n  }\n end_group\nset N1078c560 [stack 0]\n Dilate {\n  channels alpha\n  size {{-parent.Dilate2.size}}\n  name Dilate1\n  xpos -208\n  ypos 367\n }\n Dilate {\n  channels alpha\n  size 1\n  name Dilate2\n  xpos -208\n  ypos 405\n }\npush $N1078c560\n Switch {\n  inputs 2\n  which {{parent.killOutline}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -333\n  ypos 405\n }\n Dilate {\n  channels rgba\n  size {{-erodeSize}}\n  name Dilate3\n  xpos -333\n  ypos 460\n  disable {{!parent.edgeExtendCheck}}\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -299\n  ypos 514\n }\npush $N107876b0\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -457\n  ypos 510\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -423\n  ypos 584\n }\nset N107ad920 [stack 0]\n Group {\n  name Expand\n  xpos -334\n  ypos 581\n  addUserKnob {20 User}\n  addUserKnob {41 size t \"Size of Blur\" T Blur1.size}\n  addUserKnob {7 transparencyBlend t \"Amount of original transparency retained when blending with the blurred version\"}\n  transparencyBlend 0.33\n  addUserKnob {4 mode t \"the mode how the blured version is combined with the original\\n - : original\\nMin: min blurred and original\\nMax: max blurred and original\\n(Min and Max may help with artifacts on the edges, best used on Z-Depth)\" M {\" - \" Min Max \"\" \"\"}}\n  mode Min\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n   ypos -57\n  }\nset N10800070 [stack 0]\npush $N10800070\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle1\n   xpos 0\n   ypos -11\n  }\n  Histogram {\n   in {0 1 {transparencyBlend i}}\n   name Histogram1\n   xpos 0\n   ypos 47\n  }\npush $N10800070\n  Blur {\n   channels rgba\n   size 4\n   name Blur1\n   xpos -176\n   ypos 59\n  }\n  Unpremult {\n   name Unpremult1\n   xpos -176\n   ypos 109\n  }\nset N109e3300 [stack 0]\n  Dot {\n   name Dot1\n   xpos 294\n   ypos 114\n  }\nset N107f0450 [stack 0]\npush $N10800070\n  Unpremult {\n   name Unpremult2\n   xpos 140\n   ypos -11\n  }\nset N10a17500 [stack 0]\n  Dot {\n   name Dot2\n   xpos 414\n   ypos 54\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   name Max\n   xpos 338\n   ypos 139\n  }\npush $N107f0450\npush $N10a17500\n  Merge2 {\n   inputs 2\n   operation min\n   name Min\n   xpos 200\n   ypos 139\n  }\npush $N10a17500\n  Switch {\n   inputs 3\n   which {{parent.mode i}}\n   name Switch1\n   xpos 125\n   ypos 199\n  }\npush $N109e3300\n  Keymix {\n   inputs 3\n   channels rgb\n   maskChannel rgba.red\n   name Keymix1\n   xpos 0\n   ypos 229\n  }\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.alpha\n   name Copy1\n   xpos 70\n   ypos 312\n  }\n  Output {\n   name Output1\n   xpos 70\n   ypos 380\n  }\n end_group\n Group {\n  name BinaryAlpha1\n  tile_color 0x2a2a2aff\n  label \"(\\[value an] --> \\[value output1])\"\n  note_font Verdana\n  note_font_color 0xfffff9ff\n  xpos -334\n  ypos 620\n  addUserKnob {20 BinaryAlpha}\n  addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n  addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n  output1 alpha\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n  addUserKnob {26 ver l Version: T v03}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -398\n   ypos 275\n  }\n  Expression {\n   temp_name0 rgb_an\n   temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n   temp_name1 rgba_an\n   temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n   temp_name2 alpha_an\n   temp_expr2 a!=0?1:0\n   expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n   name Expression\n   xpos -398\n   ypos 341\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle\n   label \"\\[value in]\"\n   xpos -398\n   ypos 367\n   disable {{parent.output1}}\n  }\n  Output {\n   name Output1\n   xpos -398\n   ypos 456\n  }\n end_group\npush $N107ad920\n Switch {\n  inputs 2\n  which {{edgeExtendCheck}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -457\n  ypos 620\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -423\n  ypos 764\n }\nset N10cc3680 [stack 0]\npush $N10cc3680\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 132\n  ypos 764\n }\nset N10cc86b0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 132\n  ypos 819\n }\nset N10ccd5a0 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 132\n  ypos 863\n }\npush $N10ccd5a0\npush $N10cc86b0\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  resize none\n  center false\n  pbb true\n  name Reformat4\n  xpos -39\n  ypos -787\n }\nset N10cd7440 [stack 0]\n Grid {\n  number 8\n  size 2\n  name Grid1\n  xpos -155\n  ypos -713\n }\n Grid {\n  opacity 0.5\n  number 64\n  name Grid2\n  xpos -155\n  ypos -670\n }\n Text2 {\n  font_size_toolbar 100\n  font_width_toolbar 100\n  font_height_toolbar 100\n  kerning_toolbar -0.04899999872\n  tracking_toolbar -0.007000000216\n  message \" 1   2   3   4   5   6   7   8\\n 8   1   2   3   4   5   6   7\\n 7   8   1   2   3   4   5   6\\n 6   5   8   1   2   3   4   5\\n 5   6   7   8   1   2   3   4\\n 4   5   6   7   8   1   2   3\\n 3   4   5   6   7   8   1   2\\n 2   3   4   5   6   7   8   1\"\n  old_message {{32 49 32 32 32 50 32 32 32 51 32 32 32 52 32 32 32 53 32 32 32 54 32 32 32 55 32 32 32 56 10 32 56 32 32 32 49 32 32 32 50 32 32 32 51 32 32 32 52 32 32 32 53 32 32 32 54 32 32 32 55 10 32 55 32 32 32 56 32 32 32 49 32 32 32 50 32 32 32 51 32 32 32 52 32 32 32 53 32 32 32 54 10 32 54 32 32 32 53 32 32 32 56 32 32 32 49 32 32 32 50 32 32 32 51 32 32 32 52 32 32 32 53 10 32 53 32 32 32 54 32 32 32 55 32 32 32 56 32 32 32 49 32 32 32 50 32 32 32 51 32 32 32 52 10 32 52 32 32 32 53 32 32 32 54 32 32 32 55 32 32 32 56 32 32 32 49 32 32 32 50 32 32 32 51 10 32 51 32 32 32 52 32 32 32 53 32 32 32 54 32 32 32 55 32 32 32 56 32 32 32 49 32 32 32 50 10 32 50 32 32 32 51 32 32 32 52 32 32 32 53 32 32 32 54 32 32 32 55 32 32 32 56 32 32 32 49}\n    }\n  box {7 0 1024 1007}\n  transforms {{0 2}\n    }\n  font_width_values {{0 100 1 100 2 100 3 100 4 100 5 100 6 100 7 100 8 100 9 100 10 100 11 100 12 100 13 100 14 100 15 100 16 100 17 100 18 100 19 100 20 100 21 100 22 100 23 100 24 100 25 100 26 100 27 100 28 100 29 100 30 100 31 100 33 100 34 100 35 100 37 100 38 100 39 100 41 100 42 100 43 100 45 100 46 100 47 100 49 100 50 100 51 100 53 100 54 100 55 100 57 100 58 100 59 100 0 96 1 96 2 96 3 96 4 96 5 96 6 96 7 96 8 96 9 96 10 96 11 96 12 96 13 96 14 96 15 96 16 96 17 96 18 96 19 96 20 96 21 96 22 96 23 96 24 96 25 96 26 96 27 96 28 96 29 96}\n    }\n  font_height_values {{0 100 1 100 2 100 3 100 4 100 5 100 6 100 7 100 8 100 9 100 10 100 11 100 12 100 13 100 14 100 15 100 16 100 17 100 18 100 19 100 20 100 21 100 22 100 23 100 24 100 25 100 26 100 27 100 28 100 29 100 30 100 31 100 33 100 34 100 35 100 37 100 38 100 39 100 41 100 42 100 43 100 45 100 46 100 47 100 49 100 50 100 51 100 53 100 54 100 55 100 57 100 58 100 59 100 0 100 1 100 2 100 3 100 4 100 5 100 6 100 7 100 8 100 9 100 10 100 11 100 12 100 13 100 14 100 15 100 16 100 17 100 18 100 19 100 20 100 21 100 22 100 23 100 24 100 25 100 26 100 27 100 28 100 29 100 30 100 31 100 33 100 34 100 35 100 37 100 38 100 39 100 41 100 42 100 43 100 45 100 46 100 47 100 49 100 50 100 51 100 53 100 54 100 55 100 57 100 58 100 59 100}\n    }\n  kern_values {{0 -0.049 1 -0.049 2 -0.049 3 -0.049 4 -0.049 5 -0.049 6 -0.049 7 -0.049 8 -0.049 9 -0.049 10 -0.049 11 -0.049 12 -0.049 13 -0.049 14 -0.049 15 -0.049 16 -0.049 17 -0.049 18 -0.049 19 -0.049 20 -0.049 21 -0.049 22 -0.049 23 -0.049 24 -0.049 25 -0.049 26 -0.049 27 -0.049 28 -0.049 29 -0.049 30 -0.049 31 -0.049 32 -0.04899999872 33 -0.049 34 -0.049 35 -0.049 36 -0.04899999872 37 -0.049 38 -0.049 39 -0.049 40 -0.04899999872 41 -0.049 42 -0.049 43 -0.049 44 -0.04899999872 45 -0.049 46 -0.049 47 -0.049 48 -0.04899999872 49 -0.049 50 -0.049 51 -0.049 52 -0.04899999872 53 -0.049 54 -0.049 55 -0.049 56 -0.04899999872 57 -0.049 58 -0.049 59 -0.049 60 -0.04899999872 61 -0.04899999872 62 -0.04899999872 63 -0.04899999872 64 -0.04899999872 65 -0.04899999872 66 -0.04899999872 67 -0.04899999872 68 -0.04899999872 69 -0.04899999872 70 -0.04899999872 71 -0.04899999872 72 -0.04899999872 73 -0.04899999872 74 -0.04899999872 75 -0.04899999872 76 -0.04899999872 77 -0.04899999872 78 -0.04899999872 79 -0.04899999872 80 -0.04899999872 81 -0.04899999872 82 -0.04899999872 83 -0.04899999872 84 -0.04899999872 85 -0.04899999872 86 -0.04899999872 87 -0.04899999872 88 -0.04899999872 89 -0.04899999872 90 -0.04899999872 91 -0.04899999872 92 -0.04899999872 93 -0.04899999872 94 -0.04899999872 95 -0.04899999872 96 -0.04899999872 97 -0.04899999872 98 -0.04899999872 99 -0.04899999872 100 -0.04899999872 101 -0.04899999872 102 -0.04899999872 103 -0.04899999872 104 -0.04899999872 105 -0.04899999872 106 -0.04899999872 107 -0.04899999872 108 -0.04899999872 109 -0.04899999872 110 -0.04899999872 111 -0.04899999872 112 -0.04899999872 113 -0.04899999872 114 -0.04899999872 115 -0.04899999872 116 -0.04899999872 117 -0.04899999872 118 -0.04899999872 119 -0.04899999872 120 -0.04899999872 121 -0.04899999872 122 -0.04899999872 123 -0.04899999872 124 -0.04899999872 125 -0.04899999872 126 -0.04899999872 127 -0.04899999872 128 -0.04899999872 129 -0.04899999872 130 -0.04899999872 131 -0.04899999872 132 -0.04899999872 133 -0.04899999872 134 -0.04899999872 135 -0.04899999872 136 -0.04899999872 137 -0.04899999872 138 -0.04899999872 139 -0.04899999872 140 -0.04899999872 141 -0.04899999872 142 -0.04899999872 143 -0.04899999872 144 -0.04899999872 145 -0.04899999872 146 -0.04899999872 147 -0.04899999872 148 -0.04899999872 149 -0.04899999872 150 -0.04899999872 151 -0.04899999872 152 -0.04899999872 153 -0.04899999872 154 -0.04899999872 155 -0.04899999872 156 -0.04899999872 157 -0.04899999872 158 -0.04899999872 159 -0.04899999872 160 -0.04899999872 161 -0.04899999872 162 -0.04899999872 163 -0.04899999872 164 -0.04899999872 165 -0.04899999872 166 -0.04899999872 167 -0.04899999872 168 -0.04899999872 169 -0.04899999872 170 -0.04899999872 171 -0.04899999872 172 -0.04899999872 173 -0.04899999872 174 -0.04899999872 175 -0.04899999872 176 -0.04899999872 177 -0.04899999872 178 -0.04899999872 179 -0.04899999872 180 -0.04899999872 181 -0.04899999872 182 -0.04899999872 183 -0.04899999872 184 -0.04899999872 185 -0.04899999872 186 -0.04899999872 187 -0.04899999872 188 -0.04899999872 189 -0.04899999872 190 -0.04899999872 191 -0.04899999872 192 -0.04899999872 193 -0.04899999872 194 -0.04899999872 195 -0.04899999872 196 -0.04899999872 197 -0.04899999872 198 -0.04899999872 199 -0.04899999872 200 -0.04899999872 201 -0.04899999872 202 -0.04899999872 203 -0.04899999872 204 -0.04899999872 205 -0.04899999872 206 -0.04899999872 207 -0.04899999872 208 -0.04899999872 209 -0.04899999872 210 -0.04899999872 211 -0.04899999872 212 -0.04899999872 213 -0.04899999872 214 -0.04899999872 215 -0.04899999872 216 -0.04899999872 217 -0.04899999872 218 -0.04899999872 219 -0.04899999872 220 -0.04899999872 221 -0.04899999872 222 -0.04899999872 223 -0.04899999872 224 -0.04899999872 225 -0.04899999872 226 -0.04899999872 227 -0.04899999872 228 -0.04899999872 229 -0.04899999872 230 -0.04899999872 231 -0.04899999872 232 -0.04899999872 233 -0.04899999872 234 -0.04899999872 235 -0.04899999872 236 -0.04899999872 237 -0.04899999872 238 -0.04899999872 239 -0.04899999872 240 -0.04899999872 241 -0.04899999872 242 -0.04899999872 243 -0.04899999872 244 -0.04899999872 245 -0.04899999872 246 -0.04899999872 0 0.012 1 0.012 2 0.012 3 0.012 4 0.012 5 0.012 6 0.012 7 0.012 8 0.012 9 0.012 10 0.012 11 0.012 12 0.012 13 0.012 14 0.012 15 0.012 16 0.012 17 0.012 18 0.012 19 0.012 20 0.012 21 0.012 22 0.012 23 0.012 24 0.012 25 0.012 26 0.012 27 0.012 28 0.012 29 0.012 30 0.012 31 0.012 33 0.012 34 0.012 35 0.012 37 0.012 38 0.012 39 0.012 41 0.012 42 0.012 43 0.012 45 0.012 46 0.012 47 0.012 49 0.012 50 0.012 51 0.012 53 0.012 54 0.012 55 0.012 57 0.012 58 0.012 59 0.012}\n    }\n  tracking_values {{1 -0.007 2 -0.007 3 -0.007 4 -0.007 5 -0.007 6 -0.007 7 -0.007 8 -0.007 9 -0.007 10 -0.007 11 -0.007 12 -0.007 13 -0.007 14 -0.007 15 -0.007 16 -0.007 17 -0.007 18 -0.007 19 -0.007 20 -0.007 21 -0.007 22 -0.007 23 -0.007 24 -0.007 25 -0.007 26 -0.007 27 -0.007 28 -0.007 29 -0.007 30 -0.007 31 -0.007 32 -0.007 33 -0.007 34 -0.007 35 -0.007 36 -0.007 37 -0.007 38 -0.007 39 -0.007 40 -0.007 41 -0.007 42 -0.007 43 -0.007 44 -0.007 45 -0.007 46 -0.007 47 -0.007 48 -0.007 49 -0.007 50 -0.007 51 -0.007 52 -0.007 53 -0.007 54 -0.007 55 -0.007 56 -0.007 57 -0.007 58 -0.007 59 -0.007 60 -0.007 61 -0.007 62 -0.007 63 -0.007 64 -0.007 65 -0.007 66 -0.007 67 -0.007 68 -0.007 69 -0.007 70 -0.007 71 -0.007 72 -0.007 73 -0.007 74 -0.007 75 -0.007 76 -0.007 77 -0.007 78 -0.007 79 -0.007 80 -0.007 81 -0.007 82 -0.007 83 -0.007 84 -0.007 85 -0.007 86 -0.007 87 -0.007 88 -0.007 89 -0.007 90 -0.007 91 -0.007 92 -0.007 93 -0.007 94 -0.007 95 -0.007 96 -0.007 97 -0.007 98 -0.007 99 -0.007 100 -0.007 101 -0.007 102 -0.007 103 -0.007 104 -0.007 105 -0.007 106 -0.007 107 -0.007 108 -0.007 109 -0.007 110 -0.007 111 -0.007 112 -0.007 113 -0.007 114 -0.007 115 -0.007 116 -0.007 117 -0.007 118 -0.007 119 -0.007 120 -0.007 121 -0.007 122 -0.007 123 -0.007 124 -0.007 125 -0.007 126 -0.007 127 -0.007 128 -0.007 129 -0.007 130 -0.007 131 -0.007 132 -0.007 133 -0.007 134 -0.007 135 -0.007 136 -0.007 137 -0.007 138 -0.007 139 -0.007 140 -0.007 141 -0.007 142 -0.007 143 -0.007 144 -0.007 145 -0.007 146 -0.007 147 -0.007 148 -0.007 149 -0.007 150 -0.007 151 -0.007 152 -0.007 153 -0.007 154 -0.007 155 -0.007 156 -0.007 157 -0.007 158 -0.007 159 -0.007 160 -0.007 161 -0.007 162 -0.007 163 -0.007 164 -0.007 165 -0.007 166 -0.007 167 -0.007 168 -0.007 169 -0.007 170 -0.007 171 -0.007 172 -0.007 173 -0.007 174 -0.007 175 -0.007 176 -0.007 177 -0.007 178 -0.007 179 -0.007 180 -0.007 181 -0.007 182 -0.007 183 -0.007 184 -0.007 185 -0.007 186 -0.007 187 -0.007 188 -0.007 189 -0.007 190 -0.007 191 -0.007 192 -0.007 193 -0.007 194 -0.007 195 -0.007 196 -0.007 197 -0.007 198 -0.007 199 -0.007 200 -0.007 201 -0.007 202 -0.007 203 -0.007 204 -0.007 205 -0.007 206 -0.007 207 -0.007 208 -0.007 209 -0.007 210 -0.007 211 -0.007 212 -0.007 213 -0.007 214 -0.007 215 -0.007 216 -0.007 217 -0.007 218 -0.007 219 -0.007 220 -0.007 221 -0.007 222 -0.007 223 -0.007 224 -0.007 225 -0.007 226 -0.007 227 -0.007 228 -0.007 229 -0.007 230 -0.007 231 -0.007 232 -0.007 233 -0.007 234 -0.007 235 -0.007 236 -0.007 237 -0.007 238 -0.007 239 -0.007 240 -0.007 241 -0.007 242 -0.007 243 -0.007 244 -0.007 245 -0.007 246 -0.007}\n    }\n  baseline_values {{0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 26 0 27 0 28 0 29 0 30 0 31 0 32 0 33 0 34 0 35 0 36 0 37 0 38 0 39 0 40 0 41 0 42 0 43 0 44 0 45 0 46 0 47 0 48 0 49 0 50 0 51 0 52 0 53 0 54 0 55 0 56 0 57 0 58 0 59 0 60 0 61 0 62 0 63 0 64 0 65 0 66 0 67 0 68 0 69 0 70 0 71 0 72 0 73 0 74 0 75 0 76 0 77 0 78 0 79 0 80 0 81 0 82 0 83 0 84 0 85 0 86 0 87 0 88 0 89 0 90 0 91 0 92 0 93 0 94 0 95 0 96 0 97 0 98 0 99 0 100 0 101 0 102 0 103 0 104 0 105 0 106 0 107 0 108 0 109 0 110 0 111 0 112 0 113 0 114 0 115 0 116 0 117 0 118 0 119 0 120 0 121 0 122 0 123 0 124 0 125 0 126 0 127 0 128 0 129 0 130 0 131 0 132 0 133 0 134 0 135 0 136 0 137 0 138 0 139 0 140 0 141 0 142 0 143 0 144 0 145 0 146 0 147 0 148 0 149 0 150 0 151 0 152 0 153 0 154 0 155 0 156 0 157 0 158 0 159 0 160 0 161 0 162 0 163 0 164 0 165 0 166 0 167 0 168 0 169 0 170 0 171 0 172 0 173 0 174 0 175 0 176 0 177 0 178 0 179 0 180 0 181 0 182 0 183 0 184 0 185 0 186 0 187 0 188 0 189 0 190 0 191 0 192 0 193 0 194 0 195 0 196 0 197 0 198 0 199 0 200 0 201 0 202 0 203 0 204 0 205 0 206 0 207 0 208 0 209 0 210 0 211 0 212 0 213 0 214 0 215 0 216 0 217 0 218 0 219 0 220 0 221 0 222 0 223 0 224 0 225 0 226 0 227 0 228 0 229 0 230 0 231 0 232 0 233 0 234 0 235 0 236 0 237 0 238 0 239 0 240 0 241 0 242 0 243 0 244 0 245 0 246 0 0 1.7 1 1.7 2 1.7 3 1.7 4 1.7 5 1.7 6 1.7 7 1.7 8 1.7 9 1.7 10 1.7 11 1.7 12 1.7 13 1.7 14 1.7 15 1.7 16 1.7 17 1.7 18 1.7 19 1.7 20 1.7 21 1.7 22 1.7 23 1.7 24 1.7 25 1.7 26 1.7 27 1.7 28 1.7 29 1.7 30 1.7 31 1.7 33 1.7 34 1.7 35 1.7 37 1.7 38 1.7 39 1.7 41 1.7 42 1.7 43 1.7 45 1.7 46 1.7 47 1.7 49 1.7 50 1.7 51 1.7 53 1.7 54 1.7 55 1.7 57 1.7 58 1.7 59 1.7}\n    }\n  cursor_position 61\n  kerning -0.04899999872\n  tracking -0.007000000216\n  leading 0.28\n  center {960 540}\n  cursor_initialised true\n  autofit_bbox false\n  initial_cursor_position {{496.7999878 690.000061}\n    }\n  group_animations {{0} imported: 0 selected: items: \"root transform/\"}\n  animation_layers {{1 11 960 540 0 0 1 1 0 0 0 0}\n    }\n  name Text1\n  selected true\n  xpos -155\n  ypos 39\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -121\n  ypos 127\n }\npush $N10cd7440\n Roto {\n  output alpha\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44700000 x44070000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup RectangleCusped8 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x447fbd8a x3f519c2c}\n        {0 0}\n        {0 0}\n        {x445fd6d3 x3f02d730}\n        {0 0}\n        {0 0}\n        {x445fd8e5 x43008e71}\n        {0 0}\n        {0 0}\n        {x447fc3c2 x4300830a}\n        {0 0}}}     idem}\n     {tx 1 x43efcccc x42020000}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped7 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x445fdb6b x43007ee2}\n        {0 0}\n        {0 0}\n        {x443fe368 x43012090}\n        {0 0}\n        {0 0}\n        {x443fe630 x4380422d}\n        {0 0}\n        {0 0}\n        {x445fb9bc x438052df}\n        {0 0}}}     idem}\n     {tx 1 x43cf8ccd x42c1ffff}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped6 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x443fe81f x438038b8}\n        {0 0}\n        {0 0}\n        {x44200149 x4380545b}\n        {0 0}\n        {0 0}\n        {x44200949 x43c02d5c}\n        {0 0}\n        {0 0}\n        {x443fef7b x43c00073}\n        {0 0}}}     idem}\n     {tx 1 x43af9334 x4320f333}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped5 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x441fed7f x43bff524}\n        {0 0}\n        {0 0}\n        {x43fff86f x43c01d90}\n        {0 0}\n        {0 0}\n        {x4400106d x43ffd7fc}\n        {0 0}\n        {0 0}\n        {x441fe6c2 x43ffd7fc}\n        {0 0}}}     idem}\n     {tx 1 x438f999a x4360cccd}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped4 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x43fffdc2 x44000265}\n        {0 0}\n        {0 0}\n        {x43c01e01 x44000265}\n        {0 0}\n        {0 0}\n        {x43c019f1 x441ff0f9}\n        {0 0}\n        {0 0}\n        {x43ffe698 x441fe76a}\n        {0 0}}}     idem}\n     {tx 1 x435f199a x43906000}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped3 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x43c0478c x44200d48}\n        {0 0}\n        {0 0}\n        {x438034b2 x44200d48}\n        {0 0}\n        {0 0}\n        {x438038cf x443fe853}\n        {0 0}\n        {0 0}\n        {x43c0677c x4440015e}\n        {0 0}}}     idem}\n     {tx 1 x431f199a x43b04000}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped2 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x4380377e x443fe6ee}\n        {0 0}\n        {0 0}\n        {x43007685 x443fdb75}\n        {0 0}\n        {0 0}\n        {x4300a521 x445fe8a2}\n        {0 0}\n        {0 0}\n        {x4380255a x445fdf8d}\n        {0 0}}}     idem}\n     {tx 1 x42be0000 x43d04ccd}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}\n    {curvegroup RectangleCusped1 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {0 0}\n        {x4300e014 x445ff174}\n        {0 0}\n        {0 0}\n        {x3cce8900 x445ff974}\n        {0 0}\n        {0 0}\n        {xbdb51ac0 x447ffe00}\n        {0 0}\n        {0 0}\n        {x4300a759 x447ffc8c}\n        {0 0}}}     idem}\n     {tx 1 x41fccccd x43f0199a}\n     {a osw x41200000 osf 0 str 1 spx x44700000 spy x44070000 sb 1 tt x41100000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 tt 9 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {320 240}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto1\n  xpos -39\n  ypos -712\n }\nset N10d62ff0 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform1\n  xpos -39\n  ypos -647\n }\nset N10dd2950 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform2\n  xpos -39\n  ypos -529\n }\nset N10e94e70 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform3\n  xpos -39\n  ypos -428\n }\nset N10ea33e0 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform4\n  xpos -39\n  ypos -332\n }\nset N10eb1960 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform5\n  xpos -39\n  ypos -234\n }\nset N10ebfed0 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform6\n  xpos -39\n  ypos -137\n }\nset N10ece440 [stack 0]\n Transform {\n  translate {-128 0}\n  center {960 540}\n  name Transform7\n  xpos -39\n  ypos -29\n }\nset N10edc9b0 [stack 0]\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform8\n  xpos 71\n  ypos -29\n }\npush $N10edc9b0\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 71\n  ypos 13\n }\npush $N10ece440\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform9\n  xpos 71\n  ypos -137\n }\npush $N10ece440\n Merge2 {\n  inputs 2\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 71\n  ypos -99\n }\npush $N10ebfed0\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform10\n  xpos 69\n  ypos -234\n }\npush $N10ebfed0\n Merge2 {\n  inputs 2\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 69\n  ypos -189\n }\npush $N10eb1960\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform11\n  xpos 71\n  ypos -332\n }\npush $N10eb1960\n Merge2 {\n  inputs 2\n  name Merge6\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 71\n  ypos -291\n }\npush $N10ea33e0\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform12\n  xpos 71\n  ypos -428\n }\npush $N10ea33e0\n Merge2 {\n  inputs 2\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 71\n  ypos -387\n }\npush $N10e94e70\n Transform {\n  translate {1024 0}\n  center {960 540}\n  name Transform13\n  xpos 71\n  ypos -529\n }\npush $N10e94e70\n Merge2 {\n  inputs 2\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 71\n  ypos -488\n }\npush $N10dd2950\n Transform {\n  translate {1025 0}\n  center {960 540}\n  name Transform14\n  xpos 82\n  ypos -647\n }\npush $N10dd2950\n Merge2 {\n  inputs 2\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 82\n  ypos -606\n }\npush $N10d62ff0\n Constant {\n  inputs 0\n  channels rgb\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Constant1\n  xpos 208\n  ypos -809\n }\n Grade {\n  inputs 1+1\n  add {0.7728846669 0.02618077211 0.03455101326 0}\n  name Grade3\n  xpos 208\n  ypos -708\n }\n Grade {\n  inputs 1+1\n  add {0.9673250318 0.3451221585 0.1646387577 0}\n  name Grade4\n  xpos 208\n  ypos -606\n }\n Grade {\n  inputs 1+1\n  add {0.2409069538 0.218536064 0.5103886724 0}\n  name Grade5\n  xpos 208\n  ypos -488\n }\n Grade {\n  inputs 1+1\n  add {0.9280357361 0.3130359054 0.5264387727 0}\n  name Grade6\n  xpos 208\n  ypos -387\n }\n Grade {\n  inputs 1+1\n  add {0.2122023106 0.0433825478 0.4666024148 0}\n  name Grade7\n  xpos 208\n  ypos -291\n }\n Grade {\n  inputs 1+1\n  add {0.001658143476 0.9821226597 0.9885434508 0}\n  name Grade8\n  xpos 208\n  ypos -189\n }\n Grade {\n  inputs 1+1\n  add {0.04277442023 0.4779824018 0.1838312 0}\n  name Grade9\n  xpos 208\n  ypos -99\n }\n Grade {\n  inputs 1+1\n  add {0.9810473323 0.9179739952 0.1378139406 0}\n  name Grade10\n  xpos 208\n  ypos 13\n }\n Grade {\n  inputs 1+1\n  multiply 0\n  name Grade11\n  xpos 208\n  ypos 124\n }\n Shuffle {\n  alpha white\n  name Shuffle2\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 208\n  ypos 148\n }\n Input {\n  inputs 0\n  name InputImg\n  xpos 413\n  ypos 496\n  number 1\n }\nset N11074630 [stack 0]\n Shuffle {\n  alpha white\n  name Shuffle3\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 495\n  ypos 565\n }\npush $N11074630\n Switch {\n  inputs 2\n  which {{previewInverseSTMap}}\n  name Switch5\n  xpos 363\n  ypos 579\n }\nset N1108a2c0 [stack 0]\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name SwitchDefault\n  xpos 208\n  ypos 579\n }\n STMap {\n  inputs 2\n  uv rgba\n  name STMap1\n  xpos 208\n  ypos 754\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 208\n  ypos 815\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 208\n  ypos 853\n  disable {{!parent.takeAlphaUVs}}\n }\nset N110b6c30 [stack 0]\npush $N1108a2c0\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 397\n  ypos 886\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 363\n  ypos 934\n }\npush $N110b6c30\n Switch {\n  inputs 2\n  which {{imgIsRenderBeauty}}\n  name Switch6\n  xpos 43\n  ypos 977\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.green\n  to1 forward.v\n  name Copy2\n  xpos -37\n  ypos 1042\n }\n Group {\n  name STMapInverse1\n  tile_color 0x196654ff\n  xpos -37\n  ypos 1174\n  addUserKnob {20 InverseSTMap}\n  addUserKnob {41 in l channels T Shuffle1.in}\n  addUserKnob {41 in2 l \"UV channels\" T Shuffle1.in2}\n  addUserKnob {41 box_width l \"UV size\" T Reformat1.box_width}\n  addUserKnob {6 fill_gap l \"Fill Gap\" +STARTLINE}\n  fill_gap true\n  addUserKnob {41 size -STARTLINE T Blur1.size}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 detail l \"point detail\" T PositionToPoints1.detail}\n  addUserKnob {41 pointSize l \"point size\" T PositionToPoints1.pointSize}\n  addUserKnob {26 \"\"}\n  addUserKnob {32 Lookin T \"start http://www.lookinvfx.com/tools/\" +STARTLINE}\n  addUserKnob {26 text l \"\" -STARTLINE T \"   in_inverseSTMap v1.0 | Luca Mignardi | 2014\"}\n }\n  Camera2 {\n   inputs 0\n   translate {0.5 0.5 1}\n   projection_mode orthographic\n   focal 25\n   haperture 25\n   vaperture 25\n   near 0.5\n   far 1.5\n   name Camera1\n   xpos 93\n   ypos 157\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -58\n   ypos -118\n  }\n  Shuffle {\n   in2 forward\n   red red2\n   green green2\n   black red\n   white green\n   red2 blue\n   green2 alpha\n   out forward\n   out2 rgba\n   name Shuffle1\n   xpos -58\n   ypos -64\n  }\n  Unpremult {\n   name Unpremult2\n   xpos -58\n   ypos -12\n  }\n  Unpremult {\n   channels forward\n   name Unpremult3\n   xpos -58\n   ypos 37\n  }\nset N111322a0 [stack 0]\npush $N111322a0\n  Shuffle {\n   in forward\n   blue black\n   alpha black\n   name Shuffle2\n   label \"\\[value in]\"\n   xpos 64\n   ypos 37\n  }\n  PositionToPoints {\n   inputs 2\n   render_mode textured\n   detail 1\n   pointSize 1.1\n   name PositionToPoints1\n   xpos -58\n   ypos 108\n  }\n  Reformat {\n   inputs 0\n   type \"to box\"\n   format \"1024 1024 0 0 1024 1024 1 square_1K\"\n   box_width 512\n   box_height {{box_width i}}\n   box_fixed true\n   name Reformat1\n   xpos -196\n   ypos 177\n  }\n  ScanlineRender {\n   inputs 3\n   max_tessellation 1\n   motion_vectors_type off\n   MB_channel none\n   name ScanlineRender1\n   xpos -58\n   ypos 177\n  }\n  Premult {\n   name Premult1\n   xpos -58\n   ypos 220\n  }\n  Dot {\n   name Dot1\n   xpos -24\n   ypos 276\n  }\nset N1118b5e0 [stack 0]\n  Blur {\n   size 1\n   name Blur1\n   xpos 49\n   ypos 266\n  }\n  Unpremult {\n   name Unpremult1\n   xpos 49\n   ypos 316\n  }\npush $N1118b5e0\n  Merge2 {\n   inputs 2\n   operation under\n   name Merge1\n   xpos -58\n   ypos 316\n   disable {{1-fill_gap}}\n  }\n  Output {\n   name Output1\n   xpos -58\n   ypos 375\n  }\n end_group\npush $N10cc3680\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -423\n  ypos 1103\n }\npush $N110b6c30\n Switch {\n  inputs 2\n  which {{parent.previewUVs}}\n  name Switch3\n  label \"\\[value which]\"\n  xpos 208\n  ypos 1096\n }\n Switch {\n  inputs 2\n  which {{previewInverseSTMap}}\n  name Switch4\n  xpos 208\n  ypos 1174\n }\n Output {\n  name Output1\n  xpos 208\n  ypos 1326\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Unify3DCoordinate.gizmo",
    "content": "Group {\n name Unify3DCoordinate\n tile_color 0xffbf00ff\n gl_color 0xffbf00ff\n addUserKnob {20 tab_general l general}\n addUserKnob {41 frame_range l \"frame range\" T menu01.frame_range}\n addUserKnob {3 firstFR l \"custom range\" +DISABLED}\n firstFR 1001\n addUserKnob {3 lastFR l \"\" -STARTLINE +DISABLED}\n lastFR 1100\n addUserKnob {41 selVertex l \"Calculate from selected vertex\" T menu02.selVertex}\n addUserKnob {4 vertexTrans l \"Tracking Type\" +DISABLED M {translate translate,rotate translate,rotate,scale \"\" \"\" \"\" \"\"}}\n addUserKnob {22 calculate l \"<b>\\[Calculate]</b>\" T \"import threading\\nimport math\\n\\nthisGRP = nuke.thisGroup()\\n\\nif thisGRP.input(0) == None :\\n\\n\\tnuke.message('No upstream connected')\\n\\nelse :\\n\\n\\tstNode = thisGRP.input(0)\\n\\n\\tFRsetting = thisGRP\\['frame_range'].getValue()\\n\\n\\tif FRsetting == 0 :\\n\\t\\tframeST = nuke.root().firstFrame()\\n\\t\\tframeED = nuke.root().lastFrame()\\n\\n\\tif FRsetting == 1 :\\n\\t\\tframeST = int(nuke.frame())\\n\\t\\tframeED = int(nuke.frame())\\n\\n\\tif FRsetting == 2 :\\n\\t\\tframeST = int(thisGRP\\['firstFR'].getValue())\\n\\t\\tframeED = int(thisGRP\\['lastFR'].getValue())\\n\\n\\tthisGRP\\['reset'].execute()\\n\\n\\tgoSTORE = nuke.toNode('store')\\n\\tgoSTORE\\['generalFN'].execute()\\n\\n\\tfilterCheck = thisGRP\\['filterNonReverse'].getValue().split(',')\\n\\tfilter3DNodes = thisGRP\\['filter3DNodes'].getValue().split(',')\\n\\n\\tvertexOption = thisGRP\\['selVertex'].getValue()\\n\\tvertexType = thisGRP\\['vertexTrans'].getValue()\\n\\n\\tnodesMap = upstreamNodes(stNode)\\n\\n\\tif vertexOption == 1 :\\n\\t\\tselectedID = vertexPack()\\n\\t\\tif len(selectedID) < 1 :\\n\\t\\t\\tnuke.message('No vertex selected. Cannot process vertex tracking.')\\n\\t\\telse :\\n\\t\\t\\tif vertexType == 0 :\\n\\t\\t\\t\\tvertexSnap(thisGRP, selectedID)\\n\\n\\t\\t\\tif vertexType == 1 :\\n\\t\\t\\t\\tif len(selectedID) == 3 :\\n\\t\\t\\t\\t\\tvertexSnap(thisGRP, selectedID)\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tnuke.message('Rotation tracking only support exact 3 vertex.')\\n\\n\\t\\t\\tif vertexType == 2 :\\n\\t\\t\\t\\tif len(selectedID) == 3 :\\n\\t\\t\\t\\t\\tvertexSnap(thisGRP, selectedID)\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tnuke.message('Rotation and Scale tracking only support exact 3 vertex.')\\n\\n\\t\\t\\trefineAnim(thisGRP)\\n\\telse : \\n\\t\\tunify(nodesMap, thisGRP)\" +STARTLINE}\n addUserKnob {20 resultTabStart l \"\" +STARTLINE n -2}\n addUserKnob {20 result l Result}\n addUserKnob {41 display T Unified_Axis.display}\n addUserKnob {41 selectable -STARTLINE T Unified_Axis.selectable}\n addUserKnob {41 xform_order l \"transform order\" T Unified_Axis.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T Unified_Axis.rot_order}\n addUserKnob {41 translate T Unified_Axis.translate}\n addUserKnob {41 rotate T Unified_Axis.rotate}\n addUserKnob {41 scaling l scale T Unified_Axis.scaling}\n addUserKnob {20 \"\" l \"World matrix\" n 2}\n addUserKnob {41 world_matrix l \"\" -STARTLINE T Unified_Axis.world_matrix}\n addUserKnob {20 \"\" n -1}\n addUserKnob {26 \"\"}\n addUserKnob {22 export l \"export axis\" T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['generalFN'].execute()\\n\\nlocate = getLevel()\\n\\nwith locate :\\n\\tax = nuke.nodes.Axis()\\n\\tax.setXYpos( thisGRP.xpos() + 100 , thisGRP.ypos() )\\n\\tax\\['label'].setValue('<font color=orange>Export by Unify3DCoordinate</font>')\\n\\n\\tknobsLoop = \\['translate','rotate','scaling']\\n\\n\\tfor k in range(3) :\\n\\t\\tif thisGRP\\[knobsLoop\\[k]].isAnimated() :\\n\\t\\t\\tani = thisGRP\\[knobsLoop\\[k]].animations()\\n\\t\\t\\tax\\[knobsLoop\\[k]].setAnimated()\\n\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\tfor key in ani\\[i].keys() :\\n\\t\\t\\t\\t\\tax\\[knobsLoop\\[k]].setValueAt( key.y , key.x , i )\\n\\t\\telse :\\n\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\tax\\[knobsLoop\\[k]].setValue( thisGRP\\[knobsLoop\\[k]].getValue()\\[i] , i)\" +STARTLINE}\n addUserKnob {22 reset -STARTLINE T \"thisGRP = nuke.thisGroup()\\n\\ntoolKnobs = \\['display','selectable','translate','rotate','scaling','world_matrix']\\n\\nfor i in range (0, len(toolKnobs), 1) :\\n\\tthisGRP\\[toolKnobs\\[i]].clearAnimated()\\n\\nthisGRP\\['display'].setValue(1)\\nthisGRP\\['selectable'].setValue(1)\\nthisGRP\\['translate'].setValue(\\[0,0,0])\\nthisGRP\\['rotate'].setValue(\\[0,0,0])\\nthisGRP\\['scaling'].setValue(\\[1,1,1])\"}\n addUserKnob {20 resultTabEnd l \"\" -STARTLINE n -3}\n addUserKnob {20 tag_nodeClass l \"node class data (dev)\"}\n addUserKnob {43 filterNonReverse +DISABLED}\n filterNonReverse Camera,Camera2,Light,Light2,DirectLight,Environment,Axis,Axis2,Light3,Axis3,Camera3\n addUserKnob {43 filter3DNodes +DISABLED}\n filter3DNodes Axis,Axis2,Card,Card2,Cube,Cylinder,Sphere,ReadGeo,ReadGeo2,Light,Light2,DirectLight,Spotlight,Environment,TransformGeo,EditGeo,Camera,Camera2,Light3,Axis3,Camera3\n addUserKnob {22 add_class l \"add new node class into the list\" T \"p = nuke.Panel('add new node class into the list :')\\np.addBooleanCheckBox('Is it a non-reverse node?', False)\\np.addSingleLineInput('Node class :', '')\\n\\nif p.show() :\\n\\tnewNR = p.value('Is it a non-reverse node?')\\n\\tnewItem = p.value('Node class :')\\n\\n\\tif not newItem\\[:1].isalpha() :\\n\\t\\tnuke.message('Illegal first letter of new node class.<br><font color=\\\"orange\\\">Only accept alphabet on the first letter.</font>')\\n\\telse :\\n\\t\\tthisGRP = nuke.thisGroup()\\n\\n\\t\\tfilterCheck = thisGRP\\['filterNonReverse'].getValue().split(',')\\n\\t\\tfilter3DNodes = thisGRP\\['filter3DNodes'].getValue().split(',')\\n\\n\\t\\tcheckReturn = 0\\n\\n\\t\\tif newNR :\\n\\t\\t\\tif newItem in filterCheck :\\n\\t\\t\\t\\tcheckReturn = 1\\n\\n\\t\\tif newItem in filter3DNodes :\\n\\t\\t\\tcheckReturn = 1\\n\\n\\t\\tif checkReturn :\\n\\t\\t\\tnuke.message('New node class already existed in the list.<br>If you want to modify it, please remove it first.')\\n\\t\\telse :\\n\\t\\t\\tif newNR :\\n\\t\\t\\t\\tfilterCheck.append( newItem )\\n\\t\\t\\t\\tthisGRP\\['filterNonReverse'].setValue( ','.join(filterCheck) )\\n\\n\\t\\t\\tfilter3DNodes.append( newItem )\\n\\t\\t\\tthisGRP\\['filter3DNodes'].setValue( ','.join(filter3DNodes) )\" +STARTLINE}\n addUserKnob {22 remove_class l \"remove custom class from the list\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\n\\nfilterCheck = thisGRP\\['filterNonReverse'].getValue().split(',')\\nfilter3DNodes = thisGRP\\['filter3DNodes'].getValue().split(',')\\n\\nnoDefault = \\['Axis', 'Axis2', 'Card', 'Card2', 'Cube', 'Cylinder', 'Sphere', 'ReadGeo', 'ReadGeo2', 'Light', 'Light2', 'DirectLight', 'Spotlight', 'Environment', 'TransformGeo', 'EditGeo', 'Camera', 'Camera2']\\n\\ncustomClass = \\[]\\n\\nfor i in filterCheck :\\n\\tif i not in noDefault :\\n\\t\\tif i not in customClass :\\n\\t\\t\\tcustomClass.append( i )\\n\\nfor i in filter3DNodes :\\n\\tif i not in noDefault :\\n\\t\\tif i not in customClass :\\n\\t\\t\\tcustomClass.append( i )\\n\\nif customClass :\\n\\tp = nuke.Panel('select custom class to remove :')\\n\\tp.addEnumerationPulldown( 'custom class in the list :', ' '.join(customClass) )\\n\\n\\tif p.show() :\\n\\t\\trmItem = p.value( 'custom class in the list :' )\\n\\n\\t\\ttry :\\n\\t\\t\\tfilterCheck.remove( rmItem )\\n\\t\\t\\tthisGRP\\['filterNonReverse'].setValue( ','.join(filterCheck) )\\n\\t\\texcept :\\n\\t\\t\\tpass\\n\\n\\t\\ttry :\\n\\t\\t\\tfilter3DNodes.remove( rmItem )\\n\\t\\t\\tthisGRP\\['filter3DNodes'].setValue( ','.join(filter3DNodes) )\\n\\t\\texcept :\\n\\t\\t\\tpass\\nelse :\\n\\tnuke.message('No custom class found in the list.')\"}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 2.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-03-29}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"2.4<br>-&nbsp;added&nbsp;Camera3&nbsp;class&nbsp;into&nbsp;detection&nbsp;list<br><br>2.3<br>-&nbsp;compatible&nbsp;with&nbsp;python3<br>-&nbsp;added&nbsp;Light3&nbsp;&&nbsp;Axis3&nbsp;class&nbsp;into&nbsp;detection&nbsp;list<br><br>2.2<br>-&nbsp;frame&nbsp;range&nbsp;added&nbsp;'current&nbsp;<br>&nbsp;&nbsp;frame'option.&nbsp;For&nbsp;1&nbsp;frame&nbsp;calculation.<br>-&nbsp;exposed&nbsp;custom&nbsp;node&nbsp;class&nbsp;data.<br>&nbsp;&nbsp;User&nbsp;can&nbsp;add&nbsp;custom&nbsp;node&nbsp;class&nbsp;<br>&nbsp;&nbsp;if&nbsp;there&nbsp;has&nbsp;special&nbsp;3D&nbsp;nodes.<br>&nbsp;&nbsp;*&nbsp;custom&nbsp;node&nbsp;class&nbsp;MUST<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;included&nbsp;'matrix'&nbsp;knob.<br><br>2.1<br>-&nbsp;added&nbsp;export&nbsp;axis<br><br>2.0<br>-&nbsp;mirror&nbsp;fix<br>&nbsp;&nbsp;updated&nbsp;error&nbsp;message<br>&nbsp;&nbsp;uncheck&nbsp;calculate&nbsp;vertex&nbsp;by&nbsp;default\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x2f4255ff\n  label bin\n  note_font_size 42\n  xpos -446\n  ypos -75\n  bdwidth 289\n  bdheight 332\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xff\n  label \"Dont touch\"\n  note_font_size 42\n  xpos -704\n  ypos -74\n  bdwidth 217\n  bdheight 232\n }\n Input {\n  inputs 0\n  name input3D\n  xpos -87\n  ypos -106\n }\n Dot {\n  name Dot1\n  xpos -53\n  ypos 53\n }\nset Nb4369800 [stack 0]\n Output {\n  name Output1\n  xpos -87\n  ypos 391\n }\n CurveTool {\n  inputs 0\n  ROI {512 389 1536 1167}\n  autocropdata {512 389 1536 1167}\n  intensitydata {0 0 0 0}\n  name hack_ct\n  xpos -413\n  ypos 174\n }\npush $Nb4369800\n Dot {\n  name Dot2\n  xpos 80\n  ypos 53\n }\n EditGeo {\n  name transformationData\n  xpos 46\n  ypos 87\n }\n PythonGeo {\n  name pgeoGet\n  xpos 46\n  ypos 139\n }\n Axis {\n  inputs 0\n  name Unified_Axis\n  gl_color 0xffbf00ff\n  xpos -284\n  ypos 155\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['selVertex'].getValue() == 1 :\\n    thisGRP\\['vertexTrans'].setEnabled(True)\\nelse :\\n    thisGRP\\['vertexTrans'].setEnabled(False)\\n\"\n  xpos -640\n  ypos 88\n  addUserKnob {20 User}\n  addUserKnob {6 selVertex l \"Calculate from selected vertex\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['frame_range'].getValue() == 2 :\\n    thisGRP\\['firstFR'].setEnabled(True)\\n    thisGRP\\['lastFR'].setEnabled(True)\\nelse :\\n    thisGRP\\['firstFR'].setEnabled(False)\\n    thisGRP\\['lastFR'].setEnabled(False)\\n\"\n  xpos -639\n  ypos 21\n  addUserKnob {20 User}\n  addUserKnob {4 frame_range l \"frame range\" M {\"project setting\" \"current frame\" custom \"\"}}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -347\n  ypos 39\n  addUserKnob {20 User}\n  addUserKnob {22 generalFN T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n#########################################################\\n\\ndef upstreamNodes(startNode) :\\n\\n\\tmainStream = \\[]\\n\\n\\tcurNode = startNode\\n\\n\\twhile curNode :\\n\\t\\tif curNode.knob('matrix') :\\n\\t\\t\\tfor m in range (0,len(filter3DNodes)) :\\n\\t\\t\\t\\tif curNode.Class() == filter3DNodes\\[m] :\\n\\t\\t\\t\\t\\tsubStream = \\[curNode.name()]\\n\\n\\t\\t\\t\\t\\tfor x in range (1, curNode.inputs()) :\\n\\t\\t\\t\\t\\t\\tsubNode = curNode.input(x)\\n\\t\\t\\t\\t\\t\\tif subNode.knob('matrix') :\\n\\t\\t\\t\\t\\t\\t\\tsubStream.append(subNode.name())\\n\\n\\t\\t\\t\\t\\t\\twhile subNode :\\n\\t\\t\\t\\t\\t\\t\\tfor y in range (0, subNode.inputs()) :\\n\\t\\t\\t\\t\\t\\t\\t\\tif subNode.input(y).knob('matrix') :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tsubStream.append(subNode.input(y).name())\\n\\t\\t\\t\\t\\t\\t\\tsubNode = subNode.input(0)\\n\\n\\t\\t\\t\\t\\tmainStream.append(subStream)\\n\\t\\tcurNode = curNode.input(0)\\n\\n\\treturn mainStream\\n\\n#########################################################\\n\\ndef unify(mainStream, targetNode) :\\n\\n\\torderCheck = 0\\n\\n\\toutMTX = nuke.math.Matrix4()\\n\\tfailMSG = 0\\n\\tdisabledNode = \\[]\\n\\tcheckANI = 0\\n\\n\\tfor a in range (0, len(mainStream)) :\\n\\t\\tfor b in range (0, len(mainStream\\[a])) :\\n\\t\\t\\tif nuke.toNode(mainStream\\[a]\\[b]).knob('disable').getValue() == 1 :\\n\\t\\t\\t\\tdisabledNode.append(mainStream\\[a]\\[b])\\n\\t\\t\\t\\tfailMSG = 1\\n\\n\\tif failMSG == 1 :\\n\\t\\tdisabledList = '<br>'.join(disabledNode)\\n\\t\\tnuke.message( '<font color=orange>Disabled nodes list:</font><p><font color=red>' +disabledList + '</font><p>Please disconnect these transformation nodes from the tree.' )\\n\\telse :\\n\\n\\t\\t# check input node type ##########################################\\n\\n\\t\\tfor oc in range (0, len(filterCheck)) :\\n\\t\\t\\tif nuke.toNode(mainStream\\[0]\\[0]).Class() == filterCheck\\[oc] :\\n\\t\\t\\t\\torderCheck = 1\\n\\n\\t\\tif orderCheck == 0 :\\n\\t\\t\\tmainStream.reverse()\\n\\n\\t\\t# check ani ######################################################\\n\\n\\t\\tfor a in range (0, len(mainStream)) :\\n\\t\\t\\tfor b in range (0, len(mainStream\\[a])) :\\n\\n\\t\\t\\t\\tgetMTX = nuke.math.Matrix4()\\n\\t\\t\\t\\tfocusNode = nuke.toNode(mainStream\\[a]\\[b])\\n\\n\\t\\t\\t\\tfor aniCheck in focusNode.knobs().keys() :\\n\\t\\t\\t\\t\\tif focusNode.knob(aniCheck).isAnimated() == True :\\n\\t\\t\\t\\t\\t\\tcheckANI = 1\\n\\n\\t\\t# unify in matrix #################################################\\n\\n\\t\\tif checkANI != 0 :\\n\\t\\t\\tfor p in range (frameST, frameED +1 ) :\\n\\t\\t\\t\\tfor a in range (0, len(mainStream)) :\\n\\t\\t\\t\\t\\tfor b in range (0, len(mainStream\\[a])) :\\n\\n\\t\\t\\t\\t\\t\\tgetMTX = nuke.math.Matrix4()\\n\\t\\t\\t\\t\\t\\tfocusNode = nuke.toNode(mainStream\\[a]\\[b])\\n\\n\\t\\t\\t\\t\\t\\tfor q in range (0,16) :\\n\\t\\t\\t\\t\\t\\t\\tgetMTX\\[q] = focusNode.knob('matrix').getValueAt(p)\\[q]\\n\\n\\t\\t\\t\\t\\t\\tif a != 0 :\\n\\t\\t\\t\\t\\t\\t\\toutMTX = outMTX * getMTX\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\toutMTX = getMTX\\n\\n\\t\\t\\t\\toutMTX.transpose()\\n\\n\\t\\t\\t\\tmTranslate = nuke.math.Matrix4(outMTX)\\n\\t\\t\\t\\tmTranslate.translationOnly()\\n\\t\\t\\t\\tmRotate = nuke.math.Matrix4(outMTX)\\n\\t\\t\\t\\tmRotate.rotationOnly()\\n\\t\\t\\t\\tmScale = nuke.math.Matrix4(outMTX)\\n\\t\\t\\t\\tmScale.scaleOnly()\\n\\n\\t\\t\\t\\ttranslate = (mTranslate\\[12], mTranslate\\[13], mTranslate\\[14])\\n\\t\\t\\t\\trotateRad = mRotate.rotationsZXY()\\n\\t\\t\\t\\trotate = (math.degrees(rotateRad\\[0]), math.degrees(rotateRad\\[1]), math.degrees(rotateRad\\[2]))\\n\\t\\t\\t\\tscale = (mScale.xAxis().x, mScale.yAxis().y, mScale.zAxis().z)\\n\\n\\n\\t\\t\\t\\ttargetNode\\['translate'].setAnimated()\\n\\t\\t\\t\\ttargetNode\\['rotate'].setAnimated()\\n\\t\\t\\t\\ttargetNode\\['scaling'].setAnimated()\\n\\t\\t\\t\\ttargetNode\\['translate'].setValueAt(mTranslate\\[12], p, 0)\\n\\t\\t\\t\\ttargetNode\\['translate'].setValueAt(mTranslate\\[13], p, 1)\\n\\t\\t\\t\\ttargetNode\\['translate'].setValueAt(mTranslate\\[14], p, 2)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(math.degrees(rotateRad\\[0]), p, 0)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(math.degrees(rotateRad\\[1]), p, 1)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(math.degrees(rotateRad\\[2]), p, 2)\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(mScale.xAxis().x, p, 0)\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(mScale.yAxis().y, p, 1)\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(mScale.zAxis().z, p, 2)\\n\\n\\t\\telse :\\n\\n\\t\\t\\tfor a in range (0, len(mainStream)) :\\n\\t\\t\\t\\tfor b in range (0, len(mainStream\\[a])) :\\n\\n\\t\\t\\t\\t\\tgetMTX = nuke.math.Matrix4()\\n\\t\\t\\t\\t\\tfocusNode = nuke.toNode(mainStream\\[a]\\[b])\\n\\n\\t\\t\\t\\t\\tfor q in range (0,16) :\\n\\t\\t\\t\\t\\t\\tgetMTX\\[q] = focusNode.knob('matrix').getValue()\\[q]\\n\\n\\t\\t\\t\\t\\tif a != 0 :\\n\\t\\t\\t\\t\\t\\toutMTX = outMTX * getMTX\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\toutMTX = getMTX\\n\\n\\t\\t\\toutMTX.transpose()\\n\\n\\t\\t\\tmTranslate = nuke.math.Matrix4(outMTX)\\n\\t\\t\\tmTranslate.translationOnly()\\n\\t\\t\\tmRotate = nuke.math.Matrix4(outMTX)\\n\\t\\t\\tmRotate.rotationOnly()\\n\\t\\t\\tmScale = nuke.math.Matrix4(outMTX)\\n\\t\\t\\tmScale.scaleOnly()\\n\\n\\t\\t\\ttranslate = (mTranslate\\[12], mTranslate\\[13], mTranslate\\[14])\\n\\t\\t\\trotateRad = mRotate.rotationsZXY()\\n\\t\\t\\trotate = (math.degrees(rotateRad\\[0]), math.degrees(rotateRad\\[1]), math.degrees(rotateRad\\[2]))\\n\\t\\t\\tscale = (mScale.xAxis().x, mScale.yAxis().y, mScale.zAxis().z)\\n\\n\\t\\t\\ttargetNode\\['translate'].clearAnimated()\\n\\t\\t\\ttargetNode\\['rotate'].clearAnimated()\\n\\t\\t\\ttargetNode\\['scaling'].clearAnimated()\\n\\t\\t\\ttargetNode\\['translate'].setValue(translate)\\n\\t\\t\\ttargetNode\\['rotate'].setValue(rotate)\\n\\t\\t\\ttargetNode\\['scaling'].setValue(scale)\\n\\n#########################################################\\n\\ndef checkVertex() :\\n\\tcount = \\[]\\n\\tfor point in nukescripts.snap3d.selectedPoints() :\\n\\t\\tcount.append(point)\\n\\n\\treturn len(count)\\n\\n#########################################################\\n\\ndef convertIter(xyz) :\\n\\tfor i in range (0, len(xyz)) :\\n\\t\\ttPos = nuke.math.Vector4(xyz\\[i]\\[0], xyz\\[i]\\[1], xyz\\[i]\\[2], 1.0)\\n\\t\\tyield nukescripts.snap3d.VertexInfo(0, 0, 1, nuke.math.Vector3(tPos.x, tPos.y, tPos.z))\\n\\n#########################################################\\n\\ndef vertexPack() :\\n\\tselid = \\[]\\n\\tfor i in nukescripts.snap3d.selectedVertexInfos() :\\n\\t\\tif selid.count(i.index) == 0 :\\n\\t\\t\\tselid.append(i.index)\\n\\treturn selid\\n\\n\\n#########################################################\\n\\ndef vertexSnap(targetNode, packID) :\\n\\tvertexType = targetNode\\['vertexTrans'].getValue()\\n\\n\\tif frameST != frameED :\\n\\t\\ttargetNode\\['translate'].setAnimated()\\n\\t\\tif vertexType >=1 :\\n\\t\\t\\ttargetNode\\['rotate'].setAnimated()\\n\\t\\t\\tif vertexType == 2 :\\n\\t\\t\\t\\ttargetNode\\['scaling'].setAnimated()\\n\\n\\tpgeoGet = nuke.toNode('pgeoGet')\\n\\n\\thack_ct = nuke.toNode('hack_ct')\\n\\n\\tprogBar = nuke.ProgressTask('Sampling vertex')\\n\\tjobCount = 0\\n\\tjobTotal = (frameED+1)-frameST\\n\\n\\tfor ctime in range (int(frameST), int(frameED+1), 1) :\\n\\t\\tnuke.execute(hack_ct, ctime, ctime)\\n\\n\\t\\t### progress bar\\n\\t\\tjobCount += 1\\n\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\tif progBar.isCancelled() :\\n\\t\\t\\tbreak;\\n\\t\\tprogBar.setProgress(progShow)\\n\\t\\t#################\\n\\n\\t\\tselPos = \\[]\\n\\t\\tfor i in range (0, len(packID)) :\\n\\t\\t\\tselPos.append(pgeoGet\\['geo'].getGeometry()\\[0].points()\\[3*packID\\[i]:(3*packID\\[i])+3])\\n\\t\\ttargetNode\\['translate'].setValue(nukescripts.snap3d.calcAveragePosition(convertIter(selPos)))\\n\\t\\tif vertexType >=1 :\\n\\t\\t\\tvec1 = nuke.math.Vector3(selPos\\[0]\\[0], selPos\\[0]\\[1], selPos\\[0]\\[2])\\n\\t\\t\\tvec2 = nuke.math.Vector3(selPos\\[1]\\[0], selPos\\[1]\\[1], selPos\\[1]\\[2])\\n\\t\\t\\tvec3 = nuke.math.Vector3(selPos\\[2]\\[0], selPos\\[2]\\[1], selPos\\[2]\\[2])\\n\\n\\t\\t\\ttargetNode\\['rotate'].setValue(math.degrees(nukescripts.snap3d.planeRotation((vec1, vec2, vec3), norm=None)\\[0]), 0)\\n\\t\\t\\ttargetNode\\['rotate'].setValue(math.degrees(nukescripts.snap3d.planeRotation((vec1, vec2, vec3), norm=None)\\[1]), 1)\\n\\t\\t\\ttargetNode\\['rotate'].setValue(math.degrees(nukescripts.snap3d.planeRotation((vec1, vec2, vec3), norm=None)\\[2]), 2)\\n\\t\\t\\tif vertexType ==2 :\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValue(math.sqrt(math.pow(selPos\\[0]\\[0]-selPos\\[1]\\[0], 2)+math.pow(selPos\\[0]\\[1]-selPos\\[1]\\[1], 2)+math.pow(selPos\\[0]\\[2]-selPos\\[1]\\[2], 2)), 0)\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValue(math.sqrt(math.pow(selPos\\[1]\\[0]-selPos\\[2]\\[0], 2)+math.pow(selPos\\[1]\\[1]-selPos\\[2]\\[1], 2)+math.pow(selPos\\[1]\\[2]-selPos\\[2]\\[2], 2)), 1)\\n\\t\\t\\t\\ttargetNode\\['scaling'].setValue(math.sqrt(math.pow(selPos\\[2]\\[0]-selPos\\[0]\\[0], 2)+math.pow(selPos\\[2]\\[1]-selPos\\[0]\\[1], 2)+math.pow(selPos\\[2]\\[2]-selPos\\[0]\\[2], 2)), 2)\\n\\n\\thack_ct\\['intensitydata'].clearAnimated()\\n\\tdel progBar\\n\\n#########################################################\\n\\ndef refineAnim(targetNode) :\\n\\tif frameST != frameED :\\n\\t\\tfor ctime in range (int(frameST), int(frameED+1), 1) :\\n\\t\\t\\ttr = targetNode\\['translate'].getValueAt(ctime)\\n\\t\\t\\ttargetNode\\['translate'].setValueAt(tr\\[0], ctime, 0)\\n\\t\\t\\ttargetNode\\['translate'].setValueAt(tr\\[1], ctime, 1)\\n\\t\\t\\ttargetNode\\['translate'].setValueAt(tr\\[2], ctime, 2)\\n\\t\\t\\tif vertexType >=1 :\\n\\t\\t\\t\\tro = targetNode\\['rotate'].getValueAt(ctime)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(ro\\[0], ctime, 0)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(ro\\[1], ctime, 1)\\n\\t\\t\\t\\ttargetNode\\['rotate'].setValueAt(ro\\[2], ctime, 2)\\n\\t\\t\\t\\tif vertexType == 2 :\\n\\t\\t\\t\\t\\tsa = targetNode\\['scaling'].getValueAt(ctime)\\n\\t\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(sa\\[0], ctime, 0)\\n\\t\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(sa\\[1], ctime, 1)\\n\\t\\t\\t\\t\\ttargetNode\\['scaling'].setValueAt(sa\\[2], ctime, 2)\\n\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Vector2ToSTMap.gizmo",
    "content": "Group {\n name Vector2ToSTMap\n addUserKnob {20 VtoU l \"Vector2 to STMap\"}\n addUserKnob {41 in l Vector_Layer t \"Pick the layer containing your motion vectors.\" T UV_Channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -303\n  ypos 114\n }\nset Ne43e7b0 [stack 0]\n Shuffle {\n  name UV_Channel\n  xpos -163\n  ypos 114\n }\n Expression {\n  expr0 (r+x+0.5)/width\n  expr1 (g+y+0.5)/height\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  channel3 {none none none -rgba.alpha}\n  name Vectors_to_UV\n  xpos -163\n  ypos 228\n }\npush $Ne43e7b0\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  alpha black\n  out {{{parent.UV_Channel.in}}}\n  name ShuffleCopy1\n  xpos -303\n  ypos 228\n }\n Output {\n  name Output1\n  xpos -303\n  ypos 299\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Vector3ToMatrix4.gizmo",
    "content": "Group {\n name Vector3ToMatrix4_\n knobChanged \"# Knobchanged code:\\nnode = nuke.thisNode()\\nknob = nuke.thisKnob()\\nif knob.name() == 'vector_representation':\\n    if knob.value() == 'Rotation (orientation vector)':\\n        node\\['lookat'].setVisible(True)\\n        node\\['minus_axis'].setVisible(True)\\n    else:\\n        node\\['lookat'].setVisible(False)\\n        node\\['minus_axis'].setVisible(False)\\n\"\n addUserKnob {20 main_tab l \"Vector3 to Matrix4\"}\n addUserKnob {4 vector_representation l \"Use Vector as\" t \"A vector3 by itself cannot represent all the parts required for a matrix, however we are able to infer some transformation matrices from a vector3.\\nFor a translation matrix, the x, y and z values are used as is for translate values.\\nFor a rotation matrix, we calculate a rotation matrix so that a specified axis looks at the 3d point defined by the vector. If you are looking to rotate in x, y and z angles by the amount of each dimention of the vector, look at the RotateMatrix4 node instead.\\nFor the scale vector, we use the magnitude here, so this will always result in an uniform scale. For non-uniform scaling, look at ScaleMatrix4.\" M {Translation \"Rotation (orientation vector)\" \"Scale (magnitude)\"}}\n addUserKnob {4 lookat l \"Aim Axis\" t \"Aim the selected Axis in the direction of the 3d vector.\" +HIDDEN M {X Y Z \"\" \"\"}}\n addUserKnob {6 minus_axis l \"Negative Axis\" t \"Use the negative axis rather than the positive axis\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x545454ff\n  label \"- Identity in\\n  matrix layers\\n- Bypass other channels\"\n  note_font_size 20\n  xpos -39\n  ypos 277\n  bdwidth 280\n  bdheight 262\n }\n Input {\n  inputs 0\n  name vector3\n  xpos -335\n  ypos -120\n }\n Dot {\n  name Dot12\n  tile_color 0xcccccc00\n  xpos -301\n  ypos 97\n }\nset N260f03c0 [stack 0]\n Group {\n  name NormalizeVector3_1\n  help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n  xpos -145\n  ypos 94\n  addUserKnob {20 main_tab l \"Normalize Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N168e4560 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 174\n   ypos 156\n  }\nset N1b5e0b90 [stack 0]\npush $N1b5e0b90\n  Dot {\n   name Dot4\n   tile_color 0x9e3c6300\n   xpos 377\n   ypos 156\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 343\n   ypos 209\n  }\n  Dot {\n   name Dot5\n   tile_color 0xcccccc00\n   xpos 377\n   ypos 271\n  }\n  Merge2 {\n   inputs 2\n   operation divide\n   bbox B\n   name Merge1\n   xpos 140\n   ypos 267\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N168e4560\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Multiply {\n  value -1\n  name Multiply1\n  xpos 269\n  ypos 88\n  disable {{!parent.minus_axis}}\n }\n Dot {\n  name Dot1\n  tile_color 0x7aa9ff00\n  xpos 303\n  ypos 173\n }\nset N1556f230 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0x7aa9ff00\n  xpos 376\n  ypos 173\n }\nset N1cfd1db0 [stack 0]\n Constant {\n  inputs 0\n  channels rgb\n  color {1 0 0 1}\n  name Pole_Vector1\n  xpos 609\n  ypos -35\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 0 1 1}\n  name Pole_Vector2\n  xpos 506\n  ypos -36\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0 1 0 1}\n  name Pole_Vector\n  xpos 407\n  ypos -38\n }\n Switch {\n  inputs 3\n  which {{parent.lookat}}\n  name Pole_Picker\n  xpos 407\n  ypos 88\n }\n Group {\n  inputs 2\n  name CrossProductVector3_\n  help \"Calculates the cross product of 2 Vector3 inputs.\"\n  xpos 407\n  ypos 225\n  addUserKnob {20 main_tab l \"Cross Product Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorA\n   xpos 457\n   ypos -6\n   number 1\n  }\n  Shuffle {\n   name vector_layer1\n   xpos 457\n   ypos 103\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove2\n   xpos 457\n   ypos 129\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 491\n   ypos 210\n  }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N12b61dd0 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  MergeExpression {\n   inputs 2\n   expr0 \"Ag*Bb - Ab*Bg\"\n   expr1 \"Ab*Br - Ar*Bb\"\n   expr2 \"Ar*Bg - Ag*Br\"\n   name MergeExpression2\n   xpos 140\n   ypos 206\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N12b61dd0\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\nset N122b60e0 [stack 0]\npush $N260f03c0\n Group {\n  name Magnitude_Vector3_\n  help \"Calculate the magnitude (scalar) of an input Vector3.\"\n  xpos -560\n  ypos 94\n  addUserKnob {20 main_tab l \"Magnitude Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N355da1b0 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 140\n   ypos 227\n  }\n  Dot {\n   name Dot2\n   tile_color 0xcccccc00\n   xpos 174\n   ypos 364\n  }\npush $N355da1b0\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\npush $N1556f230\n Dot {\n  name Dot8\n  tile_color 0x7aa9ff00\n  xpos 93\n  ypos 173\n }\n Remove {\n  name Remove1\n  xpos 59\n  ypos 229\n }\nadd_layer {matrix0 matrix0.0 matrix0.1 matrix0.2 matrix0.3}\n Expression {\n  channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n  expr0 1\n  channel1 {-matrix0.0 matrix0.1 -matrix0.2 -matrix0.3}\n  expr1 0\n  channel2 {-matrix0.0 -matrix0.1 matrix0.2 -matrix0.3}\n  expr2 0\n  channel3 {-matrix0.0 -matrix0.1 -matrix0.2 matrix0.3}\n  expr3 0\n  name Expression1\n  xpos 59\n  ypos 402\n }\nadd_layer {matrix1 matrix1.0 matrix1.1 matrix1.2 matrix1.3}\n Expression {\n  channel0 {matrix1.0 -matrix1.1 -matrix1.2 -matrix1.3}\n  expr0 0\n  channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n  expr1 1\n  channel2 {-matrix1.0 -matrix1.1 matrix1.2 -matrix1.3}\n  expr2 0\n  channel3 {-matrix1.0 -matrix1.1 -matrix1.2 matrix1.3}\n  expr3 0\n  name Expression2\n  xpos 59\n  ypos 426\n }\nadd_layer {matrix2 matrix2.0 matrix2.1 matrix2.2 matrix2.3}\n Expression {\n  channel0 {matrix2.0 -matrix2.1 -matrix2.2 -matrix2.3}\n  expr0 0\n  channel1 {-matrix2.0 matrix2.1 -matrix2.2 -matrix2.3}\n  expr1 0\n  channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n  expr2 1\n  channel3 {-matrix2.0 -matrix2.1 -matrix2.2 matrix2.3}\n  expr3 0\n  name Expression3\n  xpos 59\n  ypos 450\n }\nadd_layer {matrix3 matrix3.0 matrix3.1 matrix3.2 matrix3.3}\n Expression {\n  channel0 {matrix3.0 -matrix3.1 -matrix3.2 -matrix3.3}\n  expr0 0\n  channel1 {-matrix3.0 matrix3.1 -matrix3.2 -matrix3.3}\n  expr1 0\n  channel2 {-matrix3.0 -matrix3.1 matrix3.2 -matrix3.3}\n  expr2 0\n  channel3 {-matrix3.0 -matrix3.1 -matrix3.2 matrix3.3}\n  expr3 1\n  name Expression4\n  xpos 59\n  ypos 474\n }\n Dot {\n  name Dot13\n  tile_color 0xcccccc00\n  xpos 93\n  ypos 530\n }\nset N2c4e4bb0 [stack 0]\n Dot {\n  name Dot14\n  tile_color 0xcccccc00\n  xpos -202\n  ypos 530\n }\nset N13be2b70 [stack 0]\n Group {\n  inputs 2\n  name ScaleMatrix4_\n  help \"Scale a matrix4 using a control channel (rgb from vector input) for which each channel is considered as a scalar for x, y and z\"\n  xpos -560\n  ypos 527\n  addUserKnob {20 ScaleMatrix4}\n  addUserKnob {26 Description l \"\" +STARTLINE T \"Scale a matrix4 using a control channel (rgb) for which each channel is considered as a scalar for x, y and z\"}\n  addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vector\n   xpos 491\n   ypos 162\n   number 1\n  }\n  Dot {\n   name Dot1\n   xpos 525\n   ypos 252\n  }\n  Input {\n   inputs 0\n   name matrix\n   xpos 344\n   ypos 161\n  }\n  MergeExpression {\n   inputs 2\n   channel0 {matrix0.0 -matrix0.1 -matrix0.2 -matrix0.3}\n   expr0 matrix0.0*Ar\n   channel1 {-matrix1.0 matrix1.1 -matrix1.2 -matrix1.3}\n   expr1 matrix1.1*Ag\n   channel2 {-matrix2.0 -matrix2.1 matrix2.2 -matrix2.3}\n   expr2 matrix2.2*Ab\n   channel3 none\n   name MergeExpression1\n   xpos 344\n   ypos 249\n  }\n  Output {\n   name Output1\n   xpos 344\n   ypos 349\n  }\n end_group\n Dot {\n  name Dot16\n  tile_color 0xcccccc00\n  xpos -526\n  ypos 914\n }\npush $N1556f230\n Dot {\n  name Dot3\n  tile_color 0x7aa9ff00\n  label \"Aim Vector\"\n  xpos 303\n  ypos 358\n }\nset N13f4f5e0 [stack 0]\npush $N122b60e0\n Dot {\n  name Dot2\n  tile_color 0xcccccc00\n  xpos 441\n  ypos 262\n }\nset N1280eb70 [stack 0]\npush $N1cfd1db0\n Dot {\n  name Dot6\n  tile_color 0x7aa9ff00\n  xpos 595\n  ypos 173\n }\n Group {\n  inputs 2\n  name CrossProductVector3_1\n  help \"Calculates the cross product of 2 Vector3 inputs.\"\n  xpos 561\n  ypos 259\n  addUserKnob {20 main_tab l \"Cross Product Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {41 in_1 l \"Vector A Layer\" t \"Layer containing the vector information for input A\" T vector_layer1.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorA\n   xpos 457\n   ypos -6\n   number 1\n  }\n  Shuffle {\n   name vector_layer1\n   xpos 457\n   ypos 103\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove2\n   xpos 457\n   ypos 129\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 491\n   ypos 210\n  }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N1300e9c0 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  MergeExpression {\n   inputs 2\n   expr0 \"Ag*Bb - Ab*Bg\"\n   expr1 \"Ab*Br - Ar*Bb\"\n   expr2 \"Ar*Bg - Ag*Br\"\n   name MergeExpression2\n   xpos 140\n   ypos 206\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N1300e9c0\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Group {\n  name NormalizeVector3_3\n  help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n  xpos 561\n  ypos 302\n  addUserKnob {20 main_tab l \"Normalize Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N1cbbba10 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 174\n   ypos 156\n  }\nset N1c785c30 [stack 0]\npush $N1c785c30\n  Dot {\n   name Dot4\n   tile_color 0x9e3c6300\n   xpos 377\n   ypos 156\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 343\n   ypos 209\n  }\n  Dot {\n   name Dot5\n   tile_color 0xcccccc00\n   xpos 377\n   ypos 271\n  }\n  Merge2 {\n   inputs 2\n   operation divide\n   bbox B\n   name Merge1\n   xpos 140\n   ypos 267\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N1cbbba10\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Dot {\n  name Dot7\n  tile_color 0xcccccc00\n  label \"Modified Pole Vector\"\n  xpos 595\n  ypos 355\n }\nset N15c8e370 [stack 0]\npush $N1280eb70\n Group {\n  name NormalizeVector3_2\n  help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n  xpos 408\n  ypos 302\n  addUserKnob {20 main_tab l \"Normalize Vector3\"}\n  addUserKnob {41 in l \"Vector B Layer\" t \"Layer containing the vector information for input B\" T vector_layer.in}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n }\n  Input {\n   inputs 0\n   name vectorB\n   xpos 0\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 34\n   ypos 108\n  }\nset N1b5f6750 [stack 0]\n  Shuffle {\n   name vector_layer\n   xpos 140\n   ypos 104\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 140\n   ypos 130\n  }\n  Dot {\n   name Dot3\n   tile_color 0x9e3c6300\n   xpos 174\n   ypos 156\n  }\nset N1dfc20b0 [stack 0]\npush $N1dfc20b0\n  Dot {\n   name Dot4\n   tile_color 0x9e3c6300\n   xpos 377\n   ypos 156\n  }\n  Expression {\n   channel0 rgba\n   expr0 sqrt((r*r)+(g*g)+(b*b))\n   channel2 {-rgba.red -rgba.green -rgba.blue none}\n   channel3 {none none none -rgba.alpha}\n   name Mag3\n   xpos 343\n   ypos 209\n  }\n  Dot {\n   name Dot5\n   tile_color 0xcccccc00\n   xpos 377\n   ypos 271\n  }\n  Merge2 {\n   inputs 2\n   operation divide\n   bbox B\n   name Merge1\n   xpos 140\n   ypos 267\n  }\n  Dot {\n   name Dot2\n   tile_color 0x4b5ec600\n   xpos 174\n   ypos 364\n  }\npush $N1b5f6750\n  ShuffleCopy {\n   inputs 2\n   in2 none\n   red red\n   green green\n   blue blue\n   out {{{parent.UV_Channel.in}}}\n   name ShuffleCopy1\n   xpos 0\n   ypos 360\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 506\n  }\n end_group\n Dot {\n  name Dot4\n  tile_color 0xcccccc00\n  label \"Unconstrained Vector\"\n  xpos 441\n  ypos 354\n }\nset N12ce8110 [stack 0]\n Switch {\n  inputs 3\n  which {{parent.lookat}}\n  name Z\n  xpos 561\n  ypos 438\n }\n Dot {\n  name Dot9\n  tile_color 0xcccccc00\n  xpos 595\n  ypos 728\n }\npush $N12ce8110\npush $N13f4f5e0\npush $N15c8e370\n Switch {\n  inputs 3\n  which {{parent.lookat}}\n  name Y\n  xpos 407\n  ypos 433\n }\n Dot {\n  name Dot10\n  tile_color 0xcccccc00\n  xpos 441\n  ypos 666\n }\npush $N15c8e370\npush $N12ce8110\npush $N13f4f5e0\n Switch {\n  inputs 3\n  which {{parent.lookat}}\n  name X\n  xpos 269\n  ypos 432\n }\n Dot {\n  name Dot11\n  tile_color 0xcccccc00\n  xpos 303\n  ypos 604\n }\npush $N2c4e4bb0\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix0.0\n  from1 rgba.green\n  to1 matrix1.0\n  from2 rgba.blue\n  to2 matrix2.0\n  bbox B\n  name Copy1\n  xpos 59\n  ypos 582\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix0.1\n  from1 rgba.green\n  to1 matrix1.1\n  from2 rgba.blue\n  to2 matrix2.1\n  bbox B\n  name Copy2\n  xpos 59\n  ypos 644\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix0.2\n  from1 rgba.green\n  to1 matrix1.2\n  from2 rgba.blue\n  to2 matrix2.2\n  bbox B\n  name Copy3\n  xpos 59\n  ypos 706\n }\n Dot {\n  name Dot17\n  tile_color 0x9e3c6300\n  xpos 93\n  ypos 914\n }\npush $N260f03c0\n Dot {\n  name Dot15\n  tile_color 0xcccccc00\n  xpos -301\n  ypos 606\n }\npush $N13be2b70\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 matrix0.3\n  from1 rgba.green\n  to1 matrix1.3\n  from2 rgba.blue\n  to2 matrix2.3\n  bbox B\n  name Copy4\n  xpos -236\n  ypos 584\n }\n Switch {\n  inputs 3\n  which {{parent.vector_representation}}\n  name Switch1\n  xpos -236\n  ypos 911\n }\n Output {\n  name Output1\n  xpos -236\n  ypos 1009\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_VectorExtendEdge.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name VectorExtendEdge\n help \"Push rgb pixels outwards using vectors  generated perpedicular to a control matte edge.\"\n selected true\n addUserKnob {20 VectorExtendEdge}\n addUserKnob {4 premult l \"input is\" M {premultiplied unpremultiplied}}\n addUserKnob {41 from0 l \"control matte channel\" T Copy4.from0}\n addUserKnob {7 preblur l \"pre-blur control matte\" t \"Blurring the control matte by a moderate amount will increase the width of the extended edge border and help with blending together the slices.\" R 0 10}\n preblur 1\n addUserKnob {26 \"\"}\n addUserKnob {3 slices l \"vector blur slices\" t \"The number of iterations of the vector blur operation, up to 10.\"}\n slices 5\n addUserKnob {7 preblur_vector l \"preblur vector\" t \"Blur the vector a bit before it's used to extend the rgb pixels.  Can help with blending and will also extend the edge further.\" R 0 10}\n preblur_vector 1\n addUserKnob {7 vector_length l \"vector length\" t \"The length of the vector blur operation per slice. Best to avoid making this too high because it can slow things down when multiplied by the number of slices.\" R 1 10}\n vector_length 3\n addUserKnob {26 \"\"}\n addUserKnob {4 output t \"The default output is the rgb.  The vector output options are just for checking what's going on under the hood.  The \\\"-1 to 1\\\" range is the \\\"native\\\" format while the \\\"0 to 1\\\" range compresses the vectors so that negative values can be visualised.\" M {\"extended rgb\" \"vectors (-1 to 1 range)\" \"vectors (0 to 1 range)\" \"\"}}\n}\n Input {\n  inputs 0\n  name ctrl_matte\n  xpos 1122\n  ypos 457\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  selected true\n  xpos 1122\n  ypos 504\n }\n Input {\n  inputs 0\n  name img\n  xpos 840\n  ypos 457\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 840\n  ypos 502\n }\n Dot {\n  name Dot2\n  xpos 874\n  ypos 570\n }\nset N918d19a0 [stack 0]\n Unpremult {\n  name Unpremult11\n  xpos 965\n  ypos 566\n  disable {{parent.premult i}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos 1122\n  ypos 559\n  disable {{\"!\\[exists parent.input1]\" i}}\n }\n Blur {\n  channels alpha\n  size {{parent.preblur i}}\n  name Blur12\n  label \"pre-blur alpha\"\n  xpos 1122\n  ypos 648\n }\nset N918da5f0 [stack 0]\npush $N918da5f0\npush $N918da5f0\npush $N918da5f0\n Group {\n  inputs 2\n  name ExtendEdge\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 1325\n  ypos 662\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.preblur_vector i}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N918296f0 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91c4b480 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91c4b480\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91c4b480\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91c4b480\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N918aa570 [stack 0]\npush $N918aa570\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N918296f0\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{vector_length i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix11\n  xpos 1325\n  ypos 751\n }\nset N9202a7d0 [stack 0]\npush $N9202a7d0\npush $N9202a7d0\npush $N9202a7d0\n Group {\n  inputs 2\n  name ExtendEdge1\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 1509\n  ypos 743\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector i}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N92034310 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91cad330 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91cad330\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91cad330\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91cad330\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N91c8c5e0 [stack 0]\npush $N91c8c5e0\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N92034310\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix12\n  xpos 1509\n  ypos 823\n }\nset N91e0ff00 [stack 0]\npush $N91e0ff00\npush $N91e0ff00\npush $N91e0ff00\n Group {\n  inputs 2\n  name ExtendEdge2\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 1695\n  ypos 823\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91e1ebe0 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91e465e0 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91e465e0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91e465e0\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91e465e0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N91e85c70 [stack 0]\npush $N91e85c70\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91e1ebe0\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix13\n  xpos 1695\n  ypos 895\n }\nset N91deb530 [stack 0]\npush $N91deb530\npush $N91deb530\npush $N91deb530\n Group {\n  inputs 2\n  name ExtendEdge3\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 1891\n  ypos 895\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91dfa1b0 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N90e575b0 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N90e575b0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N90e575b0\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N90e575b0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N911a4c50 [stack 0]\npush $N911a4c50\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91dfa1b0\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix14\n  xpos 1891\n  ypos 967\n }\nset N91f510c0 [stack 0]\npush $N91f510c0\npush $N91f510c0\npush $N91f510c0\n Group {\n  inputs 2\n  name ExtendEdge4\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 2077\n  ypos 967\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91f5fd70 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91f87780 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91f87780\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91f87780\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91f87780\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N91f99b80 [stack 0]\npush $N91f99b80\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91f5fd70\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix15\n  xpos 2077\n  ypos 1039\n }\nset N91ba8de0 [stack 0]\npush $N91ba8de0\npush $N91ba8de0\npush $N91ba8de0\n Group {\n  inputs 2\n  name ExtendEdge5\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 2263\n  ypos 1039\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector i}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91beeca0 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91d89700 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91d89700\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91d89700\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91d89700\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N91d40750 [stack 0]\npush $N91d40750\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91beeca0\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix16\n  xpos 2263\n  ypos 1111\n }\nset N91b5f6a0 [stack 0]\npush $N91b5f6a0\npush $N91b5f6a0\npush $N91b5f6a0\n Group {\n  inputs 2\n  name ExtendEdge6\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 2449\n  ypos 1111\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91fa9a50 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N91fb94f0 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N91fb94f0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N91fb94f0\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N91fb94f0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N91ff8bd0 [stack 0]\npush $N91ff8bd0\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91fa9a50\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix17\n  xpos 2449\n  ypos 1183\n }\nset N9201e2a0 [stack 0]\npush $N9201e2a0\npush $N9201e2a0\npush $N9201e2a0\n Group {\n  inputs 2\n  name ExtendEdge7\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 2635\n  ypos 1183\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N92151130 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N92178b00 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N92178b00\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N92178b00\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N92178b00\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N921b81e0 [stack 0]\npush $N921b81e0\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N92151130\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix18\n  xpos 2635\n  ypos 1255\n }\nset N92214680 [stack 0]\npush $N92214680\npush $N92214680\npush $N92214680\n Group {\n  inputs 2\n  name ExtendEdge8\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 2829\n  ypos 1255\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N92223300 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N9224ad00 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N9224ad00\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N9224ad00\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N9224ad00\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N9228a3e0 [stack 0]\npush $N9228a3e0\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N92223300\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix19\n  xpos 2829\n  ypos 1327\n }\nset N922e2900 [stack 0]\npush $N922e2900\npush $N922e2900\npush $N922e2900\n Group {\n  inputs 2\n  name ExtendEdge9\n  help \"Very useful as a super unpremultiplier.  The input matte is used as the source edge to extend the input colour channels beyond their existing alpha.  It can also be used to do dilate/erode operations on an alpha. The effect can be extended by using multiple copies.  The result should probably be re-comped with the original using an edge matte through a KeyMix so that only the desired areas are used.  \"\n  xpos 3023\n  ypos 1327\n  addUserKnob {20 Controls}\n  addUserKnob {7 preblurVector R 0 10}\n  preblurVector {{parent.ExtendEdge.preblurVector i}}\n  addUserKnob {41 scale l \"vector length\" T VectorBlur2.scale}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 556\n   ypos -426\n  }\nset N91eeca70 [stack 0]\n  Dot {\n   name Dot1\n   xpos 707\n   ypos -414\n  }\n  Dot {\n   name Dot2\n   xpos 707\n   ypos -121\n  }\n  Input {\n   inputs 0\n   name matte\n   xpos 440\n   ypos -424\n   number 1\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   alpha black\n   name Shuffle3\n   xpos 440\n   ypos -346\n  }\n  Group {\n   name Edge2Vec2\n   xpos 440\n   ypos -322\n  }\n   Input {\n    inputs 0\n    name Input1\n    xpos -172\n    ypos -315\n   }\n   Clamp {\n    channels rgb\n    name Clamp1\n    xpos -172\n    ypos -250\n   }\nset N923183f0 [stack 0]\n   Position {\n    translate {0 1}\n    name Position2\n    xpos -63\n    ypos -106\n   }\npush $N923183f0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge2\n    xpos -103\n    ypos -28\n   }\npush $N923183f0\n   Position {\n    translate {1 0}\n    name Position1\n    xpos -285\n    ypos -98\n   }\npush $N923183f0\n   Merge2 {\n    inputs 2\n    operation minus\n    name Merge1\n    xpos -253\n    ypos -29\n   }\n   Copy {\n    inputs 2\n    from0 rgba.green\n    to0 rgba.green\n    name Copy3\n    xpos -179\n    ypos 27\n   }\n   Grade {\n    channels {rgba.red rgba.green -rgba.blue none}\n    multiply {{Input1.height*Grade1.height i} {Input1.height*Grade1.height i} {curve i} {curve i}}\n    black_clamp false\n    name Grade1\n    xpos -179\n    ypos 196\n    addUserKnob {20 User}\n    addUserKnob {7 height l Height}\n    height 1\n   }\nset N92333f40 [stack 0]\npush $N92333f40\n   Expression {\n    channel0 rgb\n    expr0 sqrt((r*r)+(g*g)+(b*b))\n    name VectorLength\n    selected true\n    xpos -260\n    ypos 278\n   }\n   Merge2 {\n    inputs 2\n    operation divide\n    name Merge4\n    selected true\n    xpos -179\n    ypos 350\n   }\n   Output {\n    name Output1\n    xpos -179\n    ypos 494\n   }\n  end_group\n  Blur {\n   channels rgb\n   size {{parent.preblurVector i}}\n   name Blur5\n   label \"pre blur vector\"\n   xpos 440\n   ypos -296\n  }\npush $N91eeca70\n  ShuffleCopy {\n   inputs 2\n   red red\n   green green\n   out forward\n   name ShuffleCopy1\n   label \"rg to forward\"\n   xpos 556\n   ypos -194\n  }\n  VectorBlur {\n   channels rgba\n   uv forward\n   scale {{parent.parent.ExtendEdge.VectorBlur2.scale i}}\n   offset 0\n   alpha -rgba.alpha\n   maskChannelMask -rgba.alpha\n   maskChannelInput -rgba.alpha\n   name VectorBlur2\n   xpos 556\n   ypos -139\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 556\n   ypos -92\n  }\n  Output {\n   name Output1\n   xpos 556\n   ypos -8\n  }\n end_group\n Keymix {\n  inputs 3\n  channels rgb\n  name Keymix20\n  xpos 3023\n  ypos 1399\n }\npush $N922e2900\npush $N92214680\npush $N9201e2a0\npush $N91b5f6a0\npush $N91ba8de0\npush $N91f510c0\npush $N91deb530\npush $N91e0ff00\npush $N9202a7d0\npush $N918d19a0\n Switch {\n  inputs 11\n  which {{parent.slices}}\n  name Switch3\n  xpos 2018\n  ypos 2366\n }\nset N92405250 [stack 0]\n Shuffle {\n  in forward\n  blue black\n  alpha black\n  name Shuffle1\n  xpos 2116\n  ypos 2425\n }\nset N9240bf40 [stack 0]\n Expression {\n  expr0 (r+1)/2\n  expr1 (g+1)/2\n  name Expression1\n  xpos 2116\n  ypos 2476\n }\npush $N9240bf40\npush $N92405250\n Switch {\n  inputs 3\n  which {{parent.output}}\n  name Switch1\n  xpos 2018\n  ypos 2501\n }\npush $N918d19a0\n Dot {\n  name Dot22\n  xpos 898\n  ypos 2459\n }\n Copy {\n  inputs 2\n  from0 -rgba.alpha\n  to0 -rgba.alpha\n  channels rgb\n  name Copy1\n  xpos 2018\n  ypos 2544\n }\n Output {\n  name Output1\n  xpos 2018\n  ypos 2644\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_VectorTracker.gizmo",
    "content": "Group {\nname VectorTracker\nhelp \"A tracker that uses vector information rather than image data to generate tracking points.\"\ninputs 2\naddUserKnob {20 VectorTracker}\naddUserKnob {3 count l INVISIBLE +INVISIBLE}\naddUserKnob {22 trackbackward l <b>◄</b> t \"Track backwards range\" T \"current = nuke.frame()\\nstart = int(nuke.root()\\['first_frame'].value())\\n\\nretu = nuke.getFramesAndViews('track backward', str(current) + '-' + str(start))\\n\\nif retu is not  None:\\n    try:\\n        Frange = \\[int(i) for i in retu\\[0].split('-')]\\n\\n        J_VTT_Track(Frange\\[0], Frange\\[1])\\n    except ValueError:\\n        nuke.critical('Invalid frame range')\" +STARTLINE}\naddUserKnob {22 trackbackwardone l \"<b>◄ ▎</b>\" t \"Track backwards one frame\" -STARTLINE T \"currentFrame = nuke.frame()\\n\\nJ_VTT_Track(currentFrame, currentFrame - 1, False)\"}\naddUserKnob {22 trackforwardone l <b>▎►</b> t \"Track forwards one frame\" -STARTLINE T \"currentFrame = nuke.frame()\\n\\nJ_VTT_Track(currentFrame, currentFrame +1, False)\"}\naddUserKnob {22 trackforward l <b>►</b> t \"Track forwards range\" -STARTLINE T \"current = nuke.frame()\\nend = int(nuke.root()\\['last_frame'].value())\\n\\nretu = nuke.getFramesAndViews('track forward', str(current) + '-' + str(end))\\n\\nif retu is not  None:\\n    try:\\n        Frange = \\[int(i) for i in retu\\[0].split('-')]\\n\\n        J_VTT_Track(Frange\\[0], Frange\\[1])\\n    except ValueError:\\n        nuke.critical('Invalid frame range')\"}\naddUserKnob {26 spacer l \"\" -STARTLINE T \"                        \"}\naddUserKnob {22 export l \"<b>export trackers</b>\" t \"Export trackers to a Nuke Tracker node\" -STARTLINE T J_VTT_Export()}\naddUserKnob {22 about l <b>?</b> -STARTLINE T \"nuke.message('VectorTracker v1.0 by Jorrit Schulte\\\\n\\\\n<a href=\\\"http://www.JorritSchulte.com\\\">www.JorritSchulte.com</a>')\"}\naddUserKnob {26 trackdivider l @Tracker}\naddUserKnob {22 add l \"add tracker\" t \"Add tracker to interface\" -STARTLINE T J_VTT_AddTracker()}\naddUserKnob {22 removeall l \"remove all trackers\" t \"Remove all trackers from interface and reset tracker counter\" -STARTLINE T \"if nuke.ask('Are you sure you want to remove all trackers?'):\\n    node = nuke.thisNode()\\n\\n    tk = \\[i for i in node.allKnobs() if 'tracker' in i.name()]\\n\\n    for knob in tk:\\n        node.removeKnob(knob)\\n\\n    node\\['count'].setValue(0)\"}\naddUserKnob {22 enableall l \"enable all\" t \"Enable all trackers for tracking\" -STARTLINE T \"node = nuke.thisNode()\\n\\ntk = \\[i for i in node.allKnobs() if 'enable_' in i.name()]\\n\\nfor knob in tk:\\n    knob.setValue(True)\"}\naddUserKnob {22 disableall l \"disable all\" t \"Disable all trackers for tracking\" -STARTLINE T \"node = nuke.thisNode()\\n\\ntk = \\[i for i in node.allKnobs() if 'enable_' in i.name()]\\n\\nfor knob in tk:\\n    knob.setValue(False)\"}\naddUserKnob {26 blank l \"\" +STARTLINE T \"  \"}\n}\nInput {\ninputs 0\nname Image\nxpos -40\nypos -10\n}\nOutput {\nname Output1\nxpos -40\nypos 16\n}\nInput {\ninputs 0\nname Vectors\nxpos 70\nypos -10\nnumber 1\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Vectors_Direction.gizmo",
    "content": "Group {\n name Vectors_Direction\n help \"Edit the direction of motion vectors\"\n selected true\n addUserKnob {20 User}\n addUserKnob {41 in l Vector_Layer t \"Pick the layer containing your motion vectors.\" T UV_Channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {6 shuffleXY l swapXY t \"enable if it seems like X and Y vectors are in the wrong channel.\\nRed should contain X\\nGreen should contain Y\" +STARTLINE}\n addUserKnob {6 mirrorX t \"negates X values\" +STARTLINE}\n addUserKnob {6 mirrorY t \"Negates Y values\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {7 rotation t \"Rotates the vectors direction\" R 0 360}\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" t www.erwanleroy.com +STARTLINE T \"v1.0 - Part of VectorTools by Erwan Leroy - 2016\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -303\n  ypos 91\n }\nset N58fb7c00 [stack 0]\n Shuffle {\n  name UV_Channel\n  xpos -163\n  ypos 91\n }\n Shuffle {\n  red green\n  green red\n  name Shuffle1\n  xpos -163\n  ypos 128\n  disable {{1-parent.shuffleXY}}\n }\n Multiply {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  value -1\n  name neg_red1\n  xpos -163\n  ypos 165\n  disable {{1-parent.mirrorX}}\n }\n Multiply {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  value -1\n  name neg_green1\n  xpos -163\n  ypos 191\n  disable {{1-parent.mirrorY}}\n }\n Expression {\n  temp_name0 angleRad\n  temp_expr0 radians(parent.rotation)\n  expr0 \"r * cos(angleRad) - g * sin(angleRad)\"\n  expr1 \"r * sin(angleRad) + g * cos(angleRad)\"\n  name Direction\n  xpos -163\n  ypos 228\n }\npush $N58fb7c00\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  alpha black\n  out {{{parent.UV_Channel.in}}}\n  name ShuffleCopy1\n  xpos -303\n  ypos 228\n }\n Output {\n  name Output1\n  xpos -303\n  ypos 299\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Vectors_to_Degrees.gizmo",
    "content": "Group {\n name Vectors_to_Degrees\n help \"Convert the vector's directions to a value in Degrees.\"\n selected true\n addUserKnob {20 User}\n addUserKnob {41 in l Vector_Layer t \"Pick the layer containing your motion vectors.\" T UV_Channel.in}\n addUserKnob {26 \"\"}\n addUserKnob {6 flip_angle t \"Flips the directions of the rotations\" +STARTLINE}\n addUserKnob {7 rotate R 0 360}\n addUserKnob {26 \"\"}\n addUserKnob {6 anisotropic t \"The default anisotropic shader in Maya requires a value of 180 degrees in order to rotate the anisotropy by 90 degrees. Checking this box will multiply the values by 2.\" +STARTLINE}\n addUserKnob {6 normalize_range t \"Display the values in a range of 0-1 instead of 0-360\" -STARTLINE}\n normalize_range true\n addUserKnob {26 \"\"}\n addUserKnob {26 copyright l \"\" t www.erwanleroy.com +STARTLINE T \"v1.0 - Part of VectorTools by Erwan Leroy - 2016\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -303\n  ypos 91\n }\nset N37ffcc00 [stack 0]\n Shuffle {\n  name UV_Channel\n  xpos -113\n  ypos 91\n }\n Expression {\n  channel0 rgb\n  expr0 degrees(atan(r,g))+180\n  name Vector_to_Degrees\n  xpos -113\n  ypos 145\n }\n Expression {\n  channel0 rgb\n  expr0 360-r\n  name Counter_clockwise\n  xpos -113\n  ypos 187\n  disable {{1-parent.flip_angle}}\n }\n Add {\n  value {{parent.rotate}}\n  name Rotate\n  xpos -113\n  ypos 224\n }\n Multiply {\n  value 2\n  name Multiply1\n  xpos -113\n  ypos 262\n  disable {{1-parent.anisotropic}}\n }\n Expression {\n  channel0 rgb\n  expr0 r%360\n  name Range360\n  xpos -113\n  ypos 317\n }\n Expression {\n  channel0 rgb\n  expr0 r/360\n  name Range_0_1\n  xpos -113\n  ypos 365\n  disable {{1-parent.normalize_range}}\n }\npush $N37ffcc00\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue blue\n  alpha black\n  out {{{parent.UV_Channel.in}}}\n  name ShuffleCopy1\n  selected true\n  xpos -303\n  ypos 365\n }\n Output {\n  name Output1\n  xpos -303\n  ypos 440\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_VoronoiGradient.gizmo",
    "content": "Group {\n name VoronoiGradient\n knobChanged \"\\n\\nimport random\\nfrom math import sqrt\\n\\n################\\n##Script Start##\\n################    \\n        \\nn = nuke.thisNode() #the node\\nk = nuke.thisKnob() #the knob\\nkn = k.name() #the knob name\\n\\n#print (\\\"Knob name: \\\"+kn)\\n\\nif kn == \\\"type\\\":\\n    if n\\['type'].getValue() == 0: #generate\\n        n\\['sample_radius'].setVisible(False)\\n        n\\['generate_format'].setVisible(True)\\n        n\\['threshold'].setVisible(False)\\n        if n\\['method'].getValue() == 1: #NNI\\n            n\\['speedup'].setVisible(True)\\n        else:\\n            n\\['speedup'].setVisible(False)\\n    elif n\\['type'].getValue() == 1: #sample\\n        n\\['generate_format'].setVisible(False)\\n        n\\['sample_radius'].setVisible(True)\\n        n\\['threshold'].setVisible(False)\\n        if n\\['method'].getValue() == 1: #NNI\\n            n\\['speedup'].setVisible(True)\\n        else:\\n            n\\['speedup'].setVisible(False)\\n    else: #fill\\n        n\\['generate_format'].setVisible(False)\\n        n\\['sample_radius'].setVisible(False)\\n        n\\['threshold'].setVisible(True)\\n        n\\['speedup'].setVisible(True)\\n        \\nif kn == \\\"method\\\":\\n    if n\\['method'].getValue() == 0: #voronoi\\n        if n\\['type'].getValue() == 2: #fill\\n            n\\['speedup'].setVisible(True)\\n        else:\\n            n\\['speedup'].setVisible(False)\\n        n\\['aa'].setVisible(True)\\n        n\\['smoothness'].setVisible(False)\\n    else: #NNI\\n        n\\['aa'].setVisible(False)\\n        n\\['speedup'].setVisible(True)\\n        n\\['smoothness'].setVisible(True)\\n\\n#############\\n##Add Point##\\n#############\\n\\nif kn == \\\"add_point\\\":\\n    count = 0\\n    found = False\\n    i = 1\\n\\n    #Find the earliest available knob\\n    while found == False:\\n        try:\\n            n\\[\\\"pos_\\\"+str(i)]\\n        except NameError:\\n            found = True\\n            count = i\\n        else:\\n            i += 1\\n\\n    divider = nuke.Text_Knob('divider_'+str(count), ' ')\\n    position = nuke.XY_Knob('pos_'+str(count), 'Position '+str(count))\\n    remove = nuke.PyScript_Knob('remove_'+str(count), 'Remove this Point', '')\\n    color = nuke.AColor_Knob('color_'+str(count), 'Color '+str(count))\\n\\n    remove.setFlag(0x00002000) #no new line\\n\\n    n.addKnob(divider)\\n    n.addKnob(position)\\n    n.addKnob(remove)\\n    n.addKnob(color)\\n    \\n    #Set a random color at point creation\\n    randomColor = \\[random.uniform(0,1), random.uniform(0,1), random.uniform(0,1), 0]\\n    color.setValue(randomColor)\\n    \\n################\\n##Remove Point##\\n################\\n\\nif kn\\[0:7] == \\\"remove_\\\":\\n    id = str(kn\\[7:])\\n    n.removeKnob(knobs\\['divider_'+id])\\n    n.removeKnob(knobs\\['pos_'+id])\\n    n.removeKnob(knobs\\['remove_'+id])\\n    n.removeKnob(knobs\\['color_'+id])\\n    \\n####################\\n##Update Pointlist##\\n####################\\n\\nknobs = n.knobs() #knoblist\\n\\nif kn\\[0:7] == \\\"remove_\\\" or kn == \\\"add_point\\\":\\n    points_orig = \\[]\\n    #iterate through all knobs. If a position knob is found, append to pointlist\\n    for knob in knobs:\\n        if knob\\[0:4] == \\\"pos_\\\":\\n            id = int(knob\\[4:])\\n            points_orig.append(id)\\n    \\n    points_orig.sort()\\n    \\n    n\\['count'].setValue('<b>'+str(len(points_orig))+'</b>')\\n    points = ','.join(str(i) for i in points_orig)\\n    n\\['points'].setValue(points)\\n\"\n tile_color 0xffb300ff\n label \"\\[llength \\[split \\[value this.points] ,]] Points\"\n selected true\n addUserKnob {20 User}\n addUserKnob {26 title l \"\" +STARTLINE T \"<font color=#ff8300 size=\\\"7\\\">Voronoi Gradient</font><font color=#ff8300 size=\\\"2\\\"> v2.7</font>\"}\n addUserKnob {26 description l \"\" +STARTLINE T \"<font color=#ff8300 size=\\\"2\\\">by Nikolai Wüstemann</font>\"}\n addUserKnob {26 spacer_00 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 divider_general l \"<b><font color=#ffd228>General</font><b>\"}\n addUserKnob {4 type l Type t \"Generate: using select point colors\\nSample: using select input colors\\nFill: using all input colors\" M {Generate Sample Fill}}\n addUserKnob {17 generate_format l Format}\n generate_format \"1920 1080 0 0 1920 1080 1 HD_1080\"\n addUserKnob {3 sample_radius l \"Sample Radius\" t \"When Type is set to \\\"Sample\\\".\\nBlurs the input image by this amount and samples the pixel at given position.\" +HIDDEN}\n sample_radius 3\n addUserKnob {7 threshold l \"Alpha Threshold\" t \"Alpha needs to be bigger than this to be considered a feature point\" +HIDDEN}\n threshold 0.05\n addUserKnob {14 overscan l Overscan t \"This will extrapolate the gradient beyond the image bounds\" R 0 100}\n addUserKnob {26 spacer_01 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 divider_method l \"<b><font color=#ffd228>Method</font><b>\"}\n addUserKnob {4 method l Output t \"Voronoi Diagram: \\nEvery pixel becomes the color of the feature point that is the closest\\n\\nNNI: \\nSmooth and natural color interpolation between feature points\" M {\"Voronoi Diagram\" \"Natural Neighbor Interpolation\" \"\" \"\"}}\n method \"Natural Neighbor Interpolation\"\n addUserKnob {7 smoothness l Smoothness t \"0 = Voronoi Diagram\\n1 = Perfect NNI\\n>1 = Oversmoothing\"}\n smoothness 1\n addUserKnob {7 aa l Anti-Aliasing t \"Anti-Aliasing Levels. The image ist scaled up by this amount, the calculation is done, and the image is scaled down to original size again.\" +HIDDEN R 1 4}\n aa 2\n addUserKnob {7 speedup l \"Speed Optimization\" t \"Reduces the image scale by the selected amount and scales up afterwards. For smooth gradients this is a great optimization that comes at hardly no cost.\" R 1 10}\n speedup 5\n addUserKnob {41 colorspace l Colorspace t \"Linear: Mathematical way\\nsRGB: More natural falloff\\nL*a*b*: Less grey areas\\nHSV: Interpolate over spectrum\" T Colorspace_Forth.colorspace_out}\n addUserKnob {26 spacer_02 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 divider_points l \"<b><font color=#ffd228>Points</font><b>\"}\n addUserKnob {22 add_point l \"Add Point\" +STARTLINE}\n addUserKnob {26 count l \"  Count:\" -STARTLINE T <b>4</b>}\n addUserKnob {1 points l INVISIBLE +INVISIBLE}\n points 1,2,3,4\n addUserKnob {26 divider_1 l \" \"}\n addUserKnob {12 pos_1 l \"Position 1\"}\n pos_1 {1256 472}\n addUserKnob {22 remove_1 l \"Remove this Point\" -STARTLINE}\n addUserKnob {19 color_1 l \"Color 1\"}\n color_1 {1 0 0 0}\n addUserKnob {6 color_1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 divider_2 l \" \"}\n addUserKnob {12 pos_2 l \"Position 2\"}\n pos_2 {492 836}\n addUserKnob {22 remove_2 l \"Remove this Point\" -STARTLINE}\n addUserKnob {19 color_2 l \"Color 2\"}\n color_2 {0 1 0 0}\n addUserKnob {6 color_2_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 divider_3 l \" \"}\n addUserKnob {12 pos_3 l \"Position 3\"}\n pos_3 {580 272}\n addUserKnob {22 remove_3 l \"Remove this Point\" -STARTLINE}\n addUserKnob {19 color_3 l \"Color 3\"}\n color_3 {0 0 1 0}\n addUserKnob {6 color_3_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 divider_4 l \" \"}\n addUserKnob {12 pos_4 l \"Position 4\"}\n pos_4 {1504 876}\n addUserKnob {22 remove_4 l \"Remove this Point\" -STARTLINE}\n addUserKnob {19 color_4 l \"Color 4\"}\n color_4 {1 1 0 0}\n addUserKnob {6 color_4_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff8e00ff\n  label NNI\n  note_font_size 42\n  xpos -2\n  ypos 998\n  bdwidth 161\n  bdheight 168\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 25\n  ypos -488\n }\n AdjBBox {\n  numpixels {{overscan(0)} {overscan(1)}}\n  name AdjBBox\n  xpos 25\n  ypos -393\n }\n set Cf546860 [stack 0]\n Dot {\n  name Dot4\n  xpos 59\n  ypos -322\n }\nset Nc445da0 [stack 0]\n Dot {\n  name Dot8\n  xpos 345\n  ypos -322\n }\n Dot {\n  name Dot31\n  xpos 345\n  ypos 584\n }\nset Nc3a5700 [stack 0]\n Dot {\n  name Dot12\n  xpos 345\n  ypos 1654\n }\npush $Nc445da0\n Reformat {\n  type scale\n  scale {{1/speedup}}\n  pbb true\n  name Reformat_Downscale\n  xpos 150\n  ypos -243\n }\n set Cb6c53f0 [stack 0]\n Reformat {\n  type scale\n  scale 0.5\n  pbb true\n  name Reformat_FillModeSpeedboost\n  xpos 150\n  ypos -182\n }\n Dot {\n  name Dot18\n  label Fill\n  note_font_color 0xff\n  xpos 184\n  ypos -94\n }\npush $Nc445da0\n Blur {\n  size {{\"\\[value this.parent.sample_radius]-1\"}}\n  name Blur_SampleRadius\n  xpos 25\n  ypos -247\n }\n Dot {\n  name Dot2\n  label Sample\n  xpos 59\n  ypos -100\n }\n Constant {\n  inputs 0\n  channels rgb\n  format {{{this.parent.generate_format}}}\n  name Constant_Base\n  xpos -111\n  ypos -492\n }\nclone $Cf546860 {\n  xpos -111\n  ypos -393\n  selected false\n }\n Dot {\n  name Dot19\n  label Generate\n  xpos -77\n  ypos -99\n }\n Switch {\n  inputs 3\n  which {{type}}\n  name Switch_Mode\n  label \"\\[value this.parent.type]\"\n  xpos 25\n  ypos -22\n }\n set Cb6bbff0 [stack 0]\n Reformat {\n  type scale\n  scale {{aa}}\n  pbb true\n  name Reformat_AAUpscale\n  xpos 25\n  ypos 44\n  disable {{method==0?0:1}}\n }\nset Nb58c620 [stack 0]\n Dot {\n  name Dot30\n  xpos 163\n  ypos 106\n }\nset Nefa7dd0 [stack 0]\n Expression {\n  expr3 a<0.9999?1:0\n  name Expression_MakeBinary1\n  xpos 78\n  ypos 157\n }\n Dot {\n  name Dot29\n  xpos 112\n  ypos 445\n }\npush $Nefa7dd0\n Expression {\n  temp_name0 threshold\n  temp_expr0 \"\\[value this.parent.threshold]\"\n  expr0 a<threshold?0:(a==0?0:r/a)\n  expr1 a<threshold?0:(a==0?0:g/a)\n  expr2 a<threshold?0:(a==0?0:b/a)\n  expr3 a<threshold?0:(a==0?0:a/a)\n  name Expression_MakeBinary\n  xpos 186\n  ypos 158\n }\nset Nb1600e0 [stack 0]\n Dilate {\n  size -1\n  name Dilate_GetEdge\n  xpos 385\n  ypos 154\n }\npush $Nb1600e0\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge_GetEdge\n  xpos 385\n  ypos 223\n }\npush $Nb1600e0\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"NNIKernel\\\" iterate pixelWise 4638993104c78e1e3e815b53970f28315848d08f3f55918cb092e5beedc9e034 3 \\\"src\\\" Read Random \\\"points\\\" Read Random \\\"dst\\\" Write Point 1 \\\"smoothness\\\" Float 1 AAAAAA==\"\n  kernelSource \"float distance(int2 q, float2 p)\\{\\n  return sqrt(pow(q.x - p.x, 2) + pow(q.y - p.y, 2));\\n\\}\\n\\nkernel NNIKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eRead, eAccessRandom, eEdgeClamped> points;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float smoothness;\\n\\n  void process(int2 pos)\\{\\n    int x,y,dx,dy;\\n    float4 rgba = 0;\\n    float dist = 99999;\\n    if(src(pos.x, pos.y, 3) == 0)\\{\\n      for(int i = src.bounds.x1; i < src.bounds.x2; i+=1)\\{\\n        for(int j = src.bounds.y1; j < src.bounds.y2; j+=1)\\{\\n          if(points(i,j,3) != 0)\\{\\n            if(distance(pos, float2(i,j)) <= dist)\\{\\n              dist = distance(pos, float2(i,j));\\n              rgba.x = src(i,j,0);\\n              rgba.y = src(i,j,1);\\n              rgba.z = src(i,j,2);\\n              rgba.w = dist*smoothness;\\n            \\}\\n          \\}\\n        \\}\\n      \\}\\n    \\}\\n    else\\{\\n      rgba = src(pos.x, pos.y);\\n    \\}\\n    dst() = rgba;\\n  \\}\\n\\};\"\n  rebuild \"\"\n  NNIKernel_smoothness {{smoothness}}\n  rebuild_finalise \"\"\n  name BlinkScript_Filler\n  xpos 186\n  ypos 303\n  disable {{\"type == 2 ? 0 : 1\"}}\n }\nset Nf34bf90 [stack 0]\n ShuffleCopy {\n  inputs 2\n  alpha alpha2\n  black alpha\n  out2 mask\n  name ShuffleCopy_SetMask\n  xpos 186\n  ypos 442\n }\n Dot {\n  name Dot20\n  label Fill\n  note_font_color 0xff\n  xpos 220\n  ypos 645\n }\n Crop {\n  inputs 0\n  box {0 0 2 {\"\\[llength \\[split \\[value this.parent.points] ,]]\"}}\n  reformat true\n  crop false\n  name Crop_Points\n  xpos -394\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset Na63fed0 [stack 0]\n Expression {\n  expr0 0\n  expr1 0\n  expr2 0\n  expr3 x==0?0:1\n  name Expression_MaskRightColumn\n  xpos -248\n  ypos -2\n }\n Dot {\n  name Dot27\n  xpos -214\n  ypos 101\n }\npush $Na63fed0\n Expression {\n  expr0 \"\\[\\nset points \\[split \\[value this.parent.points] ,]\\nset string \\\"\\\"\\nset y 0\\nforeach pos \\$points \\{\\n  append string \\\"y==\\\" \\$y \\\"?\\\" \\[value this.parent.pos_\\$pos.x] \\\":\\\"\\n  incr y\\n\\}\\nappend string \\\"0\\\"\\nreturn \\$string\\n]\"\n  expr1 \"\\[\\nset points \\[split \\[value this.parent.points] ,]\\nset string \\\"\\\"\\nset y 0\\nforeach pos \\$points \\{\\n  append string \\\"y==\\\" \\$y \\\"?\\\" \\[value this.parent.pos_\\$pos.y] \\\":\\\"\\n  incr y\\n\\}\\nappend string \\\"0\\\"\\nreturn \\$string\\n]\"\n  expr2 0\n  name Expression_SetPositions\n  xpos -394\n  ypos -4\n }\n Expression {\n  inputs 1+1\n  expr0 \"\\[\\nset points \\[split \\[value this.parent.points] ,]\\nset string \\\"\\\"\\nset y 0\\nforeach col \\$points \\{\\n  append string \\\"y==\\\" \\$y \\\"?\\\" \\[value this.parent.color_\\$col.r] \\\":\\\"\\n  incr y\\n\\}\\nappend string \\\"0\\\"\\nreturn \\$string\\n]\"\n  expr1 \"\\[\\nset points \\[split \\[value this.parent.points] ,]\\nset string \\\"\\\"\\nset y 0\\nforeach col \\$points \\{\\n  append string \\\"y==\\\" \\$y \\\"?\\\" \\[value this.parent.color_\\$col.g] \\\":\\\"\\n  incr y\\n\\}\\nappend string \\\"0\\\"\\nreturn \\$string\\n]\"\n  expr2 \"\\[\\nset points \\[split \\[value this.parent.points] ,]\\nset string \\\"\\\"\\nset y 0\\nforeach col \\$points \\{\\n  append string \\\"y==\\\" \\$y \\\"?\\\" \\[value this.parent.color_\\$col.b] \\\":\\\"\\n  incr y\\n\\}\\nappend string \\\"0\\\"\\nreturn \\$string\\n]\"\n  name Expression_SetColors\n  xpos -394\n  ypos 98\n }\n PostageStamp {\n  name PostageStamp_SamplePoints\n  xpos -394\n  ypos 204\n  postage_stamp true\n }\n Dot {\n  name Dot9\n  xpos -224\n  ypos 231\n }\npush $Nb58c620\n Dot {\n  name Dot7\n  xpos -80\n  ypos 134\n }\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"VoronoiKernel\\\" iterate pixelWise d1e0d556f3d1495cfe74544b59bfecc564c77ac6819187c975df8c8c3cc4cc5a 3 \\\"src\\\" Read Random \\\"points\\\" Read Random \\\"dst\\\" Write Point 3 \\\"smoothness\\\" Float 1 AAAAAA== \\\"sample\\\" Bool 1 AA== \\\"scale\\\" Float 1 AAAAAA==\"\n  kernelSource \"float distance(int2 q, float2 p)\\{\\n  return sqrt(pow(q.x - p.x, 2) + pow(q.y - p.y, 2));\\n\\}\\n\\nkernel VoronoiKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eRead, eAccessRandom, eEdgeClamped> points;\\n  Image<eWrite> dst;\\n\\t\\n  param:\\n    float smoothness;\\n    bool sample;\\n    float scale;\\n\\n  void process(int2 pos)\\{\\n    int shortest = 0;\\n    float dist_temp = 99999;\\n    float2 pnt;\\n    float4 color = 0;\\n    int x, y;\\n\\t\\t\\n    for (int p = points.bounds.y1; p < points.bounds.y2; p+=1)\\{\\n      pnt.x = points(0, p, 0)*scale;\\n      pnt.y = points(0, p, 1)*scale;\\n      if(distance(pos, pnt)<dist_temp)\\{  \\n        dist_temp = min(distance(pos, pnt), dist_temp);\\n        x = pnt.x;\\n        y = pnt.y;\\n        color = points(1, p);\\n      \\}\\n    \\}\\n    if(sample == true)\\{\\n      color = src(x, y);\\n    \\}\\n    dst(0) = color.x;\\n    dst(1) = color.y;\\n    dst(2) = color.z;\\n    dst(3) = dist_temp*smoothness;\\n  \\}\\n\\};\"\n  rebuild \"\"\n  VoronoiKernel_smoothness {{smoothness}}\n  VoronoiKernel_sample {{type==1?1:0}}\n  VoronoiKernel_scale {{\"method == 0 ? aa : 1\"}}\n  rebuild_finalise \"\"\n  name BlinkScript_VoronoiDiagram\n  xpos -114\n  ypos 307\n  disable {{\"type == 2 ? 1 : 0\"}}\n }\nset Nf360f00 [stack 0]\n Multiply {\n  channels alpha\n  value {{1/speedup}}\n  name Multiply_ScaleDistances\n  xpos -114\n  ypos 381\n }\n Shuffle {\n  black white\n  out2 mask\n  name Shuffle_SetMask\n  xpos -114\n  ypos 449\n }\nclone $Cb6c53f0 {\n  xpos -114\n  ypos 519\n  selected false\n }\nset Nf5342b0 [stack 0]\n Dot {\n  name Dot1\n  xpos 72\n  ypos 522\n }\n Dot {\n  name Dot17\n  label Sample\n  xpos 72\n  ypos 646\n }\npush $Nf5342b0\n Dot {\n  name Dot3\n  label Generate\n  xpos -80\n  ypos 650\n }\nclone $Cb6bbff0 {\n  inputs 3\n  xpos 38\n  ypos 758\n  selected false\n }\nset Nb193000 [stack 0]\n Shuffle {\n  in mask\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle_GetMask\n  xpos 183\n  ypos 830\n }\npush $Nb193000\n Colorspace {\n  name Colorspace_Forth\n  knobChanged \"id = nuke.thisNode().knob(\\\"colorspace_out\\\").getValue()\\nnuke.toNode(\\\"Colorspace_Back\\\").knob(\\\"colorspace_in\\\").setValue(int(id))\"\n  xpos 38\n  ypos 827\n }\n PostageStamp {\n  name PostageStamp_VoronoiDiagram\n  xpos 38\n  ypos 896\n  postage_stamp true\n }\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"NNIKernel\\\" iterate pixelWise 6686a101b1a20245c97ca97df6de6aa9de029344db904f11b0103cb70408d85c 3 \\\"src\\\" Read Random \\\"mask\\\" Read Random \\\"dst\\\" Write Point 0\"\n  kernelSource \"float distance(int2 q, float2 p)\\{\\n  return sqrt(pow(q.x - p.x, 2) + pow(q.y - p.y, 2));\\n\\}\\n\\nkernel NNIKernel : public ImageComputationKernel<ePixelWise>\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src;\\n  Image<eRead, eAccessRandom, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n\\n  void process(int2 pos)\\{\\n    int x,y,dx,dy;\\n    float4 rgba = 0;\\n    int c = 0;\\n    bool found = true;\\n    float dist;\\n    if(mask(pos.x, pos.y, 3) > 0.9999)\\{\\n      for(int i = src.bounds.x1; i < src.bounds.x2; i+=1)\\{\\n        for(int j = src.bounds.y1; j < src.bounds.y2; j+=1)\\{\\n          if(distance(pos, float2(i,j)) <= src(i, j, 3))\\{\\n            rgba += src(i, j);\\n            c += 1;\\n          \\}\\n        \\}\\n      \\}\\n      dst() = rgba/c;\\n    \\}\\n    else\\{\\n      dst() = src(pos.x, pos.y);\\n    \\}\\n  \\}\\n\\};\"\n  rebuild \"\"\n  rebuild_finalise \"\"\n  name BlinkScript_NaturalNeighborInterpolation\n  xpos 38\n  ypos 1074\n  disable {{method!=1?1:0}}\n  addUserKnob {20 about l About}\n  addUserKnob {26 description l Description T \"Natural Neighbor Interpolation\\n\\nThe algorithm scales quadratically with image scale, \\nso we try to keep the input as small as possible and scale up the result instead.\\n\\nThe node is disabled, when the Voronoi Diagram is shown. \\nThis prevents Nuke from executing the Natural Neighbor Interpolation \\nalgorithm in the background and crashing.\\n \"}\n }\n PostageStamp {\n  name PostageStamp_NNI\n  xpos 38\n  ypos 1213\n  postage_stamp true\n }\n Colorspace {\n  name Colorspace_Back\n  xpos 38\n  ypos 1375\n }\nset Nf52bd60 [stack 0]\n Reformat {\n  type \"to box\"\n  box_width {{this.parent.input.width}}\n  box_height {{this.parent.input.height}}\n  box_fixed true\n  box_pixel_aspect {{this.parent.input.pixel_aspect}}\n  resize distort\n  filter notch\n  pbb true\n  name Reformat_OriginalSize\n  xpos 115\n  ypos 1481\n }\n set Cf5c5e70 [stack 0]\nset Nf5c5e70 [stack 0]\n Dot {\n  name Dot28\n  xpos 220\n  ypos 1587\n }\n Merge2 {\n  inputs 2\n  name Merge_RestoreOriginal\n  xpos 186\n  ypos 1651\n }\n set Cb180650 [stack 0]\n Dot {\n  name Dot6\n  label Fill\n  note_font_color 0xff\n  xpos 220\n  ypos 1725\n }\npush $Nf5c5e70\n Dot {\n  name Dot14\n  xpos 72\n  ypos 1583\n }\n Dot {\n  name Dot10\n  label Sample\n  xpos 72\n  ypos 1726\n }\npush $Nf52bd60\n Reformat {\n  type \"to box\"\n  box_width {{Constant_Base.width}}\n  box_height {{Constant_Base.height}}\n  box_fixed true\n  scale {{speedup}}\n  resize distort\n  filter notch\n  pbb true\n  name Reformat_ConstantSize\n  xpos -41\n  ypos 1481\n }\n set Cf63e3a0 [stack 0]\n Dot {\n  name Dot15\n  xpos -80\n  ypos 1595\n }\n Dot {\n  name Dot13\n  label Generate\n  xpos -80\n  ypos 1730\n }\nclone $Cb6bbff0 {\n  inputs 3\n  xpos 38\n  ypos 1884\n  selected false\n }\npush $Nc3a5700\npush $Nf34bf90\n Dot {\n  name Dot26\n  xpos 290\n  ypos 356\n }\n Dot {\n  name Dot11\n  xpos 704\n  ypos 356\n }\nclone $Cf5c5e70 {\n  xpos 670\n  ypos 522\n  selected false\n }\nclone $Cb180650 {\n  inputs 2\n  xpos 670\n  ypos 581\n  selected false\n }\n Dot {\n  name Dot21\n  label Fill\n  note_font_color 0xff\n  xpos 704\n  ypos 640\n }\npush $Nf360f00\n Dot {\n  name Dot25\n  xpos 43\n  ypos 392\n }\n Dot {\n  name Dot24\n  xpos 429\n  ypos 392\n }\nset Nf67b260 [stack 0]\n Dot {\n  name Dot5\n  xpos 566\n  ypos 392\n }\nclone $Cf5c5e70 {\n  xpos 532\n  ypos 521\n  selected false\n }\n Dot {\n  name Dot22\n  label Sample\n  xpos 566\n  ypos 639\n }\npush $Nf67b260\nclone $Cf63e3a0 {\n  xpos 395\n  ypos 519\n  selected false\n }\n Dot {\n  name Dot23\n  label Generate\n  xpos 429\n  ypos 645\n }\nclone $Cb6bbff0 {\n  inputs 3\n  xpos 532\n  ypos 755\n  selected false\n }\n Dot {\n  name Dot16\n  xpos 566\n  ypos 1788\n }\n Switch {\n  inputs 2\n  which {{method}}\n  name Switch_Method\n  label \"\\[value this.parent.method]\"\n  xpos 38\n  ypos 2047\n }\n Output {\n  name Output1\n  xpos 38\n  ypos 2122\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"    Create an 2D array of colors and positions for all sample points    \\n    This is stored as an image and fed to the core algorithms    \\n\"\n  xpos -824\n  ypos 103\n }\n StickyNote {\n  inputs 0\n  name StickyNote6\n  label \"  Stores the voronoi diagram and the distance to the next input point in each pixel. This will be used by the NNI  \\n\"\n  xpos -885\n  ypos -324\n }\n StickyNote {\n  inputs 0\n  name StickyNote12\n  label \" Upscaling the interpolated result with the Notch filter \\npreserves the smooth look and feel we want to achieve.\\n\"\n  xpos -417\n  ypos 1475\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"Generating the Natural Neighbor Interpolation, \\n  based on the Voronoi Diagram (rgb) and the Voronoi Distances (alpha)  \"\n  xpos -473\n  ypos 1074\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_WaterLens.gizmo",
    "content": "Group {\n name WaterLens\n inputs 3\n tile_color 0xffccff\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 1\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 2\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27c12c40 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27c12c40\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27c27b60 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27c2e6e0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27c35120 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27c35120\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27c2e6e0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27c729d0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27c74e90 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27c74e90\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27c729d0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N278b2140 [stack 0]\npush $N278b2140\npush $N27c27b60\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_WaveletBlur.gizmo",
    "content": "Group {\n name WaveletBlur\n tile_color 0x1f00ffff\n selected true\n addUserKnob {20 User l General}\n addUserKnob {26 info_header l \"\" +STARTLINE T \"Wavelet Blur \\nby Mads Hagbarth Lund 2015 - www.hagbarth.net\"}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T BlinkScript3.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {41 range l \"Frequency Range\" T Controller.range}\n addUserKnob {26 \"\"}\n addUserKnob {4 Algorithm M {\"Edge Preserving\" Gaussian}}\n addUserKnob {7 BlurSize l \"Blur Size\"}\n BlurSize 0.84\n addUserKnob {7 EdgeThreshold l \"Edge Threshold\"}\n EdgeThreshold 0.08\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xf3f3f3ff\n  xpos 599\n  ypos 601\n  bdwidth 122\n  bdheight 147\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0xf3f3f3ff\n  xpos 472\n  ypos 602\n  bdwidth 125\n  bdheight 388\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0xf3f3f3ff\n  xpos 358\n  ypos 741\n  bdwidth 125\n  bdheight 388\n }\n Input {\n  inputs 0\n  name InputMask\n  xpos 583\n  ypos 1317\n  number 1\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 427\n  ypos 340\n }\n Dot {\n  name Dot3\n  xpos 461\n  ypos 438\n }\nset N276573a0 [stack 0]\n Grade {\n  gamma 5\n  black_clamp false\n  name Grade7\n  xpos 427\n  ypos 517\n }\n Dot {\n  name Dot15\n  xpos 461\n  ypos 595\n }\nset N2753f720 [stack 0]\n Dot {\n  name Dot20\n  xpos 461\n  ypos 734\n }\nset N27543a40 [stack 0]\n Dot {\n  name Dot21\n  xpos 351\n  ypos 734\n }\npush $N27543a40\n Blur {\n  size {{parent.Controller.range.A*100}}\n  name Blur5\n  xpos 427\n  ypos 823\n }\n set C2754c110 [stack 0]\nset N2754c110 [stack 0]\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge9\n  xpos 317\n  ypos 829\n }\n Dot {\n  name Dot16\n  xpos 351\n  ypos 1125\n }\npush $N2753f720\n Dot {\n  name Dot19\n  xpos 593\n  ypos 595\n }\nset N23ab64e0 [stack 0]\n Dot {\n  name Dot23\n  xpos 718\n  ypos 595\n }\n Blur {\n  size {{parent.BlurSize*50}}\n  name Blur7\n  xpos 684\n  ypos 661\n }\n Dot {\n  name Dot27\n  xpos 718\n  ypos 743\n }\npush $N23ab64e0\n BlinkScript {\n  recompileCount 3\n  ProgramGroup 1\n  KernelDescription \"2 \\\"SaturationKernel\\\" iterate pixelWise 395e3a3b2514398fbe769be874921fe9db9395d0bc5cc92a7bd3c6ab150f5430 2 \\\"src\\\" Read Random \\\"dst\\\" Write Point 3 \\\"FilterSize\\\" Int 1 DwAAAA== \\\"PositionalSigma\\\" Float 1 AAAgQQ== \\\"ColorSigma\\\" Float 1 zczMPQ== 3 \\\"MSIZE\\\" 1 1 \\\"SIGMA\\\" 1 1 \\\"BSIGMA\\\" 1 1 1 \\\"coefficients\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"//Port of mrharicot's bilateral implamentation.\\n\\nkernel SaturationKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    int MSIZE; // This parameter is made available to the user.\\n    float SIGMA;\\n    float BSIGMA;\\n\\n  local:\\n    float3 coefficients;  // This local variable is not exposed to the user.\\n\\n  // In define(), parameters can be given labels and default values.\\n  void define() \\{\\n    defineParam(MSIZE, \\\"FilterSize\\\", 15);\\n    defineParam(SIGMA, \\\"PositionalSigma\\\", 10.0f);\\n    defineParam(BSIGMA, \\\"ColorSigma\\\", 0.1f);    \\n  \\}\\n\\nfloat normpdf(float x, float sigma)\\n\\{\\n  return 0.39894f*exp(-0.5f*x*x/(sigma*sigma))/sigma;\\n\\}\\n\\nfloat normpdf3(float3 v, float sigma)\\n\\{\\n  return 0.39894f*exp(-0.5f*dot(v,v)/(sigma*sigma))/sigma;\\n\\}\\n\\n  void process(int2 pos) \\{\\n  float4 ss = src(pos.x,pos.y);\\n  float3 c = float3(ss.x,ss.y,ss.z);\\n   \\n\\n    const int kSize = (MSIZE-1)/2;\\n\\n    float kernelB\\[100];\\n    float3 final_colour = float3(0.0);\\n    \\n\\n    float Z = 0.0;\\n    for (int j = 0; j <= kSize; ++j)\\n    \\{\\n      kernelB\\[kSize+j] = kernelB\\[kSize-j] = normpdf(float(j), SIGMA);\\n    \\}\\n    \\n    \\n    float3 cc;\\n    float factor;\\n    float bZ = 1.0f/normpdf(0.0f, BSIGMA);\\n    for (int i=-kSize; i <= kSize; ++i)\\n    \\{\\n      for (int j=-kSize; j <= kSize; ++j)\\n      \\{\\n        ss = src(pos.x+i,pos.y+j);\\n        cc = float3(ss.x,ss.y,ss.z);\\n        factor = normpdf3(cc-c, BSIGMA)*bZ*kernelB\\[kSize+j]*kernelB\\[kSize+i];\\n        Z += factor;\\n        final_colour += factor*cc;\\n\\n      \\}\\n    \\}    \\n    final_colour = final_colour/Z;\\n    dst() = float4(final_colour.x,final_colour.y,final_colour.z, 1.0f);\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  SaturationKernel_FilterSize {{parent.BlurSize*50}}\n  SaturationKernel_ColorSigma {{(parent.EdgeThreshold/2)+0.00000000001}}\n  rebuild_finalise \"\"\n  name BlinkScript3\n  selected true\n  xpos 559\n  ypos 647\n }\n Switch {\n  inputs 2\n  which {{parent.Algorithm}}\n  name Switch2\n  xpos 559\n  ypos 739\n }\nclone $C2754c110 {\n  xpos 559\n  ypos 823\n  selected false\n }\n Dot {\n  name Dot24\n  xpos 593\n  ypos 909\n }\nset N2706ae00 [stack 0]\n Dot {\n  name Dot25\n  xpos 733\n  ypos 909\n }\npush $N2706ae00\n Blur {\n  size {{(parent.Controller.range.B*100)-(parent.Controller.range.A*100)}}\n  name Blur6\n  xpos 559\n  ypos 975\n }\n set C27076150 [stack 0]\n Merge2 {\n  inputs 2\n  operation minus\n  name Merge14\n  xpos 699\n  ypos 981\n }\n Dot {\n  name Dot22\n  xpos 733\n  ypos 1053\n }\npush $N2754c110\n Dot {\n  name Dot17\n  xpos 461\n  ypos 907\n }\nclone $C27076150 {\n  xpos 427\n  ypos 973\n  selected false\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge12\n  xpos 427\n  ypos 1049\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge13\n  xpos 427\n  ypos 1121\n }\n Grade {\n  gamma {{1/parent.Grade7.gamma}}\n  black_clamp false\n  name Grade8\n  xpos 427\n  ypos 1193\n }\npush $N276573a0\n Dot {\n  name Dot2\n  xpos 120\n  ypos 438\n }\n Dot {\n  name Dot1\n  xpos 120\n  ypos 1321\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge1\n  xpos 427\n  ypos 1317\n }\n Output {\n  name Output1\n  xpos 427\n  ypos 1427\n }\n Keyer {\n  inputs 0\n  operation \"luminance key\"\n  range {0.03182369132 0.8689237646 1 1}\n  name Controller\n  xpos 183\n  ypos 819\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_WhiteBalance.gizmo",
    "content": "Group {\n name WhiteBalance\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'reverse':\\n    if n.knob('reverse').value() == True:\\n        n.knob('reverseText').setValue('Reversed')\\n    else:\\n        n.knob('reverseText').setValue('')\\n\"\n tile_color 0x6493e9ff\n label \"\\[value reverseText]\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 WhiteBalance}\n addUserKnob {26 directions l Directions: T \"Sample white area in image\"}\n addUserKnob {41 channels T Grade8.channels}\n addUserKnob {41 whitepoint T Grade8.whitepoint}\n addUserKnob {6 reverse +STARTLINE}\n addUserKnob {1 reverseText l Reversed +INVISIBLE}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Grade8.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Grade8.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Grade8.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Grade8.fringe}\n addUserKnob {41 unpremult l \"(un)premult by\" T Grade8.unpremult}\n addUserKnob {41 invert_unpremult l invert -STARTLINE T Grade8.invert_unpremult}\n addUserKnob {41 mix T Grade8.mix}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -205\n  ypos -441\n  number 1\n }\n Input {\n  inputs 0\n  name Input\n  xpos -341\n  ypos -519\n }\n Grade {\n  inputs 1+1\n  whitepoint {1 1 1 0}\n  white {{(whitepoint.r*0.2126)+(whitepoint.g*0.7152)+(whitepoint.b*0.0722)}}\n  reverse {{parent.reverse}}\n  black_clamp false\n  invert_mask true\n  name Grade8\n  label WB\n  xpos -341\n  ypos -445\n }\n Output {\n  name Output1\n  xpos -341\n  ypos -366\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_WhiteSoftClip.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name WhiteSoftClip\n tile_color 0xffffffff\n label \"(Max: \\[value maxValue])\"\n note_font \"Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n note_font_color 0xff\n selected true\n addUserKnob {20 WhiteSoftClip}\n addUserKnob {7 maxValue l \"Max Value\" R 0 25}\n maxValue 16\n addUserKnob {26 \"\"}\n addUserKnob {41 output2 l operation T BlacksMatch.output2}\n addUserKnob {41 soft l FallOff T BlacksMatch.soft}\n addUserKnob {41 aboveBase l \"Color Mult\" T BlacksMatch.aboveBase}\n addUserKnob {26 \"\"}\n addUserKnob {41 mode l \"luminance math\" T Saturation30.mode}\n addUserKnob {41 mixValue l \"Restore Color\" T Dissolve18.which}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeMix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeMix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeMix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeMix.fringe}\n addUserKnob {41 mix T MergeMix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description t \"Soft clips white point so that it does not exceed the maximum value.  \\n\\nAbility to control the soft falloff of whitepoint\\n\\nShift between preserving luminance and preserving hue\\n\\n\" T WhiteSoftClip}\n addUserKnob {26 ver l Version: T v05}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -213\n  ypos 870\n  number 1\n }\n Dot {\n  name Dot57\n  xpos -179\n  ypos 983\n }\n Input {\n  inputs 0\n  name Input\n  xpos -605\n  ypos -291\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -571\n  ypos -172\n }\nset Nc691f020 [stack 0]\n Dot {\n  name Dot54\n  note_font_size 41\n  xpos -571\n  ypos -52\n }\nset Nc6922e90 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -755\n  ypos -52\n }\n Expression {\n  expr0 r<0?r:0\n  expr1 g<0?g:0\n  expr2 b<0?b:0\n  expr3 min(r,g,b)<0?1:0\n  name Expression4\n  xpos -789\n  ypos 91\n }\n Premult {\n  name Premult1\n  xpos -789\n  ypos 115\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -755\n  ypos 867\n }\npush $Nc6922e90\n Expression {\n  expr0 r<0?0:r\n  expr1 g<0?0:g\n  expr2 b<0?0:b\n  name Expression3\n  xpos -605\n  ypos 93\n }\n Add {\n  channels rgb\n  value 0.0001\n  name Add1\n  xpos -605\n  ypos 117\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -571\n  ypos 178\n }\nset Nc683a0b0 [stack 0]\n Dot {\n  name Dot52\n  note_font_size 41\n  xpos -149\n  ypos 178\n }\nset Nc683df40 [stack 0]\n Dot {\n  name Dot53\n  note_font_size 41\n  xpos 9\n  ypos 178\n }\npush $Nc683df40\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation30\n  xpos -183\n  ypos 233\n }\nset Nc6845ce0 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge553\n  xpos -25\n  ypos 233\n }\npush $Nc6845ce0\n Expression {\n  expr0 1/r\n  expr1 1/g\n  expr2 1/b\n  name Expression8\n  xpos -183\n  ypos 360\n }\n Group {\n  name BlacksMatch2\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"inputChange\\\":\\n    nsd = nuke.toNode(\\\"SwitchDefault\\\")\\n    n\\[\\\"default_black\\\"].setEnabled(nsd\\[\\\"which\\\"].getValue()==1)\"\n  tile_color 0xff\n  label \"<font color=lightgray><small>Fall Off: \\[value soft]\\nColor Mult: \\[value aboveBase]\"\n  note_font \"Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n  xpos -183\n  ypos 424\n  addUserKnob {20 BlacksMatch}\n  addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {4 output1 l \"         output\" M {Final \"Preview Channel Key\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n  addUserKnob {41 output2 l operation T Settings.operation}\n  addUserKnob {41 unpremultiplication l \"Unpremult before operation?\" T Settings.unpremult}\n  addUserKnob {26 \"\"}\n  addUserKnob {18 default_black l \"default black\"}\n  default_black {{1/maxValue}}\n  addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 soft l FallOff T Settings.soft}\n  addUserKnob {41 aboveBase l \"Black Color Mult\" T Settings.aboveBase}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Plug an image /constant you wish to be your blackpoint into BlackColor input.\\n\\nControl the falloff of Toe of the blackpoint and\\nchoose between a screen, plus, and hypot\\noperation\" T BlacksMatch}\n  addUserKnob {1 ver l Version:}\n  ver v08\n  addUserKnob {1 operation l INVISIBLE +INVISIBLE}\n  operation \"\\[value output2]</font>)(<font color=yellow><small>\\[value ver]</font>\"\n }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   tile_color 0xff\n   label green\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 177\n   ypos 466\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   tile_color 0xff\n   label red\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 188\n   ypos 350\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   tile_color 0xff\n   label blue\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 186\n   ypos 570\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   tile_color 0xff\n   label \"min will be \\nblack color\"\n   note_font_size 31\n   note_font_color 0xffffffff\n   xpos 143\n   ypos 704\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos 322\n   ypos -550\n  }\n  Dot {\n   name Dot17\n   xpos 356\n   ypos -418\n  }\nset Nc68896f0 [stack 0]\n  AddChannels {\n   channels rgba\n   color 1\n   name AddChannels1\n   xpos 322\n   ypos -365\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 356\n   ypos -288\n  }\nset Nc6894ab0 [stack 0]\n  Grade {\n   white 0\n   multiply 0\n   add {{parent.default_black} {parent.default_black} {parent.default_black} {parent.default_black}}\n   black_clamp false\n   name Grade1\n   label color\n   xpos 905\n   ypos -295\n  }\n  Input {\n   inputs 0\n   name InputBlackColor\n   xpos 1138\n   ypos -569\n   number 1\n  }\n  Switch {\n   inputs 2\n   which {{\"!\\[exists parent.input1]\"}}\n   name SwitchDefault\n   xpos 1138\n   ypos -291\n  }\n  Dot {\n   name Dot26\n   label \"Black Color\"\n   note_font_size 41\n   xpos 1172\n   ypos -212\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 1172\n   ypos -124\n  }\nset Nc68b3c40 [stack 0]\n  Multiply {\n   channels rgb\n   value {{parent.Settings.aboveBase}}\n   name Multiply1\n   label \"mult black color\"\n   xpos 1138\n   ypos -29\n  }\n  Multiply {\n   channels rgb\n   value 4\n   name Multiply2\n   label \"boosted for hypot\"\n   xpos 1138\n   ypos 46\n   disable {{\"Settings.operation == 3 ? 0 : 1\"}}\n  }\npush $Nc6894ab0\n  Unpremult {\n   name Unpremult1\n   xpos 322\n   ypos -17\n   disable {{!parent.Settings.unpremult i}}\n  }\n  Dot {\n   name Dot18\n   xpos 356\n   ypos 145\n  }\nset Nc6946d00 [stack 0]\n  MergeExpression {\n   inputs 2\n   expr0 Br/Ar\n   expr1 Bg/Ag\n   expr2 Bb/Ab\n   name MergeDivide\n   xpos 1138\n   ypos 142\n  }\n  Invert {\n   channels rgb\n   name Invert1\n   xpos 1138\n   ypos 209\n  }\n  Gamma {\n   channels rgb\n   value {{((1/Settings.aboveBase)*Settings.soft)+(Settings.soft)}}\n   name Gamma1\n   xpos 1138\n   ypos 264\n  }\n  Dot {\n   name Dot19\n   xpos 1172\n   ypos 364\n  }\nset Nc62ba4f0 [stack 0]\n  Dot {\n   name Dot20\n   xpos 1172\n   ypos 478\n  }\nset Nc68d24b0 [stack 0]\n  Dot {\n   name Dot21\n   xpos 1172\n   ypos 586\n  }\nset Nc68d6210 [stack 0]\n  Dot {\n   name Dot1\n   xpos 1172\n   ypos 1150\n  }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 864\n   ypos 836\n   number 2\n  }\n  Dot {\n   name Dot29\n   xpos 898\n   ypos 1015\n  }\npush $Nc68b3c40\n  Dot {\n   name Dot23\n   xpos 706\n   ypos -124\n  }\n  Dot {\n   name Dot6\n   note_font_size 41\n   xpos 706\n   ypos 293\n  }\nset Nc68e9be0 [stack 0]\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 706\n   ypos 404\n  }\nset Nc68eda90 [stack 0]\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos 706\n   ypos 523\n  }\nset Nc68f1940 [stack 0]\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos 706\n   ypos 731\n  }\npush $Nc68d6210\npush $Nc68f1940\npush $Nc68d24b0\npush $Nc68eda90\npush $Nc62ba4f0\npush $Nc68e9be0\npush $Nc6946d00\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch}}\n   bbox B\n   Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   maskChannelMask rgba.red\n   maskChannelInput -rgba.red\n   name Merge3\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 357\n  }\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch x1 13}}\n   bbox B\n   Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   maskChannelMask rgba.green\n   maskChannelInput -rgba.red\n   name Merge4\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 471\n  }\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch}}\n   bbox B\n   Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   maskChannelMask rgba.blue\n   maskChannelInput -rgba.red\n   name Merge5\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 579\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   bbox B\n   Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   output {rgba.red rgba.green rgba.blue -rgba.alpha}\n   name Merge1\n   xpos 322\n   ypos 728\n  }\n  Premult {\n   name Premult4\n   xpos 322\n   ypos 881\n   disable {{!parent.Settings.unpremult i}}\n  }\npush $Nc68896f0\n  Dot {\n   name Dot28\n   xpos -146\n   ypos -418\n  }\n  Dot {\n   name Dot30\n   xpos -146\n   ypos 1015\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   bbox B\n   Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   output {rgba.red rgba.green rgba.blue -rgba.alpha}\n   name MergeKeymix\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 322\n   ypos 1012\n  }\n  Switch {\n   inputs 2\n   which {{output1 i x1067 0}}\n   name Switch1\n   xpos 322\n   ypos 1147\n  }\n  Output {\n   name Output1\n   xpos 322\n   ypos 1395\n  }\n  NoOp {\n   inputs 0\n   name Settings\n   note_font_size 51\n   xpos 43\n   ypos -286\n   addUserKnob {20 User}\n   addUserKnob {4 operation M {plus screen hypot \"\"}}\n   operation {{parent.parent.BlacksMatch.Settings.operation}}\n   addUserKnob {7 witch}\n   witch {{\"Settings.operation == 0 ? 24 : Settings.operation == 1 ? 25 : 13\"}}\n   addUserKnob {7 soft}\n   soft {{parent.parent.BlacksMatch.Settings.soft}}\n   addUserKnob {7 aboveBase R 1 5}\n   aboveBase {{parent.parent.BlacksMatch.Settings.aboveBase}}\n   addUserKnob {6 unpremult l \"Unpremult before operation?\" +STARTLINE}\n  }\n end_group\n Expression {\n  expr0 1/r\n  expr1 1/g\n  expr2 1/b\n  name Expression9\n  xpos -183\n  ypos 509\n }\n Dot {\n  name Dot50\n  note_font_size 41\n  xpos -149\n  ypos 576\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge554\n  xpos -25\n  ypos 572\n }\n Dot {\n  name Dot55\n  note_font_size 41\n  xpos 9\n  ypos 669\n }\n Dot {\n  name Dot56\n  note_font_size 41\n  xpos -404\n  ypos 669\n }\nset Nc62e4bc0 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -404\n  ypos 745\n }\npush $Nc62e4bc0\npush $Nc683a0b0\n Expression {\n  expr0 1/r\n  expr1 1/g\n  expr2 1/b\n  name Expression10\n  xpos -605\n  ypos 353\n }\n Group {\n  name BlacksMatch\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"inputChange\\\":\\n    nsd = nuke.toNode(\\\"SwitchDefault\\\")\\n    n\\[\\\"default_black\\\"].setEnabled(nsd\\[\\\"which\\\"].getValue()==1)\"\n  tile_color 0xff\n  label \"<font color=lightgray><small>Fall Off: \\[value soft]\\nColor Mult: \\[value aboveBase]\"\n  note_font \"Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n  xpos -605\n  ypos 427\n  addUserKnob {20 BlacksMatch}\n  addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {4 output1 l \"         output\" M {Final \"Preview Channel Key\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n  addUserKnob {41 output2 l operation T Settings.operation}\n  addUserKnob {41 unpremultiplication l \"Unpremult before operation?\" T Settings.unpremult}\n  addUserKnob {26 \"\"}\n  addUserKnob {18 default_black l \"default black\"}\n  default_black {{1/maxValue}}\n  addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 default_black_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 soft l FallOff T Settings.soft}\n  addUserKnob {41 aboveBase l \"Black Color Mult\" T Settings.aboveBase}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Plug an image /constant you wish to be your blackpoint into BlackColor input.\\n\\nControl the falloff of Toe of the blackpoint and\\nchoose between a screen, plus, and hypot\\noperation\" T BlacksMatch}\n  addUserKnob {1 ver l Version:}\n  ver v08\n  addUserKnob {1 operation l INVISIBLE +INVISIBLE}\n  operation \"\\[value output2]</font>)(<font color=yellow><small>\\[value ver]</font>\"\n }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   tile_color 0xff\n   label green\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 177\n   ypos 466\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   tile_color 0xff\n   label red\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 188\n   ypos 350\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   tile_color 0xff\n   label blue\n   note_font_size 41\n   note_font_color 0xffffffff\n   xpos 186\n   ypos 570\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   tile_color 0xff\n   label \"min will be \\nblack color\"\n   note_font_size 31\n   note_font_color 0xffffffff\n   xpos 143\n   ypos 704\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos 322\n   ypos -550\n  }\n  Dot {\n   name Dot17\n   xpos 356\n   ypos -418\n  }\nset Nc6a731e0 [stack 0]\n  AddChannels {\n   channels rgba\n   color 1\n   name AddChannels1\n   xpos 322\n   ypos -365\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 356\n   ypos -288\n  }\nset Nc6a7e5a0 [stack 0]\n  Grade {\n   white 0\n   multiply 0\n   add {{parent.default_black} {parent.default_black} {parent.default_black} {parent.default_black}}\n   black_clamp false\n   name Grade1\n   label color\n   xpos 905\n   ypos -295\n  }\n  Input {\n   inputs 0\n   name InputBlackColor\n   xpos 1138\n   ypos -569\n   number 1\n  }\n  Switch {\n   inputs 2\n   which {{\"!\\[exists parent.input1]\"}}\n   name SwitchDefault\n   xpos 1138\n   ypos -291\n  }\n  Dot {\n   name Dot26\n   label \"Black Color\"\n   note_font_size 41\n   xpos 1172\n   ypos -212\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 1172\n   ypos -124\n  }\nset Nc69611b0 [stack 0]\n  Multiply {\n   channels rgb\n   value {{parent.Settings.aboveBase}}\n   name Multiply1\n   label \"mult black color\"\n   xpos 1138\n   ypos -29\n  }\n  Multiply {\n   channels rgb\n   value 4\n   name Multiply2\n   label \"boosted for hypot\"\n   xpos 1138\n   ypos 46\n   disable {{\"Settings.operation == 3 ? 0 : 1\"}}\n  }\npush $Nc6a7e5a0\n  Unpremult {\n   name Unpremult1\n   xpos 322\n   ypos -17\n   disable {{!parent.Settings.unpremult i}}\n  }\n  Dot {\n   name Dot18\n   xpos 356\n   ypos 145\n  }\nset Nc697fc30 [stack 0]\n  MergeExpression {\n   inputs 2\n   expr0 Br/Ar\n   expr1 Bg/Ag\n   expr2 Bb/Ab\n   name MergeDivide\n   xpos 1138\n   ypos 142\n  }\n  Invert {\n   channels rgb\n   name Invert1\n   xpos 1138\n   ypos 209\n  }\n  Gamma {\n   channels rgb\n   value {{((1/Settings.aboveBase)*Settings.soft)+(Settings.soft)}}\n   name Gamma1\n   xpos 1138\n   ypos 264\n  }\n  Dot {\n   name Dot19\n   xpos 1172\n   ypos 364\n  }\nset Nc6aae990 [stack 0]\n  Dot {\n   name Dot20\n   xpos 1172\n   ypos 478\n  }\nset Nc6ab2830 [stack 0]\n  Dot {\n   name Dot21\n   xpos 1172\n   ypos 586\n  }\nset Nc6ab66e0 [stack 0]\n  Dot {\n   name Dot1\n   xpos 1172\n   ypos 1150\n  }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 864\n   ypos 836\n   number 2\n  }\n  Dot {\n   name Dot29\n   xpos 898\n   ypos 1015\n  }\npush $Nc69611b0\n  Dot {\n   name Dot23\n   xpos 706\n   ypos -124\n  }\n  Dot {\n   name Dot6\n   note_font_size 41\n   xpos 706\n   ypos 293\n  }\nset Nc6aca180 [stack 0]\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 706\n   ypos 404\n  }\nset Nc6ace030 [stack 0]\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos 706\n   ypos 523\n  }\nset Nc6ad1ee0 [stack 0]\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos 706\n   ypos 731\n  }\npush $Nc6ab66e0\npush $Nc6ad1ee0\npush $Nc6ab2830\npush $Nc6ace030\npush $Nc6aae990\npush $Nc6aca180\npush $Nc697fc30\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch}}\n   bbox B\n   Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n   maskChannelMask rgba.red\n   maskChannelInput -rgba.red\n   name Merge3\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 357\n  }\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch x1 13}}\n   bbox B\n   Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n   maskChannelMask rgba.green\n   maskChannelInput -rgba.red\n   name Merge4\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 471\n  }\n  Merge2 {\n   inputs 2+1\n   operation {{parent.Settings.witch}}\n   bbox B\n   Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n   maskChannelMask rgba.blue\n   maskChannelInput -rgba.red\n   name Merge5\n   label \"\\[value maskChannelMask]\"\n   xpos 322\n   ypos 579\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   bbox B\n   Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   output {rgba.red rgba.green rgba.blue -rgba.alpha}\n   name Merge1\n   xpos 322\n   ypos 728\n  }\n  Premult {\n   name Premult4\n   xpos 322\n   ypos 881\n   disable {{!parent.Settings.unpremult i}}\n  }\npush $Nc6a731e0\n  Dot {\n   name Dot28\n   xpos -146\n   ypos -418\n  }\n  Dot {\n   name Dot30\n   xpos -146\n   ypos 1015\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   bbox B\n   Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n   output {rgba.red rgba.green rgba.blue -rgba.alpha}\n   name MergeKeymix\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 322\n   ypos 1012\n  }\n  Switch {\n   inputs 2\n   which {{output1 i x1067 0}}\n   name Switch1\n   xpos 322\n   ypos 1147\n  }\n  Output {\n   name Output1\n   xpos 322\n   ypos 1395\n  }\n  NoOp {\n   inputs 0\n   name Settings\n   note_font_size 51\n   xpos 43\n   ypos -286\n   addUserKnob {20 User}\n   addUserKnob {4 operation M {plus screen hypot \"\"}}\n   addUserKnob {7 witch}\n   witch {{\"Settings.operation == 0 ? 24 : Settings.operation == 1 ? 25 : 13\"}}\n   addUserKnob {7 soft}\n   soft 0.4\n   addUserKnob {7 aboveBase R 1 5}\n   aboveBase 2\n   addUserKnob {6 unpremult l \"Unpremult before operation?\" +STARTLINE}\n  }\n end_group\n Expression {\n  expr0 1/r\n  expr1 1/g\n  expr2 1/b\n  name Expression11\n  xpos -605\n  ypos 507\n }\n Dissolve {\n  inputs 2\n  channels rgb\n  which 0.5\n  name Dissolve18\n  label \"\\[value which]\"\n  xpos -605\n  ypos 662\n }\n Switch {\n  inputs 2\n  which {{parent.Dissolve18.which}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -605\n  ypos 738\n }\n Add {\n  channels rgb\n  value -0.0001\n  name Add2\n  xpos -605\n  ypos 808\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge1\n  xpos -605\n  ypos 864\n }\npush $Nc691f020\n Dot {\n  name Dot58\n  note_font_size 41\n  xpos -922\n  ypos -172\n }\n Dot {\n  name Dot60\n  note_font_size 41\n  xpos -922\n  ypos 983\n }\nset Nc69d7ae0 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgb\n  name MergeMix\n  xpos -605\n  ypos 976\n }\npush $Nc69d7ae0\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -922\n  ypos 1030\n }\n Switch {\n  inputs 2\n  which {{\"parent.MergeMix.mix == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -605\n  ypos 1023\n }\n Output {\n  name Output1\n  xpos -605\n  ypos 1316\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Aton_Volumetrics.gizmo",
    "content": "Group {\n name NST_X_Aton_Volumetrics\n knobChanged \"n = nuke.thisNode()\\nif n\\[\\\"use_3d\\\"].value()==1:\\n    n\\[\\\"center\\\"].setEnabled(False)\\nelse:\\n    n\\[\\\"center\\\"].setEnabled(True)\\nn\\[\\\"iterations\\\"].setValue(int(n\\[\\\"iterations\\\"].value()))\\nif n\\[\\\"mode\\\"].value()==\\\"Diffuse\\\":\\n    n\\[\\\"diffuse\\\"].setEnabled(True)\\nelse:\\n    n\\[\\\"diffuse\\\"].setEnabled(False)\\nn\\[\\\"diffuse\\\"].setValue(max(n\\[\\\"diffuse\\\"].value(),0))\\nn\\[\\\"iterations\\\"].setValue(max(n\\[\\\"iterations\\\"].value(),1))\"\n tile_color 0xcc804eff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 X_Aton}\n addUserKnob {41 \"Local GPU: \" T BlinkScript1.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {12 center t \"The point from which rays will be emitted.\"}\n center {960 540}\n addUserKnob {6 use_3d l \"use 3d input\" t \"Use a <b>3D light</b> and a <b>3D camera</b> to calculate the center of the light. When enabled the <b>center</b> parameter will be disabled. Make sure both inputs (Light and Camera) are connected in order for this to work properly.\" -STARTLINE}\n addUserKnob {7 length t \"This controls zoom of the final iteration. A value of 0 won't have any effect. A value of -1 will converge all rays in the centre point. All positive values will create rays projected outwards.\" R 0 10}\n length 2\n addUserKnob {26 \"\"}\n addUserKnob {4 mode t \"- <b>Regular</b>, old school God Ray algorithm. All samples get added together. Fast and simple.\\n- <b>Brighter</b>, samples only contribute to the ray if they are brighter than the ray at that step. This creates unshadowed rays.\\n- <b>Darker</b>, samples only contribute to the ray if they are darker than the say at that step. This generate only shadow rays.\\n- <b>Diffused</b>, different model of ray generation where rays can defocus as they travel further. This is more expensive but often generates more natural results.\" M {Regular Darkest Brightest Diffuse \"\"}}\n addUserKnob {7 decay t \"The rate by which rays loose intensity and become darker. At 0 rays intensity will remain constant. Values between 1 and 2 generate realistic results. Denser atmospheres create shorter rays (more decay).\" R 0 10}\n decay 1\n addUserKnob {7 diffuse t \"This parameter is only enabled when <b>Diffuse</b> is selected as the <b>mode</b>.<br>Controls the rate of dispersion of the ray of light. Higher values create softer results. <br>Keep in mind in the real world this value is dependent on the shape of the light source. Wide light sources (like a campfire) generate very diffused rays, whereas concentrated lights (like a cellphone light) cast very sharp light rays. <br>The speed of the algorithm is independent of the value of diffusion.\" +DISABLED R 0 100}\n diffuse 50\n addUserKnob {26 \"\"}\n addUserKnob {18 multiply t \"Makes everything brighter or darker in a linear fashion.\" R 0.2 4}\n multiply 1\n addUserKnob {6 multiply_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 gamma t \"This works slightly different than just a regular gamma. This is both a pre-process and a post-process.\\n\\nFirst, the image gets applied the inverse of the gamma. After the rays have been generated, the value of gamma gets applied again.\\n\\nWith a little bit of practise this allows you to drive the colours of the rays as they decay.\" R 0.2 4}\n gamma 1\n addUserKnob {6 gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 iterations t \"The number of steps the light ray will take. The more <b>iterations</b>, the softer the ray will be. It is a good practice to raise this value to a high number (100-500) and gradually decreasing it until artifacts start to appear. Sometimes artifacts can be fixed in a more optimized way by keeping iterations low and enabling <b>bilinear interpolation</b>.<br>The more iterations, the slower the algorithm.\" R 1 100}\n iterations 20\n addUserKnob {6 bilinear_interpolation l \"bilinear interpolation\" t \"By default each ray will sample the nearest pixel from the image. This often causes grid artifacts. Enabling this filtering should fix most of these issues. If it's not enough, you may need to increase the number of <b>iterations</b>. This is usually only needed when using <b>Diffuse</b> rays, altough the option is also available for the rest of modes.\" +STARTLINE}\n addUserKnob {6 normalize l \"normalize luma\" t \"Many settings can affect the final brightness of the rays: their length, their decay, the number of iterations,etc.\\n\\nThis tries to make the controls more intuitive by compensating those brightness changes. You can disable this to have a more direct control of the tool.\" -STARTLINE}\n normalize true\n addUserKnob {26 \"\"}\n addUserKnob {20 GPU_Settings l \"GPU Settings\"}\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2017</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l <center>version</center> T \"nuke.message('X_Aton Gizmo <i>v1.1</i><br><b>Xavier Martín © 2017</b>')\" +STARTLINE}\n addUserKnob {22 help_documentation l <center>?</center> -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/blink/filter/x_aton\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_aton/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -740\n  ypos -558\n }\n Dot {\n  name Dot3\n  xpos -706\n  ypos -506\n }\nset N9a5b94a0 [stack 0]\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -740\n  ypos -460\n }\n Gamma {\n  channels rgb\n  value {{1/parent.gamma} {1/parent.gamma} {1/parent.gamma} 1}\n  name Gamma1\n  xpos -740\n  ypos -410\n }\nset N9a5bd330 [stack 0]\n Dot {\n  name Dot2\n  xpos -706\n  ypos -356\n }\nset N9a5c6de0 [stack 0]\n Dot {\n  name Dot1\n  xpos -706\n  ypos -306\n }\nset N9a5ca9d0 [stack 0]\npush $N9a5c6de0\n Blur {\n  channels rgba\n  size {{diffuse*sqrt(length)}}\n  name Blur5\n  xpos -240\n  ypos -313\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos -240\n  ypos -258\n }\n Reformat {\n  type scale\n  scale 0.125\n  pbb true\n  name Reformat1\n  xpos -240\n  ypos -210\n }\nset N9a711630 [stack 0]\npush $N9a5ca9d0\npush $N9a5c6de0\n Blur {\n  channels rgba\n  size {{parent.Blur5.size/2}}\n  name Blur4\n  xpos -340\n  ypos -310\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox3\n  xpos -340\n  ypos -258\n }\n Reformat {\n  type scale\n  scale 0.25\n  pbb true\n  name Reformat5\n  xpos -340\n  ypos -210\n }\nset N9a72e0a0 [stack 0]\npush $N9a5ca9d0\npush $N9a5c6de0\n Blur {\n  channels rgba\n  size {{parent.Blur4.size/2}}\n  name Blur3\n  xpos -440\n  ypos -310\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox4\n  xpos -440\n  ypos -258\n }\n Reformat {\n  type scale\n  scale 0.5\n  pbb true\n  name Reformat4\n  xpos -440\n  ypos -210\n }\nset N9a74aaf0 [stack 0]\npush $N9a5ca9d0\npush $N9a5c6de0\n Blur {\n  channels rgba\n  size {{parent.Blur3.size/2}}\n  name Blur2\n  xpos -540\n  ypos -310\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox5\n  xpos -540\n  ypos -258\n }\n Reformat {\n  type scale\n  scale 0.6\n  pbb true\n  name Reformat3\n  xpos -540\n  ypos -210\n }\nset N9a767570 [stack 0]\npush $N9a5ca9d0\npush $N9a5c6de0\n Blur {\n  channels rgb\n  size {{parent.Blur2.size/2}}\n  name Blur1\n  xpos -640\n  ypos -310\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -640\n  ypos -258\n }\n Reformat {\n  type scale\n  scale 0.8\n  pbb true\n  name Reformat2\n  xpos -640\n  ypos -210\n }\nset N9a784d80 [stack 0]\npush $N9a5ca9d0\n BlinkScript {\n  inputs 6\n  ProgramGroup 1\n  KernelDescription \"2 \\\"X_Aton\\\" iterate componentWise 5140e5ada3150b5b17997b391784be72a8515242eff97b63a728e1d29924494f 7 \\\"src\\\" Read Random \\\"blr1\\\" Read Random \\\"blr2\\\" Read Random \\\"blr3\\\" Read Random \\\"blr4\\\" Read Random \\\"blr5\\\" Read Random \\\"dst\\\" Write Point 5 \\\"size\\\" Float 1 AAAAAA== \\\"center\\\" Float 2 AAAAAAAAAAA= \\\"iterations\\\" Int 1 AAAAAA== \\\"decay\\\" Float 1 AAAAAA== \\\"normalize_output\\\" Int 1 AAAAAA== 5 \\\"size\\\" 1 1 \\\"center\\\" 2 1 \\\"iterations\\\" 1 1 \\\"decay\\\" 1 1 \\\"normalize_output\\\" 1 1 1 \\\"normal\\\" Float 1 1 AAAAAA==\"\n  kernelSource \"kernel X_Aton : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr1; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr2; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr3; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr4; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr5; // the input image\\n\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float size;\\n    float2 center;\\n    int iterations;\\n    float decay;\\n    int normalize_output;\\n\\n  local:\\n    float normal = 0.0f;\\n\\n  void init() \\{\\n    if(normalize_output == 1) \\{\\n      normal =0.0;\\n      for (int i = 0; i < iterations; i++) \\{\\n        normal += (pow(1.0f-float(i)/iterations,decay));\\n      \\}\\n    \\}\\n    else \\{\\n      normal = iterations;\\n    \\}\\n  \\}\\n\\n  void process(int2 pos) \\{\\n    float total = 0.0;\\n    float scale = 0.0;\\n    int posx = 0;\\n    int posy = 0;\\n    int2 currentpos = int2(pos.x-center.x,pos.y-center.y);\\n \\n    float step = 0.0;\\n    for (int i = 0; i < iterations; i++) \\{\\n      step = float(i)/iterations;\\n      scale = 1+size*step*step;\\n      posx = ((currentpos.x)/scale+center.x);\\n      posy = ((currentpos.y)/scale+center.y);\\n      if (step < 0.1)\\n        total += bilinear(src,posx,posy)*pow((1-step),decay);\\n      else if (step < 0.2)\\n        total += bilinear(blr1,posx*0.8,posy*0.8)*pow((1-step),decay);\\n      else if (step < 0.4)\\n        total += bilinear(blr2,posx*0.6,posy*0.6)*pow((1-step),decay);\\n      else if (step < 0.6)\\n        total += bilinear(blr3,posx*0.5,posy*0.5)*pow((1-step),decay);\\n      else if (step < 0.8)\\n        total += bilinear(blr4,posx*0.25,posy*0.25)*pow((1-step),decay);\\n      else\\n        total += bilinear(blr5,posx*0.125,posy*0.125)*pow((1-step),decay);\\n    \\}\\n    dst() = total/normal;\\n  \\}\\n\\};\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  rebuild \"\"\n  X_Aton_size {{parent.length}}\n  X_Aton_center {{parent.use_3d==1?Reconcile3D1.output:parent.center} {parent.use_3d==1?Reconcile3D1.output:parent.center}}\n  X_Aton_iterations {{parent.iterations}}\n  X_Aton_decay {{parent.decay}}\n  X_Aton_normalize_output {{parent.normalize}}\n  rebuild_finalise \"\"\n  name BlinkScript2\n  xpos -640\n  ypos -116\n }\npush $N9a711630\npush $N9a72e0a0\npush $N9a74aaf0\npush $N9a767570\npush $N9a784d80\npush $N9a5ca9d0\n BlinkScript {\n  inputs 6\n  ProgramGroup 1\n  KernelDescription \"2 \\\"X_Aton\\\" iterate componentWise e94f08f291fbc4837d066b1a66504220d926ab715f7f89378491e8b275e0f94c 7 \\\"src\\\" Read Random \\\"blr1\\\" Read Random \\\"blr2\\\" Read Random \\\"blr3\\\" Read Random \\\"blr4\\\" Read Random \\\"blr5\\\" Read Random \\\"dst\\\" Write Point 5 \\\"size\\\" Float 1 AAAAAA== \\\"center\\\" Float 2 AAAAAAAAAAA= \\\"iterations\\\" Int 1 AAAAAA== \\\"decay\\\" Float 1 AAAAAA== \\\"normalize_output\\\" Int 1 AAAAAA== 5 \\\"size\\\" 1 1 \\\"center\\\" 2 1 \\\"iterations\\\" 1 1 \\\"decay\\\" 1 1 \\\"normalize_output\\\" 1 1 1 \\\"normal\\\" Float 1 1 AAAAAA==\"\n  kernelSource \"kernel X_Aton : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr1; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr2; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr3; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr4; // the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> blr5; // the input image\\n\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float size;\\n    float2 center;\\n    int iterations;\\n    float decay;\\n    int normalize_output;\\n\\n  local:\\n    float normal = 0.0f;\\n\\n  void init() \\{\\n    if(normalize_output == 1) \\{\\n      normal =0.0;\\n      for (int i = 0; i < iterations; i++) \\{\\n        normal += (pow(1.0f-float(i)/iterations,decay));\\n      \\}\\n    \\}\\n    else \\{\\n      normal = iterations;\\n    \\}\\n  \\}\\n\\n  void process(int2 pos) \\{\\n    float total = 0.0;\\n    float scale = 0.0;\\n    int posx = 0;\\n    int posy = 0;\\n    int2 currentpos = int2(pos.x-center.x,pos.y-center.y);\\n \\n    float step = 0.0;\\n    for (int i = 0; i < iterations; i++) \\{\\n      step = float(i)/iterations;\\n      scale = 1+size*step*step;\\n      posx = ((currentpos.x)/scale+center.x);\\n      posy = ((currentpos.y)/scale+center.y);\\n      if (step < 0.1)\\n        total += src(posx,posy)*pow((1-step),decay);\\n      else if (step < 0.2)\\n        total += blr1((posx*0.8),(posy*0.8))*pow((1-step),decay);\\n      else if (step < 0.4)\\n        total += blr2((posx*0.6),(posy*0.6))*pow((1-step),decay);\\n      else if (step < 0.6)\\n        total += blr3((posx*0.5),(posy*0.5))*pow((1-step),decay);\\n      else if (step < 0.8)\\n        total += blr4((posx*0.25),(posy*0.25))*pow((1-step),decay);\\n      else\\n        total += blr5((posx*0.125),(posy*0.125))*pow((1-step),decay);\\n    \\}\\n    dst() = total/normal;\\n  \\}\\n\\};\"\n  rebuild \"\"\n  X_Aton_size {{length}}\n  X_Aton_center {{parent.use_3d==1?Reconcile3D1.output:parent.center} {parent.use_3d==1?Reconcile3D1.output:parent.center}}\n  X_Aton_iterations {{iterations}}\n  X_Aton_decay {{decay}}\n  X_Aton_normalize_output {{normalize}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  onCreate \"n = nuke.thisNode()\\nn\\[\\\"X_Aton_center\\\"].setFlag(0x00008000)\"\n  selected true\n  xpos -740\n  ypos -116\n }\n Switch {\n  inputs 2\n  which {{parent.bilinear_interpolation}}\n  name Switch2\n  xpos -740\n  ypos -60\n }\npush $N9a5bd330\n Dot {\n  name Dot6\n  xpos -806\n  ypos -406\n }\n Dot {\n  name Dot8\n  xpos -806\n  ypos -156\n }\nset N9b07a8b0 [stack 0]\n Dot {\n  name Dot7\n  xpos -906\n  ypos -156\n }\n BlinkScript {\n  ProgramGroup 1\n  KernelDescription \"2 \\\"X_Aton\\\" iterate componentWise 487f2268501f808ca51782f791e12713f7866399dc695919d23851a93187e87b 2 \\\"src\\\" Read Random \\\"dst\\\" Write Point 6 \\\"size\\\" Float 1 AAAAAA== \\\"center\\\" Float 2 AAAAAAAAAAA= \\\"iterations\\\" Int 1 AAAAAA== \\\"decay\\\" Float 1 AAAAAA== \\\"normalize_output\\\" Int 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== 6 \\\"size\\\" 1 1 \\\"center\\\" 2 1 \\\"iterations\\\" 1 1 \\\"decay\\\" 1 1 \\\"normalize_output\\\" 1 1 \\\"mode\\\" 1 1 1 \\\"normal\\\" Float 1 1 AAAAAA==\"\n  kernelSource \"kernel X_Aton : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n\\n\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float size;\\n    float2 center;\\n    int iterations;\\n    float decay;\\n    int normalize_output;\\n    int mode;\\n  local:\\n    float normal = 0.0f;\\n\\n  void init() \\{\\n    if(mode==0) \\{\\n      if(normalize_output == 1) \\{\\n        normal =0.0;\\n        for (int i = 0; i < iterations; i++) \\{\\n          normal += (pow(1.0f-float(i)/iterations,decay));\\n        \\}\\n      \\}\\n      else \\{\\n        normal = iterations;\\n      \\}\\n    \\}\\n  \\}\\n\\n  void process(int2 pos) \\{\\n    float total = 0.0f;\\n    float scale = 0.0f;\\n    float posx = 0.0f;\\n    float posy = 0.0f;\\n    float2 currentpos = float2(pos.x-center.x,pos.y-center.y);\\n\\n    if(mode==0)\\{\\n      for (int i = 0; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        total += bilinear(src,posx,posy)*pow((1-float(i)/iterations),decay);\\n      \\}\\n      dst() = total/normal;\\n    \\}\\n    else if(mode==1)\\{\\n      float sample;\\n      float norm = 1.0;\\n      total += src(pos.x,pos.y);\\n      for (int i = 1; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        sample = bilinear(src,posx,posy);\\n        if(sample<total/norm) \\{\\n          total += sample*pow((1-float(i)/iterations),decay);\\n        \\}\\n        else\\n          total += (total/norm)*pow((1-float(i)/iterations),decay);\\n        norm += 1.0*pow((1-float(i)/iterations),decay);\\n      \\}\\n      if(normalize_output==0)\\n        dst() = total/iterations;\\n      else\\n        dst() = total/norm;\\n    \\}\\n    else \\{\\n      float sample;\\n      float norm = 1.0;\\n      total += src(pos.x,pos.y);\\n      for (int i = 1; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        sample = bilinear(src,posx,posy);\\n        if(sample>total/norm) \\{\\n          total += sample*pow((1-float(i)/iterations),decay);\\n        \\}\\n        else\\n          total += (total/norm)*pow((1-float(i)/iterations),decay);\\n        norm += 1.0*pow((1-float(i)/iterations),decay);\\n      \\}\\n      if(normalize_output==0)\\n        dst() = total/iterations;\\n      else\\n        dst() = total/norm;\\n    \\}\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  rebuild \"\"\n  X_Aton_size {{length}}\n  X_Aton_center {{parent.use_3d==1?Reconcile3D1.output:parent.center} {parent.use_3d==1?Reconcile3D1.output:parent.center}}\n  X_Aton_iterations {{iterations}}\n  X_Aton_decay {{decay}}\n  X_Aton_normalize_output {{normalize}}\n  X_Aton_mode {{(parent.mode!=3)?parent.mode:parent.mode*(parent.diffuse!=0)}}\n  rebuild_finalise \"\"\n  name BlinkScript4\n  xpos -940\n  ypos -116\n }\npush $N9b07a8b0\n BlinkScript {\n  ProgramGroup 1\n  KernelDescription \"2 \\\"X_Aton\\\" iterate componentWise 8ab15b8bdd9694a8f64ba7270da748947d286719d2fadccab9e45b58ec1aa1dd 2 \\\"src\\\" Read Random \\\"dst\\\" Write Point 6 \\\"size\\\" Float 1 AAAAAA== \\\"center\\\" Float 2 AAAAAAAAAAA= \\\"iterations\\\" Int 1 AAAAAA== \\\"decay\\\" Float 1 AAAAAA== \\\"normalize_output\\\" Int 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== 6 \\\"size\\\" 1 1 \\\"center\\\" 2 1 \\\"iterations\\\" 1 1 \\\"decay\\\" 1 1 \\\"normalize_output\\\" 1 1 \\\"mode\\\" 1 1 1 \\\"normal\\\" Float 1 1 AAAAAA==\"\n  kernelSource \"kernel X_Aton : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n\\n\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float size;\\n    float2 center;\\n    int iterations;\\n    float decay;\\n    int normalize_output;\\n    int mode;\\n  local:\\n    float normal = 0.0f;\\n\\n  void init() \\{\\n    if(mode==0) \\{\\n      if(normalize_output == 1) \\{\\n        normal =0.0;\\n        for (int i = 0; i < iterations; i++) \\{\\n          normal += (pow(1.0f-float(i)/iterations,decay));\\n        \\}\\n      \\}\\n      else \\{\\n        normal = iterations;\\n      \\}\\n    \\}\\n  \\}\\n\\n  void process(int2 pos) \\{\\n    float total = 0.0;\\n    float scale = 0.0;\\n    int posx = 0;\\n    int posy = 0;\\n    int2 currentpos = int2(pos.x-center.x,pos.y-center.y);\\n\\n    if(mode==0)\\{\\n      for (int i = 0; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        total += src(posx,posy)*pow((1-float(i)/iterations),decay);\\n      \\}\\n      dst() = total/normal;\\n    \\}\\n    else if(mode==1)\\{\\n      float sample;\\n      float norm = 1.0;\\n      total += src(pos.x,pos.y);\\n      for (int i = 1; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        sample = src(posx,posy);\\n        if(sample<total/norm) \\{\\n          total += sample*pow((1-float(i)/iterations),decay);\\n        \\}\\n        else\\n          total += (total/norm)*pow((1-float(i)/iterations),decay);\\n        norm += pow((1.0f-float(i)/iterations),decay);\\n      \\}\\n      if(normalize_output==0)\\n        dst() = total/iterations;\\n      else\\n        dst() = total/norm;\\n    \\}\\n    else \\{\\n      float sample;\\n      float norm = 1.0;\\n      total += src(pos.x,pos.y);\\n      for (int i = 1; i < iterations; i++) \\{\\n        scale = 1+size*i*i/iterations/iterations;\\n        posx = ((currentpos.x)/scale+center.x);\\n        posy = ((currentpos.y)/scale+center.y);\\n        sample = src(posx,posy);\\n        if(sample>total/norm) \\{\\n          total += sample*pow((1-float(i)/iterations),decay);\\n        \\}\\n        else\\n          total += (total/norm)*pow((1-float(i)/iterations),decay);\\n        norm += pow((1.0f-float(i)/iterations),decay);\\n      \\}\\n      if(normalize_output==0)\\n        dst() = total/iterations;\\n      else\\n        dst() = total/norm;\\n    \\}\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript1.useGPUIfAvailable}}\n  rebuild \"\"\n  X_Aton_size {{length}}\n  X_Aton_center {{parent.use_3d==1?Reconcile3D1.output:parent.center} {parent.use_3d==1?Reconcile3D1.output:parent.center}}\n  X_Aton_iterations {{iterations}}\n  X_Aton_decay {{decay}}\n  X_Aton_normalize_output {{normalize}}\n  X_Aton_mode {{(parent.mode!=3)?parent.mode:parent.mode*(parent.diffuse!=0)}}\n  rebuild_finalise \"\"\n  name BlinkScript3\n  xpos -840\n  ypos -116\n }\n Switch {\n  inputs 2\n  which {{parent.bilinear_interpolation}}\n  name Switch3\n  xpos -840\n  ypos -60\n }\n Switch {\n  inputs 2\n  which {{(mode==3)*(diffuse!=0)}}\n  name Switch1\n  xpos -740\n  ypos -10\n }\n Grade {\n  multiply {{1/parent.multiply} {1/parent.multiply} {1/parent.multiply} 1}\n  gamma {{1/parent.gamma} {1/parent.gamma} {1/parent.gamma} 1}\n  reverse true\n  name Grade1\n  xpos -740\n  ypos 40\n }\npush $N9a5b94a0\n Dot {\n  name Dot5\n  xpos -1006\n  ypos -506\n }\n Dot {\n  name Dot4\n  xpos -1006\n  ypos 94\n }\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge1\n  xpos -740\n  ypos 88\n }\n Output {\n  name Output1\n  xpos -740\n  ypos 140\n }\n Input {\n  inputs 0\n  name InputLight\n  xpos -540\n  ypos -560\n  number 1\n }\n Input {\n  inputs 0\n  name InputCamera\n  xpos -440\n  ypos -560\n  number 2\n }\n Dot {\n  name Dot11\n  xpos -406\n  ypos -456\n }\npush $N9a5b94a0\n Dot {\n  name Dot9\n  xpos -606\n  ypos -506\n }\n Dot {\n  name Dot10\n  xpos -606\n  ypos -456\n }\n Reconcile3D {\n  inputs 3\n  calc_output true\n  name Reconcile3D1\n  xpos -540\n  ypos -466\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Denoise.gizmo",
    "content": "Group {\n name X_Denoise\n help \"Clean digital noise on video\"\n knobChanged \"import math\\nn = nuke.thisNode()\\nk = nuke.thisKnob()\\ni = n\\['iterations'].value()\\nm = n\\['x2'].value()\\n\\n\\nif k.name() == \\\"iterations\\\":\\n  n\\['active_frames'].setValue(1+math.ceil(i)*2*(1+m))\\nelif k.name() == \\\"x2\\\":\\n  n\\['active_frames'].setValue(1+math.ceil(i)*2*(1+m))\\nif n\\['fix_artifacts'].value() == 0:\\n  n\\['motion_threshold'].setEnabled(False)\\n  n\\['smooth_threshold'].setEnabled(False)\\n  n\\['preview_mask'].setEnabled(False)\\n  n\\['median'].setEnabled(False)\\nelse:\\n  n\\['motion_threshold'].setEnabled(True)\\n  n\\['smooth_threshold'].setEnabled(True)\\n  n\\['preview_mask'].setEnabled(True)\\n  n\\['median'].setEnabled(True)\\n\\nif n\\['static'].value() == 1:\\n  n\\['vectorDetail'].setEnabled(False)\\n  n\\['smoothness'].setEnabled(False)\\n  n\\['flickerCompensation'].setEnabled(False)\\nelse:\\n  n\\['vectorDetail'].setEnabled(True)\\n  n\\['smoothness'].setEnabled(True)\\n  n\\['flickerCompensation'].setEnabled(True)\"\n tile_color 0xcc804eff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 NoiseReduction l \"Noise Reduction\"}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T VectorGenerator2.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {7 luminance l \"fix luminance\" t \"The <b>brightness</b> of the pixels will remain untouched at 0 and will be changed at 1. Values over 1 do not have any effect.\"}\n luminance 1\n addUserKnob {7 chrominance l \"fix chrominance\" t \"The <b>color</b> of the pixels will remain untouched at 0 and will be changed at 1. Values over 1 do not have any effect.\"}\n chrominance 1\n addUserKnob {26 \"\"}\n addUserKnob {7 iterations t \"\\nThe more <b>iterations</b>, the more noise will be reduced. Increasing too much the iterations will slow down the render and could cause artifacts or blur in some areas.\\n\\nEach iteration loads the previous and next frames to use them in the calculation. The further a frame is from the current frame, the less effect it will have on the calculation.\\n\\nUsing <b>intigers</b> instead of decimals will lead to a much efficient process and therefore faster render times.\\n\\nYou can use the <b>x2</b> multiplier at the right of this slider to drastically increase the number of frames that will be used in the calculation.\\n\\nCheck the <b>Active Frames</b> to see how many frames are being processed with the noise reduction algorithm.\\n\" R 1 5}\n iterations 2\n addUserKnob {6 x2 t \"\\nBy default, each iteration will look to the previous and next frame. If the <b>x2</b> multiplier is activated, each iteration will add the 2 previous frames and the 2 next frames, increasing the quality of the calculation at the cost of really slow renders.\\n\\nFurther frames have less consitency, so they will have less effect to the final output.\\n\" -STARTLINE}\n addUserKnob {3 active_frames l \" \" t \"\\nThis shows <b>how many frames are being used </b>in the calculation. \\n\\nBy default, each <b>iteration</b> will load the next two closest frames to the current frame. The further a loaded frame is from the current frame, the less effect it will have on the calculation. \\n\\nThe amount of iterations is doubled if the <b>x2</b> multiplier is checked. Keep in mind that each new frame added to the calculation will increase the render time.\\n\\nTherefore, the total amount of frames that are being used is calculated with this formula:\\n\\n1 + 2 * iterations * multiplier\\n\\n\" +DISABLED}\n active_frames 5\n addUserKnob {26 active_frames_text l \"\" t \"\\nThis shows <b>how many frames are being used</b> in the calculation. \\n\\nBy default, each <b>iteration </b>will load the next two closest frames to the current frame. The further a loaded frame is from the current frame, the less effect it will have on the calculation. \\n\\nThe amount of iterations is doubled if the <b>x2</b> multiplier is checked. Keep in mind that each new frame added to the calculation will increase the render time. \\n\\nTherefore, the total amount of frames that are being used is calculated with this formula: \\n\\n1 + 2 * iterations * multiplier \\n\" -STARTLINE T \"active frames\"}\n addUserKnob {26 active_frames_python l INVISIBLE t \"w = nuke.toNode(\\\"X_Denoise\\\")\\nw\\['active_frames'].setEnabled(False)\\n\\ndef activeFrames():\\n import math\\n n = nuke.thisNode()\\n k = nuke.thisKnob()\\n i = n\\['iterations'].value()\\n m = n\\['x2'].value()\\n\\n \\n if k.name() == \\\"iterations\\\":\\n   n\\['active_frames'].setValue(1+math.ceil(i)*2*(1+m))\\n elif k.name() == \\\"x2\\\":\\n   n\\['active_frames'].setValue(1+math.ceil(i)*2*(1+m))\\nnuke.addKnobChanged(activeFrames, nodeClass=\\\"Group\\\")\\n\\nif n\\['fix_artifacts'].value() == 1:\\n  n\\['motion_threshold'].setEnabled(False)\\n  n\\['smooth_threshold'].setEnabled(False)\\n  n\\['preview_mask'].setEnabled(False)\\n  n\\['median'].setEnabled(False)\\nelse:\\n  n\\['motion_threshold'].setEnabled(True)\\n  n\\['smooth_threshold'].setEnabled(True)\\n  n\\['preview_mask'].setEnabled(True)\\n  n\\['median'].setEnabled(True)\\n\\nif n\\['static'].value() == 1:\\n  n\\['vectorDetail'].setEnabled(False)\\n  n\\['smoothness'].setEnabled(False)\\n  n\\['flickerCompensation'].setEnabled(False)\\nelse:\\n  n\\['vectorDetail'].setEnabled(True)\\n  n\\['smoothness'].setEnabled(True)\\n  n\\['flickerCompensation'].setEnabled(True)\" -STARTLINE +INVISIBLE}\n addUserKnob {26 \"\"}\n addUserKnob {41 filter t \"<b>Impulse</b> is the fastes but will create really poor results.\\n<b>Cubic</b> will work fine in most cases, but it will smooth the detail.\\n<b>Lanczos</b> will sharpen the image a little bit to contrarrest the softness of the image. It will also keep borders intact.\\n<b>Sinc4</b> will drastically sharpen the image, and could cause the noise to reappear.\" T IDistort16.filter}\n addUserKnob {4 node_output l \"    output\" t \"Choose if you want to output the <b>Result</b> image without the noise or to visualize the <b>Noise</b> separately.\\n\\nYou can also output the <b>Mask</b> where artifacts are ocurring (but first you need to select the <b>fix artifacts</b> checkbox in the Qaulity tab.\" -STARTLINE M {Result Noise Mask}}\n addUserKnob {20 Quality}\n addUserKnob {6 fix_artifacts l \"fix artifacts\" t \"\\nThe noise reduction algorithm fails when an object is moving too fast. That will cause <b>artifacts</b> to appear.\\n\\nIf the <b>Fix Artifacts</b> checkbox is activated, a procedural mask will be created around moving abjects. The objects inside the mask will not be affected.\\n\\nYou can see how the mask looks like with the <b>preview</b> checkbox. Use the <b>motion threshold</b> and the <b>smooth</b> sliders to adjust the mask.\\n\\nBy default, a <b>median</b> filter is applied to the moving objects instead of the noise reduction algorithm, but you can disable that option.\\n\\nRemember that you can select the <b>Mask</b> as the <b>Output</b> of this node. You can use this mask to apply the Nuke Denoise to the fast moving areas and X_Distort to the rest of the image for a professional accurate noise reduction.\\n\" +STARTLINE}\n addUserKnob {7 motion_threshold l \"motion threshold\" t \"This determines the maximum velocity which a pixel can have in order to be used in the noise reduction process. The higher the value, the less object will be excluded from the algorithm.\\n\\nUse the <b>preview</b> checkbox in order to see the mask.\" +DISABLED R 0 10}\n motion_threshold 2.9\n addUserKnob {7 smooth_threshold l smooth t \"This blurs the mask that determines which objects are used in the noise reduction algorithm.\\n\\nUse the <b>preview</b> checkbox in order to see the mask.\" +DISABLED R 0 20}\n smooth_threshold 10\n addUserKnob {6 preview_mask l preview t \"Use the <b>preview</b> checkbox in order to see the mask that determines which objects are used in the algorithm.\\n\\nWhite areas will be excluded from the effect, and black areas will be denoised.\" +DISABLED +STARTLINE}\n addUserKnob {6 median t \"Use this so apply a subtle <b>median</b> filter to those areas that move too fast for the algorithm. This will also apply some chromatic noise reduction.\" -STARTLINE +DISABLED}\n median true\n addUserKnob {26 \"\"}\n addUserKnob {41 vectorDetail l \"Vector Detail\" +INVISIBLE T VectorGenerator2.vectorDetail}\n addUserKnob {41 smoothness l Smoothness +INVISIBLE T VectorGenerator2.smoothness}\n addUserKnob {41 flickerCompensation l \"Flicker Compensation\" T VectorGenerator2.flickerCompensation}\n addUserKnob {6 static l \"static shot\" t \"Check this if the image is static and no object is moving at all. This will drastically increase the speed but any moving objects will be blurred out.\" -STARTLINE}\n addUserKnob {20 Tolerances n 2}\n addUserKnob {41 weightRed l \"Weight Red\" T VectorGenerator2.weightRed}\n addUserKnob {41 weightGreen l \"Weight Green\" T VectorGenerator2.weightGreen}\n addUserKnob {41 weightBlue l \"Weight Blue\" T VectorGenerator2.weightBlue}\n addUserKnob {20 \"\" n -1}\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2015</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l <center>version</center> T \"nuke.message('X_Denoise Gizmo <i>v1.0</i><br><b>Xavier Martín © 2015</b>')\" +STARTLINE}\n addUserKnob {22 help_documentation l <center>?</center> -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/gizmos/filter/x_denoise\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_denoise/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Input {\n  inputs 0\n  name Source\n  xpos -451\n  ypos 109\n }\nset N9b31c740 [stack 0]\n Dot {\n  name Dot53\n  xpos -673\n  ypos 112\n }\n Dot {\n  name Dot2\n  xpos -673\n  ypos 1214\n }\nset N9b1ab830 [stack 0]\n Dot {\n  name Dot54\n  xpos -673\n  ypos 1314\n }\nset N9b1af1a0 [stack 0]\n Dot {\n  name Dot55\n  xpos -775\n  ypos 1314\n }\nset N9b1bb410 [stack 0]\n Dot {\n  name Dot7\n  xpos -828\n  ypos 1314\n }\nset N9b1a5e70 [stack 0]\n Dot {\n  name Dot8\n  xpos -828\n  ypos 1587\n }\npush $N9b31c740\n Dot {\n  name Dot16\n  xpos -417\n  ypos 133\n }\nset N9b1c2070 [stack 0]\n VectorGenerator {\n  vectorDetailLocal 1\n  smoothnessLocal 0.05\n  Advanced 1\n  Tolerances 1\n  name VectorGenerator2\n  xpos -265\n  ypos 124\n  cached true\n }\nset N9b329590 [stack 0]\n Dot {\n  name Dot3\n  xpos -949\n  ypos 133\n }\n Dot {\n  name Dot4\n  xpos -949\n  ypos 779\n }\nset N9a697120 [stack 0]\npush $N9a697120\n Merge2 {\n  inputs 2\n  operation average\n  Achannels forward\n  Bchannels backward\n  output forward\n  name Merge2\n  xpos -983\n  ypos 774\n }\n Shuffle {\n  in forward\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -983\n  ypos 810\n }\npush 0\n Merge2 {\n  inputs 2\n  metainput A\n  name Merge5\n  xpos -983\n  ypos 834\n }\n Matrix {\n  channels {rgba.red rgba.green -rgba.blue none}\n  matrix {\n      {-1 -1 -1}\n      {-1 8 -1}\n      {-1 -1 -1}\n    }\n  name Matrix1\n  xpos -983\n  ypos 857\n }\n Expression {\n  channel0 alpha\n  expr0 (abs(r)+abs(g))*.5\n  channel1 none\n  channel2 none\n  channel3 none\n  name Expression1\n  xpos -983\n  ypos 893\n }\n Blur {\n  channels alpha\n  size 2\n  name Blur3\n  xpos -983\n  ypos 917\n }\n FrameBlend {\n  channels alpha\n  numframes 3\n  startframe {{frame-(1+x2)}}\n  endframe {{frame+(1+x2)}}\n  userange true\n  name FrameBlend1\n  xpos -983\n  ypos 953\n }\n FrameBlend {\n  channels alpha\n  numframes 3\n  startframe {{frame-(1+x2)}}\n  endframe {{frame+(1+x2)}}\n  userange true\n  name FrameBlend2\n  xpos -983\n  ypos 989\n  disable {{\"iterations < 2\"}}\n }\n FrameBlend {\n  channels alpha\n  numframes 3\n  startframe {{frame-(1+x2)}}\n  endframe {{frame+(1+x2)}}\n  userange true\n  name FrameBlend3\n  xpos -983\n  ypos 1025\n  disable {{\"iterations < 3\"}}\n }\n FrameBlend {\n  channels alpha\n  numframes 3\n  startframe {{frame-(1+x2)}}\n  endframe {{frame+(1+x2)}}\n  userange true\n  name FrameBlend4\n  xpos -983\n  ypos 1061\n  disable {{\"iterations < 4\"}}\n }\n FrameBlend {\n  channels alpha\n  numframes 3\n  startframe {{frame-(1+x2)}}\n  endframe {{frame+(1+x2)}}\n  userange true\n  name FrameBlend5\n  xpos -983\n  ypos 1097\n  disable {{\"iterations < 5\"}}\n }\n Grade {\n  channels alpha\n  add {{-(motion_threshold**2)}}\n  name Grade1\n  xpos -983\n  ypos 1133\n }\n Blur {\n  channels alpha\n  size {{abs(smooth_threshold)+.5}}\n  name Blur2\n  xpos -983\n  ypos 1169\n }\nset N9b46ae90 [stack 0]\n Clamp {\n  channels alpha\n  name Clamp2\n  xpos -983\n  ypos 1364\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  xpos -983\n  ypos 1400\n }\nset N9b53fac0 [stack 0]\n Dot {\n  name Dot6\n  xpos -949\n  ypos 1516\n }\n Dot {\n  name Dot5\n  xpos -559\n  ypos 1516\n }\npush $N9b46ae90\npush $N9b1ab830\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -983\n  ypos 1205\n }\n Median {\n  size 1\n  ignore_top_line false\n  name Median1\n  xpos -983\n  ypos 1241\n  disable {{1-median}}\n }\n Premult {\n  name Premult1\n  xpos -983\n  ypos 1265\n }\npush $N9b1c2070\n Expression {\n  channel0 motion\n  expr0 0\n  channel1 none\n  channel2 none\n  channel3 none\n  name Expression2\n  xpos -451\n  ypos 160\n }\npush $N9b329590\n Switch {\n  inputs 2\n  which {{static}}\n  name Switch7\n  xpos -265\n  ypos 160\n }\n Blur {\n  channels motion\n  size {{1+parent.VectorGenerator2.smoothness*5}}\n  filter triangle\n  name Blur1\n  xpos -265\n  ypos 184\n }\n Dot {\n  name Dot12\n  xpos -231\n  ypos 262\n }\nset N9b4950a0 [stack 0]\n Dot {\n  name Dot18\n  xpos -231\n  ypos 336\n }\nset N9b498c70 [stack 0]\n Dot {\n  name Dot20\n  xpos -231\n  ypos 474\n }\nset N9b49c880 [stack 0]\n Dot {\n  name Dot21\n  xpos -231\n  ypos 548\n }\nset N9b4a0490 [stack 0]\n Dot {\n  name Dot22\n  xpos -231\n  ypos 608\n }\n Dot {\n  name Dot19\n  xpos -231\n  ypos 686\n }\nset N9b4a7cb0 [stack 0]\n Dot {\n  name Dot28\n  xpos -231\n  ypos 760\n }\nset N9b566d40 [stack 0]\n Dot {\n  name Dot29\n  xpos -231\n  ypos 820\n }\n Dot {\n  name Dot35\n  xpos -231\n  ypos 898\n }\nset N9b56eaf0 [stack 0]\n Dot {\n  name Dot36\n  xpos -231\n  ypos 972\n }\nset N9b5729c0 [stack 0]\n Dot {\n  name Dot37\n  xpos -231\n  ypos 1110\n }\nset N9b576890 [stack 0]\n Dot {\n  name Dot43\n  xpos -231\n  ypos 1184\n }\nset N9b57a760 [stack 0]\npush $N9b576890\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset39\n  xpos 182\n  ypos 1107\n }\npush $N9b5729c0\npush $N9b56eaf0\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset33\n  xpos 182\n  ypos 895\n }\npush $N9b566d40\npush $N9b4a7cb0\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset27\n  xpos 182\n  ypos 683\n }\npush $N9b4a0490\npush $N9b49c880\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset21\n  xpos 182\n  ypos 471\n }\npush $N9b498c70\npush $N9b4950a0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset18\n  xpos -25\n  ypos 259\n }\npush $N9b1c2070\n Dot {\n  name Dot11\n  xpos -417\n  ypos 205\n }\nset N9b5a2ca0 [stack 0]\n Dot {\n  name Dot15\n  xpos -95\n  ypos 205\n }\nset N9b4aa8b0 [stack 0]\n TimeOffset {\n  time_offset 2\n  time \"\"\n  name TimeOffset17\n  xpos -129\n  ypos 223\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy17\n  xpos -129\n  ypos 249\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort17\n  xpos -129\n  ypos 297\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy18\n  xpos -129\n  ypos 321\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort18\n  xpos -129\n  ypos 369\n }\npush $N9b4950a0\npush $N9b5a2ca0\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset15\n  xpos -341\n  ypos 223\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy15\n  xpos -341\n  ypos 247\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort15\n  xpos -341\n  ypos 295\n }\nset N9b5d6e50 [stack 0]\npush 0\npush $N9b498c70\npush $N9b4950a0\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset19\n  xpos 182\n  ypos 259\n }\npush $N9b4aa8b0\n Dot {\n  name Dot17\n  xpos 106\n  ypos 205\n }\n TimeOffset {\n  time_offset -2\n  time \"\"\n  name TimeOffset20\n  xpos 72\n  ypos 223\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy19\n  xpos 72\n  ypos 247\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort19\n  xpos 72\n  ypos 295\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy20\n  xpos 72\n  ypos 321\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort20\n  xpos 72\n  ypos 369\n }\npush $N9b4950a0\npush $N9b5a2ca0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset16\n  xpos -451\n  ypos 223\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy16\n  xpos -451\n  ypos 247\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter Lanczos4\n  name IDistort16\n  xpos -451\n  ypos 295\n }\nset N9b735d90 [stack 0]\n Merge2 {\n  inputs 4+1\n  operation average\n  name Merge14\n  xpos -341\n  ypos 369\n }\npush $N9b5d6e50\npush $N9b735d90\n Merge2 {\n  inputs 2\n  operation average\n  name Merge13\n  xpos -451\n  ypos 369\n }\n Switch {\n  inputs 2\n  which {{parent.x2}}\n  name Switch1\n  xpos -451\n  ypos 393\n }\nset N9b75a2d0 [stack 0]\n Dot {\n  name Dot23\n  xpos -417\n  ypos 417\n }\nset N9b760d70 [stack 0]\n Dot {\n  name Dot24\n  xpos -95\n  ypos 417\n }\nset N9b764ca0 [stack 0]\n Dot {\n  name Dot25\n  xpos 106\n  ypos 417\n }\n TimeOffset {\n  time_offset -2\n  time \"\"\n  name TimeOffset22\n  xpos 72\n  ypos 435\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy21\n  xpos 72\n  ypos 459\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort21\n  xpos 72\n  ypos 507\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy22\n  xpos 72\n  ypos 533\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort22\n  xpos 72\n  ypos 581\n }\npush $N9b4a0490\npush $N9b49c880\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset23\n  xpos -25\n  ypos 471\n }\npush $N9b764ca0\n TimeOffset {\n  time_offset 2\n  time \"\"\n  name TimeOffset24\n  xpos -129\n  ypos 435\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy23\n  xpos -129\n  ypos 461\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort23\n  xpos -129\n  ypos 509\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy24\n  xpos -129\n  ypos 533\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort24\n  xpos -129\n  ypos 581\n }\npush $N9b49c880\npush $N9b760d70\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset25\n  xpos -341\n  ypos 435\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy25\n  xpos -341\n  ypos 459\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort25\n  xpos -341\n  ypos 507\n }\nset N9b78c4c0 [stack 0]\npush 0\npush $N9b760d70\n Dot {\n  name Dot26\n  xpos -520\n  ypos 417\n }\n Dot {\n  name Dot27\n  xpos -520\n  ypos 584\n }\nset N9b79a1c0 [stack 0]\npush $N9b49c880\npush $N9b760d70\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset26\n  xpos -451\n  ypos 435\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy26\n  xpos -451\n  ypos 459\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort26\n  xpos -451\n  ypos 507\n }\nset N9b4ef880 [stack 0]\n Merge2 {\n  inputs 5+1\n  operation average\n  name Merge15\n  xpos -341\n  ypos 581\n }\npush $N9b79a1c0\npush 0\npush $N9b78c4c0\npush $N9b4ef880\n Merge2 {\n  inputs 3+1\n  operation average\n  name Merge16\n  xpos -451\n  ypos 581\n }\n Switch {\n  inputs 2\n  which {{parent.Switch1.which}}\n  name Switch2\n  xpos -451\n  ypos 605\n }\nset N9b7b1250 [stack 0]\n Dot {\n  name Dot30\n  xpos -417\n  ypos 629\n }\nset N9b7b7a60 [stack 0]\n Dot {\n  name Dot31\n  xpos -95\n  ypos 629\n }\nset N9b7bb9a0 [stack 0]\n Dot {\n  name Dot32\n  xpos 106\n  ypos 629\n }\n TimeOffset {\n  time_offset -2\n  time \"\"\n  name TimeOffset28\n  xpos 72\n  ypos 647\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy27\n  xpos 72\n  ypos 671\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort27\n  xpos 72\n  ypos 719\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy28\n  xpos 72\n  ypos 745\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort28\n  xpos 72\n  ypos 793\n }\npush $N9b566d40\npush $N9b4a7cb0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset29\n  xpos -25\n  ypos 683\n }\npush $N9b7bb9a0\n TimeOffset {\n  time_offset 2\n  time \"\"\n  name TimeOffset30\n  xpos -129\n  ypos 647\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy29\n  xpos -129\n  ypos 673\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort29\n  xpos -129\n  ypos 721\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy30\n  xpos -129\n  ypos 745\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort30\n  xpos -129\n  ypos 793\n }\npush $N9b4a7cb0\npush $N9b7b7a60\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset31\n  xpos -341\n  ypos 647\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy31\n  xpos -341\n  ypos 671\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort31\n  xpos -341\n  ypos 719\n }\nset N9b64a9c0 [stack 0]\npush 0\npush $N9b7b7a60\n Dot {\n  name Dot33\n  xpos -520\n  ypos 629\n }\n Dot {\n  name Dot34\n  xpos -520\n  ypos 796\n }\nset N9d141e00 [stack 0]\npush $N9b4a7cb0\npush $N9b7b7a60\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset32\n  xpos -451\n  ypos 647\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy32\n  xpos -451\n  ypos 671\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort32\n  xpos -451\n  ypos 719\n }\nset N9d158e90 [stack 0]\n Merge2 {\n  inputs 5+1\n  operation average\n  name Merge17\n  xpos -341\n  ypos 793\n }\npush $N9d141e00\npush 0\npush $N9b64a9c0\npush $N9d158e90\n Merge2 {\n  inputs 3+1\n  operation average\n  name Merge18\n  xpos -451\n  ypos 793\n }\n Switch {\n  inputs 2\n  which {{parent.Switch1.which}}\n  name Switch3\n  xpos -451\n  ypos 817\n }\nset N9d010430 [stack 0]\n Dot {\n  name Dot38\n  xpos -417\n  ypos 841\n }\nset N9d016f10 [stack 0]\n Dot {\n  name Dot39\n  xpos -95\n  ypos 841\n }\nset N9d01ae50 [stack 0]\n Dot {\n  name Dot40\n  xpos 106\n  ypos 841\n }\n TimeOffset {\n  time_offset -2\n  time \"\"\n  name TimeOffset34\n  xpos 72\n  ypos 859\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy33\n  xpos 72\n  ypos 883\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort33\n  xpos 72\n  ypos 931\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy34\n  xpos 72\n  ypos 957\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort34\n  xpos 72\n  ypos 1005\n }\npush $N9b5729c0\npush $N9b56eaf0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset35\n  xpos -25\n  ypos 895\n }\npush $N9d01ae50\n TimeOffset {\n  time_offset 2\n  time \"\"\n  name TimeOffset36\n  xpos -129\n  ypos 859\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy35\n  xpos -129\n  ypos 885\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort35\n  xpos -129\n  ypos 933\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy36\n  xpos -129\n  ypos 957\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort36\n  xpos -129\n  ypos 1005\n }\npush $N9b56eaf0\npush $N9d016f10\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset37\n  xpos -341\n  ypos 859\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy37\n  xpos -341\n  ypos 883\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort37\n  xpos -341\n  ypos 931\n }\nset N9d0a2b50 [stack 0]\npush 0\npush $N9d016f10\n Dot {\n  name Dot41\n  xpos -520\n  ypos 841\n }\n Dot {\n  name Dot42\n  xpos -520\n  ypos 1008\n }\nset N9d0b08b0 [stack 0]\npush $N9b56eaf0\npush $N9d016f10\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset38\n  xpos -451\n  ypos 859\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy38\n  xpos -451\n  ypos 883\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort38\n  xpos -451\n  ypos 931\n }\nset N995862f0 [stack 0]\n Merge2 {\n  inputs 5+1\n  operation average\n  name Merge19\n  xpos -341\n  ypos 1005\n }\npush $N9d0b08b0\npush 0\npush $N9d0a2b50\npush $N995862f0\n Merge2 {\n  inputs 3+1\n  operation average\n  name Merge20\n  xpos -451\n  ypos 1005\n }\n Switch {\n  inputs 2\n  which {{parent.Switch1.which}}\n  name Switch4\n  xpos -451\n  ypos 1029\n }\nset N9d0c2bf0 [stack 0]\n Dot {\n  name Dot44\n  xpos -417\n  ypos 1053\n }\nset N9d0c96e0 [stack 0]\n Dot {\n  name Dot45\n  xpos -95\n  ypos 1053\n }\nset N9d0cd620 [stack 0]\n Dot {\n  name Dot46\n  xpos 106\n  ypos 1053\n }\n TimeOffset {\n  time_offset -2\n  time \"\"\n  name TimeOffset40\n  xpos 72\n  ypos 1071\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy39\n  xpos 72\n  ypos 1095\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort39\n  xpos 72\n  ypos 1143\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy40\n  xpos 72\n  ypos 1169\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort40\n  xpos 72\n  ypos 1217\n }\npush $N9b57a760\npush $N9b576890\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset41\n  xpos -25\n  ypos 1107\n }\npush $N9d0cd620\n TimeOffset {\n  time_offset 2\n  time \"\"\n  name TimeOffset42\n  xpos -129\n  ypos 1071\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy41\n  xpos -129\n  ypos 1097\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort41\n  xpos -129\n  ypos 1145\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy42\n  xpos -129\n  ypos 1169\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort42\n  xpos -129\n  ypos 1217\n }\npush $N9b576890\npush $N9d0c96e0\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset43\n  xpos -341\n  ypos 1071\n }\n Copy {\n  inputs 2\n  from0 forward.u\n  to0 forward.u\n  from1 forward.v\n  to1 forward.v\n  name Copy43\n  xpos -341\n  ypos 1095\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort43\n  xpos -341\n  ypos 1143\n }\nset N9d2592a0 [stack 0]\npush 0\npush $N9d0c96e0\n Dot {\n  name Dot47\n  xpos -520\n  ypos 1053\n }\n Dot {\n  name Dot48\n  xpos -520\n  ypos 1220\n }\nset N9d267000 [stack 0]\npush $N9b576890\npush $N9d0c96e0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name TimeOffset44\n  xpos -451\n  ypos 1071\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 forward.u\n  from1 backward.v\n  to1 forward.v\n  name Copy44\n  xpos -451\n  ypos 1095\n }\n IDistort {\n  channels rgb\n  uv forward\n  filter {{IDistort16.filter}}\n  name IDistort44\n  xpos -451\n  ypos 1143\n }\nset N9d27d2f0 [stack 0]\n Merge2 {\n  inputs 5+1\n  operation average\n  name Merge21\n  xpos -341\n  ypos 1217\n }\npush $N9d267000\npush 0\npush $N9d2592a0\npush $N9d27d2f0\n Merge2 {\n  inputs 3+1\n  operation average\n  name Merge22\n  xpos -451\n  ypos 1217\n }\n Switch {\n  inputs 2\n  which {{parent.Switch1.which}}\n  name Switch6\n  xpos -451\n  ypos 1241\n }\npush $N9d0c2bf0\n Dot {\n  name Dot49\n  xpos -578\n  ypos 1032\n }\npush $N9d010430\n Dot {\n  name Dot50\n  xpos -578\n  ypos 820\n }\npush 0\npush $N9b7b1250\n Dot {\n  name Dot51\n  xpos -578\n  ypos 608\n }\npush $N9b75a2d0\n Dot {\n  name Dot52\n  xpos -578\n  ypos 396\n }\n Dissolve {\n  inputs 5+1\n  channels rgb\n  which {{parent.iterations-1}}\n  name Dissolve1\n  xpos -612\n  ypos 1241\n }\n Merge2 {\n  inputs 2\n  output rgb\n  name Merge1\n  xpos -612\n  ypos 1265\n  disable {{1-fix_artifacts}}\n }\npush 0\n Merge2 {\n  inputs 2\n  bbox A\n  metainput A\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge3\n  xpos -612\n  ypos 1289\n }\n Clamp {\n  channels rgb\n  name Clamp1\n  xpos -612\n  ypos 1313\n }\n Dot {\n  name Dot56\n  xpos -578\n  ypos 1337\n }\nset N9d186c80 [stack 0]\n Expression {\n  channel0 rgb\n  expr0 r+g+b\n  channel1 none\n  channel2 none\n  channel3 none\n  enable_mix_luminance false\n  name Expression4\n  xpos -612\n  ypos 1355\n }\npush $N9b1af1a0\n Expression {\n  channel0 rgb\n  expr0 r+g+b\n  channel1 none\n  channel2 none\n  channel3 none\n  enable_mix_luminance false\n  name Expression5\n  xpos -707\n  ypos 1332\n }\n Dot {\n  name Dot1\n  xpos -673\n  ypos 1382\n }\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{luminance}}\n  name Dissolve2\n  xpos -612\n  ypos 1379\n }\n Dot {\n  name Dot59\n  xpos -578\n  ypos 1497\n }\npush $N9b53fac0\npush $N9d186c80\n Dot {\n  name Dot57\n  xpos -474\n  ypos 1337\n }\n Expression {\n  temp_name0 L\n  temp_expr0 r+g+b\n  expr0 \"L == 0 ? 0.5 : r/L\"\n  expr1 \"L == 0 ? 0.5 : g/L\"\n  expr2 \"L == 0 ? 0.5 : b/L\"\n  channel3 none\n  enable_mix_luminance false\n  name Expression8\n  xpos -508\n  ypos 1355\n }\n Blur {\n  inputs 1+1\n  size 12\n  mix 0.5\n  name Blur4\n  xpos -508\n  ypos 1394\n  disable {{(1-fix_artifacts*median)}}\n }\npush $N9b1bb410\n Expression {\n  temp_name0 L\n  temp_expr0 r+g+b\n  expr0 \"L == 0 ? 0.5 : r/L\"\n  expr1 \"L == 0 ? 0.5 : g/L\"\n  expr2 \"L == 0 ? 0.5 : b/L\"\n  channel3 none\n  enable_mix_luminance false\n  name Expression6\n  xpos -809\n  ypos 1332\n }\n Dot {\n  name Dot58\n  xpos -775\n  ypos 1473\n }\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{chrominance}}\n  name Dissolve3\n  xpos -508\n  ypos 1470\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge23\n  xpos -508\n  ypos 1494\n }\n Dot {\n  name Dot60\n  xpos -474\n  ypos 1542\n }\nset N9d31fed0 [stack 0]\npush $N9b1a5e70\n Dot {\n  name Dot61\n  xpos -885\n  ypos 1314\n }\n Merge2 {\n  inputs 2\n  operation minus\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge24\n  xpos -919\n  ypos 1539\n }\n Dot {\n  name Dot62\n  xpos -885\n  ypos 1563\n }\npush $N9d31fed0\n Switch {\n  inputs 3\n  which {{(node_output)*(1-preview_mask)+preview_mask*2}}\n  name Switch5\n  xpos -508\n  ypos 1560\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge4\n  xpos -508\n  ypos 1584\n  disable {{\"1-(disable == 2)\"}}\n }\n Output {\n  name Output1\n  xpos -508\n  ypos 1608\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Distort.gizmo",
    "content": "Group {\n name X_Distort\n help \"Create distortion with great control and flexibility.\"\n knobChanged \"n = nuke.thisNode()\\nif n.input(2):\\n    n\\[\\\"mask\\\"].setEnabled(True)\\nelse:\\n    n\\[\\\"mask\\\"].setEnabled(False)\\n    \\n    \\nif n\\[\\\"distort_from\\\"].value() == \\\"Noise\\\":\\n    n\\[\\\"noise_size\\\"].setVisible(True)\\n    n\\[\\\"noise_z\\\"].setVisible(True)\\nelse:\\n    n\\[\\\"noise_size\\\"].setVisible(False)\\n    n\\[\\\"noise_z\\\"].setVisible(False)\\n\\nif n\\[\\\"enable_chroma\\\"].value() == 1:\\n    n\\[\\\"aberration\\\"].setVisible(True)\\n    n\\[\\\"blur_aberration\\\"].setVisible(True)\\nelse:\\n    n\\[\\\"aberration\\\"].setVisible(False)\\n    n\\[\\\"blur_aberration\\\"].setVisible(False)\\n    \\nn\\[\\\"mix\\\"].setValue(min(max(0,n\\[\\\"mix\\\"].value()),1))\\nn\\[\\\"blur_map\\\"].setValue(max(0,n\\[\\\"blur_map\\\"].value()))\\nn\\[\\\"max_blur\\\"].setValue(max(0,n\\[\\\"max_blur\\\"].value()))\\n\"\n tile_color 0xa57aaaff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 X_Distort}\n addUserKnob {6 aberration_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n aberration_panelDropped true\n addUserKnob {41 \"Local GPU: \" T BlinkScript.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {7 distort t \"The amount of displacement going to be applied.\" R -100 100}\n distort -22.5\n addUserKnob {7 blur t \"The amount of smoothing going to be applied.\" R -100 100}\n blur 11\n addUserKnob {3 max_blur l max t \"Limit the vector blur to this number of samples.\\nVector Blur can be expensive, this limits the time it takes to render, but sometimes artifacts can appear.\\n\\nSetting this parameter to 0 will disable the limit.\" -STARTLINE}\n max_blur 50\n addUserKnob {7 direction t \"The direction of the generated vector map:\\n\\n  <b>At 0:</b> Pixels will be attracted to the brighter areas.\\n  <b>At 0.5:</b> Pixels will be attracted to the darker areas.\\n  <b>At 0.25 or .75:</b> Pixels will spin around the bright ans dark areas.\\n\\nThis pattern repeats, so a value of 1 will produce the same result as a value of 0 and a value of 0.5 will produce the same result as a value of 1.5.\"}\n direction 0.5\n addUserKnob {4 filter t \"<b>impulse</b> very fast but can sometimes show pixelation or moire patterns.\\n<b>bilinear</b> slower but smoothes out  most artifacts or unwanted patterns.\" M {impulse bilinear}}\n filter bilinear\n addUserKnob {26 \"\"}\n addUserKnob {4 distort_from l \"distortion from\" t \"Choose where do you want to create the distortion map from:\\n\\n<b>· Auto</b> will look at the inputs of the node and decid which one to use.\\n<b>· Source</b> will distort the image using the information on the original image.\\n<b>· Dist Map</b> will distort the image using the information on the secondary input of this node.\\n<b>· Noise</b> will generate an animated fractal that will be used to create the distortion map.\" M {Auto Source Map Noise \"\" \"\"}}\n distort_from Noise\n addUserKnob {6 use_all_channels l \"use all channels\" t \"By default the distortion map will be generated from the average of the rgb channel. If this setting is enabled the channels will be paired up.\\nThe red from the source will be distorted with the red from the map, the green with the green and so on. This allows you to have different distortion maps per each channel.\" -STARTLINE}\n addUserKnob {7 noise_size l size t \"The relative frequency of the turbulence pattern. Big values will generate low frequency distortion.\" R 1 1000}\n noise_size 100\n addUserKnob {7 noise_z l z t \"Use this to animate the noise pattern.\\nFor instance you could try with the expression \\\"frame/100\\\".\\n\\nRight click --> Add expression\" -STARTLINE}\n noise_z 4.815162342\n addUserKnob {7 blur_map l \"blur map\" t \"Filter the map to make it smoother and get rid of the high frequency distortions. Increase this value to make a smoother distortion.\" R 0 100}\n blur_map 50\n addUserKnob {6 fast_blur_map l fast t \"Uses a multipass blur that, altough not as accurate as a bruteforce blur, gets rid of the artifacts at a reduced cost. It is recommended to keep this on.\" -STARTLINE}\n fast_blur_map true\n addUserKnob {26 \"\"}\n addUserKnob {6 enable_chroma l \"chromatic aberration\" t \"Enable per-channel control on the distortion.\" +STARTLINE}\n addUserKnob {19 aberration l distort t \"This is a multiplier on the distortion for every channel. Use this to simulate light frequencies being separated.\" +HIDDEN R -2 2}\n aberration {1.2 1 0.8 1}\n addUserKnob {6 aberration_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 aberration_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {19 blur_aberration l blur t \"This is a multiplier on the blur for every channel. Use this to simulate light frequencies being separated.\" +HIDDEN}\n blur_aberration {1 1 1 1}\n addUserKnob {6 blur_aberration_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 blur_aberration_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {4 output_form l output t \"Choose what type of data you would like to output.\\n\\n<b>Result</b> will output the distorted and filtered input.\\n<b>STMap</b> will output a UV map to be used in conjunction with the STMap node.\\n<b>IDistort</b> will output a displacement map to be used in conjunction with the IDistort node.\" M {Result STMap IDistort \"\"}}\n addUserKnob {41 mask l \"  mask\" t \"This will mask the distortion map before the effect. Use this to limit the influence of the distortion to certain areas.\" -STARTLINE T Mask.maskChannelMask}\n addUserKnob {6 invert_mask l invert t \"invert the effect of the mask\" -STARTLINE}\n addUserKnob {41 fringe t \"Limits the effect on the edges of the mask.\" -STARTLINE T Mask.fringe}\n addUserKnob {7 mix t \"Blend between the original source and the applied effect.\"}\n mix 1\n addUserKnob {20 Settings l \"GPU Settings\"}\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2017</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l <center>version</center> T \"nuke.message('X_Distort Gizmo <i>v4.1</i><br><b>Xavier Martín © 2017</b>')\" +STARTLINE}\n addUserKnob {22 help_documentation l <center>?</center> -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/gizmos/transform/x_distort\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_distort/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Input {\n  inputs 0\n  name InputSrc\n  xpos -140\n  ypos -460\n }\n Dot {\n  name Dot3\n  xpos -106\n  ypos -406\n }\nset N9d407b20 [stack 0]\n Dot {\n  name Dot2\n  xpos 94\n  ypos -406\n }\nset N9d40ba30 [stack 0]\n Dot {\n  name Dot1\n  xpos 94\n  ypos -356\n }\nset N9d40f900 [stack 0]\n Noise {\n  cliptype bbox\n  replace true\n  size {{parent.noise_size}}\n  zoffset {{parent.noise_z}}\n  gamma 1\n  center {1024 778}\n  name Noise1\n  xpos 60\n  ypos -310\n }\n Input {\n  inputs 0\n  name InputDist_Map\n  xpos 260\n  ypos -460\n  number 1\n }\n AdjBBox {\n  numpixels 1\n  name AdjBBox2\n  xpos 260\n  ypos -408\n  disable {{\"!\\[exists parent.input1]\"}}\n }\nset N9d433870 [stack 0]\npush $N9d40f900\npush $N9d433870\npush $N9d40ba30\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input1]\"}}\n  name Auto\n  xpos 160\n  ypos -360\n }\n Switch {\n  inputs 4\n  which {{distort_from}}\n  name Switch1\n  xpos 260\n  ypos -310\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 260\n  ypos -258\n }\n Saturation {\n  saturation 0\n  mode Average\n  name Saturation1\n  xpos 260\n  ypos -210\n  disable {{use_all_channels}}\n }\n Remove {\n  operation keep\n  channels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  name Remove2\n  xpos 260\n  ypos -160\n  disable {{use_all_channels}}\n }\nset N9d452fd0 [stack 0]\n Dot {\n  name Dot6\n  xpos 194\n  ypos -156\n }\n Dot {\n  name Dot7\n  xpos 194\n  ypos 144\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 460\n  ypos -10\n  number 2\n }\n Dot {\n  name Dot9\n  xpos 494\n  ypos 94\n }\npush $N9d452fd0\n Blur {\n  size {{blur_map}}\n  quality {{parent.fast_blur_map?15:blur_map+1}}\n  crop false\n  name Blur1\n  xpos 260\n  ypos -116\n  disable {{size<1}}\n }\n Blur {\n  size {{blur_map/15}}\n  crop false\n  name Blur2\n  xpos 260\n  ypos -66\n  disable {{(size<1)+(1-parent.fast_blur_map)}}\n }\n Blur {\n  size {{blur_map/225}}\n  crop false\n  name Blur3\n  xpos 260\n  ypos -16\n  disable {{(size<1)+(1-parent.fast_blur_map)}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  xpos 260\n  ypos 40\n  disable {{use_all_channels}}\n }\n Multiply {\n  inputs 1+1\n  value 0\n  invert_mask {{1-parent.invert_mask}}\n  name Mask\n  xpos 260\n  ypos 84\n  disable {{parent.inputs!=3}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 260\n  ypos 140\n }\n Dot {\n  name Dot8\n  xpos 294\n  ypos 194\n }\nset N9d4aa3b0 [stack 0]\n BlinkScript {\n  ProgramGroup 1\n  KernelDescription \"2 \\\"X_Distort\\\" iterate pixelWise c808228749d48a9f044958c8efc9a2b21aa668de9616076bf59cb1bcfcd28dcc 2 \\\"map\\\" Read Ranged2D \\\"dst\\\" Write Point 4 \\\"distortion\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"direction\\\" Float 1 AAAAAA== \\\"stmap\\\" Int 1 AAAAAA== \\\"format\\\" Int 2 AAAAAAAAAAA= 4 \\\"distortion\\\" 4 1 \\\"direction\\\" 1 1 \\\"stmap\\\" 1 1 \\\"format\\\" 2 1 4 \\\"maprangeMin\\\" Int 2 1 AAAAAAAAAAA= \\\"maprangeMax\\\" Int 2 1 AAAAAAAAAAA= \\\"mapconstEdgeColor\\\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"rotate\\\" Float 2 1 AAAAAAAAAAA=\"\n  kernelSource \"kernel X_Distort : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRanged2D, eEdgeConstant> map; // the distortion map image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float4 distortion;\\n    float direction;\\n    int stmap;\\n    int2 format;\\n\\n  local:\\n    float2 rotate;\\n\\n  void init() \\{\\n    // Initialise trigonometric functions.\\n    rotate = float2(sin(direction*6.28318f),\\n                    cos(direction*6.28318f));\\n    map.setRange(-1,-1,1,1);\\n  \\}\\n\\n  void process(int2 pos) \\{\\n\\n    // Sample gradient\\n    float2 distort;\\n    distort = float2(map(1,0,0)-map(-1,0,0),\\n                    map(0,1,0)-map(0,-1,0));\\n\\n    // Rotate vector\\n    distort = float2(distort.x*rotate.y+distort.y*rotate.x,\\n                    -distort.x*rotate.x+distort.y*rotate.y);\\n    distort *= distortion.x;\\n\\n    if(stmap==1)\\n      distort = (distort+float2(pos.x,pos.y))/float2(format.x,format.y);\\n\\n    dst() = float4(distort.x,distort.y,0,0);\\n  \\}\\n\\};\\n\"\n  useGPUIfAvailable {{parent.BlinkScript.useGPUIfAvailable}}\n  rebuild \"\"\n  X_Distort_distortion {{parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2}}\n  X_Distort_direction {{parent.direction+.5}}\n  X_Distort_stmap {{2-output_form}}\n  X_Distort_format {{width} {height}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 260\n  ypos 234\n }\n Dot {\n  name Dot11\n  xpos 294\n  ypos 344\n }\npush $N9d4aa3b0\npush $N9d407b20\n AdjBBox {\n  numpixels 1\n  name AdjBBox1\n  xpos -140\n  ypos -360\n  disable {{\"!\\[exists parent.input0]\"}}\n }\n Dot {\n  name Dot10\n  xpos -106\n  ypos 144\n }\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"X_Distort\\\" iterate componentWise b9627c0324b2a89d1b941c7c64b5afb3310f15cfcf6b1f077dd0574498415168 3 \\\"src\\\" Read Random \\\"map\\\" Read Ranged2D \\\"dst\\\" Write Point 5 \\\"distortion\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"vector_blur\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"direction\\\" Float 1 AAAAAA== \\\"filter\\\" Int 1 AAAAAA== \\\"max_steps\\\" Int 1 AAAAAA==\"\n  kernelSource \"kernel X_Distort : ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src; // the input image\\n  Image<eRead, eAccessRanged2D, eEdgeClamped> map; // the distortion map image\\n  Image<eWrite> dst; // the output image\\n\\n  param:\\n    float4 distortion;\\n    float4 vector_blur;\\n    float direction;\\n    int filter;\\n    int max_steps;\\n\\n  local:\\n    float2 rotate;\\n\\n  void init() \\{\\n    // Initialise trigonometric functions.\\n    rotate = float2(sin(direction*6.28318f),\\n                    cos(direction*6.28318f));\\n    map.setRange(-1,-1,1,1);\\n  \\}\\n\\n  void process(int3 pos) \\{\\n\\n    // Sample gradient\\n    float2 distort;\\n    distort = float2(map(1,0)-map(-1,0),\\n                    map(0,1)-map(0,-1));\\n\\n    // Rotate vector\\n    distort = float2(distort.x*rotate.y+distort.y*rotate.x,\\n                    -distort.x*rotate.x+distort.y*rotate.y);\\n\\n    // Sample source (no blur)\\n    if(fabs(vector_blur\\[pos.z])<0.01)\\{\\n      distort *= distortion\\[pos.z];\\n      distort += float2(pos.x,pos.y);\\n      if(filter==0)\\n        dst() = src(int(distort.x),int(distort.y));\\n      else\\n        dst() = bilinear(src,distort.x,distort.y);\\n    \\}\\n\\n    else \\{\\n\\n    // If vector blur is enabled\\n    // Create vector blur final coordiantes\\n      float2 blur = distort;\\n      blur *= distortion\\[pos.z]+vector_blur\\[pos.z];\\n      blur += float2(pos.x,pos.y);\\n      distort *= distortion\\[pos.z];\\n      distort += float2(pos.x,pos.y);\\n\\n    // Calculate length of the blur\\n      int distance;\\n      distance = ceil(length(distort-blur));\\n      if(max_steps>0)\\n        distance = min(distance,max_steps);\\n\\n\\n    // Accumulate pixels through blur\\n      if(filter==0)\\{\\n        float sum = src(int(distort.x),int(distort.y));\\n        float step = 0.0f;\\n        float2 dist_blur;\\n        for(int i = 0; i < distance; i++)\\{\\n          step = float(i)/(distance);\\n          dist_blur = distort*step+blur*(1.0-step);\\n          sum += src(int(dist_blur.x),int(dist_blur.y));\\n        \\}\\n        dst() = sum/(distance+1);\\n      \\}\\n\\n      else \\{\\n        float sum = bilinear(src,distort.x,distort.y);\\n        float step = 0.0f;\\n        float2 dist_blur;\\n        for(int i = 0; i < distance; i++)\\{\\n          step = float(i)/(distance);\\n          dist_blur = distort*step+blur*(1.0-step);\\n          sum += bilinear(src,dist_blur.x,dist_blur.y);\\n        \\}\\n        dst() = sum/(distance+1);\\n      \\}\\n    \\}\\n  \\}\\n\\};\\n\"\n  rebuild \"\"\n  X_Distort_distortion {{parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2} {parent.distort*(blur_map+1)*((aberration-1)*enable_chroma+1)*2}}\n  X_Distort_vector_blur {{parent.blur*(blur_map+1)*((blur_aberration-1)*enable_chroma+1)*2} {parent.blur*(blur_map+1)*((blur_aberration-1)*enable_chroma+1)*2} {parent.blur*(blur_map+1)*((blur_aberration-1)*enable_chroma+1)*2} {parent.blur*(blur_map+1)*((blur_aberration-1)*enable_chroma+1)*2}}\n  X_Distort_direction {{parent.direction+.5}}\n  X_Distort_filter {{filter}}\n  X_Distort_max_steps {{max_blur}}\n  rebuild_finalise \"\"\n  name BlinkScript\n  selected true\n  xpos -140\n  ypos 184\n }\npush $N9d407b20\n Dot {\n  name Dot5\n  xpos -206\n  ypos -406\n }\n Dot {\n  name Dot4\n  xpos -206\n  ypos 294\n }\n Dissolve {\n  inputs 2\n  channels rgba\n  which {{parent.mix}}\n  name Dissolve1\n  xpos -140\n  ypos 290\n }\n Switch {\n  inputs 2\n  which {{output_form}}\n  name Switch3\n  xpos -140\n  ypos 340\n }\n Output {\n  name Output1\n  xpos -140\n  ypos 440\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Sharpen.gizmo",
    "content": "Group {\n name X_Sharpen\n help \"An accelerated weighted sharpen filter. This does a similar operation to nuke's sharpen solving three of its issues: negative values, dark edges and hue inversions.\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"radius\\\":\\n        k.setValue(max(k.value(),0))\\n        \\nif k.name() == \\\"quality\\\":\\n        k.setValue(max(k.value(),1))\\n        \\nif k.name() == \\\"bias\\\":\\n        k.setValue(max(k.value(),0))\\n        \\nif k.name() == \\\"sharpen\\\":\\n        k.setValue(max(k.value(),0))\"\n tile_color 0xcc804eff\n addUserKnob {20 Sharpen}\n addUserKnob {41 \"Local GPU: \" T BlinkScript1.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {41 channels t \"Channels to apply the smoothing to.\" T Merge1.Achannels}\n addUserKnob {7 sharpen t \"Increase the local contrast of your image.\\nA value of 0 will leave the image untouched.\\nHigher values will result in crispier images.\" R 0 4}\n sharpen 1\n addUserKnob {7 radius t \"Radius to apply the sharpening to.\" R 0 100}\n radius 15\n addUserKnob {7 bias t \"In order to sharpen the image, a blurred copy of the image needs to be created.\\n\\nControlling the bias of the blur will avoid created banding or negative loves around edges.\\n\\nHigher values will apply the sharpen only to similar pixels, avoiding cross-object contamination  and unwanted artefacts.\\n\\nA value of 0 is equivalent to Nuke's sharpen.\" R 0 100}\n bias 40\n addUserKnob {3 quality l \"  quality \" t \"The maximum number of samples to use for the smoothing. When using very large radius the filter can become very slow. Limiting the number of samples will hugely increase performance at the cost of smoothing out some fine details.\" -STARTLINE}\n quality 15\n addUserKnob {41 unpremult T Unpremult1.alpha}\n addUserKnob {6 luma_only l \"luma only\" t \"If checked, only the luminance of the rgb will be sharpened, keeping the same hue and saturation as the input.\" +STARTLINE}\n luma_only true\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2017</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l <center>version</center> T \"nuke.message('X_Soften Gizmo <i>v1.0</i><br><b>Xavier Martín © 2017</b>')\" +STARTLINE}\n addUserKnob {22 help_documentation l <center>?</center> -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/blink/filters/x_sharpen\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_sharpen/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Input {\n  inputs 0\n  name Source\n  xpos 2960\n  ypos -660\n }\n Unpremult {\n  channels all\n  alpha -rgba.alpha\n  name Unpremult1\n  xpos 2960\n  ypos -616\n }\n Dot {\n  name Dot8\n  xpos 2994\n  ypos -556\n }\nset N8979500 [stack 0]\npush $N8979500\n Remove {\n  name Remove1\n  xpos 3060\n  ypos -566\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels rgb\n  name Merge1\n  xpos 3060\n  ypos -510\n }\n Dot {\n  name Dot3\n  xpos 3094\n  ypos -456\n }\nset N2fe7dc00 [stack 0]\n Dot {\n  name Dot2\n  xpos 3094\n  ypos -156\n }\npush $N2fe7dc00\n Dot {\n  name Dot4\n  xpos 3194\n  ypos -456\n }\n Saturation {\n  saturation 0\n  mode Average\n  name Saturation1\n  xpos 3160\n  ypos -410\n  disable {{1-parent.luma_only}}\n }\nset Na1860e00 [stack 0]\n Dot {\n  name Dot6\n  xpos 3394\n  ypos -406\n }\n Dot {\n  name Dot7\n  xpos 3394\n  ypos -206\n }\npush $Na1860e00\n Dot {\n  name Dot1\n  xpos 3194\n  ypos -356\n }\nset Na1861880 [stack 0]\n Blur {\n  channels rgba\n  size {{parent.radius/parent.quality}}\n  filter box\n  crop false\n  name Blur1\n  xpos 3260\n  ypos -310\n  disable {{parent.radius/parent.quality<=1}}\n }\npush $Na1861880\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"FastWeightedBlur\\\" iterate componentWise 7db38cadf585143162376d5e48625a8d4ef028893bbb529123eef77a2122fd98 3 \\\"src\\\" Read Point \\\"downres\\\" Read Ranged2D \\\"dst\\\" Write Point 4 \\\"Radius\\\" Float 1 AAAAAA== \\\"bias\\\" Float 1 AAAAAA== \\\"Quality\\\" Int 1 AAAAAA== \\\"luma\\\" Int 1 AAAAAA==\"\n  kernelSource \"kernel FastWeightedBlur : public ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessRanged2D, eEdgeClamped> downres;\\n  Image<eWrite, eAccessPoint> dst;\\n\\n  param:\\n    float Radius;\\n    float bias;\\n    int Quality;\\n    int luma;\\n\\n  void init() \\{\\n    downres.setRange(-Radius*Quality,-Radius*Quality,Radius*Quality,Radius*Quality);\\n  \\}\\n\\n  void process(int c) \\{\\n    int channel = 0;\\n    if(luma==0)\\n      channel = c;\\n    if(c==channel) \\{\\n      float sum = 0.0f;\\n      float sumWeight = 0.0f;\\n      float source = src();\\n      float weight = 0.0f;\\n      float sample = 0.0f;\\n      for(int j = -Quality; j <= Quality; j++) \\{\\n        for(int i = -Quality; i <= Quality; i++) \\{\\n          sample = downres(int(Radius*i),int(Radius*j));\\n          weight = 1.0/(pow(bias*(sample-source),2)+1);\\n          sum += sample*weight;\\n          sumWeight += weight;\\n        \\}\\n      \\}\\n      dst() = sum/sumWeight;\\n    \\}\\n  \\}\\n\\};\"\n  rebuild \"\"\n  FastWeightedBlur_Radius {{max(parent.radius/parent.quality,1)}}\n  FastWeightedBlur_bias {{parent.bias}}\n  FastWeightedBlur_Quality {{min(parent.quality,radius)}}\n  FastWeightedBlur_luma {{parent.luma_only}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 3160\n  ypos -266\n }\n MergeExpression {\n  inputs 2\n  expr0 Br==0?0:((Ar/Br)**sharpen)*Br\n  expr1 Bg==0?0:((Ag/Bg)**sharpen)*Bg\n  expr2 Bb==0?0:((Ab/Bb)**sharpen)*Bb\n  expr3 Ba==0?0:((Aa/Ba)**sharpen)*Ba\n  name MergeExpression2\n  xpos 3160\n  ypos -210\n  addUserKnob {20 User}\n  addUserKnob {7 sharpen}\n  sharpen {{parent.sharpen+1}}\n }\n MergeExpression {\n  inputs 2\n  temp_name0 Al\n  temp_expr0 (Ar+Ag+Ab)/3\n  expr0 Al==0?0:Ar*Br/Al\n  expr1 Al==0?0:Ag*Br/Al\n  expr2 Al==0?0:Ab*Br/Al\n  expr3 Aa\n  name MergeExpression1\n  xpos 3160\n  ypos -160\n  disable {{1-parent.luma_only}}\n }\npush $N8979500\n Dot {\n  name Dot5\n  xpos 2994\n  ypos -104\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels {{{parent.Merge1.Achannels}}}\n  output {{{parent.Merge1.Achannels}}}\n  name Merge2\n  xpos 3160\n  ypos -108\n }\n Premult {\n  channels all\n  alpha {{{parent.Unpremult1.alpha}}}\n  invert {{parent.Unpremult1.invert}}\n  name Premult1\n  xpos 3160\n  ypos -66\n }\n Output {\n  name Output1\n  xpos 3160\n  ypos -8\n }\nend_group"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Soften.gizmo",
    "content": "Group {\n name X_Soften\n help \"An accelerated weighted blur filter. This does a similar operation to the bilinear filter with a very reduced computational cost.\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"radius\\\":\\n        k.setValue(max(k.value(),0))\\n        \\nif k.name() == \\\"quality\\\":\\n        k.setValue(max(k.value(),1))\\n        \\nif k.name() == \\\"bias\\\":\\n        k.setValue(max(k.value(),0))\"\n tile_color 0xcc804eff\n addUserKnob {20 Soften}\n addUserKnob {41 \"Local GPU: \" T BlinkScript1.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BlinkScript1.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {41 channels t \"Channels to apply the smoothing to.\" T Merge1.Achannels}\n addUserKnob {7 radius t \"Radius to apply the smoothing to.\" R 0 100}\n radius 15\n addUserKnob {7 bias t \"This allows you to bias the blur in order to preserve edges.\\n\\nHigher values will preserve finer details. Lower values will smooth out more features.\\n\\nA value of 0 is equivalent to Nuke's box blur.\" R 0 100}\n bias 40\n addUserKnob {3 quality l \"  quality \" t \"The maximum number of samples to use for the smoothing. When using very large radius the filter can become very slow. Limiting the number of samples will hugely increase performance at the cost of smoothing out some fine details.\" -STARTLINE}\n quality 15\n addUserKnob {41 unpremult T Unpremult1.alpha}\n addUserKnob {6 luma_only l \"luma only\" t \"If checked, only the luminance of the rgb will be smoothed, keeping the same hue and saturation as the input.\" +STARTLINE}\n luma_only true\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2017</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l <center>version</center> T \"nuke.message('X_Soften Gizmo <i>v1.0</i><br><b>Xavier Martín © 2017</b>')\" +STARTLINE}\n addUserKnob {22 help_documentation l <center>?</center> -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/blink/filters/x_soften\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_sharpen/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Input {\n  inputs 0\n  name Source\n  xpos 2960\n  ypos -610\n }\n Unpremult {\n  channels all\n  alpha -rgba.alpha\n  name Unpremult1\n  xpos 2960\n  ypos -566\n }\nset Nb4cad180 [stack 0]\npush $Nb4cad180\n Remove {\n  name Remove1\n  xpos 3060\n  ypos -566\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels rgb\n  name Merge1\n  xpos 3060\n  ypos -510\n }\n Dot {\n  name Dot3\n  xpos 3094\n  ypos -456\n }\nset Nb4cac700 [stack 0]\n Dot {\n  name Dot2\n  xpos 3094\n  ypos -206\n }\npush $Nb4cac700\n Dot {\n  name Dot4\n  xpos 3194\n  ypos -456\n }\n Saturation {\n  saturation 0\n  mode Average\n  name Saturation1\n  xpos 3160\n  ypos -410\n  disable {{1-parent.luma_only}}\n }\n Dot {\n  name Dot1\n  xpos 3194\n  ypos -356\n }\nset Nb4cad880 [stack 0]\n Blur {\n  channels rgba\n  size {{parent.radius/parent.quality}}\n  filter box\n  crop false\n  name Blur1\n  xpos 3260\n  ypos -310\n  disable {{parent.radius/parent.quality<=1}}\n }\npush $Nb4cad880\n BlinkScript {\n  inputs 2\n  ProgramGroup 1\n  KernelDescription \"1 \\\"FastWeightedBlur\\\" iterate componentWise 7db38cadf585143162376d5e48625a8d4ef028893bbb529123eef77a2122fd98 3 \\\"src\\\" Read Point \\\"downres\\\" Read Ranged2D \\\"dst\\\" Write Point 4 \\\"Radius\\\" Float 1 AAAAAA== \\\"bias\\\" Float 1 AAAAAA== \\\"Quality\\\" Int 1 AAAAAA== \\\"luma\\\" Int 1 AAAAAA==\"\n  kernelSource \"kernel FastWeightedBlur : public ImageComputationKernel<eComponentWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessRanged2D, eEdgeClamped> downres;\\n  Image<eWrite, eAccessPoint> dst;\\n\\n  param:\\n    float Radius;\\n    float bias;\\n    int Quality;\\n    int luma;\\n\\n  void init() \\{\\n    downres.setRange(-Radius*Quality,-Radius*Quality,Radius*Quality,Radius*Quality);\\n  \\}\\n\\n  void process(int c) \\{\\n    int channel = 0;\\n    if(luma==0)\\n      channel = c;\\n    if(c==channel) \\{\\n      float sum = 0.0f;\\n      float sumWeight = 0.0f;\\n      float source = src();\\n      float weight = 0.0f;\\n      float sample = 0.0f;\\n      for(int j = -Quality; j <= Quality; j++) \\{\\n        for(int i = -Quality; i <= Quality; i++) \\{\\n          sample = downres(int(Radius*i),int(Radius*j));\\n          weight = 1.0/(pow(bias*(sample-source),2)+1);\\n          sum += sample*weight;\\n          sumWeight += weight;\\n        \\}\\n      \\}\\n      dst() = sum/sumWeight;\\n    \\}\\n  \\}\\n\\};\"\n  rebuild \"\"\n  FastWeightedBlur_Radius {{max(parent.radius/parent.quality,1)}}\n  FastWeightedBlur_bias {{parent.bias}}\n  FastWeightedBlur_Quality {{min(parent.quality,radius)}}\n  FastWeightedBlur_luma {{parent.luma_only}}\n  rebuild_finalise \"\"\n  name BlinkScript1\n  xpos 3160\n  ypos -266\n }\n MergeExpression {\n  inputs 2\n  temp_name0 Al\n  temp_expr0 (Ar+Ag+Ab)/3\n  expr0 Al==0?0:Ar*Br/Al\n  expr1 Al==0?0:Ag*Br/Al\n  expr2 Al==0?0:Ab*Br/Al\n  expr3 Aa\n  name MergeExpression1\n  selected true\n  xpos 3160\n  ypos -210\n  disable {{1-parent.luma_only}}\n }\npush $Nb4cad180\n Dot {\n  name Dot5\n  xpos 2994\n  ypos -156\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels {{{parent.Merge1.Achannels}}}\n  output {{{parent.Merge1.Achannels}}}\n  name Merge2\n  xpos 3160\n  ypos -160\n }\n Premult {\n  channels all\n  alpha {{{parent.Unpremult1.alpha}}}\n  invert {{parent.Unpremult1.invert}}\n  name Premult1\n  xpos 3160\n  ypos -116\n }\n Output {\n  name Output1\n  xpos 3160\n  ypos -60\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_X_Tesla.gizmo",
    "content": "Group {\n name X_Tesla\n help \"With this gizmo you can create lightning and electricity effects\"\n tile_color 0x1a3d99ff\n gl_color 0xbed7ffff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 Base}\n addUserKnob {12 point1}\n point1 {578 1162}\n addUserKnob {12 point2 t \"Sets the final point of the lightning, where the bolt dies.\"}\n point2 {1428 496}\n addUserKnob {3 arcs l bolts t \"A general multiplier that duplicates the entire structure multiple times, using the same settings for all the lightning bolts.\"}\n arcs 1\n addUserKnob {26 \"\"}\n addUserKnob {7 amplitude t \"The bigger the amplitude, the less straight and more wiggly the lightning will be.\" R 0 500}\n amplitude 250\n addUserKnob {7 soft_start l \"soft start\" t \"Sets the initial amplitude. Values over 0 will assure that the lightning starts in the point1. Bigger values make a smoother transition.\"}\n soft_start 0.255\n addUserKnob {7 soft_end l \"soft end\" t \"Sets the final amplitude. A value over 0 will assure that the lightning dies at point2. Bigger values make a smoother transition.\"}\n soft_end 0.04\n addUserKnob {26 \"\"}\n addUserKnob {7 frequency t \"How often the lightning changes direction. Higher values will do smaller shapes.\"}\n frequency 0.4\n addUserKnob {3 complexity t \"How many octaves are used in the fractal noise. Higher values will produce a more detailed lightning, but it is slower. Usually there's no difference over 8 octaves.\"}\n complexity 6\n addUserKnob {7 secondary_amplitude l \"secondary amp\" t \"Each octave has its amplitude scaled by this much. A value of .5 means that each iteration will have half of the influence of the previous octave.\" R 0 2}\n secondary_amplitude 0.4\n addUserKnob {7 secondary_frequency l \"secondary freq\" t \"Each octave has its frequency scaled by this much. A value of 2 means that each iteration will add detail twice as small.\"}\n secondary_frequency 0.42\n addUserKnob {26 \"\"}\n addUserKnob {7 size l width t \"The width of the entire lightning. Higher values will create thicker bolts. The units are pixels, so a width of 10 means that the maximum width that the lightning will have is 10.\" R 0 100}\n size 10\n addUserKnob {7 end_size l \"end width\" t \"The factor at which the width is scaled at the end of the lightning. A value of 1 means that the with is constant, and a value of 0 means that the lightning will get thinner the closer it gets to the second point.\"}\n addUserKnob {20 Branches}\n addUserKnob {3 branches t \"The number of secondary branches born from each main bolt\"}\n branches 5\n addUserKnob {7 random_spacing l \"random spacing\" t \"When set to 0, secondary branches will be born from equidistant points along the main bolt. A more random spacing will make the branches less evenly distributed.\"}\n random_spacing 0.2\n addUserKnob {26 \"\"}\n addUserKnob {7 direction t \"The tendency of the secondary branches to point in the same direction as the main bolt.\"}\n direction 0.2\n addUserKnob {7 random_direction l randomize t \"A random value for the direction. It will make the secondary branches point in different directions.\"}\n random_direction 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 length t \"The length of the secondary branches, relative to the length of the main bolt.\" R 0 2}\n length 0.935\n addUserKnob {7 random_length l randomize t \"Makes the secondary branches have different sizes between each other.\"}\n random_length 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 branch_amplitude l amplitude t \"How turbulent will the secondary branches be, relative to the main bolt.\"}\n branch_amplitude 2\n addUserKnob {7 random_amplitude l randomize t \"Makes the secondary branches have different amplitudes between each other.\"}\n random_amplitude 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 branch_size l width t \"The width of the stroke, relative to the main bolt.\" R 0 2}\n branch_size 1\n addUserKnob {7 branch_end_size l \"end size\" t \"The width at the end of the branches\"}\n branch_end_size 0.1\n addUserKnob {7 random_branch_size l randomize t \"Different branches will have slightly different width values.\"}\n random_branch_size 0.2\n addUserKnob {20 Animation}\n addUserKnob {7 speed t \"The rate of change of the lightning shape. The bigger the value, the faster it will move.\"}\n speed 10\n addUserKnob {7 flow t \"The shape of the lightning can flow from the start to the end of the bolt, givig the feeling that the energy is moving forwards\"}\n flow 30\n addUserKnob {26 \"\"}\n addUserKnob {7 retract t \"Use this to animate the lightning growing or shrinking.\"}\n addUserKnob {26 \"\"}\n addUserKnob {3 seed}\n seed 42\n addUserKnob {22 make_random_seed l \"Random Seed\" -STARTLINE T \"import random\\n\\nnuke.thisNode()\\['seed'].setValue( random.randint(1,999) )\"}\n addUserKnob {20 Render}\n addUserKnob {68 mode M {\"Stroke Only (faster)\" \"Medium Quality (slow)\" \"Best Quality (very slow)\" \"\" \"\" \"\"}}\n mode \"Best Quality (very slow)\"\n addUserKnob {18 primary_color l primary}\n primary_color {1 0.875814 0.732576}\n addUserKnob {6 primary_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 primary_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 secondary_color l secondary}\n secondary_color {0.372524 0.663819 1}\n addUserKnob {6 secondary_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 secondary_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 saturation R 0 2}\n saturation 0.8\n addUserKnob {7 global_intensity l intensity R 0 10}\n global_intensity 1\n addUserKnob {26 \"\"}\n addUserKnob {7 chromatic_aberration l aberration R 0 10}\n chromatic_aberration 2\n addUserKnob {7 sharpening R 0 10}\n sharpening 2\n addUserKnob {26 \"\"}\n addUserKnob {26 Glow_Text l Glow}\n addUserKnob {7 glow l radius R 0 1000}\n glow 300\n addUserKnob {7 intensity}\n intensity 0.3\n addUserKnob {6 soft_highlights l \"soft highlights\" -STARTLINE}\n soft_highlights true\n addUserKnob {7 gamma R 0 3}\n gamma 1.5\n addUserKnob {7 noise R 0 10}\n addUserKnob {20 about l About}\n addUserKnob {26 about_1 l \"\" t \"A bunny:\\n(\\\\(\\\\ \\n( - -)\\n((') (')\" +STARTLINE T \"<br>\\n<b>Xavier Martín © 2016</b>\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<a href=\\\"http://www.xaviermartinvfx.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.xaviermartinvfx.com</span></a>\"}\n addUserKnob {26 space4_1 l \"\" +STARTLINE T <br>}\n addUserKnob {22 version l \"<center>   version   </center>\" T \"nuke.message('X_Tesla Gizmo <i>v2.0</i><br><b>Xavier Martín © 2016</b>')\\nnuke.message('<i><center>To my grandad, wherever you are, know we love you.</center></i>')\" +STARTLINE}\n addUserKnob {22 help_1 l \"<center> ? \" -STARTLINE T \"nuke.message('You can find more documentation<br>on <a href=\\\"http://www.nukepedia.com/gizmos/draw/x_tesla\\\"><span style=\\\"color:#BCBCBC;\\\">Nukepedia</span></a> or my <a href=\\\"http://www.xaviermartinvfx.com/x_tesla/\\\"><span style=\\\"color:#BCBCBC;\\\">website</span></a>.')\"}\n}\n Crop {\n  inputs 0\n  box {0 0 {parent.Crop1.box.r} 1}\n  reformat true\n  intersect true\n  crop false\n  name Crop3\n  xpos -251\n  ypos -190\n }\nset Ne968f1f0 [stack 0]\n Noise {\n  output {-rgba.red rgba.green -rgba.blue none}\n  size {{100/frequency} 1}\n  zoffset {{speed*frame/100+(frame-int(frame))*11107.7}}\n  octaves {{complexity}}\n  lacunarity {{1/secondary_frequency}}\n  gain {{secondary_amplitude}}\n  gamma 1\n  translate {{frame*flow} {-seed*717}}\n  scale {1 1}\n  xrotate 0\n  yrotate 0\n  name Noise2\n  xpos -129\n  ypos -190\n }\n Multiply {\n  value 2\n  name Multiply4\n  xpos -129\n  ypos -164\n }\n Add {\n  value -1\n  name Add2\n  xpos -129\n  ypos -126\n }\n Reformat {\n  type scale\n  scale {1 {max(amplitude,size+amplitude/2)}}\n  filter Impulse\n  name Reformat4\n  xpos -129\n  ypos -88\n }\n Dot {\n  name Dot1\n  xpos -95\n  ypos 85\n }\npush $Ne968f1f0\n Expression {\n  channel0 none\n  expr0 \"y<amplitude/2 \"\n  expr1 1-((-cx/2+.5))**2\n  expr2 \"(((-cx/2+.5))*(1+size - 1-branch_end_size)+(1+branch_end_size*size))\"\n  channel3 none\n  expr3 fBm(x/100*frequency,seed*717,speed*frame/100,complexity,1/secondary_frequency,secondary_amplitude)*smoothstep(0,soft_start*Crop1.box.r,x)*smoothstep(0,soft_end*Crop1.box.r,Crop1.box.r-x)/clamp((smoothstep(0,soft_start,.5)*smoothstep(0,soft_end,.5))*2,0,1)**2\n  name Expression2\n  xpos -251\n  ypos -164\n }\n Reformat {\n  type scale\n  scale {1 {max(amplitude*branch_amplitude,size*branch_size+amplitude*branch_amplitude/2)}}\n  filter Impulse\n  name Reformat3\n  xpos -251\n  ypos -138\n }\n Expression {\n  expr0 -abs(y-(max(amplitude*branch_amplitude,size+amplitude*branch_amplitude/2))/2)+b/2\n  name Expression3\n  xpos -251\n  ypos -112\n }\n Remove {\n  operation keep\n  channels {rgba.red rgba.green -rgba.blue none}\n  name Remove2\n  xpos -251\n  ypos -86\n }\n NoTimeBlur {\n  rounding floor\n  name NoTimeBlur1\n  xpos -251\n  ypos -48\n }\n Clamp {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  maximum_enable false\n  name Clamp1\n  xpos -251\n  ypos -22\n }\n Transform {\n  scale {1 {\"((1-(Transform4.translate.x/Crop1.box.r))*(1-end_size)+end_size)*branch_size*(1-random(seed*123+(frame-int(frame))*branches*10)*random_branch_size)             \"}}\n  center {0 {format.t/2}}\n  black_outside false\n  name Transform3\n  xpos -251\n  ypos 4\n }\n Reformat {\n  type scale\n  scale {{length*(1-random(seed*71+(frame-int(frame))*branches*10)*random_length)} 1}\n  name Reformat5\n  xpos -251\n  ypos 30\n }\n Multiply {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  value {1 {1-random_amplitude+random(seed*71+(frame-int(frame))*branches)*random_amplitude} 1 1}\n  value_panelDropped true\n  name Multiply1\n  xpos -251\n  ypos 56\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -251\n  ypos 81\n }\n Multiply {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  value {{Transform3.scale.h/branch_size/branch_size*.5}}\n  name Multiply5\n  xpos -251\n  ypos 107\n }\n Crop {\n  box {0 0 {format.r} {format.t}}\n  crop false\n  name Crop4\n  xpos -251\n  ypos 145\n }\n IDistort {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  uv {-rgba.red rgba.green}\n  uv_scale {0 {amplitude/2*branch_amplitude}}\n  name IDistort2\n  xpos -251\n  ypos 171\n }\n Transform {\n  translate {{(random(seed*71+(frame-int(frame))*10*branches)*random_spacing+(frame-int(frame))*(1-random_spacing))*Crop1.box.r} {-(fBm((translate.x-int(frame)*flow)/100*frequency,seed*717,speed*int(frame)/100,complexity,1/secondary_frequency,secondary_amplitude)*smoothstep(0,soft_start*Crop1.box.r,translate.x)*smoothstep(0,soft_end*Crop1.box.r,Crop1.box.r-translate.x)/clamp((smoothstep(0,soft_start,.5)*smoothstep(0,soft_end,.5))*2,0,1)**2)*amplitude/2+(1-branch_amplitude)*amplitude/2}}\n  rotate {{(-1)**(int((frame-int(frame))*branches*10))*direction*90*(1-random(seed*111+((frame-int(frame))*branches*11))*random_direction*2)}}\n  center {0 {format.t/2}}\n  clamp true\n  name Transform4\n  xpos -251\n  ypos 197\n }\n Remove {\n  operation keep\n  channels {rgba.red -rgba.green -rgba.blue none}\n  name Remove1\n  xpos -251\n  ypos 223\n }\n Add {\n  value {{-size/branch_size*retract*.5}}\n  name Add3\n  xpos -251\n  ypos 261\n }\n Clamp {\n  maximum {{size/2*(1-retract)}}\n  name Clamp3\n  xpos -251\n  ypos 299\n }\n TimeBlur {\n  divisions {{branches-1}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name TimeBlur2\n  xpos -251\n  ypos 337\n }\n Multiply {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  value {{branches}}\n  name Multiply2\n  xpos -251\n  ypos 363\n }\n Crop {\n  inputs 0\n  box {0 0 {hypot(point1.x-point2.x,point1.y-point2.y)} 1}\n  reformat true\n  intersect true\n  crop false\n  name Crop1\n  xpos -29\n  ypos 39\n }\nset Ne95aa750 [stack 0]\n Noise {\n  output {-rgba.red rgba.green -rgba.blue none}\n  size {{100/frequency} 1}\n  zoffset {{speed*frame/100}}\n  octaves {{complexity}}\n  lacunarity {{1/secondary_frequency}}\n  gain {{secondary_amplitude}}\n  gamma 1\n  translate {{frame*flow} {-seed*717}}\n  scale {1 1}\n  xrotate 0\n  yrotate 0\n  name Noise1\n  xpos 96\n  ypos 39\n }\n Multiply {\n  value 2\n  name Multiply3\n  xpos 96\n  ypos 65\n }\n Add {\n  value -1\n  name Add1\n  xpos 96\n  ypos 103\n }\n Reformat {\n  type scale\n  scale {1 {max(amplitude,size+amplitude/2)}}\n  filter Impulse\n  name Reformat2\n  xpos 96\n  ypos 195\n }\npush $Ne95aa750\n Expression {\n  channel0 none\n  expr0 \"y<amplitude/2 \"\n  expr1 smoothstep(0,soft_start*Crop1.box.r,x)*smoothstep(0,soft_end*Crop1.box.r,Crop1.box.r-x)/clamp((smoothstep(0,soft_start,.5)*smoothstep(0,soft_end,.5))*2,0,1)**2\n  expr2 ((-cx/2+.5))*size*(1-end_size)+end_size*size\n  channel3 none\n  expr3 fBm(x/100*frequency,seed*717,speed*frame/100,complexity,1/secondary_frequency,secondary_amplitude)*smoothstep(0,soft_start*Crop1.box.r,x)*smoothstep(0,soft_end*Crop1.box.r,Crop1.box.r-x)/clamp((smoothstep(0,soft_start,.5)*smoothstep(0,soft_end,.5))*2,0,1)**2\n  name Expression1\n  xpos -29\n  ypos 65\n }\n Reformat {\n  type scale\n  scale {1 {max(amplitude,size+amplitude/2)}}\n  filter Impulse\n  name Reformat1\n  xpos -29\n  ypos 91\n }\n Expression {\n  expr0 -abs(y-(max(amplitude,size+amplitude/2))/2)+b/2\n  name Expression4\n  xpos -29\n  ypos 117\n }\n NoTimeBlur {\n  rounding floor\n  name NoTimeBlur2\n  xpos -29\n  ypos 143\n }\n Remove {\n  operation keep\n  channels {rgba.red rgba.green -rgba.blue none}\n  name Remove3\n  xpos -29\n  ypos 169\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  name Merge2\n  xpos -29\n  ypos 195\n }\n Clamp {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  maximum_enable false\n  name Clamp2\n  xpos -29\n  ypos 221\n }\n IDistort {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  uv {-rgba.red rgba.green}\n  uv_scale {0 {amplitude/2}}\n  name IDistort1\n  xpos -29\n  ypos 247\n }\n BlackOutside {\n  name BlackOutside1\n  xpos -29\n  ypos 273\n }\n Remove {\n  operation keep\n  channels {rgba.red -rgba.green -rgba.blue none}\n  name Remove4\n  xpos -29\n  ypos 299\n }\n Add {\n  value {{-size*retract}}\n  name Add4\n  xpos -29\n  ypos 325\n }\n Merge2 {\n  inputs 2\n  operation max\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge4\n  xpos -29\n  ypos 363\n }\nset Nea143860 [stack 0]\npush $Nea143860\n FrameHold {\n  first_frame {{frame+(frame-int(frame))*123}}\n  name FrameHold1\n  xpos -29\n  ypos 400\n }\n TimeBlur {\n  divisions {{parent.arcs}}\n  shutter 50\n  shutteroffset start\n  shuttercustomoffset 0\n  name TimeBlur3\n  xpos -29\n  ypos 438\n }\n Multiply {\n  value {{parent.arcs}}\n  name Multiply6\n  xpos -29\n  ypos 464\n }\n Switch {\n  inputs 2\n  which {{\"arcs <= 1\"}}\n  name Switch1\n  xpos -29\n  ypos 502\n }\n Transform {\n  translate {{point1.x} {point1.y-amplitude/2}}\n  rotate {{-atan2(point1.y-point2.y,-point1.x+point2.x)/2/pi*360}}\n  center {0 {amplitude/2}}\n  black_outside false\n  name Transform1\n  xpos -29\n  ypos 528\n }\nset Nea170780 [stack 0]\n Dot {\n  name Dot2\n  xpos 548\n  ypos 532\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  xpos 514\n  ypos 1204\n }\npush $Nea170780\n Crop {\n  box {{parent.Crop2.box.x} {parent.Crop2.box.y} {parent.Crop2.box.r} {parent.Crop2.box.t}}\n  intersect true\n  crop false\n  name Crop5\n  xpos -29\n  ypos 554\n }\n Reformat {\n  type scale\n  scale 0.5\n  pbb true\n  name Reformat6\n  xpos -29\n  ypos 580\n  disable {{\"1-(mode == 1)\"}}\n }\n Expression {\n  expr0 2*r/(r+1)\n  name Expression5\n  xpos -29\n  ypos 606\n }\n Multiply {\n  value {{parent.global_intensity}}\n  name Multiply9\n  xpos -29\n  ypos 632\n }\nset Nea1af1a0 [stack 0]\n Gamma {\n  value 0.5\n  name Gamma2\n  xpos 111\n  ypos 632\n }\n Dot {\n  name Dot14\n  xpos 254\n  ypos 642\n }\nset Ne94a9eb0 [stack 0]\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur5\n  xpos 294\n  ypos 638\n }\n Dot {\n  name Dot20\n  xpos 438\n  ypos 642\n }\npush $Ne94a9eb0\n Dot {\n  name Dot15\n  xpos 254\n  ypos 664\n }\nset Nea1bd9d0 [stack 0]\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow/2*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur4\n  xpos 294\n  ypos 660\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge12\n  xpos 404\n  ypos 660\n }\npush $Nea1bd9d0\n Dot {\n  name Dot16\n  xpos 254\n  ypos 690\n }\nset Nea1da200 [stack 0]\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow/4*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur3\n  xpos 294\n  ypos 686\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge13\n  xpos 404\n  ypos 686\n }\npush $Nea1da200\n Dot {\n  name Dot23\n  xpos 254\n  ypos 716\n }\nset Nea1f6930 [stack 0]\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow/16*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur7\n  xpos 294\n  ypos 712\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge18\n  xpos 404\n  ypos 712\n }\npush $Nea1f6930\n Dot {\n  name Dot18\n  xpos 254\n  ypos 742\n }\nset Nea215a20 [stack 0]\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow/32*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur2\n  xpos 294\n  ypos 738\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge14\n  xpos 404\n  ypos 738\n }\npush $Nea215a20\n Dot {\n  name Dot19\n  xpos 254\n  ypos 768\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{\"glow/64*(1-(mode == 1)*.5)\"}}\n  filter quadratic\n  quality {{\"mode == 2 ? ceil(size) : 10\"}}\n  name Blur1\n  xpos 294\n  ypos 764\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red -rgba.green -rgba.blue none}\n  Bchannels {rgba.red -rgba.green -rgba.blue none}\n  output {rgba.red -rgba.green -rgba.blue none}\n  name Merge15\n  xpos 404\n  ypos 764\n }\n Crop {\n  box {{parent.Crop2.box.x} {parent.Crop2.box.y} {parent.Crop2.box.r} {parent.Crop2.box.t}}\n  intersect true\n  crop false\n  name Crop6\n  xpos 404\n  ypos 790\n }\n Multiply {\n  channels rgba\n  value {{parent.intensity}}\n  name Multiply7\n  xpos 404\n  ypos 816\n }\nset Ne94cf030 [stack 0]\n Noise {\n  output {rgba.red -rgba.green -rgba.blue none}\n  cliptype bbox\n  replace true\n  size {{parent.Noise1.size.0*((mode==2)+1)}}\n  zoffset {{parent.Noise1.zoffset}}\n  octaves {{parent.Noise1.octaves}}\n  lacunarity {{parent.Noise1.lacunarity}}\n  gain {{parent.Noise1.gain}}\n  gamma 1\n  rotate {{parent.Transform1.rotate}}\n  center {{parent.point1.x} {parent.point1.y}}\n  name Noise3\n  xpos 294\n  ypos 816\n }\nset Nea0532e0 [stack 0]\n Multiply {\n  value {{parent.noise}}\n  name Multiply8\n  xpos 294\n  ypos 844\n }\n Add {\n  value 1\n  name Add5\n  xpos 294\n  ypos 882\n }\n Shuffle {\n  in rgb\n  green red\n  blue red\n  out rgb\n  name Shuffle4\n  xpos 294\n  ypos 920\n }\npush $Ne94cf030\n Shuffle {\n  in rgb\n  green red\n  blue red\n  alpha black\n  out rgb\n  name Shuffle2\n  xpos 404\n  ypos 842\n }\n Grade {\n  multiply {{parent.primary_color.r} {parent.primary_color.g} {parent.primary_color.b} 0}\n  multiply_panelDropped true\n  gamma {{parent.secondary_color.r} {parent.secondary_color.g} {parent.secondary_color.b} 0}\n  name Grade1\n  xpos 404\n  ypos 868\n }\n Gamma {\n  channels rgb\n  value {{gamma}}\n  name Gamma1\n  xpos 404\n  ypos 894\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Multiply\n  xpos 404\n  ypos 920\n  disable {{parent.noise==0}}\n }\n Expression {\n  expr0 r/(r+1)*1.2\n  expr1 g/(g+1)*1.2\n  expr2 b/(b+1)*1.2\n  name Expression6\n  xpos 404\n  ypos 946\n  disable {{1-parent.soft_highlights}}\n }\npush $Nea0532e0\n Blur {\n  size {{15*(1+(mode==2))}}\n  name Blur8\n  xpos 191\n  ypos 810\n }\n Dot {\n  name Dot3\n  xpos 225\n  ypos 848\n }\nset Nea26cc40 [stack 0]\n Matrix {\n  channels rgba\n  matrix {\n      {0 0 0}\n      {-100 0 100}\n      {0 0 0}\n    }\n  name Matrix1\n  xpos 191\n  ypos 876\n }\npush $Nea26cc40\n Matrix {\n  channels rgba\n  matrix {\n      {0 -100 0}\n      {0 0 0}\n      {0 100 0}\n    }\n  name Matrix2\n  xpos 81\n  ypos 844\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.green\n  name Copy1\n  xpos 81\n  ypos 870\n }\npush $Nea1af1a0\n Blur {\n  size 2\n  filter box\n  maskChannelInput -rgba.red\n  name Blur6\n  xpos -29\n  ypos 748\n  disable {{\"1- (mode==2)\"}}\n }\n FilterErode {\n  channels {none none none rgba.red}\n  filter gaussian\n  maskChannelInput -rgba.red\n  invert_mask true\n  fringe true\n  name FilterErode1\n  xpos -29\n  ypos 786\n  disable {{\"1- (mode==2)\"}}\n }\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle3\n  xpos -29\n  ypos 885\n }\n Grade {\n  multiply {{parent.primary_color.r} {parent.primary_color.g} {parent.primary_color.b} 0}\n  multiply_panelDropped true\n  gamma {{parent.secondary_color.r} {parent.secondary_color.g} {parent.secondary_color.b} 0}\n  name Grade2\n  xpos -29\n  ypos 970\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 forward.u\n  from1 rgba.green\n  to1 forward.v\n  name Copy2\n  xpos 81\n  ypos 957\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  Achannels {rgba.red rgba.green rgba.blue none}\n  Bchannels {rgba.red rgba.green rgba.blue none}\n  output {rgba.red rgba.green rgba.blue none}\n  name Merge5\n  xpos 404\n  ypos 970\n }\n Saturation {\n  saturation {{parent.saturation}}\n  mode Average\n  name Saturation1\n  xpos 404\n  ypos 996\n }\n VectorBlur {\n  channels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  uv motion\n  scale {{parent.chromatic_aberration*(1+(mode==2)*3)}}\n  offset -1\n  name VectorBlur1\n  xpos 404\n  ypos 1022\n }\n VectorBlur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  uv motion\n  scale {{parent.VectorBlur1.scale}}\n  name VectorBlur2\n  xpos 404\n  ypos 1048\n }\n VectorBlur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  uv motion\n  scale {{parent.VectorBlur1.scale}}\n  offset 0\n  name VectorBlur3\n  xpos 404\n  ypos 1074\n }\nset Nea30b550 [stack 0]\n Sharpen {\n  channels rgb\n  amount {{parent.sharpening}}\n  filter quadratic\n  name Sharpen1\n  xpos 294\n  ypos 1074\n }\n Dot {\n  name Dot4\n  xpos 328\n  ypos 1104\n }\npush $Nea30b550\n Merge2 {\n  inputs 2\n  operation max\n  mix {{1-1/parent.Sharpen1.amount}}\n  name Merge6\n  xpos 404\n  ypos 1100\n }\n Reformat {\n  type scale\n  scale 2\n  pbb true\n  name Reformat7\n  xpos 404\n  ypos 1126\n  disable {{\"1-(mode == 1)\"}}\n }\n Crop {\n  box {{parent.Crop2.box.x} {parent.Crop2.box.y} {parent.Crop2.box.r} {parent.Crop2.box.t}}\n  intersect true\n  crop false\n  name Crop7\n  xpos 404\n  ypos 1152\n }\n BlackOutside {\n  name BlackOutside2\n  xpos 404\n  ypos 1178\n }\n Switch {\n  inputs 2\n  which {{\"mode == 0\"}}\n  name Switch2\n  xpos 404\n  ypos 1204\n }\n Reformat {\n  format \"2048 1556 0 0 2048 1556 1 2K_Super_35(full-ap)\"\n  resize none\n  center false\n  filter Impulse\n  pbb true\n  name Reformat8\n  xpos 404\n  ypos 1232\n }\n Input {\n  inputs 0\n  name Input\n  xpos 646\n  ypos 1097\n }\n Crop {\n  box {{format.x} {format.y} {format.r} {format.t}}\n  crop false\n  name Crop2\n  xpos 646\n  ypos 1145\n  disable true\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 646\n  ypos 1232\n }\n Output {\n  name Output1\n  xpos 646\n  ypos 1320\n }\npush $Nea1af1a0\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Z2N.gizmo",
    "content": "Group {\n name Z2N\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x7f0072ff\n label \"output : normal(\\[value nor_space])\"\n addUserKnob {20 general l General}\n addUserKnob {41 \"Local GPU: \" T BS_PosToNor.gpuName}\n addUserKnob {41 \"Use GPU if Available\" T BS_PosToNor.useGPUIfAvailable}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_in l <b>INPUT</b>}\n addUserKnob {6 depth_invert l \"depth (1/z)\" +STARTLINE}\n depth_invert true\n addUserKnob {26 title_out l <b>OUTPUT</b>}\n addUserKnob {4 nor_space l \"normal space\" M {world camera}}\n nor_space camera\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {20 CamTabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_cam_setup l \"Camera Setup\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"All the process calculated in camera space. So when doing any convertion, it required the camera data. Unless input data 'space' is camera.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture, filmback window and world matrix from selected camera.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll',\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 CamTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {7 depth_threshold l \"depth threshold\" t \"depththreshold to adjust the edge defination.\"}\n depth_threshold 0.1\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {2 font}\n font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n addUserKnob {6 disable_error l \"disable onscreen message\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;a&nbsp;package&nbsp;convert&nbsp;3D&nbsp;tech&nbsp;passes<br>&nbsp;&nbsp;included<br>&nbsp;&nbsp;*&nbsp;P2Z&nbsp;(&nbsp;Position&nbsp;To&nbsp;Depth&nbsp;)<br>&nbsp;&nbsp;*&nbsp;P2N&nbsp;(&nbsp;Position&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2P&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Position&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2N&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;ConvertPNZ&nbsp;(&nbsp;self&nbsp;convertion&nbsp;)<br>-&nbsp;fixed&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;issue<br><br>1.2<br>-&nbsp;changed&nbsp;camera&nbsp;input&nbsp;to&nbsp;expression&nbsp;link<br>-&nbsp;fix&nbsp;alpha&nbsp;check<br>-&nbsp;added&nbsp;support&nbsp;camera&nbsp;window&nbsp;roll<br><br>1.0<br>-&nbsp;Convert&nbsp;Position&nbsp;data&nbsp;to&nbsp;Normal\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x38408cff\n  label blinkscript\n  note_font_size 42\n  xpos 334\n  ypos 96\n  bdwidth 224\n  bdheight 134\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label bin\n  note_font_size 42\n  xpos -146\n  ypos -417\n  bdwidth 272\n  bdheight 503\n }\n NoOp {\n  inputs 0\n  name global\n  xpos -107\n  ypos -293\n  addUserKnob {20 User}\n  addUserKnob {12 res}\n  res {{\"\\[exists parent.input0] ? parent.input0.width : width\"} {\"\\[exists parent.input0] ? parent.input0.height : height\"}}\n  addUserKnob {7 pxa}\n  pxa {{\"\\[exists parent.input0] ? parent.input0.pixel_aspect : pixel_aspect\"}}\n  addUserKnob {7 hratio}\n  hratio {{\"parent.cam_haperture / parent.cam_focal\"}}\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {parent.cam_winroll}}\n  name fb_data\n  xpos -94\n  ypos -198\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name cam_data\n  xpos 13\n  ypos -195\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  name Reformat1\n  xpos 748\n  ypos 388\n }\n Text {\n  message \"missing depth input\"\n  font \"\\[value parent.font]\"\n  size {{global.res.x/15}}\n  xjustify center\n  yjustify center\n  Transform 1\n  box {0 0 {global.res.x} {global.res.y}}\n  center {640 360}\n  name Text1\n  xpos 748\n  ypos 470\n  disable {{parent.disable_error}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  black_outside true\n  name Reformat2\n  xpos 748\n  ypos 552\n }\n Dot {\n  name Dot5\n  xpos 782\n  ypos 634\n }\n Input {\n  inputs 0\n  name depth\n  xpos 404\n  ypos -533\n }\n Expression {\n  temp_name0 detectA\n  temp_expr0 \"red == 0 && green == 0 && blue == 0 ? 0 : 1\"\n  expr3 detectA\n  name Expression3\n  label \"non-filtered alpha\"\n  xpos 404\n  ypos -426\n }\n Dot {\n  name Dot2\n  xpos 438\n  ypos -343\n }\nset Ncb34bc00 [stack 0]\n Expression {\n  expr0 1/red\n  expr1 0\n  expr2 0\n  name Expression6\n  label \"depth invert\"\n  xpos 524\n  ypos -296\n }\npush $Ncb34bc00\n Switch {\n  inputs 2\n  which {{depth_invert}}\n  name Switch1\n  xpos 404\n  ypos -234\n }\n Expression {\n  temp_name0 posX\n  temp_expr0 \"( x/global.res.x - 0.5) * ( global.hratio * red )\"\n  temp_name1 posY\n  temp_expr1 \"( y/global.res.y - 0.5) * ( global.hratio * global.res.y/global.res.x * red )\"\n  temp_name2 posZ\n  temp_expr2 -red\n  expr0 posX\n  expr1 posY\n  expr2 posZ\n  name Expression7\n  label \"depth to position (cam)\"\n  xpos 404\n  ypos -139\n }\n Premult {\n  name Premult1\n  label \"premult non-filtered alpha\"\n  xpos 404\n  ypos -45\n }\n BlinkScript {\n  recompileCount 376\n  KernelDescription \"2 \\\"PosToNor\\\" iterate pixelWise 02cf16da23aea1612dfbcc053c87db54f6b4c4e44f3ad9894ac3d7a7730044cc 2 \\\"ppass\\\" Read Random \\\"dst\\\" Write Point 1 \\\"deep threshold\\\" Float 1 zczMPQ== 1 \\\"dThreshold\\\" 1 1 0\"\n  EncodedSource \"1 2924 5yXW0xYFMJslpopUtj52AV/Io3x/f6K86Tht0ug2nRn+Pl5BtcKt7yOZtlJAGYcZhwFjuDgpOVcH+JYiF2EFRVtpxuWSctkcGm9s+mt73vdnVTG5DErmZb7UaE51wML710Mnz4xW/dHYU98yrOnkQjhpiGWpnJfaZRsYb9zg4THW+7vImS4rn1HMaDx+e7MguZZU8VlNDr0yt3+oqK5JqPha++yGjxd6U2y6Mcfa4QbIm2NAmKIzdkyYct+2X7Obj1XdMIpRBBYpl1JtTEM22BpY9I2hxiJln4Ut3IPhp9F96phL2JQIveQ7xR9u1BJiYTw/su++BoJZ1MbcIUAiYitUZSRS8yctZ0E+e5wGmJn8TXlNaLCx/L4RRE35TUY39uz3NaDzUdi4mnKNKMQcPTLVbJbm+Qxpe71YCRZRnrMlbtuhCI5/wZXmQCGGDF06bzY0clTgJdUxKLkqgCCIkkU5N3RRekb+Hit95FprW/toVKlxS6kxQgFwywG2fRflbudUOP1Oi6ZGl1KYu0ymY1i2Va+z8sWvl1K3Df6PDYPGGTto+QeRYjRWJ6M8yuYQXjW84drm00CMTPsD4o6nEN703fvBCK4oMA1uB+B+f1Ks/yex6rqL8W0RdNPgzCCOOw1NTWp1DG0/grDqBsRUyESUq58oZ7pNZkB94dkFqH3DdQTCK+QVjkiQpnht5xRazBjPsJuE3HJWGjcDjbxdqmT8Q2FQ3hrEz5iD2PeM5P2CQHEHPP9/BDujHY9fRay5iodG5asnPYBTnsoHGW06e8aKgkyLrg8wXC6BDVIYFgwNxzIX0KCcXlycqtGleq3cC2HahCVNQH52ugdy15yi0GzFaOjF3k1orC2x1VnKZQvoImV5yWUPwU+k9DPLSnCd3VL5LioZrLP54n0kJBKpwEiJNvnIM7rjaz1S7SbwmRfoQEVy01/06ppj2YT9+G3KQVEDwD7thlAE/w7/K/OdJ72Xr75gqUU1heOD5Ze8ZWZcKfCibiCLjcb7vUef2AQTe0MWElmo61jeK30rWvJLWuVFyFFcYXvU36xXlq28SnTMMO94aU+3cfcxDzlIMF2wfyYXNOOCe7gv/ed22EtJQU/O4qrXWIQbBP/sc3IZ4PUSnE4CgVSpNL1K8NZwlXGEjlE40BOHiFsXotpJNvKvxgQIEFStsptpdfVCFqNQ8N3A+s8y/QUrXJ8nQsiNykHmuRWa0hcNihaOTpIGuVk7eDECVy/ebkNv11ImrGAkndoV67OjZy+FUTBaO1rD1uTtZeCIdycfnoCFIJejQOtzoSNYjJOkVJ4T0luOO8yKCqkgAHtthZE3h+WObi2wcRzDAk7y62rJDA2DzC+VM6EoBf31gMxRrZ71tHgMY+zUgWdBPLTqTKBtPcxsHaUVvEnpBmaUHhm9mwlwMa4yOO3pJf1ZYsrL0Gx1jMDPZVzZOM/1KyVWNaWEGy+baCvGjt/xteo/VgGPre38KEL7Mxtrc7mehF2T8Fh5shHdU7NmxRyfQHjZfugwqY3U4HqVi/T5DftVK9aaMm2w+RC7j4LbFg971DTXzA2rQDNa5pOMqbwBRTRQSGCdH0dfNFaWOug/ez+dRkMgWMY4CVv4qtxrWtk1G+WlNV806YKLlVrsWkaqgV70IL0sX8Yg03roBQHv2ulCVMBLpoTeAzn1nWZq7Bc2OA4Bm8YJz/pqxBF76HbVRtYTsBC9RR11HtoJ05OPWt3TtkZ3dvZf3vRsBkSvZ2pRdoUoQXXl8sPzzJmoNXbXsRfymhkbQeH1g15zcuXX+0ieT+0zCd9PvFIRM1inf/DbfVFU3XQhbxVLT6Ivbs7JCGlT5IKe8p9Wz19NJqkbkQdGe3+ewHdZ4SZBjfAeaOWCn3hVWLqMtnI8WtiKfX23SqoscOa+S+kwE52r4A2PHLg/dAKN778y2ifcEsubR9RodouzJyMuDP9Vt6m3NOIYOg9YlmwH7WdyqU+r6kEitQjLiehTmIqejUlmEfGCHD2P6Bimnp+hxxRR1MFupXMQwLMjw3aWwsht64QCRtNw0mHv64lxEwaK6fDzYNlRFHF/agvo39NT/ISzm377qXzLBIBc89kQsUDdOA7Hms8mE4hqEGEtkaCQNas/5a3jsPyM5r1u3Basix0O3dHAY4x6uq6ticdXw+ybCh2KD5W2MlZXJHavrsmtI1RUXQxWRq1Xj+7JTjAovglRyryaJ9RIiBC0gZO8/eInoSawWPZGnaOg1Qa94F2nORWmuGddIaAbwK9nMGEq119T2L0tqoXHq/wA088HnCNM2cHRKe4oNfBmvq8qgvcdqfxvz3T6W0rzFD2YQJ4VDlypuR+ninR7oT37Mj2wuhngjev30qi26zYgIhqtjEc7+ZYEzsHm0K5u1K8s1F+w7OH4h5ywzMMjpgXaPWCsWwPdWqnDYr318BbhgQiJwbQWiMQJHPKUoxWNfgiqoPTUExavRPn+vuSrKkbg7IbPsNMA3DfzT4ptkrFEDSJuz2lJuw9kNRA8e8WmjLippFRvNjh+ggM0BikNn2zHNqWVhmMDIr1IZBXFTPwvyi4/vG+CHJ24t2F26eKeaGikb4LC++D/EKrWqCnb2RVS5A1yz/yZuUXzTT/G6H81FSHDMcVy9ZP22KkaBf67gGUFFJCLeZJ3hyUaxG4kLhPquUY1KgdQlZtLKEWqJW622yQNsBKk/BtHTosNWLoGjYA3Jd95s1uH8miJHc2pOF9AQxAlq2RPL4X9uPJrAFxU87T0uEWDU+itkMG0fOdtTGU7AlgMTzhzusfiydkPIP5+uOgs9G4aIF6x/2RgkR0IpXqO4jIpCATskx4kQEd5XM6ArganbSlwVXKQnqNMvhiFJod+1IZIbW15OdjYrgUaSbvKWUNcBp7raPmbkueWUgjcABDCwLzCd0d9MIH6oaIVi53xXG8jFFg4mspWFlIqOi6pGr1Ekto36WtLVc52SOsdGXb1bseOqDKelEK5fglFs2FPmLhmhHGDZHP8LT2Tou56Ek6HsAmvC4BGqKIYgieohD2HIGkCpEj/Sp9YK8CGgBkhzkV5e8jmD3a+0DPfA0UBmP0mRoc7zuS+KtsQ4osgPEFvxRTW3wcK03vMQl3iXGyD6iui3WDZPHYCEjI6L8SKY7L/NY2orchDm8Hyu+MHbv+4II9kigJarcc+2AbxFsaGKWLt8QFBqvnPI13NMBFB4d7CqF9YgrLeSO/L4sj1MWOwhxvmb+Iq8UHdsnpDSNWcyg5X+4rVtu/BUSoAoM5HHxJ4ewGIVc/C/Jsv7R1k9TWjXIov0+zAqi3+6uihDI1oFIG0fGL/7lALT7uVMgIwzt+ndikUI3tK8yjrBAzJAMv+7t0sSpl7rAsDqILPn5cfHvL2ApAOwjrN7pKlDsx142JiqBE7wwL1GNQotS7I0mjUt6U8hYom+K22Z1XihxVBCpA4bOURZAVeWlQ/1z73gmWAUk+yUGNHBfCZvWMwDFw8GInlKFlJ4mIRx/J36zEyqEAlkLhThIf9d9LZApuMyORCOq8K9sbncWAgmDWKCqR3V+yfabtMuqbvJ9TG1vPd21InUUXcQ7VIlpzOZN9AHF/ELh7daih3ovpILkCA7cdycyxQjADMYzeN2IOG1UICBb4UpPG7ZbBhjAiKQ0YRaUZ4oL1aFJxHa1pfVRZ/38WwX5WjYBSBEQJtidVXWnXjXJM5ZsWI29h7nktgCySwCaDfqpHh3Bbum73TPcvHF9ukFMUTdI3WaYlP+Twzvvgrc8d20sa9ZnB5W8vCnbPV2YbLNcjHsjqHHGpiXKInPSZhiQi2l2UWklmK5cKAhMVL6aHrvbpm2hSEUkQSShYRGi1ZtA2RodPRsGbQxPBoY6dz5WCLFKBhl0WTsbRG6K1jXggvWGgGmCdz\"\n  rebuild \"\"\n  \"PosToNor_deep threshold\" {{parent.depth_threshold}}\n  protectKernelWhenPublishing true\n  rebuild_finalise \"\"\n  name BS_PosToNor\n  xpos 404\n  ypos 170\n }\n Expression {\n  expr0 \"isnan(r) || isinf(r) ? 0 : r\"\n  expr1 \"isnan(g) || isinf(g) ? 0 : g\"\n  expr2 \"isnan(b) || isinf(b) ? 0 : b\"\n  name Expression2\n  label \"remove nan&inf\"\n  xpos 404\n  ypos 289\n }\n ColorMatrix {\n  matrix {\n      {{fb_data.world_matrix.0} {fb_data.world_matrix.1} {fb_data.world_matrix.2}}\n      {{fb_data.world_matrix.4} {fb_data.world_matrix.5} {fb_data.world_matrix.6}}\n      {{fb_data.world_matrix.8} {fb_data.world_matrix.9} {fb_data.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix4\n  label \"apply camera window\"\n  xpos 404\n  ypos 407\n }\n Dot {\n  name Dot4\n  xpos 438\n  ypos 501\n }\nset Ncb37fc00 [stack 0]\n Dot {\n  name Dot1\n  xpos 569\n  ypos 589\n }\npush $Ncb37fc00\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  name ColorMatrix3\n  label \"normal (world)\"\n  xpos 404\n  ypos 575\n }\n Switch {\n  inputs 2\n  which {{parent.nor_space}}\n  name Switch2\n  xpos 404\n  ypos 669\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name Switch3\n  xpos 404\n  ypos 871\n }\n Output {\n  name Output1\n  xpos 404\n  ypos 1050\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Z2P.gizmo",
    "content": "Group {\n name Z2P\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x7f0072ff\n label \"output : position(\\[value pos_space])\"\n addUserKnob {20 general l General}\n addUserKnob {26 title_in l <b>INPUT</b>}\n addUserKnob {6 depth_invert l \"depth (1/z)\" +STARTLINE}\n depth_invert true\n addUserKnob {26 title_out l <b>OUTPUT</b>}\n addUserKnob {4 pos_space l \"position space\" M {world camera}}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {20 CamTabBegin l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_cam_setup l \"Camera Setup\"}\n addUserKnob {22 set_link l \"link to selected camera\" t \"All the process calculated in camera space. So when doing any convertion, it required the camera data. Unless input data 'space' is camera.\\n\\nhow to use :\\nSelect the camera, which can be link to any axis nodes. This tool will get the focal, haperture, filmback window and world matrix from selected camera.\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\ndefaultKnobs = \\{\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll',\\n\\t\\t\\t'world matrix' : 'world_matrix'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tfor knob in mainKnobs :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\n\\nfor knob in thisGRP.knobs() :\\n    if mainKnobs.count(knob) != 0 :\\n        thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {22 bake_link l \"bake expression link\" t \"Baked out the existing expression link back to this node itself. After that, camera node is not required for this node anymore. Baked value is base on the frame range in project setting of the nuke script.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" T \"thisGRP = nuke.thisGroup()\\n\\nframeST = nuke.root().firstFrame()\\nframeED = nuke.root().lastFrame()\\n\\nallknobs = \\['cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll','world_matrix']\\nalldata = \\{\\}\\n\\nchknobs = 0\\nfor knob in allknobs :\\n\\tif thisGRP\\[knob].hasExpression() :\\n\\t\\tchknobs = 1\\n\\nif chknobs :\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\talldata\\[knob].append( thisGRP\\[knob].getValueAt(t) )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\talldata\\[knob] = \\[ thisGRP\\[knob].getValueAt(t) ]\\n\\n\\tfor knob in allknobs :\\n\\t\\tthisGRP\\[knob].clearAnimated()\\n\\t\\tthisGRP\\[knob].setAnimated()\\n\\n\\tfor knob in allknobs :\\n\\t\\tfor t in range( frameST, frameED+1, 1 ) :\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is float :\\n\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST] , t )\\n\\t\\t\\tif type( alldata\\[knob]\\[t-frameST] ) is list :\\n\\t\\t\\t\\tfor i in range( len( alldata\\[knob]\\[t-frameST] ) ) :\\n\\t\\t\\t\\t\\tthisGRP\\[knob].setValueAt( alldata\\[knob]\\[t-frameST]\\[i] , t , i )\\nelse :\\n\\tnuke.message('no expression link found.')\" +STARTLINE}\n addUserKnob {22 copy_data l \"copy from selected camera\" t \"Select the camera, then this will process 'link to selected camera' and 'bake expression link' in once.\\n\\n* Nuke 11.2 has issue with expression link on this node. It will crash your nuke in some cases, but it will be fine when re-open the nuke script. Because of this issue, recommand to bake the value.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nthisGRP\\['set_link'].execute()\\nthisGRP\\['bake_link'].execute()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal 50\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture 24.576\n addUserKnob {30 cam_win_translate l \"window translate\"}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {1 1}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 CamTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {20 tab_misc l Misc}\n addUserKnob {2 font}\n font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n addUserKnob {6 disable_error l \"disable onscreen message\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-21}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;a&nbsp;package&nbsp;convert&nbsp;3D&nbsp;tech&nbsp;passes<br>&nbsp;&nbsp;included<br>&nbsp;&nbsp;*&nbsp;P2Z&nbsp;(&nbsp;Position&nbsp;To&nbsp;Depth&nbsp;)<br>&nbsp;&nbsp;*&nbsp;P2N&nbsp;(&nbsp;Position&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2P&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Position&nbsp;)<br>&nbsp;&nbsp;*&nbsp;Z2N&nbsp;(&nbsp;Depth&nbsp;To&nbsp;Normal&nbsp;)<br>&nbsp;&nbsp;*&nbsp;ConvertPNZ&nbsp;(&nbsp;self&nbsp;convertion&nbsp;)<br>-&nbsp;fixed&nbsp;camera&nbsp;window&nbsp;transformation&nbsp;issue<br><br>1.2<br>-&nbsp;changed&nbsp;camera&nbsp;input&nbsp;to&nbsp;expression&nbsp;link<br>-&nbsp;fix&nbsp;alpha&nbsp;check<br>-&nbsp;added&nbsp;support&nbsp;camera&nbsp;window&nbsp;roll<br><br>1.0<br>-&nbsp;Convert&nbsp;Position&nbsp;data&nbsp;to&nbsp;Normal\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x388e8e00\n  label bin\n  note_font_size 42\n  xpos -146\n  ypos -417\n  bdwidth 272\n  bdheight 503\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  name Reformat1\n  xpos 755\n  ypos 283\n }\n Text {\n  message \"missing depth pass\"\n  font \"\\[value parent.font]\"\n  size {{global.res.x/15}}\n  xjustify center\n  yjustify center\n  Transform 1\n  box {0 0 {global.res.x} {global.res.y}}\n  center {640 360}\n  name Text1\n  xpos 755\n  ypos 365\n  disable {{parent.disable_error}}\n }\n Reformat {\n  type \"to box\"\n  box_width {{global.res.x}}\n  box_height {{global.res.y}}\n  box_fixed true\n  box_pixel_aspect {{global.pxa}}\n  black_outside true\n  name Reformat2\n  xpos 755\n  ypos 447\n }\n Dot {\n  name Dot5\n  xpos 789\n  ypos 529\n }\n Input {\n  inputs 0\n  name depth\n  xpos 404\n  ypos -533\n }\n Expression {\n  temp_name0 detectA\n  temp_expr0 \"red == 0 && green == 0 && blue == 0 ? 0 : 1\"\n  expr3 detectA\n  name Expression3\n  label \"non-filtered alpha\"\n  xpos 404\n  ypos -425\n }\n Dot {\n  name Dot2\n  xpos 438\n  ypos -343\n }\nset Ncb3cfc00 [stack 0]\n Expression {\n  expr0 1/red\n  expr1 0\n  expr2 0\n  name Expression6\n  label \"depth invert\"\n  xpos 525\n  ypos -297\n }\npush $Ncb3cfc00\n Switch {\n  inputs 2\n  which {{depth_invert}}\n  name Switch1\n  xpos 404\n  ypos -236\n }\n Expression {\n  temp_name0 posX\n  temp_expr0 \"( x/global.res.x - 0.5) * ( global.hratio * red )\"\n  temp_name1 posY\n  temp_expr1 \"( y/global.res.y - 0.5) * ( global.hratio * global.res.y/global.res.x * red )\"\n  temp_name2 posZ\n  temp_expr2 -red\n  expr0 posX\n  expr1 posY\n  expr2 posZ\n  name Expression7\n  label \"depth to position\"\n  xpos 404\n  ypos -130\n }\n Expression {\n  temp_name0 shiftX\n  temp_expr0 \"global.hratio * abs( blue ) * parent.cam_win_translate.u / 2\"\n  temp_name1 shiftY\n  temp_expr1 \"global.hratio * abs( blue ) * parent.cam_win_translate.v / 2\"\n  expr0 \"( red * inverseMatrix.invMatrix.0 + green * inverseMatrix.invMatrix.1 ) * parent.cam_win_scale.u + shiftX\"\n  expr1 \"( red * inverseMatrix.invMatrix.3 + green * inverseMatrix.invMatrix.4 ) * parent.cam_win_scale.v + shiftY\"\n  name Expression5\n  label \"apply camera window\"\n  selected true\n  xpos 404\n  ypos -36\n }\n Dot {\n  name Dot1\n  xpos 438\n  ypos 135\n }\nset Ncb3ce800 [stack 0]\n Expression {\n  expr2 -blue\n  name Expression4\n  label \"depth in blue\"\n  xpos 561\n  ypos 260\n }\npush $Ncb3ce800\n ColorMatrix {\n  matrix {\n      {{parent.world_matrix.0} {parent.world_matrix.1} {parent.world_matrix.2}}\n      {{parent.world_matrix.4} {parent.world_matrix.5} {parent.world_matrix.6}}\n      {{parent.world_matrix.8} {parent.world_matrix.9} {parent.world_matrix.10}}\n    }\n  name ColorMatrix1\n  label \"rotate world\"\n  xpos 404\n  ypos 209\n }\n Add {\n  channels rgb\n  value {{parent.world_matrix.3} {parent.world_matrix.7} {parent.world_matrix.11} 0}\n  name Add1\n  label \"translate world\"\n  xpos 404\n  ypos 291\n }\n Switch {\n  inputs 2\n  which {{parent.pos_space}}\n  name Switch2\n  xpos 404\n  ypos 373\n }\n Expression {\n  expr0 \"isnan(red) || isinf(red) ? 0 : red\"\n  expr1 \"isnan(green) || isinf(green) ? 0 : green\"\n  expr2 \"isnan(blue) || isinf(blue) ? 0 : blue\"\n  name Expression2\n  label \"remove nan&inf\"\n  xpos 404\n  ypos 455\n }\n Expression {\n  expr0 \"red * alpha\"\n  expr1 \"green * alpha\"\n  expr2 \"blue * alpha\"\n  expr3 0\n  name Expression1\n  label \"premult non-filter alpha\"\n  xpos 404\n  ypos 537\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input0]\"}}\n  name Switch3\n  xpos 404\n  ypos 619\n }\n Output {\n  name Output1\n  xpos 404\n  ypos 746\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos -104\n  ypos -79\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path fb_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  name cam_data\n  xpos 14\n  ypos -195\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  rotate {0 0 {parent.cam_winroll}}\n  name fb_data\n  xpos -95\n  ypos -193\n }\n NoOp {\n  inputs 0\n  name global\n  xpos -105\n  ypos -294\n  addUserKnob {20 User}\n  addUserKnob {12 res}\n  res {{\"\\[exists parent.input0] ? parent.input0.width : width\"} {\"\\[exists parent.input0] ? parent.input0.height : height\"}}\n  addUserKnob {7 pxa}\n  pxa {{\"\\[exists parent.input0] ? parent.input0.pixel_aspect : pixel_aspect\"}}\n  addUserKnob {7 hratio}\n  hratio {{\"parent.cam_haperture / parent.cam_focal\"}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ZeroAxis.gizmo",
    "content": "Group {\n name ZeroAxis\n help \"Inverts an input Axis at a specified frame\"\n tile_color 0x9c0000ff\n addUserKnob {20 ZeroAxis l \"Zero Axis\"}\n addUserKnob {3 ref_frame l \"Reference Frame\" t \"Select a new reference frame, and the curves will be zero'd out at that frame.\"}\n ref_frame 25\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {41 world_matrix l \"\" -STARTLINE T Out_Axis.world_matrix}\n addUserKnob {26 divider_copyright l \"\" +STARTLINE}\n addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.1 -  Mathieu Goulet-Aubin & Erwan Leroy - <a href=\\\"https://github.com/mapoga/nuke-vector-matrix\\\" style=\\\"color:#aaa\\\">Github</a>\"}\n}\n Input {\n  inputs 0\n  name Inputaxis\n  xpos 806\n  ypos 434\n }\nset Nafa3300 [stack 0]\n Axis2 {\n  useMatrix true\n  matrix {\n      {{Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)}}\n      {{Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)}}\n      {{Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)}}\n      {{Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} {Mid_Axis.matrix(parent.ref_frame)/Mid_Axis.matrix.15(parent.ref_frame)} 1}\n    }\n  name Out_Axis\n  selected true\n  xpos 816\n  ypos 664\n }\n Output {\n  name Output1\n  xpos 806\n  ypos 780\n }\npush $Nafa3300\n Axis2 {\n  name In_Axis\n  xpos 697\n  ypos 495\n }\n Axis2 {\n  inputs 0\n  useMatrix true\n  matrix {\n      {{In_Axis.world_matrix.5*In_Axis.world_matrix.10*In_Axis.world_matrix.15+In_Axis.world_matrix.6*In_Axis.world_matrix.11*In_Axis.world_matrix.13+In_Axis.world_matrix.7*In_Axis.world_matrix.9*In_Axis.world_matrix.14-In_Axis.world_matrix.5*In_Axis.world_matrix.11*In_Axis.world_matrix.14-In_Axis.world_matrix.6*In_Axis.world_matrix.9*In_Axis.world_matrix.15-In_Axis.world_matrix.7*In_Axis.world_matrix.10*In_Axis.world_matrix.13} {In_Axis.world_matrix.1*In_Axis.world_matrix.11*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.9*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.10*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.10*In_Axis.world_matrix.15-In_Axis.world_matrix.2*In_Axis.world_matrix.11*In_Axis.world_matrix.13-In_Axis.world_matrix.3*In_Axis.world_matrix.9*In_Axis.world_matrix.14} {In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.15+In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.13+In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.14-In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.13} {In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.10+In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.11+In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.9-In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.11-In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.9-In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.10}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.11*In_Axis.world_matrix.14+In_Axis.world_matrix.6*In_Axis.world_matrix.8*In_Axis.world_matrix.15+In_Axis.world_matrix.7*In_Axis.world_matrix.10*In_Axis.world_matrix.12-In_Axis.world_matrix.4*In_Axis.world_matrix.10*In_Axis.world_matrix.15-In_Axis.world_matrix.6*In_Axis.world_matrix.11*In_Axis.world_matrix.12-In_Axis.world_matrix.7*In_Axis.world_matrix.8*In_Axis.world_matrix.14} {In_Axis.world_matrix.0*In_Axis.world_matrix.10*In_Axis.world_matrix.15+In_Axis.world_matrix.2*In_Axis.world_matrix.11*In_Axis.world_matrix.12+In_Axis.world_matrix.3*In_Axis.world_matrix.8*In_Axis.world_matrix.14-In_Axis.world_matrix.0*In_Axis.world_matrix.11*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.8*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.10*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.15-In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.12-In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.14} {In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.11+In_Axis.world_matrix.2*In_Axis.world_matrix.7*In_Axis.world_matrix.8+In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.10-In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.10-In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.11-In_Axis.world_matrix.3*In_Axis.world_matrix.6*In_Axis.world_matrix.8}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.9*In_Axis.world_matrix.15+In_Axis.world_matrix.5*In_Axis.world_matrix.11*In_Axis.world_matrix.12+In_Axis.world_matrix.7*In_Axis.world_matrix.8*In_Axis.world_matrix.13-In_Axis.world_matrix.4*In_Axis.world_matrix.11*In_Axis.world_matrix.13-In_Axis.world_matrix.5*In_Axis.world_matrix.8*In_Axis.world_matrix.15-In_Axis.world_matrix.7*In_Axis.world_matrix.9*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.11*In_Axis.world_matrix.13+In_Axis.world_matrix.1*In_Axis.world_matrix.8*In_Axis.world_matrix.15+In_Axis.world_matrix.3*In_Axis.world_matrix.9*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.9*In_Axis.world_matrix.15-In_Axis.world_matrix.1*In_Axis.world_matrix.11*In_Axis.world_matrix.12-In_Axis.world_matrix.3*In_Axis.world_matrix.8*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.15+In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.12+In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.13-In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.15-In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.7*In_Axis.world_matrix.9+In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.11+In_Axis.world_matrix.3*In_Axis.world_matrix.5*In_Axis.world_matrix.8-In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.11-In_Axis.world_matrix.1*In_Axis.world_matrix.7*In_Axis.world_matrix.8-In_Axis.world_matrix.3*In_Axis.world_matrix.4*In_Axis.world_matrix.9}}\n      {{In_Axis.world_matrix.4*In_Axis.world_matrix.10*In_Axis.world_matrix.13+In_Axis.world_matrix.5*In_Axis.world_matrix.8*In_Axis.world_matrix.14+In_Axis.world_matrix.6*In_Axis.world_matrix.9*In_Axis.world_matrix.12-In_Axis.world_matrix.4*In_Axis.world_matrix.9*In_Axis.world_matrix.14-In_Axis.world_matrix.5*In_Axis.world_matrix.10*In_Axis.world_matrix.12-In_Axis.world_matrix.6*In_Axis.world_matrix.8*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.9*In_Axis.world_matrix.14+In_Axis.world_matrix.1*In_Axis.world_matrix.10*In_Axis.world_matrix.12+In_Axis.world_matrix.2*In_Axis.world_matrix.8*In_Axis.world_matrix.13-In_Axis.world_matrix.0*In_Axis.world_matrix.10*In_Axis.world_matrix.13-In_Axis.world_matrix.1*In_Axis.world_matrix.8*In_Axis.world_matrix.14-In_Axis.world_matrix.2*In_Axis.world_matrix.9*In_Axis.world_matrix.12} {In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.13+In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.14+In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.12-In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.14-In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.12-In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.13} {In_Axis.world_matrix.0*In_Axis.world_matrix.5*In_Axis.world_matrix.10+In_Axis.world_matrix.1*In_Axis.world_matrix.6*In_Axis.world_matrix.8+In_Axis.world_matrix.2*In_Axis.world_matrix.4*In_Axis.world_matrix.9-In_Axis.world_matrix.0*In_Axis.world_matrix.6*In_Axis.world_matrix.9-In_Axis.world_matrix.1*In_Axis.world_matrix.4*In_Axis.world_matrix.10-In_Axis.world_matrix.2*In_Axis.world_matrix.5*In_Axis.world_matrix.8}}\n    }\n  name Mid_Axis\n  xpos 694\n  ypos 628\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_aPCard.gizmo",
    "content": "add_layer {P P.red P.green P.blue P.alpha}\nGroup {\n name aPCard\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn in \\[\\\"in_vectors\\\",\\\"inputChange\\\"]:\\n    kv = n\\[\\\"in_vectors\\\"].value()\\n    for i in nuke.allNodes(\\\"Input\\\"):\\n        if i\\[\\\"label\\\"].value() == \\\"dyn\\\":\\n            inp = i\\n    options = \\{\\\"position\\\":\\\"pos\\\",\\\"depth\\\":\\\"depth\\\",\\\"deep\\\":\\\"deep\\\",\\\"geometry\\\":\\\"geo\\\"\\}\\n    inp\\[\\\"name\\\"].setValue(\\\"Input\\\"+options\\[kv])\\n    if kv in \\[\\\"position\\\",\\\"geometry\\\"]:\\n        n\\[\\\"p_channels\\\"].setValue(\\\"P\\\")\\n    else:\\n        n\\[\\\"p_channels\\\"].setValue(\\\"depth\\\")\\n    if kv==\\\"deep\\\":\\n        nuke.toNode(\\\"ShuffleP\\\").setInput(0,nuke.toNode(\\\"DeepToImage\\\"))\\n        nuke.toNode(\\\"DeepToImage\\\").setInput(0,nuke.toNode(\\\"DotDeep\\\"))\\n        #nuke.toNode(\\\"DotDeep\\\").setInput(0,nuke.toNode(\\\"DotInput\\\"))\\n    elif kv==\\\"geometry\\\":\\n        nuke.toNode(\\\"ShuffleP\\\").setInput(0,nuke.toNode(\\\"SRGeo\\\"))\\n        nuke.toNode(\\\"ApplyMat\\\").setInput(0,nuke.toNode(\\\"DotInput\\\"))\\n    else:\\n        nuke.toNode(\\\"ShuffleP\\\").setInput(0,nuke.toNode(\\\"DotInput\\\"))\\n    n\\[\\\"invert_depth\\\"].setVisible(kv==\\\"depth\\\")\\nelif kn == \\\"pick\\\":\\n    c = nuke.toNode(\\\"Card3D\\\")\\n    c.knob(\\\"translate\\\").setValue(n\\[\\\"pick\\\"].value())\\nelif kn == \\\"proj_mode\\\":\\n    kv = k.getValue()\\n    for i in \\[\\\"ref_frame\\\",\\\"ref_to_current\\\"]:\\n        n\\[i].setVisible(kv != 0)\\nelif kn == \\\"preview_mode\\\":\\n    kv = k.getValue()\\n    for i in \\[\\\"grid_resolution\\\",\\\"grid_size\\\"]:\\n        n\\[i].setVisible(kv != 0)\\nelif kn == \\\"face_cam\\\":\\n    kv = k.getValue()\\n    for i in \\[\\\"face_frame\\\",\\\"face_to_current\\\"]:\\n        n\\[i].setVisible(kv != 0)\\nelif kn ==\\\"deep_holdout\\\":\\n    kv = k.value()\\n    if kv:\\n        print (\\\"deep holdout...\\\")\\nelif kn == \\\"out_mode\\\":\\n    kv = k.getValue()\\n    if kv in \\[1,2]:\\n        nuke.toNode(\\\"MergeImg\\\")\\[\\\"operation\\\"].setValue(\\\"plus\\\" if kv==2 else \\\"over\\\")\\n    #Switch output\\n    opt = nuke.toNode(\\\"Output1\\\")\\n    if kv == 3:\\n        opt.setInput(0,nuke.toNode(\\\"DotDeepOut\\\"))\\n    elif kv == 4:\\n        opt.setInput(0,nuke.toNode(\\\"DotGeoOut\\\"))\\n    else:\\n        opt.setInput(0,nuke.toNode(\\\"DotImgOut\\\"))\\n\\n# Global checks here\\nif kn not in \\[\\\"xpos\\\",\\\"ypos\\\",\\\"selected\\\"]:\\n    if n.input(4):\\n        nuke.toNode(\\\"DotDeep\\\").setInput(0,nuke.toNode(\\\"DotInput\\\"))\\n    #Expose deep options\\n    deep_opt = True if (n\\[\\\"in_vectors\\\"].value() == \\\"deep\\\" or n.input(4)) else False\\n    nuke.toNode(\\\"DotDeep\\\").setInput(0,nuke.toNode(\\\"DotInput\\\"))\\n    dh = n\\[\\\"deep_holdout\\\"]\\n    dh.setEnabled(deep_opt)\\n    for i in \\[\\\"deep_thickness\\\",\\\"deep_opacity\\\"]:\\n        n\\[i].setVisible(deep_opt and dh.value())\"\n addUserKnob {20 aPCard}\n addUserKnob {4 in_vectors l input M {position depth deep geometry \"\" \"\"}}\n addUserKnob {41 p_channels l channels -STARTLINE T ShuffleP.in}\n addUserKnob {6 unpremult_p l unpremult -STARTLINE}\n addUserKnob {6 invert_depth l \"invert depth\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 position_group l Position n 1}\n addUserKnob {41 pick T PickVector.pick}\n addUserKnob {26 ctrl_alt_tip l \" (ctrl+alt+click)\" -STARTLINE T \"\"}\n addUserKnob {4 proj_mode l mode t \"place = place the input image on a card at the picked position\\nproject = project the imput image on the selected frame, onto a card at the picked position\" M {place project}}\n proj_mode project\n addUserKnob {3 ref_frame l \"\" -STARTLINE}\n ref_frame 1001\n addUserKnob {22 ref_to_current l \"set to current\" -STARTLINE T \"nuke.thisNode()\\[\\\"ref_frame\\\"].setValue(nuke.frame())\"}\n addUserKnob {14 card_size l size R 0 100}\n card_size 1\n addUserKnob {4 preview_mode l preview M {off \"grid + img\" \"grid only\" \"\" \"\"}}\n preview_mode \"grid + img\"\n addUserKnob {3 grid_resolution l subdiv -STARTLINE}\n grid_resolution 10\n addUserKnob {7 grid_size l size -STARTLINE R 0 2}\n grid_size 5\n addUserKnob {41 pivot +INVISIBLE T Card3D1.pivot}\n addUserKnob {41 translate_world l translate T AxisTweakPre.translate}\n addUserKnob {4 face_cam l \"face camera\" M {none \"on frame\" always \"\"}}\n addUserKnob {3 face_frame l \"\" -STARTLINE +HIDDEN}\n face_frame 1005\n addUserKnob {22 face_to_current l \"set to current\" -STARTLINE +HIDDEN T \"nuke.thisNode()\\[\\\"ref_frame\\\"].setValue(nuke.frame())\"}\n addUserKnob {7 depth_add l \"depth add\" R -100 100}\n addUserKnob {7 depth_mult l \"depth mult\" R 0 10}\n depth_mult 1\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 TweakGroup l Tweak n 1}\n TweakGroup 0\n addUserKnob {41 translate T AxisTweak.translate}\n addUserKnob {41 rotate T AxisTweak.rotate}\n addUserKnob {41 skew T AxisTweak.skew}\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 OutputGroup l Output n 1}\n addUserKnob {4 out_mode l output M {\"Image on black\" \"Image over bg\" \"Image plus bg\" Deep Card}}\n out_mode \"Image over bg\"\n addUserKnob {6 deep_holdout l \"deep holdout\" -STARTLINE +DISABLED}\n addUserKnob {7 deep_thickness l thickness +HIDDEN R 0 100}\n deep_thickness 5\n addUserKnob {7 deep_opacity l opacity +HIDDEN}\n deep_opacity 0.9999\n addUserKnob {41 motionblur T Card3D1.motionblur}\n addUserKnob {41 shutter T Card3D1.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T Card3D1.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T Card3D1.shuttercustomoffset}\n addUserKnob {20 endGroup_3 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 version_author l \"\" t \"aPCard BETA v0.1\\n2018-2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>aPCard BETA v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2018-2019</span>\"}\n}\n Axis2 {\n  inputs 0\n  name AxisTweakPre\n  xpos 1099\n  ypos 501\n }\nset N3434f600 [stack 0]\n Axis2 {\n  useMatrix true\n  matrix {\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n    }\n  name AxisInputCalc\n  xpos 1209\n  ypos 501\n }\n NoOp {\n  inputs 0\n  name cam_axis_vectors\n  xpos 1199\n  ypos 615\n  addUserKnob {20 User}\n  addUserKnob {13 cam_axis_vector}\n  cam_axis_vector {{\"AxisCamBoss.world_matrix.3 - AxisInputCalc.world_matrix.3\"} {\"AxisCamBoss.world_matrix.7 - AxisInputCalc.world_matrix.7\"} {\"AxisCamBoss.world_matrix.11 - AxisInputCalc.world_matrix.11\"}}\n  addUserKnob {7 cam_axis_dist R 0 1000}\n  cam_axis_dist {{\"sqrt(pow2(cam_axis_vector.x) + pow2(cam_axis_vector.y) + pow2(cam_axis_vector.z))\"}}\n  addUserKnob {13 cam_axis_normalized}\n  cam_axis_normalized {{cam_axis_vector/cam_axis_dist} {cam_axis_vector/cam_axis_dist} {cam_axis_vector/cam_axis_dist}}\n  addUserKnob {13 result_depth_vector}\n  result_depth_vector {{\"cam_axis_normalized * parent.depth_add + cam_axis_vector * (parent.depth_mult - 1)\"} {\"cam_axis_normalized * parent.depth_add + cam_axis_vector * (parent.depth_mult - 1)\"} {\"cam_axis_normalized * parent.depth_add + cam_axis_vector * (parent.depth_mult - 1)\"}}\n }\n Axis2 {\n  inputs 0\n  name AxisBoss\n  xpos 1324\n  ypos 462\n }\n Input {\n  inputs 0\n  name Inputpos\n  label dyn\n  xpos -146\n  ypos -281\n  number 1\n }\n Dot {\n  name DotInput\n  label \" Main\"\n  note_font \"Bitstream Vera Sans Bold\"\n  note_font_size 41\n  xpos -112\n  ypos -67\n }\nset N34387fa0 [stack 0]\n Dot {\n  name DotDeep\n  label \"\\nDeep?\"\n  note_font \"Bitstream Vera Sans Bold\"\n  note_font_size 41\n  xpos -112\n  ypos 309\n }\n Input {\n  inputs 0\n  name Inputdeep_holdout\n  xpos -256\n  ypos 1861\n  number 4\n }\n Switch {\n  inputs 2\n  which 1\n  name SwitchDHSource\n  xpos -146\n  ypos 1861\n  disable {{\"\\[exists parent.input4]\"}}\n }\nset N33de49a0 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos -112\n  ypos 1911\n }\n Input {\n  inputs 0\n  name Inputcam\n  xpos 1845\n  ypos 82\n  number 2\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 1879\n  ypos 186\n }\nset N34091c40 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 1879\n  ypos 310\n }\nset N2aed3110 [stack 0]\n Dot {\n  name Dot28\n  xpos 1879\n  ypos 621\n }\nset N131564e0 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 1879\n  ypos 1168\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 1157\n  ypos 1168\n }\nset N13cf36c0 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 1157\n  ypos 1247\n }\nset N342e7a70 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 1157\n  ypos 1317\n }\nset N34361ec0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 1157\n  ypos 1366\n }\npush $N34361ec0\npush $N342e7a70\n FrameHold {\n  firstFrame {{parent.ref_frame}}\n  name FrameHoldProj\n  xpos 964\n  ypos 1237\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 900\n  ypos 741\n }\n Shuffle {\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos 900\n  ypos 789\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 934\n  ypos 868\n }\nset N2aecc000 [stack 0]\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 824\n  ypos 868\n }\nset N342c8330 [stack 0]\n Project3D2 {\n  inputs 2\n  name Project3D1\n  xpos 790\n  ypos 1243\n }\npush $N131564e0\n Axis2 {\n  name AxisCamBoss\n  xpos 1463\n  ypos 597\n }\n Dot {\n  name Dot8\n  xpos 1487\n  ypos 824\n }\npush $N3434f600\n Axis2 {\n  useMatrix true\n  matrix {\n      {1 0 0 {-parent.cam_axis_vectors.result_depth_vector.x}}\n      {0 1 0 {-parent.cam_axis_vectors.result_depth_vector.y}}\n      {0 0 1 {-parent.cam_axis_vectors.result_depth_vector.z}}\n      {0 0 0 1}\n    }\n  name AxisDepth\n  xpos 1099\n  ypos 595\n }\n Axis2 {\n  useMatrix true\n  matrix {\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n      {{parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix} {parent.AxisBoss.world_matrix}}\n    }\n  name AxisInput\n  xpos 1099\n  ypos 724\n }\nset N3407b520 [stack 0]\n Axis2 {\n  inputs 2\n  name Axis7\n  label \"lookat absolute\"\n  xpos 1334\n  ypos 800\n }\nset N343067d0 [stack 0]\n Dot {\n  name Dot9\n  xpos 1358\n  ypos 966\n }\npush $N343067d0\npush $N3407b520\n Axis2 {\n  useMatrix true\n  matrix {\n      {{AxisBoss.world_matrix.0(parent.ref_frame)} {AxisBoss.world_matrix.4(parent.ref_frame)} {AxisBoss.world_matrix.8(parent.ref_frame)} 0}\n      {{AxisBoss.world_matrix.1(parent.ref_frame)} {AxisBoss.world_matrix.5(parent.ref_frame)} {AxisBoss.world_matrix.9(parent.ref_frame)} 0}\n      {{AxisBoss.world_matrix.2(parent.ref_frame)} {AxisBoss.world_matrix.6(parent.ref_frame)} {AxisBoss.world_matrix.10(parent.ref_frame)} 0}\n      {0 0 0 1}\n    }\n  name AxisRotTransposed1\n  label \"at ref frame\"\n  xpos 1191\n  ypos 808\n }\n Axis2 {\n  inputs 2\n  useMatrix true\n  matrix {\n      {{parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} 0}\n      {{parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} 0}\n      {{parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} {parent.Axis7.world_matrix(parent.ref_frame)} 0}\n      {0 0 0 1}\n    }\n  look_strength 0\n  name Axis10\n  label \"lookat rotations\\nlook input but strength set to 0 to force recalculate...\"\n  xpos 1191\n  ypos 892\n }\npush $N3407b520\n Switch {\n  inputs 3\n  which {{parent.face_cam}}\n  name SwitchFaceCam\n  xpos 1089\n  ypos 962\n }\n Axis2 {\n  look_strength 0\n  name AxisTweak\n  label Post\n  xpos 1099\n  ypos 1042\n }\nset N344266b0 [stack 0]\npush $N342c8330\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 702\n  ypos 868\n }\n Card2 {\n  control_points {3 3 3 6 \n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0} \n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0} \n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0} \n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0} \n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0} \n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0} \n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0} \n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0} \n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card1\n  xpos 668\n  ypos 1100\n }\n TransformGeo {\n  inputs 2\n  scaling {{parent.card_size} {parent.card_size} 1}\n  name TransformGeo2\n  xpos 668\n  ypos 1165\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 702\n  ypos 1208\n }\nset N34408aa0 [stack 0]\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos 668\n  ypos 1243\n }\nset N127fe430 [stack 0]\n Input {\n  inputs 0\n  name Inputbg\n  xpos -634\n  ypos 182\n  number 3\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"256 256 0 0 256 256 1 square_256\"\n  name Black\n  xpos -497\n  ypos -97\n  postage_stamp false\n }\n Reformat {\n  type \"to box\"\n  box_width {{NoOpSize.width}}\n  box_height {{NoOpSize.height}}\n  box_fixed true\n  name ReformatToVec\n  xpos -497\n  ypos -71\n }\n Switch {\n  inputs 2\n  which 1\n  name Switchbg\n  xpos -497\n  ypos 182\n  disable {{\"!\\[exists parent.input3] \"}}\n }\nset N2e4fd440 [stack 0]\n Remove {\n  name RemoveAll2\n  xpos 558\n  ypos 1307\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type distance\n  name ScanlineRender2\n  xpos 668\n  ypos 1313\n }\n MotionBlur3D {\n  inputs 2\n  Z depth.Z\n  shutter {{parent.Card3D1.shutter}}\n  shutteroffset {{parent.Card3D1.shutteroffset}}\n  shuttercustomoffset {{parent.Card3D1.shuttercustomoffset}}\n  name MotionBlur3D1\n  xpos 668\n  ypos 1362\n }\n VectorBlur {\n  channels rgba\n  uv motion\n  scale {{parent.Card3D1.motionblur>0}}\n  name VectorBlur1\n  xpos 668\n  ypos 1388\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 702\n  ypos 1449\n }\npush $N344266b0\npush $N13cf36c0\npush $N2aecc000\n Card3D {\n  inputs 3\n  translate {0 0 0}\n  scaling {{parent.card_size} {parent.card_size} 1}\n  shutteroffset centred\n  name Card3D1\n  xpos 900\n  ypos 1164\n }\n Switch {\n  inputs 2\n  which {{parent.proj_mode}}\n  name SwitchProject\n  xpos 900\n  ypos 1445\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 934\n  ypos 1789\n }\nset N3449df60 [stack 0]\n DeepFromImage {\n  premult true\n  name DeepFromImage1\n  xpos 189\n  ypos 1785\n }\n DeepExpression {\n  temp_name0 ddt\n  temp_expr0 \"\\[value parent.deep_thickness]\"\n  temp_name1 ddo\n  temp_expr1 \"\\[value parent.deep_opacity]\"\n  chans1 deep\n  rgba.alpha rgba.alpha*ddo\n  deep.front deep.front-ddt/2\n  deep.back deep.back+ddt/2\n  name DeepExpSoften\n  xpos 189\n  ypos 1811\n }\nset N3441e1a0 [stack 0]\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 84\n  ypos 1815\n }\n DeepMerge {\n  inputs 2\n  operation holdout\n  name DeepMerge1\n  xpos 50\n  ypos 1907\n  disable {{\"!(parent.deep_holdout && (\\[exists parent.input4] || \\[exists DotDeep.input0]))\"}}\n }\n Dot {\n  name DotDeepOut\n  label DeepOut\n  note_font_size 41\n  xpos 84\n  ypos 2147\n }\npush $N2aed3110\n Dot {\n  name Dot3\n  label \"\\ncam\"\n  note_font \"Bitstream Vera Sans Bold\"\n  note_font_size 12\n  xpos -1228\n  ypos 1319\n  hide_input true\n }\npush $N344266b0\n Wireframe {\n  inputs 0\n  operation \"see through\"\n  line_width 2\n  name Wireframe2\n  xpos -1203\n  ypos 699\n }\n Card2 {\n  image_aspect false\n  rows 2\n  columns 2\n  control_points {3 3 3 6 \n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0} \n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0} \n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0} \n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0} \n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0} \n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0} \n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0} \n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0} \n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name CardPreviewCtr\n  xpos -1203\n  ypos 757\n }\n Wireframe {\n  inputs 0\n  operation \"see through\"\n  line_width 0.3\n  line_color 0.5\n  name Wireframe1\n  xpos -1113\n  ypos 699\n }\n Card2 {\n  image_aspect false\n  rows {{parent.grid_resolution}}\n  columns {{parent.grid_resolution}}\n  control_points {3 3 3 6 \n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0} \n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0} \n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0} \n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0} \n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0} \n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0} \n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0} \n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0} \n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name CardPreview\n  xpos -1113\n  ypos 756\n }\n MergeGeo {\n  inputs 2\n  name MergeGeo1\n  xpos -1113\n  ypos 794\n }\n TransformGeo {\n  inputs 2\n  scaling {{parent.card_size} {parent.card_size} 1}\n  uniform_scale {{parent.grid_size}}\n  name TransformGeo1\n  xpos -1113\n  ypos 1062\n }\npush $N2e4fd440\n Remove {\n  name RemoveAll1\n  xpos -982\n  ypos 1309\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing low\n  motion_vectors_type distance\n  name ScanlineRender1\n  xpos -1113\n  ypos 1315\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -1079\n  ypos 2060\n }\npush $N33de49a0\npush $N3441e1a0\n DeepHoldout2 {\n  inputs 2\n  name DeepHoldout1\n  xpos 189\n  ypos 1861\n }\npush $N3449df60\n Switch {\n  inputs 2\n  which {{\"parent.deep_holdout && (\\[exists parent.input4] || \\[exists DotDeep.input0])\"}}\n  name SwitchDH\n  xpos 900\n  ypos 1861\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 934\n  ypos 2028\n }\npush $N2e4fd440\n Remove {\n  name RemoveAll\n  xpos -497\n  ypos 385\n  disable {{!(parent.out_mode!=1&&parent.out_mode!=2)}}\n }\n Merge2 {\n  inputs 2\n  name MergeImg\n  xpos -497\n  ypos 2024\n  disable {{parent.preview_mode==2}}\n }\n Merge2 {\n  inputs 2\n  name MergeGrid\n  label PREVIEW\n  xpos -497\n  ypos 2050\n  disable {{parent.preview_mode==0}}\n }\n Dot {\n  name DotImgOut\n  label ImgOut\n  note_font_size 41\n  xpos -463\n  ypos 2149\n }\n Output {\n  name Output1\n  xpos -497\n  ypos 2351\n }\npush $N34091c40\n FillMat {\n  inputs 0\n  color 1\n  name FillMat1\n  xpos 1390\n  ypos 139\n }\npush $N34387fa0\n ApplyMaterial {\n  inputs 2\n  name ApplyMat\n  xpos 1280\n  ypos 139\n }\npush $N2e4fd440\n Remove {\n  name RemoveAll3\n  xpos 1170\n  ypos 176\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  name SRGeo\n  xpos 1280\n  ypos 182\n }\npush $N2aed3110\npush $N34387fa0\n Shuffle {\n  in P\n  in2 rgba\n  alpha alpha2\n  name ShuffleP\n  label \"\\[value in]\"\n  xpos 941\n  ypos 242\n }\nset N3463bed0 [stack 0]\n Shuffle {\n  out depth\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1093\n  ypos 242\n }\n Blur {\n  channels rgba\n  name Blur1\n  xpos 1093\n  ypos 280\n }\n DepthToPosition {\n  inputs 2\n  invert {{parent.in_vectors==1?parent.invert_depth:0}}\n  name DepthToPosition1\n  xpos 1093\n  ypos 306\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1127\n  ypos 363\n }\npush $N3463bed0\n Switch {\n  inputs 2\n  which 1\n  name SwitchDepth\n  xpos 941\n  ypos 359\n  disable {{parent.in_vectors==0||parent.in_vectors==3}}\n }\n Unpremult {\n  name Unpremult\n  xpos 941\n  ypos 385\n  disable {{!parent.unpremult_p}}\n }\n NoOp {\n  name PickVector\n  knobChanged \"n = nuke.thisNode()\\nnuke.toNode(\\\"AxisBoss\\\")\\[\\\"translate\\\"].setValue(n\\[\\\"pick\\\"].value())\"\n  xpos 941\n  ypos 443\n  addUserKnob {20 PickVector}\n  addUserKnob {18 pick}\n  pick {0 0 0}\n  addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\npush $N127fe430\npush $N34408aa0\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 419\n  ypos 1208\n }\n Switch {\n  inputs 2\n  which 1\n  name SwitchProjMode\n  xpos 385\n  ypos 1243\n  disable {{!parent.proj_mode}}\n }\n Dot {\n  name DotGeoOut\n  label GeoOut\n  note_font_size 41\n  xpos 419\n  ypos 2152\n }\npush $N34387fa0\n Switch {\n  which 1\n  name SwitchInRes\n  xpos -243\n  ypos -71\n  disable {{\"parent.in_vectors != 3\"}}\n }\n NoOp {\n  name NoOpSize\n  xpos -353\n  ypos -71\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_aPMatte_v2.gizmo",
    "content": "add_layer {P P.red P.green P.blue P.alpha}\nGroup {\n name aPMatte\n help \"aPMatte v2.0 by Adrian Pueyo\\n\\nCreates a matte of different shapes, based on a Position pass. Includes transformation and falloff controls, and the option to output or overlay a Position 4D noise.\\n\\nv2.0 has the code more optimized, new available shapes and modes, includes a 3D-space view of the matte and point cloud, and accepts an Axis or Camera input. Also, lets you preview the p-matte over an image input and merge the alpha with the incoming one.\\n\\nadrianpueyo.com, 2017-2019\"\n onCreate \"n = nuke.thisNode()\\n\\nfor k in \\[\\\"radius\\\",\\\"card_scale\\\",\\\"noise_size\\\"]:\\n    n\\[k].setFlag(0x00000004)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\n\\nif kn in \\['xpos','ypos','selected']:\\n    pass\\nelif kn == \\\"shape\\\":\\n    ramp_on = k.value() in \\['linear ramp', 'radial ramp']\\n    n\\['radius'].setVisible(not ramp_on)\\n    n.knobs()\\[\\\"black\\\"].setVisible(ramp_on)\\n    n\\[\\\"axis\\\"].setVisible(k.value()==\\\"plane\\\")\\n    n\\[\\\"card_scale\\\"].setVisible(k.getValue() in \\[3,5] and n\\[\\\"preview_in_3d\\\"].value())\\n    picker = n.knobs()\\[\\\"picker\\\"]\\n    if ramp_on:\\n        picker.setLabel(\\\"white\\\")\\n    elif k.value() == \\\"plane\\\":\\n        picker.setLabel(\\\"pivot\\\")\\n    else:\\n        picker.setLabel(\\\"center\\\")\\n\\n    # Connect Scene\\n    sc = nuke.toNode(\\\"SceneGeo\\\")\\n    kv = k.getValue()\\n    if kv in \\[0,1,2]:\\n        sc.setInput(1,nuke.toNode(\\\"DotSphereCube\\\"))\\n    elif kv in \\[3,5]:\\n        sc.setInput(1,nuke.toNode(\\\"DotPlanes\\\"))\\n    else:\\n        sc.setInput(1,nuke.toNode(\\\"DotRadialRamp\\\"))\\n\\nelif kn == \\\"use_axis\\\":\\n    ianame = \\\"Inputaxis\\\"\\n    if k.value():\\n        a = nuke.toNode(\\\"AxisInput\\\")\\n        if not nuke.exists(ianame):\\n            ia = nuke.nodes.Input(name=ianame)\\n            ia.setXYpos(a.xpos()-10,a.ypos()-60)\\n            a.setInput(0,ia)\\n    else:\\n        if nuke.exists(ianame):\\n            n.setInput(3,None)\\n            ia = nuke.toNode(ianame)\\n            nuke.delete(ia)\\n\\nelif kn == \\\"preview_in_3d\\\":\\n    kv = k.value()\\n    n.knobs()\\[\\\"point_detail\\\"].setVisible(kv)\\n    n.knobs()\\[\\\"point_size\\\"].setVisible(kv)\\n    n\\[\\\"card_scale\\\"].setVisible(n\\[\\\"shape\\\"].getValue() in \\[3,5] and k.value())\\n    nuke.toNode(\\\"RenderPC\\\").setInput(1,nuke.toNode(\\\"SceneGeo\\\") if kv else None)\\nelif kn == \\\"noise\\\":\\n    noise_on = k.value() != 'off'\\n    for t in \\['noise_rel','noise_persistance','noise_octaves','noise_lacunarity','noise_size','noise_offset','noise_add','noise_gain','noise_gamma','noise_mix']:\\n        n\\[t].setVisible(noise_on)\\np_input = n.input(1) is not None\\nn\\[\\\"img_in\\\"].setEnabled(not p_input)\\nn\\[\\\"img_txt\\\"].setEnabled(not p_input)\\nn.knobs()\\[\\\"p_in\\\"].setEnabled(p_input)\\nn.knobs()\\[\\\"p_txt\\\"].setEnabled(p_input)\\n\"\n tile_color 0x898989ff\n selected true\n addUserKnob {20 aPMatte}\n addUserKnob {26 position_from l \"\" +STARTLINE T \" Position from:\"}\n addUserKnob {26 img_txt l img T \" \"}\n addUserKnob {41 img_in l \"\" -STARTLINE T ShuffleInImg.in}\n addUserKnob {26 p_txt l \"P (optional)\" +DISABLED T \" \"}\n addUserKnob {41 p_in l \"\" -STARTLINE +DISABLED T ShuffleIn.in}\n addUserKnob {6 premultiplied +STARTLINE}\n premultiplied true\n addUserKnob {6 alpha_masking l \"alpha masking\" t \"Multiply the output by the input's alpha.\" -STARTLINE}\n addUserKnob {26 text l \"\" +STARTLINE}\n addUserKnob {4 outChannels l output M {alpha rgba \"\"}}\n addUserKnob {6 mergeAlpha l \"merge with input alpha\" -STARTLINE}\n addUserKnob {41 Channeloperation l \"\" -STARTLINE T ChannelMerge1.operation}\n addUserKnob {6 preview l \"preview over image\" +STARTLINE}\n preview true\n addUserKnob {26 \"\"}\n addUserKnob {4 shape M {sphere \"cusped box\" \"rounded box\" \"linear ramp\" \"radial ramp\" plane}}\n addUserKnob {4 axis l \"\" -STARTLINE +HIDDEN M {X Y Z \"\" \"\" \"\" \"\"}}\n axis Y\n addUserKnob {6 mirrored -STARTLINE}\n addUserKnob {6 invert -STARTLINE}\n addUserKnob {41 picker l center T BlinkScriptPMatte.picker}\n addUserKnob {6 use_axis l \"use axis\" -STARTLINE}\n addUserKnob {7 radius R 0.1 1000}\n radius 5\n addUserKnob {41 black t \"Black point of your ramp.\" +HIDDEN T BlinkScriptPMatte.black_point}\n addUserKnob {26 \"\"}\n addUserKnob {6 preview_in_3d l \"preview in 3d space\" t \"Recreates a 3D-space preview of the point cloud and the P-matte. After activating this, simply press the Tab key on the active viewer to change to 3D space.\" +STARTLINE}\n addUserKnob {41 point_detail l \"point detail\" +HIDDEN T PositionToPointsPC.detail}\n addUserKnob {41 point_size l \"point size\" +HIDDEN T PositionToPointsPC.pointSize}\n addUserKnob {7 card_scale l \"card scale\" +HIDDEN R 0 100}\n card_scale 100\n addUserKnob {26 \"\"}\n addUserKnob {4 falloff t \"Fallof type for the matte.\" M {linear smooth quadratic cubic \"inv. cubic\" \"\" \"\"}}\n addUserKnob {7 hardness}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {41 xform_order l \"transform order\" T Axis.xform_order}\n addUserKnob {41 rot_order l \"rotation order\" T Axis.rot_order}\n addUserKnob {41 translate T Axis.translate}\n addUserKnob {41 rotate T Axis.rotate}\n addUserKnob {41 scaling l scale T Axis.scaling}\n addUserKnob {41 uniform_scale l \"uniform scale\" T Axis.uniform_scale}\n addUserKnob {41 skew T Axis.skew}\n addUserKnob {41 pivot T Axis.pivot}\n addUserKnob {22 reset_transformations l \"  reset transformations  \" T \"a = nuke.toNode(\\\"Axis\\\")\\na.readKnobs(\\\"xform_order SRT rot_order ZXY translate \\{0 0 0\\} rotate \\{0 0 0\\} scaling \\{1 1 1\\} uniform_scale 1 skew \\{0 0 0\\} pivot \\{0 0 0\\} useMatrix false\\\")\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {4 noise t \"overlay: uses the noise in overlay blend mode over the resulting mask, to make it more organic and less obvious for grading.\\nnoise only: ignore the mask, output a 4D noise.\" M {off overlay \"noise only\" \"\"}}\n addUserKnob {6 noise_rel l relative t \"On: Pick world transformations and positioning of the shape.\\nOff: Pick absolute world transformations.\\n\\nTip: Check when you want the mask to always be affected by the same noise, uncheck when you want to lock the noise to your scene.\" -STARTLINE +HIDDEN}\n noise_rel true\n addUserKnob {7 noise_size l size t \"Size of the noise pattern.\" +HIDDEN R 0 100}\n noise_size 10\n addUserKnob {7 noise_offset l offset t \"Spatial offset of the noise pattern (use to find a sweet spot for your matte).\" +HIDDEN R 0 100}\n addUserKnob {3 noise_octaves l octaves t \"Number of noise iterations.\" +HIDDEN}\n noise_octaves 8\n addUserKnob {7 noise_lacunarity l lacunarity t \"Each octave gets downscaled by this value.\" +HIDDEN R 0 10}\n noise_lacunarity 1.8\n addUserKnob {7 noise_persistance l persistance t \"Each octave gets multiplied by this value.\" +HIDDEN}\n noise_persistance 0.5\n addUserKnob {7 noise_add l add t \"Add a value to the noise.\" +HIDDEN}\n noise_add 0.5\n addUserKnob {7 noise_gain l gain t \"Multiply the resulting noise by this value.\" +HIDDEN R 0 4}\n noise_gain 1\n addUserKnob {7 noise_gamma l gamma t \"Gamma the resulting value.\" +HIDDEN R 0 4}\n noise_gamma 0.3\n addUserKnob {7 noise_mix l mix +HIDDEN}\n noise_mix 1\n addUserKnob {26 version_author l \" \" t \"aPMatte v2.0\\n24 Sep 2019\" T \"<span style=\\\"color:#666\\\"><b>aPMatte v2.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2015-2019</span>\"}\n addUserKnob {6 BlinkScriptPMatte_black_point_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\n Axis2 {\n  inputs 0\n  display off\n  selectable false\n  translate {{parent.BlinkScriptPMatte.aPMatteKernel_picked} {parent.BlinkScriptPMatte.aPMatteKernel_picked} {parent.BlinkScriptPMatte.aPMatteKernel_picked}}\n  name AxisPicked\n  xpos 211\n  ypos 364\n }\n Axis2 {\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n    }\n  name AxisInputCopy1\n  xpos 211\n  ypos 430\n }\n Axis2 {\n  name Axis\n  xpos 211\n  ypos 496\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 235\n  ypos 635\n }\nset N66176940 [stack 0]\n Axis2 {\n  display off\n  selectable false\n  uniform_scale {{sqrt(pow2(BlinkScriptPMatte.aPMatteKernel_picked.x-BlinkScriptPMatte.aPMatteKernel_pickedB.x)+pow2(BlinkScriptPMatte.aPMatteKernel_picked.y-BlinkScriptPMatte.aPMatteKernel_pickedB.y)+pow2(BlinkScriptPMatte.aPMatteKernel_picked.z-BlinkScriptPMatte.aPMatteKernel_pickedB.z))}}\n  name Axis2\n  xpos 211\n  ypos 870\n }\n Card2 {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  image_aspect false\n  rows 1\n  columns 1\n  uniform_scale {{parent.card_scale}}\n  control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n  name Card2\n  xpos 617\n  ypos 438\n }\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 651\n  ypos 484\n }\nset N5e5e2610 [stack 0]\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos 651\n  ypos 537\n }\n Sphere {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 6\n  columns 6\n  name Sphere2\n  xpos 709\n  ypos 438\n }\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 743\n  ypos 563\n }\npush $N5e5e2610\n Cube {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 1\n  columns 1\n  cube {-1 -1 -1 1 1 1}\n  name Cube1\n  xpos 523\n  ypos 438\n }\nset N5e5d4630 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 591\n  ypos 484\n }\npush $N5e5d4630\n Sphere {\n  inputs 0\n  display wireframe\n  selectable false\n  render_mode off\n  cast_shadow false\n  receive_shadow false\n  rows 6\n  columns 6\n  name Sphere1\n  xpos 433\n  ypos 438\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 467\n  ypos 499\n }\n Switch {\n  inputs 6\n  which {{parent.shape}}\n  name SwitchShapeGeo\n  xpos 523\n  ypos 559\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos 557\n  ypos 756\n }\nset N66583fc0 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 331\n  ypos 756\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeoRadius1\n  xpos 297\n  ypos 890\n }\n Dot {\n  name DotRadialRamp\n  label \"\\[value name]\"\n  note_font_size 12\n  xpos 331\n  ypos 922\n }\npush $N66176940\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 466\n  ypos 635\n }\nset N6656da50 [stack 0]\n Axis2 {\n  display off\n  selectable false\n  uniform_scale {{parent.BlinkScriptPMatte.aPMatteKernel_radius}}\n  name Axis1\n  xpos 442\n  ypos 868\n }\npush $N66583fc0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeoAxis1\n  xpos 523\n  ypos 888\n }\n Dot {\n  name DotSphereCube\n  label \"\\[value name]\"\n  note_font_size 12\n  xpos 557\n  ypos 967\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -528\n  ypos 176\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -494\n  ypos 257\n }\nset N5e602650 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -350\n  ypos 257\n }\nset N5e61e4c0 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos -240\n  ypos 257\n }\nset N5e6112f0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -157\n  ypos 257\n }\nset N5e5e1ee0 [stack 0]\n Input {\n  inputs 0\n  name InputP\n  xpos -73\n  ypos 178\n  number 1\n }\nset N5e60caf0 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 100\n  ypos 182\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name SwitchAlpha\n  label \"\\[value which]\"\n  xpos 66\n  ypos 247\n }\n Dot {\n  name Dot8\n  xpos 100\n  ypos 356\n }\npush $N5e5e1ee0\n Shuffle {\n  in P\n  in2 rgba\n  alpha alpha2\n  name ShuffleInImg\n  xpos -191\n  ypos 296\n }\npush $N5e60caf0\n Shuffle {\n  in2 rgba\n  alpha alpha2\n  name ShuffleIn\n  xpos -73\n  ypos 225\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos -73\n  ypos 290\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos -73\n  ypos 346\n  disable {{!parent.alpha_masking}}\n }\n Unpremult {\n  name UnpremultP\n  xpos -73\n  ypos 384\n  disable {{!parent.premultiplied}}\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -39\n  ypos 440\n }\nset N5e5ba2d0 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -132\n  ypos 440\n }\n Blur {\n  channels rgba\n  name Blur1\n  xpos -166\n  ypos 827\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos -679\n  ypos 579\n  number 2\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos -645\n  ypos 629\n }\nset N5e59d2b0 [stack 0]\npush $N5e5ba2d0\n BlinkScript {\n  recompileCount 9\n  ProgramGroup 1\n  KernelDescription \"2 \\\"aPMatteKernel\\\" iterate pixelWise a9e2f4ce494401f56bb6fe8816e2389016c58248ae203f67227e1334a7acbe47 2 \\\"p\\\" Read Point \\\"dst\\\" Write Point 21 \\\"picked\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"pickedB\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"m\\\" Float 16 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== \\\"radius\\\" Float 1 AAAAAA== \\\"shape\\\" Int 1 AAAAAA== \\\"invert_shape\\\" Int 1 AAAAAA== \\\"use_alpha\\\" Int 1 AAAAAA== \\\"mirrored\\\" Int 1 AAAAAA== \\\"falloff\\\" Int 1 AQAAAA== \\\"hardness\\\" Float 1 AAAAAA== \\\"use noise\\\" Int 1 AAAAAA== \\\"noise_relative\\\" Int 1 AAAAAA== \\\"noise octaves\\\" Int 1 CAAAAA== \\\"noise persistence\\\" Float 1 AAAAPw== \\\"lacunarity\\\" Float 1 AAAAQA== \\\"noise scale\\\" Float 1 CtcjPA== \\\"noise_offset\\\" Float 1 AAAAAA== \\\"noise_add\\\" Float 1 AAAAAA== \\\"noise_gain\\\" Float 1 AAAAAA== \\\"noise_gamma\\\" Float 1 AAAAAA== \\\"noise_mix\\\" Float 1 AAAAAA== 21 \\\"picked\\\" 3 1 \\\"pickedB\\\" 3 1 \\\"m\\\" 16 1 \\\"radius\\\" 1 1 \\\"shape\\\" 1 1 \\\"invert_shape\\\" 1 1 \\\"use_alpha\\\" 1 1 \\\"mirrored\\\" 1 1 \\\"falloff\\\" 1 1 \\\"hardness\\\" 1 1 \\\"use_noise\\\" 1 1 \\\"noise_relative\\\" 1 1 \\\"noise_octaves\\\" 1 1 \\\"noise_persistence\\\" 1 1 \\\"noise_lacunarity\\\" 1 1 \\\"noise_scale\\\" 1 1 \\\"noise_offset\\\" 1 1 \\\"noise_add\\\" 1 1 \\\"noise_gain\\\" 1 1 \\\"noise_gamma\\\" 1 1 \\\"noise_mix\\\" 1 1 0\"\n  kernelSource \"// ----------------------------------------------------------------\\n// aPMatte v1.0 by Adrian Pueyo\\n//\\n// Generate a matte of different shapes, based on a Position pass.\\n// Includes options to transform the mask and change its falloff.\\n// Also includes the option to output or overlay a P-based noise.\\n//\\n// adrianpueyo.com, 2017-2019\\n// ----------------------------------------------------------------\\n\\n\\n// Noise algorithm adapted by Adrian Pueyo from Noise4D function by Mads Hagbarth Lund\\n// Noise4D function Ported by Mads Hagbarth Lund 2014\\n// Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\ninline float raw_noise_4d( const float x, const float y, const float z, const float w ) \\n\\{\\nint simplex\\[64]\\[4] = \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n\\};\\n    int perm\\[512] = \\{\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n    \\};\\n  int grad4\\[32]\\[4]= \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n  \\};\\n    float F4 = (sqrt(5.0f)-1.0)/4.0;\\n    float G4 = (5.0-sqrt(5.0f))/20.0;\\n    float n0, n1, n2, n3, n4;\\n    float s = (x + y + z + w) * F4;\\n    int i = fastfloor(x + s);\\n    int j = fastfloor(y + s);\\n    int k = fastfloor(z + s);\\n    int l = fastfloor(w + s);\\n    float t = (i + j + k + l) * G4;\\n    float X0 = i - t;\\n    float Y0 = j - t;\\n    float Z0 = k - t;\\n    float W0 = l - t;\\n\\n    float x0 = x - X0;\\n    float y0 = y - Y0;\\n    float z0 = z - Z0;\\n    float w0 = w - W0;\\n    int c1 = (x0 > y0) ? 32 : 0;\\n    int c2 = (x0 > z0) ? 16 : 0;\\n    int c3 = (y0 > z0) ? 8 : 0;\\n    int c4 = (x0 > w0) ? 4 : 0;\\n    int c5 = (y0 > w0) ? 2 : 0;\\n    int c6 = (z0 > w0) ? 1 : 0;\\n    int c = c1 + c2 + c3 + c4 + c5 + c6;\\n\\n    int i1, j1, k1, l1;\\n    int i2, j2, k2, l2;\\n    int i3, j3, k3, l3;\\n    i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n    j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n    k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n    l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n    i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n    j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n    k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n    l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n    i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n    j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n    k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n    l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n    float x1 = x0 - i1 + G4;\\n    float y1 = y0 - j1 + G4;\\n    float z1 = z0 - k1 + G4;\\n    float w1 = w0 - l1 + G4;\\n    float x2 = x0 - i2 + 2.0*G4;\\n    float y2 = y0 - j2 + 2.0*G4;\\n    float z2 = z0 - k2 + 2.0*G4;\\n    float w2 = w0 - l2 + 2.0*G4;\\n    float x3 = x0 - i3 + 3.0*G4;\\n    float y3 = y0 - j3 + 3.0*G4;\\n    float z3 = z0 - k3 + 3.0*G4;\\n    float w3 = w0 - l3 + 3.0*G4;\\n    float x4 = x0 - 1.0 + 4.0*G4;\\n    float y4 = y0 - 1.0 + 4.0*G4;\\n    float z4 = z0 - 1.0 + 4.0*G4;\\n    float w4 = w0 - 1.0 + 4.0*G4;\\n    int ii = i & 255;\\n    int jj = j & 255;\\n    int kk = k & 255;\\n    int ll = l & 255;\\n    int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n    int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n    int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n    int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n    int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n    float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n    if(t0<0) n0 = 0.0;\\n    else \\{\\n        t0 *= t0;\\n        n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n    \\}\\n    float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n    if(t1<0) n1 = 0.0;\\n    else \\{\\n        t1 *= t1;\\n        n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n    \\}\\n    float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n    if(t2<0) n2 = 0.0;\\n    else \\{\\n        t2 *= t2;\\n        n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n    \\}\\n    float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n    if(t3<0) n3 = 0.0;\\n    else \\{\\n        t3 *= t3;\\n        n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n    \\}\\n    float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n    if(t4<0) n4 = 0.0;\\n    else \\{\\n        t4 *= t4;\\n        n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n    \\}\\n    return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\ninline float octave_noise_4d( const float octaves, const float persistence, const float scale, const float x, const float y, const float z, const float w, const float lacunarity=2 ) \\n\\{\\n    float total = 0;\\n    float frequency = scale;\\n    float amplitude = 1;\\n    float maxAmplitude = 0;\\n    for( int i=0; i < octaves; i++ ) \\{\\n        total += (float)raw_noise_4d( x * frequency, y * frequency, z * frequency, w * frequency ) * amplitude;\\n\\n        frequency *= lacunarity;\\n        maxAmplitude += amplitude;\\n        amplitude *= persistence;\\n    \\}\\n    return float(total / maxAmplitude);\\n\\}\\n\\nkernel aPMatteKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> p;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float3 picked; //Center, or white for ramps\\n    float3 pickedB; //Black for ramps\\n    float4x4 m; //Camera or axis matrix.\\n    float radius;\\n    int shape; //0=sphere,1=cusped box,2=rounded box,3=ramp, 4=rad.ramp\\n    int invert_shape;\\n    int use_alpha;\\n    int mirrored;\\n    int falloff; //0=linear,1=smooth,2=square,3=inv.square\\n    float hardness;\\n\\n    // Noise parameters here\\n    int use_noise; //0=off,1=overlay,2=noise only\\n    int noise_relative;\\n    int noise_octaves;\\n    float noise_persistence;\\n    float noise_lacunarity;\\n    float noise_scale;\\n    float noise_offset;\\n    float noise_add;\\n    float noise_gain;\\n    float noise_gamma;\\n    float noise_mix;\\n\\n  void define() \\{\\n    defineParam(falloff, \\\"falloff\\\", 1);\\n    defineParam(use_noise, \\\"use noise\\\", 0);\\n    defineParam(noise_octaves, \\\"noise octaves\\\", 8);\\n    defineParam(noise_persistence, \\\"noise persistence\\\",  0.5f);\\n    defineParam(noise_lacunarity, \\\"lacunarity\\\",  2.0f);\\n    defineParam(noise_scale, \\\"noise scale\\\", 0.01f);\\n  \\}\\n\\n  inline float rad(float deg)\\{ \\n    return deg*PI/180;\\n  \\}\\n\\n  inline float smoothstep(float edge0, float edge1, float x)\\{\\n    x = clamp((x - edge0)/(edge1 - edge0), 0.0f, 1.0f);\\n    return x*x*x*(x*(x*6-15)+10);\\n  \\}\\n\\n  inline float cl(float val)\\{\\n  return clamp(val,0.0f,1.0f); \\n  \\}\\n\\n\\n  void process() \\{\\n    //1. P WORLD\\n    // Center the coordinates\\n    float3 color = float3(p(0)-picked.x,p(1)-picked.y,p(2)-picked.z);\\n    int black = 0;\\n\\n    // Matrix!\\n    float4x4 mi = m;\\n    mi = mi.invert();\\n    for(int c = 0; c<dst.kComps; c++)\\{\\n      color\\[c] = mi\\[c]\\[0]*color\\[0] + mi\\[c]\\[1]*color\\[1] + mi\\[c]\\[2]*color\\[2] + mi\\[c]\\[3]*1.0f;\\n    \\}\\n\\n    //2. SHAPES\\n    float dist;\\n    float result;\\n\\n    if(shape==0)\\{//Sphere\\n      dist = sqrt(pow(color\\[0],2) + pow(color\\[1],2) + pow(color\\[2],2));\\n      result = radius==0.0f? 0:cl(1-dist/radius);\\n    \\} else if(shape==1)\\{//Cusped Box\\n      result = min( min( cl((radius-fabs(color.x))/radius) , cl((radius-fabs(color.y))/radius)) , cl((radius-fabs(color.z))/radius)) ;\\n      result = hardness>=1? float(result>0) : result;\\n    \\} else if(shape==2)\\{//Rounded Box\\n      result = radius==0.0f? 0: smoothstep(0,1-hardness, cl(1-fabs(float(color.x)/radius)) ) * smoothstep(0,1-hardness, cl(1-fabs(float(color.y)/radius)) ) * smoothstep(0,1-hardness, cl(1-fabs(float(color.z)/radius)) );\\n      result = hardness>=1? float(result>0) : result;\\n    \\} else if(shape==3)\\{//Linear Ramp\\n      dist = sqrt(pow(color\\[0],2) + pow(color\\[1],2) + pow(color\\[2],2));\\n      float distB = sqrt(pow(color\\[0]-(pickedB.x-picked.x),2) + pow(color\\[1]-(pickedB.y-picked.y),2) + pow(color\\[2]-(pickedB.z-picked.z),2));\\n      float distWB = sqrt(pow(pickedB.x-picked.x,2) + pow(pickedB.y-picked.y,2) + pow(pickedB.z-picked.z,2));\\n      float angWB = acos( clamp((pow(dist,2)-pow(distB,2)+pow(distWB,2))/(2*dist*distWB),-1.0f,1.0f) );\\n      float cosAngWB = dist==0.0f? 0:cos(angWB);\\n      result = distWB==0? 0.0f: cl((dist * cosAngWB) / distWB );\\n      result = 1-result;\\n    \\} else if(shape==4)\\{//Radial Ramp\\n      dist = sqrt(pow(color\\[0],2) + pow(color\\[1],2) + pow(color\\[2],2));\\n      float distB = sqrt(pow(color\\[0]-(pickedB.x-picked.x),2) + pow(color\\[1]-(pickedB.y-picked.y),2) + pow(color\\[2]-(pickedB.z-picked.z),2));\\n      float distWB = sqrt(pow(pickedB.x-picked.x,2) + pow(pickedB.y-picked.y,2) + pow(pickedB.z-picked.z,2));\\n      result = distWB==0? 0.0f: cl((dist) / distWB );\\n      result = 1-result;\\n    \\}\\n    result = mirrored ? result*(1-result)*4:result;\\n    result = invert_shape? 1-result:result;\\n\\n    //3. FALLOFF\\n    if(falloff==0)\\{//Linear\\n      result = hardness>=1? float(result>0) : cl(result/(1-hardness));\\n    \\}else if(falloff==1)\\{//Smooth\\n      result = hardness>=1? float(result>0) : smoothstep(0,1-hardness,result);\\n    \\}else if(falloff==2)\\{//Quadratic\\n      result = hardness>=1? float(result>0) : cl(pow(float(result/(1-hardness)),2));\\n    \\}else if(falloff==3)\\{//Cubic\\n      result = hardness>=1? float(result>0) : cl(pow(float(result/(1-hardness)),3));\\n    \\}else if(falloff==4)\\{//Inv. Cubic\\n      result = hardness>=1? float(result>0) : 1-cl(pow(float(cl(1-(result/(1-hardness)))),3));\\n    \\}\\n\\n    //4. GENERATE NOISE\\n    float noise;\\n    if(use_noise!=0)\\{//Avoid calculations if possible\\n      if(noise_relative!=1)\\{\\n        noise = (float)octave_noise_4d(float(noise_octaves),noise_persistence,noise_scale==0?10000.0f:1/noise_scale,p(0),p(1),p(2),noise_offset,noise_lacunarity);\\n      \\}else\\{\\n        noise = (float)octave_noise_4d(float(noise_octaves),noise_persistence,noise_scale==0?10000.0f:1/noise_scale,color\\[0],color\\[1],color\\[2],noise_offset,noise_lacunarity);\\n      \\}\\n      noise = cl(pow(max((noise+noise_add)*noise_gain,0.0f),noise_gamma==0?1:1/noise_gamma));\\n    \\}\\n\\n\\n    //5. ALPHA MASK AND APPLY NOISE\\n    result = max(result,0.0f); //Clamp negative values\\n    if(use_noise==1)\\{//Overlay\\n      result = result<0.5f? noise_mix*(2*noise*result)+(1-noise_mix)*result : noise_mix*(1-2*(1-result)*(1-noise))+(1-noise_mix)*result;\\n    \\}else if(use_noise>=2)\\{\\n      result = noise*noise_mix;\\n    \\}\\n\\n    if(use_alpha > 0) result=result*p(3);\\n\\n    //6. WE'RE DONE\\n    dst() = result;\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  rebuild \"\"\n  aPMatteKernel_picked {{(parent.shape==3&&parent.mirrored)?picker-(black_point-picker):(parent.shape==5&&parent.mirrored)?picker-radius:picker} {(parent.shape==3&&parent.mirrored)?picker-(black_point-picker):(parent.shape==5&&parent.mirrored)?picker-radius:picker} {(parent.shape==3&&parent.mirrored)?picker-(black_point-picker):(parent.shape==5&&parent.mirrored)?picker-radius:picker}}\n  aPMatteKernel_pickedB {{parent.shape==5?parent.axis==0?picker+radius+0.0001:picker:black_point} {parent.shape==5?parent.axis==1?picker+radius+0.0001:picker:black_point} {parent.shape==5?parent.axis==2?picker+radius+0.0001:picker+0.00001:black_point}}\n  group_aPMatteKernel_m 1\n  aPMatteKernel_m {\n      {{parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix}}\n      {{parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix}}\n      {{parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix}}\n      {{parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix} {parent.AxisCopy.world_matrix}}\n    }\n  aPMatteKernel_radius {{parent.radius}}\n  aPMatteKernel_shape {{parent.shape==5?3:parent.shape}}\n  aPMatteKernel_invert_shape {{parent.invert}}\n  aPMatteKernel_use_alpha {{parent.alpha_masking}}\n  aPMatteKernel_mirrored {{parent.mirrored}}\n  aPMatteKernel_falloff {{parent.falloff}}\n  aPMatteKernel_hardness {{parent.hardness}}\n  \"aPMatteKernel_use noise\" {{parent.noise}}\n  aPMatteKernel_noise_relative {{parent.noise_rel}}\n  \"aPMatteKernel_noise octaves\" {{parent.noise_octaves}}\n  \"aPMatteKernel_noise persistence\" {{parent.noise_persistance}}\n  aPMatteKernel_lacunarity {{parent.noise_lacunarity}}\n  \"aPMatteKernel_noise scale\" {{parent.noise_size}}\n  aPMatteKernel_noise_offset {{parent.noise_offset}}\n  aPMatteKernel_noise_add {{parent.noise_add}}\n  aPMatteKernel_noise_gain {{parent.noise_gain}}\n  aPMatteKernel_noise_gamma {{parent.noise_gamma}}\n  aPMatteKernel_noise_mix {{parent.noise_mix}}\n  rebuild_finalise \"\"\n  name BlinkScriptPMatte\n  xpos -73\n  ypos 489\n  addUserKnob {20 User}\n  addUserKnob {18 picker}\n  picker {0 0 0}\n  addUserKnob {6 picker_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 picker_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 black_point l black}\n  black_point {0 0 0}\n  addUserKnob {6 black_point_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 black_point_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Multiply {\n  channels rgba\n  value {{parent.mix}}\n  name Multiply1\n  label \"\\[value value]\"\n  selected true\n  xpos -73\n  ypos 553\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -39\n  ypos 629\n }\nset N5e791bc0 [stack 0]\npush $N5e6112f0\n Merge2 {\n  inputs 2+1\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -274\n  ypos 625\n }\n Dot {\n  name Dot9\n  xpos -240\n  ypos 894\n }\nset N5e7b7690 [stack 0]\n PositionToPoints2 {\n  inputs 2\n  display textured\n  selectable false\n  render_mode off\n  detail 1\n  name PositionToPointsPC\n  xpos -166\n  ypos 890\n  disable {{!parent.preview_in_3d}}\n }\n Scene {\n  inputs 2\n  name SceneGeo\n  xpos -156\n  ypos 983\n  disable {{!parent.preview_in_3d}}\n }\n ScanlineRender {\n  inputs 0\n  conservative_shader_sampling false\n  motion_vectors_type distance\n  name RenderPC\n  xpos -166\n  ypos 1102\n  disable {{!parent.preview_in_3d}}\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos -132\n  ypos 1172\n }\npush $N5e7b7690\npush $N5e59d2b0\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -645\n  ypos 800\n }\nset N5e77c6e0 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -645\n  ypos 844\n }\npush $N5e791bc0\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -39\n  ypos 700\n }\nset N5e77fe00 [stack 0]\npush $N5e61e4c0\n ChannelMerge {\n  inputs 2\n  name ChannelMerge1\n  xpos -384\n  ypos 684\n }\npush $N5e77fe00\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -39\n  ypos 768\n }\n Switch {\n  inputs 2\n  which {{parent.mergeAlpha}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos -384\n  ypos 758\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name ShuffleToRGBA\n  tile_color 0xffffffff\n  xpos -384\n  ypos 796\n }\nset N5e799880 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -350\n  ypos 844\n }\npush $N5e77c6e0\npush $N5e799880\npush $N5e602650\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyA\n  xpos -528\n  ypos 790\n }\n Copy {\n  inputs 2+1\n  channels rgb\n  name CopyRGB\n  xpos -528\n  ypos 828\n  disable {{parent.outChannels==0}}\n }\n Copy {\n  inputs 2\n  channels rgb\n  name CopyPreview\n  xpos -528\n  ypos 878\n  disable {{!parent.preview}}\n }\n Dissolve {\n  inputs 2\n  channels rgba\n  name DissolvePC\n  xpos -528\n  ypos 1168\n  disable {{!parent.preview_in_3d}}\n }\n Output {\n  name Output\n  xpos -528\n  ypos 1254\n }\npush $N6656da50\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 691\n  ypos 635\n }\nset N5e75ebd0 [stack 0]\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos 994\n  ypos 635\n }\n Axis2 {\n  display off\n  selectable false\n  translate {{-parent.BlinkScriptPMatte.aPMatteKernel_picked} {-parent.BlinkScriptPMatte.aPMatteKernel_picked} {-parent.BlinkScriptPMatte.aPMatteKernel_picked}}\n  name AxisPickedReversed\n  xpos 970\n  ypos 719\n }\n Axis2 {\n  display off\n  selectable false\n  translate {{parent.BlinkScriptPMatte.aPMatteKernel_pickedB} {parent.BlinkScriptPMatte.aPMatteKernel_pickedB} {parent.BlinkScriptPMatte.aPMatteKernel_pickedB}}\n  name AxisPickedBlack1\n  xpos 970\n  ypos 785\n }\nset N6983e1a0 [stack 0]\npush $N5e75ebd0\n Axis2 {\n  display off\n  selectable false\n  name AxisWhite\n  xpos 667\n  ypos 795\n }\nset N698951b0 [stack 0]\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 691\n  ypos 914\n }\npush $N66583fc0\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 783\n  ypos 756\n }\nset N69a30e40 [stack 0]\n TransformGeo {\n  inputs 3\n  selectable false\n  name TransformGeoWhite\n  xpos 749\n  ypos 910\n }\npush $N698951b0\npush $N6983e1a0\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 994\n  ypos 913\n }\npush $N69a30e40\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 909\n  ypos 756\n }\n TransformGeo {\n  inputs 3\n  name TransformGeo1\n  xpos 875\n  ypos 909\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 909\n  ypos 940\n }\n MergeGeo {\n  inputs 2\n  selectable false\n  name MergeGeo2\n  xpos 749\n  ypos 936\n }\n Dot {\n  name DotPlanes\n  label \"\\[value name]\"\n  note_font_size 12\n  xpos 783\n  ypos 1011\n }\n Axis2 {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n      {{parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix} {parent.AxisInput.world_matrix}}\n    }\n  name AxisInputCopy2\n  xpos 102\n  ypos 428\n }\n Axis2 {\n  display off\n  useMatrix true\n  matrix {\n      {{parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix}}\n      {{parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix}}\n      {{parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix}}\n      {{parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix} {parent.Axis.matrix}}\n    }\n  name AxisCopy\n  xpos 102\n  ypos 494\n }\n Axis2 {\n  inputs 0\n  display off\n  selectable false\n  name AxisInput\n  xpos 333\n  ypos 432\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_aeRefracTHOR.gizmo",
    "content": "Group {\n name aeRefracTHOR\n tile_color 0xa0500ff\n note_font \"Verdana Bold\"\n selected true\n addUserKnob {20 aeRefracTHOR}\n addUserKnob {26 text_6_1 l \"<b><font color=#ffffff>Refraction</font><b>\"}\n addUserKnob {7 frontbackmix l \"frontBack mix\" t \"This will control how much geo from the back and from the front will affect to the refraction.\\n\\nIf set to 1 only refract the light from the back of the geo.\\nIf set to 0.5 both back and front light will have an effect.\\nIf set to 1 only refract the light from the back of the geo.\"}\n frontbackmix 0.5\n addUserKnob {7 refraction l distortion t \"Control the amount of refraction distortion, you can set negative values too.\\n\\nLarge distortions may require a larger image to avoid cropping.\" R 0 500}\n refraction 250\n addUserKnob {7 edge l \"soft edges\" t \"Round and soft the distortion in the edges, simulates rounder surfaces.\" R 0 10}\n edge 5\n addUserKnob {26 \"\"}\n addUserKnob {7 renderquality l \"rende rquality\" t \"Increse the render quality of the scanline render and ray render to avoid edges issues.\\nHigher quality increases waiting times.\" R 1 3}\n renderquality 1\n addUserKnob {3 shutterSamples l \"shutter samples\" t \"Increase the shutter samples to get more quality motion blur.\"}\n shutterSamples 1\n addUserKnob {26 text l \"\" -STARTLINE T \"   \"}\n addUserKnob {6 rebuilt l \"rebuilt normals\" t \"This option allows rebuilt the normals of the geo, sometimes the geometry normals don't work properly\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_6_1_1_1 l \"<b><font color=#ffffff>Reflection</font><b>\"}\n addUserKnob {6 tint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {4 method l \"ref method\" t \"Ray Render creates a more realistic reflection but sometimes creates black areas without reflection, the distortion method does not create those areas\" M {\"ray render\" distortion \"\" \"\" \"\" \"\" \"\"}}\n method distortion\n addUserKnob {7 reflection t \"Control the amount of reflection of the input map.\\nIf there is no input map, it reflects a false map from the input image.\"}\n reflection 0.5\n addUserKnob {7 rotate l \"rotate map\" t \"This control allows rotate the input map.\" R -180 180}\n addUserKnob {26 \"\"}\n addUserKnob {7 fresnel t \"This control allows to determine the Fresnel effect threshold.\"}\n fresnel 0.25\n addUserKnob {7 power l amount t \"Control the strength of the fresnel effect\"}\n power 0.25\n addUserKnob {26 \"\"}\n addUserKnob {26 text_6_1_1_1_1 l \"<b><font color=#ffffff>Absorption</font><b>\"}\n addUserKnob {7 thickness t \"This control allows you to edit the tickness of the glass to simulate a more complex refraction.\"}\n thickness 0.25\n addUserKnob {7 light l absorption t \"This control allows you to simulate an internal light absortion of the geo.\"}\n light 0.25\n addUserKnob {7 amount_tint l tint}\n amount_tint 0.5\n addUserKnob {18 tint l color t \"This control allows you to tint the glass.\"}\n tint {0.4 0.9 0.8}\n addUserKnob {6 tint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 text_6 l \"\" -STARTLINE T \"   \"}\n addUserKnob {6 tintabsolute l \"tint absolute\" t \"This option allows the refraction to be completely tinted, without respecting the original colours.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_6_1_1 l \"<b><font color=#ffffff>Aberration</font><b>\"}\n addUserKnob {7 ab l aberration t \"This control allows you to add chroma aberration. this option is disable with value 0, you can increase the value all of you want.\" R 0 2}\n addUserKnob {7 smooth t \"This option allows the chroma aberration to be smoothed out if there are not enough samples.\"}\n addUserKnob {3 samples t \"Increase the amount of samples to get more quality.\"}\n samples 10\n addUserKnob {26 \"\"}\n addUserKnob {30 translate t \"This control allows you to create the chroma aberration in the deserve way.\"}\n addUserKnob {26 text_5 l \"\" -STARTLINE T \"   \"}\n addUserKnob {6 invert_spectrum t \"This control allows you to invert the chroma spectum.\" -STARTLINE}\n addUserKnob {7 scale t \"This control allows you to create other chroma aberration effects.\" R 0.1 2}\n scale 1\n addUserKnob {12 center t \"This control allows you to center the transform before.\"}\n center {960 540}\n addUserKnob {22 autocenter l center t \"This option allows you to auto center the transform.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    ni = n.input(0)\\n    n\\[\\\"center\\\"].setValue(\\[ni.width()/2,ni.height()/2])\\nexcept:\\n    pass\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 about_1 l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>aeRefracTHOR v1.0</b> - <a  style=\\\"color:#666;text-decoration: none;\\\">Aitor Echeveste</a>  © 2021</span>\"}\n addUserKnob {20 About}\n addUserKnob {26 text_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_2 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_4 l \"\" +STARTLINE T \"<font color=#ffffff><font size=\\\"7\\\">aeRefracTHOR</font><font size=\\\"2\\\"> v1.0</font>\\n\"}\n addUserKnob {26 about_1_1 l \"\" +STARTLINE T \"by Aitor Echeveste Izquierdo © 2021\"}\n addUserKnob {26 text_1_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_3 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<b><a href=\\\"http://www.aitorecheveste.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.aitorecheveste.com</span></a><b>\"}\n}\n Transform {\n  inputs 0\n  translate {{parent.translate} {parent.translate}}\n  scale {{parent.scale}}\n  center {{parent.center} {parent.center}}\n  motionblur {{parent.smooth}}\n  shutter {{1/parent.samples}}\n  shutteroffset centred\n  name Transform17\n  label control\n  xpos -1520\n  ypos 762\n  hide_input true\n }\n ColorLookup {\n  inputs 0\n  use_precomputed false\n  lut {master {}\n    red {curve C 0 s0 x0.3128865659 1 s-0 v0.7904256582 x0.7806204557 -0.0007482314769 s0 u1.743535638 v1.742119074 x0.9418143034 0.06970721483 s-0.05000000075 x1 0 s0}\n    green {curve C x0.1143286526 0 s0.01999999955 v1.837088585 x0.530087471 1 s-0.05000000075 u1.36422956 v1.120811939 x0.9743717909 0 s-0 u2.045060158}\n    blue {curve C x0.6321670413 0 s0 x0.8160832524 0.99800843 s0 x1 0 s0}\n    alpha {}}\n  name CLP\n  label \"Natural Spectrum\"\n  xpos -1522\n  ypos 644\n  hide_input true\n }\n Input {\n  inputs 0\n  name cam\n  xpos -492\n  ypos 27\n  number 2\n }\n Dot {\n  name Dot16\n  xpos -458\n  ypos 231\n }\nset N15214310 [stack 0]\n Camera {\n  projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n  focal {{\"\\[expression \\[value the_cam]focal(\\[value the_frame])]\"}}\n  haperture {{\"\\[expression \\[value the_cam]haperture(\\[value the_frame])]\"}}\n  vaperture {{\"\\[expression \\[value the_cam]vaperture(\\[value the_frame])]\"}}\n  near {{\"\\[expression \\[value the_cam]near(\\[value the_frame])]\"}}\n  far {10000}\n  win_translate {{\"\\[expression \\[value the_cam]win_translate.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_translate.v(\\[value the_frame])]\"}}\n  win_scale {{\"\\[expression \\[value the_cam]win_scale.u(\\[value the_frame])]\"} {\"\\[expression \\[value the_cam]win_scale.v(\\[value the_frame])]\"}}\n  winroll {{\"\\[expression \\[value the_cam]winroll(\\[value the_frame])]\"}}\n  focal_point {{\"\\[expression \\[value the_cam]focal_point(\\[value the_frame])]\"}}\n  fstop {{\"\\[expression \\[value the_cam]fstop(\\[value the_frame])]\"}}\n  name DummyCam2\n  help \"DummyCam by Adrian Pueyo\\n\\nCamera that apart from the matrices also grabs all the \\\"Projection\\\" values from the upstream camera that it's connected to. Turns into a default Camera if no Camera connected. Can also be used inside of groups and gizmos, as many levels deep as you want :D All using live and super fast TCL.\\n\\nUpdated v1.1: Now grabs the correct frame too (thanks Erwan Leroy for the idea).\\n\\nUpdated v1.3: Now accepts Nuke13's Camera3\\n\\nadrianpueyo.com, 2019-2021\"\n  onCreate \"n = nuke.thisNode()\\nfor k in \\[\\\"projection_mode\\\",\\\"focal\\\",\\\"haperture\\\",\\\"vaperture\\\",\\\"near\\\",\\\"far\\\",\\\"win_translate\\\",\\\"win_scale\\\",\\\"winroll\\\",\\\"focal_point\\\",\\\"fstop\\\"]:\\n    n\\[k].setFlag(0x0000000010000000)\"\n  label \"By Adrian Pueyo\"\n  xpos -600\n  ypos 207\n  addUserKnob {20 DummyCam l Defaults}\n  addUserKnob {43 the_cam +INVISIBLE}\n  the_cam \"\\[\\n#DummyCam v1.3 - Updated 5 May 2021.\\nset starting_point \\\"this.input0\\\"\\nset default \\\"this.d_\\\"\\n\\n# If cam has no inputs, return the default.\\nif \\{\\[exists \\$starting_point]\\} \\{\\n    set x \\[node \\$starting_point]\\n\\} \\{ \\n    return \\$default\\n\\}\\n\\nset finished 0\\nwhile \\{\\$finished != 1\\} \\{\\n\\n    # First look for a Cam or Input or topnode.\\n    while \\{\\[class \\$x] != \\\"Camera3\\\" && \\[class \\$x] != \\\"Camera2\\\" && \\[class \\$x] != \\\"Camera\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x]\\} \\{\\n        set x \\[node \\$x.input0]\\n    \\}\\n\\n    # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\\n    if \\{\\[class \\$x]==\\\"Camera3\\\"||\\[class \\$x]==\\\"Camera2\\\"||\\[class \\$x]==\\\"Camera\\\"\\} \\{\\n        set x \\[append x \\\".\\\"]\\n        return \\$x\\n    \\} \\{ \\n        if \\{ \\[class \\$x]==\\\"Input\\\" \\} \\{ \\n            set inp \\\"\\$x.parent.input\\\"\\n            set inputNum \\[value \\$x.number]\\n            set inp \\[append inp \\$inputNum]\\n            if \\{ \\[exists \\$inp] \\} \\{\\n                set x \\[node \\$inp]\\n            \\} \\{ \\n                set finished 1\\n            \\}\\n        \\} \\{ \\n            set finished 1\\n        \\}\\n    \\}\\n\\}\\nreturn \\$default\\n]\"\n  addUserKnob {43 the_frame +INVISIBLE}\n  the_frame \"\\[\\nset the_camera \\[string trimright \\[value the_cam] .]\\nif \\{\\[exists \\$the_camera]\\} \\{\\n    return \\[value \\$the_camera.frame]\\n\\} \\{ \\n    return \\[frame]\\n\\}\\n]\"\n  addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical \"\"}}\n  addUserKnob {7 d_focal l \"focal length\" R 0 100}\n  d_focal 50\n  addUserKnob {7 d_haperture l \"horiz aperture\" R 0 50}\n  d_haperture 24.576\n  addUserKnob {7 d_vaperture l \"vert aperture\" R 0 50}\n  d_vaperture 18.672\n  addUserKnob {7 d_near l near R 0 10}\n  d_near 0.1\n  addUserKnob {7 d_far l far R 0 10000}\n  d_far 10000\n  addUserKnob {30 d_win_translate l \"window translate\"}\n  addUserKnob {30 d_win_scale l \"window scale\"}\n  d_win_scale {1 1}\n  addUserKnob {7 d_winroll l \"window roll\" R 0 45}\n  addUserKnob {7 d_focal_point l \"focal distance\" R 0 10}\n  d_focal_point 2\n  addUserKnob {7 d_fstop l fstop R 0 30}\n  d_fstop 16\n  addUserKnob {26 version l \" \" t \"Updated 5 May 2021\" T \"<span style=\\\"color:#666\\\"><br/><b>DummyCam v1.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019-2021</span>\"}\n }\n Axis2 {\n  name Axis1\n  xpos -600\n  ypos 293\n }\n Camera2 {\n  inputs 0\n  translate {-0.01637784764 0.09661245346 0.9382824898}\n  useMatrix true\n  matrix {\n      {{parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix}}\n      {{parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix}}\n      {{parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix}}\n      {{parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix} {parent.DummyCam2.world_matrix}}\n    }\n  focal {{parent.DummyCam2.focal}}\n  haperture {{parent.DummyCam2.haperture}}\n  vaperture {{parent.DummyCam2.vaperture}}\n  near {{parent.DummyCam2.far}}\n  far 0.1\n  win_translate {{parent.DummyCam2.win_translate} {parent.DummyCam2.win_translate}}\n  win_scale {{parent.DummyCam2.win_scale} {parent.DummyCam2.win_scale}}\n  winroll {{parent.DummyCam2.winroll}}\n  focal_point {{parent.DummyCam2.focal_point}}\n  fstop {{parent.DummyCam2.fstop}}\n  name Camera12\n  xpos -1063\n  ypos 523\n }\n BasicMaterial {\n  inputs 0\n  specular 0\n  name BasicMaterial3\n  xpos -953\n  ypos 439\n }\n Input {\n  inputs 0\n  name geo\n  xpos -818\n  ypos 27\n  number 1\n }\n Dot {\n  name Dot28\n  xpos -784\n  ypos 203\n }\nset N12b6a990 [stack 0]\n Dot {\n  name Dot14\n  xpos -784\n  ypos 466\n }\nset N148777b0 [stack 0]\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial2\n  xpos -953\n  ypos 463\n }\n Normals {\n  action build\n  name Normals2\n  xpos -953\n  ypos 504\n  disable {{!rebuilt}}\n }\n Reformat {\n  inputs 0\n  type scale\n  scale {{renderquality<1?1:parent.renderquality}}\n  name Reformat3\n  xpos -827\n  ypos 544\n  hide_input true\n }\nset N13a17100 [stack 0]\nadd_layer {P P.red P.green P.blue P.alpha P.X P.Y P.Z}\nadd_layer {N N.red N.green N.blue N.alpha N.X N.Y N.Z}\n ScanlineRender {\n  inputs 3\n  antialiasing high\n  zblend_mode smooth\n  samples {{parent.shutterSamples}}\n  shutteroffset centred\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender7\n  xpos -953\n  ypos 544\n }\n Reformat {\n  type scale\n  scale {{renderquality<1?1:1/parent.renderquality}}\n  name Reformat4\n  xpos -953\n  ypos 590\n }\nset N113b94b0 [stack 0]\n Dot {\n  name Dot15\n  xpos -1347\n  ypos 593\n }\n Dot {\n  name Dot6\n  xpos -1347\n  ypos 2332\n }\nset N13dc4380 [stack 0]\n Dot {\n  name Dot21\n  xpos -1347\n  ypos 2415\n }\npush $N13dc4380\npush $N15214310\n Dot {\n  name Dot17\n  xpos -458\n  ypos 547\n }\n BasicMaterial {\n  inputs 0\n  specular 0\n  name BasicMaterial4\n  xpos -623\n  ypos 439\n }\npush $N148777b0\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial4\n  xpos -623\n  ypos 463\n }\n Normals {\n  action build\n  name Normals3\n  xpos -623\n  ypos 502\n  disable {{!rebuilt}}\n }\npush $N13a17100\n ScanlineRender {\n  inputs 3\n  antialiasing high\n  zblend_mode smooth\n  samples {{parent.shutterSamples}}\n  shutteroffset centred\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender8\n  xpos -623\n  ypos 544\n }\n Reformat {\n  type scale\n  scale {{renderquality<1?1:1/parent.renderquality}}\n  name Reformat5\n  xpos -623\n  ypos 568\n }\nset N151fc8b0 [stack 0]\n Dot {\n  name Dot7\n  xpos -198\n  ypos 571\n }\nset N15217b40 [stack 0]\n Dot {\n  name Dot36\n  xpos 277\n  ypos 571\n }\nset N150b6130 [stack 0]\n Shuffle {\n  in P\n  out rgb\n  name P\n  xpos 243\n  ypos 642\n }\n Grade {\n  add {{parent.Axis1.world_matrix.3} {parent.Axis1.world_matrix.7} {parent.Axis1.world_matrix.11} {curve}}\n  reverse true\n  black_clamp false\n  name Grade2\n  xpos 243\n  ypos 1156\n }\n Dot {\n  name Dot23\n  xpos 277\n  ypos 1218\n }\nset N150f2290 [stack 0]\n Dot {\n  name Dot25\n  xpos 277\n  ypos 1266\n }\nset N15110780 [stack 0]\npush $N150f2290\npush $N151fc8b0\n Shuffle {\n  in N\n  out rgb\n  name NF\n  xpos -623\n  ypos 625\n }\n Dot {\n  name Dot18\n  xpos -589\n  ypos 770\n }\nset N115b5e70 [stack 0]\n MergeExpression {\n  inputs 2\n  temp_name0 cosA\n  temp_expr0 (Ar*Br+Ag*Bg+Ab*Bb)/(sqrt(Ar*Ar+Ag*Ag+Ab*Ab)*sqrt(Br*Br+Bg*Bg+Bb*Bb))\n  channel0 rgba\n  expr0 (1+cosA)\n  name fresnel\n  xpos -627\n  ypos 1215\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy11\n  xpos -627\n  ypos 1257\n }\nset N125ce050 [stack 0]\n Grade {\n  white {{fresnel==0?0:power}}\n  gamma {{lerp(0.01,0.25,fresnel)}}\n  black_clamp false\n  name Grade6\n  xpos -627\n  ypos 1354\n }\n Expression {\n  expr0 isnan(r)?0:r\n  expr1 isnan(g)?0:g\n  expr2 isnan(b)?0:b\n  expr3 isnan(a)?0:a\n  name NanToBlack\n  xpos -627\n  ypos 1378\n }\n Premult {\n  name Premult3\n  xpos -627\n  ypos 1402\n }\n Dot {\n  name Dot24\n  xpos -593\n  ypos 1916\n }\npush $N15110780\n Grade {\n  channels all\n  white {{lerp(0,0.4,reflection)}}\n  name Grade1\n  xpos 239\n  ypos 1665\n }\n Dot {\n  name Dot26\n  xpos 273\n  ypos 1748\n }\npush $N150b6130\n Dot {\n  name Dot37\n  xpos 1170\n  ypos 571\n }\n Shuffle {\n  in N\n  name Shuffle1\n  xpos 1136\n  ypos 1281\n }\n Expression {\n  temp_name0 h\n  temp_expr0 -0.001\n  expr0 r+h\n  expr1 g+h\n  expr2 b+h\n  name Expression1\n  xpos 1136\n  ypos 1305\n }\n Expression {\n  temp_name0 f1\n  temp_expr0 atan2(b,r)\n  temp_name1 f2\n  temp_expr1 asin(g)\n  expr0 \"b > 0 ? f1 : (2*pi) + f1\"\n  expr1 f2\n  expr2 0\n  name normal_to_radian1\n  xpos 1136\n  ypos 1329\n }\n Expression {\n  expr0 r/(2*pi)\n  expr1 (g+(pi/2))/pi\n  expr2 0\n  name radian_to_UV1\n  xpos 1136\n  ypos 1353\n }\n Input {\n  inputs 0\n  name map\n  xpos 801\n  ypos 1125\n  number 3\n }\n Input {\n  inputs 0\n  name img\n  xpos -1613\n  ypos 25\n }\n Dot {\n  name Dot34\n  xpos -1579\n  ypos 159\n }\nset N13e5a020 [stack 0]\n Dot {\n  name Dot35\n  xpos 938\n  ypos 159\n }\n Blur {\n  size 10\n  name Blur5\n  xpos 911\n  ypos 1176\n }\n Reformat {\n  format \"2048 1024 0 0 2048 1024 1 2K_LatLong\"\n  scale {1 1}\n  resize distort\n  name Reformat6\n  xpos 911\n  ypos 1212\n }\n Switch {\n  inputs 2\n  which 1\n  name Switch4\n  xpos 801\n  ypos 1218\n  disable {{\"!\\[exists input3]\"}}\n }\nset N15151ac0 [stack 0]\n Tile {\n  columns 5\n  name Tile1\n  xpos 1353\n  ypos 1218\n }\n Transform {\n  translate {{\"((normalize*(center.x*2)) - center.x) % (center.x*2)\"} {curve}}\n  scale {-3 1}\n  center {{input.width/2} {input.height/2}}\n  name Transform1\n  xpos 1353\n  ypos 1242\n  addUserKnob {20 User}\n  addUserKnob {7 iRotation R -180 180}\n  iRotation {{parent.rotate}}\n  addUserKnob {7 normalize l Normalize}\n  normalize {{\"(iRotation +180)/360\"}}\n  addUserKnob {41 center_1 l center T Transform1.center}\n  addUserKnob {41 translate_1 l translate T Transform1.translate}\n }\n Grade {\n  white 3\n  name Grade4\n  xpos 1353\n  ypos 1266\n }\n STMap {\n  inputs 2\n  uv rgb\n  name STMap1\n  xpos 1353\n  ypos 1347\n }\n Dot {\n  name Dot38\n  xpos 1387\n  ypos 1475\n }\npush $N15214310\n Dot {\n  name Dot2\n  xpos 495\n  ypos 231\n }\n Dot {\n  name Dot33\n  xpos 495\n  ypos 1378\n }\npush $N15151ac0\n Sphere {\n  rotate {0 {parent.rotate} 0}\n  uniform_scale 10000\n  name Sphere2\n  xpos 801\n  ypos 1274\n }\n Reflection {\n  inputs 0\n  reflection_color {3 3 3}\n  reflection_color_panelDropped true\n  name Reflection1\n  xpos 606\n  ypos 1189\n  hide_input true\n }\npush $N12b6a990\n Dot {\n  name Dot1\n  xpos 742\n  ypos 203\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial5\n  xpos 708\n  ypos 1189\n }\n Normals {\n  action build\n  name Normals1\n  xpos 708\n  ypos 1229\n  disable {{!rebuilt}}\n }\n Scene {\n  inputs 2\n  name Scene1\n  xpos 718\n  ypos 1253\n }\n Reformat {\n  inputs 0\n  type scale\n  scale {{renderquality<1?1:parent.renderquality}}\n  name Reformat1\n  xpos 811\n  ypos 1375\n  hide_input true\n }\nadd_layer {reflecton reflecton.red reflecton.green reflecton.blue reflecton.alpha}\n RayRender {\n  inputs 3\n  triangle_intersection_epsilon 1e-07\n  samples {{parent.renderquality}}\n  shutteroffset centred\n  output_shader_vectors true\n  remove_from_beauty false\n  AOV_Reflection reflecton\n  name RayRender2\n  xpos 708\n  ypos 1375\n }\n Reformat {\n  type scale\n  scale {{renderquality<1?1:1/parent.renderquality}}\n  name Reformat2\n  xpos 708\n  ypos 1399\n }\n Switch {\n  inputs 2\n  which {{method}}\n  name Switch3\n  xpos 708\n  ypos 1472\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace1\n  xpos 708\n  ypos 1565\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{parent.tint} {parent.tint} {parent.tint} {parent.tint}}\n  color_panelDropped true\n  name Constant1\n  xpos 799\n  ypos 1542\n  postage_stamp false\n }\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant8\n  xpos 903\n  ypos 1579\n  postage_stamp false\n }\n Dissolve {\n  inputs 2\n  which {{amount_tint}}\n  name Dissolve1\n  xpos 799\n  ypos 1566\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace3\n  xpos 799\n  ypos 1602\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name Copy1\n  xpos 708\n  ypos 1596\n }\n Colorspace {\n  colorspace_in HSV\n  name Colorspace2\n  xpos 708\n  ypos 1640\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy10\n  xpos 708\n  ypos 1739\n }\n Premult {\n  name Premult4\n  xpos 708\n  ypos 1775\n }\n Dot {\n  name Dot13\n  xpos 742\n  ypos 1880\n }\npush $N113b94b0\n Dot {\n  name Dot10\n  xpos -843\n  ypos 593\n }\n Dot {\n  name Dot9\n  xpos -843\n  ypos 695\n }\n Shuffle {\n  in depth\n  name DB\n  xpos -333\n  ypos 692\n }\npush $N15217b40\n Shuffle {\n  in depth\n  name DF\n  xpos -232\n  ypos 657\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge3\n  xpos -232\n  ypos 692\n }\n Grade {\n  gamma {{lerp(0.01,5,light)}}\n  name Grade3\n  xpos -232\n  ypos 822\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace4\n  xpos -232\n  ypos 960\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{parent.tint} {parent.tint} {parent.tint} {parent.tint}}\n  color_panelDropped true\n  name Constant2\n  xpos -122\n  ypos 937\n  postage_stamp false\n }\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant9\n  xpos -22\n  ypos 967\n  postage_stamp false\n }\n Dissolve {\n  inputs 2\n  which {{amount_tint}}\n  name Dissolve4\n  xpos -122\n  ypos 961\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace5\n  xpos -122\n  ypos 997\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name Copy2\n  xpos -232\n  ypos 991\n }\n Colorspace {\n  colorspace_in HSV\n  name Colorspace6\n  xpos -232\n  ypos 1035\n }\n Shuffle {\n  alpha blue\n  name DB1\n  xpos -232\n  ypos 1059\n }\n Dot {\n  name Dot29\n  xpos -198\n  ypos 1808\n }\nset N14bc68e0 [stack 0]\n Dot {\n  name Dot8\n  xpos -198\n  ypos 1844\n }\npush $N14bc68e0\npush $N125ce050\n Dot {\n  name Dot5\n  xpos -869\n  ypos 1266\n }\n ColorCorrect {\n  contrast 1.25\n  gamma 0.2\n  gain {{lerp(0,5,thickness)}}\n  name ColorCorrect1\n  xpos -903\n  ypos 1558\n }\n Shuffle {\n  alpha red\n  name thickness\n  xpos -903\n  ypos 1582\n }\n Invert {\n  name Invert1\n  xpos -903\n  ypos 1606\n }\nset N14c031c0 [stack 0]\n ColorCorrect {\n  gamma 0.2\n  name ColorCorrect2\n  xpos -903\n  ypos 1642\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace7\n  xpos -903\n  ypos 1679\n }\npush $N14c031c0\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant4\n  xpos -679\n  ypos 1612\n  postage_stamp false\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{parent.tint} {parent.tint} {parent.tint} {parent.tint}}\n  color_panelDropped true\n  name Constant3\n  xpos -775\n  ypos 1546\n  postage_stamp false\n }\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant7\n  xpos -678\n  ypos 1576\n  postage_stamp false\n }\n Dissolve {\n  inputs 2\n  which {{amount_tint}}\n  name Dissolve3\n  xpos -775\n  ypos 1570\n }\n Keymix {\n  inputs 3\n  mix {{lerp(1,0,thickness)}}\n  name Keymix1\n  xpos -775\n  ypos 1606\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace8\n  xpos -775\n  ypos 1709\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name Copy5\n  xpos -903\n  ypos 1703\n }\n Colorspace {\n  colorspace_in HSV\n  name Colorspace9\n  xpos -903\n  ypos 1739\n }\n Clamp {\n  name Clamp1\n  xpos -903\n  ypos 1763\n }\npush $N113b94b0\n Dot {\n  name Dot3\n  xpos -919\n  ypos 638\n }\nset N14cc6c40 [stack 0]\n Dot {\n  name Dot4\n  xpos -1021\n  ypos 638\n }\n Clamp {\n  name Clamp2\n  xpos -1055\n  ypos 702\n }\nset N14cd0d30 [stack 0]\n Erode {\n  channels alpha\n  size 10\n  name ErodeIn\n  xpos -1055\n  ypos 762\n }\npush $N14cd0d30\n Erode {\n  channels alpha\n  size -10\n  name ErodeOut\n  xpos -1165\n  ypos 702\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge2\n  xpos -1165\n  ypos 768\n }\n Blur {\n  channels alpha\n  size 10\n  name Blur2\n  xpos -1165\n  ypos 814\n }\npush $N115b5e70\n Multiply {\n  channels rgb\n  value {{min(1,1+parent.frontbackmix)}}\n  name Multiply1\n  xpos -824\n  ypos 767\n }\npush $N14cc6c40\n Shuffle {\n  in N\n  out rgb\n  name NB\n  xpos -953\n  ypos 693\n }\n Multiply {\n  channels rgb\n  value {{min(1,1-parent.frontbackmix)}}\n  name Multiply3\n  xpos -953\n  ypos 717\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels rgb\n  name Merge6\n  xpos -953\n  ypos 767\n }\n Blur {\n  inputs 1+1\n  channels rgb\n  size {{parent.edge}}\n  name Blur1\n  xpos -953\n  ypos 820\n }\n Dot {\n  name Dot19\n  xpos -919\n  ypos 1374\n }\npush $N13e5a020\n Dot {\n  name Dot22\n  xpos -1579\n  ypos 408\n }\nset N14d68500 [stack 0]\n Dot {\n  name Dot32\n  xpos -1751\n  ypos 408\n }\n Dot {\n  name Dot30\n  xpos -1751\n  ypos 1187\n }\npush $N14d68500\n Remove {\n  channels alpha\n  name Remove1\n  xpos -1613\n  ypos 537\n }\n NoTimeBlur {\n  rounding none\n  name NoTB\n  xpos -1613\n  ypos 573\n }\nadd_layer {apChromaWeight apChromaWeight.red apChromaWeight.green apChromaWeight.blue apChromaWeight.alpha}\n AddChannels {\n  channels apChromaWeight\n  color 1\n  name AddChannels1\n  xpos -1613\n  ypos 597\n }\n Multiply {\n  value {{!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.green(TB.frf):CLP.lut.green(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.blue(TB.frf):CLP.lut.blue(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)}}\n  name Multiply2\n  xpos -1613\n  ypos 643\n  addUserKnob {20 User}\n  addUserKnob {19 fullcolor}\n  fullcolor {{!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.green(TB.frf):CLP.lut.green(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.blue(TB.frf):CLP.lut.blue(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)}}\n  addUserKnob {6 fullcolor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 fullcolor_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos -1579\n  ypos 696\n }\nset N14d93bf0 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -1671\n  ypos 696\n }\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -1671\n  ypos 927\n }\npush $N14d93bf0\n Remove {\n  channels apChromaWeight\n  name Remove3\n  xpos -1613\n  ypos 733\n }\n Transform {\n  translate {{parent.Transform17.translate*((TB.frf-0.5)*parent.ab)} {parent.Transform17.translate*((TB.frf-0.5)*parent.ab)}}\n  rotate {{parent.Transform17.rotate*((TB.frf-0.5)*parent.ab)}}\n  scale {{\"parent.Transform17.scale*((TB.frf-0.5)*parent.ab) + 1 - ((TB.frf-0.5)*parent.ab) \"} {\"parent.Transform17.scale*((TB.frf-0.5)*parent.ab) + 1 - ((TB.frf-0.5)*parent.ab) \"}}\n  center {600 600}\n  black_outside false\n  motionblur {{parent.smooth}}\n  shutter {{1/parent.samples}}\n  shutteroffset centred\n  name TransformI\n  xpos -1613\n  ypos 769\n }\n Blur {\n  channels rgba\n  name Blur3\n  xpos -1613\n  ypos 797\n  addUserKnob {20 User}\n  addUserKnob {26 info l \"\" +STARTLINE T \"needed to break concatenation and make sure mblur works with the stmaps\"}\n }\n Copy {\n  inputs 2\n  channels apChromaWeight\n  name Copy4\n  xpos -1613\n  ypos 911\n }\n TimeBlur {\n  divisions {{parent.samples}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name TB\n  xpos -1613\n  ypos 993\n  addUserKnob {20 User}\n  addUserKnob {7 frf}\n  frf {{(frame%1)*(parent.samples+1)/parent.samples}}\n }\nset N152ab280 [stack 0]\npush $N152ab280\n Shuffle {\n  in apChromaWeight\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos -1512\n  ypos 987\n }\n Dot {\n  name Dot31\n  xpos -1478\n  ypos 1035\n }\n Merge2 {\n  inputs 2\n  operation divide\n  bbox A\n  metainput A\n  rangeinput A\n  name Merge5\n  xpos -1613\n  ypos 1032\n }\n Switch {\n  inputs 2\n  which {{ab==0?1:0}}\n  name Switch2\n  xpos -1613\n  ypos 1184\n }\nadd_layer {REFRACTION REFRACTION.red REFRACTION.green REFRACTION.blue REFRACTION.alpha}\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  blue blue\n  out REFRACTION\n  name ShuffleCopy4\n  xpos -1613\n  ypos 1371\n }\n IDistort {\n  channels rgb\n  uv REFRACTION\n  uv_scale {{parent.refraction}}\n  name IDistort10\n  xpos -1613\n  ypos 1395\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  mix 0.97\n  name Merge1\n  label thickness\n  xpos -1613\n  ypos 1763\n  disable {{thickness==0?1:0}}\n }\n Blur {\n  inputs 1+1\n  size {{lerp(0,25,light)}}\n  name Blur4\n  xpos -1613\n  ypos 1799\n }\n Merge2 {\n  inputs 2\n  operation screen\n  Achannels rgb\n  name Merge4\n  label absortion\n  xpos -1613\n  ypos 1835\n  disable {{light==0?1:0}}\n }\n Merge2 {\n  inputs 2\n  Achannels rgb\n  name Merge11\n  label reflection\n  xpos -1613\n  ypos 1871\n  disable {{reflection==0?1:0 x1 1}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels rgb\n  name Merge10\n  label fresnel\n  xpos -1613\n  ypos 1907\n  disable {{fresnel==0?1:0 x1 1}}\n }\n Dot {\n  name Dot12\n  xpos -1579\n  ypos 2091\n }\nset N15356dc0 [stack 0]\n Colorspace {\n  colorspace_out HSV\n  name Colorspace10\n  xpos -1739\n  ypos 2088\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {{parent.tint} {parent.tint} {parent.tint} {parent.tint}}\n  color_panelDropped true\n  name Constant5\n  xpos -1849\n  ypos 2067\n  postage_stamp false\n }\n Constant {\n  inputs 0\n  channels rgb\n  color 1\n  name Constant6\n  xpos -1938\n  ypos 2097\n  postage_stamp false\n }\n Dissolve {\n  inputs 2\n  which {{amount_tint}}\n  name Dissolve2\n  xpos -1849\n  ypos 2091\n }\n Colorspace {\n  colorspace_out HSV\n  name Colorspace11\n  xpos -1849\n  ypos 2127\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.blue\n  name Copy6\n  xpos -1739\n  ypos 2121\n }\n Colorspace {\n  colorspace_in HSV\n  name Colorspace12\n  xpos -1739\n  ypos 2165\n }\npush $N15356dc0\n Switch {\n  inputs 2\n  which {{tintabsolute}}\n  name Switch1\n  xpos -1613\n  ypos 2165\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy3\n  xpos -1613\n  ypos 2323\n }\n Premult {\n  name Premult1\n  xpos -1613\n  ypos 2359\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -1613\n  ypos 2412\n }\n Output {\n  name Output1\n  xpos -1613\n  ypos 2710\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_aeRelight2D.gizmo",
    "content": "Group {\n name aeRelight2D\n onCreate \"n = nuke.thisNode()\\nw = n.format().width()/2\\nh = n.format().height()/2\\ncenter = \\[w,h]\\n\\nif n.knob('create').value()==False:\\n    n.knob('light').setValue(center)\\n    n.knob('create').setValue(1)\"\n tile_color 0xa0500ff\n label \"\\[value Operations.menu2]\"\n note_font \"Verdana Bold\"\n addUserKnob {20 aeRelight2D}\n addUserKnob {41 channels T Grade2.channels}\n addUserKnob {4 outputView l \"Output View\" M {\"Final Output\" \"Light Only\" Preview \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_6_1_1 l \"<b><font color=#ffffff>Light</font><b>\"}\n addUserKnob {12 light l position t \"Position of the light.\"}\n light {1712 1101}\n addUserKnob {7 lightsize l height t \"Height of the light, you can illuminate the side of the image with values near to 0.\"}\n lightsize 0.1\n addUserKnob {7 intensity t \"The power of the light.\"}\n intensity 0.1\n addUserKnob {7 falloff l soft t \"Choose the falloff of the light.\"}\n falloff 0.5\n addUserKnob {18 color l tint}\n color {1 1 1}\n addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 text_6_1_2 l \"<b><font color=#ffffff>Rotate</font><b>\"}\n addUserKnob {7 yoffset l horizontal t \"Rotate the normals.\" R -90 90}\n addUserKnob {7 xzrot l vertical t \"Rotate the normals.\" R -90 90}\n addUserKnob {26 _1_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 text_6_1 l \"<b><font color=#ffffff>Emboss</font><b>\"}\n addUserKnob {7 emboss l amount t \"Control the emboss of the image, choose negative or positive values depends on the directionality of the light from your plate.\" R -5 5}\n emboss 5\n addUserKnob {7 smooth t \"Smooth the bump of the image.\" R 0 100}\n smooth 10\n addUserKnob {7 blur t \"Blurring the final result.\" R 0 100}\n blur 10\n addUserKnob {26 _1_3 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 _1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T Merge1.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 _1_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {6 create +INVISIBLE +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 about_1 l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>aeRelight2D v1.5</b> - <a  style=\\\"color:#666;text-decoration: none;\\\">Aitor Echeveste</a>  © 2021</span>\"}\n addUserKnob {20 About}\n addUserKnob {26 text_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_2 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_4 l \"\" +STARTLINE T \"<font color=#ffffff><font size=\\\"6\\\">aeRelight2D</font><font size=6\\\"> v1.5</font>\\n\"}\n addUserKnob {26 about_1_1 l \"\" +STARTLINE T \"by Aitor Echeveste © 2021\"}\n addUserKnob {26 text_1_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_3 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<b><a href=\\\"http://www.aitorecheveste.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.aitorecheveste.com</span></a><b>\"}\n}\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {{parent.xzrot} {-degrees(parent.Plane.picked.g)} {parent.xzrot}}\n  name Axis2\n  label V\n  xpos 773\n  ypos -13\n }\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {0 {-parent.Axis2.rotate.y} 0}\n  name Axis5\n  label V\n  xpos 773\n  ypos 86\n }\n Axis2 {\n  inputs 0\n  rot_order YXZ\n  rotate {0 {-parent.yoffset} 0}\n  name Axis10\n  label H\n  xpos 772\n  ypos -92\n }\n Specular {\n  inputs 0\n  white {{lerp(0.5,0.01,falloff)}}\n  min_shininess 2\n  max_shininess 5\n  name Specular2\n  xpos 767\n  ypos 199\n }\n Diffuse {\n  white 0\n  name Diffuse1\n  xpos 767\n  ypos 223\n }\n Camera2 {\n  inputs 0\n  translate {{Operations.lpos*2/Operations.iformat} {Operations.lpos*2/Operations.iformat} {lerp(-0.99,0.5,lightsize)}}\n  name Camera1\n  xpos 1041\n  ypos 202\n }\n Light2 {\n  inputs 0\n  light_type directional\n  color {1 1 1}\n  color_panelDropped true\n  intensity {{lerp(0,50,parent.intensity)}}\n  cone_angle 56\n  cone_penumbra_angle 60\n  depthmap_slope_bias 0.01\n  name Light2\n  xpos 969\n  ypos 136\n }\n Input {\n  inputs 0\n  name img\n  xpos 429\n  ypos -500\n  addUserKnob {20 User}\n }\nset N4c49ab00 [stack 0]\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos 877\n  ypos -500\n  disable {{\"!\\[exists parent.input]\"}}\n }\n Multiply {\n  value {{-emboss}}\n  name Multiply3\n  xpos 877\n  ypos -476\n }\n NoOp {\n  name Operations\n  xpos 877\n  ypos -435\n  addUserKnob {20 User}\n  addUserKnob {4 menu2 M {\" \" \"(Light Only)\" (Preview) (Emboss) \"\" \"\"}}\n  menu2 {{parent.outputView}}\n  addUserKnob {12 iformat}\n  iformat {{input.width} {input.height}}\n  addUserKnob {12 light2 l light}\n  light2 {{parent.light} {parent.light}}\n  addUserKnob {12 lpos}\n  lpos {{light2-(iformat/2)} {light2-(iformat/2)}}\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 911\n  ypos -404\n }\nset N4c498800 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 1016\n  ypos -404\n }\n Matrix {\n  matrix {\n      {1 2 1}\n      {0 0 0}\n      {-1 -2 -1}\n    }\n  name Matrix2\n  xpos 982\n  ypos -275\n }\n Blur {\n  channels rgba\n  size {{parent.smooth}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos 982\n  ypos -239\n }\npush $N4c498800\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 817\n  ypos -404\n }\n Matrix {\n  matrix {\n      {-1 0 1}\n      {-2 0 2}\n      {-1 0 1}\n    }\n  name Matrix1\n  xpos 783\n  ypos -325\n }\n Blur {\n  channels rgba\n  size {{parent.smooth}}\n  name Blur4\n  label \"\\[value size]\"\n  xpos 783\n  ypos -289\n }\npush $N4c498800\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.red\n  name Copy1\n  xpos 877\n  ypos -289\n  disable {{\"!\\[exists parent.input]\"}}\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.green\n  name Copy2\n  xpos 877\n  ypos -239\n  disable {{\"!\\[exists parent.input]\" x163 1}}\n }\n Expression {\n  temp_name0 magnitude\n  temp_expr0 1-sqrt(r*r+g*g)\n  expr2 magnitude\n  name Expression2\n  xpos 877\n  ypos -195\n }\n NoOp {\n  name Plane\n  xpos 877\n  ypos -171\n  addUserKnob {20 User}\n  addUserKnob {18 pick l \"User Picked Plane\" R -1 1}\n  pick {1 1 1}\n  addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 pick_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {20 calc l \"Internal Conversions\"}\n  addUserKnob {18 picked}\n  picked {0 {\"(atan2(pick.r, pick.b))\"} 0}\n  addUserKnob {6 picked_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 picked_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 picked_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 picked_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis10.world_matrix.0} {parent.Axis10.world_matrix.1} {parent.Axis10.world_matrix.2}}\n      {{parent.Axis10.world_matrix.4} {parent.Axis10.world_matrix.5} {parent.Axis10.world_matrix.6}}\n      {{parent.Axis10.world_matrix.8} {parent.Axis10.world_matrix.9} {parent.Axis10.world_matrix.10}}\n    }\n  name ColorMatrix2\n  xpos 877\n  ypos -72\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis2.world_matrix.0} {parent.Axis2.world_matrix.1} {parent.Axis2.world_matrix.2}}\n      {{parent.Axis2.world_matrix.4} {parent.Axis2.world_matrix.5} {parent.Axis2.world_matrix.6}}\n      {{parent.Axis2.world_matrix.8} {parent.Axis2.world_matrix.9} {parent.Axis2.world_matrix.10}}\n    }\n  name ColorMatrix3\n  xpos 877\n  ypos 7\n  disable {{parent.xzrot==0 x65 1}}\n }\n ColorMatrix {\n  matrix {\n      {{parent.Axis5.world_matrix.0} {parent.Axis5.world_matrix.1} {parent.Axis5.world_matrix.2}}\n      {{parent.Axis5.world_matrix.4} {parent.Axis5.world_matrix.5} {parent.Axis5.world_matrix.6}}\n      {{parent.Axis5.world_matrix.8} {parent.Axis5.world_matrix.9} {parent.Axis5.world_matrix.10}}\n    }\n  name ColorMatrix5\n  xpos 877\n  ypos 105\n  disable {{parent.xzrot==0 x65 1}}\n }\n ReLight {\n  inputs 4\n  normal rgb\n  name ReLight1\n  xpos 877\n  ypos 223\n }\n Shuffle {\n  in rgb\n  in2 alpha\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle4\n  xpos 877\n  ypos 301\n }\n Blur {\n  channels rgba\n  size {{blur}}\n  name Blur2\n  label \"\\[value size]\"\n  xpos 877\n  ypos 325\n }\n Multiply {\n  value {{parent.mix}}\n  name Multiply1\n  xpos 877\n  ypos 361\n }\n Dot {\n  name Dot8\n  xpos 911\n  ypos 447\n }\n Dot {\n  name Dot6\n  xpos 751\n  ypos 447\n }\nset N318b6400 [stack 0]\npush $N4c49ab00\n Dot {\n  name Dot4\n  xpos 463\n  ypos 352\n }\nset N318b5d00 [stack 0]\n Dot {\n  name Dot5\n  xpos 564\n  ypos 352\n }\n Grade {\n  inputs 1+1\n  channels all\n  multiply {3 1 1 1}\n  multiply_panelDropped true\n  name Grade1\n  xpos 530\n  ypos 444\n }\n Input {\n  inputs 0\n  name mask\n  xpos 842\n  ypos 602\n  number 1\n }\npush $N318b6400\n Merge2 {\n  inputs 2\n  operation mask\n  also_merge all\n  maskChannelInput -rgba.alpha\n  name Merge1\n  xpos 717\n  ypos 596\n  disable {{\"!\\[exists parent.input1]\" x65 1}}\n }\n Dot {\n  name Dot7\n  xpos 751\n  ypos 686\n }\nset Na4158800 [stack 0]\n Grade {\n  channels rgba\n  multiply {{parent.color+1} {parent.color+1} {parent.color+1} 1}\n  name Grade2\n  xpos 717\n  ypos 796\n }\n set Ca4158100 [stack 0]\npush $Na4158800\npush $N318b5d00\nclone $Ca4158100 {\n  inputs 1+1\n  xpos 429\n  ypos 683\n  selected false\n }\n Dot {\n  name Dot13\n  xpos 463\n  ypos 823\n }\n Switch {\n  inputs 3\n  which {{outputView}}\n  name Switch1\n  xpos 717\n  ypos 820\n }\n Output {\n  name Output1\n  xpos 717\n  ypos 844\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_aeShadows.gizmo",
    "content": "Group {\n name aeShadows\n tile_color 0x262626ff\n label \"\\[value operationKnob]\"\n note_font \"Verdana Bold\"\n selected true\n addUserKnob {20 aeShadows}\n addUserKnob {6 shadow_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {41 operationKnob l operation t \"Add shadows\\nRemove shadows\" T control.operationKnob}\n addUserKnob {26 _1 l \"  \" -STARTLINE T \"  \"}\n addUserKnob {41 preview t \"You can preview the shadow/light plate you need to create to achive a good result.\" -STARTLINE T control.preview}\n addUserKnob {26 \"\"}\n addUserKnob {41 rangeKnob l range t \"Control the white point of the keyer.\\nfor shadows you will need low values and for lights higher.\" T control.rangeKnob}\n addUserKnob {41 thresholdKnob l threshold t \"Control the amount of erode will help to avoid imperfections.\" T control.thresholdKnob}\n addUserKnob {26 \"\"}\n addUserKnob {41 detailKnob l detail t \"Size of the median, high values could be very heavy to process.\" T control.detailKnob}\n addUserKnob {41 postBlurKnob l \"post blur\" t \"Add post blur could help to make the patch soften.\" T control.postBlurKnob}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelMask l \"\" -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {26 \"\"}\n addUserKnob {26 about_1 l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>aeShadows v1.0</b> - <a  style=\\\"color:#666;text-decoration: none;\\\">Aitor Echeveste</a>  © 2024</span>\"}\n addUserKnob {20 about l About}\n addUserKnob {26 text_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_2 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_4 l \"\" +STARTLINE T \"<font color=#ffffff><font size=\\\"6\\\">aeShadows</font><font size=\\\"2\\\"> v1.0</font>\\n\"}\n addUserKnob {26 about_1_1 l \"\" +STARTLINE T \"by Aitor Echeveste © 2024\"}\n addUserKnob {26 text_1_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_3 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<b><a href=\\\"http://www.aitorecheveste.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.aitorecheveste.com</span></a><b>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x8e8e8eff\n  gl_color 0xccccccff\n  label \"\\n    copy/paste outside this backdrop - aeShadows\"\n  note_font_size 100\n  xpos 748\n  ypos 13\n  bdwidth 2926\n  bdheight 3881\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x757575ff\n  label color\n  note_font_size 42\n  xpos 1557\n  ypos 510\n  bdwidth 458\n  bdheight 1289\n  z_order 1\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x757575ff\n  label detail\n  note_font_size 42\n  xpos 2071\n  ypos 507\n  bdwidth 1189\n  bdheight 1775\n  z_order 1\n }\n Input {\n  inputs 0\n  name Img\n  xpos 3078\n  ypos -805\n }\n Dot {\n  name Dot180\n  label img\n  note_font_size 50\n  xpos 3112\n  ypos 291\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 3078\n  ypos 429\n }\n Dot {\n  name Dot133\n  xpos 3112\n  ypos 609\n }\nset Nc4785e00 [stack 0]\n Dot {\n  name Dot134\n  xpos 3516\n  ypos 608\n }\n Dot {\n  name Dot140\n  xpos 3516\n  ypos 2544\n }\nset Nc470e400 [stack 0]\n Dot {\n  name Dot141\n  xpos 3516\n  ypos 2798\n }\nset Nc46fca00 [stack 0]\n Dot {\n  name Dot135\n  xpos 3516\n  ypos 2911\n }\nset Nc46ef800 [stack 0]\n Dot {\n  name Dot147\n  xpos 3516\n  ypos 3395\n }\nset Nc46cec00 [stack 0]\n Dot {\n  name Dot136\n  xpos 3516\n  ypos 3587\n }\nset Nc4651c00 [stack 0]\n Dot {\n  name Dot137\n  xpos 3516\n  ypos 3615\n }\nset Nc44bfc00 [stack 0]\n Dot {\n  name Dot138\n  xpos 3516\n  ypos 3639\n }\npush $Nc44bfc00\npush $Nc4651c00\npush $Nc4785e00\n Dot {\n  name Dot143\n  xpos 2562\n  ypos 609\n }\nset Nc431a600 [stack 0]\n Dot {\n  name Dot144\n  xpos 2131\n  ypos 609\n }\nset Nc4066800 [stack 0]\n Dot {\n  name Dot145\n  xpos 1836\n  ypos 609\n }\nset Nc405e600 [stack 0]\n Dot {\n  name Dot146\n  xpos 1666\n  ypos 609\n }\n Keyer {\n  operation \"luminance key\"\n  range {{control.rangeKnob} 1 1 1}\n  name Keyer34\n  xpos 1632\n  ypos 725\n }\n Clamp {\n  name Clamp12\n  xpos 1632\n  ypos 757\n }\n Expression {\n  temp_name0 rgb_an\n  temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n  temp_name1 rgba_an\n  temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n  temp_name2 alpha_an\n  temp_expr2 a!=0?1:0\n  expr3 alpha_an\n  name BinaryAlpha\n  xpos 1632\n  ypos 789\n }\n FilterErode {\n  size 5\n  name FilterErode63\n  xpos 1632\n  ypos 837\n }\n FilterErode {\n  size -5\n  name FilterErode64\n  xpos 1632\n  ypos 869\n }\nset Nc2660200 [stack 0]\npush $Nc2660200\n FilterErode {\n  size {{control.thresholdKnob*5}}\n  name FilterErode1\n  xpos 1731\n  ypos 869\n }\n Invert {\n  channels rgba\n  name Invert17\n  xpos 1731\n  ypos 952\n }\n Switch {\n  inputs 2\n  which {{!control.operationKnob}}\n  name Switch4\n  xpos 1632\n  ypos 952\n }\n FilterErode {\n  size {{-control.thresholdKnob*5}}\n  name FilterErode65\n  xpos 1632\n  ypos 1059\n }\nset Nc24d2200 [stack 0]\n Roto {\n  inputs 0\n  output alpha\n  cliptype none\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier1 512 bezier\n     {{cc\n       {f 8192}\n       {px x42e60000\n        {x418cffad x41a51255}\n        {x4519f000 x44720000}\n        {xc18cffac xc1a51256}\n        {x41d90f5a xbef1990d}\n        {x45137000 x44620000}\n        {xc1d90f5a x3ef19884}\n        {x415cd887 xc1e55715}\n        {x450b9000 x44730000}\n        {xc15cd893 x41e55712}\n        {xc177199b xc1eb918c}\n        {x450cf000 x448c0000}\n        {x41771993 x41eb918e}\n        {xc1a4feaa xc2024250}\n        {x4514f000 x449d4000}\n        {x41a4feaa x42024250}\n        {xbfb2deea xc1251c95}\n        {x4518d000 x44b18000}\n        {x3fb2def1 x41251c95}\n        {x403e586a xc11fadc5}\n        {x45169000 x44b54000}\n        {xc03e5876 x411fadc4}\n        {x413a1b81 xc27210ca}\n        {x45133000 x44d74000}\n        {xc13a1b8b x427210ca}\n        {xc2a3d05a xc29a97ae}\n        {x450d5000 x450ac000}\n        {x42a3d058 x429a97b0}\n        {xc26722de x4026a824}\n        {x4538f000 x450f4000}\n        {x426722de xc026a7f8}\n        {xc0a9ed39 x4038e158}\n        {x45479000 x45082000}\n        {x40a9ed3a xc038e156}\n        {x3e508a5e x40c15555}\n        {x45489000 x4506c000}\n        {xbe508a20 xc0c15555}\n        {x4130ec6b x422c28fa}\n        {x4546d000 x44e3c000}\n        {xc130ec64 xc22c28fb}\n        {x41d94dd4 x419b3793}\n        {x45407000 x44ce4000}\n        {xc1d94dd3 xc19b3795}\n        {x41a9c7ec xc16b14d8}\n        {x45371000 x44cd4000}\n        {xc1a9c7ed x416b14d5}\n        {xc05f345e xc1cc9ab7}\n        {x4536b000 x44dbc000}\n        {x405f3468 x41cc9ab7}\n        {xc031dd64 xc12c2082}\n        {x4539b000 x44f3c000}\n        {x4031dd53 x412c2083}\n        {x412c7844 xc02c7847}\n        {x453a9000 x44f9c000}\n        {xc12c7844 x402c7840}\n        {x41c706fb xc11339d0}\n        {x452c3000 x44fa8000}\n        {xc1c706fd x411339c5}\n        {x41337258 xc1390deb}\n        {x45285000 x4503a000}\n        {xc1337257 x41390dec}\n        {x41532cbe x4113d282}\n        {x45243000 x45058000}\n        {xc1532cbc xc113d285}\n        {xbf1a04af x41bbb5f1}\n        {x45221000 x44fe8000}\n        {x3f1a04eb xc1bbb5f1}\n        {xbfee8303 x422f2865}\n        {x4524f000 x44d08000}\n        {x3fee833a xc22f2865}\n        {x3f4d9b78 x41c49c5c}\n        {x45239000 x44b80000}\n        {xbf4d9b39 xc1c49c5c}\n        {xc004ab8d x412c78a4}\n        {x45245000 x44aa4000}\n        {x4004ab94 xc12c78a4}\n        {xbeddad4b x412f7eac}\n        {x45257000 x44a48000}\n        {x3eddad84 xc12f7eac}\n        {x413a3d4d x41a5365f}\n        {x4524b000 x44974000}\n        {xc13a3d4a xc1a53661}\n        {x419197da x41ccd89b}\n        {x451db000 x44890000}\n        {xc19197d8 xc1ccd89d}}}     idem}\n     {tx x42e60000 x45274c92 x44ccd925}\n     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44428000 sb 1 ltn x42e60000 ltm x42e60000 tt x40800000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {1024 778}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 115\n  lifetime_end 115\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto2\n  xpos 2165\n  ypos 453\n }\n Constant {\n  inputs 0\n  channels rgb\n  color {0.03644358367 0.03223683313 0.04865816236 0}\n  name Constant1\n  xpos 2059\n  ypos 359\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 2059\n  ypos 466\n }\n Premult {\n  name Premult1\n  xpos 2059\n  ypos 498\n }\npush $Nc405e600\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge5\n  xpos 1802\n  ypos 690\n }\n Inpaint2 {\n  inputs 2\n  fillRegion \"Matte Alpha\"\n  smoothness 20\n  center {960 540}\n  name Inpaint14\n  xpos 1802\n  ypos 1063\n }\n Dot {\n  name Dot2\n  xpos 1836\n  ypos 1506\n }\nset Nd7024800 [stack 0]\n Dot {\n  name Dot1\n  xpos 1836\n  ypos 3515\n }\n Input {\n  inputs 0\n  name mask\n  xpos 2865\n  ypos 3317\n  number 2\n }\n Dot {\n  name Dot7\n  xpos 2899\n  ypos 3395\n }\npush $Nc46ef800\n Dot {\n  name Dot3\n  xpos 3248\n  ypos 2912\n }\nset Nc2192c00 [stack 0]\n Dot {\n  name Dot4\n  xpos 3248\n  ypos 2958\n }\nset Nc2130c00 [stack 0]\n Dot {\n  name Dot5\n  xpos 3248\n  ypos 3009\n }\nset Nc2129e00 [stack 0]\n Dot {\n  name Dot8\n  xpos 3358\n  ypos 3010\n }\npush $Nc2129e00\npush $Nc2130c00\n Input {\n  inputs 0\n  name matte\n  xpos 1109\n  ypos -845\n  number 1\n }\n Dot {\n  name Dot179\n  label matte\n  note_font_size 50\n  xpos 1143\n  ypos 299\n }\n Dot {\n  name Dot139\n  xpos 1143\n  ypos 1138\n }\nset Nd7048e00 [stack 0]\n Dot {\n  name Dot142\n  xpos 1143\n  ypos 2912\n }\npush $Nc24d2200\n Invert {\n  channels alpha\n  name Invert19\n  xpos 1632\n  ypos 2487\n }\n FilterErode {\n  size 4\n  filter gaussian\n  name FilterErode66\n  xpos 1632\n  ypos 2519\n }\n FilterErode {\n  size 8\n  filter gaussian\n  name FilterErode67\n  xpos 1632\n  ypos 2551\n }\n FilterErode {\n  size 16\n  filter gaussian\n  name FilterErode68\n  xpos 1632\n  ypos 2583\n }\n FilterErode {\n  size 32\n  filter gaussian\n  name FilterErode69\n  xpos 1632\n  ypos 2615\n }\n Blur {\n  channels alpha\n  size 20\n  name Blur65\n  xpos 1632\n  ypos 2647\n }\n Dot {\n  name Dot148\n  xpos 1666\n  ypos 2799\n }\npush $Nc46fca00\npush $Nc470e400\n Dot {\n  name Dot149\n  xpos 3254\n  ypos 2545\n }\nset Nd7042c00 [stack 0]\n Dot {\n  name Dot150\n  xpos 3254\n  ypos 2586\n }\npush $Nd7024800\n Blur {\n  channels rgb\n  size 150\n  name Blur66\n  xpos 1920\n  ypos 1503\n }\n Expression {\n  expr3 1\n  name Expression7\n  xpos 1920\n  ypos 1527\n }\n Dot {\n  name Dot165\n  xpos 1954\n  ypos 1691\n }\npush $Nd7048e00\npush $Nc2660200\n Dot {\n  name Dot170\n  xpos 1352\n  ypos 876\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  bbox B\n  also_merge all\n  name Merge55\n  xpos 1318\n  ypos 1135\n }\n Group {\n  name EdgeFromAlpha7\n  note_font Verdana\n  xpos 1318\n  ypos 1209\n  mapsize {0.15 0.15}\n  addUserKnob {20 \"\" l Settings}\n  addUserKnob {41 from0 l \"control channel\" T Copy2.from0}\n  addUserKnob {41 output T ChannelMerge4.output}\n  addUserKnob {41 blackpoint T Grade1.blackpoint}\n  addUserKnob {41 whitepoint T Grade1.whitepoint}\n  addUserKnob {26 \"\" l \"edge size\"}\n  addUserKnob {41 size l inside T ErodeInside.size}\n  addUserKnob {14 ErodeOutside_size l outside R 0 100}\n  addUserKnob {26 \"\" l \"edge blur\"}\n  addUserKnob {41 size_3 l inside T BlurInside.size}\n  addUserKnob {41 size_1 l outside T BlurOutside.size}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -448\n   ypos 2\n  }\n  AddChannels {\n   channels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name AddChannels1\n   xpos -448\n   ypos 30\n  }\nset Nd7067400 [stack 0]\npush $Nd7067400\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   to0 rgba.red\n   name Copy2\n   xpos -193\n   ypos 30\n  }\n  Clamp {\n   channels {rgba.red -rgba.green -rgba.blue none}\n   name Clamp1\n   xpos -193\n   ypos 94\n  }\n  Grade {\n   channels {rgba.red -rgba.green -rgba.blue none}\n   black_clamp false\n   name Grade1\n   xpos -193\n   ypos 146\n  }\nset Nd7069e00 [stack 0]\n  Erode {\n   channels {none none none rgba.red}\n   size 50\n   name ErodeInside\n   xpos -126\n   ypos 198\n  }\n  Blur {\n   channels {rgba.red -rgba.green -rgba.blue none}\n   size 50\n   name BlurInside\n   xpos -126\n   ypos 250\n  }\npush $Nd7069e00\n  Erode {\n   channels {none none none rgba.red}\n   size {{-parent.ErodeOutside_size.w} {-parent.ErodeOutside_size.h}}\n   name ErodeOutside\n   xpos -264\n   ypos 199\n  }\n  Blur {\n   channels {rgba.red -rgba.green -rgba.blue none}\n   size 50\n   name BlurOutside\n   xpos -264\n   ypos 251\n  }\n  ChannelMerge {\n   inputs 2\n   A rgba.red\n   operation stencil\n   B rgba.red\n   name ChannelMerge4\n   xpos -191\n   ypos 308\n  }\nset Nd7070c00 [stack 0]\n  Dot {\n   name Dot1\n   xpos -52\n   ypos 324\n  }\n  Dot {\n   name Dot2\n   xpos -52\n   ypos 465\n  }\npush $Nd7067400\n  Dot {\n   name Dot3\n   xpos -414\n   ypos 416\n  }\npush $Nd7070c00\n  Copy {\n   inputs 2\n   from0 rgba.red\n   to0 rgba.red\n   name Copy1\n   xpos -191\n   ypos 407\n  }\n  Switch {\n   inputs 2\n   which {{\"parent.output == 1\" i}}\n   name Switch1\n   xpos -191\n   ypos 463\n  }\n  Output {\n   name Output1\n   xpos -191\n   ypos 526\n  }\n end_group\nset Nd7066e00 [stack 0]\npush $Nc4066800\n ColorCorrect {\n  saturation 0.25\n  name ColorCorrect10\n  xpos 2097\n  ypos 732\n }\n Dot {\n  name Dot171\n  xpos 2131\n  ypos 961\n }\nset Nd707b800 [stack 0]\n Dot {\n  name Dot172\n  xpos 2266\n  ypos 961\n }\n Median {\n  size {{control.detailKnob>0?int(control.detailKnob/2):0}}\n  ignore_top_line false\n  name Median15\n  xpos 2232\n  ypos 1080\n }\n Dot {\n  name Dot173\n  xpos 2266\n  ypos 1219\n }\npush $Nd707b800\n Median {\n  size {{control.detailKnob>0?int(control.detailKnob):0}}\n  ignore_top_line false\n  name Median12\n  xpos 2097\n  ypos 1078\n }\n Keymix {\n  inputs 3\n  bbox B\n  name Keymix15\n  xpos 2097\n  ypos 1212\n }\n Dot {\n  name Dot174\n  xpos 2131\n  ypos 1556\n }\nset Nd707d400 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge54\n  xpos 2097\n  ypos 1688\n }\n Dot {\n  name Dot175\n  xpos 2131\n  ypos 2164\n }\npush $Nd7066e00\n Dot {\n  name Dot176\n  xpos 1352\n  ypos 1912\n }\npush $Nc431a600\n EdgeDetectWrapper {\n  threshold 0.6\n  name EdgeDetect1\n  xpos 2528\n  ypos 1116\n }\n Expression {\n  temp_name0 rgb_an\n  temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n  temp_name1 rgba_an\n  temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n  temp_name2 alpha_an\n  temp_expr2 a!=0?1:0\n  expr3 alpha_an\n  name BinaryAlpha13\n  xpos 2528\n  ypos 1148\n }\n FilterErode {\n  size -5\n  name FilterErode61\n  xpos 2528\n  ypos 1172\n }\n FilterErode {\n  size 5\n  name FilterErode62\n  xpos 2528\n  ypos 1204\n }\n Blur {\n  channels alpha\n  size 10\n  name Blur67\n  xpos 2528\n  ypos 1236\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  also_merge all\n  name Merge59\n  xpos 2528\n  ypos 1909\n }\npush $Nc4785e00\n ColorCorrect {\n  saturation 0.25\n  name ColorCorrect11\n  xpos 3078\n  ypos 725\n }\npush $Nd707d400\n Merge2 {\n  inputs 2\n  operation divide\n  also_merge all\n  name Merge56\n  xpos 3078\n  ypos 1553\n }\n Blur {\n  inputs 1+1\n  channels rgb\n  size 5\n  name Blur68\n  xpos 3078\n  ypos 1909\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  name Merge57\n  xpos 3078\n  ypos 2161\n }\n Dot {\n  name Dot177\n  xpos 3111\n  ypos 2468\n }\nset Nc72d1200 [stack 0]\n Dot {\n  name Dot178\n  xpos 3010\n  ypos 2468\n }\n Merge2 {\n  inputs 2\n  operation max\n  mix 0.95\n  name Merge58\n  xpos 2976\n  ypos 2583\n }\npush $Nd7042c00\npush $Nc72d1200\n Merge2 {\n  inputs 2\n  operation min\n  mix 0.95\n  name Merge66\n  xpos 3078\n  ypos 2542\n }\n Switch {\n  inputs 2\n  which {{control.operationKnob}}\n  name Switch1\n  xpos 3078\n  ypos 2632\n }\n Keymix {\n  inputs 3\n  name Keymix11\n  xpos 3078\n  ypos 2792\n }\npush $Nc2192c00\n Keymix {\n  inputs 3\n  bbox B\n  name Keymix12\n  xpos 3078\n  ypos 2905\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  xpos 3078\n  ypos 2955\n }\n Blur {\n  channels rgba\n  size 1.5\n  name Blur1\n  xpos 3078\n  ypos 2979\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos 3078\n  ypos 3006\n }\n Dot {\n  name Dot6\n  xpos 3112\n  ypos 3060\n }\nset N3082c400 [stack 0]\n Merge2 {\n  inputs 2\n  operation from\n  name Merge4\n  xpos 3324\n  ypos 3057\n }\npush $N3082c400\npush $Nc2129e00\n Merge2 {\n  inputs 2\n  operation from\n  name Merge3\n  xpos 3214\n  ypos 3057\n }\n Switch {\n  inputs 2\n  which {{control.operationKnob}}\n  name Switch3\n  xpos 3214\n  ypos 3103\n }\n Expression {\n  expr3 clamp(r+g+b)\n  name Expression1\n  xpos 3214\n  ypos 3127\n }\n Grade {\n  channels alpha\n  blackpoint 0.05\n  white_clamp true\n  name Grade1\n  xpos 3214\n  ypos 3151\n }\n Expression {\n  temp_name0 rgb_an\n  temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n  temp_name1 rgba_an\n  temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n  temp_name2 alpha_an\n  temp_expr2 a!=0?1:0\n  expr3 alpha_an\n  name BinaryAlpha12\n  xpos 3214\n  ypos 3183\n }\n Blur {\n  size 25\n  name Blur2\n  xpos 3214\n  ypos 3207\n }\npush $N3082c400\n Blur {\n  inputs 1+1\n  channels rgba\n  size {{parent.control.postBlurKnob}}\n  name Blur69\n  label \"\\npost blur\"\n  xpos 3078\n  ypos 3202\n }\npush $Nc46cec00\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name MergeKeymix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 3078\n  ypos 3392\n }\n Switch {\n  inputs 2\n  which {{control.preview}}\n  name Switch2\n  xpos 3078\n  ypos 3512\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy7\n  xpos 3078\n  ypos 3581\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 3078\n  ypos 3613\n }\n CopyMetaData {\n  inputs 2\n  name CopyMetaData1\n  xpos 3078\n  ypos 3637\n }\n Output {\n  name Output1\n  xpos 3078\n  ypos 4272\n }\n MergeExpression {\n  inputs 0\n  temp_name0 add\n  temp_expr0 b-a\n  temp_name1 remove\n  name MergeExpression1\n  xpos 3560\n  ypos 3053\n }\npush $Nd7048e00\n NoOp {\n  name control\n  label \"\\n\\n\\n\\nknob control\\n\\n\\n\"\n  note_font \"Verdana Bold\"\n  note_font_size 35\n  selected true\n  xpos 937\n  ypos 1024\n  addUserKnob {20 User}\n  addUserKnob {4 operationKnob l operation M {add remove \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n  addUserKnob {26 _1 l \"  \" -STARTLINE T \"  \"}\n  addUserKnob {6 preview -STARTLINE}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 rangeKnob l range R 0 0.5}\n  rangeKnob 0.25\n  addUserKnob {7 thresholdKnob l threshold R 0 10}\n  thresholdKnob 5\n  addUserKnob {26 \"\"}\n  addUserKnob {7 detailKnob l detail R 0 10}\n  detailKnob 5\n  addUserKnob {7 postBlurKnob l \"post blur\" R 0 5}\n  postBlurKnob 2.5\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChroma.gizmo",
    "content": "Group {\n name apChroma\n help \"Advanced chromatic drift gizmo, that works through a sub-frame blend of different values on an STMap and Transform, while creating a color spectrum.\\n\\napChroma v1.1\\nadrianpueyo.com\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"monochrome\\\":\\n    k.setValue(min(1,max(0,k.value())))\\nelif kn == \\\"output_dist_matte\\\":\\n    n.knob(\\\"output_matte_channel\\\").setEnabled(k.value())\"\n tile_color 0x736efdff\n selected true\n addUserKnob {20 apChroma}\n addUserKnob {26 text l \"<b> Transform\"}\n addUserKnob {41 translate T Transform17.translate}\n addUserKnob {41 rotate T Transform17.rotate}\n addUserKnob {41 scale T Transform17.scale}\n addUserKnob {41 center T Transform17.center}\n addUserKnob {22 center_on_input l \"center on input\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    ni = n.input(0)\\n    n\\[\\\"center\\\"].setValue(\\[ni.width()/2,ni.height()/2])\\nexcept:\\n    pass\"}\n addUserKnob {7 smooth l \"smooth<i style=\\\"color:#888\\\"></i>\" t \"Helps keep a lower sample number for large distortions by adding motion blur. The higher this value, the higher the motion blur quality.\\n\\nFor typical aberrations this won't be needed, so better avoid smoothing when possible by keeping it 0, as it is super heavy to compute!\"}\n addUserKnob {41 invert_matrix l invert T Transform17.invert_matrix}\n addUserKnob {6 black_outside l \"black outside\" t \"When disabled, the edges of your image will be extended in the aberration instead of seeing black entering through the first frequencies.\" -STARTLINE}\n addUserKnob {22 create_uv_map l \" Create UV Map \" T \"n = nuke.thisNode()\\nn.end()\\nns = nuke.selectedNodes()\\n\\[i.setSelected(False) for i in ns]\\ntry:\\n    uv = nuke.nodes.NST_UV_Map()\\n    isExpression = False\\nexcept:\\n    uv = nuke.nodes.Expression()\\n    isExpression = True\\nuv.setXYpos(n.xpos()+140, n.ypos()-100)\\nuv.setSelected(True)\\nif isExpression:\\n    uv\\[\\\"expr0\\\"].setValue(\\\"(x+0.5)/width\\\")\\n    uv\\[\\\"expr1\\\"].setValue(\\\"(y+0.5)/height\\\")\\nn.setInput(1,uv)\\nd = nuke.createNode(\\\"Dot\\\")\\nd.hideControlPanel()\\nd.setYpos(int(n.ypos()+n.screenHeight()/2 - d.screenHeight()/2))\\nuv.setSelected(False)\\nd.setSelected(False)\\n\\[i.setSelected(True) for i in ns]\" +STARTLINE}\n addUserKnob {26 breathe l \"\" +STARTLINE T \" \"}\n addUserKnob {26 text_1 l \"<b> Settings\"}\n addUserKnob {3 samples}\n samples 10\n addUserKnob {7 ab l aberration t \"This drives the amount of color aberration.\\n0 = No aberration at all, works as regular STMap.\\n1 = Amount of aberration equal to the values of the input UV Map.\" R 0 2}\n ab 1\n addUserKnob {7 compensate t \"Inverse the values of the distortion map so that the overall effect stays at the same position.\" R -1 1}\n compensate 1\n addUserKnob {7 monochrome t \"With the same amount of \\\"color leak\\\", this desaturates the spectrum in that leak.\\nAt value 1, the effect is similar to a directional blur.\"}\n addUserKnob {14 overscan R 0 100}\n addUserKnob {6 invert_spectrum l \"invert spectrum\" +STARTLINE}\n addUserKnob {6 calculate_multi_alpha l \"calculate per-channel alpha\" t \"Also generates a channel layer called apChroma wich includes the transformed alphas for each of the rgba channels. This is necessary if you want to merge the result of this node onto a background. You'll need apChromaMerge or a similar gizmo in order to perform the special merge.\" -STARTLINE}\n calculate_multi_alpha true\n addUserKnob {6 process_alpha l \"process single alpha from\" t \"If activated, the multi-channel alpha will get combined into a regular alpha that you can use for normal operations after this node.\" +STARTLINE}\n process_alpha true\n addUserKnob {41 mode l \"\" -STARTLINE T Saturation1.mode}\n addUserKnob {6 output_dist_matte l \"output distortion matte\" t \"Useful if you want to add a grading or iBlur afterwards, driven by the amount of chromatic aberration.\" +STARTLINE}\n addUserKnob {41 output_matte_channel l \"\" -STARTLINE T CopyAlpha.to0}\n addUserKnob {26 breathe3 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l \"mask \" T MergeRGB.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeRGB.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeRGB.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeRGB.fringe}\n addUserKnob {41 mix T MergeRGB.mix}\n addUserKnob {26 version_author l \"\" t \"apChroma v1.1\\n2016-2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChroma v1.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2016-2019</span>\"}\n addUserKnob {20 Spectrum}\n addUserKnob {41 lut l \"\" +STARTLINE T CLP.lut}\n addUserKnob {22 lutPrepare l INVISIBLE +INVISIBLE T \"n = nuke.thisNode()\\ntry:\\n    n.knob(\\\"lut\\\").delCurve(\\\"master\\\")\\n    n.knob(\\\"lut\\\").delCurve(\\\"alpha\\\")\\nexcept:\\n    pass\" +STARTLINE}\n addUserKnob {52 lutPrepareGo T \"nuke.thisNode()\\[\\\"lutPrepare\\\"].execute()\" +STARTLINE}\n}\n ColorLookup {\n  inputs 0\n  use_precomputed false\n  lut {red {curve C 0 s0 x0.3128865659 1 s-0 v0.7904256582 x0.7806204557 -0.0007482314769 s0 u1.743535638 v1.742119074 x0.9418143034 0.06970721483 s-0.05000000075 x1 0 s0}\n    green {curve C x0.1143286526 0 s0.01999999955 v1.837088585 x0.530087471 1 s-0.05000000075 u1.36422956 v1.120811939 x0.9743717909 0 s-0 u2.045060158}\n    blue {curve C x0.6321670413 0 s0 x0.8160832524 0.99800843 s0 x1 0 s0}}\n  name CLP\n  label \"Natural Spectrum\"\n  xpos 137\n  ypos -191\n }\n ColorLookup {\n  inputs 0\n  channels rgb\n  lut {master {}\n    red {\"CLP.lut.red * (1-parent.monochrome) + parent.monochrome\" C 0 1}\n    green {\"CLP.lut.green * (1-parent.monochrome) + parent.monochrome\" C 0 1}\n    blue {\"CLP.lut.blue * (1-parent.monochrome) + parent.monochrome\" C 0 1}\n    alpha {\"CLP.lut.alpha * (1-parent.monochrome) + parent.monochrome\" C 0 1}}\n  name CL\n  label monochrome\n  xpos 27\n  ypos -149\n }\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.Achannels}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.Achannels}}}\n  name MergeChosen\n  xpos -209\n  ypos -368\n  hide_input true\n }\n Input {\n  inputs 0\n  name Inputmask\n  label \"\\[value number]\"\n  xpos -498\n  ypos 483\n  number 2\n }\n Dot {\n  name Dot25\n  note_font_size 41\n  xpos -464\n  ypos 651\n }\nset Nd69fcd80 [stack 0]\n Dot {\n  name Dot21\n  xpos -464\n  ypos 689\n }\nset Nd69fd230 [stack 0]\n Dot {\n  name Dot24\n  note_font_size 41\n  xpos -464\n  ypos 799\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -388\n  ypos -554\n }\n NoTimeBlur {\n  rounding none\n  name NoTB\n  xpos -388\n  ypos -528\n }\n AdjBBox {\n  numpixels {{parent.overscan} {parent.overscan}}\n  name AdjBBox\n  xpos -388\n  ypos -502\n }\nset N157998b0 [stack 0]\n Dot {\n  name Dot1\n  xpos -47\n  ypos -498\n }\nset N2789dd90 [stack 0]\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+0.5)/height\n  expr2 0\n  name ExpressionUVDefault\n  xpos 118\n  ypos -502\n }\n Input {\n  inputs 0\n  name Inputuv\n  xpos 279\n  ypos -558\n  number 1\n }\n Switch {\n  inputs 2\n  which 1\n  name SwitchUV\n  xpos 279\n  ypos -502\n  disable {{\"\\[exists parent.input1]\"}}\n }\n NoTimeBlur {\n  rounding none\n  name NoTB1\n  xpos 279\n  ypos -476\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 313\n  ypos -275\n }\nset Nef3c8fa0 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 447\n  ypos -275\n }\n Remove {\n  name Remove1\n  xpos 413\n  ypos -257\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+0.5)/height\n  expr2 0\n  expr3 0\n  name ExpressionUV\n  xpos 413\n  ypos -219\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 447\n  ypos -183\n }\nset N1c3c5170 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 690\n  ypos -183\n }\nset Nc66aed0 [stack 0]\n Multiply {\n  channels {rgba.red rgba.green -rgba.blue none}\n  value {{1-parent.ab} {1-parent.ab} 1 1}\n  name Multiply6\n  xpos 656\n  ypos -97\n }\n Dot {\n  name Dot16\n  xpos 690\n  ypos -38\n }\npush $Nef3c8fa0\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 214\n  ypos -275\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 214\n  ypos -233\n }\npush $Nef3c8fa0\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge3\n  xpos 279\n  ypos -237\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 313\n  ypos -164\n }\nset N2d176a60 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 600\n  ypos -164\n }\n Multiply {\n  channels {rgba.red rgba.green -rgba.blue none}\n  value {{parent.ab} {parent.ab} 0 0}\n  name Multiply5\n  xpos 566\n  ypos -98\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox B\n  output rgb\n  name Merge4\n  xpos 566\n  ypos -42\n }\n Transform {\n  center {1024 576}\n  motionblur {{parent.smooth}}\n  shutter {{1/parent.samples}}\n  shutteroffset centred\n  name Transform17\n  label control\n  xpos 566\n }\nset Nc67a5a0 [stack 0]\npush $Nc66aed0\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 831\n  ypos -183\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 797\n  ypos 6\n }\n Dot {\n  name Dot19\n  xpos 831\n  ypos 77\n }\npush $Nc67a5a0\n Merge2 {\n  inputs 2\n  operation difference\n  bbox B\n  name Merge5\n  xpos 566\n  ypos 73\n }\n Expression {\n  expr3 sqrt(pow2(r)+pow2(g))\n  name ExpressionDiff\n  xpos 566\n  ypos 117\n }\n Dot {\n  name Dot9\n  xpos 600\n  ypos 440\n }\nset Nc608e20 [stack 0]\npush $Nc608e20\npush $N2789dd90\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -47\n  ypos -453\n }\nset Nc6022a0 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 31\n  ypos -453\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 31\n  ypos -364\n }\npush $Nc6022a0\nadd_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\n Shuffle {\n  alpha white\n  black alpha\n  white alpha\n  red2 alpha\n  out2 {apChroma.red apChroma.green apChroma.blue -apChroma.alpha}\n  name ShuffleAlpha1\n  xpos -81\n  ypos -418\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.Achannels}}}\n  Bchannels none\n  name MergeGetChroma\n  xpos -81\n  ypos -368\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Remove {\n  channels apChroma\n  name Remove_apChroma\n  xpos -81\n  ypos -278\n  disable {{parent.calculate_multi_alpha}}\n }\nadd_layer {apChromaWeight apChromaWeight.red apChromaWeight.green apChromaWeight.blue apChromaWeight.alpha}\n AddChannels {\n  channels apChromaWeight\n  color 1\n  name AddChannels1\n  xpos -81\n  ypos -240\n }\n Multiply {\n  value {{!parent.invert_spectrum?CL.lut.red(TB.frf):CL.lut.red(1-TB.frf)} {!parent.invert_spectrum?CL.lut.green(TB.frf):CL.lut.green(1-TB.frf)} {!parent.invert_spectrum?CL.lut.blue(TB.frf):CL.lut.blue(1-TB.frf)} {!parent.invert_spectrum?CL.lut.red(TB.frf):CL.lut.red(1-TB.frf)}}\n  name Multiply1\n  xpos -81\n  ypos -189\n  addUserKnob {20 User}\n  addUserKnob {19 fullcolor}\n  fullcolor {{!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.green(TB.frf):CLP.lut.green(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.blue(TB.frf):CLP.lut.blue(1-TB.frf)} {!parent.invert_spectrum?CLP.lut.red(TB.frf):CLP.lut.red(1-TB.frf)}}\n  addUserKnob {6 fullcolor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -47\n  ypos -141\n }\nset N278a1c10 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -139\n  ypos -141\n }\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos -139\n  ypos 90\n }\npush $N2d176a60\n Multiply {\n  channels {rgba.red rgba.green -rgba.blue none}\n  value {{\"(TB.frf-.5)*parent.ab + 0.5*(1-parent.compensate)\"} {\"(TB.frf-.5)*parent.ab + 0.5*(1-parent.compensate)\"} 0 0}\n  name Multiply3\n  xpos 279\n  ypos -146\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 313\n  ypos -108\n }\npush $N1c3c5170\n Multiply {\n  channels {rgba.red rgba.green -rgba.blue none}\n  value {{\"(1- ((TB.frf-.5)*parent.ab + 0.5*(1-parent.compensate)) )\" i} {\"(1- ((TB.frf-.5)*parent.ab + 0.5*(1-parent.compensate)) )\" i} 1 1}\n  name Multiply4\n  xpos 413\n  ypos -145\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels {rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green -rgba.blue -rgba.alpha}\n  name Merge1\n  xpos 413\n  ypos -112\n }\n Dot {\n  name Dot4\n  xpos 447\n  ypos 43\n }\npush $N278a1c10\n Remove {\n  channels apChromaWeight\n  name Remove3\n  xpos -81\n  ypos -104\n }\n Transform {\n  translate {{\"parent.Transform17.translate*((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate))\"} {\"parent.Transform17.translate*((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate))\"}}\n  rotate {{\"parent.Transform17.rotate*((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate))\"}}\n  scale {{\"parent.Transform17.scale*((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate)) + 1 - ((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate)) \"} {\"parent.Transform17.scale*((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate)) + 1 - ((TB.frf-0.5)*parent.ab+ 0.5*(1-parent.compensate)) \"}}\n  center {{parent.Transform17.center} {parent.Transform17.center}}\n  invert_matrix {{parent.Transform17.invert_matrix}}\n  black_outside {{parent.black_outside}}\n  motionblur {{parent.smooth}}\n  shutter {{1/parent.samples}}\n  name TransformI\n  xpos -81\n  ypos -66\n }\n Blur {\n  channels rgba\n  name Blur1\n  xpos -81\n  ypos -40\n  disable true\n  addUserKnob {20 User}\n  addUserKnob {26 info l \"\" +STARTLINE T \"needed to break concatenation and make sure mblur works with the stmaps\"}\n }\n STMap {\n  inputs 2\n  uv rgb\n  blur_scale 0\n  name STMap1\n  xpos -81\n  ypos 33\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Copy {\n  inputs 2\n  channels apChromaWeight\n  name Copy2\n  xpos -81\n  ypos 74\n }\n TimeBlur {\n  divisions {{parent.samples}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name TB\n  xpos -81\n  ypos 124\n  addUserKnob {20 User}\n  addUserKnob {7 frf}\n  frf {{(frame%1)*(parent.samples+1)/parent.samples}}\n }\nset N469fb90 [stack 0]\npush $N469fb90\n Shuffle {\n  in apChromaWeight\n  name Shuffle2\n  label \"\\[value in]\"\n  xpos 89\n  ypos 118\n }\nset Nc1012d0 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  bbox A\n  metainput A\n  rangeinput A\n  Achannels apChroma\n  output apChroma\n  name Merge6\n  xpos 89\n  ypos 261\n }\npush $N469fb90\npush $Nc1012d0\n Merge2 {\n  inputs 2\n  operation divide\n  bbox A\n  metainput A\n  rangeinput A\n  name Merge2\n  xpos -81\n  ypos 196\n }\n Copy {\n  inputs 2\n  channels apChroma\n  name Copy3\n  xpos -81\n  ypos 255\n }\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos -47\n  ypos 323\n }\nset N2cc299e0 [stack 0]\n Shuffle {\n  in apChroma\n  name Shuffle1\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat → \\[value out2]] \\}]\"\n  xpos 43\n  ypos 313\n }\n Saturation {\n  saturation 0\n  name Saturation1\n  xpos 43\n  ypos 359\n }\npush $N2cc299e0\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy5\n  xpos -81\n  ypos 353\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 apChroma.alpha\n  from1 -rgba.alpha\n  to1 -rgba.alpha\n  bbox B\n  name Copy1\n  xpos -81\n  ypos 424\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyAlpha1\n  xpos -81\n  ypos 493\n  disable {{!parent.output_dist_matte}}\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -47\n  ypos 651\n }\nset Nf4c48100 [stack 0]\n Dot {\n  name Dot20\n  xpos -47\n  ypos 689\n }\nset N2cc908e0 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos -47\n  ypos 742\n }\nset N2cc95a80 [stack 0]\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos -47\n  ypos 799\n }\npush $N2cc95a80\npush $Nd69fd230\npush $N2cc908e0\npush $Nd69fcd80\npush $Nf4c48100\npush $N157998b0\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos -354\n  ypos 428\n }\nset Nf0d9f20 [stack 0]\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos -279\n  ypos 424\n }\npush $Nf0d9f20\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 apChroma.red\n  from1 rgba.alpha\n  to1 apChroma.green\n  from2 rgba.alpha\n  to2 apChroma.blue\n  from3 rgba.alpha\n  to3 apChroma.alpha\n  name Copy6\n  xpos -388\n  ypos 467\n  disable {{\"!\\[exists input2]\"}}\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  also_merge apChroma\n  name MergeRGB\n  xpos -388\n  ypos 647\n }\n Copy {\n  inputs 2+1\n  channels apChroma\n  maskChannelMask {{{parent.MergeRGB.maskChannelMask}}}\n  maskChannelInput {{{parent.MergeRGB.maskChannelInput}}}\n  inject {{parent.MergeRGB.inject}}\n  invert_mask {{parent.MergeRGB.invert_mask}}\n  fringe {{parent.MergeRGB.fringe}}\n  mix {{parent.MergeRGB.mix}}\n  name Copy_apChroma\n  xpos -388\n  ypos 673\n  disable {{!parent.calculate_multi_alpha}}\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos -388\n  ypos 732\n  disable {{!parent.process_alpha}}\n }\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyAlpha\n  xpos -388\n  ypos 789\n  disable {{!parent.output_dist_matte}}\n }\n Output {\n  name Output\n  xpos -388\n  ypos 910\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChromaBlurNew.gizmo",
    "content": "add_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nGroup {\n name apChromaBlur\n help \"apChromaBlur v0.2\\nadrianpueyo.com, 2019\"\n tile_color 0x736efdff\n selected true\n addUserKnob {20 apChromaBlur}\n addUserKnob {41 channels T MergeRGBA.also_merge}\n addUserKnob {26 \"\"}\n addUserKnob {4 blur_mode l mode M {blur defocus \"\"}}\n addUserKnob {18 size}\n size {0 0 0}\n addUserKnob {6 size_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 aspect}\n aspect 1\n addUserKnob {6 aspect_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 bloom}\n bloom 1\n addUserKnob {6 bloom_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 mix_1 l mix}\n mix_1 1\n addUserKnob {6 mix_1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {41 chroma l \"<b><font color=#9292d2>multi-alpha\" T MergeCopyChroma.output}\n addUserKnob {6 process_multi_alpha l \"process multi-alpha\" +STARTLINE}\n process_multi_alpha true\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l \"mask \" -STARTLINE T MergeRGBA.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeRGBA.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeRGBA.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeRGBA.fringe}\n addUserKnob {41 mix T MergeRGBA.mix}\n addUserKnob {26 version_author l \"\" t \"apChromaBlur v0.2\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChromaBlur v0.2</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeChosen\n  xpos 824\n  ypos 296\n  hide_input true\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 190\n  ypos 914\n  number 1\n }\nset Nee2b8fc0 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 224\n  ypos 956\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 319\n  ypos 196\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 353\n  ypos 246\n }\nset Nebabdf10 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 564\n  ypos 246\n }\nset Nee2f0b50 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 665\n  ypos 246\n }\nset Nee2e8410 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 665\n  ypos 306\n }\npush $Nee2e8410\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 737\n  ypos 246\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 703\n  ypos 264\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma\n  xpos 703\n  ypos 302\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 737\n  ypos 348\n }\nset Ncf9c1c10 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 737\n  ypos 441\n }\npush $Nee2f0b50\n Gamma {\n  value {{1/parent.bloom} {1/parent.bloom} {1/parent.bloom} {1/parent.bloom}}\n  name Gamma1\n  xpos 530\n  ypos 393\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeCopyChromaFull1\n  xpos 530\n  ypos 431\n  disable {{!parent.process_multi_alpha}}\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 564\n  ypos 496\n }\nset Nd3018370 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 652\n  ypos 496\n }\nset Ne424f1a0 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 737\n  ypos 496\n }\n Multiply {\n  value {0 0 1 1}\n  name MultiplyKeepR2\n  label \"\\[value value]\"\n  xpos 703\n  ypos 533\n }\n Blur {\n  size {{parent.size.2*parent.aspect.2} {parent.size.2}}\n  mix {{parent.mix_1.b}}\n  name Blur3\n  xpos 703\n  ypos 583\n  disable {{parent.blur_mode==1}}\n }\n Defocus {\n  defocus {{parent.size.2}}\n  ratio {{parent.aspect.2}}\n  mix {{parent.mix_1.b}}\n  name Defocus3\n  xpos 703\n  ypos 621\n  disable {{parent.blur_mode==0}}\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 737\n  ypos 714\n }\npush $Ne424f1a0\n Multiply {\n  value {0 1 0 1}\n  name MultiplyKeepG2\n  label \"\\[value value]\"\n  xpos 618\n  ypos 533\n }\n Blur {\n  size {{parent.size.1*parent.aspect.1} {parent.size.1}}\n  mix {{parent.mix_1.g}}\n  name Blur2\n  xpos 618\n  ypos 583\n  disable {{parent.blur_mode==1}}\n }\n Defocus {\n  defocus {{parent.size.1}}\n  ratio {{parent.aspect.1}}\n  mix {{parent.mix_1.g}}\n  name Defocus2\n  xpos 618\n  ypos 621\n  disable {{parent.blur_mode==0}}\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 652\n  ypos 688\n }\npush $Nd3018370\n Multiply {\n  value {1 0 0 1}\n  name MultiplyKeepB2\n  label \"\\[value value]\"\n  xpos 530\n  ypos 533\n }\n Blur {\n  size {{parent.size.0*parent.aspect.0} {parent.size.0}}\n  mix {{parent.mix_1.r}}\n  name Blur1\n  xpos 530\n  ypos 583\n  disable {{parent.blur_mode==1}}\n }\n Defocus {\n  defocus {{parent.size.0}}\n  ratio {{parent.aspect.0}}\n  mix {{parent.mix_1.r}}\n  name Defocus1\n  xpos 530\n  ypos 621\n  disable {{parent.blur_mode==0}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge1\n  xpos 530\n  ypos 684\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge2\n  xpos 530\n  ypos 710\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 564\n  ypos 758\n }\nset Nd31e4790 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 641\n  ypos 758\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 641\n  ypos 956\n }\npush $Nee2b8fc0\npush $Ncf9c1c10\npush $Nebabdf10\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeCopyChromaFull\n  xpos 319\n  ypos 338\n  disable {{!parent.process_multi_alpha}}\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 353\n  ypos 852\n }\nset Nd318e600 [stack 0]\n Shuffle {\n  name ShuffleNothing\n  xpos 418\n  ypos 848\n }\npush $Nd31e4790\n Gamma {\n  value {{parent.bloom} {parent.bloom} {parent.bloom} {parent.bloom}}\n  name Gamma2\n  xpos 530\n  ypos 804\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyA\n  xpos 530\n  ypos 842\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 564\n  ypos 918\n }\npush $Nd318e600\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeRGBA\n  xpos 319\n  ypos 908\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels {{{output}}}\n  Bchannels none\n  output apChroma\n  maskChannelMask {{{parent.MergeRGBA.maskChannelMask}}}\n  inject {{parent.MergeRGBA.inject}}\n  invert_mask {{parent.MergeRGBA.invert_mask}}\n  fringe {{parent.MergeRGBA.fringe}}\n  mix {{parent.MergeRGBA.mix}}\n  name MergeCopyChroma\n  xpos 319\n  ypos 946\n  disable {{!parent.process_multi_alpha}}\n }\n Output {\n  name Output1\n  xpos 319\n  ypos 1017\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChromaMergeNew.gizmo",
    "content": "add_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nGroup {\n inputs 2\n name apChromaMerge\n tile_color 0x736efdff\n selected true\n addUserKnob {20 apChromaMerge}\n addUserKnob {41 operation T MergeR.operation}\n addUserKnob {41 sRGB l \"Video colorspace\" -STARTLINE T MergeR.sRGB}\n addUserKnob {41 screen_alpha l \"alpha masking\" -STARTLINE T MergeR.screen_alpha}\n addUserKnob {41 bbox l \"set bbox to \" T MergeR.bbox}\n addUserKnob {41 metainput l \"metadata from\" -STARTLINE T MergeR.metainput}\n addUserKnob {41 rangeinput l \"range from\" -STARTLINE T MergeR.rangeinput}\n addUserKnob {26 \"\"}\n addUserKnob {41 Achannels l \"A channels\" T MergeChroma.Achannels}\n addUserKnob {41 Bchannels l \"B channels\" T MergeChroma.Bchannels}\n addUserKnob {41 output T MergeChroma.output}\n addUserKnob {41 also_merge l \"also merge\" T MergeChroma.also_merge}\n addUserKnob {6 mergeAll l \"Merge all channels the same as MergeAll node\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 chroma l \"<b><font color=#9292d2>multi-alpha\" T MergeCopyChroma.output}\n addUserKnob {6 keep_multi_alpha l \"keep multi-alpha\" t \"Keep the multi-alpha channels, so that you can do more chroma operations downstream.\" +STARTLINE}\n addUserKnob {6 process_alpha l \"process single alpha from\" t \"If activated, the multi-channel alpha will get combined into a regular alpha that you can use for normal operations after this node.\" -STARTLINE}\n process_alpha true\n addUserKnob {41 mode l \"\" -STARTLINE T Saturation0.mode}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l \"mask \" -STARTLINE T MergeChroma.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeChroma.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeChroma.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeChroma.fringe}\n addUserKnob {41 mix T MergeChroma.mix}\n addUserKnob {26 version_author l \"\" t \"apChromaMerge v0.3\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChromaMerge v0.3</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeChosen\n  xpos -96\n  ypos -96\n  hide_input true\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 1293\n  ypos 604\n  number 2\n }\nset N80e58740 [stack 0]\n Input {\n  inputs 0\n  name InputB\n  xpos 1158\n  ypos -338\n }\nset Nc5153c90 [stack 0]\n Input {\n  inputs 0\n  name InputA\n  xpos -401\n  ypos -302\n  number 1\n }\n Group {\n  inputs 2\n  name InjectAllChannels\n  tile_color 0x9e3c63ff\n  xpos -401\n  ypos -206\n  disable {{!parent.mergeAll}}\n }\n  Input {\n   inputs 0\n   name InputA\n   xpos 378\n   ypos 241\n   number 1\n  }\n  Multiply {\n   value 0\n   name Multiply1\n   label \"\\[value value]\"\n   xpos 378\n   ypos 330\n  }\n  Input {\n   inputs 0\n   name InputB\n   xpos 520\n   ypos 241\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   also_merge all\n   name Merge1\n   xpos 520\n   ypos 342\n  }\n  Output {\n   name Output1\n   xpos 520\n   ypos 400\n  }\n end_group\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -367\n  ypos -143\n }\nset N6fb4e7e0 [stack 0]\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 70\n  ypos -143\n }\nset N39b58f60 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 148\n  ypos -143\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 148\n  ypos -61\n }\npush $N39b58f60\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name ShuffleA\n  label alpha\n  xpos 36\n  ypos -113\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma2\n  xpos 36\n  ypos -65\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 70\n  ypos 7\n }\nset N12376bc0 [stack 0]\npush $N6fb4e7e0\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -367\n  ypos -42\n }\nset N10ad2290 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -290\n  ypos -42\n }\nset N9776eaa0 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -202\n  ypos -42\n }\nset N4424890 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos -117\n  ypos -42\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy1\n  xpos -151\n  ypos -3\n }\n Multiply {\n  value {1 0 0 1}\n  name MultiplyKeepR2\n  label \"\\[value value]\"\n  xpos -151\n  ypos 35\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -117\n  ypos 155\n }\npush $Nc5153c90\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 1192\n  ypos -149\n }\nset N8e311d10 [stack 0]\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 945\n  ypos -149\n }\nset Naf759af0 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 274\n  ypos -149\n }\nset N8f6efd30 [stack 0]\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 196\n  ypos -149\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 196\n  ypos -60\n }\npush $N8f6efd30\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name ShuffleA1\n  label alpha\n  xpos 240\n  ypos -119\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma1\n  xpos 240\n  ypos -64\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot23\n  note_font_size 41\n  xpos 274\n  ypos 1\n }\nset N34914360 [stack 0]\npush $Naf759af0\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 945\n  ypos -48\n }\nset Na2af72e0 [stack 0]\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 591\n  ypos -48\n }\nset N1ffc4140 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 503\n  ypos -48\n }\nset N810d1a80 [stack 0]\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 418\n  ypos -48\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy6\n  xpos 384\n  ypos -9\n }\n Multiply {\n  value {1 0 0 1}\n  name MultiplyKeepR1\n  label \"\\[value value]\"\n  xpos 384\n  ypos 63\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  also_merge all\n  name MergeR\n  xpos 384\n  ypos 145\n }\n Dot {\n  name Dot31\n  xpos 418\n  ypos 512\n }\nset N1c247ed0 [stack 0]\npush $N12376bc0\npush $N4424890\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.alpha\n  name Copy2\n  xpos -236\n  ypos -3\n }\n Multiply {\n  value {0 1 0 1}\n  name MultiplyKeepG2\n  label \"\\[value value]\"\n  xpos -236\n  ypos 35\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -202\n  ypos 189\n }\npush $N34914360\npush $N810d1a80\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.alpha\n  name Copy5\n  xpos 469\n  ypos -9\n }\n Multiply {\n  value {0 1 0 1}\n  name MultiplyKeepG1\n  label \"\\[value value]\"\n  xpos 469\n  ypos 63\n }\n Merge2 {\n  inputs 2\n  operation {{MergeR.operation}}\n  sRGB {{MergeR.sRGB}}\n  screen_alpha {{MergeR.screen_alpha}}\n  bbox {{MergeR.bbox}}\n  metainput {{MergeR.metainput}}\n  rangeinput {{MergeR.rangeinput}}\n  Achannels {-rgba.red rgba.green -rgba.blue rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue rgba.alpha}\n  also_merge all\n  maskChannelMask none\n  inject {{MergeR.inject}}\n  invert_mask {{MergeR.invert_mask}}\n  fringe {{MergeR.fringe}}\n  mix {{MergeR.mix}}\n  name MergeG\n  xpos 469\n  ypos 179\n }\n Dot {\n  name Dot30\n  xpos 503\n  ypos 474\n }\nset N21bf9a0 [stack 0]\npush $N12376bc0\npush $N9776eaa0\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name Copy3\n  xpos -324\n  ypos -3\n }\n Multiply {\n  value {0 0 1 1}\n  name MultiplyKeepB2\n  label \"\\[value value]\"\n  xpos -324\n  ypos 35\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos -290\n  ypos 237\n }\npush $N34914360\npush $N1ffc4140\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name Copy4\n  xpos 557\n  ypos -9\n }\n Multiply {\n  value {0 0 1 1}\n  name MultiplyKeepB1\n  label \"\\[value value]\"\n  xpos 557\n  ypos 63\n }\n Merge2 {\n  inputs 2\n  operation {{MergeR.operation}}\n  sRGB {{MergeR.sRGB}}\n  screen_alpha {{MergeR.screen_alpha}}\n  bbox {{MergeR.bbox}}\n  metainput {{MergeR.metainput}}\n  rangeinput {{MergeR.rangeinput}}\n  Achannels {-rgba.red -rgba.green rgba.blue rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue rgba.alpha}\n  also_merge all\n  maskChannelMask none\n  inject {{MergeR.inject}}\n  invert_mask {{MergeR.invert_mask}}\n  fringe {{MergeR.fringe}}\n  mix {{MergeR.mix}}\n  name MergeB\n  xpos 557\n  ypos 227\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 591\n  ypos 436\n }\nset N914b9350 [stack 0]\npush $N10ad2290\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -367\n  ypos 281\n }\npush $Na2af72e0\n Merge2 {\n  inputs 2\n  operation {{MergeR.operation}}\n  sRGB {{MergeR.sRGB}}\n  screen_alpha {{MergeR.screen_alpha}}\n  bbox {{MergeR.bbox}}\n  metainput {{MergeR.metainput}}\n  rangeinput {{MergeR.rangeinput}}\n  Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n  also_merge all\n  maskChannelMask none\n  inject {{MergeR.inject}}\n  invert_mask {{MergeR.invert_mask}}\n  fringe {{MergeR.fringe}}\n  mix {{MergeR.mix}}\n  name MergeA\n  xpos 911\n  ypos 271\n }\n Multiply {\n  value {0 0 0 1}\n  name MultiplyKeepA\n  label \"\\[value value]\"\n  xpos 911\n  ypos 309\n }\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 945\n  ypos 381\n }\nset Na783d360 [stack 0]\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 816\n  ypos 381\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.blue\n  name Copy10\n  xpos 782\n  ypos 426\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.green\n  name Copy11\n  xpos 782\n  ypos 464\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  name Copy12\n  xpos 782\n  ypos 502\n }\n Dot {\n  name Dot36\n  xpos 816\n  ypos 657\n }\nset N8f734ee0 [stack 0]\n Saturation {\n  channels rgba\n  saturation 0\n  name Saturation0\n  xpos 782\n  ypos 709\n }\npush $N80e58740\npush $N8f734ee0\npush $N80e58740\npush $Na783d360\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 1021\n  ypos 381\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1021\n  ypos 544\n }\npush $N1c247ed0\npush $N21bf9a0\npush $N914b9350\npush $Na783d360\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  metainput A\n  rangeinput A\n  also_merge all\n  name Merge1\n  xpos 911\n  ypos 432\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  metainput A\n  rangeinput A\n  also_merge all\n  name Merge2\n  xpos 911\n  ypos 470\n }\n Merge2 {\n  inputs 2\n  operation plus\n  bbox A\n  metainput A\n  rangeinput A\n  also_merge all\n  name Merge3\n  xpos 911\n  ypos 508\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyA\n  xpos 911\n  ypos 534\n }\n Dot {\n  name Dot37\n  xpos 945\n  ypos 608\n }\npush $N34914360\npush $N8e311d10\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeGetChroma3\n  xpos 1158\n  ypos -9\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox {{MergeR.bbox}}\n  metainput {{MergeR.metainput}}\n  rangeinput {{MergeR.rangeinput}}\n  name MergeChroma\n  xpos 1158\n  ypos 604\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Bchannels none\n  output apChroma\n  inject {{parent.MergeChroma.inject}}\n  invert_mask {{parent.MergeChroma.invert_mask}}\n  fringe {{parent.MergeChroma.fringe}}\n  mix {{parent.MergeChroma.mix}}\n  name MergeCopyChroma\n  xpos 1158\n  ypos 647\n }\n Copy {\n  inputs 2+1\n  from0 rgba.red\n  to0 rgba.alpha\n  maskChannelMask {{{parent.MergeChroma.maskChannelMask}}}\n  maskChannelInput {{{parent.MergeChroma.maskChannelInput}}}\n  inject {{parent.MergeChroma.inject}}\n  invert_mask {{parent.MergeChroma.invert_mask}}\n  fringe {{parent.MergeChroma.fringe}}\n  mix {{parent.MergeChroma.mix}}\n  name CopySingleAlpha\n  xpos 1158\n  ypos 703\n  disable {{!parent.process_alpha}}\n }\n Remove {\n  channels {{{parent.MergeCopyChroma.output}}}\n  name RemoveChroma\n  xpos 1158\n  ypos 741\n  disable {{parent.keep_multi_alpha}}\n }\n Output {\n  name Output1\n  xpos 1158\n  ypos 789\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChromaPremult.gizmo",
    "content": "add_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nGroup {\n name apChromaPremult\n help \"apChromaPremult v0.1\\nadrianpueyo.com, 2019\"\n knobChanged \"n=nuke.thisNode()\\nk=nuke.thisKnob()\\nkn=k.name()\\n\\nif kn == \\\"scale_x\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_y\\\"].setValue(k.value())\\nelif kn == \\\"scale_y\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_x\\\"].setValue(k.value())\\nelif kn == \\\"scale_linked\\\" and k.value():\\n    n\\[\\\"scale_y\\\"].setValue(n\\[\\\"scale_x\\\"].value())\\n    \"\n tile_color 0x736efdff\n addUserKnob {20 apChromaPremult}\n addUserKnob {41 channels l multiply T MergeRGBA.also_merge}\n addUserKnob {41 chroma l \"by <b><font color=#9292d2>multi-alpha\" T MergeCopyChroma.output}\n addUserKnob {26 version_author l \"\" t \"apChromaPremult v0.1\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChromaPremult v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 319\n  ypos 326\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 353\n  ypos 376\n }\nset N3cb1ec50 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 573\n  ypos 376\n }\nset N61f40c80 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 943\n  ypos 376\n }\nset N11fab120 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 943\n  ypos 436\n }\npush $N11fab120\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 1015\n  ypos 376\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 981\n  ypos 394\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma\n  xpos 981\n  ypos 432\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 1015\n  ypos 599\n }\nset N4c49fb00 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 1015\n  ypos 892\n }\npush $N4c49fb00\npush $N61f40c80\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 573\n  ypos 498\n }\nset N4ca9fa40 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 677\n  ypos 498\n }\nset N6828d220 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 782\n  ypos 498\n }\nset N4171d460 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 884\n  ypos 498\n }\n Multiply {\n  value {0 0 0 1}\n  name MultiplyKeepA\n  label \"\\[value value]\"\n  xpos 850\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos 850\n  ypos 589\n }\n Premult {\n  channels all\n  name Premult4\n  xpos 850\n  ypos 627\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 884\n  ypos 754\n }\npush $N4c49fb00\npush $N4171d460\n Multiply {\n  value {0 0 1 0}\n  name MultiplyKeepB\n  label \"\\[value value]\"\n  xpos 748\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name Copy3\n  xpos 748\n  ypos 589\n }\n Premult {\n  channels all\n  name Premult3\n  xpos 748\n  ypos 627\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 782\n  ypos 728\n }\npush $N4c49fb00\npush $N6828d220\n Multiply {\n  value {0 1 0 0}\n  name MultiplyKeepG\n  label \"\\[value value]\"\n  xpos 643\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.alpha\n  name Copy2\n  xpos 643\n  ypos 589\n }\n Premult {\n  channels all\n  name Premult2\n  xpos 643\n  ypos 627\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 677\n  ypos 702\n }\npush $N4c49fb00\npush $N4ca9fa40\n Multiply {\n  value {1 0 0 0}\n  name MultiplyKeepR\n  label \"\\[value value]\"\n  xpos 539\n  ypos 538\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy1\n  xpos 539\n  ypos 588\n }\n Premult {\n  channels all\n  name Premult1\n  xpos 539\n  ypos 626\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge1\n  xpos 539\n  ypos 698\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge2\n  xpos 539\n  ypos 724\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge3\n  xpos 539\n  ypos 750\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 573\n  ypos 854\n }\npush $N3cb1ec50\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeRGBA\n  selected true\n  xpos 319\n  ypos 844\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output apChroma\n  maskChannelMask {{{parent.MergeRGBA.maskChannelMask}}}\n  inject {{parent.MergeRGBA.inject}}\n  invert_mask {{parent.MergeRGBA.invert_mask}}\n  fringe {{parent.MergeRGBA.fringe}}\n  mix {{parent.MergeRGBA.mix}}\n  name MergeCopyChroma\n  xpos 319\n  ypos 882\n }\n Output {\n  name Output1\n  xpos 319\n  ypos 952\n }\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeChosen\n  xpos 1100\n  ypos 424\n  hide_input true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChromaTransformNew.gizmo",
    "content": "add_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nGroup {\n name apChromaTransform\n help \"apChromaBlur v0.1\\nadrianpueyo.com, 2019\"\n knobChanged \"n=nuke.thisNode()\\nk=nuke.thisKnob()\\nkn=k.name()\\n\\nif kn == \\\"scale_x\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_y\\\"].setValue(k.value())\\nelif kn == \\\"scale_y\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_x\\\"].setValue(k.value())\\nelif kn == \\\"scale_linked\\\" and k.value():\\n    n\\[\\\"scale_y\\\"].setValue(n\\[\\\"scale_x\\\"].value())\\n    \"\n tile_color 0x736efdff\n selected true\n addUserKnob {20 apChromaTransform}\n addUserKnob {41 channels T MergeRGBA.also_merge}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {19 translate_x l \"translate x\" R -100 100}\n translate_x 0\n addUserKnob {19 translate_y l \"translate y\" R -100 100}\n translate_y 0\n addUserKnob {19 rotate R -180 180}\n rotate 0\n addUserKnob {19 scale_x l \"scale x\" R 0 4}\n scale_x 1\n addUserKnob {19 scale_y l \"scale y\" R 0 4}\n scale_y 1\n addUserKnob {6 scale_linked l linked +STARTLINE}\n scale_linked true\n addUserKnob {19 skewX l \"skew X\" R -1 1}\n skewX 0\n addUserKnob {19 skewY l \"skew Y\" R -1 1}\n skewY 0\n addUserKnob {19 chroma_mix l mix}\n chroma_mix 1\n addUserKnob {41 skew_order l \"skew order\" T TransformR.skew_order}\n addUserKnob {41 center T TransformR.center}\n addUserKnob {41 invert_matrix l invert T TransformR.invert_matrix}\n addUserKnob {26 \"\"}\n addUserKnob {41 chroma l \"<b><font color=#9292d2>multi-alpha\" T MergeCopyChroma.output}\n addUserKnob {6 process_multi_alpha l \"process multi-alpha\" +STARTLINE}\n process_multi_alpha true\n addUserKnob {26 \"\"}\n addUserKnob {41 filter T TransformR.filter}\n addUserKnob {41 clamp -STARTLINE T TransformR.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T TransformR.black_outside}\n addUserKnob {41 motionblur T TransformR.motionblur}\n addUserKnob {41 shutter T TransformR.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T TransformR.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T TransformR.shuttercustomoffset}\n addUserKnob {41 maskChannelMask l \"mask \" T MergeRGBA.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeRGBA.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeRGBA.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeRGBA.fringe}\n addUserKnob {41 mix T MergeRGBA.mix}\n addUserKnob {26 version_author l \"\" t \"apChromaTransform v0.1\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChromaTransform v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 190\n  ypos 809\n  number 1\n }\nset N4e27e610 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 224\n  ypos 853\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 319\n  ypos 249\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 353\n  ypos 299\n }\nset N7c366390 [stack 0]\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 463\n  ypos 299\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 573\n  ypos 299\n }\nset N8cfb7bd0 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 683\n  ypos 299\n }\nset N72e18190 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 683\n  ypos 359\n }\npush $N72e18190\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 755\n  ypos 299\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 721\n  ypos 317\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma\n  xpos 721\n  ypos 355\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 755\n  ypos 401\n }\nset N7721fd10 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 755\n  ypos 436\n }\npush $N8cfb7bd0\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeCopyChromaFull1\n  xpos 539\n  ypos 426\n  disable {{!parent.process_multi_alpha}}\n }\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 573\n  ypos 498\n }\nset N86a36f50 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 677\n  ypos 498\n }\nset N479b7910 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 782\n  ypos 498\n }\nset N53968e70 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 884\n  ypos 498\n }\n Multiply {\n  value {0 0 0 1}\n  name MultiplyKeepA\n  label \"\\[value value]\"\n  xpos 850\n  ypos 539\n }\n Transform {\n  translate {{parent.translate_x.a} {parent.translate_y.a}}\n  rotate {{parent.rotate.a}}\n  scale {{parent.scale_x.a} {parent.scale_y.a}}\n  skewX {{parent.skewX.a}}\n  skewY {{parent.skewY.a}}\n  skew_order {{parent.TransformR.skew_order}}\n  center {{parent.TransformR.center} {parent.TransformR.center}}\n  invert_matrix {{parent.TransformR.invert_matrix}}\n  filter {{parent.TransformR.filter}}\n  clamp {{parent.TransformR.clamp}}\n  black_outside {{parent.TransformR.black_outside}}\n  motionblur {{parent.TransformR.motionblur}}\n  shutter {{parent.TransformR.shutter}}\n  shutteroffset {{parent.TransformR.shutteroffset}}\n  shuttercustomoffset {{parent.TransformR.shuttercustomoffset}}\n  name TransformA\n  xpos 850\n  ypos 631\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 884\n  ypos 749\n }\npush $N53968e70\n Multiply {\n  value {0 0 1 0}\n  name MultiplyKeepB\n  label \"\\[value value]\"\n  xpos 748\n  ypos 539\n }\n Transform {\n  translate {{parent.translate_x.b} {parent.translate_y.b}}\n  rotate {{parent.rotate.b}}\n  scale {{parent.scale_x.b} {parent.scale_y.b}}\n  skewX {{parent.skewX.b}}\n  skewY {{parent.skewY.b}}\n  skew_order {{parent.TransformR.skew_order}}\n  center {{parent.TransformR.center} {parent.TransformR.center}}\n  invert_matrix {{parent.TransformR.invert_matrix}}\n  filter {{parent.TransformR.filter}}\n  clamp {{parent.TransformR.clamp}}\n  black_outside {{parent.TransformR.black_outside}}\n  motionblur {{parent.TransformR.motionblur}}\n  shutter {{parent.TransformR.shutter}}\n  shutteroffset {{parent.TransformR.shutteroffset}}\n  shuttercustomoffset {{parent.TransformR.shuttercustomoffset}}\n  name TransformB\n  xpos 748\n  ypos 631\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 782\n  ypos 723\n }\npush $N479b7910\n Multiply {\n  value {0 1 0 0}\n  name MultiplyKeepG\n  label \"\\[value value]\"\n  xpos 643\n  ypos 539\n }\n Transform {\n  translate {{parent.translate_x.g} {parent.translate_y.g}}\n  rotate {{parent.rotate.g}}\n  scale {{parent.scale_x.g} {parent.scale_y.g}}\n  skewX {{parent.skewX.g}}\n  skewY {{parent.skewY.g}}\n  skew_order {{parent.TransformR.skew_order}}\n  center {{parent.TransformR.center} {parent.TransformR.center}}\n  invert_matrix {{parent.TransformR.invert_matrix}}\n  filter {{parent.TransformR.filter}}\n  clamp {{parent.TransformR.clamp}}\n  black_outside {{parent.TransformR.black_outside}}\n  motionblur {{parent.TransformR.motionblur}}\n  shutter {{parent.TransformR.shutter}}\n  shutteroffset {{parent.TransformR.shutteroffset}}\n  shuttercustomoffset {{parent.TransformR.shuttercustomoffset}}\n  name TransformG\n  xpos 643\n  ypos 631\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 677\n  ypos 697\n }\npush $N86a36f50\n Multiply {\n  value {1 0 0 0}\n  name MultiplyKeepR\n  label \"\\[value value]\"\n  xpos 539\n  ypos 538\n }\n Transform {\n  translate {{parent.translate_x.r} {parent.translate_y.r}}\n  rotate {{parent.rotate.r}}\n  scale {{parent.scale_x.r} {parent.scale_y.r}}\n  skewX {{parent.skewX.r}}\n  skewY {{parent.skewY.r}}\n  center {1024 576}\n  shutteroffset centred\n  name TransformR\n  xpos 539\n  ypos 631\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge1\n  xpos 539\n  ypos 693\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge2\n  xpos 539\n  ypos 719\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge3\n  xpos 539\n  ypos 745\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 573\n  ypos 813\n }\nset N7a967a30 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 573\n  ypos 853\n }\npush $N4e27e610\npush $N7a967a30\npush $N7721fd10\npush $N7c366390\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeCopyChromaFull\n  xpos 319\n  ypos 391\n  disable {{!parent.process_multi_alpha}}\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeRGBA\n  xpos 319\n  ypos 803\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels {{{output}}}\n  Bchannels none\n  output apChroma\n  maskChannelMask {{{parent.MergeRGBA.maskChannelMask}}}\n  inject {{parent.MergeRGBA.inject}}\n  invert_mask {{parent.MergeRGBA.invert_mask}}\n  fringe {{parent.MergeRGBA.fringe}}\n  mix {{parent.MergeRGBA.mix}}\n  name MergeCopyChroma\n  xpos 319\n  ypos 843\n  disable {{!parent.process_multi_alpha}}\n }\n Output {\n  name Output1\n  xpos 319\n  ypos 911\n }\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeChosen\n  xpos 840\n  ypos 347\n  hide_input true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apChromaUnpremult.gizmo",
    "content": "add_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nGroup {\n name apChromaUnpremult\n help \"apChromaUnpremult v0.1\\nadrianpueyo.com, 2019\"\n knobChanged \"n=nuke.thisNode()\\nk=nuke.thisKnob()\\nkn=k.name()\\n\\nif kn == \\\"scale_x\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_y\\\"].setValue(k.value())\\nelif kn == \\\"scale_y\\\" and n\\[\\\"scale_linked\\\"].value():\\n    n\\[\\\"scale_x\\\"].setValue(k.value())\\nelif kn == \\\"scale_linked\\\" and k.value():\\n    n\\[\\\"scale_y\\\"].setValue(n\\[\\\"scale_x\\\"].value())\\n    \"\n tile_color 0x736efdff\n addUserKnob {20 apChromaUnpremult}\n addUserKnob {41 channels l divide T MergeRGBA.also_merge}\n addUserKnob {41 chroma l \"by <b><font color=#9292d2>multi-alpha\" T MergeCopyChroma.output}\n addUserKnob {26 version_author l \"\" t \"apChromaUnpremult v0.1\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apChromaUnpremult v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Merge2 {\n  inputs 0\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  output {{{parent.MergeCopyChroma.output}}}\n  name MergeChosen\n  xpos 1100\n  ypos 404\n  hide_input true\n }\n Input {\n  inputs 0\n  name Input\n  xpos 319\n  ypos 306\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 353\n  ypos 356\n }\nset N41e26ae0 [stack 0]\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 573\n  ypos 356\n }\nset N39527690 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 943\n  ypos 356\n }\nset N4b39dcc0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 943\n  ypos 416\n }\npush $N4b39dcc0\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 1015\n  ypos 356\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 981\n  ypos 374\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels {{{parent.MergeCopyChroma.output}}}\n  Bchannels none\n  name MergeGetChroma\n  xpos 981\n  ypos 412\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[lindex \\[channels MergeChosen] 0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    return 1\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 1015\n  ypos 599\n }\nset N950ce3e0 [stack 0]\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos 1015\n  ypos 892\n }\npush $N950ce3e0\npush $N39527690\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 573\n  ypos 498\n }\nset Na64f7670 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 677\n  ypos 498\n }\nset Na64fc180 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 782\n  ypos 498\n }\nset N90ed73a0 [stack 0]\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 884\n  ypos 498\n }\n Multiply {\n  value {0 0 0 1}\n  name MultiplyKeepA\n  label \"\\[value value]\"\n  xpos 850\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy4\n  xpos 850\n  ypos 589\n }\n Unpremult {\n  channels all\n  name Unpremult4\n  xpos 850\n  ypos 626\n }\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos 884\n  ypos 738\n }\npush $N950ce3e0\npush $N90ed73a0\n Multiply {\n  value {0 0 1 0}\n  name MultiplyKeepB\n  label \"\\[value value]\"\n  xpos 748\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name Copy3\n  xpos 748\n  ypos 589\n }\n Unpremult {\n  channels all\n  name Unpremult3\n  xpos 748\n  ypos 627\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 782\n  ypos 712\n }\npush $N950ce3e0\npush $Na64fc180\n Multiply {\n  value {0 1 0 0}\n  name MultiplyKeepG\n  label \"\\[value value]\"\n  xpos 643\n  ypos 539\n }\n Copy {\n  inputs 2\n  from0 rgba.green\n  to0 rgba.alpha\n  name Copy2\n  xpos 643\n  ypos 589\n }\n Unpremult {\n  channels all\n  name Unpremult2\n  xpos 643\n  ypos 627\n }\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 677\n  ypos 686\n }\npush $N950ce3e0\npush $Na64f7670\n Multiply {\n  value {1 0 0 0}\n  name MultiplyKeepR\n  label \"\\[value value]\"\n  xpos 539\n  ypos 538\n }\n Copy {\n  inputs 2\n  from0 rgba.red\n  to0 rgba.alpha\n  name Copy1\n  xpos 539\n  ypos 588\n }\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos 539\n  ypos 626\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge1\n  xpos 539\n  ypos 682\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge2\n  xpos 539\n  ypos 708\n }\n Merge2 {\n  inputs 2\n  operation plus\n  also_merge all\n  name Merge3\n  xpos 539\n  ypos 734\n }\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 573\n  ypos 854\n }\npush $N41e26ae0\n Merge2 {\n  inputs 2\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeRGBA\n  xpos 319\n  ypos 844\n }\n Merge2 {\n  inputs 2\n  operation copy\n  Bchannels none\n  output apChroma\n  maskChannelMask {{{parent.MergeRGBA.maskChannelMask}}}\n  inject {{parent.MergeRGBA.inject}}\n  invert_mask {{parent.MergeRGBA.invert_mask}}\n  fringe {{parent.MergeRGBA.fringe}}\n  mix {{parent.MergeRGBA.mix}}\n  name MergeCopyChroma\n  xpos 319\n  ypos 882\n }\n Output {\n  name Output1\n  xpos 319\n  ypos 950\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apDespill.gizmo",
    "content": "Group {\n name apDespill\n help \"apDespill v2.0 by Adrian Pueyo\\n\\nGizmo to despill an image, with options to despill any hue (and not only the primaries), select different algorithms for de/respilling, and protect tones from the despill.\\n\\nIf you just want a basic despill, its default values should already be enough and the tool will avoid any extra calculations.\\n\\nv2 includes a new \\\"absolute\\\" mode which lets you basically perform a key, or do a \\\"despill to color\\\" operation. Also, the despill color, respill color and limit can now be plugged as image inputs if you wish, letting you perform a fully image-based despill or key, sort of iKeylight. Additionally, it allows you to perform the despill under a colorspace sandwich, for the artists who prefer to loop through different colorspaces in order to find one that works. Thanks to Tony Lyons the best feedback!\\n\\nadrianpueyo.com, 2014-2021\"\n onCreate \"n = nuke.thisNode()\\nn\\['tolerance'].setRange(0,2)\\nn\\['prot1_tolerance'].setFlag(0x00000004)\\nn\\['prot1_effect'].setFlag(0x00000004)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"color\\\":\\n    kv = k.getValue()\\n    custom_weight_labels = \\[\\\"green - blue\\\", \\\"red - blue\\\", \\\"red - green\\\", \\\" \\\"]\\n    n\\[\\\"custom_weight\\\"].setLabel(custom_weight_labels\\[int(kv)])\\n    n\\[\\\"pick\\\"].setVisible(k.getValue() == 3)\\nelif kn == \\\"mode\\\":\\n    n\\[\\\"custom_weight\\\"].setVisible(n\\[\\\"mode\\\"].getValue()==3)\\nelif kn in \\[\\\"out\\\",\\\"output_alpha\\\"]:\\n    n\\[\\\"respill_math\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0 or n\\[\\\"output_alpha\\\"].getValue()==1)\\n    n\\[\\\"respill_color\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0)\\n    n\\[\\\"inverted_spill_matte\\\"].setEnabled(n\\[\\\"output_alpha\\\"].value())\\nelif kn == \\\"prot1_activate\\\":\\n    protA = n\\[\\\"prot1_activate\\\"].value()\\n    n\\[\\\"prot1_preview\\\"].setEnabled(protA)\\n    for i in \\[\\\"prot1\\\", \\\"prot1_tolerance\\\", \\\"prot1_falloff\\\",\\\"prot1_effect\\\"]:\\n        n\\[i].setVisible(protA)\\nelif kn == \\\"inputChange\\\":\\n    n.knobs()\\[\\\"limit_channel\\\"].setVisible(n.input(3) is not None)\\n    n.knobs()\\[\\\"invert_limit_channel\\\"].setVisible(n.input(3) is not None)\\n    color_enabled = nuke.toNode(\\\"apDespillKernel\\\")\\[\\\"apDespillKernel_use_color_input\\\"].getValue()==0\\n    n\\[\\\"color\\\"].setEnabled(color_enabled)\\n    n.knobs()\\[\\\"pick\\\"].setEnabled(color_enabled)\\n    n\\[\\\"info_using_input_color\\\"].setVisible(not color_enabled)\\nelif kn == \\\"colorspace_shift\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_out\\\", \\\"illuminant_out\\\", \\\"primary_out\\\"]:\\n        n.knobs()\\[i].setEnabled(kv)\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setEnabled(kv and n\\[\\\"input_colorspace\\\"].value())\\n    n\\[\\\"input_colorspace\\\"].setEnabled(kv)\\nelif kn == \\\"input_colorspace\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setVisible(kv)\\n        n.knobs()\\[i].setEnabled(kv)\\nelif kn == \\\"imagebased\\\":\\n    kv = k.value()\\n    input_names = \\[\\\"color\\\",\\\"limit\\\",\\\"respill\\\"]\\n    if kv:\\n        for i_name in input_names:\\n            i_fullname = \\\"Input\\\"+i_name\\n            if not nuke.exists(i_fullname):\\n                i_node = nuke.nodes.Input()\\n                i_node\\[\\\"name\\\"].setValue(i_fullname)\\n            else:\\n                i_node = nuke.toNode(i_fullname)\\n            dot = nuke.toNode(\\\"Dot\\\"+i_name)\\n            i_node.setXYpos(dot.xpos(),dot.ypos()-40)\\n            dot.setInput(0,i_node)\\n    else:\\n        # If something connected, do nothing\\n        if not any(\\[n.input(i) for i in \\[2,3,4]]):\\n            for i_name in input_names:\\n                if nuke.exists(\\\"Input\\\"+i_name):\\n                    nuke.delete(nuke.toNode(\\\"Input\\\"+i_name))\\n        else:\\n            k.setValue(True)\"\n tile_color 0x8b8b8bff\n selected true\n addUserKnob {20 apDespill}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 imagebased l image-based t \"Show or hide image-based inputs.\\n\\nThis doesn't change anything internally except hiding inputs, just to avoid intimidating arrows on the node graph.\\n\\nNote: While any image-based input is connected, this won't let you hide them.\" +STARTLINE}\n addUserKnob {6 absolute_mode l \"absolute mode\" t \"Absolute mode performs a keying algorithm instead of a regular despill, so that you can do a \\\"spill to colour\\\" or even use this node as an image-based Keylight.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {4 color t \"Select a primary as a starting point, or custom to show RGB controls to select any color.\\n\\nNote: If an image is plugged on the color input, this will get overwritten by the input.\" M {red green blue custom \"\" \"\" \"\"}}\n color custom\n addUserKnob {26 info_using_input_color l \" \" -STARTLINE +HIDDEN T \"<i><font color=#AAA> (Using color from input)\"}\n addUserKnob {18 pick t \"Pick the color you'd like to use for the despill. \\n\\nPlease use ctrl/cmd+alt+click for picking.\\n\\nNOTE: If a despill color image input is plugged, this value will be ignored.\"}\n pick {0 1 0}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 pick_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 dfg_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {4 out l output t \"Quick switch to output the despilled image or the substracted one.\" M {despill spill}}\n addUserKnob {6 output_alpha l \"output spill matte in alpha\" t \"Output the spill luminance in the alpha channel.\" +STARTLINE}\n output_alpha true\n addUserKnob {6 inverted_spill_matte l inverted t \"Invert the output spill matte (in the alpha channel), especially useful when the despill is set to Absolute mode, in which case this will output a keying-like alpha.\" -STARTLINE}\n inverted_spill_matte true\n addUserKnob {4 mode l \"despill math\" t \"average = avg of other two channels\\nmaximum = max of other two channels\\nminimum = min of other two channels\\ncustom = select custom weights\" M {average maximum minimum custom \"\"}}\n addUserKnob {7 custom_weight l \" \" t \"-1 = only capped by the first channel\\n0 = capped by avg of both\\n1 = only capped by the second channel\" -STARTLINE +HIDDEN R -1 1}\n addUserKnob {26 \"\"}\n addUserKnob {6 colorspace_shift l \"alt colorspace\" t \"This allows for the popular artistic approach to refining the despill where you browse through colorspace conversions (mainly white point and primaries) and choose one that matches your desired despill bias.\\n\\n<b>Tip:</b> Double click on a dropdown and use the Page Up and Page Down keys on your keyboard to browse quickly through the items.\\n\\n<b>Note:</b> There's no need at all for the values of these dropdowns to match your working colorspace, so you can leave it as-is or tweak it if you prefer, regardless of the colorspace you're comping at (e.g. ACEScg). It is literally an artistic conversion prior to the despill algorithm that then gets reverted.\" +STARTLINE}\n colorspace_shift true\n addUserKnob {6 input_colorspace l \"input colorspace\" t \"Also tweak the input colorspace for the back and forth colorspace conversion. This is generally not needed however, as this colorspace conversion is generally only used for artistic purposes.\" -STARTLINE}\n addUserKnob {6 log_space l log t \"Perform Lin2Log -> Despill -> Log2Lin.\" -STARTLINE}\n addUserKnob {41 colorspace_in l \"in colorspace\" +DISABLED +HIDDEN T Colorspace1.colorspace_in}\n addUserKnob {41 illuminant_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.illuminant_in}\n addUserKnob {41 primary_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.primary_in}\n addUserKnob {41 colorspace_out l \"despill space\" T Colorspace1.colorspace_out}\n addUserKnob {41 illuminant_out l \"\" -STARTLINE T Colorspace1.illuminant_out}\n addUserKnob {41 primary_out l \"\" -STARTLINE T Colorspace1.primary_out}\n addUserKnob {26 \"\"}\n addUserKnob {7 hue_offset l \"hue offset\" t \"Rotate the despill vectors to despill an arbitrary tone other than the primaries or the picked color.\\nNote: A rotation of +-120 degrees is the same as selecting a different color channel.\" R -30 30}\n addUserKnob {7 tolerance l limit t \"Use this to multiply the hue tolerance (the limiter value). You can move it all the way down to 0 to completely remove a hue from your image.\\n\\n<b>NOTE:</b> If an image is plugged into the <i>limit</i> input, this will act as a multiplier.\" R 0 2}\n tolerance 1\n addUserKnob {41 limit_channel l \"limit channel\" +HIDDEN T CopyLimit.from0}\n addUserKnob {6 invert_limit_channel l invert t \"The recommended workflow for the image-based limit is keeping this invert turned on, so that the higher the value of the limit channel, the lower the limit gets.\" -STARTLINE +HIDDEN}\n invert_limit_channel true\n addUserKnob {6 prot1_activate l \"protect tones\" t \"Enable controls to select tones to protect from despilling.\" +STARTLINE}\n addUserKnob {6 prot1_preview l preview t \"Output the protected tones.\" -STARTLINE +DISABLED}\n addUserKnob {18 prot1 l protect t \"Pick the central hue to protect.\\n(ctrl/cmd+alt+click)\" +HIDDEN}\n prot1 {0 0 0}\n addUserKnob {6 prot1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 prot1_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 prot1_tolerance l tolerance t \"Amount of hues to include in the selection.\" +HIDDEN}\n prot1_tolerance 0.2\n addUserKnob {7 prot1_falloff l falloff t \"Falloff for the hue selection. A higher falloff will make hues apart from the picked one lose weight more quickly.\" +HIDDEN R 0 4}\n prot1_falloff 2\n addUserKnob {7 prot1_effect l effect t \"Multiplier for the hue protection, and for the spill limit value.\" +HIDDEN R 0 10}\n prot1_effect 1\n addUserKnob {26 respill_divider l \"\" +STARTLINE}\n addUserKnob {4 respill_math l \"spill math\" t \"Settings for the math for desaturating the the spill before adding it back.\" M {\"Rec 709\" \"Ccir 601\" \"Rec 2020\" Average Maximum \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {18 respill_color l \"respill color\" t \"RGB multiplier for the desaturated spill when adding it back.\\n\\nIf used on non-degrained plates (which should be avoided anyway), any value other than 1 here will most likely produce grain artifacts.\\n\\nNOTE: If a respill image input is plugged, this value will act as a multiplier.\" R 0 4}\n respill_color 1\n addUserKnob {6 respill_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 respill_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T Merge.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \"\" t \"apDespill v2.0\\n13 April, 2021\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apDespill v2.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2014-2021</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 273\n  ypos -250\n  number 1\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 307\n  ypos -147\n }\nset Nc6c65d00 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 307\n  ypos -117\n }\n Input {\n  inputs 0\n  name Inputimage\n  xpos 449\n  ypos -949\n }\nset Nc6c64f00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 788\n  ypos -877\n }\n Dot {\n  name Dot6\n  xpos 788\n  ypos -814\n }\nset Nc6c64100 [stack 0]\n Expression {\n  temp_name0 minval\n  temp_expr0 min(r,g,b)\n  temp_name1 lift\n  temp_expr1 minval<0\n  expr0 lift?r+abs(minval):r\n  expr1 lift?g+abs(minval):g\n  expr2 lift?b+abs(minval):b\n  expr3 lift?abs(minval):0\n  name Expression1\n  xpos 617\n  ypos -778\n }\nset Nc6c5b900 [stack 0]\n Dot {\n  name Dot7\n  selected true\n  xpos 651\n  ypos -256\n }\n Dot {\n  inputs 0\n  name Dotrespill\n  label Dotrespill\n  note_font \"Verdana Bold\"\n  xpos 1190\n  ypos -525\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_spill\n  xpos 1156\n  ypos -442\n }\n Dot {\n  inputs 0\n  name Dotcolor\n  label Dotcolor\n  note_font \"Verdana Bold\"\n  xpos 1080\n  ypos -593\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_color\n  xpos 1046\n  ypos -499\n }\n Dot {\n  inputs 0\n  name Dotlimit\n  label Dotlimit\n  note_font \"Verdana Bold\"\n  xpos 936\n  ypos -732\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle_limit\n  label \"\\[value in]\"\n  xpos 902\n  ypos -670\n }\npush $Nc6c5b900\npush $Nc6c64100\n Shuffle2 {\n  inputs 2\n  fromInput1 {{1} B A}\n  fromInput2 {{0} B A}\n  in2 rgba\n  mappings \"4 rgba.red 0 0 rgba.red 0 0 rgba.green 0 1 rgba.green 0 1 rgba.blue 0 2 rgba.blue 0 2 rgba.alpha 1 3 rgba.alpha 0 3\"\n  name Shuffle1\n  label \"\\[value in1]\"\n  xpos 754\n  ypos -774\n }\n Shuffle {\n  alpha black\n  name Shuffle\n  xpos 754\n  ypos -694\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyLimit\n  xpos 754\n  ypos -670\n }\n Invert {\n  channels alpha\n  name InvertLimit\n  xpos 754\n  ypos -611\n  disable {{!invert_limit_channel}}\n }\n Colorspace {\n  name Colorspace1\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -557\n  disable {{!parent.colorspace_shift}}\n }\n Log2Lin {\n  operation lin2log\n  name Log2Lin1\n  xpos 754\n  ypos -508\n  disable {{!log_space}}\n }\n BlinkScript {\n  inputs 3\n  recompileCount 94\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apDespillKernel\\\" iterate pixelWise 857ee5211c9dc340b8743026c9778403c1424a4ec1afa5c7990e55b71f93720c 4 \\\"src\\\" Read Point \\\"color_src\\\" Read Point \\\"spill_src\\\" Read Point \\\"dst\\\" Write Point 21 \\\"limit\\\" Float 1 AACAPw== \\\"shift\\\" Float 1 AAAAAA== \\\"weights\\\" Float 1 AAAAAA== \\\"outmode\\\" Int 1 AAAAAA== \\\"output_alpha\\\" Int 1 AAAAAA== \\\"output_alpha_inverted\\\" Int 1 AAAAAA== \\\"clr\\\" Int 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== \\\"respill_math\\\" Int 1 AAAAAA== \\\"respill_color\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_on\\\" Int 1 AAAAAA== \\\"prot1_preview\\\" Int 1 AAAAAA== \\\"prot1\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_tolerance\\\" Float 1 AAAAAA== \\\"prot1_mult\\\" Float 1 AAAAAA== \\\"prot1_falloff\\\" Float 1 AAAAAA== \\\"pickSpill\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"despill_method\\\" Int 1 AAAAAA== \\\"use_color_input\\\" Int 1 AAAAAA== \\\"use_spill_input\\\" Int 1 AAAAAA== \\\"use_limit_input\\\" Int 1 AAAAAA== 21 \\\"limit\\\" 1 1 \\\"shift\\\" 1 1 \\\"weights\\\" 1 1 \\\"outmode\\\" 1 1 \\\"output_alpha\\\" 1 1 \\\"output_alpha_inverted\\\" 1 1 \\\"clr\\\" 1 1 \\\"mode\\\" 1 1 \\\"respill_math\\\" 1 1 \\\"respill_color\\\" 4 1 \\\"prot1_on\\\" 1 1 \\\"prot1_preview\\\" 1 1 \\\"prot1\\\" 3 1 \\\"prot1_tolerance\\\" 1 1 \\\"prot1_mult\\\" 1 1 \\\"prot1_falloff\\\" 1 1 \\\"pickSpill\\\" 3 1 \\\"despill_method\\\" 1 1 \\\"use_color_input\\\" 1 1 \\\"use_spill_input\\\" 1 1 \\\"use_limit_input\\\" 1 1 7 \\\"_usePicked\\\" Int 1 1 AAAAAA== \\\"_clr\\\" Int 1 1 AAAAAA== \\\"_ret\\\" Int 1 1 AAAAAA== \\\"_hueShift\\\" Float 1 1 AAAAAA== \\\"_autoShift\\\" Float 1 1 AAAAAA== \\\"despillColor\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"vNorm\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"//---------------------------------------------------------\\n// apDespillKernel - apDespill v1.0 by Adrian Pueyo\\n//\\n// Despill an image, with options to despill any hue (and\\n// not only the primaries), select different algorithms for\\n// des/respilling, and protect tones from the despill.\\n//\\n// v2.0: Ability to plug image inputs for the controls,\\n// and to perform a full key and respill.\\n//\\n// adrianpueyo.com, 2014-2017\\n// ---------------------------------------------------------\\n\\ninline float y_convert_ccir601(const float4 in)\\{\\n  return in.x * 0.299f + in.y * 0.587f + in.z * 0.114f;\\n\\}\\n\\ninline float y_convert_rec709(const float4 in)\\{\\n  return in.x * 0.2125f + in.y * 0.7154f + in.z * 0.0721f;\\n\\}\\n\\ninline float y_convert_rec2020(const float4 in)\\{\\n  return in.x * 0.2627f + in.y * 0.678f + in.z * 0.0593f;\\n\\}\\n\\ninline float4 hueRotate(const float4 in, const float H)\\{\\n  if(H==0.0f)\\{\\n    return in;\\n  \\}else\\{\\n    float cosH = cos(H*PI/180);\\n    float sinH = sin(H*PI/180);\\n    float3 ret;\\n    ret.x = (in.x+in.y+in.z)*(1-cosH)/3 + in.x*cosH + (-in.y/sqrt(3.0f)+in.z/sqrt(3.0f))*sinH;\\n    ret.y = (in.x+in.y+in.z)*(1-cosH)/3 + in.y*cosH + (in.x/sqrt(3.0f)-in.z/sqrt(3.0f))*sinH;\\n    ret.z = (in.x+in.y+in.z)*(1-cosH)/3 + in.z*cosH + (-in.x/sqrt(3.0f)+in.y/sqrt(3.0f))*sinH;\\n    return float4(ret.x,ret.y,ret.z,in\\[3]);\\n  \\}\\n\\}\\n\\nfloat3 vecToPlane(float3 v1, float3 v2 = float3(1.0f,1.0f,1.0f))\\{\\n  float3 v1onv2;\\n  v1onv2 = v2 * float((float(dot(v2,v1))/float(dot(v2,v2)))); //Projection of vector on another (plane's normal)\\n  return v1-v1onv2; //Projection of vector on plane\\n\\}\\n\\ninline float3 myCross(float3 a, float3 b)\\{\\n  return float3(float(a.y*b.z-a.z*b.y),float(a.z*b.x-a.x*b.z),float(a.x*b.y-a.y*b.x));\\n\\}\\n\\ninline float colorAngle(const float3 v1, const float3 v2)\\{\\n  const float3 vN=float3(1.0f,1.0f,1.0f);\\n  float ang = acos(float(dot(v1,v2))/float(sqrt(dot(v1,v1)*dot(v2,v2))));\\n  float3 crs = myCross(v1,v2);\\n  if (dot(vN, crs) > 0) \\{\\n    ang = -ang;\\n  \\}\\n  return ang;\\n\\}\\n\\n//Main function to calculate the despill for a float4 colour. If prot1_preview is True, returns the prot1 result instead.\\ninline float4 apDespillMain(float4 src_color, float hueShift, int clr, int mode, float limit, float weights, int prot1_preview, int prot1_on, float3 prot1, float prot1_tolerance, float prot1_mult, float prot1_falloff)\\{\\n    //1. HueRotate IN\\n    float4 despilled = hueRotate(src_color, hueShift);\\n\\n    //2. Calculate the limit\\n    float resultLimit = 0.0f;\\n    int2 others;\\n    if(clr==0)\\{//If red (and if _usePicked, also set red)\\n      others = int2(1,2);\\n    \\}else if(clr==1)\\{\\n      others=int2(0,2);\\n    \\}else if(clr==2)\\{\\n      others=int2(0,1);\\n    \\}\\n\\n    if(mode==0)\\{//average\\n      resultLimit = (despilled\\[others\\[0]]+despilled\\[others\\[1]])/2;\\n    \\}else if(mode==1)\\{//max\\n      resultLimit = max(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else if(mode==2)\\{//min\\n      resultLimit = min(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else\\{//custom\\n      resultLimit = despilled\\[others\\[0]]*weights+despilled\\[others\\[1]]*(1-weights);\\n    \\}\\n\\n    //3. Protect tones\\n    float prot1_result;\\n    if(prot1_on==1&&(prot1\\[0]!=prot1\\[1]||prot1\\[0]!=prot1\\[2]||prot1\\[1]!=prot1\\[2]))\\{\\n      float cos_prot1_angle;\\n      cos_prot1_angle = (src_color\\[0]*prot1\\[0]+src_color\\[1]*prot1\\[1]+src_color\\[2]*prot1\\[2]) / (sqrt(prot1\\[0]*prot1\\[0]+prot1\\[1]*prot1\\[1]+prot1\\[2]*prot1\\[2]) * sqrt(src_color\\[0]*src_color\\[0]+src_color\\[1]*src_color\\[1]+src_color\\[2]*src_color\\[2]));\\n      prot1_result = pow(clamp(cos_prot1_angle,0.0f,1.0f),1/pow(prot1_tolerance,prot1_falloff));\\n      resultLimit = resultLimit*(1+prot1_result*prot1_mult);\\n    \\}\\n\\n    //4. Calculate the despill and HueRotate OUT\\n    for (int component = 0; component < 3; component++)\\{\\n      despilled\\[component] = component==clr?min(despilled\\[component],resultLimit*limit):despilled\\[component];\\n    \\}\\n    despilled = hueRotate(despilled,-hueShift);\\n    despilled\\[3] = prot1_result;\\n    return despilled;\\n\\}\\n\\ninline float getLuma(float4 src_color, int luma_math)\\{\\n  float luma;\\n  if(luma_math==0)\\{\\n    luma = y_convert_rec709(src_color);\\n  \\}else if(luma_math==1)\\{\\n    luma = y_convert_ccir601(src_color);\\n  \\}else if(luma_math==2)\\{\\n    luma = y_convert_rec2020(src_color);    \\n  \\}else if(luma_math==3)\\{\\n    luma = (src_color\\[0]+src_color\\[1]+src_color\\[2])/3;\\n  \\}else\\{\\n    luma = max(max(src_color\\[0],src_color\\[1]),src_color\\[2]);\\n  \\}\\n  return luma;\\n\\}\\n\\nkernel apDespillKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> color_src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> spill_src; //Acts as a multiplier for the respill color\\n  Image<eWrite> dst;\\n\\n  param:\\n    float limit;\\n    float shift;\\n    float weights;\\n    int outmode;//0=despill,1=spill\\n    int output_alpha;\\n    int output_alpha_inverted;\\n    int clr; //0=red,1=green,2=blue\\n    int mode; //0=average,1=maximum,2=minimum,3=custom\\n    int respill_math; //0=Rec709,1=Ccir601,2=Avg,3=Max\\n    float4 respill_color;\\n    int prot1_on;\\n    int prot1_preview;\\n    float3 prot1;\\n    float prot1_tolerance;\\n    float prot1_mult;\\n    float prot1_falloff;\\n    float3 pickSpill;\\n    int despill_method; //0=despill,1=key/\\\"absolute\\\"\\n\\n    int use_color_input;\\n    int use_spill_input;\\n    int use_limit_input; //Should be shuffled in the src's alpha\\n\\n  local:\\n    int _usePicked;\\n    int _clr;\\n    int _ret;\\n    float _hueShift;\\n    float _autoShift;\\n    float3 despillColor;\\n    float3 vNorm;\\n\\n  void define() \\{\\n    defineParam(limit, \\\"limit\\\", 1.0f);\\n    defineParam(shift, \\\"shift\\\", 0.0f);\\n  \\}\\n\\n  void init() \\{\\n    //1. Calculate which color to affect\\n    _ret = 0;\\n    if(use_color_input==1)\\{\\n      _clr = 0;\\n      _usePicked = 1;\\n    \\}else if(clr!=3)\\{//red green or blue\\n      _usePicked = 0;\\n      _clr = clr;\\n    \\}else if(pickSpill.x==pickSpill.y && pickSpill.x==pickSpill.z)\\{\\n      _ret = 1;//if \\\"custom\\\" selected but has a gray value, avoid any calculations\\n    \\}else\\{\\n      _usePicked = 1;\\n      _clr = 0;\\n    \\}\\n    vNorm = float3(1.0f,1.0f,1.0f);\\n    if(use_color_input==0)\\{\\n      //2. Calculate the necessary hue shift\\n      _autoShift = 0.0f;\\n      if(_usePicked==1)\\{\\n        _autoShift = colorAngle(vecToPlane(pickSpill,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n        _autoShift = _autoShift*180/PI;//to deg\\n      \\}\\n      _hueShift = shift-_autoShift;\\n    \\}\\n  \\}\\n\\n  void process()\\{\\n    if(_ret == 1)\\{ dst()=src(); return; \\} //Avoid any calculations if no despill selected\\n\\n    //0. If color from input, calculate the necessary hue shift\\n    float hueShift = 0.0f, autoShift = 0.0f;\\n    float3 despillColor;\\n    if(use_color_input==1)\\{\\n      despillColor = float3(color_src(0),color_src(1),color_src(2));\\n      autoShift = colorAngle(vecToPlane(despillColor,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n      autoShift = autoShift*180/PI;//to deg\\n      hueShift = shift-autoShift;\\n    \\}else\\{\\n      if(_usePicked == 1)\\{\\n        despillColor = pickSpill;\\n      \\}else\\{\\n        despillColor = float3(_clr==0?1.0f:0.0f,_clr==1?1.0f:0.0f,_clr==2?1.0f:0.0f);\\n      \\}\\n      \\n      hueShift = _hueShift;\\n    \\}\\n\\n    float limit_result = use_limit_input==1?limit*src(3):limit;\\n\\n    //1. Despill the source image\\n    float4 despilled = apDespillMain(src(), hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n    if(prot1_preview==1 && prot1_on==1)\\{\\n      dst() = src()*clamp(despilled\\[3]*prot1_mult,0.0f,1.0f);\\n      return;\\n    \\}\\n    float4 spill = src()-despilled;\\n    float spill_luma = getLuma(spill, respill_math);\\n\\n    //2. Process the key if key method selected\\n    float4 result;\\n    float4 despilled_full, spill_full; //Will account for the key if method selected is key\\n    float spill_luma_full;\\n    if(despill_method==0)\\{\\n      //Despill Method = Despill\\n      despilled_full = despilled;\\n      spill_full = spill;\\n      spill_luma_full = spill_luma;\\n    \\}else\\{\\n      //Despill Method = Key\\n      float4 despillColor4 = float4(despillColor.x,despillColor.y,despillColor.z,1.0f); //For simplicity\\n\\n      //2.1. Despill the picked despill colour itself, for normalizing the spill\\n      float4 pickSpill_despilled = apDespillMain(despillColor4, hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n      float4 pickSpill_spill = despillColor4-pickSpill_despilled;\\n      float pickSpill_spill_luma = getLuma(pickSpill_spill, respill_math);\\n\\n      spill_luma_full = pickSpill_spill_luma == 0? 0:spill_luma/pickSpill_spill_luma;\\n      spill_full = despillColor4*spill_luma_full;\\n      despilled_full = src()-spill_full;\\n    \\}\\n\\n\\n    float4 respill_color_result = use_spill_input==1?spill_src()*respill_color:respill_color;\\n    //3. Output\\n    if(outmode==0)\\{ //Despill\\n      result = despilled_full+spill_luma_full*respill_color_result;\\n    \\}else\\{ //Spill\\n      result = spill_full;\\n    \\}\\n\\n    if(output_alpha==0)\\{\\n      result\\[3]=src(3);\\n    \\}else\\{\\n      if(output_alpha_inverted == 0)\\{\\n        result\\[3]=spill_luma_full;\\n      \\}else\\{\\n        result\\[3]=1-spill_luma_full;\\n      \\}\\n    \\}\\n\\n    dst() = result;\\n\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  apDespillKernel_limit {{parent.tolerance}}\n  apDespillKernel_shift {{parent.hue_offset}}\n  apDespillKernel_weights {{(parent.custom_weight+1)/2}}\n  apDespillKernel_outmode {{parent.out}}\n  apDespillKernel_output_alpha {{parent.output_alpha}}\n  apDespillKernel_output_alpha_inverted {{parent.inverted_spill_matte}}\n  apDespillKernel_clr {{parent.color}}\n  apDespillKernel_mode {{parent.mode}}\n  apDespillKernel_respill_math {{parent.respill_math}}\n  apDespillKernel_respill_color {{parent.respill_color.r} {parent.respill_color.g} {parent.respill_color.b} 1}\n  apDespillKernel_prot1_on {{parent.prot1_activate}}\n  apDespillKernel_prot1_preview {{parent.prot1_preview}}\n  apDespillKernel_prot1 {{parent.prot1} {parent.prot1} {parent.prot1}}\n  apDespillKernel_prot1_tolerance {{parent.prot1_tolerance}}\n  apDespillKernel_prot1_mult {{parent.prot1_effect}}\n  apDespillKernel_prot1_falloff {{parent.prot1_falloff}}\n  apDespillKernel_pickSpill {{parent.pick} {parent.pick} {parent.pick}}\n  apDespillKernel_despill_method {{parent.absolute_mode}}\n  apDespillKernel_use_color_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_spill_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 2].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_limit_input {{\"\\[exists parent.input3]\"}}\n  rebuild_finalise \"\"\n  name apDespillKernel\n  xpos 754\n  ypos -448\n }\n Log2Lin {\n  name Log2Lin2\n  xpos 754\n  ypos -378\n  disable {{!log_space}}\n }\n Colorspace {\n  channels {{{parent.Colorspace5.channels}}}\n  colorspace_in {{parent.Colorspace1.colorspace_out}}\n  illuminant_in {{parent.Colorspace1.illuminant_out}}\n  primary_in {{parent.Colorspace1.primary_out}}\n  colorspace_out {{parent.Colorspace1.colorspace_in}}\n  illuminant_out {{parent.Colorspace1.illuminant_in}}\n  primary_out {{parent.Colorspace1.primary_in}}\n  name Colorspace2\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -354\n  disable {{!parent.colorspace_shift}}\n }\n MergeExpression {\n  inputs 2\n  expr0 Br-Aa\n  expr1 Bg-Aa\n  expr2 Bb-Aa\n  name MergeExpression1\n  selected true\n  xpos 754\n  ypos -238\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 788\n  ypos -147\n }\nset Nc6bf3200 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 788\n  ypos -117\n }\npush $Nc6c65d00\npush $Nc6bf3200\npush $Nc6c64f00\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge\n  xpos 449\n  ypos -150\n }\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  maskChannelMask {{{parent.Merge.maskChannelMask}}}\n  maskChannelInput {{{parent.Merge.maskChannelInput}}}\n  inject {{parent.Merge.inject}}\n  invert_mask {{parent.Merge.invert_mask}}\n  fringe {{parent.Merge.fringe}}\n  name CopyAlpha\n  xpos 449\n  ypos -126\n  disable {{!parent.output_alpha}}\n }\n Output {\n  name Output\n  xpos 449\n  ypos -46\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apDirLight.gizmo",
    "content": "Group {\n name apDirLight\n help \"Simulate a simple directional/infinite light through a normal pass, by picking a normal color and then tweaking the radius, falloff and hardness of the light.\\n\\napDirLight v0.2 by Adrian Pueyo\\nadrianpueyo.com, 2016\"\n knobChanged \"\\nif int(nuke.thisNode()\\['theOutput'].getValue())==1:\\n    nuke.thisNode()\\['color'].setEnabled(True)\\n    nuke.thisNode()\\['intensity'].setEnabled(True)\\nelse:\\n    nuke.thisNode()\\['color'].setEnabled(False)\\n    nuke.thisNode()\\['intensity'].setEnabled(False)\\n\"\n selected true\n addUserKnob {20 apDirLight}\n addUserKnob {41 in l \"input normals\" T ShuffleNormals.in}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {41 pick T CalcLight.pick}\n addUserKnob {7 radius t \"Radius of the DirLight around the picked color.\" R 0 2}\n radius 0.5\n addUserKnob {7 falloff t \"Inverse gamma of the DirLight.\" R 0 5}\n falloff 1\n addUserKnob {7 hardness t \"Brings black point and white point closer together, to create a hard center.\"}\n addUserKnob {4 theOutput l output t \"Output the light in the alpha channel or in the rgb by choosing its color/gain.\" M {alpha rgb}}\n addUserKnob {18 color t \"Set a rgb color to the DirLight.\" +DISABLED}\n color 1\n addUserKnob {6 color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 intensity t \"Multiplier for the color.\" +DISABLED R 0 3}\n intensity 1\n addUserKnob {26 copyright l \"\" +STARTLINE T \"\\napDirLight v0.2 - adrianpueyo.com, 2016.\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -164\n  ypos 44\n  number 1\n }\n Input {\n  inputs 0\n  name InputN\n  xpos -54\n  ypos -131\n }\n Shuffle {\n  in rgb\n  name ShuffleNormals\n  xpos -54\n  ypos -107\n }\n Expression {\n  temp_name0 cosA\n  temp_expr0 (r*pick.r+g*pick.g+b*pick.b)/(sqrt(r*r+g*g+b*b)*sqrt(pick.r*pick.r+pick.g*pick.g+pick.b*pick.b))\n  expr3 1-pow(clamp(cosA),1/pow(radius,5))\n  name CalcLight\n  xpos -54\n  ypos -83\n  addUserKnob {20 Picker}\n  addUserKnob {18 pick}\n  pick {1 1 1}\n  addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n Gamma {\n  channels alpha\n  value {{parent.falloff}}\n  name Gamma\n  xpos -54\n  ypos -59\n }\n Grade {\n  channels alpha\n  blackpoint {{parent.hardness>1?0.5:parent.hardness<0?0:parent.hardness/2}}\n  whitepoint {{parent.hardness>1?0.5:parent.hardness<0?1:1-parent.hardness/2}}\n  name GradeHardness\n  xpos -54\n  ypos -27\n }\n Invert {\n  channels alpha\n  name Invert\n  xpos -54\n  ypos 5\n }\n ChannelMerge {\n  inputs 2\n  operation multiply\n  name ChannelMergeMask\n  xpos -54\n  ypos 35\n  disable {{\"!\\[exists parent.input1]\"}}\n }\nset N193debd0 [stack 0]\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  alpha black\n  name ShuffleRGB\n  xpos 43\n  ypos 44\n }\n Grade {\n  white {{parent.color} {parent.color} {parent.color} {parent.color}}\n  multiply {{parent.intensity}}\n  name GradeRGB\n  xpos 43\n  ypos 77\n }\npush $N193debd0\n Switch {\n  inputs 2\n  which {{parent.theOutput}}\n  name SwitchRGB\n  xpos -54\n  ypos 77\n }\n Output {\n  name Output\n  xpos -54\n  ypos 101\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apEdgeCrush.gizmo",
    "content": "Group {\n name apEdgeCrush\n help \"apEdgeCrush by Adrian Pueyo\"\n knobChanged \"n=nuke.thisNode()\\nk=nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"use_input_channels\\\":\\n    n.knobs()\\[\\\"pattern_channel\\\"].setEnabled(not bool(k.getValue()))\\nelif kn == \\\"inputChange\\\":\\n    n.knobs()\\[\\\"use_input_channels\\\"].setEnabled(n.input(1) is not None)\\n    n.knobs()\\[\\\"pattern_channel\\\"].setEnabled(\\n            n.input(1) is not None\\n            and not bool(n\\[\\\"use_input_channels\\\"].getValue())\\n    )\\n\"\n tile_color 0x848484ff\n selected true\n addUserKnob {20 apEdgeCrush}\n addUserKnob {26 \"\" l \"Local GPU:\" T \"\"}\n addUserKnob {41 gpuName l \"\" -STARTLINE T apEdgeCrushKernel1.gpuName}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T apEdgeCrushKernel1.useGPUIfAvailable}\n addUserKnob {41 vectorize l \"Vectorize on CPU\" -STARTLINE T apEdgeCrushKernel1.vectorize}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 text l \"<b>Edge Crush\"}\n addUserKnob {14 amount R 0 100}\n amount 30\n addUserKnob {4 direction t \"<li><b>forward:</b> image is displaced horizontally and vertically using the pattern as a mask.\\n<b>backward:</b> same happens but using an inverse direction on the vectors.\\n<b>both:</b> the process happens twice. First forward and then backward.\" M {forward backward both \"\" \"\" \"\" \"\" \"\" \"\"}}\n direction both\n addUserKnob {6 reverse_order l \"reverse order\" t \"Enable to distort vertically and then horizontally. Nice to use for aesthetic reasons (to see which result you prefer).\" -STARTLINE}\n addUserKnob {7 grow_bbox l \"grow bbox\" t \"Increase this to manually compensate for bits that fall outside the edges.\" R 0 200}\n addUserKnob {6 limit_overscan l \"limit overscan\" t \"Enable to clip the bounding box from growing into the overscan more than a certain amount of pixels.\" +STARTLINE}\n limit_overscan true\n addUserKnob {7 overscan_limit l \"\" t \"If limit overscan is enabled, this is the max. amount of pixels that that the bounding box can grow into the overscan before getting clipped.\" -STARTLINE R 0 200}\n overscan_limit 100\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {26 text_1 l <b>Pattern}\n addUserKnob {41 pattern_channel l channel +DISABLED T CopyMatte.from0}\n addUserKnob {6 use_input_channels l \"use input channels\" t \"Use each channel as a distortion pattern to the corresponding image channel, instead of using only the alpha.\" -STARTLINE +DISABLED}\n addUserKnob {41 blur T Blur1.size}\n addUserKnob {41 preview_pattern l preview T preview_noise}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 \"\" l mask T \"\"}\n addUserKnob {41 maskChannelMask l \"\" -STARTLINE T Merge1.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge1.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge1.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge1.fringe}\n addUserKnob {41 mix T Merge1.mix}\n addUserKnob {26 version_author l \" \" T \"<span style=\\\"color:#666\\\"><br/><b>apEdgeCrush v0.5</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2017-2023</span>\"}\n addUserKnob {20 Noise}\n addUserKnob {26 noise_info l \" \" T \"<i>(Use this tab if you don't input a pattern)\\n \"}\n addUserKnob {6 preview_noise l preview +STARTLINE}\n addUserKnob {41 type T Noise1.type}\n addUserKnob {41 size l x/ysize T Noise1.size}\n addUserKnob {41 zoffset l z T Noise1.zoffset}\n addUserKnob {41 octaves T Noise1.octaves}\n addUserKnob {41 nyquist l \"clip at Nyquist limit\" -STARTLINE T Noise1.nyquist}\n addUserKnob {41 lacunarity T Noise1.lacunarity}\n addUserKnob {41 gain T Noise1.gain}\n addUserKnob {41 gamma T Noise1.gamma}\n addUserKnob {26 space l \"\" +STARTLINE T \" \"}\n addUserKnob {26 noise_transform_txt l <b>Transform}\n addUserKnob {41 translate T Noise1.translate}\n addUserKnob {41 rotate T Noise1.rotate}\n addUserKnob {41 scale T Noise1.scale}\n}\n Input {\n  inputs 0\n  name Inputimg\n  xpos -432\n  ypos -378\n }\nset N109f20b0 [stack 0]\npush $N109f20b0\n Merge2 {\n  inputs 2\n  operation copy\n  name Merge2\n  label \"Copy ch to rgba\"\n  xpos -314\n  ypos -382\n }\n AdjBBox {\n  numpixels {{abs(parent.amount)+2} {abs(parent.amount)+2}}\n  name AdjBBox1\n  xpos -314\n  ypos -350\n }\n AdjBBox {\n  numpixels {{parent.grow_bbox}}\n  name AdjBBox2\n  xpos -314\n  ypos -326\n }\nset N1aa1e7b0 [stack 0]\n Noise {\n  cliptype bbox\n  replace true\n  size 30\n  center {960 540}\n  name Noise1\n  xpos -235\n  ypos -278\n }\npush $N1aa1e7b0\n Input {\n  inputs 0\n  name Inputpattern\n  xpos -79\n  ypos -392\n  number 1\n }\nset Ncf71f7b0 [stack 0]\npush $Ncf71f7b0\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  channels rgba\n  bbox B\n  name CopyMatte\n  xpos -79\n  ypos -368\n  disable {{!parent.use_input_channels}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -79\n  ypos -326\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name ShuffleAlphaOnly\n  xpos -79\n  ypos -302\n  disable {{parent.use_input_channels}}\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name SwitchPattern\n  xpos -79\n  ypos -278\n }\n Blur {\n  channels rgba\n  name Blur1\n  xpos -79\n  ypos -254\n  disable {{size==0}}\n }\nset N108d21d0 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos -45\n  ypos 33\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos -542\n  ypos -26\n  number 2\n }\npush $N108d21d0\n Grade {\n  channels rgba\n  white 2\n  add -0.5\n  black_clamp false\n  name Grade3\n  xpos -165\n  ypos -198\n }\n Multiply {\n  channels rgba\n  value -1\n  name MultiplyInvert\n  xpos -165\n  ypos -174\n  disable {{parent.amount.w>=0}}\n }\n Clamp {\n  channels rgba\n  minimum -1\n  name Clamp3\n  xpos -165\n  ypos -150\n }\nset N1080aee0 [stack 0]\npush $N1080aee0\npush $N1080aee0\npush $N1080aee0\npush $N1aa1e7b0\n BlinkScript {\n  inputs 2\n  recompileCount 66\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apEdgeCrushKernel\\\" iterate pixelWise 859a1c49670895fa1438357276cb89b54996b1574609837fb9d90ccdf486a446 3 \\\"src\\\" Read Ranged1D \\\"mask\\\" Read Point \\\"dst\\\" Write Point 3 \\\"amount\\\" Float 1 AAAAAA== \\\"axis\\\" Int 1 AAAAAA== \\\"inverse\\\" Int 1 AAAAAA== 3 \\\"amount\\\" 1 1 \\\"axis\\\" 1 1 \\\"inverse\\\" 1 1 3 \\\"srcrangedAxisMask\\\" Int 1 1 AAAAAA== \\\"srcrangeMin\\\" Int 1 1 AAAAAA== \\\"srcrangeMax\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"#define lerp(p1, p2, f) ((p1)*(f) + (p2)*(1.0f-(f)))\\n\\n\\nkernel apEdgeCrushKernel : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eRead, eAccessRanged1D, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float amount;\\n    int axis;\\n    int inverse;\\n\\n  void init() {\\n    src.setRange(-int(ceil(amount)), int(ceil(amount)));\\n    src.setAxis(axis?eY:eX);\\n  }\\n  void process() {\\n    float4 pixelPos = mask() * amount;\\n    pixelPos = inverse?-pixelPos:pixelPos;\\n    float4 result;\\n    for(int i=0;i<4;i++){\\n      result[i] = lerp(src(-int(floor(pixelPos[i])),i),src(-int(ceil(pixelPos[i])),i),pixelPos[i]<0.0f?fabs(fmod(pixelPos[i], 1.0f)):1.0f-fmod(pixelPos[i], 1.0f));\\n    }\\n    dst() = result;\\n  }\\n};\\n\"\n  rebuild \"\"\n  apEdgeCrushKernel_amount {{apEdgeCrushKernel_axis?abs(parent.amount.h):abs(parent.amount.w)}}\n  apEdgeCrushKernel_axis {{parent.reverse_order}}\n  rebuild_finalise \"\"\n  name apEdgeCrushKernel1\n  xpos -314\n  ypos -154\n  disable {{\"(parent.amount.w==0 && parent.amount.h==0) || parent.direction==1\"}}\n }\n BlinkScript {\n  inputs 2\n  recompileCount 66\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apEdgeCrushKernel\\\" iterate pixelWise 859a1c49670895fa1438357276cb89b54996b1574609837fb9d90ccdf486a446 3 \\\"src\\\" Read Ranged1D \\\"mask\\\" Read Point \\\"dst\\\" Write Point 3 \\\"amount\\\" Float 1 AAAAAA== \\\"axis\\\" Int 1 AAAAAA== \\\"inverse\\\" Int 1 AAAAAA== 3 \\\"amount\\\" 1 1 \\\"axis\\\" 1 1 \\\"inverse\\\" 1 1 3 \\\"srcrangedAxisMask\\\" Int 1 1 AAAAAA== \\\"srcrangeMin\\\" Int 1 1 AAAAAA== \\\"srcrangeMax\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"#define lerp(p1, p2, f) ((p1)*(f) + (p2)*(1.0f-(f)))\\n\\n\\nkernel apEdgeCrushKernel : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eRead, eAccessRanged1D, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float amount;\\n    int axis;\\n    int inverse;\\n\\n  void init() {\\n    src.setRange(-int(ceil(amount)), int(ceil(amount)));\\n    src.setAxis(axis?eY:eX);\\n  }\\n  void process() {\\n    float4 pixelPos = mask() * amount;\\n    pixelPos = inverse?-pixelPos:pixelPos;\\n    float4 result;\\n    for(int i=0;i<4;i++){\\n      result[i] = lerp(src(-int(floor(pixelPos[i])),i),src(-int(ceil(pixelPos[i])),i),pixelPos[i]<0.0f?fabs(fmod(pixelPos[i], 1.0f)):1.0f-fmod(pixelPos[i], 1.0f));\\n    }\\n    dst() = result;\\n  }\\n};\\n\"\n  useGPUIfAvailable {{parent.apEdgeCrushKernel1.useGPUIfAvailable}}\n  vectorize {{parent.apEdgeCrushKernel1.vectorize}}\n  rebuild \"\"\n  apEdgeCrushKernel_amount {{apEdgeCrushKernel_axis?abs(parent.amount.h):abs(parent.amount.w)}}\n  apEdgeCrushKernel_axis {{!parent.reverse_order}}\n  rebuild_finalise \"\"\n  name apEdgeCrushKernel2\n  xpos -314\n  ypos -122\n  disable {{\"(parent.amount.w==0 && parent.amount.h==0) || parent.direction==1\"}}\n }\n BlinkScript {\n  inputs 2\n  recompileCount 66\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apEdgeCrushKernel\\\" iterate pixelWise 859a1c49670895fa1438357276cb89b54996b1574609837fb9d90ccdf486a446 3 \\\"src\\\" Read Ranged1D \\\"mask\\\" Read Point \\\"dst\\\" Write Point 3 \\\"amount\\\" Float 1 AAAAAA== \\\"axis\\\" Int 1 AAAAAA== \\\"inverse\\\" Int 1 AAAAAA== 3 \\\"amount\\\" 1 1 \\\"axis\\\" 1 1 \\\"inverse\\\" 1 1 3 \\\"srcrangedAxisMask\\\" Int 1 1 AAAAAA== \\\"srcrangeMin\\\" Int 1 1 AAAAAA== \\\"srcrangeMax\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"#define lerp(p1, p2, f) ((p1)*(f) + (p2)*(1.0f-(f)))\\n\\n\\nkernel apEdgeCrushKernel : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eRead, eAccessRanged1D, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float amount;\\n    int axis;\\n    int inverse;\\n\\n  void init() {\\n    src.setRange(-int(ceil(amount)), int(ceil(amount)));\\n    src.setAxis(axis?eY:eX);\\n  }\\n  void process() {\\n    float4 pixelPos = mask() * amount;\\n    pixelPos = inverse?-pixelPos:pixelPos;\\n    float4 result;\\n    for(int i=0;i<4;i++){\\n      result[i] = lerp(src(-int(floor(pixelPos[i])),i),src(-int(ceil(pixelPos[i])),i),pixelPos[i]<0.0f?fabs(fmod(pixelPos[i], 1.0f)):1.0f-fmod(pixelPos[i], 1.0f));\\n    }\\n    dst() = result;\\n  }\\n};\\n\"\n  useGPUIfAvailable {{parent.apEdgeCrushKernel1.useGPUIfAvailable}}\n  vectorize {{parent.apEdgeCrushKernel1.vectorize}}\n  rebuild \"\"\n  apEdgeCrushKernel_amount {{apEdgeCrushKernel_axis?abs(parent.amount.h):abs(parent.amount.w)}}\n  apEdgeCrushKernel_axis {{parent.reverse_order}}\n  apEdgeCrushKernel_inverse 1\n  rebuild_finalise \"\"\n  name apEdgeCrushKernel3\n  xpos -314\n  ypos -90\n  disable {{\"(parent.amount.w==0 && parent.amount.h==0) || parent.direction==0\"}}\n }\n BlinkScript {\n  inputs 2\n  recompileCount 66\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apEdgeCrushKernel\\\" iterate pixelWise 859a1c49670895fa1438357276cb89b54996b1574609837fb9d90ccdf486a446 3 \\\"src\\\" Read Ranged1D \\\"mask\\\" Read Point \\\"dst\\\" Write Point 3 \\\"amount\\\" Float 1 AAAAAA== \\\"axis\\\" Int 1 AAAAAA== \\\"inverse\\\" Int 1 AAAAAA== 3 \\\"amount\\\" 1 1 \\\"axis\\\" 1 1 \\\"inverse\\\" 1 1 3 \\\"srcrangedAxisMask\\\" Int 1 1 AAAAAA== \\\"srcrangeMin\\\" Int 1 1 AAAAAA== \\\"srcrangeMax\\\" Int 1 1 AAAAAA==\"\n  kernelSource \"#define lerp(p1, p2, f) ((p1)*(f) + (p2)*(1.0f-(f)))\\n\\n\\nkernel apEdgeCrushKernel : ImageComputationKernel<ePixelWise>\\n{\\n  Image<eRead, eAccessRanged1D, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n\\n  param:\\n    float amount;\\n    int axis;\\n    int inverse;\\n\\n  void init() {\\n    src.setRange(-int(ceil(amount)), int(ceil(amount)));\\n    src.setAxis(axis?eY:eX);\\n  }\\n  void process() {\\n    float4 pixelPos = mask() * amount;\\n    pixelPos = inverse?-pixelPos:pixelPos;\\n    float4 result;\\n    for(int i=0;i<4;i++){\\n      result[i] = lerp(src(-int(floor(pixelPos[i])),i),src(-int(ceil(pixelPos[i])),i),pixelPos[i]<0.0f?fabs(fmod(pixelPos[i], 1.0f)):1.0f-fmod(pixelPos[i], 1.0f));\\n    }\\n    dst() = result;\\n  }\\n};\\n\"\n  useGPUIfAvailable {{parent.apEdgeCrushKernel1.useGPUIfAvailable}}\n  vectorize {{parent.apEdgeCrushKernel1.vectorize}}\n  rebuild \"\"\n  apEdgeCrushKernel_amount {{apEdgeCrushKernel_axis?abs(parent.amount.h):abs(parent.amount.w)}}\n  apEdgeCrushKernel_axis {{!parent.reverse_order}}\n  apEdgeCrushKernel_inverse 1\n  rebuild_finalise \"\"\n  name apEdgeCrushKernel4\n  xpos -314\n  ypos -58\n  disable {{\"(parent.amount.w==0 && parent.amount.h==0) || parent.direction==0\"}}\n }\n Crop {\n  box {{-parent.overscan_limit} {-parent.overscan_limit} {input.width+parent.overscan_limit} {input.height+parent.overscan_limit}}\n  intersect true\n  crop false\n  name CropOverscan\n  xpos -314\n  ypos -26\n  disable {{!parent.limit_overscan}}\n }\npush $N109f20b0\n Merge2 {\n  inputs 2+1\n  operation copy\n  Bchannels {{{parent.Merge2.Achannels}}}\n  output {{{parent.Merge2.Achannels}}}\n  name Merge1\n  label \"Copy rgba to ch\"\n  xpos -432\n  ypos -30\n }\n Switch {\n  inputs 2\n  which {{parent.preview_noise}}\n  name SwitchPreviewNoise\n  xpos -432\n  ypos 30\n }\n Output {\n  name Output1\n  xpos -432\n  ypos 75\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apEdgePush.gizmo",
    "content": "Group {\n name apEdgePush\n help \"Distort the edges of your image outwards through its alpha, useful to hide edges with background influence showing up.\\n\\napEdgePush v1.2 by Adrian Pueyo.\\nadrianpueyo.com, 2016\"\n tile_color 0x8a8a8aff\n addUserKnob {20 apEdgePush}\n addUserKnob {41 channels T IDistort.channels}\n addUserKnob {4 theOutput l output t \"By setting this output to distortion matte setup you'll have visual control of the following knobs. Then switch back to result and refine the \\nvalues.\" M {result \"distortion matte setup\" \"\"}}\n addUserKnob {6 crop_to_format l \"crop to format\" -STARTLINE}\n crop_to_format true\n addUserKnob {6 premultiplied l \"(un)premult rgb\" t \"Unpremult rgb before applying the distortion and premultiply it back after.\" -STARTLINE}\n addUserKnob {7 value t \"Strength of the distortion.\" R 0 100}\n value 1\n addUserKnob {14 soft t \"Pre-blur of the distortion matte.\" R 0 100}\n soft 2\n addUserKnob {7 falloff t \"Falloff of the distortion/gamma of the distortion map.\"}\n falloff 0.2\n addUserKnob {14 maxIndent l \"max indent\" t \"Maximum distance in pixels from the edge where this tool can apply distortion (use this to limit the inside distortion when using high values).\" R 0 100}\n maxIndent 10\n addUserKnob {26 \"\"}\n addUserKnob {41 matte t \"Channel from the matte input to use as a distortion matte. If nothing is pluged, alpha from the img layer is used.\" T Copy2.from0}\n addUserKnob {6 invert_matte l invert -STARTLINE}\n addUserKnob {41 maskChannel l mask T Keymix1.maskChannel}\n addUserKnob {41 invertMask l invert -STARTLINE T Keymix1.invertMask}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 version_author l \"\" t \"apEdgePush v1.2\\n2016\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apEdgePush v1.2</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2014-2016</span>\"}\n}\n Input {\n  inputs 0\n  name Inputimg\n  xpos 131\n  ypos 237\n }\n Shuffle {\n  name Shuffle\n  xpos 131\n  ypos 261\n }\nset N32bf9c60 [stack 0]\n Dot {\n  name Dot27\n  xpos 165\n  ypos 929\n }\nset N33804b10 [stack 0]\n Dot {\n  name Dot1\n  xpos 165\n  ypos 1085\n }\nset N338070b0 [stack 0]\n Dot {\n  name Dot13\n  xpos 165\n  ypos 1117\n }\nset N33809650 [stack 0]\n Dot {\n  name Dot14\n  xpos 165\n  ypos 1145\n }\npush $N33809650\n Input {\n  inputs 0\n  name Inputmask\n  xpos 822\n  ypos 1054\n  number 2\n }\n Invert {\n  name Invert5\n  xpos 822\n  ypos 1078\n }\npush $N338070b0\n Input {\n  inputs 0\n  name Inputmatte\n  xpos 351\n  ypos 192\n  number 1\n }\n Expression {\n  expr3 1\n  name Expression1\n  xpos 351\n  ypos 216\n  disable {{\"\\[exists parent.input1]\"}}\n }\npush $N32bf9c60\n Remove {\n  operation keep\n  channels alpha\n  name Remove2\n  xpos 241\n  ypos 257\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy2\n  xpos 351\n  ypos 257\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Invert {\n  channels alpha\n  name InvertAlpha\n  xpos 351\n  ypos 289\n  disable {{!parent.invert_matte}}\n }\n Dot {\n  name Dot12\n  xpos 385\n  ypos 348\n }\nset N3382d110 [stack 0]\n Dot {\n  name Dot25\n  xpos 385\n  ypos 595\n }\nset N3382f6b0 [stack 0]\n Dot {\n  name Dot26\n  xpos 385\n  ypos 874\n }\nset N33831c50 [stack 0]\n FilterErode {\n  size {{parent.maxIndent} {parent.maxIndent}}\n  filter gaussian\n  name FilterErodeMaxI\n  label MaxIndent\n  xpos 455\n  ypos 862\n }\npush $N3382f6b0\npush $N3382d110\n Dot {\n  name Dot11\n  xpos 648\n  ypos 348\n }\nset N338394d0 [stack 0]\n Matrix {\n  channels alpha\n  matrix {\n      {0.33 0 -0.33}\n      {1 0 -1}\n      {0.33 0 -0.33}\n    }\n  name hGrad\n  xpos 614\n  ypos 398\n }\npush $N338394d0\n Dot {\n  name Dot3\n  xpos 756\n  ypos 348\n }\n Matrix {\n  channels alpha\n  matrix {\n      {-0.33 -1 -0.33}\n      {0 0 0}\n      {0.33 1 0.33}\n    }\n  name vGrad\n  xpos 722\n  ypos 398\n }\n Dot {\n  name Dot8\n  xpos 756\n  ypos 470\n }\n MergeExpression {\n  inputs 2\n  expr0 Aa\n  expr1 Ba\n  expr2 0\n  name MergeExpressionHV\n  xpos 614\n  ypos 467\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge1\n  selected true\n  xpos 614\n  ypos 592\n }\n Blur {\n  channels rgba\n  size {{parent.soft} {parent.soft}}\n  name BlurAlpha\n  xpos 614\n  ypos 627\n }\n Dot {\n  name Dot28\n  xpos 648\n  ypos 663\n }\nset N3385c4a0 [stack 0]\n Dot {\n  name Dot10\n  xpos 742\n  ypos 663\n }\n Expression {\n  expr0 -min(r,0)\n  expr1 -min(g,0)\n  name NegativeValues\n  xpos 708\n  ypos 693\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 708\n  ypos 717\n }\n Gamma {\n  channels rgb\n  value {{parent.Gamma2.value}}\n  name Gamma1\n  xpos 708\n  ypos 741\n }\n Invert {\n  channels rgb\n  name Invert4\n  xpos 708\n  ypos 765\n }\n Dot {\n  name Dot9\n  xpos 742\n  ypos 826\n }\npush $N3385c4a0\n Expression {\n  expr0 max(r,0)\n  expr1 max(g,0)\n  name PositiveValues\n  xpos 614\n  ypos 693\n }\n Invert {\n  channels rgb\n  name Invert2\n  xpos 614\n  ypos 717\n }\n Gamma {\n  channels rgb\n  value {{parent.falloff}}\n  name Gamma2\n  xpos 614\n  ypos 741\n }\n Invert {\n  channels rgb\n  name Invert3\n  xpos 614\n  ypos 765\n }\n MergeExpression {\n  inputs 2\n  expr0 Br-Ar\n  expr1 Bg-Ag\n  expr2 0\n  name MergeExpression7\n  xpos 614\n  ypos 823\n }\n Multiply {\n  channels {rgba.red rgba.green -rgba.blue none}\n  value {{parent.value}}\n  name MultiplyValue\n  xpos 614\n  ypos 847\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  name Merge5\n  xpos 614\n  ypos 871\n }\nset N33899c80 [stack 0]\n Expression {\n  expr0 max(abs(r),abs(g))\n  expr1 0\n  expr2 0\n  expr3 0\n  name ExpressionPrvw\n  xpos 739\n  ypos 871\n }\npush $N33831c50\n Dot {\n  name Dot29\n  xpos 385\n  ypos 898\n }\n Merge2 {\n  inputs 2\n  operation plus\n  mix 0.5\n  name MergePrvw\n  xpos 739\n  ypos 895\n }\n Dot {\n  name Dot2\n  xpos 773\n  ypos 1057\n }\npush $N33899c80\npush $N33804b10\nadd_layer {ap_edgepush ap_edgepush.u ap_edgepush.v}\n ShuffleCopy {\n  inputs 2\n  in2 none\n  red red\n  green green\n  blue black\n  alpha black\n  out ap_edgepush\n  name ShuffleCopy1\n  xpos 614\n  ypos 926\n }\n Unpremult {\n  name Unpremult3\n  xpos 614\n  ypos 950\n  disable {{parent.premultiplied==0}}\n }\n IDistort {\n  channels rgba\n  uv ap_edgepush\n  uv_scale -1\n  name IDistort\n  xpos 614\n  ypos 974\n }\n Premult {\n  name Premult4\n  xpos 614\n  ypos 998\n  disable {{parent.premultiplied==0}}\n }\n Remove {\n  channels ap_edgepush\n  name Remove1\n  xpos 614\n  ypos 1022\n }\n Switch {\n  inputs 2\n  which {{parent.theOutput}}\n  name SwitchPreview\n  xpos 614\n  ypos 1054\n }\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 614\n  ypos 1078\n  disable {{\"!\\[exists parent.input2]\"}}\n }\n Dissolve {\n  inputs 2\n  which {{1-parent.mix}}\n  name Dissolve1\n  xpos 614\n  ypos 1110\n  disable {{parent.mix==1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 614\n  ypos 1142\n  disable {{!parent.crop_to_format}}\n }\n Output {\n  name Output1\n  xpos 614\n  ypos 1166\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apFresnel.gizmo",
    "content": "add_layer {N N.red N.green N.blue N.alpha}\nadd_layer {P P.red P.green P.blue P.alpha}\nGroup {\nname apFresnel\naddUserKnob {20 apFresnel}\naddUserKnob {41 outMode l output T ShuffleCopy1.out}\naddUserKnob {6 invert -STARTLINE}\naddUserKnob {26 \"\"}\naddUserKnob {41 in_n l normals T Shuffle1.in}\naddUserKnob {41 in_p l position T Shuffle2.in}\naddUserKnob {26 \"\"}\naddUserKnob {41 gamma T Gamma1.value}\naddUserKnob {26 version_author l \"\" t \"apFresnel v0.1\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apFresnel v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}}\nInput {\ninputs 0\nname Inputcam\nxpos -412\nypos 74\nnumber 1\n}\nAxis2 {\nname Axis1\nxpos -402\nypos 100\n}\nInput {\ninputs 0\nname Inputimg\nxpos 0\n}\nset Nfb6ec3f0 [stack 0]\nShuffle {\nin P\nname Shuffle2\nlabel p\nxpos -230\nypos 110\n}\nGrade {\nadd {{parent.Axis1.world_matrix.3} {parent.Axis1.world_matrix.7} {parent.Axis1.world_matrix.11} {curve}}\nreverse true\nblack_clamp false\nname Grade1\nxpos -230\nypos 148\n}\npush $Nfb6ec3f0\nShuffle {\nin {N.red N.green N.blue N.alpha}\nname Shuffle1\nlabel n\nxpos -106\nypos 122\n}\nMergeExpression {\ninputs 2\ntemp_name0 cosA\ntemp_expr0 (Ar*Br+Ag*Bg+Ab*Bb)/(sqrt(Ar*Ar+Ag*Ag+Ab*Ab)*sqrt(Br*Br+Bg*Bg+Bb*Bb))\nchannel0 rgba\nexpr0 (1+cosA)\nname MergeExpression1\nxpos -135\nypos 214\n}\nGamma {\nchannels rgba\nname Gamma1\nxpos -135\nypos 240\n}\nExpression {\nexpr0 isnan(r)?0:r\nexpr1 isnan(g)?0:g\nexpr2 isnan(b)?0:b\nexpr3 isnan(a)?0:a\nname NanToBlack\nxpos -135\nypos 266\n}\nInvert {\nchannels rgba\nname Invert1\nxpos -135\nypos 292\ndisable {{!parent.invert}}\n}\nDot {\nname Dot1\nxpos -101\nypos 347\n}\npush $Nfb6ec3f0\nShuffleCopy {\ninputs 2\nred red\ngreen red\nblue red\nalpha red\nname ShuffleCopy1\nxpos 0\nypos 343\n}\nOutput {\nname Output1\nxpos 0\nypos 416\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apLoop.gizmo",
    "content": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name apLoop\n help \"apLoop BETA v0.1 by Adrian Pueyo\\n\\nQuick tool to simulate a loop effect while affecting the gain, blur and transformations on each \\\"iteration\\\".\\n\\nFeel free to play with it and see its applications. Some of them: create an exponential (or normal) glow in seconds, an expo blur, a grid or mosaic (adding this gizmo twice), godrays, directional blurs, etc.\\n\\nadrianpueyo.com, 2017\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nt = n\\[\\\"times\\\"]\\nif k == t and t.value()<0:\\n    dr.setValue(0)\"\n autolabel \"nuke.thisNode().name()+\\\" (x\\\"+str(int(nuke.thisNode()\\[\\\"times\\\"].getValue()))+\\\")\\\"\"\n tile_color 0x4d585eff\n gl_color 0xff\n selected true\n addUserKnob {20 apLoop}\n addUserKnob {26 looper l <b>Looper}\n addUserKnob {41 channels T Merge.also_merge}\n addUserKnob {3 times}\n times 1\n addUserKnob {6 include_original l \"include original\" -STARTLINE}\n include_original true\n addUserKnob {6 normalize -STARTLINE}\n normalize true\n addUserKnob {26 \"\"}\n addUserKnob {26 gaind l <b>Gain T \"\"}\n addUserKnob {41 g_start l start T cnt.g_start}\n addUserKnob {41 g_end l end T cnt.g_end}\n addUserKnob {41 g_each l each T cnt.g_each}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 blur_1 l <b>Blur T \"\"}\n addUserKnob {41 b_start l start T cnt.b_start}\n addUserKnob {41 b_end l end T cnt.b_end}\n addUserKnob {41 b_each l each T cnt.b_each}\n addUserKnob {41 b_pow l power T cnt.b_pow}\n addUserKnob {41 filter T Blur.filter}\n addUserKnob {41 quality l \"\" -STARTLINE T Blur.quality}\n addUserKnob {41 crop l \"crop to format\" -STARTLINE T Blur.crop}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l \"mask \" T Merge.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \"\" t \"apLoop BETA v0.1\\n\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apLoop BETA v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2017</span>\"}\n addUserKnob {20 transformA l \"Transform A\"}\n addUserKnob {41 translate T TransformRef.translate}\n addUserKnob {41 rotate T TransformRef.rotate}\n addUserKnob {41 scale T TransformRef.scale}\n addUserKnob {41 skewX l \"skew X\" T TransformRef.skewX}\n addUserKnob {41 skewY l \"skew Y\" T TransformRef.skewY}\n addUserKnob {41 skew_order_1 l \"skew order\" T TransformB.skew_order}\n addUserKnob {41 center T TransformRef.center}\n addUserKnob {22 center_on_bbox l \"center on bbox\" -STARTLINE T \"try:\\n    n = nuke.thisNode().input(0)\\n    nuke.toNode(\\\"TransformRef\\\")\\[\\\"center\\\"].setValue(n.bbox().x()+n.bbox().w()/2,0)\\n    nuke.toNode(\\\"TransformRef\\\")\\[\\\"center\\\"].setValue(n.bbox().y()+n.bbox().h()/2,1)\\nexcept:\\n    pass\"}\n addUserKnob {22 center_on_frame l \"center on frame\" -STARTLINE T \"nuke.toNode(\\\"TransformRef\\\")\\[\\\"center\\\"].setValue(nuke.thisNode().width()/2,0)\\nnuke.toNode(\\\"TransformRef\\\")\\[\\\"center\\\"].setValue(nuke.thisNode().height()/2,1)\"}\n addUserKnob {41 invert_matrix l invert T TransformRef.invert_matrix}\n addUserKnob {41 filter_1 l filter T TransformB.filter}\n addUserKnob {41 clamp -STARTLINE T TransformB.clamp}\n addUserKnob {41 black_outside l \"black outside\" -STARTLINE T TransformB.black_outside}\n addUserKnob {41 motionblur T TransformB.motionblur}\n addUserKnob {41 shutter T TransformB.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T TransformB.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T TransformB.shuttercustomoffset}\n addUserKnob {20 transformB l \"Transform B\"}\n addUserKnob {41 translate_1 l translate T TransformRefAfter.translate}\n addUserKnob {41 rotate_1 l rotate T TransformRefAfter.rotate}\n addUserKnob {41 scale_1 l scale T TransformRefAfter.scale}\n addUserKnob {41 skewX_1 l \"skew X\" T TransformRefAfter.skewX}\n addUserKnob {41 skewY_1 l \"skew Y\" T TransformRefAfter.skewY}\n addUserKnob {41 skew_order l \"skew order\" T TransformRefAfter.skew_order}\n addUserKnob {41 center_1 l center T TransformRefAfter.center}\n addUserKnob {22 copyCenterFromA l \"copy from transform A\" -STARTLINE T \"nuke.toNode(\\\"TransformRefAfter\\\")\\[\\\"center\\\"].setValue(nuke.toNode(\\\"TransformRef\\\")\\[\\\"center\\\"].getValue())\"}\n addUserKnob {41 invert_matrix_1 l invert T TransformRefAfter.invert_matrix}\n addUserKnob {41 filter_2 l filter T TransformAfter.filter}\n addUserKnob {41 clamp_1 l clamp -STARTLINE T TransformAfter.clamp}\n addUserKnob {41 black_outside_1 l \"black outside\" -STARTLINE T TransformAfter.black_outside}\n addUserKnob {41 motionblur_1 l motionblur T TransformAfter.motionblur}\n addUserKnob {41 shutter_1 l shutter T TransformAfter.shutter}\n addUserKnob {41 shutteroffset_1 l \"shutter offset\" T TransformAfter.shutteroffset}\n addUserKnob {41 shuttercustomoffset_1 l \"\" -STARTLINE T TransformAfter.shuttercustomoffset}\n}\n Transform {\n  inputs 0\n  name TransformRefAfter\n  xpos 510\n  ypos -501\n  disable true\n }\n Transform {\n  inputs 0\n  name TransformRef\n  xpos 510\n  ypos -526\n  disable true\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 106\n  ypos -328\n  number 1\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 249\n  ypos -552\n }\nset N9c73820 [stack 0]\n NoTimeBlur {\n  rounding floor\n  name NoTB\n  xpos 405\n  ypos -552\n }\n Transform {\n  translate {{TB.divisions*TransformRef.translate*TB.fr x1048 85} {TB.divisions*TransformRef.translate*TB.fr x1048 -150}}\n  rotate {{TB.divisions*TransformRef.rotate*TB.fr x1048 0}}\n  scale {{pow(TransformRef.scale,TB.ci) x1048 0}}\n  skewX {{TB.divisions*TransformRef.skewX*TB.fr x1048 0}}\n  skewY {{TB.divisions*TransformRef.skewY*TB.fr x1048 0}}\n  center {{parent.TransformRef.center x1048 1064} {parent.TransformRef.center x1048 1064}}\n  invert_matrix {{parent.TransformRef.invert_matrix}}\n  name TransformB\n  xpos 405\n  ypos -526\n }\n Transform {\n  translate {{TB.divisions*TransformRefAfter.translate*TB.fr x1048 85} {TB.divisions*TransformRefAfter.translate*TB.fr x1048 -150}}\n  rotate {{TB.divisions*TransformRefAfter.rotate*TB.fr x1048 0}}\n  scale {{pow(TransformRefAfter.scale,TB.ci) x1048 0}}\n  skewX {{TB.divisions*TransformRefAfter.skewX*TB.fr x1048 0}}\n  skewY {{TB.divisions*TransformRefAfter.skewY*TB.fr x1048 0}}\n  center {{parent.TransformRefAfter.center x1048 0} {parent.TransformRefAfter.center x1048 0}}\n  invert_matrix {{parent.TransformRefAfter.invert_matrix}}\n  name TransformAfter\n  xpos 405\n  ypos -500\n }\n Multiply {\n  value {{(cnt.g_end*TB.ffr+cnt.g_start*(1-TB.ffr))*pow(cnt.g_each,TB.ci)} {(cnt.g_end*TB.ffr+cnt.g_start*(1-TB.ffr))*pow(cnt.g_each,TB.ci)} {(cnt.g_end*TB.ffr+cnt.g_start*(1-TB.ffr))*pow(cnt.g_each,TB.ci)} {(cnt.g_end*TB.ffr+cnt.g_start*(1-TB.ffr))*pow(cnt.g_each,TB.ci)}}\n  name Multiply\n  note_font \"Bitstream Vera Sans\"\n  xpos 405\n  ypos -474\n }\n Blur {\n  size {{\"TB.ci==0?(cnt.b_end*TB.ffr+cnt.b_start*(1-TB.ffr)):(cnt.b_end*TB.ffr+cnt.b_start*(1-TB.ffr)) + cnt.b_each * pow(cnt.b_pow,TB.ci-1)\"}}\n  name Blur\n  xpos 405\n  ypos -436\n }\n Multiply {\n  value 0\n  name MultiplyOut\n  xpos 405\n  ypos -398\n  disable {{parent.include_original||TB.fr!=0}}\n }\n TimeBlur {\n  divisions {{parent.times i}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name TB\n  xpos 405\n  ypos -360\n  addUserKnob {20 User}\n  addUserKnob {7 fr}\n  fr {{frame%1 i}}\n  addUserKnob {7 ffr}\n  ffr {{frame%1==0?(frame%1):(frame%1)/(1-1/divisions)}}\n  addUserKnob {7 ci t \"current iteration\"}\n  ci {{fr*divisions i}}\n }\n Multiply {\n  value {{parent.TB.divisions}}\n  name MultiplyBack\n  xpos 405\n  ypos -334\n  disable {{!parent.normalize}}\n }\npush $N9c73820\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels {{{Achannels}}}\n  output {{{Achannels}}}\n  also_merge all\n  name Merge\n  xpos 249\n  ypos -334\n }\n Output {\n  name Output1\n  xpos 249\n  ypos -296\n }\n NoOp {\n  inputs 0\n  name cnt\n  xpos 510\n  ypos -468\n  hide_input true\n  addUserKnob {20 Controller}\n  addUserKnob {19 g_start R 0 4}\n  g_start 1\n  addUserKnob {6 g_start_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 g_start_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {19 g_end R 0 4}\n  g_end 1\n  addUserKnob {6 g_end_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 g_end_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {19 g_each R 0 4}\n  g_each 1\n  addUserKnob {6 g_each_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 g_each_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {14 b_start R 0 100}\n  addUserKnob {14 b_end R 0 100}\n  addUserKnob {14 b_each R 0 100}\n  addUserKnob {7 b_pow R 0 4}\n  b_pow 1\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apViewerBlocker.gizmo",
    "content": "NoOp {\n name ViewerBlocker\n help \"Prevent changing unintentionally one or more viewer inputs when you only want to see through them. Useful when you keep certain viewer numbers assigned to specific parts of the script (e.g. 3 to the scan and 4 to the output).\\n\\nViewerBlocker v0.1 by Adrian Pueyo\\nadrianpueyo.com, 2016\"\n knobChanged \"if \\\"block\\\" in nuke.thisKnob().name() or nuke.thisKnob().name() == \\\"viewer\\\":\\n    node_list = dict()\\n    for i in range(1,10):\\n        k = nuke.thisNode().knob(\\\"block\\\" + str(i))\\n        if k.getValue() != \\\"\\\":\\n            node_list\\[i] = k.getValue()\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").getValue())\\n    functionToSet = \\\"if nuke.thisKnob().name() in \\['inputChange','input_number']:\\\\n    try:\\\\n        pass\\\\n\\\"\\n    for i in node_list:\\n        functionToSet += '        nuke.thisNode().setInput(%s,nuke.toNode(\\\"%s\\\"))\\\\n'%(str(i-1),node_list\\[i])\\n    functionToSet += \\\"    except:\\\\n        pass\\\"\\n\\n    if vwr:\\n        vwr.knob(\\\"knobChanged\\\").setValue(functionToSet)\"\n autolabel \"#\\\"%s\\\\n(%s)\\\"%(nuke.thisNode().name(),nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\nnuke.thisNode().name()+(\\\"\\\\n(%s)\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate()*int(nuke.thisNode().knob(\\\"viewer\\\").evaluate()!=\\\"\\\"))\"\n hide_input true\n addUserKnob {20 ViewerBlocker}\n addUserKnob {1 viewer t \"Write the name of the viewer where you want to block some inputs (usually Viewer1), or select it and click on the next button.\"}\n addUserKnob {22 setSelected l \"Set to selected\" t \"Set the viewer to the one selected.\" -STARTLINE T \"sn = nuke.selectedNode()\\nif sn.Class() == \\\"Viewer\\\":\\n    nuke.thisNode().knob(\\\"viewer\\\").setValue(sn.name())\\nelse:\\n    nuke.message(\\\"Please select a viewer node.\\\")\"}\n addUserKnob {22 clearViewer l Unblock t \"Unblock the viewer and leave the field blank.\" -STARTLINE T \"vn = nuke.thisNode().knob(\\\"viewer\\\").evaluate()\\nif nuke.toNode(vn):\\n    nuke.toNode(vn).knob(\\\"knobChanged\\\").setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Looks like %s doesn't exist!\\\\n (emptying the field anyway...)\\\" % vn)\\nnuke.thisNode().knob(\\\"viewer\\\").setValue(\\\"\\\")\"}\n addUserKnob {26 \"\"}\n addUserKnob {1 block1 l 1 t \"Name of the node to block to the viewer's input 1.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get1 l \"Set to current\" t \"Block the viewer's input 1 to its current input.\" -STARTLINE T \"indx = 1\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear1 l Clear -STARTLINE T \"indx = 1\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block2 l 2 t \"Name of the node to block to the viewer's input 2.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get2 l \"Set to current\" t \"Block the viewer's input 2 to its current input.\" -STARTLINE T \"indx = 2\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear2 l Clear -STARTLINE T \"indx = 2\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block3 l 3 t \"Name of the node to block to the viewer's input 3.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get3 l \"Set to current\" t \"Block the viewer's input 3 to its current input.\" -STARTLINE T \"indx = 3\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear3 l Clear -STARTLINE T \"indx = 3\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block4 l 4 t \"Name of the node to block to the viewer's input 4.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get4 l \"Set to current\" t \"Block the viewer's input 4 to its current input.\" -STARTLINE T \"indx = 4\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear4 l Clear -STARTLINE T \"indx = 4\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block5 l 5 t \"Name of the node to block to the viewer's input 5.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get5 l \"Set to current\" t \"Block the viewer's input 5 to its current input.\" -STARTLINE T \"indx = 5\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear5 l Clear -STARTLINE T \"indx = 5\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block6 l 6 t \"Name of the node to block to the viewer's input 6.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get6 l \"Set to current\" t \"Block the viewer's input 6 to its current input.\" -STARTLINE T \"indx = 6\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear6 l Clear -STARTLINE T \"indx = 6\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block7 l 7 t \"Name of the node to block to the viewer's input 7.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get7 l \"Set to current\" t \"Block the viewer's input 7 to its current input.\" -STARTLINE T \"indx = 7\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear7 l Clear -STARTLINE T \"indx = 7\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block8 l 8 t \"Name of the node to block to the viewer's input 8.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get8 l \"Set to current\" t \"Block the viewer's input 8 to its current input.\" -STARTLINE T \"indx = 8\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear8 l Clear -STARTLINE T \"indx = 8\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block9 l 9 t \"Name of the node to block to the viewer's input 9.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get9 l \"Set to current\" t \"Block the viewer's input 9 to its current input.\" -STARTLINE T \"indx = 9\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(indx-1)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(indx-1):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear9 l Clear -STARTLINE T \"indx = 9\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {1 block0 l 0 t \"Name of the node to block to the viewer's input 0.\\nLeave empty to keep it unblocked.\"}\n addUserKnob {22 get0 l \"Set to current\" t \"Block the viewer's input 0 to its current input.\" -STARTLINE T \"indx = 0\\ntry:\\n    vwr = nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate())\\n    selInput = vwr.input(int(9)).name()\\n    nuke.thisNode().knob(\\\"block%s\\\"%(str(0))).setValue(selInput)\\nexcept:\\n    if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()):\\n        if nuke.toNode(nuke.thisNode().knob(\\\"viewer\\\").evaluate()).input(9):\\n            nuke.message(\\\"Connection error. Please check %s's input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n        else:\\n            nuke.message(\\\"Connection error. Please check %s has something piped in input %s\\\"%(nuke.thisNode().knob(\\\"viewer\\\").evaluate(),str(indx)))\\n    else:\\n        nuke.message(\\\"Error: Please check the viewer %s exists.\\\"%nuke.thisNode().knob(\\\"viewer\\\").evaluate())\"}\n addUserKnob {22 clear0 l Clear -STARTLINE T \"indx = 0\\nnuke.thisNode().knob(\\\"block%s\\\"%(str(indx))).setValue('')\"}\n addUserKnob {26 copyright_kind_of l \"\" +STARTLINE T \"<i><font color=grey><text-align=right>            ViewerBlocker by Adrian Pueyo\"}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apVignette.gizmo",
    "content": "Group {\n name apVignette\n help \"apVignette v0.4 - apEssentials by Adrian Pueyo\\n\\nSimple and lightweight vignetting gizmo.\\n\\nadrianpueyo.com, 2014-2018\"\n tile_color 0x8c8c8cff\n selected true\n addUserKnob {20 apeVignette}\n addUserKnob {7 aspect t \"Aspect ratio multiplier for the vignetting.\" R 0 4}\n aspect 1\n addUserKnob {6 img_format l \"image format\" t \"...otherwise spherical.\\nThis also gets affected by the aspect multiplier.\" -STARTLINE}\n addUserKnob {7 size t \"Shutter size multiplier relative to the plate width.\" R 0 3}\n size 1.4\n addUserKnob {7 falloff t \"Gamma of the effect's alpha.\" R 0 4}\n falloff 2\n addUserKnob {26 \"\"}\n addUserKnob {7 amount t \"Multiplier for the effect's alpha.\" R 0 2}\n amount 1\n addUserKnob {41 color t \"Multiplier for the image, through the resulting alpha.\" T Multiply1.value}\n addUserKnob {6 apply_to_white l \"Apply to White Constant (rgb)\" +STARTLINE}\n addUserKnob {6 output_alpha l \"output matte in alpha\" +STARTLINE}\n addUserKnob {26 version_author l \"\" t \"apeVignette v0.5\\n2014-2018\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apeVignette v0.5</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2014-2018</span>\"}\n addUserKnob {20 transform}\n addUserKnob {41 type T Reformat1.type}\n addUserKnob {41 format l \"output format\" T Reformat1.format}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {41 translate T Transform1.translate}\n addUserKnob {41 rotate T Transform1.rotate}\n addUserKnob {41 scale T Transform1.scale}\n addUserKnob {41 skewX l \"skew X\" T Transform1.skewX}\n addUserKnob {41 skewY l \"skew Y\" T Transform1.skewY}\n addUserKnob {41 center T Transform1.center}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 110\n  ypos -194\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 144\n  ypos -132\n }\nset N1ad284d0 [stack 0]\n Radial {\n  output alpha\n  cliptype none\n  replace true\n  invert true\n  area {{\"width/2 * (1 - parent.size)\"} {height/2-(parent.img_format?height:width)/(2*parent.aspect)*parent.size} {\"width/2 * (1 + parent.size)\"} {height/2+(parent.img_format?height:width)/(2*parent.aspect)*parent.size}}\n  name Radial1\n  xpos 254\n  ypos -142\n }\n Transform {\n  center {1078 901}\n  black_outside false\n  shutteroffset centred\n  name Transform1\n  xpos 254\n  ypos -78\n }\n Gamma {\n  channels alpha\n  value {{1/parent.falloff}}\n  name Gamma1\n  xpos 254\n  ypos 46\n }\n Multiply {\n  channels alpha\n  value {{parent.amount}}\n  name Multiply2\n  xpos 254\n  ypos 84\n }\nset N18b62620 [stack 0]\npush $N18b62620\npush $N1ad284d0\n Reformat {\n  black_outside true\n  name Reformat1\n  xpos 110\n  ypos -80\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 110\n  ypos -38\n  disable {{!parent.apply_to_white}}\n }\n Grade {\n  multiply 0\n  add 1\n  black_clamp false\n  name Grade1\n  xpos 110\n  ypos 2\n  disable {{!parent.apply_to_white}}\n }\n Multiply {\n  inputs 1+1\n  channels rgb\n  value 0\n  name Multiply1\n  xpos 110\n  ypos 90\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  name CopyA\n  xpos 110\n  ypos 112\n  disable {{!parent.output_alpha}}\n }\n Output {\n  name Output1\n  xpos 110\n  ypos 186\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apeGlow.gizmo",
    "content": "Group {\n name apGlow\n help \"apeGlow v1.0 - apEssentials by Adrian Pueyo\\n\\nExponential glow with advanced controls, using the traditional multi-blur approach.\\n\\nWith the \\\"area\\\" input (optional) you can set only a part of the image to emit glow.\\nNaN's will be turned black, on rgba only.\\n\\nadrianpueyo.com, 2015-2019.\"\n onCreate \"n = nuke.thisNode()\\nfor i in \\['intensity','response','max_size','src_black','src_white','response']:\\n    n\\[i].setFlag(0x00000004)\\nn\\['max_size'].setRange(0,10000)\\nn\\['overscan'].setRange(0,1000)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() in \\[\\\"crop\\\",\\\"enableOverscan\\\"]:\\n    kcv = n\\[\\\"crop\\\"].value()\\n    kov = n\\[\\\"enableOverscan\\\"].value()\\n    n\\[\\\"enableOverscan\\\"].setEnabled(not kcv)\\n    n\\['overscan'].setEnabled(not kcv and kov)\\nelif k.name() == \\\"s\\\":\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        nd = nuke.toNode(\\\"DP\\\")\\n        nm = nuke.toNode(\\\"MergeBlurs\\\")\\n        b0 = nuke.toNode(\\\"Blur0\\\")\\n        b0x = b0.xpos()\\n        b0y = b0.ypos()\\n        b0n = b0.name()\\n        for i in range(1,nm.inputs()):\\n            nm.setInput(i,None)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>nd.xpos()]\\n        for i in range(1,s):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b0x+i*100,b0y)\\n            b.setInput(0,nd)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            for bk in \\[\\\"filter\\\",\\\"quality\\\"]:\\n                b\\[bk].setExpression(b0n+\\\".\\\"+bk)\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(\\[0,0])\\n            b\\[\\\"size\\\"].setExpression(\\\"DP.j((1/parent.s)*%s)/ parent.f\\\"%(i+1))\\n            # Multiply\\n            m = nuke.nodes.Multiply()\\n            m.setXYpos(b0x+i*100,b0y+38)\\n            m.setInput(0,b)\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(\\[0,0,0,0])\\n            m\\[\\\"value\\\"].setExpression( \\\"parent.p*%s+%s\\\"%((i+1)/(s),1-(i+1)/(s)))\\n            # Merge\\n            nm.setInput(i if i<2 else i+1, m)\"\n tile_color 0xe88543ff\n selected true\n addUserKnob {20 apeGlow}\n addUserKnob {41 channels T KeepWhat.channels}\n addUserKnob {7 intensity t \"Intensity multiplier for the resulting glow.\" R 0 10}\n intensity 1\n addUserKnob {18 p l persistance t \"Color gain of the largest step. Affects the other steps progressively, with the least effect on the smallest one.\\n\\nUse as an inverse falloff or as a progressive color tint.\" R 0 10}\n p 1\n addUserKnob {6 p_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 tint t \"Overall color multiplier for the intensity.\"}\n tint 1\n addUserKnob {6 tint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 effect_only l \"effect only\" +STARTLINE}\n effect_only true\n addUserKnob {26 \"\"}\n addUserKnob {7 src_black l \"src black\" t \"Black point of the source image's luminance.\\nClip the effect below this luminance value.\" R 0 4}\n addUserKnob {7 src_white l \"src white\" t \"White point of the source image's luminance.\" R 0 4}\n src_white 1\n addUserKnob {41 white_clamp l clamp -STARTLINE T Grade1.white_clamp}\n addUserKnob {7 response t \"Gamma on the source image's luminance, to change the response curve falloff.\" R 0 4}\n response 1\n addUserKnob {26 \"\"}\n addUserKnob {14 max_size l \"max size\" t \"Maximum pixel size of the exponential glow.\" R 0 10000}\n max_size 2000\n addUserKnob {14 f l \"size falloff\" t \"Falloff adjustment on the exponential distribution of the blur sizes.\\n\\nReduce this to have the glow more diffuse (starting with larger blurs).\\nIncrease to have the glow tighter and more defined (start with smaller blurs).\" R 0 10}\n f 1\n addUserKnob {3 s l steps t \"Number of blur iterations to combine together.\"}\n s 10\n addUserKnob {41 filter T Blur0.filter}\n addUserKnob {41 quality l \"\" -STARTLINE T Blur0.quality}\n addUserKnob {6 crop l \"crop to format\" -STARTLINE}\n addUserKnob {14 overscan R 0 1000}\n overscan 100\n addUserKnob {6 enableOverscan l enable -STARTLINE}\n enableOverscan true\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelArea l area -STARTLINE T ExpressionArea.maskChannelMask}\n addUserKnob {41 inject_area l inject -STARTLINE T ExpressionArea.inject}\n addUserKnob {41 invert_area l invert -STARTLINE T ExpressionArea.invert_mask}\n addUserKnob {41 fringe_area l fringe -STARTLINE T ExpressionArea.fringe}\n addUserKnob {41 maskChannelMask l mask T Merge.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \"\" t \"apeGlow v1.0\\n2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apeGlow v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2015-2019</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -883\n  ypos 975\n  number 2\n }\n Input {\n  inputs 0\n  name Inputarea\n  xpos -638\n  ypos 383\n  number 1\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos -773\n  ypos 220\n }\n Dot {\n  name Dot6\n  xpos -739\n  ypos 308\n }\nset N64670800 [stack 0]\n Dot {\n  name Dot8\n  xpos -494\n  ypos 308\n }\nset N64670100 [stack 0]\n Remove {\n  name RemoveAll\n  xpos -528\n  ypos 345\n }\n Expression {\n  inputs 1+1\n  channel0 rgba\n  expr0 1\n  name ExpressionArea\n  xpos -528\n  ypos 383\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name ShuffleWhite\n  xpos -528\n  ypos 409\n  disable {{\"\\[exists parent.input1]\"}}\n }\npush $N64670100\n Dot {\n  name Dot7\n  xpos -384\n  ypos 308\n }\n Remove {\n  operation keep\n  channels rgba\n  name KeepWhat\n  xpos -418\n  ypos 377\n }\nadd_layer {apGlowArea apGlowArea.red}\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 apGlowArea.red\n  name Copy1\n  xpos -418\n  ypos 403\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Premult {\n  channels all\n  alpha apGlowArea.red\n  name Premult1\n  xpos -418\n  ypos 441\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Remove {\n  channels apGlowArea\n  name RemoveArea\n  xpos -418\n  ypos 479\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot5\n  xpos -384\n  ypos 538\n }\nset Ndeeec100 [stack 0]\n Dot {\n  name Dot1\n  xpos -494\n  ypos 538\n }\n Saturation {\n  channels all\n  saturation 0\n  name Saturation1\n  xpos -528\n  ypos 556\n }\nset Ndeec3200 [stack 0]\n Grade {\n  channels all\n  blackpoint {{parent.src_black}}\n  whitepoint {{parent.src_white}}\n  gamma {{parent.response}}\n  name Grade1\n  xpos -528\n  ypos 594\n }\npush $Ndeeec100\npush $Ndeec3200\n Merge2 {\n  inputs 2\n  operation divide\n  also_merge all\n  name Merge4\n  xpos -418\n  ypos 562\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  also_merge all\n  name Merge3\n  xpos -418\n  ypos 600\n }\n Dot {\n  name DP\n  xpos -384\n  ypos 671\n  addUserKnob {20 User}\n  addUserKnob {14 j R 0 100}\n  j {{\"pow(2, t*(log(parent.max_size*parent.f)/log(2)) )\"} {\"pow(2, t*(log(parent.max_size*parent.f)/log(2)) )\"}}\n }\nset Ndeeb2400 [stack 0]\n Blur {\n  size {{\"DP.j((1/parent.s)*10)/ parent.f\"} {\"DP.j((1/parent.s)*10)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur9\n  xpos 482\n  ypos 729\n }\n Multiply {\n  value {{parent.p*1.0+0.0} {parent.p*1.0+0.0} {parent.p*1.0+0.0} {parent.p*1.0+0.0}}\n  name Multiply9\n  xpos 482\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*9)/ parent.f\"} {\"DP.j((1/parent.s)*9)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur8\n  xpos 382\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.9+0.1} {parent.p*0.9+0.1} {parent.p*0.9+0.1} {parent.p*0.9+0.1}}\n  name Multiply8\n  xpos 382\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*8)/ parent.f\"} {\"DP.j((1/parent.s)*8)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur7\n  xpos 282\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.8+0.2} {parent.p*0.8+0.2} {parent.p*0.8+0.2} {parent.p*0.8+0.2}}\n  name Multiply7\n  xpos 282\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*7)/ parent.f\"} {\"DP.j((1/parent.s)*7)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur6\n  xpos 182\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.7+0.3} {parent.p*0.7+0.3} {parent.p*0.7+0.3} {parent.p*0.7+0.3}}\n  name Multiply6\n  xpos 182\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*6)/ parent.f\"} {\"DP.j((1/parent.s)*6)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur5\n  xpos 82\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.6+0.4} {parent.p*0.6+0.4} {parent.p*0.6+0.4} {parent.p*0.6+0.4}}\n  name Multiply5\n  xpos 82\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*5)/ parent.f\"} {\"DP.j((1/parent.s)*5)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur4\n  xpos -18\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.5+0.5} {parent.p*0.5+0.5} {parent.p*0.5+0.5} {parent.p*0.5+0.5}}\n  name Multiply4\n  xpos -18\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*4)/ parent.f\"} {\"DP.j((1/parent.s)*4)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur3\n  xpos -118\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.4+0.6} {parent.p*0.4+0.6} {parent.p*0.4+0.6} {parent.p*0.4+0.6}}\n  name Multiply3\n  xpos -118\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*3)/ parent.f\"} {\"DP.j((1/parent.s)*3)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur2\n  xpos -218\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.3+0.7} {parent.p*0.3+0.7} {parent.p*0.3+0.7} {parent.p*0.3+0.7}}\n  name Multiply2\n  xpos -218\n  ypos 767\n }\npush 0\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j((1/parent.s)*2)/ parent.f\"} {\"DP.j((1/parent.s)*2)/ parent.f\"}}\n  filter {{Blur0.filter}}\n  quality {{Blur0.quality}}\n  crop false\n  name Blur1\n  xpos -318\n  ypos 729\n }\n Multiply {\n  value {{parent.p*0.2+0.8} {parent.p*0.2+0.8} {parent.p*0.2+0.8} {parent.p*0.2+0.8}}\n  name Multiply1\n  xpos -318\n  ypos 767\n }\npush $Ndeeb2400\n Blur {\n  size {{\"DP.j(1/parent.s + 0) / parent.f\"} {\"DP.j(1/parent.s + 0) / parent.f\"}}\n  crop false\n  name Blur0\n  xpos -418\n  ypos 729\n }\n Multiply {\n  value {{\"parent.p * 1/parent.s + (1-1/parent.s)\"}}\n  name Multiply0\n  xpos -418\n  ypos 767\n }\n Merge2 {\n  inputs 10+1\n  operation plus\n  name MergeBlurs\n  xpos -418\n  ypos 864\n }\n Multiply {\n  value {{parent.intensity*parent.tint/parent.s} {parent.intensity*parent.tint/parent.s} {parent.intensity*parent.tint/parent.s} {parent.intensity*parent.tint/parent.s}}\n  name MultiplyR\n  xpos -418\n  ypos 890\n }\n Expression {\n  expr0 isnan(r)?0:r\n  expr1 isnan(g)?0:g\n  expr2 isnan(b)?0:b\n  expr3 isnan(a)?0:a\n  name NanToBlack\n  xpos -418\n  ypos 928\n }\npush $N64670800\n Dot {\n  name Dot4\n  xpos -739\n  ypos 769\n }\nset Ndefeeb00 [stack 0]\n Dot {\n  name Dot2\n  xpos -629\n  ypos 769\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  name Shuffle\n  xpos -663\n  ypos 847\n  disable {{!parent.effect_only}}\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -663\n  ypos 873\n  disable {{!parent.effect_only}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  also_merge all\n  name Merge1\n  xpos -663\n  ypos 928\n }\n Dot {\n  name Dot3\n  xpos -629\n  ypos 978\n }\npush $Ndefeeb00\n Merge2 {\n  inputs 2+1\n  operation copy\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  also_merge all\n  name Merge\n  xpos -773\n  ypos 974\n }\n Crop {\n  box {{parent.crop?0:-parent.overscan} {parent.crop?0:-parent.overscan} {parent.crop?width:width+parent.overscan.w} {parent.crop?height:height+parent.overscan.h}}\n  intersect true\n  name CropOverscan\n  selected true\n  xpos -773\n  ypos 1000\n  disable {{\"!parent.enableOverscan && !parent.crop\"}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Output {\n  name Output\n  xpos -773\n  ypos 1026\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apeScreenClean.gizmo",
    "content": "Group {\nname apeScreenClean\nhelp \"apeScreenClean v0.5 - apEssentials by Adrian Pueyo\\n\\nClean up an irregular green or blue screen using your plate and a clean plate.\\n\\napeScreenClean is my own flavor of clean screen tool (ScreenCorrect, PxF_ScreenClean, ...) offering extended functionality.\\n\\napeScreenClean v0.5 by Adrian Pueyo\\nwww.adrianpueyo.com, 2015-2019\"\nknobChanged \"k = nuke.thisKnob()\\nif k.name() in \\[\\\"use_screen_color\\\",\\\"screen_color\\\"]:\\n    n = nuke.thisNode()\\n    kv = n\\[\\\"use_screen_color\\\"].value()\\n    n\\['screen_replace'].setEnabled(not kv)\\n    if kv:\\n        n\\['screen_replace'].setValue(n\\['screen_color'].getValue())\"\ntile_color 0x8c8c8cff\naddUserKnob {20 apeScreenClean}\naddUserKnob {18 screen_color l \"screen color\" t \"Pick the main color of your screen.\"}\nscreen_color {0 0 0}\naddUserKnob {18 screen_replace l \"screen replace\" t \"Select a color to replace your screen with. By default is ganged to the screen color.\" +DISABLED}\nscreen_replace {0 0 0}\naddUserKnob {6 use_screen_color l \"use screen color\" t \"Gang screen color / screen replace color.\" +STARTLINE}\nuse_screen_color true\naddUserKnob {6 output_alpha l \"output alpha\" t \"Output the alpha of the screenclean. If disabled outputs original alpha.\" -STARTLINE}\noutput_alpha true\naddUserKnob {26 \"\"}\naddUserKnob {7 blackpoint t \"Black point of the replacement matte.\" R -0.2 0.2}\naddUserKnob {7 gamma t \"Gamma of the replacement matte (to fill darks).\"}\ngamma 0.5\naddUserKnob {26 \"\"}\naddUserKnob {41 maskChannel l \"mask channel\" T KeymixCleanScreen.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T KeymixCleanScreen.invertMask}\naddUserKnob {7 mix}\nmix 1\naddUserKnob {26 version_author l \"\" t \"apeScreenClean v0.5\\n2015-2019\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apeScreenClean v0.5</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2015-2019</span>\"}\n}\nInput {\ninputs 0\nname Inputmask\nxpos 346\nypos 154\nnumber 2\n}\nInput {\ninputs 0\nname plate\nxpos 456\nypos 29\n}\nset N9684bfd0 [stack 0]\npush $N9684bfd0\nOFXuk.co.thefoundry.keylight.keylight_v201 {\nshow \"Intermediate Result\"\nunPreMultiply false\nscreenColour {{parent.screen_color x10 0.1965884119} {parent.screen_color x10 0.5346660018} {parent.screen_color x10 0.1694011688}}\nscreenGain 1\nscreenBalance 0.5\nalphaBias {0.5 0.5 0.5}\ndespillBias {0.5 0.5 0.5}\ngangBiases true\npreBlur 0\n\"Screen Matte\" 0\nscreenClipMin 0\nscreenClipMax 1\nscreenClipRollback 0\nscreenGrowShrink 0\nscreenSoftness 0\nscreenDespotBlack 0\nscreenDespotWhite 0\nscreenReplaceMethod \"Soft Colour\"\nscreenReplaceColour {0.5 0.5 0.5}\nTuning 0\nmidPoint 0.5\nlowGain 1\nmidGain 1\nhighGain 1\n\"Inside Mask\" 0\nsourceAlphaHandling Ignore\ninsideReplaceMethod \"Soft Colour\"\ninsideReplaceColour {0.5 0.5 0.5}\nCrops 0\nSourceXMethod Colour\nSourceYMethod Colour\nSourceEdgeColour 0\nSourceCropL 0\nSourceCropR 1\nSourceCropB 0\nSourceCropT 1\nbalanceSet false\ninsideComponent None\noutsideComponent None\ncacheBreaker true\nname KeyP\nxpos 236\nypos 29\n}\nInvert {\nchannels alpha\nname InvertP\nxpos 236\nypos 53\n}\nInput {\ninputs 0\nname cleanplate\nxpos 346\nypos -8\nnumber 1\n}\nset Nc5a7b0d0 [stack 0]\nOFXuk.co.thefoundry.keylight.keylight_v201 {\nshow \"Intermediate Result\"\nunPreMultiply false\nscreenColour {{parent.screen_color x10 0.1965884119} {parent.screen_color x10 0.5346660018} {parent.screen_color x10 0.1694011688}}\nscreenGain 1\nscreenBalance 0.5\nalphaBias {0.5 0.5 0.5}\ndespillBias {0.5 0.5 0.5}\ngangBiases true\npreBlur 0\n\"Screen Matte\" 0\nscreenClipMin 0\nscreenClipMax 1\nscreenClipRollback 0\nscreenGrowShrink 0\nscreenSoftness 0\nscreenDespotBlack 0\nscreenDespotWhite 0\nscreenReplaceMethod \"Soft Colour\"\nscreenReplaceColour {0.5 0.5 0.5}\nTuning 0\nmidPoint 0.5\nlowGain 1\nmidGain 1\nhighGain 1\n\"Inside Mask\" 0\nsourceAlphaHandling Ignore\ninsideReplaceMethod \"Soft Colour\"\ninsideReplaceColour {0.5 0.5 0.5}\nCrops 0\nSourceXMethod Colour\nSourceYMethod Colour\nSourceEdgeColour 0\nSourceCropL 0\nSourceCropR 1\nSourceCropB 0\nSourceCropT 1\nbalanceSet false\ninsideComponent None\noutsideComponent None\ncacheBreaker true\nname KeyCP\nxpos 126\nypos -8\n}\nInvert {\nchannels alpha\nname InvertCP\nxpos 126\nypos 16\n}\nChannelMerge {\ninputs 2\noperation divide\nname NormalizeScreen\nxpos 126\nypos 48\n}\nGrade {\nchannels alpha\nblackpoint {{parent.blackpoint}}\ngamma {{parent.gamma}}\nname GradeAlpha\nxpos 126\nypos 90\n}\nset N84241d30 [stack 0]\nDot {\nname Dot1\nxpos 160\nypos 125\n}\npush $N84241d30\npush $Nc5a7b0d0\nGrade {\nchannels rgba\nwhite 0\nadd {{parent.screen_replace} {parent.screen_replace} {parent.screen_replace} {parent.screen_replace}}\nname GradeScreenColor\nxpos 346\nypos 16\n}\npush $Nc5a7b0d0\nMerge2 {\ninputs 2\noperation from\nname MergeSC\nxpos 346\nypos 40\n}\nMerge2 {\ninputs 2\noperation mask\nname Merge1\nxpos 346\nypos 94\n}\npush $N9684bfd0\nMerge2 {\ninputs 2\noperation from\noutput {rgba.red rgba.green rgba.blue -rgba.alpha}\nname Merge3\nxpos 456\nypos 94\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy1\nxpos 456\nypos 118\ndisable {{!parent.output_alpha}}\n}\nKeymix {\ninputs 3\nchannels {{{parent.DirBlur.channels}}}\nmix {{parent.mix}}\nname KeymixCleanScreen\nxpos 456\nypos 150\ndisable {{\"!\\[exists parent.input2]\"}}\n}\nOutput {\nname Output1\nxpos 456\nypos 182\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_apeScreenGrow.gizmo",
    "content": "Group {\n name apeScreenGrow\n help \"apeScreenGrow v0.4 - apEssentials by Adrian Pueyo\\n\\nErode the color of a screen to fill the insides of your subject, useful to generate cleanplates in a more controlled way than the IBKColour node. \\n\\napeScreenGrow is my own flavor of color extend nodes (EdgeExtend, ColorEdge, PxF_Filler, DilateRGB), taking what I like the most, taking out what I never use and adding some extra functionality to make it as straight-forward as possible.\\n\\nMatte input expects a hard alpha matte of the part you want to cover up.\\n\\napeScreenGrow v0.4 by Adrian Pueyo.\\nadrianpueyo.com, 2015-2018.\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"steps\\\":\\n    s = int(n\\[\\\"steps\\\"].value())\\n    nd = nuke.toNode(\\\"DP\\\")\\n    ndX = nd.xpos()\\n    ndY = nd.ypos()\\n    s_prev = len(nuke.allNodes(\\\"Unpremult\\\"))\\n    \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>ndX]\\n    # Merge\\n    nm = nuke.nodes.Merge2()\\n    nm.setXYpos(ndX+40,ndY+340)\\n    nm\\[\\\"operation\\\"].setValue(\\\"over\\\")\\n    nuke.toNode(\\\"TOut\\\").setInput(0,nm)\\n    for i in range(s):\\n        # Blur\\n        nb = nuke.nodes.Blur()\\n        nb.setXYpos(ndX+40+i*100,ndY+80)\\n        nb.setInput(0,nd)\\n        nb\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n        nb\\[\\\"filter\\\"].setValue(\\\"gaussian\\\")\\n        nb\\[\\\"size\\\"].setValue(\\[0,0])\\n        nb\\[\\\"size\\\"].setExpression(\\\"DP.f(%s)\\\"%(i+1))\\n        # Unpremult\\n        nu = nuke.nodes.Unpremult()\\n        nu.setXYpos(ndX+40+i*100,ndY+120)\\n        nu.setInput(0,nb)\\n        nu\\[\\\"channels\\\"].setValue(\\\"rgba\\\")\\n        nu\\[\\\"alpha\\\"].setValue(\\\"mask.a\\\")\\n        # FilterErode\\n        nf = nuke.nodes.FilterErode()\\n        nf.setXYpos(ndX+40+i*100,ndY+160)\\n        nf.setInput(0,nu)\\n        nf\\[\\\"channels\\\"].setValue(\\\"alpha\\\")\\n        nf\\[\\\"filter\\\"].setValue(\\\"quadratic\\\")\\n        nf\\[\\\"size\\\"].setValue(\\[0,0])\\n        nf\\[\\\"size\\\"].setExpression(\\\"DP.f(%s)/2\\\"%(i+1))\\n        # Premult\\n        np = nuke.nodes.Premult()\\n        np.setXYpos(ndX+40+i*100,ndY+200)\\n        np.setInput(0,nf)\\n        # BlurInside\\n        nbi = nuke.nodes.Blur()\\n        nbi.setXYpos(ndX+40+i*100,ndY+240)\\n        nbi.setInput(0,np)\\n        nbi\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n        nbi\\[\\\"filter\\\"].setValue(\\\"quadratic\\\")\\n        nbi\\[\\\"size\\\"].setValue(\\[0,0])\\n        nbi\\[\\\"size\\\"].setExpression(\\\"DP.f(%s)*parent.blur_inside/parent.size\\\"%(i+1))\\n        nm.setInput(s-i-1 if (s-i)<3 else s-i, nbi)\\n            \"\n tile_color 0x8c8c8cff\n addUserKnob {20 apeScreenGrow}\n addUserKnob {41 erode l \"matte erode\" t \"Global erode on the matte before applying the edge grow effect.\" T Dilate1.size}\n addUserKnob {14 size l \"screen grow\" t \"Maximum pixel size of the screen grow effect.\" R 0 100}\n size 20\n addUserKnob {3 steps t \"Number of blur iterations.\"}\n steps 5\n addUserKnob {26 \"\"}\n addUserKnob {7 rotate t \"Apply a rotation to the effect (e.g. when having diagonal lines on a greenscreen).\" R -180 180}\n addUserKnob {7 power t \"Distribution of the blur size of the iterations. A higher power will concentrate more of them towards the edges, where the quality is more important.\" R 0 3}\n power 2\n addUserKnob {14 blur_inside l \"blur inside\" t \"Incremental blur on the steps, so that the ones that collide get blended together.\" R 0 100}\n addUserKnob {41 bg_color l \"bg color\" t \"Background color to fill the inside.\" T Add1.value}\n addUserKnob {26 \"\"}\n addUserKnob {41 matte_channel l matte t \"Matte channel to be used as the alpha for the effect. Works best with hard mattes.\" T Copy1.from0}\n addUserKnob {41 invert -STARTLINE T InvertPre1.disable}\n addUserKnob {26 version_author l \"\" t \"apeScreenGrow v0.4\\n2015-2018\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apeScreenGrow v0.4</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2015-2018</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmatte\n  xpos 362\n  ypos -44\n  number 1\n }\n Shuffle {\n  name ShuffleAssert\n  xpos 362\n  ypos -20\n }\n Grade {\n  channels alpha\n  blackpoint 0.001\n  whitepoint 0.001\n  white 10000000\n  white_clamp true\n  name Grade1\n  xpos 362\n  ypos 4\n }\n Dilate {\n  name Dilate1\n  xpos 362\n  ypos 36\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 211\n  ypos -17\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 211\n  ypos 36\n }\n Invert {\n  channels alpha\n  name InvertPre1\n  xpos 211\n  ypos 110\n }\n Premult {\n  name Premult1\n  xpos 211\n  ypos 151\n }\nset Ne49a2fb0 [stack 0]\n Dot {\n  name Dot1\n  xpos 527\n  ypos 154\n }\n Transform {\n  rotate {{parent.rotate}}\n  center {960 540}\n  name TIn\n  xpos 493\n  ypos 172\n }\n Shuffle {\n  red alpha\n  out mask\n  name Shuffle1\n  xpos 493\n  ypos 199\n }\n Dot {\n  name DP\n  xpos 527\n  ypos 252\n  addUserKnob {20 User}\n  addUserKnob {14 f R 0 100}\n  f {{pow((t/parent.steps),parent.power)*parent.size} {pow((t/parent.steps),parent.power)*parent.size}}\n }\nset Ne4e13de0 [stack 0]\n Blur {\n  size {{DP.f(1)} {DP.f(1)}}\n  name Blur1\n  xpos 567\n  ypos 332\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult1\n  xpos 567\n  ypos 372\n }\n FilterErode {\n  channels alpha\n  size {{DP.f(1)/2} {DP.f(1)/2}}\n  filter quadratic\n  name FilterErode1\n  xpos 567\n  ypos 412\n }\n Premult {\n  name Premult2\n  xpos 567\n  ypos 452\n }\n Blur {\n  size {{DP.f(1)*parent.blur_inside/parent.size} {DP.f(1)*parent.blur_inside/parent.size}}\n  filter quadratic\n  name Blur2\n  xpos 567\n  ypos 492\n }\npush $Ne4e13de0\n Blur {\n  size {{DP.f(2)} {DP.f(2)}}\n  name Blur3\n  xpos 667\n  ypos 332\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult2\n  xpos 667\n  ypos 372\n }\n FilterErode {\n  channels alpha\n  size {{DP.f(2)/2} {DP.f(2)/2}}\n  filter quadratic\n  name FilterErode2\n  selected true\n  xpos 667\n  ypos 412\n }\n Premult {\n  name Premult3\n  xpos 667\n  ypos 452\n }\n Blur {\n  size {{DP.f(2)*parent.blur_inside/parent.size} {DP.f(2)*parent.blur_inside/parent.size}}\n  filter quadratic\n  name Blur4\n  xpos 667\n  ypos 492\n }\npush $Ne4e13de0\n Blur {\n  size {{DP.f(3)} {DP.f(3)}}\n  name Blur5\n  xpos 767\n  ypos 332\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult3\n  xpos 767\n  ypos 372\n }\n FilterErode {\n  channels alpha\n  size {{DP.f(3)/2} {DP.f(3)/2}}\n  filter quadratic\n  name FilterErode3\n  xpos 767\n  ypos 412\n }\n Premult {\n  name Premult4\n  xpos 767\n  ypos 452\n }\n Blur {\n  size {{DP.f(3)*parent.blur_inside/parent.size} {DP.f(3)*parent.blur_inside/parent.size}}\n  filter quadratic\n  name Blur6\n  xpos 767\n  ypos 492\n }\npush 0\npush $Ne4e13de0\n Blur {\n  size {{DP.f(4)} {DP.f(4)}}\n  name Blur7\n  xpos 867\n  ypos 332\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult4\n  xpos 867\n  ypos 372\n }\n FilterErode {\n  channels alpha\n  size {{DP.f(4)/2} {DP.f(4)/2}}\n  filter quadratic\n  name FilterErode4\n  xpos 867\n  ypos 412\n }\n Premult {\n  name Premult5\n  xpos 867\n  ypos 452\n }\n Blur {\n  size {{DP.f(4)*parent.blur_inside/parent.size} {DP.f(4)*parent.blur_inside/parent.size}}\n  filter quadratic\n  name Blur8\n  xpos 867\n  ypos 492\n }\npush $Ne4e13de0\n Blur {\n  size {{DP.f(5)} {DP.f(5)}}\n  name Blur9\n  xpos 967\n  ypos 332\n }\n Unpremult {\n  channels rgba\n  alpha mask.a\n  name Unpremult5\n  xpos 967\n  ypos 372\n }\n FilterErode {\n  channels alpha\n  size {{DP.f(5)/2} {DP.f(5)/2}}\n  filter quadratic\n  name FilterErode5\n  xpos 967\n  ypos 412\n }\n Premult {\n  name Premult6\n  xpos 967\n  ypos 452\n }\n Blur {\n  size {{DP.f(5)*parent.blur_inside/parent.size} {DP.f(5)*parent.blur_inside/parent.size}}\n  filter quadratic\n  name Blur10\n  xpos 967\n  ypos 492\n }\n Merge2 {\n  inputs 5+1\n  name Merge1\n  xpos 567\n  ypos 592\n }\n Transform {\n  rotate {{-parent.rotate}}\n  center {960 540}\n  name TOut\n  xpos 321\n  ypos 671\n }\npush $Ne49a2fb0\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name MG\n  xpos 211\n  ypos 671\n }\nset Ne48ae1d0 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle2\n  xpos 41\n  ypos 671\n }\n Add {\n  channels rgba\n  name Add1\n  xpos 41\n  ypos 722\n }\npush $Ne48ae1d0\n Merge2 {\n  inputs 2\n  operation under\n  name MG1\n  xpos 211\n  ypos 722\n }\n Output {\n  name Output1\n  xpos 211\n  ypos 834\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_CameraShake.gizmo",
    "content": "Group {\n name bm_CameraShake\n help \"Gives more control than Nuke's built-in CameraShake gizmo.\\n\\nCamera float, shake & sub-frame jitter settings are defined independently, then all 3 curves are added together into a final, new expression so your output curve has plenty of detail (especially in the motion blur) & only filters your image once.\"\n tile_color 0x222222ff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 Options}\n addUserKnob {26 \"\"}\n addUserKnob {6 switchCheckerboard l Test t \"Replaces input image with checkerboard so you can see your camera shake uncontaminated.\" +STARTLINE}\n addUserKnob {4 noiseType l \"       Noise Type \" t \"Choose between 3 different noise functions to generate different types of camera shake.\" -STARTLINE M {fBm Turbulence Noise \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {7 refFrame l \"Reference Frame\" t \"Setting a reference frame is handy for scaling a curve's frequency around a specific point in time.\\n\\nNote: must be set prior to tweaking any parameters, as changing reference frame will offset your curve.\" R 1000 1100}\n refFrame 1001\n addUserKnob {22 setRef l \"Set to current Frame\" t \"Set the Reference Frame to the current frame in the Viewer.\" T nuke.thisNode().knob('refFrame').setValue(nuke.frame()) +STARTLINE}\n addUserKnob {22 global_random_seed l \"Global Random Seed\" t \"Randomize all seed values (Jitter, Shake and Float).\" -STARTLINE T \"n = nuke.thisNode()\\nfor knob_name in ('jitterSeedRandomBtn', 'shakeSeedRandomBtn', 'floatSeedRandomBtn'):\\n    k = n.knob(knob_name)\\n    if k:\\n        k.execute()\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 globalAmt l \"Global Amount\" t \"Control the overall amount of camera shake in one go.\" R 0 5}\n globalAmt 1\n addUserKnob {26 \"\"}\n addUserKnob {20 fineControl l \"    C O N T R O L S\" n 1}\n addUserKnob {26 spacer01 l \"\" +STARTLINE T \" \"}\n addUserKnob {6 toggleJitter l Jitter t \"Turn Camera Shake Jitter on/off.\" +STARTLINE}\n toggleJitter true\n addUserKnob {7 jitterAmt l \"  \" t \"Adjust the contribution of the Jitter animation curve into the overall camera shake.\" -STARTLINE R 0 5}\n jitterAmt 1\n addUserKnob {6 toggleShake l Shake t \"Turn Camera Shake Shake on/off.\" +STARTLINE}\n toggleShake true\n addUserKnob {7 shakeAmt l \"\" t \"Adjust the contribution of the Shake animation curve into the overall camera shake.\" -STARTLINE R 0 5}\n shakeAmt 1\n addUserKnob {6 toggleFloat l Float t \"Turn Camera Shake Float on/off.\" +STARTLINE}\n toggleFloat true\n addUserKnob {7 floatAmt l \"  \" t \"Adjust the contribution of the Float animation curve into the overall camera shake.\" -STARTLINE R 0 5}\n floatAmt 1\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 weightGroup l \"    E D G E   C O M P E N S A T I O N    //    G L O B A L   T R A N S F O R M\" n 1}\n weightGroup 0\n addUserKnob {26 unnames l \"\" +STARTLINE T \" \"}\n addUserKnob {4 edgePulldown l \"Edge Type\" t \"For larger camera shakes, you will see edge encroachment issues.\\n\\nSpread will \\\"pixel smear\\\" the outer-most pixels to the edge of your format.\\n\\nMirror will flip/flop the input image around it's edges for more detail.\" M {None Spread Mirror \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {41 type l \"Tile Region\" T MirrorBorder.type}\n addUserKnob {41 size l \"Tile Amount (px)\" T MirrorBorder.size}\n addUserKnob {26 chokeEdgesText l \"<b><font color=skyblue>Choke Edges\"}\n addUserKnob {41 leftChoke l \"Left Choke\" T MirrorBorder.leftChoke}\n addUserKnob {41 rightChoke l \"Right Choke\" T MirrorBorder.rightChoke}\n addUserKnob {41 topChoke l \"Top Choke\" T MirrorBorder.topChoke}\n addUserKnob {41 bottomChoke l \"Bottom Choke\" T MirrorBorder.bottomChoke}\n addUserKnob {26 edgeSpacer l \" \"}\n addUserKnob {12 edgeTranslate l Translate t \"Manually translate the image.\"}\n addUserKnob {7 edgeRotate l Rotate t \"Manually rotate the image.\" R 0 360}\n addUserKnob {14 edgeScale l Scale t \"Manually scale the image to prevent edge encroachment.\" R 0 100}\n edgeScale 1\n addUserKnob {20 endGroup_2 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {20 moblurGroup l \"    M O T I O N   B L U R\" n 1}\n moblurGroup 0\n addUserKnob {26 spacer_02 l \"\" +STARTLINE T \" \"}\n addUserKnob {6 toggleMoblur l \"Motion Blur\" t \"Turn motion blur on/off.\" +STARTLINE}\n toggleMoblur true\n addUserKnob {6 show_render_samples l \"Show Render Samples\" t \"When enabled, the viewer uses Render Samples even when not rendering.\" -STARTLINE}\n addUserKnob {26 spacer_03 l \"\" +STARTLINE T \" \"}\n addUserKnob {41 filter T jitterCTRL_fBm.filter}\n addUserKnob {26 spacer_misc l \"\" +STARTLINE T \" \"}\n addUserKnob {3 which_samples +INVISIBLE}\n which_samples {{\"toggleMoblur==0?0:(show_render_samples?RenderSamples:(\\[python \\{nuke.executing()\\}]?RenderSamples:GUISamples))\"}}\n addUserKnob {3 GUISamples l \"GUI Samples\" t \"How many motion blur samples to display in the GUI. (keep this low for Nuke Script interactivity.)\"}\n GUISamples 1\n addUserKnob {3 RenderSamples l \"    Render Samples\" t \"How many motion blur samples to use in the render. (the higher the number, the better your result!)\" -STARTLINE}\n RenderSamples 16\n addUserKnob {26 spacer_misc2 l \"\" +STARTLINE T \" \"}\n addUserKnob {41 shutter T jitterCTRL_fBm.shutter}\n addUserKnob {41 shutteroffset l \"shutter offset\" T jitterCTRL_fBm.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T jitterCTRL_fBm.shuttercustomoffset}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 overallOutput l \"\" -STARTLINE T \"Load these values into the curve editor to view the overall animation curve.\\n\"}\n addUserKnob {12 outputOverallValue l \" \" t \"The final animation curve of your camera shake.\"}\n outputOverallValue {{(toggleJitter==1?jitterCTRL_fBm.translate.x:0)+(toggleShake==1?shakeCTRL_fBm.translate.x:0)+(toggleFloat==1?floatCTRL_fBm.translate.x:0)} {(toggleJitter==1?jitterCTRL_fBm.translate.y:0)+(toggleShake==1?shakeCTRL_fBm.translate.y:0)+(toggleFloat==1?floatCTRL_fBm.translate.y:0)}}\n addUserKnob {26 \"\"}\n addUserKnob {26 info_1 l \"\" +STARTLINE T \"<font color='#777'><b>bm_CameraShake v4.0</b></font><font color='#555'> created by </font><b><a href=\\\"https://github.com/BenMcEwan/nuke_public\\\" style=\\\"color:#777;\\\">Ben McEwan</a></b>.<br>\\n<font color='#555'>Thanks to</font> <a href=\\\"https://github.com/mileslauridsen\\\" style=\\\"color:#777;\\\">Miles Lauridsen</a><font color='#555'> &</font> <a href=\\\"https://www.linkedin.com/in/lukas-fabian-6a8184147/\\\" style=\\\"color:#777;\\\">Lukas Fabian</a><font color='#555'> for their contributions.<br>\\n<b>Last updated:</b> 29th November, 2020.</font>\"}\n addUserKnob {20 jitterTab l Jitter}\n addUserKnob {26 \"\"}\n addUserKnob {14 jitterTranslate l Translate R 0 100}\n jitterTranslate {4 3}\n addUserKnob {7 jitterRotate l Rotate R 0 3}\n addUserKnob {26 \"\"}\n addUserKnob {3 jitterOctaves l Octaves}\n jitterOctaves 3\n addUserKnob {7 jitterSpeed l Frequency R 0 5}\n jitterSpeed 3\n addUserKnob {3 jitterSeed l Seed}\n jitterSeed 71526\n addUserKnob {22 jitterSeedRandomBtn l \"  Random Seed  \" -STARTLINE T \"import random\\nnuke.thisNode().knob('jitterSeed').setValue(random.randint(1,99999))\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 drg l \"\" +STARTLINE T \"Load these values into the curve editor to view the jitter animation curve.\\n\"}\n addUserKnob {12 outputJitterValue l \" \"}\n outputJitterValue {{(jitterCTRL_fBm.translate.x)} {(jitterCTRL_fBm.translate.y)}}\n addUserKnob {26 \"\"}\n addUserKnob {20 shakeTab l Shake}\n addUserKnob {26 \"\"}\n addUserKnob {14 shakeTranslate l Translate R 0 100}\n shakeTranslate {10 7}\n addUserKnob {7 shakeRotate l Rotate R 0 3}\n shakeRotate 0.2\n addUserKnob {26 \"\"}\n addUserKnob {3 shakeOctaves l Octaves}\n shakeOctaves 2\n addUserKnob {7 shakeSpeed l Frequency R 0 5}\n shakeSpeed 1.5\n addUserKnob {3 shakeSeed l Seed}\n shakeSeed 16572\n addUserKnob {22 shakeSeedRandomBtn l \"  Random Seed  \" -STARTLINE T \"import random\\nnuke.thisNode().knob('shakeSeed').setValue(random.randint(1,99999))\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 ehhkmlkjhg l \"\" +STARTLINE T \"Load these values into the curve editor to view the shake animation curve.\\n\"}\n addUserKnob {12 outputShakeValue l \" \"}\n outputShakeValue {{(shakeCTRL_fBm.translate.x)} {(shakeCTRL_fBm.translate.y)}}\n addUserKnob {26 \"\"}\n addUserKnob {20 floatTab l Float}\n addUserKnob {26 \"\"}\n addUserKnob {14 floatTranslate l Translate R 0 100}\n floatTranslate {40 32}\n addUserKnob {7 floatRotate l Rotate R 0 3}\n floatRotate 7\n addUserKnob {26 \"\"}\n addUserKnob {3 floatOctaves l Octaves}\n floatOctaves 1\n addUserKnob {7 floatSpeed l Frequency R 0 5}\n floatSpeed 0.06\n addUserKnob {3 floatSeed l Seed}\n floatSeed 72424\n addUserKnob {22 floatSeedRandomBtn l \"  Random Seed  \" -STARTLINE T \"import random\\nnuke.thisNode().knob('floatSeed').setValue(random.randint(1,99999))\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 wd l \"\" +STARTLINE T \"Load these values into the curve editor to view the float animation curve.\\n\"}\n addUserKnob {12 outputFloatValue l \" \"}\n outputFloatValue {{(floatCTRL_fBm.translate.x)} {(floatCTRL_fBm.translate.y)}}\n addUserKnob {26 \"\"}\n}\n CheckerBoard2 {\n  inputs 0\n  linecolor 0\n  linewidth 60\n  name CheckerBoard1\n  xpos -144\n  ypos -391\n }\n Reformat {\n  type \"to box\"\n  box_width {{Input.width}}\n  box_height {{Input.height}}\n  box_fixed true\n  black_outside true\n  name Reformat1\n  xpos -144\n  ypos -319\n }\n Dot {\n  name Dot2\n  xpos -110\n  ypos -273\n }\n Input {\n  inputs 0\n  name Input\n  xpos 17\n  ypos -374\n }\n Switch {\n  inputs 2\n  which {{switchCheckerboard i}}\n  name Switch1\n  xpos 17\n  ypos -277\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 51\n  ypos -219\n }\nset N6a0db700 [stack 0]\n Dot {\n  name Dot11\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 298\n  ypos -219\n }\n Dot {\n  name Dot12\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 298\n  ypos 365\n }\npush $N6a0db700\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 51\n  ypos -154\n }\nset N6ada6d00 [stack 0]\n Group {\n  name MirrorBorder\n  onCreate \"n = nuke.thisNode()\\nsize = n.knob(\\\"size\\\")\\n\\nsize.setRange(0, 500)\"\n  tile_color 0xa57aaaff\n  note_font \"Bitstream Vera Sans Bold\"\n  note_font_color 0xffffffff\n  xpos -93\n  ypos -91\n  addUserKnob {20 MirrorBorder}\n  addUserKnob {4 type l \"Tile Region\" M {\"to Format\" \"to input BBox\" \"\" \"\"}}\n  addUserKnob {14 size l \"Tile Amount\" R 0 500}\n  size 100\n  addUserKnob {26 chokeEdgesText l \"<b><font color=skyblue>Choke Edges\"}\n  addUserKnob {7 leftChoke l \"Left Choke\" R -100 100}\n  addUserKnob {7 rightChoke l \"Right Choke\" R -100 100}\n  addUserKnob {7 topChoke l \"Top Choke\" R -100 100}\n  addUserKnob {7 bottomChoke l \"Bottom Choke\" R -100 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 \"\" l mask T \"\"}\n  addUserKnob {41 maskChannelMask l \"\" -STARTLINE T Multiply1.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T Multiply1.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T Multiply1.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T Multiply1.fringe}\n  addUserKnob {7 mix}\n  mix 1\n  addUserKnob {20 Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Name: T MirrorBorder}\n  addUserKnob {26 ver l Version: T v03}\n }\n  BackdropNode {\n   inputs 0\n   name BackdropNode1\n   tile_color 0x3f414400\n   label \"width mirror\"\n   note_font_size 60\n   note_font_color 0xffffffff\n   xpos 704\n   ypos -277\n   bdwidth 265\n   bdheight 260\n  }\n  BackdropNode {\n   inputs 0\n   name BackdropNode2\n   tile_color 0x43504700\n   label \"height mirror\"\n   note_font_size 60\n   note_font_color 0xffffffff\n   xpos 1072\n   ypos -271\n   bdwidth 259\n   bdheight 267\n  }\n  BackdropNode {\n   inputs 0\n   name BackdropNode3\n   tile_color 0x5f6870ff\n   label Corners\n   note_font_size 60\n   note_font_color 0xffffffff\n   xpos 1416\n   ypos -270\n   bdwidth 545\n   bdheight 264\n  }\n  Input {\n   inputs 0\n   name Input\n   xpos 2050\n   ypos -606\n  }\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 2084\n   ypos -546\n  }\nset N593fd900 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold\"\n   note_font_color 0xffffffff\n   xpos 1907\n   ypos -549\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   addUserKnob {14 overscan l Overscan R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" +HIDDEN R 1 4}\n   overscanPercent 1\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N2aa26300 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N6a0c4500 [stack 0]\npush $N2aa26300\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N6adfc000 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N6adfc500 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N6adfc500\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N6a0c4500\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N6adfc000\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N28986a00 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N28986a00\n   NoOp {\n    name OutputBBox1\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\n  NoOp {\n   name Settings\n   xpos 1907\n   ypos -493\n   addUserKnob {20 User}\n   addUserKnob {15 mirrorRegion l \"Mirror Region\"}\n   mirrorRegion {{\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) + int(parent.leftChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) + int(parent.bottomChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) - int(parent.rightChoke)\"} {\"(type == 0 ? parent.BBoxToFormat.inputFormat : parent.BBoxToFormat.inputBBox) - int(parent.topChoke)\"}}\n  }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 1818\n   ypos 134\n   number 1\n  }\n  Dot {\n   name Dot26\n   note_font_size 41\n   xpos 1852\n   ypos 236\n  }\nset N6ae10000 [stack 0]\n  Invert {\n   name Invert1\n   xpos 1818\n   ypos 275\n  }\npush $N6ae10000\npush $N593fd900\n  Dot {\n   name Dot4\n   xpos 2084\n   ypos -344\n  }\nset N6ae10a00 [stack 0]\n  Dot {\n   name Dot8\n   xpos 1491\n   ypos -344\n  }\nset N6ae10f00 [stack 0]\n  Dot {\n   name Dot9\n   xpos 1491\n   ypos -170\n  }\nset N6ae11400 [stack 0]\n  Dot {\n   name Dot11\n   xpos 1607\n   ypos -170\n  }\nset N6ae11900 [stack 0]\n  Dot {\n   name Dot13\n   xpos 1735\n   ypos -170\n  }\nset N6ae11e00 [stack 0]\n  Dot {\n   name Dot14\n   xpos 1876\n   ypos -170\n  }\n  Crop {\n   box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y+parent.size.h}}\n   name Crop_BR\n   xpos 1842\n   ypos -124\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   addUserKnob {22 cropToBbox_2 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale -1\n   center {{parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y}}\n   name Transform_BR\n   label BottomRight\n   xpos 1842\n   ypos -71\n  }\npush $N6ae11e00\n  Crop {\n   box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.y+parent.size.h}}\n   name Crop_BL\n   xpos 1701\n   ypos -125\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale -1\n   center {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y}}\n   name Transform_BL\n   label \"Bottom Left\"\n   xpos 1701\n   ypos -70\n  }\npush $N6ae11900\n  Crop {\n   box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n   name Crop_TR\n   xpos 1573\n   ypos -122\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale -1\n   center {{parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n   name Transform_TR\n   label \"Top Right\"\n   xpos 1573\n   ypos -70\n  }\npush $N6ae11400\n  Crop {\n   box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.t}}\n   name Crop_TL\n   xpos 1457\n   ypos -124\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale -1\n   center {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t}}\n   name Transform_TL\n   label \"Top Left\"\n   xpos 1457\n   ypos -72\n  }\npush $N6ae10f00\n  Dot {\n   name Dot7\n   xpos 1146\n   ypos -344\n  }\nset N6ae25400 [stack 0]\n  Dot {\n   name Dot5\n   xpos 1146\n   ypos -171\n  }\nset N6ae25900 [stack 0]\n  Dot {\n   name Dot6\n   xpos 1245\n   ypos -171\n  }\n  Crop {\n   box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.t-parent.size.h} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n   name Crop_T\n   xpos 1211\n   ypos -124\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale {1 -1}\n   center {0 {parent.Settings.mirrorRegion.t}}\n   name Transform_T\n   label Top\n   xpos 1211\n   ypos -73\n  }\npush $N6ae25900\n  Crop {\n   box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.y+parent.size.h}}\n   name Crop_B\n   xpos 1112\n   ypos -126\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale {1 -1}\n   center {0 {parent.Settings.mirrorRegion.y}}\n   name Transform_B\n   label Bottom\n   xpos 1112\n   ypos -71\n  }\npush 0\npush $N6ae25400\n  Dot {\n   name Dot2\n   xpos 883\n   ypos -344\n  }\nset N6ae27700 [stack 0]\n  Dot {\n   name Dot3\n   xpos 883\n   ypos -177\n  }\nset N6ae3c000 [stack 0]\n  Crop {\n   box {{parent.Settings.mirrorRegion.r-parent.size.w} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.r} {parent.Settings.mirrorRegion.t}}\n   name Crop_R\n   xpos 849\n   ypos -128\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale {-1 1}\n   center {{parent.Settings.mirrorRegion.r} 0}\n   filter impulse\n   name Transform_R\n   label Right\n   xpos 849\n   ypos -84\n  }\npush $N6ae3c000\n  Dot {\n   name Dot10\n   xpos 778\n   ypos -177\n  }\n  Crop {\n   box {{parent.Settings.mirrorRegion.x} {parent.Settings.mirrorRegion.y} {parent.Settings.mirrorRegion.x+parent.size.w} {parent.Settings.mirrorRegion.t}}\n   name Crop_L\n   xpos 744\n   ypos -126\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Transform {\n   scale {-1 1}\n   center {{parent.Settings.mirrorRegion.x} 0}\n   filter impulse\n   name Transform_L\n   label Left\n   xpos 744\n   ypos -82\n  }\n  Merge2 {\n   inputs 8+1\n   operation disjoint-over\n   also_merge all\n   name Merge5\n   xpos 1346\n   ypos 122\n  }\n  Dot {\n   name Dot15\n   note_font_size 41\n   xpos 1380\n   ypos 236\n  }\nset N6ae3e300 [stack 0]\n  Merge2 {\n   inputs 2\n   operation mask\n   bbox intersection\n   name MergeIntersection1\n   xpos 1701\n   ypos 233\n   disable {{\"!\\[exists parent.input1]\"}}\n  }\npush $N6ae3e300\n  Dot {\n   name Dot17\n   note_font_size 41\n   xpos 1380\n   ypos 359\n  }\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos 1701\n   ypos 356\n   disable {{\"!\\[exists parent.input1]\"}}\n  }\n  Multiply {\n   inputs 1+1\n   value 0\n   name Multiply1\n   label \"\\[value value]\"\n   xpos 1818\n   ypos 347\n   disable {{\"!\\[exists parent.input1]\"}}\n  }\npush $N6ae10a00\n  Crop {\n   box {{parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion} {parent.Settings.mirrorRegion}}\n   name Crop1\n   xpos 2050\n   ypos -200\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  Merge2 {\n   inputs 2\n   operation disjoint-over\n   also_merge all\n   maskChannelMask {{{exists parent.input[value input1.number] == 0 ? 0 : 5}}}\n   name Merge3\n   xpos 2050\n   ypos 356\n  }\n  Dot {\n   name Dot20\n   label A\n   note_font_size 41\n   xpos 2084\n   ypos 469\n  }\npush $N6ae27700\n  Dot {\n   name Dot12\n   note_font_size 41\n   xpos 600\n   ypos -344\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos 600\n   ypos 471\n  }\n  Dot {\n   name Dot23\n   note_font_size 41\n   xpos 600\n   ypos 558\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos 1940\n   ypos 558\n  }\nset N6ae52300 [stack 0]\n  Merge2 {\n   inputs 2\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   mix {{parent.mix}}\n   name MergeKeymix\n   xpos 2050\n   ypos 551\n  }\npush $N6ae52300\n  Dot {\n   name Dot19\n   note_font_size 41\n   xpos 1940\n   ypos 640\n  }\n  Switch {\n   inputs 2\n   which {{\"parent.mix > 0 ? 1 : 0\"}}\n   name Switch1\n   xpos 2050\n   ypos 637\n  }\n  Output {\n   name Output1\n   xpos 2050\n   ypos 841\n  }\n end_group\npush $N6ada6d00\n Switch {\n  inputs 2\n  which {{edgePulldown==2?1:0}}\n  name Switch2\n  xpos 17\n  ypos -91\n }\n Dot {\n  name Dot1\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 51\n  ypos 50\n }\nset N6ae53700 [stack 0]\n Transform {\n  translate {{noise((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5)*jitterTranslate.w*globalAmt*jitterAmt} {noise(2.5,(base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),3.5)*jitterTranslate.h*globalAmt*jitterAmt}}\n  rotate {{noise((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),jitterOctaves,.5)*jitterRotate*globalAmt*jitterAmt}}\n  scale {1 1}\n  center {{toggleJitter==1?((noise(noise((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5))*input.width)+input.width/2):(input.width/2)*globalAmt*jitterAmt} {toggleJitter==1?((noise(noise((base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),2.5,3.5))*input.height)+input.height/2):(input.height/2)*globalAmt*jitterAmt}}\n  filter {{jitterCTRL_fBm.filter}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name jitterCTRL_noise\n  xpos 169\n  ypos 108\n  disable {{!toggleJitter}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.jitterCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.jitterCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequancy\"}\n  bfreq {{parent.jitterCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{noise((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5)*jitterTranslate.w*globalAmt*jitterAmt} {noise(2.5,(base2-base2(refFrame))*(shakeSpeed/bfreq)+base2(refFrame),3.5)*jitterTranslate.h*globalAmt*jitterAmt}}\n  rotate {{noise(((frame-refFrame)*shakeSpeed)+shakeSeed+refFrame,shakeOctaves,.5)*shakeRotate*globalAmt*shakeAmt}}\n  scale {1 1}\n  center {{toggleShake==1?((noise(noise((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5))*input.width)+input.width/2):(input.width/2)*globalAmt*shakeAmt} {toggleShake==1?((noise(noise((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5))*input.height)+input.height/2):(input.height/2)*globalAmt*shakeAmt}}\n  filter {{jitterCTRL_fBm.filter}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name shakeCTRL_noise\n  xpos 169\n  ypos 134\n  disable {{!toggleShake}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.shakeCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.shakeCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq {{parent.shakeCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{noise((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5)*jitterTranslate.w*globalAmt*jitterAmt} {noise(2.5,(base2-base2(refFrame))*(floatSpeed/bfreq)+base2(refFrame),3.5)*jitterTranslate.h*globalAmt*jitterAmt}}\n  rotate {{noise((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),floatOctaves,.5)*floatRotate*globalAmt*floatAmt}}\n  scale {1 1}\n  center {{toggleFloat==1?((noise(noise((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5))*input.width)+input.width/2):(input.width/2)*globalAmt*floatAmt} {toggleFloat==1?((noise(noise((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5))*input.height)+input.height/2):(input.height/2)*globalAmt*floatAmt}}\n  filter {{jitterCTRL_fBm.filter}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name floatCTRL_noise\n  xpos 169\n  ypos 158\n  disable {{!toggleFloat}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.floatCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.floatCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq {{parent.floatCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{edgeTranslate.x} {edgeTranslate.y}}\n  rotate {{edgeRotate}}\n  scale {{edgeScale} {edgeScale}}\n  center {{\"width/2 - translate\"} {\"height/2 - translate\"}}\n  filter {{jitterCTRL_fBm.filter}}\n  black_outside {{edgePulldown==0?1:0}}\n  motionblur {{which_samples}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name edgeScale3\n  xpos 169\n  ypos 200\n }\npush $N6ae53700\n Transform {\n  translate {{turbulence((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5,jitterOctaves,2,.5)*jitterTranslate.w*globalAmt*jitterAmt} {turbulence((base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),10.5,11.5,jitterOctaves,2,.5)*jitterTranslate.h*globalAmt*jitterAmt}}\n  rotate {{turbulence((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),20.5,21.5,jitterOctaves,2,.5)*jitterRotate*globalAmt*jitterAmt}}\n  scale {1 1}\n  center {{toggleJitter==1?((turbulence((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5,jitterOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*jitterAmt} {toggleJitter==1?((turbulence((base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),10.5,11.5,jitterOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*jitterAmt}}\n  filter {{jitterCTRL_fBm.filter x1 0}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name jitterCTRL_turbulence\n  xpos 17\n  ypos 109\n  disable {{!toggleJitter}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.jitterCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.jitterCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq {{parent.jitterCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{turbulence((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5,shakeOctaves,2,.5)*shakeTranslate.w*globalAmt*shakeAmt} {turbulence((base2-base2(refFrame))*(shakeSpeed/bfreq)+base2(refFrame),10.5,11.5,shakeOctaves,2,.5)*shakeTranslate.h*globalAmt*shakeAmt}}\n  rotate {{turbulence((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),20.5,21.5,shakeOctaves,2,.5)*shakeRotate*globalAmt*shakeAmt x7 70}}\n  scale {1 1}\n  center {{toggleShake==1?((turbulence((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5,shakeOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*shakeAmt} {toggleShake==1?((turbulence((base2-base2(refFrame))*(shakeSpeed/bfreq)+base2(refFrame),10.5,11.5,shakeOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*shakeAmt}}\n  filter {{jitterCTRL_fBm.filter x14 2}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_turbulence.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_turbulence.shuttercustomoffset}}\n  name shakeCTRL_turbulence\n  xpos 17\n  ypos 135\n  disable {{!toggleShake}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.shakeCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.shakeCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq {{parent.shakeCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{turbulence((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5,floatOctaves,2,.5)*floatTranslate.w*globalAmt*floatAmt} {turbulence((base2-base2(refFrame))*(floatSpeed/bfreq)+base2(refFrame),10.5,11.5,floatOctaves,2,.5)*floatTranslate.h*globalAmt*floatAmt}}\n  rotate {{turbulence((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),20.5,21.5,floatOctaves,2,.5)*floatRotate*globalAmt*floatAmt}}\n  scale {1 1}\n  center {{toggleFloat==1?((turbulence((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5,floatOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*floatAmt} {toggleFloat==1?((turbulence((base2-base2(refFrame))*(floatSpeed/bfreq)+base2(refFrame),10.5,11.5,floatOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*floatAmt}}\n  filter {{jitterCTRL_fBm.filter x14 2}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name floatCTRL_turbulence\n  xpos 17\n  ypos 159\n  disable {{!toggleFloat}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{parent.floatCTRL_fBm.base}}\n  addUserKnob {7 base2}\n  base2 {{parent.floatCTRL_fBm.base2}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq {{parent.floatCTRL_fBm.bfreq}}\n }\n Transform {\n  translate {{edgeTranslate.x} {edgeTranslate.y}}\n  rotate {{edgeRotate}}\n  scale {{edgeScale} {edgeScale}}\n  center {{\"width/2 - translate\"} {\"height/2 - translate\"}}\n  filter {{jitterCTRL_fBm.filter}}\n  black_outside {{edgePulldown==0?1:0}}\n  motionblur {{which_samples}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name edgeScale2\n  xpos 17\n  ypos 204\n }\npush $N6ae53700\n Transform {\n  translate {{fBm((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5,jitterOctaves,2,.5)*jitterTranslate.w*globalAmt*jitterAmt} {fBm((base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),10.5,11.5,jitterOctaves,2,.5)*jitterTranslate.h*globalAmt*jitterAmt}}\n  rotate {{fBm((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),20.5,21.5,jitterOctaves,2,.5)*jitterRotate*globalAmt*jitterAmt}}\n  scale {1 1}\n  center {{toggleJitter==1?((fBm((base-base(refFrame))*(jitterSpeed/bfreq)+base(refFrame),2.5,3.5,jitterOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*jitterAmt} {toggleJitter==1?((fBm((base2-base2(refFrame))*(jitterSpeed/bfreq)+base2(refFrame),10.5,11.5,jitterOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*jitterAmt}}\n  black_outside {{edgePulldown==0?1:0}}\n  motionblur {{which_samples}}\n  shutteroffset centred\n  name jitterCTRL_fBm\n  xpos -128\n  ypos 103\n  disable {{!toggleJitter}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{frame*bfreq+jitterSeed}}\n  addUserKnob {7 base2}\n  base2 {{frame*bfreq+jitterSeed+100}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq 3\n }\n Transform {\n  translate {{fBm((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5,shakeOctaves,2,.5)*shakeTranslate.w*globalAmt*shakeAmt} {fBm((base2-base2(refFrame))*(shakeSpeed/bfreq)+base2(refFrame),10.5,11.5,shakeOctaves,2,.5)*shakeTranslate.h*globalAmt*shakeAmt}}\n  rotate {{fBm((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),20.5,21.5,shakeOctaves,2,.5)*shakeRotate*globalAmt*shakeAmt x7 70}}\n  scale {1 1}\n  center {{toggleShake==1?((fBm((base-base(refFrame))*(shakeSpeed/bfreq)+base(refFrame),2.5,3.5,shakeOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*shakeAmt} {toggleShake==1?((fBm((base2-base2(refFrame))*(shakeSpeed/bfreq)+base2(refFrame),10.5,11.5,shakeOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*shakeAmt}}\n  filter {{jitterCTRL_fBm.filter x14 2}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name shakeCTRL_fBm\n  xpos -128\n  ypos 127\n  disable {{!toggleShake}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{frame*bfreq+shakeSeed}}\n  addUserKnob {7 base2}\n  base2 {{frame*bfreq+shakeSeed+100}}\n  addUserKnob {7 bfreq l \"base frequancy\"}\n  bfreq 1.5\n }\n Transform {\n  translate {{fBm((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5,floatOctaves,2,.5)*floatTranslate.w*globalAmt*floatAmt} {fBm((base2-base2(refFrame))*(floatSpeed/bfreq)+base2(refFrame),10.5,11.5,floatOctaves,2,.5)*floatTranslate.h*globalAmt*floatAmt}}\n  rotate {{fBm((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),20.5,21.5,floatOctaves,2,.5)*floatRotate*globalAmt*floatAmt}}\n  scale {1 1}\n  center {{toggleFloat==1?((fBm((base-base(refFrame))*(floatSpeed/bfreq)+base(refFrame),2.5,3.5,floatOctaves,2,.5)*input.width)+input.width/2):(input.width/2)*globalAmt*floatAmt} {toggleFloat==1?((fBm((base2-base2(refFrame))*(floatSpeed/bfreq)+base2(refFrame),10.5,11.5,floatOctaves,2,.5)*input.height)+input.height/2):(input.height/2)*globalAmt*floatAmt}}\n  filter {{jitterCTRL_fBm.filter x14 2}}\n  clamp {{jitterCTRL_fBm.clamp}}\n  black_outside {{jitterCTRL_fBm.black_outside}}\n  motionblur {{jitterCTRL_fBm.motionblur}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name floatCTRL_fBm\n  xpos -128\n  ypos 151\n  disable {{!toggleFloat}}\n  addUserKnob {20 User}\n  addUserKnob {7 base}\n  base {{frame*bfreq+floatSeed}}\n  addUserKnob {7 base2}\n  base2 {{frame*bfreq+floatSeed+100}}\n  addUserKnob {7 bfreq l \"base frequency\"}\n  bfreq 0.06\n }\n Transform {\n  translate {{edgeTranslate.x} {edgeTranslate.y}}\n  rotate {{edgeRotate}}\n  scale {{edgeScale} {edgeScale}}\n  center {{\"width/2 - translate\"} {\"height/2 - translate\"}}\n  filter {{jitterCTRL_fBm.filter}}\n  black_outside {{edgePulldown==0?1:0}}\n  motionblur {{which_samples}}\n  shutter {{jitterCTRL_fBm.shutter}}\n  shutteroffset {{jitterCTRL_fBm.shutteroffset}}\n  shuttercustomoffset {{jitterCTRL_fBm.shuttercustomoffset}}\n  name edgeScale1\n  xpos -128\n  ypos 206\n }\n Switch {\n  inputs 3\n  which {{noiseType i}}\n  name Switch4\n  xpos 17\n  ypos 242\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 17\n  ypos 362\n }\n Output {\n  name Output1\n  xpos 17\n  ypos 460\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_CurveRemapper.gizmo",
    "content": "Group {\n inputs 0\n name bm_CurveRemapper\n help \"A simple, albeit handy tool to remap animation curves from arbitrary values to something more sensible & controllable. Made to help tackle the random output from the curve tool.\"\n knobChanged \"n = nuke.thisNode()\\nif n\\['curve_input'].isAnimated() == True:\\n n\\['curve_minimum'].setEnabled(True)\\n n\\['curve_maximum'].setEnabled(True)\\n n\\['new_minimum'].setEnabled(True)\\n n\\['new_maximum'].setEnabled(True)\\n n\\['helpText_02'].setEnabled(True)\\n n\\['curve_output'].setEnabled(True)\\nelse:\\n n\\['curve_minimum'].setEnabled(False)\\n n\\['curve_maximum'].setEnabled(False)\\n n\\['new_minimum'].setEnabled(False)\\n n\\['new_maximum'].setEnabled(False)\\n n\\['helpText_02'].setEnabled(False)\\n n\\['curve_output'].setEnabled(False)\\n\"\n tile_color 0x232323ff\n selected true\n addUserKnob {20 userTab l Options}\n addUserKnob {26 \"\"}\n addUserKnob {26 helpText_01 l \"\" +STARTLINE T \"I N P U T  A N I M A T I O N  C U R V E  H E R E :\\n\"}\n addUserKnob {7 curve_input l \"Animation Curve\" t \"Paste animation, or expression-link another knob here to start...\"}\n addUserKnob {22 autoMinMax l \"Find Minimum and Maximum Curve Values\" t \"This button will bake the input animation / expression, and find the min & max values of the curve. These values will be auto-set in the appropriate knobs below.\" T \"#Bake expression link.\\nname = nuke.thisNode().name()+\\\".curve_input\\\"\\nnuke.animation(name, \\\"generate\\\", (nuke.knob('first_frame'), nuke.knob('last_frame'), \\\".01\\\", \\\"y\\\", name))\\n\\n#Adds python into expression knob, which evalutes and finds the answer\\nnuke.thisNode().knob('curve_minimum').setExpression(\\\"\\[python min((key.y for key in nuke.thisNode().knob('curve_input').animation(0).keys()))]\\\")\\nnuke.thisNode().knob('curve_maximum').setExpression(\\\"\\[python max((key.y for key in nuke.thisNode().knob('curve_input').animation(0).keys()))]\\\")\\n\\n#Remove the expression\\nnuke.thisNode().knob('curve_minimum').clearAnimated()\\nnuke.thisNode().knob('curve_maximum').clearAnimated()\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {7 curve_minimum l \"Curve Minimum\" t \"Minimum value of the input curve.\\n(use the button above to auto-set this value)\" +DISABLED}\n addUserKnob {7 curve_maximum l \"Curve Maximum\" t \"Maximum value of the input curve.\\n(use the button above to auto-set this value)\" +DISABLED}\n curve_maximum 1\n addUserKnob {7 new_minimum l \"New Minimum\" t \"Set the new minimum value of the curve.\" +DISABLED}\n addUserKnob {7 new_maximum l \"New Maximum\" t \"Set the new maxmum value of the curve.\" +DISABLED}\n new_maximum 1\n addUserKnob {26 \"\"}\n addUserKnob {26 helpText_02 l \"\" +STARTLINE +DISABLED T \"O U T P U T  R E M A P P E D  C U R V E  F R O M  H E R E :\\n\"}\n addUserKnob {7 curve_output l Output t \"Your remapped animation curve!\" +DISABLED}\n curve_output {{lerp(curve_minimum,new_minimum,curve_maximum,new_maximum,curve_input)}}\n addUserKnob {26 \"\"}\n addUserKnob {26 version_info l \"\" +STARTLINE T \"<font color='#666'><b>bm_CurveRemapper v2.0</b> created by <a href='https://www.benmcewan.com/blog' style=\\\"color: #888;\\\"><b>Ben McEwan</b></a>.<br> <b>Last updated:</b> 28th August, 2020.<br>\\n\"}\n}\n Output {\n  inputs 0\n  name Output1\n  selected true\n  xpos -651\n  ypos -209\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_MatteCheck.gizmo",
    "content": "Group {\n name bm_MatteCheck\n help \"A simple tool designed to check the accuracy of mattes. Choose between overlaying a red color, viewing the matte against a grey background, or viewing the matte against a checkerboard.\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() in ('Type', 'showPanel'):\\n    Type = n\\['Type'].value()\\n    if Type == 'Colour Overlay':\\n\\n        n\\['overlayColour'].setVisible(True)\\n        n\\['overlayMix'].setVisible(True)\\n        n\\['greyAmt'].setVisible(False)\\n        n\\['chkSize'].setVisible(False)\\n        n\\['chkContrast'].setVisible(False)\\n\\n    elif Type == 'Grey Background':\\n\\n        n\\['overlayColour'].setVisible(False)\\n        n\\['overlayMix'].setVisible(False)\\n        n\\['greyAmt'].setVisible(True)\\n        n\\['chkSize'].setVisible(False)\\n        n\\['chkContrast'].setVisible(False)\\n\\n    elif Type == 'Checkerboard':\\n\\n        n\\['overlayColour'].setVisible(False)\\n        n\\['overlayMix'].setVisible(False)\\n        n\\['greyAmt'].setVisible(False)\\n        n\\['chkSize'].setVisible(True)\\n        n\\['chkContrast'].setVisible(True)\"\n tile_color 0x232323ff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKnob {20 Options}\n addUserKnob {26 \"\"}\n addUserKnob {4 Type t \"Choose between a colour overlay, or placing your matte over a grey background.\" M {\"Colour Overlay\" \"Grey Background\" Checkerboard \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {18 overlayColour l \"Overlay Colour\"}\n overlayColour {1 0 0}\n addUserKnob {6 overlayColour_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 overlayMix l \"Overlay Mix\"}\n overlayMix 0.5\n addUserKnob {7 chkSize l Size +HIDDEN R 0 64}\n chkSize 17\n addUserKnob {7 chkContrast l Contrast +HIDDEN}\n chkContrast 0.27\n addUserKnob {18 greyAmt l \"Grey Value\" t \"Brightness of the grey backdrop.\" +HIDDEN}\n greyAmt 0.18\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {20 infoTab l Info}\n addUserKnob {26 \"\"}\n addUserKnob {26 versionInfo l \"\" +STARTLINE T \"\\nCreated by Ben McEwan\\nwww.benmcewan.com\\n\\nVersion 1.1\\nLast Updated: January 23rd, 2018\\n\"}\n addUserKnob {26 \"\"}\n}\n Input {\n  inputs 0\n  name matte\n  xpos -97\n  ypos -413\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  selected true\n  xpos -97\n  ypos -374\n }\n Dot {\n  name Dot4\n  xpos -63\n  ypos -320\n }\nset N89ea730 [stack 0]\n Dot {\n  name Dot6\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -63\n  ypos -152\n }\npush $N89ea730\n Invert {\n  channels alpha\n  name Invert1\n  xpos 76\n  ypos -329\n }\nset N88b0400 [stack 0]\n Dot {\n  name Dot5\n  xpos 313\n  ypos -320\n }\n CheckerBoard2 {\n  inputs 0\n  format {{{input.format}}}\n  boxsize {{chkSize}}\n  color0 {0.1000000015 0.1000000015 0.1000000015 1}\n  color2 {0.1000000015 0.1000000015 0.1000000015 1}\n  linecolor 0\n  centerlinewidth 0\n  name CheckerBoard1\n  xpos 373\n  ypos -483\n }\n ColorCorrect {\n  contrast {{chkContrast}}\n  name ColorCorrect1\n  xpos 373\n  ypos -389\n }\n Input {\n  inputs 0\n  name plate\n  xpos -94\n  ypos -495\n }\nset N8a71d40 [stack 0]\n Dot {\n  name Dot2\n  xpos 110\n  ypos -492\n }\nset N8a73f40 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 203\n  ypos -492\n }\nset N9dbc2f0 [stack 0]\n Dot {\n  name Dot3\n  xpos 313\n  ypos -492\n }\n Keymix {\n  inputs 3\n  name Keymix3\n  xpos 279\n  ypos -395\n }\npush $N88b0400\npush $N9dbc2f0\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos 169\n  ypos -455\n }\n Grade {\n  multiply 0\n  add {{parent.greyAmt} {parent.greyAmt} {parent.greyAmt} 0}\n  name Grade1\n  xpos 169\n  ypos -431\n }\npush $N8a73f40\n Keymix {\n  inputs 3\n  name Keymix2\n  xpos 76\n  ypos -387\n }\npush $N89ea730\n Constant {\n  inputs 0\n  color {{overlayColour.r} {overlayColour.g} {overlayColour.b} {curve}}\n  name Constant1\n  xpos -345\n  ypos -349\n }\npush $N8a71d40\n Dot {\n  name Dot1\n  xpos -172\n  ypos -492\n }\n Keymix {\n  inputs 3\n  mix {{overlayMix}}\n  name Keymix1\n  xpos -206\n  ypos -329\n }\n Switch {\n  inputs 3\n  which {{Type x1 1}}\n  name typeSwitch1\n  xpos -206\n  ypos -231\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -206\n  ypos -161\n }\n Output {\n  name Output1\n  xpos -206\n  ypos -80\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_NoiseGen.gizmo",
    "content": "Group {\nname bm_NoiseGen\n inputs 0\n help \"Generates a noise curve.\"\n tile_color 0x222222ff\n addUserKnob {20 optionsTab l Options}\n addUserKnob {26 \"\"}\n addUserKnob {4 pChoice l \"Noise Type\" M {Random Noise Sine Triangle Square Sawtooth Bounce Blip \"\" \"\" \"\"}}\n addUserKnob {26 \"\"}\n addUserKnob {7 noiseMin l Minimum R -10 0}\n addUserKnob {7 noiseMax l Maximum R 0 10}\n noiseMax 1\n addUserKnob {7 noiseFrequency l Frequency}\n noiseFrequency 10\n addUserKnob {7 noiseOffset l \"Time Offset\" R -10 10}\n addUserKnob {3 noiseSeed l Seed}\n noiseSeed 12345\n addUserKnob {22 randomizeSeedBtn l \"  Randomize Seed  \" -STARTLINE T \"import random\\nnuke.thisNode().knob('noiseSeed').setValue(random.randint(1,99999))\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 noiseOutput l Output R -10 10}\n noiseOutput {{\"pChoice==0?random((frame+noiseSeed+noiseOffset)/noiseFrequency) * (noiseMax-noiseMin) + noiseMin:\\npChoice==1?(noise((frame+noiseSeed+noiseOffset)/noiseFrequency)+1)/2 * (noiseMax-noiseMin) + noiseMin:\\npChoice==2?(sin(2*pi*(frame+noiseSeed+noiseOffset)/noiseFrequency)+1)/2 * (noiseMax-noiseMin) + noiseMin:\\npChoice==3?(asin(sin(2*pi*(frame+noiseSeed+noiseOffset)/noiseFrequency))/pi+0.5) * (noiseMax-noiseMin) + noiseMin:\\npChoice==4?int(sin(2*pi*(frame+noiseSeed+noiseOffset)/noiseFrequency)+1) * (noiseMax-noiseMin) + noiseMin:\\npChoice==5?((frame+noiseSeed+noiseOffset) % noiseFrequency)/noiseFrequency * (noiseMax-noiseMin) + noiseMin:\\npChoice==6?abs(sin(pi*(frame+noiseSeed + noiseOffset)/noiseFrequency))* (noiseMax-noiseMin) + noiseMin:\\npChoice==7?((frame+noiseSeed+(noiseOffset+noiseFrequency)) % (noiseFrequency+(noiseFrequency/5))/(noiseFrequency)) *(noiseFrequency/(noiseFrequency/5)) - (noiseFrequency/(noiseFrequency/5)) >= 0 ? noiseMax : noiseMin:\\n0\"}}\n addUserKnob {26 \"\"}\n addUserKnob {20 info l Info}\n addUserKnob {26 \"\"}\n addUserKnob {26 versionText l \"\" +STARTLINE T \"\\nCreated by Ben McEwan\\nwww.benmcewan.com\\n\\nVersion 2.0\\nLast Updated: January 23rd, 2018\\n\"}\n addUserKnob {26 \"\"}\n}\n Output {\n  inputs 0\n  name Output1\n  xpos 3\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_OpticalGlow.gizmo",
    "content": "Group {\n name bm_OpticalGlow\n help \"bm_OpticalGlow uses common algorithms to produce an optically-correct exponential glow.\\n\\nCompletely rebuilt from v3.1 to be light-weight and easier to use.\"\n tile_color 0x222222ff\n selected true\n addUserKnob {20 Options}\n addUserKnob {4 algorithm_choice l \"Glow Math\" t \"Glow is built with a sequence of exponentially-increasing sub-frame values on a Blur node, which are then combined with a TimeBlur to produce the end result.\" M {Inverse-Square Fibonacci Double Distributed \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 spacer2 l \"\" -STARTLINE T \"  \"}\n addUserKnob {6 effect_only l \"effect only\" t \"Display the glow only.\" -STARTLINE}\n addUserKnob {3 glow_divisions l Divisions t \"How many glow layers to add up. A higher number will result in a smoother glow, but a slower processing time.\"}\n glow_divisions 10\n addUserKnob {26 spacer1 l \"\" -STARTLINE T \"             \"}\n addUserKnob {6 use_threshold l \"use luminance threshold\" t \"Enable the luminance threshold option, which allows you to isolate and only glow the highlights.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 threshold l \"Luminance Threshold Selector\" n 1}\n threshold 0\n addUserKnob {6 view_luminance l \"view luminance threshold\" t \"Internally shuffles the alpha to RGB for easy viewing.\" +STARTLINE}\n addUserKnob {41 range l \"\" t \"Use this to isolate the highlights in your image.\" +STARTLINE T Keyer1.range}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {7 glow_size l size t \"Radius of the blur.\" R 0 300}\n glow_size 200\n addUserKnob {7 glow_intensity l intensity t \"A multiplier to control the brightness of your blur.\" R 0 5}\n glow_intensity 1\n addUserKnob {19 glow_gamma l gamma t \"Increase gamma to pump up the midtones.\\n\\nChanging the gamma will change the \\\"glow math\\\" algorithm, resulting in a less photorealistic glow. You probably only want to use this subtly in foggy, night-time shots.\" R 0 2}\n glow_gamma 1\n addUserKnob {6 glow_gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 aspect t \"Change the aspect ratio of your glow.\\n• Higher value = horizontal stretch\\n• Lower value = vertical stretch\" R 0.5 2}\n aspect 1\n addUserKnob {26 \"\"}\n addUserKnob {6 crop_bbox l \"crop bbox to format\" t \"If the glow gets too big, your bbox might become crazy. Enabling this option will ensure your bbox is cropped to your format + any overscan you set.\" +STARTLINE}\n addUserKnob {7 overscan t \"If you use the \\\"crop bbox to format\\\" option, and then add lens distortion to the end of your comp, the glow won't reach the edge of your format.\\n\\nUse this value to increase the bbox size, as necessary.\" R 0 250}\n overscan 100\n addUserKnob {26 spacer l \"\" +STARTLINE T \" \"}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {26 info l \"\" +STARTLINE T \"<font color='#777'><b>bm_OpticalGlow v4.3</b></font><font color='#555'> created by </font><b><a href=\\\"https://github.com/BenMcEwan/nuke_public\\\" style=\\\"color:#777;\\\">Ben McEwan</a></b>.<br>\\n<font color='#555'><b>Last updated:</b> 25th February, 2025.</font>\"}\n}\n Input {\n  inputs 0\n  name Input\n  xpos -260\n  ypos -217\n }\n NoTimeBlur {\n  name NoTimeBlur1\n  xpos -260\n  ypos -191\n }\n Dot {\n  name Dot2\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -226\n  ypos -115\n }\nset N143d9d30 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos -170\n  ypos -50\n }\nset N15ec4da0 [stack 0]\npush $N15ec4da0\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  from1 rgba.alpha\n  to1 rgba.green\n  from2 rgba.alpha\n  to2 rgba.blue\n  name Copy1\n  xpos -170\n  ypos -14\n }\n Dot {\n  name Dot6\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -136\n  ypos 365\n }\n Input {\n  inputs 0\n  name mask\n  xpos 535\n  ypos -218\n  number 2\n }\n NoTimeBlur {\n  name NoTimeBlur3\n  xpos 535\n  ypos -192\n }\n Expression {\n  expr3 a\n  name Expression1\n  xpos 535\n  ypos -166\n }\n Dot {\n  name Dot1\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 569\n  ypos 339\n }\npush $N15ec4da0\n Input {\n  inputs 0\n  name area\n  xpos 27\n  ypos -218\n  number 1\n }\n NoTimeBlur {\n  name NoTimeBlur2\n  xpos 27\n  ypos -192\n }\n Expression {\n  expr3 a\n  name Expression2\n  xpos 27\n  ypos -166\n }\npush $N143d9d30\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge3\n  xpos 27\n  ypos -118\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox B\n  name Merge5\n  xpos 27\n  ypos -44\n  disable {{!use_threshold}}\n }\n Dot {\n  name Dot11\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 61\n  ypos 47\n }\nset N15f14370 [stack 0]\n Dot {\n  name Dot10\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 177\n  ypos 47\n }\nset N15eb2c30 [stack 0]\n Dot {\n  name Dot9\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 283\n  ypos 47\n }\nset N15f47310 [stack 0]\n Dot {\n  name Dot8\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 399\n  ypos 47\n }\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2.5 x1.100000024 7.5 15 x1.299999952 35 x1.399999976 70 150 350 750 x1.799999952 1250 x1.899999976 1500 2000} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2.5 x1.100000024 7.5 15 x1.299999952 35 x1.399999976 70 150 350 750 x1.799999952 1250 x1.899999976 1500 2000}}\n  crop false\n  name glow_distributed\n  xpos 365\n  ypos 95\n }\npush $N15f47310\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2 x1.100000024 4 8 x1.299999952 16 x1.399999976 32 64 128 256 x1.799999952 512 x1.899999976 1024 2048} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2 x1.100000024 4 8 x1.299999952 16 x1.399999976 32 64 128 256 x1.799999952 512 x1.899999976 1024 2048}}\n  crop false\n  name glow_double\n  xpos 249\n  ypos 95\n }\npush $N15eb2c30\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 3 x1.100000024 5 8 x1.299999952 13 x1.399999976 21 34 55 89 x1.799999952 144 x1.899999976 233 377} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 3 x1.100000024 5 8 x1.299999952 13 x1.399999976 21 34 55 89 x1.799999952 144 x1.899999976 233 377}}\n  crop false\n  name glow_fibonacci\n  xpos 143\n  ypos 95\n }\npush $N15f14370\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 1 x1.100000024 4 9 x1.299999952 16 x1.399999976 25 36 49 64 x1.799999952 81 x1.899999976 100 121} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 1 x1.100000024 4 9 x1.299999952 16 x1.399999976 25 36 49 64 x1.799999952 81 x1.899999976 100 121}}\n  crop false\n  name glow_inverseSquare\n  xpos 27\n  ypos 93\n }\n Switch {\n  inputs 4\n  which {{algorithm_choice}}\n  name Switch2\n  xpos 189\n  ypos 152\n }\n TimeBlur {\n  divisions {{glow_divisions}}\n  shutteroffset start\n  shuttercustomoffset 0.5\n  name TimeBlur1\n  xpos 27\n  ypos 202\n }\n Multiply {\n  value {{glow_intensity**2/2}}\n  name Multiply2\n  xpos 27\n  ypos 240\n }\n Gamma {\n  value {{glow_gamma}}\n  name Gamma1\n  xpos 27\n  ypos 276\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox B\n  name Merge4\n  xpos 27\n  ypos 336\n  disable {{\"!\\[exists parent.input2]\"}}\n }\nset N15ead1f0 [stack 0]\n Dot {\n  name Dot5\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 61\n  ypos 405\n }\npush $N15ead1f0\npush $N143d9d30\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels rgb\n  name Merge1\n  xpos -260\n  ypos 336\n }\n Switch {\n  inputs 3\n  which {{\"view_luminance == 1?2:effect_only\"}}\n  name Switch1\n  xpos -260\n  ypos 402\n }\n Crop {\n  box {{-overscan} {-overscan} {Input.width+overscan} {Input.height+overscan}}\n  name Crop1\n  xpos -260\n  ypos 469\n  disable {{!crop_bbox}}\n }\npush $N143d9d30\n Dot {\n  name Dot4\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -361\n  ypos -115\n }\n Shuffle2 {\n  fromInput1 {{0} B}\n  fromInput2 {{0} B}\n  mappings \"4 black -1 -1 rgba.red 0 0 black -1 -1 rgba.green 0 1 black -1 -1 rgba.blue 0 2 black -1 -1 rgba.alpha 0 3\"\n  name Shuffle1\n  label \"\\[value in1]\"\n  selected true\n  xpos -395\n  ypos 429\n  disable {{!effect_only}}\n }\n Dot {\n  name Dot3\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -361\n  ypos 511\n }\n Dissolve {\n  inputs 2\n  which {{parent.mix}}\n  name Dissolve2\n  xpos -260\n  ypos 502\n }\n Output {\n  name Output1\n  xpos -260\n  ypos 567\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_bm_OpticalLightwrap.gizmo",
    "content": "Group {\n name bm_OpticalLightwrap\n help \"bm_OpticalLightwrap uses common algorithms to produce an optically-correct exponential-glow-based lightwrap.\\n\\nCompletely rebuilt from v3.1 to be light-weight and easier to use.\"\n tile_color 0x222222ff\n selected true\n addUserKnob {20 Options}\n addUserKnob {4 algorithm_choice l \"Glow Math\" t \"Glow is built with a sequence of exponentially-increasing sub-frame values on a Blur node, which are then combined with a TimeBlur to produce the end result.\" M {Inverse-Square Fibonacci Double Distributed \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {26 spacer2 l \"\" -STARTLINE T \"  \"}\n addUserKnob {6 effect_only l \"effect only\" t \"Display the glow only.\" -STARTLINE}\n effect_only false\n addUserKnob {3 glow_divisions l Divisions t \"How many glow layers to add up. A higher number will result in a smoother glow, but a slower processing time.\"}\n glow_divisions 10\n addUserKnob {26 spacer1 l \"\" -STARTLINE T \"             \"}\n addUserKnob {6 use_threshold l \"use luminance threshold\" t \"Enable the luminance threshold option, which allows you to isolate and only glow the highlights.\" -STARTLINE}\n use_threshold true\n addUserKnob {26 \"\"}\n addUserKnob {20 threshold l \"Luminance Threshold Selector\" n 1}\n threshold 0\n addUserKnob {6 view_luminance l \"view luminance threshold\" t \"Internally shuffles the alpha to RGB for easy viewing.\" +STARTLINE}\n addUserKnob {41 range l \"\" t \"Use this to isolate the highlights in your image.\" +STARTLINE T Keyer1.range}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {14 preblur_BG l \"pre-blur BG\" t \"Blur the background before the lightwrap bets generated. This can help remove any high-contrast, detailed edges ghosting through.\" R 0 100}\n preblur_BG 20\n addUserKnob {26 \"\"}\n addUserKnob {7 glow_size l size t \"Radius of the blur.\" R 0 300}\n glow_size 200\n addUserKnob {7 glow_intensity l intensity t \"A multiplier to control the brightness of your blur.\" R 0 5}\n glow_intensity 1\n addUserKnob {19 glow_gamma l gamma t \"Increase gamma to pump up the midtones.\\n\\nChanging the gamma will change the \\\"glow math\\\" algorithm, resulting in a less photorealistic glow. You probably only want to use this subtly in foggy, night-time shots.\" R 0 2}\n glow_gamma 1\n addUserKnob {6 glow_gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 aspect t \"Change the aspect ratio of your glow.\\n• Higher value = horizontal stretch\\n• Lower value = vertical stretch\" R 0.5 2}\n aspect 1\n addUserKnob {26 \"\"}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 \"\"}\n addUserKnob {26 info l \"\" +STARTLINE T \"<font color='#777'><b>bm_OpticalLightwrap v4.2</b></font><font color='#555'> created by </font><b><a href=\\\"https://github.com/BenMcEwan/nuke_public\\\" style=\\\"color:#777;\\\">Ben McEwan</a></b>.<br>\\n<font color='#555'><b>Last updated:</b> 25th February, 2025.</font>\"}\n}\n Input {\n  inputs 0\n  name fg\n  xpos 585\n  ypos -246\n }\n NoTimeBlur {\n  name NoTimeBlur3\n  xpos 585\n  ypos -220\n }\n Expression {\n  expr3 a\n  name Expression3\n  xpos 585\n  ypos -178\n }\n Dot {\n  name Dot12\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 619\n  ypos -17\n }\nset N1689c880 [stack 0]\n Dot {\n  name Dot13\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 619\n  ypos 316\n }\nset N168a1a00 [stack 0]\n Dot {\n  name Dot14\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 619\n  ypos 522\n }\nset N168a69e0 [stack 0]\n Dot {\n  name Dot15\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 619\n  ypos 598\n }\nset N168aba40 [stack 0]\n Input {\n  inputs 0\n  name bg\n  xpos -259\n  ypos -252\n  number 1\n }\n NoTimeBlur {\n  name NoTimeBlur1\n  xpos -259\n  ypos -226\n }\n Blur {\n  channels rgba\n  size {{preblur_BG} {preblur_BG}}\n  name Blur1\n  xpos -259\n  ypos -167\n }\n Dot {\n  name Dot2\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -226\n  ypos -115\n }\nset N168cb3f0 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {0.5 1 1 1}\n  name Keyer1\n  xpos -260\n  ypos -50\n }\nset N168d0520 [stack 0]\npush $N168d0520\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.red\n  from1 rgba.alpha\n  to1 rgba.green\n  from2 rgba.alpha\n  to2 rgba.blue\n  name Copy1\n  xpos -260\n  ypos -14\n }\n Dot {\n  name Dot6\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos -226\n  ypos 418\n }\n Input {\n  inputs 0\n  name mask\n  xpos 796\n  ypos -246\n  number 3\n }\n NoTimeBlur {\n  name NoTimeBlur4\n  xpos 796\n  ypos -220\n }\n Expression {\n  expr3 a\n  name Expression1\n  xpos 796\n  ypos -182\n }\n Dot {\n  name Dot1\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 830\n  ypos 351\n }\npush $N168a1a00\npush $N1689c880\npush $N168d0520\n Input {\n  inputs 0\n  name area\n  xpos 27\n  ypos -252\n  number 2\n }\n NoTimeBlur {\n  name NoTimeBlur2\n  xpos 27\n  ypos -226\n }\n Expression {\n  expr3 a\n  name Expression2\n  xpos 27\n  ypos -194\n }\npush $N168cb3f0\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge3\n  xpos 27\n  ypos -118\n  disable {{\"!\\[exists parent.input2]\"}}\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox B\n  name Merge5\n  xpos 27\n  ypos -44\n  disable {{!use_threshold}}\n }\n Merge2 {\n  inputs 2\n  operation stencil\n  bbox B\n  name Merge8\n  xpos 27\n  ypos -20\n }\n Dot {\n  name Dot11\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 61\n  ypos 60\n }\nset N16958e80 [stack 0]\n Dot {\n  name Dot10\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 177\n  ypos 60\n }\nset N1695def0 [stack 0]\n Dot {\n  name Dot9\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 283\n  ypos 60\n }\nset N16962e60 [stack 0]\n Dot {\n  name Dot8\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 399\n  ypos 60\n }\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2.5 x1.100000024 7.5 15 x1.299999952 35 x1.399999976 70 150 350 750 x1.799999952 1250 x1.899999976 1500 2000} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 x1 2.5 x1.100000024 7.5 15 x1.299999952 35 x1.399999976 70 150 350 750 x1.799999952 1250 x1.899999976 1500 2000}}\n  crop false\n  name glow_distributed\n  xpos 365\n  ypos 108\n }\npush $N16962e60\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 2 x1.100000024 4 8 x1.299999952 16 x1.399999976 32 64 128 256 x1.799999952 512 x1.899999976 1024 2048} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 2 x1.100000024 4 8 x1.299999952 16 x1.399999976 32 64 128 256 x1.799999952 512 x1.899999976 1024 2048}}\n  crop false\n  name glow_double\n  xpos 249\n  ypos 108\n }\npush $N1695def0\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 3 x1.100000024 5 8 x1.299999952 13 x1.399999976 21 34 55 89 x1.799999952 144 x1.899999976 233 377} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 3 x1.100000024 5 8 x1.299999952 13 x1.399999976 21 34 55 89 x1.799999952 144 x1.899999976 233 377}}\n  crop false\n  name glow_fibonacci\n  xpos 143\n  ypos 108\n }\npush $N16958e80\n Blur {\n  channels rgba\n  size {{aspect>1?curve(((frame-1)%(1-1+1))+1)*glow_size/25*aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 1 x1.100000024 4 9 x1.299999952 16 x1.399999976 25 36 49 64 x1.799999952 81 x1.899999976 100 121} {aspect<1?curve(((frame-1)%(1-1+1))+1)*glow_size/25/aspect:curve(((frame-1)%(1-1+1))+1)*glow_size/25 i x1 1 x1.100000024 4 9 x1.299999952 16 x1.399999976 25 36 49 64 x1.799999952 81 x1.899999976 100 121}}\n  crop false\n  name glow_inverseSquare\n  xpos 27\n  ypos 106\n }\n Switch {\n  inputs 4\n  which {{algorithm_choice}}\n  name Switch2\n  xpos 27\n  ypos 166\n }\n TimeBlur {\n  divisions {{glow_divisions}}\n  shutteroffset start\n  shuttercustomoffset 0.5\n  name TimeBlur1\n  xpos 27\n  ypos 202\n }\n Multiply {\n  value {{glow_intensity**2/2}}\n  name Multiply2\n  xpos 27\n  ypos 240\n }\n Gamma {\n  value {{glow_gamma}}\n  name Gamma1\n  xpos 27\n  ypos 276\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox A\n  name Merge7\n  xpos 27\n  ypos 313\n }\n Merge2 {\n  inputs 2\n  operation mask\n  bbox B\n  name Merge4\n  xpos 27\n  ypos 348\n  disable {{\"!\\[exists parent.input3]\"}}\n }\n Dot {\n  name Dot5\n  label \"  \"\n  note_font \"Arial Black\"\n  note_font_size 16\n  xpos 61\n  ypos 405\n }\nset N169f5ae0 [stack 0]\npush $N169f5ae0\npush $N168a69e0\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels rgb\n  name Merge1\n  xpos 266\n  ypos 519\n }\n Switch {\n  inputs 3\n  which {{\"view_luminance == 1?2:effect_only\"}}\n  name Switch1\n  xpos -260\n  ypos 519\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos -260\n  ypos 595\n }\npush $N168aba40\n Shuffle2 {\n  fromInput1 {{0} B}\n  fromInput2 {{0} B}\n  mappings \"4 black -1 -1 rgba.red 0 0 black -1 -1 rgba.green 0 1 black -1 -1 rgba.blue 0 2 black -1 -1 rgba.alpha 0 3\"\n  name Shuffle1\n  label \"\\[value in1]\"\n  selected true\n  xpos 585\n  ypos 635\n  disable {{!effect_only}}\n }\n Dissolve {\n  inputs 2\n  which {{parent.mix}}\n  name Dissolve2\n  xpos -260\n  ypos 635\n }\n Output {\n  name Output1\n  xpos -260\n  ypos 684\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_deHaze.gizmo",
    "content": "Group {\n name deHaze\n tile_color 0x55ffbfff\n selected true\n addUserKnob {20 Controls}\n addUserKnob {7 dehaze t \"Sets the overall intensity of the dehaze operation.\"}\n dehaze 1\n addUserKnob {7 topGamma l \"highlight protection\" t \"This helps to prevent funky effects in the brightest of areas (e.g. the sky).\" R 1 10}\n topGamma 3\n addUserKnob {7 offsetHaze l offset t \"Lets you set the point where the dehaze starts.\\nNeeds highlight protection greater than 1 to work.\" R -1 1}\n addUserKnob {26 sep00_1 l \"  \"}\n addUserKnob {26 sep00 l \"colour correct\" T \"\"}\n addUserKnob {18 gainHaze l gain t \"Adjusts the gain of dehazed areas to tackle colour shifts.\"}\n gainHaze {1 1 1}\n addUserKnob {6 gainHaze_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 gammaHaze l gamma t \"Adjusts the gamma of dehazed areas to tackle colour shifts.\"}\n gammaHaze {1 1 1}\n addUserKnob {7 satHaze l saturation t \"Adjusts the saturation of dehazed areas to tackle colour shifts.\"}\n satHaze 1\n addUserKnob {26 sep02_1 l \"  \"}\n addUserKnob {6 shuffleMap l \"shuffle haze to alpha\" t \"Shuffles the result of the affected hazy areas into the alpha channel.\\nNote: this is not the haze map that is generated to affect the haze in the image.\" +STARTLINE}\n addUserKnob {20 finetune l \"fine tune\"}\n addUserKnob {6 prevBil l \"preview haze matte\" t \"Lets you preview you the generated haze map. This is helpful to properly set it up for your shot, to fix holes and take care of edges.\" +STARTLINE}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" -STARTLINE T C_Bilateral1.useGPUIfAvailable}\n addUserKnob {26 sep02 l \"  \" T \"\"}\n addUserKnob {7 erodeMap l erode t \"Erodes darkened areas from your haze map. If you experience holes (e.g. in the sky), try to increase the value.\" R 0 30}\n erodeMap 10\n addUserKnob {26 sep03 l \"  \" T \"\"}\n addUserKnob {3 sizeBil l \"bilateral size\" t \"Sets the general size of the bilateral operation.\"}\n sizeBil 20\n addUserKnob {41 positionalSigma l \"bilaterial positional Σ\" T C_Bilateral1.positionalSigma}\n addUserKnob {41 colourSigma l \"bilateral colour Σ\" T C_Bilateral1.colourSigma}\n addUserKnob {26 credit t \"lp_deHaze v1.0\\n(c)2020 lucas pfaff\\nbased on a tutorial by Mads Hagbarth Damsbo: https://vimeo.com/377653826\" +INVISIBLE T \"lp_deHaze v1.0\\n(c)2020 lucas pfaff\\nbased on a tutorial by Mads Hagbarth Damsbo: https://vimeo.com/377653826\"}\n}\n Input {\n  inputs 0\n  name img\n  xpos 829\n  ypos 99\n }\n Dot {\n  name Dot3\n  xpos 863\n  ypos 215\n }\nset N6c6de000 [stack 0]\n Dot {\n  name Dot1\n  xpos 863\n  ypos 572\n }\nset N6c84bc00 [stack 0]\npush 0\npush $N6c6de000\n Dot {\n  name Dot2\n  xpos 398\n  ypos 215\n }\n Grade {\n  white {{dehaze}}\n  black_clamp false\n  name Grade4\n  label intensity\n  xpos 364\n  ypos 275\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 364\n  ypos 360\n }\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation1\n  xpos 364\n  ypos 384\n }\n FilterErode {\n  channels rgb\n  size {{erodeMap*-1}}\n  name FilterErode1\n  xpos 364\n  ypos 474\n }\n FilterErode {\n  channels rgb\n  size {{FilterErode1.size*-1}}\n  filter {{FilterErode1.filter x26 1}}\n  name FilterErode2\n  xpos 364\n  ypos 498\n }\n C_Bilateral2_1 {\n  inputs 2+1\n  size {{sizeBil}}\n  positionalSigma 40\n  colourSigma 0.1\n  name C_Bilateral1\n  xpos 364\n  ypos 565\n }\n Dot {\n  name Dot5\n  xpos 398\n  ypos 657\n }\nset N6c875800 [stack 0]\n Dot {\n  name Dot4\n  xpos 276\n  ypos 657\n }\n Grade {\n  add 1\n  white_clamp true\n  name Grade1\n  label \"\\[value channels]\"\n  xpos 242\n  ypos 711\n }\n Dot {\n  name Dot6\n  xpos 276\n  ypos 786\n }\npush $N6c875800\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge2\n  xpos 364\n  ypos 783\n }\n Dot {\n  name Dot16\n  xpos 398\n  ypos 845\n }\nset N6c895c00 [stack 0]\n Dot {\n  name Dot9\n  xpos 198\n  ypos 845\n }\n Keyer {\n  operation \"luminance key\"\n  range {1 1.06 2 2}\n  name Keyer3\n  xpos 164\n  ypos 982\n }\n Dot {\n  name Dot7\n  xpos 198\n  ypos 1096\n }\npush $N6c895c00\n Grade {\n  add {{offsetHaze}}\n  black_clamp false\n  name Grade8\n  label \"\\[value channels]\"\n  xpos 364\n  ypos 898\n }\n Dot {\n  name Dot10\n  xpos 398\n  ypos 971\n }\nset N6c894400 [stack 0]\n Dot {\n  name Dot11\n  xpos 529\n  ypos 971\n }\n Grade {\n  gamma {{topGamma}}\n  black_clamp false\n  name Grade5\n  label \"\\[value channels]\"\n  xpos 495\n  ypos 1025\n }\n Dot {\n  name Dot12\n  xpos 529\n  ypos 1096\n }\npush $N6c894400\n Merge2 {\n  inputs 2+1\n  operation copy\n  name Merge3\n  xpos 364\n  ypos 1093\n }\n Grade {\n  add {{parent.Grade8.add*-1}}\n  black_clamp false\n  name Grade9\n  label \"\\[value channels]\"\n  xpos 364\n  ypos 1184\n }\n Dot {\n  name Dot13\n  xpos 398\n  ypos 1418\n }\npush $N6c84bc00\n Dot {\n  name Dot18\n  xpos 863\n  ypos 1276\n }\nset Nd6af1000 [stack 0]\n Grade {\n  add -1\n  black_clamp false\n  name Grade2\n  label \"\\[value channels]\"\n  xpos 829\n  ypos 1352\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge1\n  xpos 829\n  ypos 1415\n }\n Grade {\n  add 1\n  black_clamp false\n  name Grade3\n  label \"\\[value channels]\"\n  xpos 829\n  ypos 1470\n }\nset N6c8f1c00 [stack 0]\npush $Nd6af1000\n Dot {\n  name Dot19\n  xpos 1087\n  ypos 1276\n }\n Merge2 {\n  inputs 2\n  operation difference\n  name Merge4\n  xpos 1053\n  ypos 1474\n }\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos 1053\n  ypos 1546\n }\n Dot {\n  name Dot17\n  xpos 1087\n  ypos 1661\n }\nset Nd6af1400 [stack 0]\n Dot {\n  name Dot8\n  xpos 1087\n  ypos 1824\n }\npush $N6c875800\n Dot {\n  name Dot15\n  xpos 667\n  ypos 657\n }\n Dot {\n  name Dot14\n  xpos 667\n  ypos 1755\n }\npush $Nd6af1400\npush $N6c8f1c00\n ColorCorrect {\n  inputs 1+1\n  saturation {{satHaze}}\n  gamma {{gammaHaze} {gammaHaze} {gammaHaze} {gammaHaze}}\n  gain {{gainHaze} {gainHaze} {gainHaze} {gainHaze}}\n  name ColorCorrect1\n  xpos 829\n  ypos 1658\n }\n Switch {\n  inputs 2\n  which {{prevBil}}\n  name Switch1\n  xpos 829\n  ypos 1752\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  selected true\n  xpos 829\n  ypos 1817\n }\n Output {\n  name Output1\n  xpos 829\n  ypos 1960\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_fxT_ChromaticAberration.gizmo",
    "content": "Group {\nname fxT_ChromaticAberration\nhelp \"Chromatic Aberration tool with a bunch of options for matching the plate's aberration.\\nHappy channel-shifting!\\n\\nDeveloped by - Tor Andreassen - fxtor.net\"\ntile_color 0xf9ff00ff\nnote_font Verdana\nselected true\naddUserKnob {20 fxT_chromaticAberrationTAB l fxT_chromaticAberration}\naddUserKnob {41 channels T Merge4.also_merge}\naddUserKnob {26 text_1 l \" \" T \" \"}\naddUserKnob {4 mode l \"aberration mode\" t \"Choose the chromatic aberration method.\\nScale with Transforms or with Godrays.\\n\\nGodrays will give you a smearing effect between the channels, which can look more realistic.\" M {\"godrays scale\" \"transforms scale\" \"\" \"\"}}\naddUserKnob {26 \"\"}\naddUserKnob {7 redScale l \"<font  color='#de0000'>Red scale</font>\" t \"Red channel scale size\" R -0.5 1.5}\nredScale 1.06\naddUserKnob {7 greenScale l \"<font  color='#7ebd64'>Green scale</font>\" t \"Green channel scale size\" R -0.5 1.5}\ngreenScale 1\naddUserKnob {7 blueScale l \"<font color='#2279c3'>Blue scale</font>\" t \"Blue channel scale size\" R -0.5 1.5}\nblueScale 0.955\naddUserKnob {26 \"\"}\naddUserKnob {14 redChBlur l \"<font color='#de0000'>Red Cannel Blur</font>\" t \"Red channel blur size\" R 0 100}\naddUserKnob {14 greenChBlur l \"<font color='#7ebd64'>Green Cannel Blur</font>\" t \"Green channel blur size\" R 0 100}\naddUserKnob {14 blueChBlur l \"<font color='#2279c3'>Blue Channel Blur</font>\" t \"Blue channel blur size\" R 0 100}\naddUserKnob {26 \"\"}\naddUserKnob {20 extraOffsetControlsGROUP l \"EXTRA GLOBAL OFFSET CONTROLS\" n 1}\nextraOffsetControlsGROUP 0\naddUserKnob {6 activateEGOC l \"activate extra global controls\" t \"Enable to activate the extra global offset controls.\\n\\nThis will give you more offset controls, but can cause some unwanted filtering.\\n\\nIf you want to use these controls, but it's causing too much filtering, try to restore some details with the 'restore luminance' checkbox.\\n\\nThese controls are intended for special cases to make it esier to match the plate's aberration. Pick your battles; more contol can cause some extra filtering.\" +STARTLINE}\naddUserKnob {7 offsetRotation l Rotation t \"Rotation offset control.\\n\\nThis is useful for shifting the direction of the offset.\" R -10 10}\naddUserKnob {7 offsetX l X-axis t \"X-axis offset control\" R -20 20}\naddUserKnob {7 offsetY l Y-axis t \"Y-axis offset control\" R -20 20}\naddUserKnob {7 offsetTop l Top t \"Offset control for the top of the frame.\\n\\nThis will offset the channels more on the top of the frame than the bottom.\" R -0.05 0.05}\naddUserKnob {7 offsetBottom l Bottom t \"Offset control for the bottom of the frame\\n\\nThis will offset the channels more on the bottom of the frame than the top\" R -0.05 0.05}\naddUserKnob {26 \"\"}\naddUserKnob {20 endGroup_1 l endGroup n -1}\naddUserKnob {20 centerMaskGROUP l \"CENTER MASK CONTROLS\" n 1}\ncenterMaskGROUP 0\naddUserKnob {6 centerMask l \"use center mask\" t \"Enable to remove aberration in the center of the frame.\\n\\nThis \\\"mimics\\\" the real world lense where less aberration is applied to the center of the frame.\\n\\nYou can addjust the opacity, softness and size of the 'centerMask' with the sliders below.\\nFor convience, turn on the 'displayMask' while addjusting the size.\" +STARTLINE}\ncenterMask true\naddUserKnob {6 displayMask l \"display mask\" t \"Enable to display the affect-area of the center mask\" +STARTLINE}\naddUserKnob {4 switchMaskColor l \"|   display color\" t \"Choose what color to display when 'displayMask' in enabled\" -STARTLINE M {red green blue \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\nswitchMaskColor blue\naddUserKnob {14 displayMaskScale l scale t \"Addjust the scale of the centerMask. This lets you decide how much of the image is affected by the centerMask\" R 0 100}\ndisplayMaskScale {0.5 1}\naddUserKnob {16 centerMaskOpacity l opacity t \"Addjust the center mask opacity.\\n\\nThis allows for controlling the opacity of the aberration showing in the center of the frame when the 'centerMask' box is enabled\"}\ncenterMaskOpacity 1\naddUserKnob {41 centerMaskFalloff l falloff T maskFalloff.centerMaskFalloff}\naddUserKnob {26 \"\"}\naddUserKnob {20 endGroup_2 l endGroup n -1}\naddUserKnob {41 center T centerPoint.center}\naddUserKnob {22 unlockReset l reset/lock t \"By default the centerpoint is locked to the center of the input format.\\n\\nClick this button to unlock the values. This will also set the centerpoint to the center of the input format.\" -STARTLINE T \"def resetLock():\\n    me = nuke.thisNode()\\n    lockValue = me\\['center'].enabled()\\n    x = 'width()/2'\\n    y = 'height()/2'\\n    x2 = nuke.thisNode().width()/2\\n    y2 = nuke.thisNode().height()/2\\n\\n    \\n\\n    if lockValue == True:\\n        me\\['center'].setEnabled(not lockValue)\\n        me\\['center'].clearAnimated()\\n        me\\['center'].setExpression(x,0)\\n        me\\['center'].setExpression(y,1)\\n    elif lockValue == False:\\n        me\\['center'].clearAnimated()\\n        me\\['center'].setValue(\\[x2,y2])\\n        me\\['center'].setEnabled(not lockValue)\\n\\nresetLock()\"}\naddUserKnob {26 \"\"}\naddUserKnob {6 restoreLuminance l \"restore luminance  |\" t \"Restore the original luminace.\\n\\nThis can help bring back sharpness if the channel offset operations has caused too much filtering.\" +STARTLINE}\naddUserKnob {7 luminancePercent l amount t \"Blend between comp luminance and input luminance to decide how much of the original luminance you want to restore.\\n\\n0 = comp luma (no restoration)\\n1 = input luma (full restoration)\\n\\nThis only takes effect if the checkbox is checked.\" -STARTLINE}\nluminancePercent 1\naddUserKnob {6 Rbypass l \"&nbsp;<font color='#de0000'> Red</font><font color='#717171'>bypass</font>\" t \"Enable to bypass alteration to the red channel\" +STARTLINE}\naddUserKnob {6 Gbypass l \"&nbsp;<font color='#7ebd64'> Green</font><font color='#717171'>bypass</font>\" t \"Enable to bypass alteration to the green channel\" -STARTLINE}\naddUserKnob {6 Bbypass l \"&nbsp;<font color='#2279c3'> Blue</font><font color='#717171'>bypass</font>\" t \"Enable to bypass alteration to the blue channel\" -STARTLINE}\naddUserKnob {26 \"\"}\naddUserKnob {26 apChromaAlpha l apChroma T \" \"}\naddUserKnob {6 calculate_multi_alpha l \"calculate per-channel alpha\" t \"Also generates a channel layer called apChroma wich includes the transformed alphas for each of the rgba channels. This is necessary if you want to merge the result of this node onto a background. You'll need apChromaMerge or a similar gizmo in order to perform the special merge.\" -STARTLINE}\ncalculate_multi_alpha true\naddUserKnob {6 process_alpha l \"process single alpha from\" t \"If activated, the multi-channel alpha will get combined into a regular alpha that you can use for normal operations after this node.\" +STARTLINE}\nprocess_alpha true\naddUserKnob {41 mode_1 l \"\" -STARTLINE T Saturation1.mode}\naddUserKnob {6 preserveBBox +STARTLINE}\naddUserKnob {41 numpixels l \"            add px\" -STARTLINE T AdjBBox1.numpixels}\naddUserKnob {26 \"\"}\naddUserKnob {26 \"\" l mask T \"\"}\naddUserKnob {41 maskChannelMask l \"\" -STARTLINE T Merge11.maskChannelMask}\naddUserKnob {41 inject -STARTLINE T Merge11.inject}\naddUserKnob {41 invert_mask l invert -STARTLINE T Merge11.invert_mask}\naddUserKnob {41 fringe -STARTLINE T Merge11.fringe}\naddUserKnob {41 mix T Merge11.mix}\naddUserKnob {26 text l \" \" T \" \"}\naddUserKnob {26 copyright l \"\" +STARTLINE T \"<font color=gray>// fxT_chromaticAberration v3.1 © Tor Andreassen</font>\"}\n}\nBackdropNode {\ninputs 0\nname backdrop02\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"RGB channel seperation\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -838\nypos -1176\nbookmark false\nbdwidth 2869\nbdheight 107\n}\nBackdropNode {\ninputs 0\nname backdrop03\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"RGB channel offsets\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -839\nypos -1037\nbookmark false\nbdwidth 2869\nbdheight 406\n}\nBackdropNode {\ninputs 0\nname backdrop04\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"induvidual channel blur\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -840\nypos -595\nbookmark false\nbdwidth 2873\nbdheight 127\n}\nBackdropNode {\ninputs 0\nname backdrop05\ntile_color 0x3a3a3aff\ngl_color 0x44444401\nlabel \"mask input\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos 2090\nypos -1556\nbookmark false\nbdwidth 662\nbdheight 3664\n}\nBackdropNode {\ninputs 0\nname backdrop08\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel \"mix between added chromatic aberration and original input\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -843\nypos 701\nbookmark false\nbdwidth 2879\nbdheight 130\n}\nBackdropNode {\ninputs 0\nname backdrop1\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"center mask (less aberration in the center of the image)\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -838\nypos -271\nbookmark false\nbdwidth 2872\nbdheight 490\n}\nBackdropNode {\ninputs 0\nname backdrop2\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"build RGB\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -842\nypos 280\nbookmark false\nbdwidth 2877\nbdheight 151\n}\nBackdropNode {\ninputs 0\nname backdrop3\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel \"display CenterMask\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -848\nypos 1518\nbookmark false\nbdwidth 2881\nbdheight 431\n}\nBackdropNode {\ninputs 0\nname backdrop4\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel \"restore luminence\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -844\nypos 873\nbookmark false\nbdwidth 2884\nbdheight 447\n}\nBackdropNode {\ninputs 0\nname backdrop5\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel \"keep input bbox\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -848\nypos 2144\nbookmark false\nbdwidth 2883\nbdheight 111\n}\nBackdropNode {\ninputs 0\nname backdrop6\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel \"keep input alpha channel\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -852\nypos 458\nbookmark false\nbdwidth 2878\nbdheight 202\n}\nBackdropNode {\ninputs 0\nname backdrop7\ntile_color 0x3f4e69ff\ngl_color 0x5f7a8701\nlabel \"bypass channels\"\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -840\nypos -430\nbookmark false\nbdwidth 2873\nbdheight 122\n}\nBackdropNode {\ninputs 0\nname backdrop8\ntile_color 0x3f4e69ff\ngl_color 0x44444401\nlabel mask\nnote_font \"Arial Black\"\nnote_font_size 20\nnote_font_color 0xffffffff\nxpos -854\nypos 1995\nbookmark false\nbdwidth 2881\nbdheight 132\n}\nNoOp {\ninputs 0\nname values\nxpos 432\nypos -720\nhide_input true\naddUserKnob {20 values}\naddUserKnob {16 base}\nbase 0.1\naddUserKnob {16 red}\nred {{-1*blue}}\naddUserKnob {16 green}\ngreen {{base}}\naddUserKnob {16 blue}\nblue {{base+(green*2)}}\n}\nStickyNote {\ninputs 0\nname StickyNote2\ntile_color 0x545454ff\ngl_color 0x545454ff\nlabel \"checking if the mask input has an existing alpha channel.\\nif alpha channel exists, mask will use the input alpha,\\nif no alpha exists, a solid alpha will be used (same as not masking)\"\nxpos 2402\nypos -1220\n}\nInput {\ninputs 0\nname mask\nlabel \"\\[value number]\"\nxpos 2578\nypos -1410\nnumber 1\n}\nDot {\nname Dot24\nxpos 2603\nypos -1346\n}\nset N648119f0 [stack 0]\nNoOp {\nname autoAlphaCheck2\nxpos 2456\nypos -1340\naddUserKnob {20 autoAlphaCheck}\naddUserKnob {6 a +STARTLINE}\na {{\"clamp(\\[lsearch \\[channels this] rgba.alpha]+1, 0, 1)\\n\"}}\n}\nStickyNote {\ninputs 0\nname StickyNote3\ntile_color 0x545454ff\ngl_color 0x545454ff\nlabel \"<left>info: \\n\\nThe nodes activated by default (only scale) controls the channelOffset.\\nThis is the basic setup, the other transforms stacked under the scale-nodes are by default disabled to avoid filtering issus when extra offset controls is not needed.\\n\\nIf the 'activate global controls' checkbox is activated, all the transforms will be active.\\nThis will give you access to all the extra offset controls, but can also cause some extra unwanted filtering. \\n\\nIf filtering becomes an issue, but you still want to use the extra controls, try using  the restore luminance option to restore detail.\\n\\nPick you battle:  more contol == some loss in detail\"\nxpos -825\nypos -974\n}\nStickyNote {\ninputs 0\nname StickyNote1\ntile_color 0x545454ff\ngl_color 0x545454ff\nlabel \"<left>info: \\n\\ncopy node is there to recreate the input alpha.\\nif an alpha does not extist, a solid alpha will be copied in.\\nthis is to not get errors when using the node on inputs with no alpha channel.\\n\\nTo restore the original blank alpha channel,\\nthe remove node grabs the input alpha value and removes\\nor keeps the alpha channel based on if an input alpha exists\"\nxpos 1184\nypos 498\n}\nInput {\ninputs 0\nname rgba\nlabel \"\\[value number]\"\nxpos 778\nypos -1500\n}\nset N64b61ac0 [stack 0]\nDot {\nname Dot2\nxpos -998\nypos -1499\n}\nDot {\nname Dot23\nxpos -998\nypos -195\n}\nset Nabdd0a80 [stack 0]\nDot {\nname Dot13\nxpos -998\nypos 60\n}\nDot {\nname Dot36\nnote_font_size 41\nxpos -998\nypos 582\n}\nDot {\nname Dot21\nxpos -998\nypos 758\n}\nDot {\nname Dot34\nxpos -998\nypos 1099\n}\nset Nb0e0110 [stack 0]\nDot {\nname Dot7\nxpos -998\nypos 1405\n}\nDot {\nname Dot22\nxpos -998\nypos 1586\n}\nset N1416d9e0 [stack 0]\nDot {\nname Dot35\nnote_font_size 41\nxpos -998\nypos 2058\n}\nDot {\nname Dot18\ntile_color 0x272727ff\nxpos -998\nypos 2211\n}\nAdjBBox {\nnumpixels 0\nname AdjBBox1\nxpos 1477\nypos 2207\n}\npush $Nabdd0a80\nRemove {\nname Remove1\nxpos -491\nypos -193\n}\nRadial {\narea {0 0 {input.width()} {input.height()}}\nname Radial2\nxpos -491\nypos -163\n}\nExpression {\nexpr0 r\nexpr1 g\nexpr2 b\nexpr3 a<centerMaskFalloff?smoothstep(0,centerMaskFalloff,a):1\nname maskFalloff\nxpos -491\nypos -137\naddUserKnob {20 maskFalloff l \"mask falloff\"}\naddUserKnob {7 centerMaskFalloff l maskFalloff t \"Adjust the alpha falloff of the 'centerMask'.\\n\\nThis will let you addjust how hard the transition is between the affected and not affected area when the centerMask is activated.\" R 0.2 0.75}\ncenterMaskFalloff 0.5\n}\nTransform {\nscale {{parent.displayMaskScale.w} {parent.displayMaskScale.h}}\ncenter {{(input.width())/2} {(input.height())/2}}\nname Transform2\nlabel centerMaskScale\nxpos -491\nypos -113\n}\nMultiply {\nchannels rgba\nvalue {{parent.centerMaskOpacity}}\nname Multiply4\nxpos -491\nypos -81\n}\nClamp {\nname Clamp1\nxpos -491\nypos -57\n}\nDot {\nname Dot10\nxpos -457\nypos 3\n}\nset N23a7ece0 [stack 0]\nDot {\nname Dot15\nxpos -929\nypos 3\n}\nDot {\nname Dot14\nxpos -929\nypos 1841\n}\npush $N1416d9e0\nRemove {\nname Remove4\nxpos -65\nypos 1576\n}\nShuffle {\nalpha white\nname Shuffle1\ntile_color 0xffffffff\nlabel solidAlpha\nxpos -65\nypos 1636\n}\nset N8766b7c0 [stack 0]\nAdd {\nvalue {0 0 1 1}\nname Add3\ntile_color 0xffff\nxpos 56\nypos 1692\n}\npush $N8766b7c0\nAdd {\nvalue {0 1 0 1}\nname Add2\ntile_color 0xff00ff\nxpos -65\nypos 1693\n}\npush $N8766b7c0\nAdd {\nvalue {1 0 0 1}\nname Add1\ntile_color 0xff0000ff\nxpos -197\nypos 1695\n}\nSwitch {\ninputs 3\nwhich {{parent.switchMaskColor}}\nname Switch2\nxpos -65\nypos 1775\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy2\nxpos -65\nypos 1831\n}\nPremult {\nname Premult1\nxpos -65\nypos 1895\n}\npush $Nb0e0110\nColorspace {\ncolorspace_out YCbCr\nname Colorspace1\nlabel \"Lin --> YCbCr\"\nxpos 1104\nypos 1098\n}\npush $N23a7ece0\nDot {\nname Dot1\nnote_font_size 41\nxpos -34\nypos 3\n}\nset Nf8545180 [stack 0]\npush $N64b61ac0\nDot {\nname Dot25\nxpos 806\nypos -1393\n}\nset Nf8549fd0 [stack 0]\nadd_layer {apChroma apChroma.red apChroma.green apChroma.blue apChroma.alpha}\nShuffle2 {\nfromInput1 {{0} B}\nfromInput2 {{0} B}\nout2 apChroma\nmappings \"8 rgba.red 0 0 rgba.red 0 0 rgba.green 0 1 rgba.green 0 1 rgba.blue 0 2 rgba.blue 0 2 rgba.alpha 0 3 rgba.alpha 0 3 rgba.alpha 0 3 apChroma.red 1 0 rgba.alpha 0 3 apChroma.green 1 1 rgba.alpha 0 3 apChroma.blue 1 2 rgba.alpha 0 3 apChroma.alpha 1 3\"\nname Shuffle4\nlabel \"\\[value in1] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 772\nypos -1353\n}\nDot {\nname Dot5\nxpos 806\nypos -1272\n}\nset Nabf63b40 [stack 0]\nDot {\nname Dot9\nxpos 97\nypos -1272\n}\nShuffle {\ngreen red\nblue red\nname redShuffle\ntile_color 0xff0000ff\nxpos 72\nypos -1108\n}\nset N64eaa360 [stack 0]\nDot {\nname Dot27\nxpos -92\nypos -1114\n}\nDot {\nname Dot28\nxpos -92\nypos -356\n}\nset Nabbd19a0 [stack 0]\npush $Nabf63b40\nDot {\nname Dot6\nxpos 1668\nypos -1272\n}\nset Nabcdd1a0 [stack 0]\nShuffle {\nalpha white\nname Shuffle3\ntile_color 0xffffffff\nlabel solidAlpha\nxpos 2457\nypos -1273\n}\npush $N648119f0\nSwitch {\ninputs 2\nwhich {{!parent.autoAlphaCheck2.a}}\nname Switch1\ntile_color 0x666666ff\nlabel AutoMaskCheck\nxpos 2578\nypos -1273\n}\nDot {\nname Dot40\nnote_font_size 41\nxpos 2612\nypos -169\n}\nset Nabdae2a0 [stack 0]\nDot {\nname Dot41\nnote_font_size 41\nxpos 1785\nypos -169\n}\nset Nabdb3360 [stack 0]\nDot {\nname Dot42\nnote_font_size 41\nxpos 880\nypos -169\n}\nset Nabf26700 [stack 0]\npush $Nabbd19a0\npush $N64eaa360\nTransformMasked {\nscale {{parent.redScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname redTransform1\ntile_color 0xff0000ff\nlabel \"scale\\n\\[value filter]\"\nxpos -27\nypos -961\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.red)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform23\ntile_color 0xff0000ff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos -27\nypos -886\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.red)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform24\ntile_color 0xff0000ff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos -27\nypos -844\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.red/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname redTransform25\ntile_color 0xff0000ff\nlabel \"rotate\\n\\[value filter]\"\nxpos -27\nypos -802\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.red} {parent.offsetY*values.red}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname redTransform26\ntile_color 0xff0000ff\nlabel \"x,y\\n\\[value filter]\"\nxpos -27\nypos -760\ndisable {{!parent.activateEGOC}}\n}\npush $N64eaa360\nGodRays {\nscale {{parent.redScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\ninvert_mask true\nname GodRays1\ntile_color 0xff0000ff\nlabel scale\nxpos 72\nypos -956\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.red)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform13\ntile_color 0xff0000ff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos 72\nypos -888\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.red)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform14\ntile_color 0xff0000ff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos 72\nypos -846\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.red/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname redTransform15\ntile_color 0xff0000ff\nlabel \"rotate\\n\\[value filter]\"\nxpos 72\nypos -804\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.red} {parent.offsetY*values.red}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname redTransform21\ntile_color 0xff0000ff\nlabel \"x,y\\n\\[value filter]\"\nxpos 74\nypos -762\ndisable {{!parent.activateEGOC}}\n}\nSwitch {\ninputs 2\nwhich {{parent.mode}}\nname modeSwitch1\ntile_color 0x666666ff\nxpos 74\nypos -680\n}\nBlur {\nsize {{parent.redChBlur}}\nname BlurRedCh\ntile_color 0xff0000ff\nxpos 74\nypos -513\n}\nSwitch {\ninputs 2\nwhich {{parent.Rbypass}}\nname bypassRedSwitch\ntile_color 0x666666ff\nxpos 74\nypos -350\n}\npush $Nabbd19a0\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nmaskChannelMask {{{parent.Merge11.maskChannelMask}}}\ninject {{parent.Merge11.inject}}\ninvert_mask {{parent.Merge11.invert_mask}}\nfringe {{parent.Merge11.fringe}}\nmix {{parent.Merge11.mix}}\nname Merge14\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 74\nypos -173\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nname Merge15\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 74\nypos 105\ndisable {{!parent.centerMask}}\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMultiply {\nvalue {1 0 0 1}\nname Multiply3\nlabel \"\\[value value]\"\nxpos 74\nypos 374\n}\nDot {\nname Dot39\nnote_font_size 41\nxpos 1461\nypos 390\n}\npush $Nf8545180\nDot {\nname Dot3\nnote_font_size 41\nxpos 593\nypos 3\n}\nset N652c62f0 [stack 0]\npush $Nabf63b40\nShuffle {\nred green\nblue green\nname greenShuffle\ntile_color 0xff00ff\nxpos 781\nypos -1114\n}\nset N64aeb5e0 [stack 0]\nDot {\nname Dot31\nxpos 601\nypos -1116\n}\nDot {\nname Dot29\nxpos 604\nypos -364\n}\nset Nabf8a260 [stack 0]\npush $Nabf26700\npush $Nabf8a260\npush $N64aeb5e0\nTransformMasked {\nscale {{parent.greenScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname greenTransform1\ntile_color 0xff00ff\nlabel \"scale\\n\\[value filter]\"\nxpos 669\nypos -970\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.green)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform3\ntile_color 0xff00ff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos 669\nypos -899\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.green)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform4\ntile_color 0xff00ff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos 669\nypos -857\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.green/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname greenTransform7\ntile_color 0xff00ff\nlabel \"rotate\\n\\[value filter]\"\nxpos 669\nypos -815\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.green} {parent.offsetY*values.green}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname greenTransform8\ntile_color 0xff00ff\nlabel \"x, y\\n\\[value filter]\"\nxpos 669\nypos -773\ndisable {{!parent.activateEGOC}}\n}\npush $N64aeb5e0\nGodRays {\nscale {{parent.greenScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\ninvert_mask true\nname GodRays2\ntile_color 0xff00ff\nlabel scale\nxpos 781\nypos -970\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.green)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform10\ntile_color 0xff00ff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos 781\nypos -902\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.green)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform16\ntile_color 0xff00ff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos 781\nypos -860\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.green/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname greenTransform9\ntile_color 0xff00ff\nlabel \"rotate\\n\\[value filter]\"\nxpos 781\nypos -818\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.green} {parent.offsetY*values.green}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname greenTransform10\ntile_color 0xff00ff\nlabel \"x, y\\n\\[value filter]\"\nxpos 781\nypos -776\ndisable {{!parent.activateEGOC}}\n}\nSwitch {\ninputs 2\nwhich {{parent.mode}}\nname modeSwitch3\ntile_color 0x666666ff\nxpos 782\nypos -686\n}\nBlur {\nsize {{parent.greenChBlur}}\nname BlurGeenCh\ntile_color 0xff00ff\nxpos 782\nypos -518\n}\nSwitch {\ninputs 2\nwhich {{parent.Gbypass}}\nname bypassGreenSwitch\ntile_color 0x666666ff\nxpos 785\nypos -361\n}\npush $Nabf8a260\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nmaskChannelMask {{{parent.Merge11.maskChannelMask}}}\ninject {{parent.Merge11.inject}}\ninvert_mask {{parent.Merge11.invert_mask}}\nfringe {{parent.Merge11.fringe}}\nmix {{parent.Merge11.mix}}\nname Merge12\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 785\nypos -108\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nname Merge13\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 785\nypos 122\ndisable {{!parent.centerMask}}\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMultiply {\nvalue {0 1 0 1}\nname Multiply5\nlabel \"\\[value value]\"\nxpos 785\nypos 314\n}\npush $N652c62f0\nDot {\nname Dot12\nnote_font_size 41\nxpos 1469\nypos 3\n}\npush $Nabcdd1a0\nShuffle {\nred blue\ngreen blue\nname blueShuffle\ntile_color 0xffff\nxpos 1640\nypos -1126\n}\nset N57ef75b0 [stack 0]\nDot {\nname Dot33\nxpos 1467\nypos -1116\n}\nDot {\nname Dot32\nxpos 1467\nypos -373\n}\nset N7c842930 [stack 0]\npush $Nabdb3360\npush $N7c842930\npush $N57ef75b0\nTransformMasked {\nscale {{parent.blueScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname blueTransform1\ntile_color 0xffff\nlabel \"scale\\n\\[value filter]\"\nxpos 1532\nypos -970\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.blue)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform6\ntile_color 0xffff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos 1532\nypos -874\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.blue)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform7\ntile_color 0xffff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos 1532\nypos -832\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.blue/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname blueTransform7\ntile_color 0xffff\nlabel \"rotate\\n\\[value filter]\"\nxpos 1532\nypos -790\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.blue} {parent.offsetY*values.blue}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname blueTransform8\ntile_color 0xffff\nlabel \"x,y\\n\\[value filter]\"\nxpos 1532\nypos -748\ndisable {{!parent.activateEGOC}}\n}\npush $N57ef75b0\nGodRays {\nscale {{parent.blueScale}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\ninvert_mask true\nname GodRays3\ntile_color 0xffff\nlabel scale\nxpos 1640\nypos -970\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetTop*(values.blue)}}\ncenter {{parent.centerPoint.input.width()/2} 0}\nname redTransform8\ntile_color 0xffff\nlabel \"top offset: skewX\\n\\[value filter]\"\nxpos 1640\nypos -876\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nskewX {{parent.offsetBottom*(values.blue)}}\ncenter {{parent.centerPoint.input.width()/2} {parent.centerPoint.input.height()}}\nname redTransform9\ntile_color 0xffff\nlabel \"bottom offset: skewY\\n\\[value filter]\"\nxpos 1640\nypos -834\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\nrotate {{parent.offsetRotation*(values.blue/10)}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname blueTransform9\ntile_color 0xffff\nlabel \"rotate\\n\\[value filter]\"\nxpos 1640\nypos -792\ndisable {{!parent.activateEGOC}}\n}\nTransformMasked {\nchannels rgb\ntranslate {{parent.offsetX*values.blue} {parent.offsetY*values.blue}}\ncenter {{parent.centerPoint.center.x} {parent.centerPoint.center.y}}\nname blueTransform10\ntile_color 0xffff\nlabel \"x,y\\n\\[value filter]\"\nxpos 1640\nypos -750\ndisable {{!parent.activateEGOC}}\n}\nSwitch {\ninputs 2\nwhich {{parent.mode}}\nname modeSwitch5\ntile_color 0x666666ff\nxpos 1641\nypos -675\n}\nBlur {\nsize {{parent.blueChBlur}}\nname BlurBlueCh\ntile_color 0xffff\nxpos 1641\nypos -537\n}\nSwitch {\ninputs 2\nwhich {{parent.Bbypass}}\nname bypassBlueSwitch\ntile_color 0x666666ff\nxpos 1641\nypos -367\n}\npush $N7c842930\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge all\nname Merge11\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 1641\nypos -95\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMerge2 {\ninputs 2+1\noperation copy\nalso_merge rgba\nname Merge4\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 1641\nypos 145\ndisable {{!parent.centerMask}}\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMultiply {\nvalue {0 0 1 1}\nname Multiply6\nlabel \"\\[value value]\"\nxpos 1641\nypos 227\n}\nMerge2 {\ninputs 2\noperation plus\nalso_merge all\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 1641\nypos 326\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nMerge2 {\ninputs 2\noperation plus\nalso_merge all\nname Merge3\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 1641\nypos 386\naddUserKnob {20 TRX}\naddUserKnob {22 swap l \"swap to Merge All Node\" -STARTLINE T \"from csnuke_tools.trixter.snippets import convertMergeToAll as convertMergeToAll;convertMergeToAll.convToAll()\"}\n}\nset N6d1ac9d0 [stack 0]\nShuffle {\nin apChroma\nname Shuffle6\nautolabel \"nuke.thisNode()\\['name'].value() + '\\\\n' + nuke.thisNode()\\['in'].value() + (' -> ' + nuke.thisNode()\\['out2'].value() if nuke.thisNode()\\['out2'].value() != 'none' else '') + ('\\\\n' + nuke.thisNode()\\['label'].value() if nuke.thisNode()\\['label'].value() != '' else '')\"\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 2156\nypos 198\n}\nSaturation {\nsaturation 0\nname Saturation1\nxpos 2156\nypos 272\n}\nShuffle {\ngreen red\nblue red\nalpha red\nname Shuffle8\nautolabel ''\ntile_color 0x93000000\nnote_font_size 22\nnote_font_color 0xffffffff\nxpos 2156\nypos 298\n}\npush $N64b61ac0\nAddChannels {\nchannels rgba\nname AddChannels1\nxpos 2144\nypos -1506\n}\nDot {\nname Dot11\nxpos 2338\nypos -1502\n}\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy1\nxpos 2304\nypos 297\ndisable {{!parent.process_alpha}}\n}\nDot {\nname Dot26\nxpos 2338\nypos 362\n}\nset Nc75990c0 [stack 0]\nShuffle {\nalpha white\nname Shuffle5\ntile_color 0xffffffff\nlabel solidAlpha\nxpos 2164\nypos 436\n}\npush $Nc75990c0\nDot {\nname Dot8\nxpos 2338\nypos 517\n}\nSwitch {\ninputs 2\nwhich {{!autoAlphaCheck1.a}}\nname Switch3\ntile_color 0x666666ff\nlabel AutoMaskCheck\nxpos 2164\nypos 519\n}\npush $N6d1ac9d0\nCopy {\ninputs 2\nfrom0 rgba.alpha\nto0 rgba.alpha\nname Copy3\nxpos 1641\nypos 519\n}\nRemove {\nchannels alpha\nname Remove2\nxpos 1641\nypos 577\ndisable {{parent.autoAlphaCheck1.a}}\n}\nRemove {\nchannels apChroma\nname Remove3\nxpos 1641\nypos 763\ndisable {{parent.calculate_multi_alpha}}\n}\nDot {\nname Dot30\nxpos 1674\nypos 1057\n}\nset Nc729daa0 [stack 0]\nColorspace {\ncolorspace_out YCbCr\nname Colorspace5\nlabel \"Lin --> YCbCr\"\nxpos 1459\nypos 1047\n}\nset Nc7193100 [stack 0]\nDissolve {\ninputs 2\nchannels rgb\nwhich {{parent.luminancePercent}}\nname Dissolve2\nxpos 1285\nypos 1100\n}\npush $Nc7193100\nCopy {\ninputs 2\nfrom0 rgba.red\nto0 rgba.red\nname Copy11\nxpos 1459\nypos 1096\n}\nColorspace {\ncolorspace_in YCbCr\nname Colorspace6\nlabel \"YCbCr --> Lin\"\nxpos 1459\nypos 1149\n}\npush $Nc729daa0\nSwitch {\ninputs 2\nwhich {{parent.restoreLuminance}}\nname restore_luminance\ntile_color 0x666666ff\nxpos 1640\nypos 1155\n}\nMerge2 {\ninputs 2\nname Merge2\nxpos 1641\nypos 1898\ndisable {{!(parent.displayMask)}}\n}\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 1641\nypos 2207\ndisable {{!parent.preserveBBox}}\n}\nOutput {\nname Output1\nxpos 1641\nypos 2547\n}\npush $Nabdae2a0\nDot {\nname Dot43\nnote_font_size 41\nxpos 2612\nypos 1567\n}\nDot {\nname Dot4\ntile_color 0x272727ff\nlabel mask\nnote_font \"Arial Black\"\nnote_font_size 25\nxpos 2612\nypos 2058\n}\npush $Nf8549fd0\nNoOp {\nname autoAlphaCheck1\nxpos 894\nypos -1397\naddUserKnob {20 autoAlphaCheck}\naddUserKnob {6 a +STARTLINE}\na {{\"clamp(\\[lsearch \\[channels this] rgba.alpha]+1, 0, 1)\"}}\n}\npush $Nf8549fd0\nNoOp {\nname centerPoint\nxpos 657\nypos -1397\naddUserKnob {20 centerPoint}\naddUserKnob {12 center +DISABLED}\ncenter {{width()/2} {height()/2}}\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_h_gradienteditor.gizmo",
    "content": "Group {\n name GradientEditor\n tile_color 0x4b19ffff\n selected true\n addUserKnob {20 User l Gradient}\n addUserKnob {26 headline l \"\" +STARTLINE T \"<font size=\\\"6\\\">GradientEditor</font><font size=\\\"4\\\">v0.9</font>\\n\"}\n addUserKnob {26 headline2 l \"\" +STARTLINE T \"by Mads Hagbarth Damsbo - 2016\"}\n addUserKnob {26 devider_header l \"<b><font color=#00E0E0>INPUT MAPPING</font><b>\"}\n addUserKnob {4 Type M {Input Generator}}\n Type Generator\n addUserKnob {4 sample_type l Sample -STARTLINE M {Magnitude Maximum Average Red Green Blue Alpha \"\" \"\" \"\"}}\n sample_type Average\n addUserKnob {41 in l From -STARTLINE T Shuffle1.in}\n addUserKnob {6 Invert l Reverse -STARTLINE}\n addUserKnob {26 deviderMain l \"<b><font color=#00E0E0>GRADIENT</font><b>\"}\n addUserKnob {52 ui l \"\" +STARTLINE T ColorGradientUi.ColorWheelKnob_GRADIENT() +STARTLINE}\n addUserKnob {7 input_valueLow l Interval R -1 1}\n addUserKnob {4 lowCont l \"\" -STARTLINE M {Hold Loop Bounce}}\n lowCont Bounce\n addUserKnob {7 input_valueHigh l \"\" -STARTLINE R 0 2}\n input_valueHigh 1\n addUserKnob {4 highCont l \"\" -STARTLINE M {Hold Loop Bounce \"\"}}\n highCont Bounce\n addUserKnob {4 Interpolation l INVISIBLE +INVISIBLE M {Constant Linead Smooth Catmull-Rom Cubic Horizontal \"\"}}\n Interpolation Smooth\n addUserKnob {6 PreserceLuma l \"Preserve Luma\" +STARTLINE}\n addUserKnob {26 devider_phasing l \"<b><font color=#00E0E0>PHASING</font><b>\"}\n addUserKnob {7 Phase R 0 10}\n addUserKnob {7 Frequency R 0 10}\n Frequency 1\n addUserKnob {26 devider_Input l \"<b><font color=#00E0E0>PREMULT</font><b>\"}\n addUserKnob {41 colorspace_in l \" colorspace \" T Colorspace2.colorspace_in}\n addUserKnob {41 alpha l \"Unpremult by\" T Unpremult1.alpha}\n addUserKnob {6 Premult -STARTLINE}\n addUserKnob {20 responsecurve_tab l \"Response Curve\"}\n addUserKnob {26 CurveInfo l \"\" +STARTLINE T \"Use the master curve to control the response curve\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 lut l \"\" +STARTLINE T ColorLookup2.lut}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -3\n  ypos -76\n }\nset N1c010300 [stack 0]\n Dot {\n  name Dot1\n  xpos 351\n  ypos -73\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos 642\n }\npush $N1c010300\n Expression {\n  expr0 x/width\n  expr1 x/width\n  expr2 x/width\n  expr3 1\n  name Expression1\n  xpos 112\n  ypos -25\n }\npush $N1c010300\n Shuffle {\n  name Shuffle1\n  xpos -3\n  ypos -43\n }\n Unpremult {\n  alpha -rgba.alpha\n  name Unpremult1\n  xpos -3\n  ypos -19\n }\n Switch {\n  inputs 2\n  which {{parent.Type}}\n  name Switch1\n  xpos -3\n  ypos 20\n }\nset N1c02a840 [stack 0]\n Dot {\n  name Dot3\n  xpos -225\n  ypos 88\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace1\n  xpos -467\n  ypos 135\n }\npush $N1c02a840\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle5\n  xpos 260\n  ypos 149\n }\npush $N1c02a840\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle4\n  xpos 174\n  ypos 150\n }\npush $N1c02a840\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle3\n  xpos 85\n  ypos 148\n }\npush $N1c02a840\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle2\n  xpos -3\n  ypos 148\n }\npush $N1c02a840\n Saturation {\n  saturation 0\n  mode Average\n  name Saturation2\n  xpos -113\n  ypos 145\n }\npush $N1c02a840\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation1\n  xpos -232\n  ypos 147\n }\npush $N1c02a840\n Expression {\n  temp_name3 VectorLength_3D\n  temp_expr3 sqrt(Red*Red+Green*Green+Blue*Blue)\n  expr0 VectorLength_3D\n  expr1 VectorLength_3D\n  expr2 VectorLength_3D\n  name Vector_Length3D\n  xpos -336\n  ypos 148\n }\n Switch {\n  inputs 7\n  which {{parent.sample_type}}\n  name Switch3\n  selected true\n  xpos -3\n  ypos 367\n }\n Grade {\n  blackpoint {{parent.input_valueLow}}\n  whitepoint {{parent.input_valueHigh}}\n  multiply {{parent.Frequency}}\n  add {{parent.Phase}}\n  black_clamp false\n  name Grade1\n  xpos -3\n  ypos 391\n }\n Invert {\n  name Invert1\n  xpos -3\n  ypos 415\n  disable {{!parent.Invert}}\n }\n Expression {\n  temp_name0 antR\n  temp_expr0 (floor(r/2)-(floor((r+1)/2)-1))\n  temp_name1 antG\n  temp_expr1 (floor(g/2)-(floor((g+1)/2)-1))\n  temp_name2 antB\n  temp_expr2 (floor(b/2)-(floor((b+1)/2)-1))\n  expr0 r<=parent.input_valueLow?parent.lowCont==0?r:parent.lowCont==1?r-floor(r):((1-(r-floor(r)))*(1-antR))+(((r-floor(r)))*(antR)):parent.highCont==0?r:parent.highCont==1?r-floor(r):((1-(r-floor(r)))*(1-antR))+(((r-floor(r)))*(antR))\n  expr1 g<=parent.input_valueLow?parent.lowCont==0?g:parent.lowCont==1?g-floor(g):((1-(g-floor(g)))*(1-antG))+(((g-floor(g)))*(antG)):parent.highCont==0?g:parent.highCont==1?g-floor(g):((1-(g-floor(g)))*(1-antG))+(((g-floor(g)))*(antG))\n  expr2 b<=parent.input_valueLow?parent.lowCont==0?b:parent.lowCont==1?b-floor(b):((1-(b-floor(b)))*(1-antB))+(((b-floor(b)))*(antB)):parent.highCont==0?b:parent.highCont==1?b-floor(b):((1-(b-floor(b)))*(1-antB))+(((b-floor(b)))*(antB))\n  name Expression2\n  xpos -3\n  ypos 491\n }\n ColorLookup {\n  lut {master {curve 0 1}\n    red {}\n    green {}\n    blue {}\n    alpha {}}\n  name ColorLookup2\n  xpos -3\n  ypos 562\n }\n ColorLookup {\n  lut {master {}\n    red {curve 0 x0.1587301642 0.275288014 x0.1859410405 0.9960784314 x0.297052145 0.9960784314 x0.6575963497 0.58954757 L x1 0}\n    green {curve 0 x0.1587301642 0.1388876173 x0.1859410405 0.2344090944 x0.297052145 0.7500419623 x0.6575963497 0.7201953155 L x1 0.2081483177}\n    blue {curve 0 x0.1587301642 0.124711986 x0.1859410405 0 x0.297052145 0 x0.6575963497 0.7437857633 L x1 0.368627451}\n    alpha {curve 1 x0.1587301642 1 x0.1859410405 1 x0.297052145 1 x0.6575963497 1 L x1 1}}\n  name ColorLookup1\n  xpos -2\n  ypos 586\n  addUserKnob {20 User}\n  addUserKnob {22 chek +STARTLINE}\n }\n Colorspace {\n  colorspace_in sRGB\n  name Colorspace2\n  xpos -2\n  ypos 669\n }\nset N1c077f10 [stack 0]\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace8\n  xpos -334\n  ypos 669\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  name ShuffleCopy2\n  xpos -467\n  ypos 669\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace9\n  xpos -467\n  ypos 708\n }\npush $N1c077f10\n Switch {\n  inputs 2\n  which {{parent.PreserceLuma}}\n  name Switch2\n  xpos -2\n  ypos 708\n }\n ShuffleCopy {\n  inputs 2\n  name ShuffleCopy1\n  xpos -2\n  ypos 788\n }\n Premult {\n  name Premult1\n  xpos -2\n  ypos 812\n  disable {{!parent.Premult}}\n }\n Output {\n  name Output1\n  xpos -2\n  ypos 866\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_h_silk.gizmo",
    "content": "Group {\n name Silk\n tile_color 0x70ffcdff\n addUserKnob {20 User}\n addUserKnob {26 Credits l \"\" +STARTLINE T \"Silk for Nuke\"}\n addUserKnob {26 devider_general l \"<b><font color=#7DBAB9>General</font><b>\"}\n addUserKnob {4 Algorithm M {Gaussian Disk E-Box E-Triangle E-Quadratic E-Gaussian E-Dir \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 inverse l \"Inverse E filters\" -STARTLINE}\n addUserKnob {3 Streaks}\n Streaks 1\n addUserKnob {7 Size}\n Size 0.35\n addUserKnob {26 text_blank l \"\" +STARTLINE T \" \"}\n addUserKnob {41 size l Erode T Erode.size}\n addUserKnob {41 size_1 l Re-Erode T ReErode.size}\n addUserKnob {7 ReErodeSoften l \"Erode Soften\"}\n addUserKnob {26 devider_shading l \"<b><font color=#7DBAB9>Shading</font><b>\"}\n addUserKnob {7 Offset R 0 2}\n Offset 1\n addUserKnob {7 contrast l Contrast R 0 2}\n contrast 1\n addUserKnob {26 text_blank2 l \"\" +STARTLINE T \" \"}\n addUserKnob {19 Gamma}\n Gamma {0.72705 0.651014 0.8 0.67}\n addUserKnob {6 Gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n Gamma_panelDropped true\n addUserKnob {26 text_blank3 l \"\" +STARTLINE T \" \"}\n addUserKnob {7 Prim_HueRed l \"Offset Red <font color=#FF4040>●</font>\" R -1 1}\n Prim_HueRed 0.36\n addUserKnob {7 Prim_HueGreen l \"Offset Green <font color=#40FF40>●</font>\" R -1 1}\n Prim_HueGreen 0.12\n addUserKnob {7 Prim_HueBlue l \"Offset Blue <font color=#4040FF>●</font>\" R -1 1}\n Prim_HueBlue 0.56\n addUserKnob {26 devider_sampler l \"<b><font color=#7DBAB9>Multisample</font><b>\"}\n addUserKnob {6 multisample_enable l \"Enable Multisample\" +STARTLINE}\n addUserKnob {3 no_samples l Samples}\n no_samples 2\n addUserKnob {7 sample_width l \"Sample Width\" -STARTLINE R 0 4}\n sample_width 1.5\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x8e388e00\n  label Algorithms\n  note_font_size 42\n  xpos -937\n  ypos -3\n  bdwidth 521\n  bdheight 244\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x8e388e00\n  label \"NYI NORMALIZE\"\n  note_font_size 42\n  xpos -635\n  ypos 916\n  bdwidth 319\n  bdheight 181\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x71c67100\n  label \"Razor Sharp!\"\n  note_font_size 42\n  xpos -641\n  ypos 1253\n  bdwidth 328\n  bdheight 235\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x7171c600\n  label \"Multisample Hack\"\n  note_font_size 42\n  xpos -622\n  ypos 349\n  bdwidth 318\n  bdheight 191\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -508\n  ypos -95\n }\n Dot {\n  name Dot39\n  xpos -474\n  ypos -31\n }\n Dot {\n  name Dot5\n  xpos -474\n  ypos 57\n }\nset N23df10 [stack 0]\n Dot {\n  name Dot9\n  xpos -584\n  ypos 57\n }\nset N230b10 [stack 0]\n Dot {\n  name Dot7\n  xpos -747\n  ypos 57\n }\nset N2a3a10 [stack 0]\n Dot {\n  name Dot6\n  xpos -895\n  ypos 57\n }\n DirBlurWrapper {\n  BlurCenter {{width/2} {height/2}}\n  BlurLength {{parent.inverse?(parent.Size*100):-(parent.Size*100)}}\n  BlurAngle 54\n  name G\n  xpos -929\n  ypos 125\n }\n Dot {\n  name Dot8\n  xpos -895\n  ypos 196\n }\npush $N2a3a10\n FilterErode {\n  channels rgb\n  size {{parent.inverse?(parent.Size*100):-(parent.Size*100)}}\n  filter {{max(0,min(3,parent.Algorithm-2))}}\n  name CDEF\n  xpos -781\n  ypos 124\n }\npush $N230b10\n Defocus {\n  defocus {{parent.Size*100}}\n  name B\n  xpos -618\n  ypos 117\n }\npush $N23df10\n Blur {\n  channels {rgba.red rgba.green rgba.blue none}\n  size {{parent.Size*100}}\n  quality 40\n  crop false\n  name A\n  xpos -508\n  ypos 122\n }\n Switch {\n  inputs 4\n  which {{parent.Algorithm<2?parent.Algorithm:parent.Algorithm>5?parent.Algorithm:2}}\n  name Switch1\n  xpos -508\n  ypos 193\n }\n Blur {\n  size 5\n  quality 5\n  crop false\n  name RefineEdges\n  xpos -508\n  ypos 261\n }\n NoTimeBlur {\n  name NoTimeBlur\n  xpos -508\n  ypos 428\n }\n Transform {\n  translate {{((frame*samplecount)-floor(frame*samplecount)-.5)*samplewidth} {((floor(frame*(samplecount+0))/(samplecount-1))-(floor((floor(frame*samplecount)/(samplecount)))+(floor(frame)/(samplecount-1)))-.5)*samplewidth x2 0}}\n  center {512 512}\n  filter Lanczos4\n  name SampleOffset\n  xpos -508\n  ypos 452\n  disable {{1-parent.multisample_enable}}\n  addUserKnob {20 User}\n  addUserKnob {7 samplecount}\n  samplecount {{parent.no_samples}}\n  addUserKnob {7 samplewidth R 0 20}\n  samplewidth {{parent.sample_width}}\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  reformat true\n  crop false\n  name PreCrop\n  xpos -508\n  ypos 476\n }\n Erode {\n  channels rgba\n  size 0\n  quality 100\n  name Erode\n  xpos -508\n  ypos 666\n }\n FilterErode {\n  channels rgb\n  size 0\n  filter gaussian\n  name ReErode\n  xpos -507\n  ypos 695\n }\n Blur {\n  size {{parent.ReErodeSoften*10}}\n  name Soften\n  xpos -507\n  ypos 719\n }\n Group {\n  name SilkKernel\n  xpos -507\n  ypos 858\n  addUserKnob {20 SilkKernel}\n  addUserKnob {41 \"Local GPU: \" T BlinkScript2.gpuName}\n  addUserKnob {41 \"Use GPU if Available\" T BlinkScript2.useGPUIfAvailable}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 Streaks T BlinkScript2.SilkKernel_Streaks}\n  addUserKnob {41 Size T BlinkScript2.SilkKernel_Size}\n  addUserKnob {41 Offset T BlinkScript2.SilkKernel_Offset}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -382\n   ypos 400\n  }\n  BlinkScript {\n   recompileCount 13\n   ProgramGroup 1\n   KernelDescription \"2 \\\"SilkKernel\\\" iterate componentWise a8d20f769bc5f1146178c19e66f6939a5a62084403c064c3e35b7dd54065c60d 2 \\\"imageIn\\\" Read Ranged2D \\\"imageOut\\\" Write Point 3 \\\"Streaks\\\" Int 1 AwAAAA== \\\"Size\\\" Float 1 AABIQg== \\\"Offset\\\" Float 1 AACAPw== 3 \\\"radius\\\" 1 1 \\\"_size\\\" 1 1 \\\"_offset\\\" 1 1 3 \\\"imageInrangeMin\\\" Int 2 1 AAAAAAAAAAA= \\\"imageInrangeMax\\\" Int 2 1 AAAAAAAAAAA= \\\"_filterWidth\\\" Int 1 1 AAAAAA==\"\n   EncodedSource \"1 1479 dhEQzoHxuPZMTdlATdMOWo2dFJcBVepmv6cp1NCeZWF+Mf5M0u80yBHudvlCkY6QzaXnS8kgn2bC+1HxdrsgE2MNp2hxP6weoR9eXGJSmA4Ipxy7tjAplgO7Ziww2ePVBhVJ/9TLn7XocM6jxn+51vwvMvkp6zv3UTIHvyPQ53zzTBNX4EREGYAg0juBopJLTxm6OuSSu1pt6d/0/w7Y6NDYJnRPkJYQtTB6BxUXBipyC1urZoNfDDexKBxWdHnNX/2C5LpHmyRHW7DBqih5puqF1v2wK3M7zUAwAefC1cQf4Y51jt00IyTpd+DJhQhgj7PTHcZHSmU0cHrgm2jr6NI8/1ZbiNQdUgGOCm6z2AVgzckBO5m5Bcwb4isjOMk6dCZyMuRo9eTFwWvALWAbQ1L5e/xxDN0C4v5WI8ctoIgtNUveQAzCut7+XqDXLTnEGKPSN0htmry8pIqitUe/1lLhoo2MlLZvQeAsxpcDvUPgMneye1DZ4d2/GITXV29yA6kdJxg2O1LgmF+H3viS7XC4O5S/HrQmfBK6nz1LREHb5mqmGhwzM9axnTE4Z2iHoP88JUTOZlnGoIQ/30kW3vSuH5wrbJk2NEB/Nf1HQUpXGg5VyLHLWRb1MBfW0M2OWnfRk9/yTVvj0PV+DkOAmiZ72NMiBFPbwnF+POtT9o+wZt7lQoKwUNu6qIeFokXHeuNfe/oELFWmakDd5Bz/q3cbfteJryiEqascGYVMVtygjYD/NAM5oXsJM3onEZxRLT6UbkFXfexwjYFRaMMQw4BRSq5LmO0qQYs4Xi/deSbRzv9zGzCq5d33nK7rLYEQO7ADUTyb4epF6p3M64Y1BT5w6Vhn9oAAeWoxMTefRFxPNXGYZ4vThzZV/dorJbQh2AbjltNp7qfZ2V/Q5MFdBgD9Zn4wc2sgdQ0qZJ4DsG4ctUId4rc+My+VKW789aYBzdaXVNNpblH2TRhKMNOYxkIFSItVOKLcGWrN//worJyIJu2NfuMV6qcpMPY95NlhXlTVbq8ySJ65gcJDhiHYeWsGRd3Cwon0fh58WKq9d0zUopU38enhOYuXtLMx8jc8qpf0UDw5J/yKUKll5MDvOvZh70T9YvZeU8snD8AinVu1yCd9uJaUq6gQ3pkWRZ9XC+1YN4yPo2/3Ppx/y9D76kNxajXfmkOqTflLjgmKDCw/dCvkDXutj7rrs03OffctiKCxEjFndQO4oSycDR2wCz22mfvHddBMiuLQln1M6SZihyR1otSvL8gekCk+sHyFbap7vj2gGxty86ZhGf1F7/9agdrNYWJfoakkYEnH0I3Q0mVIZ+ET9Ts5ojvLGhwtetcWG+ZE2CMt7aCAzQQw5lnX6BXbfHOjPxyesCHlsqnqsOb2N0C+4BG2K1bhLOJy2c050pPpuxJjj2Q3msDanYmb1qafvVo6oF/TsSGZMEVGsjFbFb3URPHQi4/I2igSsNx9qPv/yuUt+RhWgc106qzZXyT6jsAJK9lqdc2EHF1/dgVNa+KssoB2zqrKUkX5lwhS9fZFI4Fi0vgz7u+V0AxnpsySFUfpP7BKgmx+W0NgsTgSXiQQOA44ZPAGspc9MsLgLqn2CNHet1c7uX3MRjhHoPTdplgj133pZ6Qr5HaBSy3munkTSVKKuWbP8sznux1okaF8z82N+FSoVfPGaYU9HRR3caSoJxWxcNrlGUI1FZoCwrvCj2bVswHQrMtrYhEm6y5Xubhb10VzfpxegsYQus8YyoXhfgi3MIfjwBIULPQTThTIFz7QQ9E4GjPCguOPiiGVpwmwEmpFHl32nMZhX2Jpaei75SAPVFSAm+F0qpB7/YPsJ/QFqAfVLdR73/EGY3wRdp1IorOhFQBJvhX2mDPyVzXUSsLcjwRcCC56aOi3Cwvk53KsrAABdt0iF3K7JWnGQ2m7rl9FNJ/V7txafkY5xei1bXUSHEQ+53YKNGxk3j++e++HppcQ2tom\"\n   rebuild \"\"\n   SilkKernel_Streaks {{Controller.Streaks}}\n   SilkKernel_Size {{Controller.Size}}\n   SilkKernel_Offset {{Controller.Offset}}\n   protectKernelWhenPublishing true\n   rebuild_finalise \"\"\n   name BlinkScript2\n   xpos -382\n   ypos 440\n  }\n  Output {\n   name Output1\n   xpos -382\n   ypos 540\n  }\n end_group\n Dot {\n  name Dot1\n  xpos -473\n  ypos 976\n }\nset N117e4710 [stack 0]\n Dot {\n  name Dot2\n  xpos -558\n  ypos 976\n }\n Dot {\n  name Dot3\n  xpos -558\n  ypos 1064\n }\npush $N117e4710\n Grade {\n  gamma 1.2\n  black_clamp false\n  name Extend\n  xpos -507\n  ypos 1017\n }\n Merge2 {\n  inputs 2\n  operation divide\n  mix 0\n  name Uniform\n  xpos -507\n  ypos 1061\n }\n Crop {\n  box {0 0 {input.width} {input.height}}\n  softness 13\n  reformat true\n  crop false\n  name PostCrop\n  xpos -507\n  ypos 1151\n }\n Group {\n  name SilkShader\n  xpos -507\n  ypos 1193\n  addUserKnob {20 SilkShader}\n  addUserKnob {41 \"Local GPU: \" T BlinkScript2.gpuName}\n  addUserKnob {41 \"Use GPU if Available\" T BlinkScript2.useGPUIfAvailable}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 Contrast T BlinkScript2.SilkShader_Contrast}\n  addUserKnob {41 Gamma T BlinkScript2.SilkShader_Gamma}\n  addUserKnob {41 Shift T BlinkScript2.SilkShader_Shift}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -492\n   ypos 684\n  }\n  BlinkScript {\n   recompileCount 36\n   ProgramGroup 1\n   KernelDescription \"2 \\\"SilkShader\\\" iterate pixelWise 37886f6e25026b952dbda1c9c26e50da6f0ab7552ea7b4d1b217c2a63b64b133 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 3 \\\"Contrast\\\" Float 1 mpmZPw== \\\"Gamma\\\" Float 3 AACAPwAAgD8AAIA/AAAAAA== \\\"Shift\\\" Float 3 AACAPwAAgD8AAIA/AAAAAA== 3 \\\"Contrast\\\" 1 1 \\\"Gamma\\\" 3 1 \\\"Shift\\\" 3 1 1 \\\"coefficients\\\" Float 9 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"\n   EncodedSource \"1 3160 TZDhpVd5F85rRWAmzITAwqEa5RZ2CRXoVOj6mUsUqT3rDy87bEL3L2PFs3rm70CUy00Iif746ThB7CDGBzw+tQIpRw3wVBPJYQF7XHfldrFKKui/k2QxXj50Id9tIz/dhfrhuOPVfac0vNJNpOVmsUnF4AJhfoiskoH0BM4tL1njAw0hCtt/v2CZ3i4PNRp39AzWNA3G573AVry4lYBdC7eI+CYUmrJJNAaNB2vgc4p7+Z5HwPvae3QrbCP4QIV3Bqid0WY4Bn/Rqw1q3nXs8j+7SlL1d7FmJ5NYH33yo36LmyYDS4f3xSNV5RsuYb6t/p5w/YCkPdJ5PGvwoRvky0p5U8vh37HKXYU+49TIx7jnCr9ulPLfu/Z5Dwofjs7qnJNfJqkirdEnq6lmHBBdWj9fd2oNz+QEAVsEOwbFDco8aeD2w0WCaLTn5zAl4i2J34WQPItKaMIIPyd58uAqAW9+l0hVr5UvWdoIfHNRCZI9vowECVjbBU8IY7eCH6XGT1trSTdsHOKwubZcfpZw9d93ZUM1f8xTm5am36UL9g++2VDgoXJaVSfYwq3fzFXf9ffVAuGWAykWsLKEynoth4z7otVCLA7Vtq0KWNX8DYZ76F/u7nRlG/MnYB0YHOXDfZoHrS5XkjuDBlL6aWj2WG0F84nwZgNwXU1ZTxmBsYvse4QIC5b57+evfVteh6AXoRLrRH1hC6SL37/0hVcibuRu4mB38DVXr99hP2m9P2VARP1KuldKUdkIVvbPI+9LhdF0FXYPb56UMfPKiWWbvz++DmSAH2a4soa/qKUEaU5wjCNsiyjfbGjlkJe1B/x1NO+NHz1bEtODcRrJPJmneCF3TfO3vj20tmV5a8B17yJU8LOxEoLC+TwU9D6IUeIYJl0ogW1+DGRe3q2udpa3dXhnz1diT97vFt2vb56mZ3RJTVLuptwTDah35p/C6R/COeVEP9Eq43WO6KZ7B75YSAEXODL8SczSYSP91NdBoiYONxx61wC5SjXzDbEF9Eb46aUzMtNkdI6RhrXxo1Vk6LgxYDlRwmdUyviSoEBGXe7GbjzncIwWVRJRqhrsddbPSbVf1QpeQ12/jbIZItdFHU3+AM5RxQ/ga64Osp0N9LQ9wuNG1np/A51V2YLKwHp4EubblGeyoaybsEl21fDkPMnOk0ESOGrMX+OTdD9d6DYhvrCCV2VNtO12Ln7JeMpsdN2bCeyAneSnVvMvUYya1mM3ElagghPCYtZ9nbH6uwepIaH7plpCRmk8AdJvdE120P2lqJ7CcTW+yUohvO3xk2TZNzCcc0qg6wXs8IqDTjqN89k+97ndYX6GgEnf31QpOrG6Lm6oEpE7NS/C3TSuciJtcpJHj8aYzVKbXYZDbmpIpHF0TAH0zCuIA5JtEIAOoh20jh0r08INYbJyaDbyWdM94Hn5UImk4jrZrvrN9Fvoc2kPSFjlzfaV+mcrrf+gaWkm+Oi0JtZQU+kY52ta2d3VHmNnOprcRNN7Z8MGvjieGh34O7WYknuvG4Ooe6nrfZyMi/lVHGx9zIYKm8qbq6ZClfBmafIyu4mQFOUxztnIusuq7loVkueC4ll46pHA7U44dlDQIxzcNte7yzSpZtlaEaTUWc4qYAp8scRsODV5H6TLcny9xURzVriW/c/a8odIPTEEY8Vy2cP4IjgaULDNBQT3lJLGFumOYmTSNVKXOzYkjqc0nflFWwNOtQtdLLcC1F32/49EakAPhHeZDDBB+t9EDTTtQ2q/Ee1oLShCidRpRU3JmqRwzEe402XSUdRGDaPaw8uBIx0OLqgcuxB+7Xoehay2AOpaUqIWYa5WYthSiksVU1GurAziXdKsIJklsQ5uHqIFIXmbMbOU5Mj3uaBMxAKjAknCMf8kW5MVOzpJR+w+S5xvLR94WiyaVG4I2ZUQsqwPJc9juWE3m3Rvc6d5Zzd4lBPk33XEPp1APnLuYnBhXlNPK1sat4BgQFlHLBLiDW3CQ61vJSPAfE5IA0IhEd53xuM+ek9tmQSS8kzFdfa7oCgqp4MP/BRddTMjDYdkOyCIOLrbxSEShrfHnrq7F0Iwbk+0+vLGwfly9KszQNAMLIVanoQlGswefmy9QT6We5xDa1YwkiJWVQYGdwjWajnuE4XH9W2KPOC+T4fJ52gD5ixg69IJHGEKnhkNUPgyssgixE/Vj+7IWLwIwf5hnd7qX6XmRkeVgE5/bZi34TbZE8RqgHhUo6ftWvoo991CFk1sTogY7G/bpZTvkQVoxUGUBDcWxjIf+avubQGc7pPzV8vnRwwLhrjiLmfYRHUnkuggXOw4HWBHI47XqqPX+mnE1t8U+5u25RHAjQ/bPlUn2DD2cQOydHUdO/kjO3sxzFr9LgBGSEZ/KQHMx1v7qupMNffiVbLx2Blpl9Qeyo74wsq6YHIMoOQKXTrqZIOd0r3dNCFNK4qJYUo98ZFUfNMrqHEScL4AqG7f/QxKw9twvOnNtFpHP7dAcly8SYdeni0cLFyRf7wpxs3mzQrmHDqOOey+VPZisJQfHSNsPIECq0mPtbMQNj1Hid8SkM6oGjLsdzoTPiNYaNvMg6J8lHqc7h+2jSxQ3IXbixNMO6lC+30t9t2+evPHAzIy/RJR/3qfwZk58jscxHDm7FdquW7vwlCYX6NenX2wZqAtHj/tqlxEUDgtEdogwz/XrsZ87L358hFhyfl7az1WMXfXc3mXEWqMkx4UsNQUqc87/9+DO56sJxgrPD+6vm8B2odKf1JHnOhkEPBWmmLqcpaXZ1438v3EEWYoQIHn0dhETcKnv/XUXWbxQwbLvB12cu6E1DzTcrR0eCml6p+B5tem/vk/jqybMbqHFq1Ty/n/+2/OZocKF3DT8JuyKKHZdqBmsL+oraxPP0q6j5/ITO4Sfc66UR3DpLGs5ZP2QoGwwC2Hea3uPqtqAgVQxaZi/o6+zniz8w8Zqcp6jmL2a9XfBmuYRiAFubAp4EZ/NmzM9WGIMK1TCoz5h/1uK3qWdCdUYKTPuMSyEU39J/NTwsXTN4WNXaBsf5whisgkPdNU64RxtDdx23nmhBRsRddeJjtRL8IETMXD2BRsWw0MQaqzzQ0KCMtJVPIMheLFaTgjP9nn4O3bgTfGAcXNEQNbSbLm4g1sj66tvPMTTMBNXvubPU51bUnML59nE66VvNvyB0rM2Im1Se/p2YRxIsO8DHUivQL1oCMddkk6WNBqCR6zY0ZbWMvucrmsm/9bAwTdsLmen0NcgkQfNFRf4I1kgEt+h6eV9etC3UIDeWhrjDVQfP51pq4QfzKpcLHWoLDLHen79MO6io611h0AOSr2BGvYkBVyBfnQNqo82UYx1mBvMnqHTCcL4YFFhiy39/97TcDFg5brHYxGQ/aC5SBhOP9oUQ2N8tIk1SZiknIhUHrUGd2pnPOzMfTYzmCz7nPXITZbwuYtDFLZbilV9lRr/iG25UjAz58Y5ACzqRrN7UMgSgfIKtvh1B08Ki7ZSuG2xpW0bQUtltzQgTmdLY8j9Wgl6niMbc8AtTqO4ES0yU1tzY4NHc/hiLJaZaW2mtJnk0d3J6e9UkmgJ5YZ/sUwf0hdli6e6hgpIflfEOHHPiMfuxkZBgTxueCX418Bs2DBDLjScxdDXvnshG2HYy08U+KIEtGz6ic9kET95/pxK3ExxhFdAFKiJ7WXbT6ejArLYthxndKTkC1A+A5fEvN7hYSKJkk0YBJCIcoxmw60VFogXAfYrjj7T6wjuwYH7l5WeTxBOnfdilnacGsP8PzlgnLrs12n+yiP0bQxeEpWzOjv0qoAY3dmh1FqRKWThl9owCVRCiJTnCQ7OYXCwtZKygMlWGztbk14dibmNdOvxeqmT7bK6MR+H81+azlI155CXGcewOA8bVU1b1SCQSdmcoGq6ew6jJy5rmnfvRzFVtJ8bVtbg/xE7mW4K6Z/5fVb6EPSgdQooThPLfjgKEGxFbhQZm0rPWkw6DppiLbTlIp13fiW/GenTpfdMvfuFV1ndLgL81aKViCcR8eLNwrKo/Qh7HUMfbFnYhOc4UVRZyFpqEQNVGVwQVF5OeJ2CRTBsnqHll6vCUZtvThtM1k6ldbsMoFaeZ2oOs14AfO5xtQFgNmcgDaXozv3ByzgvJeGzh20Za6Lurj7fc8NYzMPc1pDdqNtCD+fnzK/Qlt5MGyXRagcf37Hki8nKtc5T8W/qQ3bTlgVKa2kvdVK\"\n   rebuild \"\"\n   SilkShader_Contrast {{parent.parent.Controller.Contrast}}\n   SilkShader_Gamma {{parent.parent.Controller.Gamma} {parent.parent.Controller.Gamma} {parent.parent.Controller.Gamma}}\n   SilkShader_Shift {{parent.parent.Controller.Shift} {parent.parent.Controller.Shift} {parent.parent.Controller.Shift}}\n   protectKernelWhenPublishing true\n   rebuild_finalise \"\"\n   name BlinkScript2\n   xpos -492\n   ypos 724\n  }\n  Output {\n   name Output1\n   xpos -492\n   ypos 824\n  }\n end_group\n Clamp {\n  maximum_enable false\n  name Clamp\n  xpos -507\n  ypos 1317\n }\n Colorspace {\n  colorspace_out Cineon\n  name Colorspace18\n  xpos -507\n  ypos 1354\n }\n Colorspace {\n  colorspace_out YCbCr\n  name Colorspace11\n  xpos -507\n  ypos 1378\n }\n Sharpen {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  amount 4\n  name Sharpen1\n  xpos -507\n  ypos 1408\n }\n Colorspace {\n  colorspace_in YCbCr\n  name Colorspace12\n  xpos -507\n  ypos 1432\n }\n Colorspace {\n  colorspace_in Cineon\n  name Colorspace19\n  xpos -507\n  ypos 1458\n }\n Grade {\n  white {{\"(1-(sqrt(SampleOffset.translate.x*SampleOffset.translate.x+SampleOffset.translate.y*SampleOffset.translate.y) / sqrt(SampleOffset.samplewidth*SampleOffset.samplewidth+SampleOffset.samplewidth*SampleOffset.samplewidth)*2))*2\"}}\n  name SampleFocus\n  xpos -507\n  ypos 1533\n  disable {{1-parent.multisample_enable}}\n }\n TimeBlur {\n  divisions {{parent.SampleOffset.samplecount*5}}\n  shutter 1\n  shutteroffset start\n  shuttercustomoffset 0\n  name MultiSampler\n  xpos -507\n  ypos 1557\n  disable {{1-parent.multisample_enable}}\n }\n Expression {\n  temp_name0 Add\n  temp_expr0 2.285\n  temp_name1 Offset\n  temp_expr1 1\n  expr0 r/(r+Offset)*Add\n  expr1 g/(g+Offset)*Add\n  expr2 b/(b+Offset)*Add\n  expr3 max(r/(r+Offset)*Add,g/(g+Offset)*Add,b/(b+Offset)*Add)\n  name HighlightReduction\n  xpos -507\n  ypos 1601\n }\n Output {\n  name Output1\n  xpos -507\n  ypos 1664\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"This may cause artifacts!!!\"\n  xpos -417\n  ypos 1409\n }\n NoOp {\n  inputs 0\n  name Controller\n  label \"(don't ask!)\"\n  selected true\n  xpos -772\n  ypos 852\n  addUserKnob {20 User}\n  addUserKnob {7 Contrast}\n  Contrast {{parent.contrast}}\n  addUserKnob {18 Gamma}\n  Gamma {{((parent.Gamma.r-((parent.Gamma.r+parent.Gamma.g+parent.Gamma.b)/3))*1)+(parent.Gamma.a)} {((parent.Gamma.g-((parent.Gamma.r+parent.Gamma.g+parent.Gamma.b)/3))*1)+(parent.Gamma.a)} {((parent.Gamma.b-((parent.Gamma.r+parent.Gamma.g+parent.Gamma.b)/3))*1)+(parent.Gamma.a)}}\n  addUserKnob {6 Gamma_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {18 Shift}\n  Shift {{parent.Prim_HueRed} {parent.Prim_HueGreen} {parent.Prim_HueBlue}}\n  addUserKnob {6 Shift_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {7 Streaks}\n  Streaks {{parent.Streaks}}\n  addUserKnob {7 Size}\n  Size {{parent.Algorithm<2?parent.A.size:parent.A.size/2}}\n  addUserKnob {7 Offset}\n  Offset {{parent.Offset>1?pow(parent.Offset,6):parent.Offset}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_h_stickit.gizmo",
    "content": "Group {\n name StickIt\n tile_color 0x2f66ff\n label \"ref frame: \\[value RefrenceFrameInput]\"\n note_font Verdana\n selected true\n addUserKnob {20 Main l \"Main - StickIt\"}\n addUserKnob {26 Headline l \"\" +STARTLINE T \"\"}\n addUserKnob {26 range_devider l \"<b><font color=#977DB7>INPUT</font><b>\"}\n addUserKnob {3 RefrenceFrameInput l \"Reference Frame\" t \"This is the frame that you want to be the origin of your animation. That is, the frame where the input is exactly the same as the output. (This frame must be within the Range defined below!)\"}\n RefrenceFrameInput 126\n addUserKnob {22 RefFrameThis l \"This Frame\" -STARTLINE T \"nuke.thisNode()\\['RefrenceFrameInput'].setValue(nuke.frame())\"}\n addUserKnob {3 InputFrom l \"Range From\" t \"The first frame of the Analasis and Solve\"}\n InputFrom 53\n addUserKnob {3 InputTo l To t \"The last frame of the Analasis and Solve\" -STARTLINE}\n InputTo 150\n addUserKnob {22 Button_SetToGlobal l \"Set To Global\" t \"This will set the in and out points to the global comp range.\" -STARTLINE T \"nuke.thisNode().knob(\\\"InputFrom\\\").setValue(float(nuke.knob(\\\"first_frame\\\")))\\nnuke.thisNode().knob(\\\"InputTo\\\").setValue(float(nuke.knob(\\\"last_frame\\\")))\"}\n addUserKnob {26 Devider_Options l \"<b><font color=#977DB7>OPTIONS</font><b>\"}\n addUserKnob {4 Option_Output l Output M {\"Source & Overlay\" Source Overlay ST-Map}}\n addUserKnob {4 FilterMethod l \"Filter Method\" M {Impulse \"Cubic \" Keys Simon Rifman Mitchell Parzen Notch Lanczos4 Lanczos6 Sinc4}}\n FilterMethod \"Cubic \"\n addUserKnob {6 enableMotionBlur l \"Enable Motion Blur\" +STARTLINE}\n addUserKnob {26 DeviderView l \"<b><font color=#977DB7>DISPLAY</font><b>\"}\n addUserKnob {41 previewFeatures l \"Preview Features\" T si_ct.previewFeatures}\n addUserKnob {41 displayTracks l \"Show Features\" T si_ct.displayTracks}\n addUserKnob {6 DisableWarp l \"Disable Warp\" +STARTLINE}\n DisableWarp true\n addUserKnob {26 devider_solve l \"<b><font color=#977DB7>ANALYZE</font><b>\"}\n addUserKnob {22 RunAnalyse l Analyse T \"nuke.toNode(\\\"si_ct\\\").knob(\\\"clearTrack\\\").execute()\\n\\nnuke.toNode(\\\"si_ct\\\").knob(\\\"trackFeatures\\\").execute()\\n\\n\\n\\n\" +STARTLINE}\n addUserKnob {26 next l \"\" -STARTLINE T \"-> \"}\n addUserKnob {22 STiCKiT l Solve -STARTLINE T \"import NST_stickit\\nreload(NST_stickit)\\nNST_stickit.StickIT()\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 clearTrack l \"Clear Tracks\" T si_ct.clearTrack}\n addUserKnob {20 Help n 1}\n Help 0\n addUserKnob {26 Info l \"\" +STARTLINE T \"STiCKiT v2.0\\n\\n1) Place the footage that you want to match the motion of into the \\[Source] input \\n\\n2) Set the frame range you want to analyse. You can use the \\[Set To Global] button to set the range to the active project range.\\n\\n3a) If you want to overlay another image ontop of the source, but that image into the \\[Overlay] input, then set the \\[Reference Frame] to the frame that you have made a patch for.\\n\\n3a.1) Hit Solve, and now the footage should match.\\nand hit Analyse.\\n \\nIf you want to use the \\\"Keyframe Assist\\\" features, you don't need to use the solve button, as this only affects the build in warp\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 TABAssist l \"Keyframe Assist\"}\n addUserKnob {26 devider_assist l \"<b><font color=#977DB7>ASSIST</font><b>\"}\n addUserKnob {22 AssistTrackBack l <-- T \"import NST_stickit\\nreload(NST_stickit)\\nNST_stickit.Initializer(2)\" +STARTLINE}\n addUserKnob {22 AssistTrackAll l \"     \\[All Frames]     \" -STARTLINE T \"import NST_stickit\\nreload(NST_stickit)\\nNST_stickit.Initializer(0)\"}\n addUserKnob {22 AssistTrackForward l --> -STARTLINE T \"import NST_stickit\\nreload(NST_stickit)\\nNST_stickit.Initializer(1)\"}\n addUserKnob {6 assistStep l \" \" +STARTLINE}\n addUserKnob {3 AssistStepSize l \"Only assist\" -STARTLINE}\n AssistStepSize 5\n addUserKnob {26 assistCountText l \"\" -STARTLINE T frames}\n addUserKnob {26 devider_rotoassist l \"<b><font color=#977DB7>ASSIST SETTINGS</font><b>\"}\n addUserKnob {4 AssistType l \"Assist Method\" M {\"Local (Using Solve Method)\" \"Global \\[Median]\" \"Global \\[Average]\"}}\n addUserKnob {6 assist_rototransform l \"\\[Roto] Apply to element transform\" t \"With the setting enabled, the animation will be applied to the transform handle, rather than each point in the roto element.\" +STARTLINE}\n assist_rototransform true\n addUserKnob {6 RespectKeyframes l \"Respect Keyframes\" t \"Respect exsisting keyframes as \\\"guides\\\" for the assist animation.\" +STARTLINE}\n addUserKnob {6 appendAnimation l \"Append Animation\" t \"Do you want to keep any exsisting animation?\" +STARTLINE}\n addUserKnob {6 AssistOnlyIntervals l \"Keyframe Only Intervals\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {20 help_assist l Help n 1}\n help_assist 0\n addUserKnob {26 assistInfo l \"\" +STARTLINE T \"1) Select the node you want to assist in the dag\\n2) Hit one of the controls below.\\n(For Roto, Rotopaint and Splinewarp you must open \\nand select the element(s) you want to assist.)\\n\"}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {20 Advanced}\n addUserKnob {26 Devider_Tracking l \"<b><font color=#977DB7>TRACKING</font><b>\"}\n addUserKnob {4 SolveMethod l \"Solve Method\" M {Triangulation Nearest}}\n addUserKnob {41 numberFeatures l \"Number of Features\" T si_ct.numberFeatures}\n addUserKnob {41 featureThreshold l \"Detection Threshold\" T si_ct.featureThreshold}\n addUserKnob {41 minTrackLength l \"Minimum Length\" T si_ct.minTrackLength}\n addUserKnob {41 matchThreshold l \"Track Threshold\" T si_ct.matchThreshold}\n addUserKnob {41 smoothnessThreshold l \"Track Smoothness\" T si_ct.smoothnessThreshold}\n addUserKnob {41 consistencyThreshold l \"Track Consistency\" T si_ct.consistencyThreshold}\n addUserKnob {41 featureSeparation l \"Feature Separation\" T si_ct.featureSeparation}\n addUserKnob {26 devider_debug l \"<b><font color=#977DB7>OTHER OPTIONS</font><b>\"}\n addUserKnob {6 displayMotion l \"Output Motion Vectors\" +STARTLINE}\n displayMotion true\n addUserKnob {6 displayDiffrence l \"Output ST Map\" +STARTLINE}\n displayDiffrence true\n addUserKnob {6 disableprecrop l \"Disable PreCrop\" +STARTLINE}\n disableprecrop true\n addUserKnob {26 info l \"\" +STARTLINE T \"Use Diable PreCrop if your overlay footage is being cropped off. \\nHowever enable it again if you want to copy / paste the node or \\notherwise unplug the overlay input. Due to a bug in nuke all \\nkeyframes will be removed if this is not turned on.\"}\n}\n Input {\n  inputs 0\n  name InputOverlay\n  tile_color 0xff\n  xpos 776\n  ypos -15\n  number 1\n }\n Crop {\n  box {0 0 {InputSource.width} {InputSource.height}}\n  reformat true\n  crop false\n  name si_prec\n  tile_color 0xff\n  xpos 776\n  ypos 20\n  disable {{parent.disableprecrop}}\n }\n AdjBBox {\n  numpixels 250\n  name AdjBBox1\n  xpos 775\n  ypos 44\n  disable true\n }\n Dot {\n  name Dot2\n  tile_color 0xff\n  xpos 810\n  ypos 106\n }\nset N725dde10 [stack 0]\n Dot {\n  name Dot3\n  tile_color 0xff\n  xpos 937\n  ypos 106\n }\nadd_layer {si_mo si_mo.red si_mo.green}\n Expression {\n  channel0 {si_mo.red -si_mo.green}\n  expr0 x\n  channel1 {-si_mo.red si_mo.green}\n  expr1 y\n  expr2 0\n  name si_stgen\n  tile_color 0xff\n  xpos 903\n  ypos 137\n }\nset N725e5570 [stack 0]\n Dot {\n  name Dot4\n  tile_color 0xff\n  xpos 937\n  ypos 498\n }\npush $N725e5570\npush $N725dde10\n ShuffleCopy {\n  inputs 2\n  in si_mo\n  alpha alpha2\n  black red\n  white green\n  red2 red\n  green2 green\n  out2 motion\n  name si_sh\n  tile_color 0xff\n  xpos 776\n  ypos 137\n }\n SplineWarp3 {\n  crop_to_format false\n  boundary_bbox false\n  colorOverlay {0 0 0 0}\n  view {}\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Stroke1 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438b1e98 x43a6af3c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke2 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438b1e98 x43a6af3c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc309a46b 0 1 x40816ac8 1}\n       {x42580000 xc30548c6 x409f8850 1 x409f8850 1}\n       {x425c0000 xc2ff57cc x40c5fe60 1 x40c5fe60 1}\n       {x42600000 xc2f1d1c0 x40e049d0 1 x40e049d0 1}\n       {x42640000 xc2e34e92 x40e3c9c8 1 x40e3c9c8 1}\n       {x42680000 xc2d55887 x40e07b00 1 x40e07b00 1}\n       {x426c0000 xc2c73f32 x40e1dbe0 1 x40e1dbe0 1}\n       {x42700000 xc2b91d0b x40e4fe48 1 x40e4fe48 1}\n       {x42740000 xc2aa9f69 x40ecd6c8 1 x40ecd6c8 1}\n       {x42780000 xc29b8232 x40ef0808 1 x40ef0808 1}\n       {x427c0000 xc28cbe68 x40f95f24 1 x40f95f24 1}\n       {x42800000 xc278ac9b x4103efd6 1 x4103efd6 1}\n       {x42820000 xc25784e5 x40fac290 1 x40fac290 1}\n       {x42840000 xc239fbf7 x40ebba4c 1 x40ebba4c 1}\n       {x42860000 xc21c9652 x40ab6598 1 x40ab6598 1}\n       {x42880000 xc20f2291 x40b208b6 1 x40b208b6 1}\n       {x428a0000 xc1e02849 x4098cc92 1 x4098cc92 1}\n       {x428c0000 xc1d1ded9 x40392434 1 x40392434 1}\n       {x428e0000 xc1b1df3c x40869192 1 x40869192 1}\n       {x42900000 xc18e9610 x4034be3c 1 x4034be3c 1}\n       {x42920000 xc184afad x3f12e0e0 1 x3f12e0e0 1}\n       {x42940000 xc1832800 x3e99c1b0 1 x3e99c1b0 1}\n       {x42960000 xc17fc33f x3ed67680 1 x3ed67680 1}\n       {x42980000 xc178e898 x3f2987e0 1 x3f2987e0 1}\n       {x429a0000 xc16a9243 x3f0ecff8 1 x3f0ecff8 1}\n       {x429c0000 xc1670e99 -}\n       {x429e0000 xc167ada8 xbd0f3a00 1 xbd0f3a00 1}\n       {x42a00000 xc1682d0d -}\n       {x42a20000 xc1668782 x3e97c300 1 x3e97c300 1}\n       {x42a40000 xc15eb0dd x3fbc1f78 1 x3fbc1f78 1}\n       {x42a60000 xc12fa3a3 -}\n       {x42a80000 xc13095e2 xbe35af40 1 xbe35af40 1}\n       {x42aa0000 xc13f2b3e xbf7f97e0 1 xbf7f97e0 1}\n       {x42ac0000 xc15088de xbfa64104 1 xbfa64104 1}\n       {x42ae0000 xc168bb7f xbff9a5e8 1 xbff9a5e8 1}\n       {x42b00000 xc187792c xc023ccee 1 xc023ccee 1}\n       {x42b20000 xc19d50fb xc02efed4 1 xc02efed4 1}\n       {x42b40000 xc1b338e1 xc02a765c 1 xc02a765c 1}\n       {x42b60000 xc1c7ee92 xc02003fc 1 xc02003fc 1}\n       {x42b80000 xc1db39e0 xc01d8190 1 xc01d8190 1}\n       {x42ba0000 xc1ef4ef6 xc0227ff0 1 xc0227ff0 1}\n       {x42bc0000 xc201ecee xc025bdb0 1 xc025bdb0 1}\n       {x42be0000 xc20c5f31 xc02838f8 1 xc02838f8 1}\n       {x42c00000 xc216f40d xc02e1820 1 xc02e1820 1}\n       {x42c20000 xc2222235 -}\n       {x42c40000 xc2221147 x3d4b2800 1 x3d4b2800 1}\n       {x42c60000 xc220a4b7 x3ed81880 1 x3ed81880 1}\n       {x42c80000 xc21eb0e5 x3f189640 1 x3f189640 1}\n       {x42ca0000 xc21be005 x3f59cb20 1 x3f59cb20 1}\n       {x42cc0000 xc217e28c x3fd264a0 1 x3fd264a0 1}\n       {x42ce0000 xc20eb9bb x3fd36950 1 x3fd36950 1}\n       {x42d00000 xc20aabf7 -}\n       {x42d20000 xc20b6547 xbdf1ee00 1 xbdf1ee00 1}\n       {x42d40000 xc20b9de5 xbdfe7f00 1 xbdfe7f00 1}\n       {x42d60000 xc20c63c6 xbe85a680 1 xbe85a680 1}\n       {x42d80000 xc20db47f xbe9f86c0 1 xbe9f86c0 1}\n       {x42da0000 xc20ee1e1 xbe3d4e00 1 xbe3d4e00 1}\n       {x42dc0000 xc20f2f1b -}\n       {x42de0000 xc20edaae x3e074a80 1 x3e074a80 1}\n       {x42e00000 xc20e2086 x3e8cee00 1 x3e8cee00 1}\n       {x42e20000 xc20ca6f6 x3f0c5960 1 x3f0c5960 1}\n       {x42e40000 xc209bdbb x3f44d720 1 x3f44d720 1}\n       {x42e60000 xc206803d x3f6d3240 1 x3f6d3240 1}\n       {x42e80000 xc2025429 x3f960768 1 x3f960768 1}\n       {x42ea0000 xc1fa3f8d x3fc854a0 1 x3fc854a0 1}\n       {x42ec0000 xc1eb9dbe x40066408 1 x40066408 1}\n       {x42ee0000 xc1d8a68b x402bb5ec 1 x402bb5ec 1}\n       {x42f00000 xc1c0b043 x404b38cc 1 x404b38cc 1}\n       {x42f20000 xc1a5d858 x4065d654 1 x4065d654 1}\n       {x42f40000 xc1873aae x407e9e7c 1 x407e9e7c 1}\n       {x42f60000 xc14c6172 x4085a170 1 x4085a170 1}\n       {x42f80000 xc108d3ec x40871c77 1 x40871c77 1}\n       {x42fa0000 xc08a89f6 x4088d3ec 1 x4088d3ec 1}\n       {x42fc0000 0 x408da649 1 x408da649 1}\n       {x42fe0000 x4090c29c x40924a47 1 x40924a47 1}\n       {x43000000 x41124a47 x4092bf3c 1 x4092bf3c 1}\n       {x43010000 x415b208a x408d243b 1 x408d243b 1}\n       {x43020000 x418fb741 x4087cbc6 1 x4087cbc6 1}\n       {x43030000 x41b17628 x4081fb2a 1 x4081fb2a 1}\n       {x43040000 x41d0b4d6 x406ab448 1 x406ab448 1}\n       {x43050000 x41ec233a x4061b790 1 x4061b790 1}\n       {x43060000 x4204915d x407f85f0 1 x407f85f0 1}\n       {x43070000 x4216025b x404b5560 1 x404b5560 1}\n       {x43080000 x421dfc09 x3fee4880 1 x3fee4880 1}\n       {x43090000 x4224e6e3 x3fdf00c0 1 x3fdf00c0 1}\n       {x430a0000 x422bec15 x3fdf2b80 1 x3fdf2b80 1}\n       {x430b0000 x4232d99b x3fd9a880 1 x3fd9a880 1}\n       {x430c0000 x4239869d x3fd219d0 1 x3fd219d0 1}\n       {x430d0000 x423ffb38 x3fda4c00 1 x3fda4c00 1}\n       {x430e0000 x42472b5d x3ffa31c0 1 x3ffa31c0 1}\n       {x430f0000 x424f9e54 x400d4fd8 1 x400d4fd8 1}\n       {x43100000 x4258d558 x40165ad8 1 x40165ad8 1}\n       {x43110000 x426269af x401a1750 1 x401a1750 1}\n       {x43120000 x426c1842 x4014f340 1 x4014f340 1}\n       {x43130000 x42750817 x3ffaef40 1 x3ffaef40 1}\n       {x43140000 x427bc736 x3f97bae0 1 x3f97bae0 1}\n       {x43150000 x427e83c5 -}\n       {x43160000 x427d41f5 xbef15c00 1 0 1}}\n      {{x42540000 x447e1997 0 1 xc155e6a0 1}\n       {x42580000 x447aa42d xc16c4240 1 xc16c4240 1}\n       {x425c0000 x4476b785 xc1819af0 1 xc1819af0 1}\n       {x42600000 x44728a7e xc184a8f0 1 xc184a8f0 1}\n       {x42640000 x446e6cf6 xc1836dc0 1 xc1836dc0 1}\n       {x42680000 x446a53a2 xc1854a90 1 xc1854a90 1}\n       {x426c0000 x4466184d xc18bc880 1 xc18bc880 1}\n       {x42700000 x4461971a xc198e240 1 xc198e240 1}\n       {x42740000 x445c8a29 xc1a9db50 1 xc1a9db50 1}\n       {x42780000 x4456f965 xc1bb0a50 1 xc1bb0a50 1}\n       {x427c0000 x4450d984 xc1cc7d90 1 xc1cc7d90 1}\n       {x42800000 x444a318c xc1d9e4d0 1 xc1d9e4d0 1}\n       {x42820000 x44433b37 xc1ddc740 1 xc1ddc740 1}\n       {x42840000 x443c5518 xc1de7670 1 xc1de7670 1}\n       {x42860000 x443553d0 xc1d133f0 1 xc1d133f0 1}\n       {x42880000 x442f41d9 xc1d28b10 1 xc1d28b10 1}\n       {x428a0000 x44282b1f xc1cacbd0 1 xc1cacbd0 1}\n       {x428c0000 x4422951c xc1afea20 1 xc1afea20 1}\n       {x428e0000 x441d2c7d xc1b21e70 1 xc1b21e70 1}\n       {x42900000 x44177335 xc1b8fa00 1 xc1b8fa00 1}\n       {x42920000 x44119cdd xc1b97f20 1 xc1b97f20 1}\n       {x42940000 x440bdb43 xc1b792d0 1 xc1b792d0 1}\n       {x42960000 x440623b0 xc1b5eaa0 1 xc1b5eaa0 1}\n       {x42980000 x44007c99 xc1afbab0 1 xc1afbab0 1}\n       {x429a0000 x43f6500a xc1a70750 1 xc1a70750 1}\n       {x429c0000 x43ec1848 xc1a42798 1 xc1a42798 1}\n       {x429e0000 x43e1cb17 xc1a38608 1 xc1a38608 1}\n       {x42a00000 x43d7a787 xc1a13ac8 1 xc1a13ac8 1}\n       {x42a20000 x43cda3be xc1a10d90 1 xc1a10d90 1}\n       {x42a40000 x43c385d5 xc19fdc20 1 xc19fdc20 1}\n       {x42a60000 x43b9a83a xc19b1d40 1 xc19b1d40 1}\n       {x42a80000 x43b0222d xc198a908 1 xc198a908 1}\n       {x42aa0000 x43a69319 xc1998758 1 xc1998758 1}\n       {x42ac0000 x439cf142 xc19ab888 1 xc19ab888 1}\n       {x42ae0000 x43933c08 xc1980ae8 1 xc1980ae8 1}\n       {x42b00000 x4389efe5 xc194d1d0 1 xc194d1d0 1}\n       {x42b20000 x4380a1ce xc1948c64 1 xc1948c64 1}\n       {x42b40000 x436ebcb1 xc194ffe4 1 xc194ffe4 1}\n       {x42b60000 x435c03a3 xc1975d24 1 xc1975d24 1}\n       {x42b80000 x4348e568 xc19620ac 1 xc19620ac 1}\n       {x42ba0000 x43367b78 xc19069a4 1 xc19069a4 1}\n       {x42bc0000 x4324caff xc188249c 1 xc188249c 1}\n       {x42be0000 x43147251 xc1799d90 1 xc1799d90 1}\n       {x42c00000 x4305974d xc1621d98 1 xc1621d98 1}\n       {x42c20000 x42f05d3c xc14e29a4 1 xc14e29a4 1}\n       {x42c40000 x42d7a431 xc147744c 1 xc147744c 1}\n       {x42c60000 x42be8029 xc145db08 1 xc145db08 1}\n       {x42c80000 x42a62d6f xc1426898 1 xc1426898 1}\n       {x42ca0000 x428de603 xc1449b80 1 xc1449b80 1}\n       {x42cc0000 x426a0d1e xc12bb762 1 xc12bb762 1}\n       {x42ce0000 x4245f055 xc10d73e8 1 xc10d73e8 1}\n       {x42d00000 x4223532a xc10daa75 1 xc10daa75 1}\n       {x42d20000 x41fe3635 xc10be8c5 1 xc10be8c5 1}\n       {x42d40000 x41babd8f xc0ffcad0 1 xc0ffcad0 1}\n       {x42d60000 x417ca19a xc0e1a4e6 1 xc0e1a4e6 1}\n       {x42d80000 x4113d638 xc0cb5cbe 1 xc0cb5cbe 1}\n       {x42da0000 x40451370 xc0c3926b 1 xc0c3926b 1}\n       {x42dc0000 xc03ef0cb xc0b22fde 1 xc0b22fde 1}\n       {x42de0000 xc100eb02 xc08cef35 1 xc08cef35 1}\n       {x42e00000 xc13cab68 xc0462646 1 xc0462646 1}\n       {x42e20000 xc163fe25 xbffcde3c 1 xbffcde3c 1}\n       {x42e40000 xc17be2f7 xbf6df468 1 xbf6df468 1}\n       {x42e60000 xc180de59 -}\n       {x42e80000 xc176a8e9 x3f86c1a8 1 x3f86c1a8 1}\n       {x42ea0000 xc1600c48 x3f9b7c88 1 x3f9b7c88 1}\n       {x42ec0000 xc14fc9c7 x3f8bae98 1 x3f8bae98 1}\n       {x42ee0000 xc13d20a2 x3f8d1a98 1 x3f8d1a98 1}\n       {x42f00000 xc12c8321 x3f895be0 1 x3f895be0 1}\n       {x42f20000 xc11ac9aa x3f963c14 1 x3f963c14 1}\n       {x42f40000 xc106f41c x3fac5a64 1 x3fac5a64 1}\n       {x42f60000 xc0df6622 x3fd4899a 1 x3fd4899a 1}\n       {x42f80000 xc0a3a36b x4008102c 1 x4008102c 1}\n       {x42fa0000 xc02eabeb x4023a36b 1 x4023a36b 1}\n       {x42fc0000 0 x4032fb4e 1 x4032fb4e 1}\n       {x42fe0000 x40374ab1 x40330217 1 x40330217 1}\n       {x43000000 x40b30217 x402f7006 1 x402f7006 1}\n       {x43010000 x41058aaf x40385f0d 1 x40385f0d 1}\n       {x43020000 x4135b092 x4046325c 1 x4046325c 1}\n       {x43030000 x4168a3dd x40551c90 1 x40551c90 1}\n       {x43040000 x41901f6d x40639352 1 x40639352 1}\n       {x43050000 x41ad36c3 x407732a8 1 x407732a8 1}\n       {x43060000 x41cdec17 x40a1c9e2 1 x40a1c9e2 1}\n       {x43070000 x41fe1bb4 x40b5b5aa 1 x40b5b5aa 1}\n       {x43080000 x42146376 x40a9fd2c 1 x40a9fd2c 1}\n       {x43090000 x42298d25 x40a8f344 1 x40a8f344 1}\n       {x430a0000 x423ea047 x40a84268 1 x40a84268 1}\n       {x430b0000 x42539dbf x40a6fc64 1 x40a6fc64 1}\n       {x430c0000 x42685f60 x40ac5abc 1 x40ac5abc 1}\n       {x430d0000 x427eb46e x40b5ff20 1 x40b5ff20 1}\n       {x430e0000 x428aef94 x40b80600 1 x40b80600 1}\n       {x430f0000 x42965af7 x40b4c010 1 x40b4c010 1}\n       {x43100000 x42a18796 x40b07d60 1 x40b07d60 1}\n       {x43110000 x42ac6aa3 x40ab6bf0 1 x40ab6bf0 1}\n       {x43120000 x42b6f514 x40a46ea8 1 x40a46ea8 1}\n       {x43130000 x42c0f878 x40998698 1 x40998698 1}\n       {x43140000 x42ca25e7 x40890890 1 x40890890 1}\n       {x43150000 x42d2198a x40454150 1 x40454150 1}\n       {x43160000 x42d679fc x3fdee970 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke3 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43be07cf x43cd7a3e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke4 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43be07cf x43cd7a3e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc374b9be 0 1 x40815af0 1}\n       {x42580000 xc3705eda x409f5fa0 1 x409f5fa0 1}\n       {x425c0000 xc36ac3c4 x40c5f310 1 x40c5f310 1}\n       {x42600000 xc363ffa9 x40e06c80 1 x40e06c80 1}\n       {x42640000 xc35cbcfc x40e3e990 1 x40e3e990 1}\n       {x42680000 xc355c110 x40e09fa0 1 x40e09fa0 1}\n       {x426c0000 xc34eb302 x40e20920 1 x40e20920 1}\n       {x42700000 xc347a07e x40e52e30 1 x40e52e30 1}\n       {x42740000 xc340601f x40eca0d0 1 x40eca0d0 1}\n       {x42780000 xc338d671 x40eeaea0 1 x40eeaea0 1}\n       {x427c0000 xc3317535 x40f92cf0 1 x40f92cf0 1}\n       {x42800000 xc32943a2 x4103e810 1 x4103e810 1}\n       {x42820000 xc320f833 x40fadfe0 1 x40fadfe0 1}\n       {x42840000 xc31995a4 x40ec3340 1 x40ec3340 1}\n       {x42860000 xc31234ff x40bf4f90 1 x40bf4f90 1}\n       {x42880000 xc30da0ab x40c5c230 1 x40c5c230 1}\n       {x428a0000 xc305d8dc x40a68360 1 x40a68360 1}\n       {x428c0000 xc3033875 x40490f60 1 x40490f60 1}\n       {x428e0000 xc2ff20c2 x40765f10 1 x40765f10 1}\n       {x42900000 xc2f70af9 x40831b98 1 x40831b98 1}\n       {x42920000 xc2eebd4f x403bf4b0 1 x403bf4b0 1}\n       {x42940000 xc2eb4bae x3fdff5e0 1 x3fdff5e0 1}\n       {x42960000 xc2e7bda0 x3ff513e0 1 x3ff513e0 1}\n       {x42980000 xc2e3a30f x4009f800 1 x4009f800 1}\n       {x429a0000 xc2df1e20 x40189610 1 x40189610 1}\n       {x429c0000 xc2da19ae x400aac50 1 x400aac50 1}\n       {x429e0000 xc2d6735b x3fe02380 1 x3fe02380 1}\n       {x42a00000 xc2d31892 x4003a190 1 x4003a190 1}\n       {x42a20000 xc2ce3942 x4015aed0 1 x4015aed0 1}\n       {x42a40000 xc2c9bda5 x4029e4d0 1 x4029e4d0 1}\n       {x42a60000 xc2c39af5 x402c5810 1 x402c5810 1}\n       {x42a80000 xc2bef824 x401278b0 1 x401278b0 1}\n       {x42aa0000 xc2ba736a x400afd00 1 x400afd00 1}\n       {x42ac0000 xc2b64854 x3fcdbce0 1 x3fcdbce0 1}\n       {x42ae0000 xc2b40583 x3f464dc0 1 x3f464dc0 1}\n       {x42b00000 xc2b32f1d -}\n       {x42b20000 xc2b3d964 xbed46580 1 xbed46580 1}\n       {x42b40000 xc2b4d7e8 xbed8cc80 1 xbed8cc80 1}\n       {x42b60000 xc2b58afd -}\n       {x42b80000 xc2b57bb6 -}\n       {x42ba0000 xc2b69aec xbf0e3780 1 xbf0e3780 1}\n       {x42bc0000 xc2b7b494 xbef48580 1 xbef48580 1}\n       {x42be0000 xc2b883f7 xbec89080 1 xbec89080 1}\n       {x42c00000 xc2b945b5 xbef92a00 1 xbef92a00 1}\n       {x42c20000 xc2ba764b -}\n       {x42c40000 xc2b58aad x4028a730 1 x4028a730 1}\n       {x42c60000 xc2afebd8 x4032cc30 1 x4032cc30 1}\n       {x42c80000 xc2aa5dea x4039fee0 1 x4039fee0 1}\n       {x42ca0000 xc2a44bea x403f3c10 1 x403f3c10 1}\n       {x42cc0000 xc29e6a29 x404064a0 1 x404064a0 1}\n       {x42ce0000 xc29845a0 x402f58a0 1 x402f58a0 1}\n       {x42d00000 xc293749f x401ae2a0 1 x401ae2a0 1}\n       {x42d20000 xc28e9776 x40150190 1 x40150190 1}\n       {x42d40000 xc28a2486 x40010a00 1 x40010a00 1}\n       {x42d60000 xc28686d6 x3fcc4fa0 1 x3fcc4fa0 1}\n       {x42d80000 xc283c209 x3fc0a000 1 x3fc0a000 1}\n       {x42da0000 xc28081d6 x3fd7ae90 1 x3fd7ae90 1}\n       {x42dc0000 xc27a0929 x3fe7d830 1 x3fe7d830 1}\n       {x42de0000 xc2728629 x3fe08130 1 x3fe08130 1}\n       {x42e00000 xc26c0116 x3febce50 1 x3febce50 1}\n       {x42e20000 xc263c944 x4005bb20 1 x4005bb20 1}\n       {x42e40000 xc25b49b2 x400ffcf0 1 x400ffcf0 1}\n       {x42e60000 xc251c9a6 x40209d10 1 x40209d10 1}\n       {x42e80000 xc2473610 x40257ac8 1 x40257ac8 1}\n       {x42ea0000 xc23d1a4d x4039e268 1 x4039e268 1}\n       {x42ec0000 xc22ff9c3 x40673868 1 x40673868 1}\n       {x42ee0000 xc2203340 x408cc980 1 x408cc980 1}\n       {x42f00000 xc20cc763 x40a14d94 1 x40a14d94 1}\n       {x42f20000 xc1efbfb6 x40b14df6 1 x40b14df6 1}\n       {x42f40000 xc1c0e7cb x40bc60ac 1 x40bc60ac 1}\n       {x42f60000 xc1918f60 x40bfc6bc 1 x40bfc6bc 1}\n       {x42f80000 xc14208da x40c23c31 1 x40c23c31 1}\n       {x42fa0000 xc0c1c51e x40c208da 1 x40c208da 1}\n       {x42fc0000 0 x40c67dc6 1 x40c67dc6 1}\n       {x42fe0000 x40cb366e x40ce7794 1 x40ce7794 1}\n       {x43000000 x414e7794 x40cd9c2f 1 x40cd9c2f 1}\n       {x43010000 x41999bb3 x40c34e3c 1 x40c34e3c 1}\n       {x43020000 x41c8e2e8 x40b8558a 1 x40b8558a 1}\n       {x43030000 x41f5c678 x40b0ebe4 1 x40b0ebe4 1}\n       {x43040000 x4210ac6d x40a24fa4 1 x40a24fa4 1}\n       {x43050000 x42237725 x408ac8c4 1 x408ac8c4 1}\n       {x43060000 x42335e9e x4075e260 1 x4075e260 1}\n       {x43070000 x42423371 x405c01d0 1 x405c01d0 1}\n       {x43080000 x424eded8 x403e69a0 1 x403e69a0 1}\n       {x43090000 x425a00a5 x402c8c68 1 x402c8c68 1}\n       {x430a0000 x42647065 x401bf6e0 1 x401bf6e0 1}\n       {x430b0000 x426d7f81 x40121640 1 x40121640 1}\n       {x430c0000 x4276b32d x40103dd8 1 x40103dd8 1}\n       {x430d0000 x427f873c x400649d8 1 x400649d8 1}\n       {x430e0000 x4283be34 x400f6ee0 1 x400f6ee0 1}\n       {x430f0000 x4288ba8c x40248dc0 1 x40248dc0 1}\n       {x43100000 x428e0710 x402a8510 1 x402a8510 1}\n       {x43110000 x429362dd x402f4430 1 x402f4430 1}\n       {x43120000 x4298fb53 x402dfb00 1 x402dfb00 1}\n       {x43130000 x429e428d x4012dc40 1 x4012dc40 1}\n       {x43140000 x42a22917 x3fb5cfa0 1 x3fb5cfa0 1}\n       {x43150000 x42a3f10a x3f0ce940 1 x3f0ce940 1}\n       {x43160000 x42a45cbc x3d250e00 1 0 1}}\n      {{x42540000 x448512da 0 1 xc155e800 1}\n       {x42580000 x44835825 xc16c3f80 1 xc16c3f80 1}\n       {x425c0000 x448161dc xc1819680 1 xc1819680 1}\n       {x42600000 x447e96e2 xc184a6a0 1 xc184a6a0 1}\n       {x42640000 x447a794e xc18368e0 1 xc18368e0 1}\n       {x42680000 x44766054 xc1854150 1 xc1854150 1}\n       {x426c0000 x44722539 xc18bc400 1 xc18bc400 1}\n       {x42700000 x446da414 xc198dfc0 1 xc198dfc0 1}\n       {x42740000 x4468973d xc1a9dbc0 1 xc1a9dbc0 1}\n       {x42780000 x44630658 xc1bb0fa0 1 xc1bb0fa0 1}\n       {x427c0000 x445ce643 xc1cc8620 1 xc1cc8620 1}\n       {x42800000 x44563df6 xc1d9e800 1 xc1d9e800 1}\n       {x42820000 x444f47c3 xc1d95500 1 xc1d95500 1}\n       {x42840000 x4448a8a6 xc1d58500 1 xc1d58500 1}\n       {x42860000 x4441ef73 xc1d2aea0 1 xc1d2aea0 1}\n       {x42880000 x443b7dbc xc1d8a3f0 1 xc1d8a3f0 1}\n       {x428a0000 x44346534 xc1ce7a60 1 xc1ce7a60 1}\n       {x428c0000 x442e9616 xc1b08550 1 xc1b08550 1}\n       {x428e0000 x44295cdf xc1ac47d0 1 xc1ac47d0 1}\n       {x42900000 x4423d199 xc1b6f070 1 xc1b6f070 1}\n       {x42920000 x441dedd8 xc1c2bce0 1 xc1c2bce0 1}\n       {x42940000 x4417a5cb xc1c8ac60 1 xc1c8ac60 1}\n       {x42960000 x44116312 xc1c6f2a0 1 xc1c6f2a0 1}\n       {x42980000 x440b36a1 xc1b8a8e0 1 xc1b8a8e0 1}\n       {x429a0000 x4405d884 xc1b171b0 1 xc1b171b0 1}\n       {x429c0000 x44001f86 xc1b36e50 1 xc1b36e50 1}\n       {x429e0000 x43f5433e xc1aeefa8 1 xc1aeefa8 1}\n       {x42a00000 x43ea6117 xc1aed2f0 1 xc1aed2f0 1}\n       {x42a20000 x43df68e0 xc1b042e8 1 xc1b042e8 1}\n       {x42a40000 x43d458ba xc1b152f8 1 xc1b152f8 1}\n       {x42a60000 x43c93e81 xc1b09cb8 1 xc1b09cb8 1}\n       {x42a80000 x43be4523 xc1af9068 1 xc1af9068 1}\n       {x42aa0000 x43b34c74 xc1af7a18 1 xc1af7a18 1}\n       {x42ac0000 x43a855e0 xc1aba168 1 xc1aba168 1}\n       {x42ae0000 x439dd847 xc1a6c250 1 xc1a6c250 1}\n       {x42b00000 x43937d96 xc1a4eee8 1 xc1a4eee8 1}\n       {x42b20000 x43893a6a xc1a56d50 1 xc1a56d50 1}\n       {x42b40000 x437d9fd8 xc1a6fee8 1 xc1a6fee8 1}\n       {x42b60000 x4368b51a xc1a8a488 1 xc1a8a488 1}\n       {x42b80000 x435376b6 xc1a51e1c 1 xc1a51e1c 1}\n       {x42ba0000 x433f6d93 xc19c95c0 1 xc19c95c0 1}\n       {x42bc0000 x432c5146 xc193e794 1 xc193e794 1}\n       {x42be0000 x431a73ae xc1891610 1 xc1891610 1}\n       {x42c00000 x430a0bc2 xc17b7d6c 1 xc17b7d6c 1}\n       {x42c20000 x42f60801 xc166b0a4 1 xc166b0a4 1}\n       {x42c40000 x42da6b5b xc15a159c 1 xc15a159c 1}\n       {x42c60000 x42bf829a xc1587150 1 xc1587150 1}\n       {x42c80000 x42a44f07 xc15951e0 1 xc15951e0 1}\n       {x42ca0000 x42892e22 xc15628c2 1 xc15628c2 1}\n       {x42cc0000 x425d89ad xc150df04 1 xc150df04 1}\n       {x42ce0000 x4229ecc2 xc14572fc 1 xc14572fc 1}\n       {x42d00000 x41f5a05e xc1381c85 1 xc1381c85 1}\n       {x42d20000 x419bbcff xc12b13f2 1 xc12b13f2 1}\n       {x42d40000 x411518d9 xc117e545 1 xc117e545 1}\n       {x42d60000 x3ef5ee64 xc101df43 1 xc101df43 1}\n       {x42d80000 xc0dd4b59 xc0e471cf 1 xc0e471cf 1}\n       {x42da0000 xc15cc25c xc0d01876 1 xc0d01876 1}\n       {x42dc0000 xc19f5f11 xc0b73d90 1 xc0b73d90 1}\n       {x42de0000 xc1c9fff6 xc08d8c42 1 xc08d8c42 1}\n       {x42e00000 xc1e62532 xc02f0c28 1 xc02f0c28 1}\n       {x42e20000 xc1f5c300 xbfa2d0d8 1 xbfa2d0d8 1}\n       {x42e40000 xc1fa7f4d -}\n       {x42e60000 xc1f7bae0 x3f6505a0 1 x3f6505a0 1}\n       {x42e80000 xc1ec2ef3 x4000bf2c 1 x4000bf2c 1}\n       {x42ea0000 xc1d78b15 x401eb204 1 x401eb204 1}\n       {x42ec0000 xc1c48272 x4017af8c 1 x4017af8c 1}\n       {x42ee0000 xc1b19f32 x40213cd4 1 x40213cd4 1}\n       {x42f00000 xc19c333d x402416a0 1 x402416a0 1}\n       {x42f20000 xc188998a x401e48f2 1 x401e48f2 1}\n       {x42f40000 xc1694201 x402ed382 1 x402ed382 1}\n       {x42f60000 xc139c953 x4043da50 1 x4043da50 1}\n       {x42f80000 xc10754d9 x40636ec8 1 x40636ec8 1}\n       {x42fa0000 xc09023de x408754d9 1 x408754d9 1}\n       {x42fc0000 0 x40979b3e 1 x40979b3e 1}\n       {x42fe0000 x409f129d x4099396f 1 x4099396f 1}\n       {x43000000 x4119396f x409983f8 1 x409983f8 1}\n       {x43010000 x41690d46 x40a2541b 1 x40a2541b 1}\n       {x43020000 x419dc6c5 x40aa80a2 1 x40aa80a2 1}\n       {x43030000 x41c9c6f4 x40b49f1e 1 x40b49f1e 1}\n       {x43040000 x41f81654 x40bb2008 1 x40bb2008 1}\n       {x43050000 x4213ab7c x40c2ae08 1 x40c2ae08 1}\n       {x43060000 x422cb6ac x40d0fb6c 1 x40d0fb6c 1}\n       {x43070000 x4247ea57 x40e16f94 1 x40e16f94 1}\n       {x43080000 x42651291 x40ee84b4 1 x40ee84b4 1}\n       {x43090000 x4281c5c2 x40f25c5c 1 x40f25c5c 1}\n       {x430a0000 x4290d4d4 x40f000f0 1 x40f000f0 1}\n       {x430b0000 x429fc5e0 x40edd3e8 1 x40edd3e8 1}\n       {x430c0000 x42ae8f51 x40ef7150 1 x40ef7150 1}\n       {x430d0000 x42bdb40a x40fe1810 1 x40fe1810 1}\n       {x430e0000 x42ce5253 x41025a00 1 x41025a00 1}\n       {x430f0000 x42de4a8a x40faf190 1 x40faf190 1}\n       {x43100000 x42edb085 x40f599c0 1 x40f599c0 1}\n       {x43110000 x42fcfdc2 x40f10b28 1 x40f10b28 1}\n       {x43120000 x4305e8f5 x40e19840 1 x40e19840 1}\n       {x43130000 x430c9865 x40d10b80 1 x40d10b80 1}\n       {x43140000 x4312f9ad x40c74950 1 x40c74950 1}\n       {x43150000 x43190cfa x40994bc0 1 x40994bc0 1}\n       {x43160000 x431c8e69 x40373de0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke5 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43f15df4 x4404c189 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke6 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43f15df4 x4404c189 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc396b691 0 1 x40817e10 1}\n       {x42580000 xc39488a2 x409f7720 1 x409f7720 1}\n       {x425c0000 xc391bad8 x40c62460 1 x40c62460 1}\n       {x42600000 xc38e577f x40e0c3a0 1 x40e0c3a0 1}\n       {x42640000 xc38ab4bb x40e44280 1 x40e44280 1}\n       {x42680000 xc387356b x40e0fcc0 1 x40e0fcc0 1}\n       {x426c0000 xc383acd5 x40e27000 1 x40e27000 1}\n       {x42700000 xc38021eb x40e59770 1 x40e59770 1}\n       {x42740000 xc3790033 x40f6b6e0 1 x40f6b6e0 1}\n       {x42780000 xc370d868 x410172b0 1 x410172b0 1}\n       {x427c0000 xc368d1dd x41059208 1 x41059208 1}\n       {x42800000 xc3602627 x4109d488 1 x4109d488 1}\n       {x42820000 xc357974c x41025b28 1 x41025b28 1}\n       {x42840000 xc34fdac2 x40f47f70 1 x40f47f70 1}\n       {x42860000 xc3484f55 x40c871d0 1 x40c871d0 1}\n       {x42880000 xc34353a5 x40ca53c0 1 x40ca53c0 1}\n       {x428a0000 xc33baa19 x40b61460 1 x40b61460 1}\n       {x428c0000 xc337f25f x406e6d20 1 x406e6d20 1}\n       {x428e0000 xc33436b0 x407b71a0 1 x407b71a0 1}\n       {x42900000 xc33016d2 x4083e8e0 1 x4083e8e0 1}\n       {x42920000 xc32bf822 x401eb8e0 1 x401eb8e0 1}\n       {x42940000 xc32b210b x3f5b7f00 1 x3f5b7f00 1}\n       {x42960000 xc32a4124 x3f853540 1 x3f853540 1}\n       {x42980000 xc3290c36 x3fda47c0 1 x3fda47c0 1}\n       {x429a0000 xc326d805 x40175460 1 x40175460 1}\n       {x429c0000 xc3245193 x400e15a0 1 x400e15a0 1}\n       {x429e0000 xc3226758 x3ff6eac0 1 x3ff6eac0 1}\n       {x42a00000 xc32075e8 x40156020 1 x40156020 1}\n       {x42a20000 xc31dbc57 x402e0440 1 x402e0440 1}\n       {x42a40000 xc31b05c6 x402e7060 1 x402e7060 1}\n       {x42a60000 xc31848d4 x403df800 1 x403df800 1}\n       {x42a80000 xc3151606 x404c1780 1 x404c1780 1}\n       {x42aa0000 xc311e818 x403c15a0 1 x403c15a0 1}\n       {x42ac0000 xc30f3559 x4019ada0 1 x4019ada0 1}\n       {x42ae0000 xc30d1aab x3fc0d240 1 x3fc0d240 1}\n       {x42b00000 xc30c3210 x3f35e000 1 x3f35e000 1}\n       {x42b20000 xc30baeeb x3e8e2c00 1 x3e8e2c00 1}\n       {x42b40000 xc30b9739 x3e5f0a00 1 x3e5f0a00 1}\n       {x42b60000 xc30b3f66 x3e936700 1 x3e936700 1}\n       {x42b80000 xc30b03d2 x3ea08a00 1 x3ea08a00 1}\n       {x42ba0000 xc30a9edc x3f05c500 1 x3f05c500 1}\n       {x42bc0000 xc309f848 x3f1c4100 1 x3f1c4100 1}\n       {x42be0000 xc309665a x3efee700 1 x3efee700 1}\n       {x42c00000 xc308f961 x3f16bd80 1 x3f16bd80 1}\n       {x42c20000 xc30838df x400158c0 1 x400158c0 1}\n       {x42c40000 xc304ee9b x405a7500 1 x405a7500 1}\n       {x42c60000 xc3016537 x4071c110 1 x4071c110 1}\n       {x42c80000 xc2fac125 x40846cd0 1 x40846cd0 1}\n       {x42ca0000 xc2f23cd4 x40831a10 1 x40831a10 1}\n       {x42cc0000 xc2ea5de3 x407a8580 1 x407a8580 1}\n       {x42ce0000 xc2e2947c x40788cd0 1 x40788cd0 1}\n       {x42d00000 xc2dad516 x40674e70 1 x40674e70 1}\n       {x42d20000 xc2d41f95 x405b5fd0 1 x405b5fd0 1}\n       {x42d40000 xc2cd1f19 x404f9f00 1 x404f9f00 1}\n       {x42d60000 xc2c725a5 x4045a2f0 1 x4045a2f0 1}\n       {x42d80000 xc2c0c4ea x404c7a70 1 x404c7a70 1}\n       {x42da0000 xc2ba5dfe x404b71e0 1 x404b71e0 1}\n       {x42dc0000 xc2b40dcc x4058e590 1 x4058e590 1}\n       {x42de0000 xc2accfa5 x4069d3f0 1 x4069d3f0 1}\n       {x42e00000 xc2a5708d x406eca80 1 x406eca80 1}\n       {x42e20000 xc29de2fd x407ba0f0 1 x407ba0f0 1}\n       {x42e40000 xc295b67e x40826ff8 1 x40826ff8 1}\n       {x42e60000 xc28d94fe x40817e48 1 x40817e48 1}\n       {x42e80000 xc28586b5 x408791e8 1 x408791e8 1}\n       {x42ea0000 xc2794582 x4097b3dc 1 x4097b3dc 1}\n       {x42ec0000 xc2652073 x40ad0f8c 1 x40ad0f8c 1}\n       {x42ee0000 xc24e019f x40bf93c4 1 x40bf93c4 1}\n       {x42f00000 xc2353b82 x40d54af8 1 x40d54af8 1}\n       {x42f20000 xc218aee1 x40e67562 1 x40e67562 1}\n       {x42f40000 xc1f73c53 x40f35d14 1 x40f35d14 1}\n       {x42f60000 xc1b7af38 x40f8cf65 1 x40f8cf65 1}\n       {x42f80000 xc175a941 x40f724d5 1 x40f724d5 1}\n       {x42fa0000 xc0f07336 x40f5a941 1 x40f5a941 1}\n       {x42fc0000 0 x40f7841a 1 x40f7841a 1}\n       {x42fe0000 x40fe94ff x40fe0ecd 1 x40fe0ecd 1}\n       {x43000000 x417e0ecd x40f914c2 1 x40f914c2 1}\n       {x43010000 x41bc2fa1 x40ed8413 1 x40ed8413 1}\n       {x43020000 x41f5c970 x40e3d146 1 x40e3d146 1}\n       {x43030000 x42170c22 x40daae80 1 x40daae80 1}\n       {x43040000 x42319058 x40c74078 1 x40c74078 1}\n       {x43050000 x4248dc40 x40ac7890 1 x40ac7890 1}\n       {x43060000 x425cae7c x4097b738 1 x4097b738 1}\n       {x43070000 x426eca0e x4088ebf4 1 x4088ebf4 1}\n       {x43080000 x427ee979 x40777780 1 x40777780 1}\n       {x43090000 x4286dc7f x40647b68 1 x40647b68 1}\n       {x430a0000 x428dbc73 x4051e230 1 x4051e230 1}\n       {x430b0000 x4293faa2 x40411c30 1 x40411c30 1}\n       {x430c0000 x4299ce36 x40313b90 1 x40313b90 1}\n       {x430d0000 x429f0e5b x402e6ed0 1 x402e6ed0 1}\n       {x430e0000 x42a4b523 x403b2cf0 1 x403b2cf0 1}\n       {x430f0000 x42aac12a x404ca5c0 1 x404ca5c0 1}\n       {x43100000 x42b17f7f x4055d840 1 x4055d840 1}\n       {x43110000 x42b81eae x40565410 1 x40565410 1}\n       {x43120000 x42bee4c0 x405037e0 1 x405037e0 1}\n       {x43130000 x42c5222c x403748b0 1 x403748b0 1}\n       {x43140000 x42ca594b x40089ba0 1 x40089ba0 1}\n       {x43150000 x42cdabe6 x3fa00060 1 x3fa00060 1}\n       {x43160000 x42cf594e x3f220da0 1 0 1}}\n      {{x42540000 x4485e562 0 1 xc155eb40 1}\n       {x42580000 x44842aa3 xc16c4800 1 xc16c4800 1}\n       {x425c0000 x44823442 xc18197a0 1 xc18197a0 1}\n       {x42600000 x44801de6 xc184a6b0 1 xc184a6b0 1}\n       {x42640000 x447c1e19 xc1836780 1 xc1836780 1}\n       {x42680000 x44780554 xc1853ae0 1 xc1853ae0 1}\n       {x426c0000 x4473ca6b xc18bc1c0 1 xc18bc1c0 1}\n       {x42700000 x446f4938 xc198e090 1 xc198e090 1}\n       {x42740000 x446a3c62 xc1aa59e0 1 xc1aa59e0 1}\n       {x42780000 x4464a39a xc1bc0bb0 1 xc1bc0bb0 1}\n       {x427c0000 x445e7ba7 xc1cb8060 1 xc1cb8060 1}\n       {x42800000 x4457eb94 xc1d3b1b0 1 xc1d3b1b0 1}\n       {x42820000 x4451408c xc1d1d360 1 xc1d1d360 1}\n       {x42840000 x444ace5e xc1ce9340 1 xc1ce9340 1}\n       {x42860000 x44445758 xc1d07bb0 1 xc1d07bb0 1}\n       {x42880000 x443dc6a3 xc1d56f80 1 xc1d56f80 1}\n       {x428a0000 x44370060 xc1cdf7e0 1 xc1cdf7e0 1}\n       {x428c0000 x4430e725 xc1b64920 1 xc1b64920 1}\n       {x428e0000 x442b9bce xc1ae8620 1 xc1ae8620 1}\n       {x42900000 x4425fec3 xc1b8cec0 1 xc1b8cec0 1}\n       {x42920000 x44200ee2 xc1c2f090 1 xc1c2f090 1}\n       {x42940000 x4419cfba xc1c6e310 1 xc1c6e310 1}\n       {x42960000 x4413a0b1 xc1c4b5a0 1 xc1c4b5a0 1}\n       {x42980000 x440d8460 xc1b79610 1 xc1b79610 1}\n       {x429a0000 x44082750 xc1aec580 1 xc1aec580 1}\n       {x429c0000 x44029808 xc1b506e8 1 xc1b506e8 1}\n       {x429e0000 x43f9adc3 xc1b213f0 1 xc1b213f0 1}\n       {x42a00000 x43eeed92 xc1b02040 1 xc1b02040 1}\n       {x42a20000 x43e3a9bb xc1b0d8b0 1 xc1b0d8b0 1}\n       {x42a40000 x43d8d27c xc1af1038 1 xc1af1038 1}\n       {x42a60000 x43cdc7b4 xc1b36700 1 xc1b36700 1}\n       {x42a80000 x43c2659c xc1b47228 1 xc1b47228 1}\n       {x42aa0000 x43b7396f xc1b2d7c0 1 xc1b2d7c0 1}\n       {x42ac0000 x43ac0aa4 xc1af0d50 1 xc1af0d50 1}\n       {x42ae0000 x43a157c5 xc1a9d700 1 xc1a9d700 1}\n       {x42b00000 x4396cfc4 xc1aa1028 1 xc1aa1028 1}\n       {x42b20000 x438c15c0 xc1aa5078 1 xc1aa5078 1}\n       {x42b40000 x438185b5 xc1acde64 1 xc1acde64 1}\n       {x42b60000 x436cf3e7 xc1adcc4c 1 xc1adcc4c 1}\n       {x42b80000 x43579857 xc1aa9718 1 xc1aa9718 1}\n       {x42ba0000 x43424e21 xc1a4abe4 1 xc1a4abe4 1}\n       {x42bc0000 x432e6d5e xc199ae7c 1 xc199ae7c 1}\n       {x42be0000 x431be282 xc1915564 1 xc1915564 1}\n       {x42c00000 x430a1805 xc187f038 1 xc187f038 1}\n       {x42c20000 x42f3cce8 xc1772bb8 1 xc1772bb8 1}\n       {x42c40000 x42d6651c xc168aac4 1 xc168aac4 1}\n       {x42c60000 x42b9a237 xc166e7dc 1 xc166e7dc 1}\n       {x42c80000 x429cab25 xc16867a2 1 xc16867a2 1}\n       {x42ca0000 x427f109d xc168ac5c 1 xc168ac5c 1}\n       {x42cc0000 x4245001c xc16289fa 1 xc16289fa 1}\n       {x42ce0000 x420dcba0 xc15944b4 1 xc15944b4 1}\n       {x42d00000 x41b0bb84 xc14a8d0e 1 xc14a8d0e 1}\n       {x42d20000 x41221463 xc135cfa5 1 xc135cfa5 1}\n       {x42d40000 xbf228424 xc1240b32 1 xc1240b32 1}\n       {x42d60000 xc1260200 xc111ac45 1 xc111ac45 1}\n       {x42d80000 xc196c066 xc0fc302e 1 xc0fc302e 1}\n       {x42da0000 xc1d11917 xc0e070c4 1 xc0e070c4 1}\n       {x42dc0000 xc2037c64 xc0bdf47a 1 xc0bdf47a 1}\n       {x42de0000 xc21809aa xc0886be8 1 xc0886be8 1}\n       {x42e00000 xc225975e xc015fbb0 1 xc015fbb0 1}\n       {x42e20000 xc22ac920 xbe1a7700 1 xbe1a7700 1}\n       {x42e40000 xc22afc9d -}\n       {x42e60000 xc226343a x3ff17d50 1 x3ff17d50 1}\n       {x42e80000 xc21be4c8 x403d8e38 1 x403d8e38 1}\n       {x42ea0000 xc20e8273 x4057e068 1 x4057e068 1}\n       {x42ec0000 xc200e8bb x405f5380 1 x405f5380 1}\n       {x42ee0000 xc1e53006 x40645bc8 1 x40645bc8 1}\n       {x42f00000 xc1c8ba84 x405f2330 1 x405f2330 1}\n       {x42f20000 xc1ad673a x40568434 1 x40568434 1}\n       {x42f40000 xc1931977 x4060fa8a 1 x4060fa8a 1}\n       {x42f60000 xc16a512f x4080b4ff 1 x4080b4ff 1}\n       {x42f80000 xc1257def x4091319b 1 x4091319b 1}\n       {x42fa0000 xc0b23f28 x40a57def 1 x40a57def 1}\n       {x42fc0000 0 x40b8c838 1 x40b8c838 1}\n       {x42fe0000 x40bf5147 x40baa21b 1 x40baa21b 1}\n       {x43000000 x413aa21b x40b95146 1 x40b95146 1}\n       {x43010000 x418c7cf5 x40c34237 1 x40c34237 1}\n       {x43020000 x41bef229 x40d16cb0 1 x40d16cb0 1}\n       {x43030000 x41f5334d x40dd58ae 1 x40dd58ae 1}\n       {x43040000 x4216cf40 x40e386ba 1 x40e386ba 1}\n       {x43050000 x42337b55 x40e8fc2c 1 x40e8fc2c 1}\n       {x43060000 x42510e4b x40f30d00 1 x40f30d00 1}\n       {x43070000 x42703e95 x4101d13e 1 x4101d13e 1}\n       {x43080000 x4288fb75 x410afa76 1 x410afa76 1}\n       {x43090000 x429adde8 x410dc328 1 x410dc328 1}\n       {x430a0000 x42ac6c3f x4108fdd0 1 x4108fdd0 1}\n       {x430b0000 x42bd1d5c x4104c20c 1 x4104c20c 1}\n       {x430c0000 x42cd9cc2 x41075dcc 1 x41075dcc 1}\n       {x430d0000 x42def4cf x410d7a8c 1 x410d7a8c 1}\n       {x430e0000 x42f0fb65 x410d3ee4 1 x410d3ee4 1}\n       {x430f0000 x43012244 x410b128c 1 x410b128c 1}\n       {x43100000 x4309e004 x41088160 1 x41088160 1}\n       {x43110000 x43123270 x41042408 1 x41042408 1}\n       {x43120000 x431a6485 x40f943a0 1 x40f943a0 1}\n       {x43130000 x4321c6aa x40e5d560 1 x40e5d560 1}\n       {x43140000 x4328c1db x40d3a600 1 x40d3a600 1}\n       {x43150000 x432f010a x40a128a0 1 x40a128a0 1}\n       {x43160000 x4332d465 x404e1980 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke7 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44539614 x43f43540 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke8 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44539614 x43f43540 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c7b631 0 1 x40cb6b00 1}\n       {x42580000 xc3c46584 x40e5abc0 1 x40e5abc0 1}\n       {x425c0000 xc3c088d3 x4105d660 1 x4105d660 1}\n       {x42600000 xc3bc081e x411f1010 1 x411f1010 1}\n       {x42640000 xc3b697d2 x412e8960 1 x412e8960 1}\n       {x42680000 xc3b11f88 x412becf0 1 x412becf0 1}\n       {x426c0000 xc3abd903 x41231050 1 x41231050 1}\n       {x42700000 xc3a6ee83 x41256210 1 x41256210 1}\n       {x42740000 xc3a182e2 x4126b5e0 1 x4126b5e0 1}\n       {x42780000 xc39c8325 x411976a0 1 x411976a0 1}\n       {x427c0000 xc397eb78 x411ec1d0 1 x411ec1d0 1}\n       {x42800000 xc3929708 x4123d5c0 1 x4123d5c0 1}\n       {x42820000 xc38dae1c x410f90b0 1 x410f90b0 1}\n       {x42840000 xc3899dfd x40f7f200 1 x40f7f200 1}\n       {x42860000 xc385ee8c x40f628c0 1 x40f628c0 1}\n       {x42880000 xc381ecb7 x41024870 1 x41024870 1}\n       {x428a0000 xc37b940a x40fbb070 1 x40fbb070 1}\n       {x428c0000 xc3741e67 x40e5c9f0 1 x40e5c9f0 1}\n       {x428e0000 xc36d376b x40e2a8c0 1 x40e2a8c0 1}\n       {x42900000 xc365f3db x40f06ba0 1 x40f06ba0 1}\n       {x42920000 xc35e30b1 x40e5f820 1 x40e5f820 1}\n       {x42940000 xc3579459 x40c14fb0 1 x40c14fb0 1}\n       {x42960000 xc3521bb6 x40a4c9d0 1 x40a4c9d0 1}\n       {x42980000 xc34d47bc x409387f0 1 x409387f0 1}\n       {x429a0000 xc348e337 x40853960 1 x40853960 1}\n       {x429c0000 xc344f426 x4070d3c0 1 x4070d3c0 1}\n       {x429e0000 xc3415c99 x406918a0 1 x406918a0 1}\n       {x42a00000 xc33dab61 x407b5680 1 x407b5680 1}\n       {x42a20000 xc33981e5 x40950300 1 x40950300 1}\n       {x42a40000 xc3345b31 x40bf02d0 1 x40bf02d0 1}\n       {x42a60000 xc32d91b8 x40b428f0 1 x40b428f0 1}\n       {x42a80000 xc32918a2 x408fdb30 1 x408fdb30 1}\n       {x42aa0000 xc3249405 x408e3cd0 1 x408e3cd0 1}\n       {x42ac0000 xc32034d5 x407cb2e0 1 x407cb2e0 1}\n       {x42ae0000 xc31cae6e x4041f720 1 x4041f720 1}\n       {x42b00000 xc31a251c x400cab20 1 x400cab20 1}\n       {x42b20000 xc3184915 x3fda8380 1 x3fda8380 1}\n       {x42b40000 xc316bb0e x3fcdfc80 1 x3fcdfc80 1}\n       {x42b60000 xc3151123 x3fdb58c0 1 x3fdb58c0 1}\n       {x42b80000 xc3134dab x3fdb9300 1 x3fdb9300 1}\n       {x42ba0000 xc311a2d7 x3fd46180 1 x3fd46180 1}\n       {x42bc0000 xc30ffc25 x3fd80e00 1 x3fd80e00 1}\n       {x42be0000 xc30e429f x3fd9a6c0 1 x3fd9a6c0 1}\n       {x42c00000 xc30c958a x3fd5bd80 1 x3fd5bd80 1}\n       {x42c20000 xc30aeba9 x40424800 1 x40424800 1}\n       {x42c40000 xc306834a x4090ce30 1 x4090ce30 1}\n       {x42c60000 xc301dec6 x4097b498 1 x4097b498 1}\n       {x42c80000 xc2fa1001 x4099c3b0 1 x4099c3b0 1}\n       {x42ca0000 xc2f08516 x4099e1f0 1 x4099e1f0 1}\n       {x42cc0000 xc2e6d3c3 x409a9110 1 x409a9110 1}\n       {x42ce0000 xc2dd32f4 x4093ff30 1 x4093ff30 1}\n       {x42d00000 xc2d453dd x40886b70 1 x40886b70 1}\n       {x42d20000 xc2cc2586 x40783070 1 x40783070 1}\n       {x42d40000 xc2c4d0d6 x4068e940 1 x4068e940 1}\n       {x42d60000 xc2bd96f2 x405d0cc0 1 x405d0cc0 1}\n       {x42d80000 xc2b7000a x404e4f40 1 x404e4f40 1}\n       {x42da0000 xc2b0b1fe x404c1630 1 x404c1630 1}\n       {x42dc0000 xc2aa3ea7 x4055c920 1 x4055c920 1}\n       {x42de0000 xc2a3556c x40627fb0 1 x40627fb0 1}\n       {x42e00000 xc29c16ac x406ab680 1 x406ab680 1}\n       {x42e20000 xc294aa04 x406ff2d0 1 x406ff2d0 1}\n       {x42e40000 xc28d177f x4073f0f0 1 x4073f0f0 1}\n       {x42e60000 xc2856af5 x407961e0 1 x407961e0 1}\n       {x42e80000 xc27b02c2 x4083dfc4 1 x4083dfc4 1}\n       {x42ea0000 xc269ddf9 x40901aa8 1 x40901aa8 1}\n       {x42ec0000 xc256fc18 x40a324ac 1 x40a324ac 1}\n       {x42ee0000 xc24114ce x40b4f004 1 x40b4f004 1}\n       {x42f00000 xc229c017 x40c61004 1 x40c61004 1}\n       {x42f20000 xc20f90cd x40d83f52 1 x40d83f52 1}\n       {x42f40000 xc1e76085 x40e58ce0 1 x40e58ce0 1}\n       {x42f60000 xc1ac5b2a x40e93a0c 1 x40e93a0c 1}\n       {x42f80000 xc16586fe x40e5fbae 1 x40e5fbae 1}\n       {x42fa0000 xc0e5754c x40e586fe 1 x40e586fe 1}\n       {x42fc0000 0 x40e977af 1 x40e977af 1}\n       {x42fe0000 x40ed7a12 x40ebfb18 1 x40ebfb18 1}\n       {x43000000 x416bfb18 x40e7d4ad 1 x40e7d4ad 1}\n       {x43010000 x41af48db x40dfc92a 1 x40dfc92a 1}\n       {x43020000 x41e5e221 x40d4b506 1 x40d4b506 1}\n       {x43030000 x420cd1af x40c7da16 1 x40c7da16 1}\n       {x43040000 x4224e796 x40b73c24 1 x40b73c24 1}\n       {x43050000 x423aa0b8 x40ab1874 1 x40ab1874 1}\n       {x43060000 x424fadb3 x40a281cc 1 x40a281cc 1}\n       {x43070000 x4263412b x4088a2f8 1 x4088a2f8 1}\n       {x43080000 x4271d671 x405de278 1 x405de278 1}\n       {x43090000 x427efd7a x40497f48 1 x40497f48 1}\n       {x430a0000 x4285832d x403647f0 1 x403647f0 1}\n       {x430b0000 x428ae33c x40244980 1 x40244980 1}\n       {x430c0000 x428fc7c5 x40183890 1 x40183890 1}\n       {x430d0000 x429466c5 x4011eb20 1 x4011eb20 1}\n       {x430e0000 x4298e677 x4019ad40 1 x4019ad40 1}\n       {x430f0000 x429e0199 x402a6ec0 1 x402a6ec0 1}\n       {x43100000 x42a38d63 x403383e0 1 x403383e0 1}\n       {x43110000 x42a939d7 x40331f50 1 x40331f50 1}\n       {x43120000 x42aebf58 x402bc030 1 x402bc030 1}\n       {x43130000 x42b3f5da x4014e1d0 1 x4014e1d0 1}\n       {x43140000 x42b80d75 x3fc80c00 1 x3fc80c00 1}\n       {x43150000 x42ba363a x3f0d5880 1 x3f0d5880 1}\n       {x43160000 x42ba9475 -}}\n      {{x42540000 x4487b6bf 0 1 xc15d9700 1}\n       {x42580000 x4485ea13 xc177d400 1 xc177d400 1}\n       {x425c0000 x4483d76f xc186d960 1 xc186d960 1}\n       {x42600000 x4481b348 xc18807c0 1 xc18807c0 1}\n       {x42640000 x447f2e62 xc18481b0 1 xc18481b0 1}\n       {x42680000 x447b1e75 xc1874280 1 xc1874280 1}\n       {x426c0000 x4476ba3a xc18a6270 1 xc18a6270 1}\n       {x42700000 x4472784e xc18f3ef0 1 xc18f3ef0 1}\n       {x42740000 x446dc64b xc1a2ced0 1 xc1a2ced0 1}\n       {x42780000 x44684b61 xc1b3e900 1 xc1b3e900 1}\n       {x427c0000 x446287bb xc1c272e0 1 xc1c272e0 1}\n       {x42800000 x445c2433 xc1cb50c0 1 xc1cb50c0 1}\n       {x42820000 x4455d2af xc1c97ef0 1 xc1c97ef0 1}\n       {x42840000 x444f8c44 xc1c94090 1 xc1c94090 1}\n       {x42860000 x44493ea6 xc1cf38e0 1 xc1cf38e0 1}\n       {x42880000 x444298b6 xc1d121b0 1 xc1d121b0 1}\n       {x428a0000 x443c2c8b xc1ce6300 1 xc1ce6300 1}\n       {x428c0000 x4435b286 xc1d26310 1 xc1d26310 1}\n       {x428e0000 x442f065a xc1d7c660 1 xc1d7c660 1}\n       {x42900000 x44283620 xc1dedc10 1 xc1dedc10 1}\n       {x42920000 x44211899 xc1dc42d0 1 xc1dc42d0 1}\n       {x42940000 x441a71f3 xc1d0ca40 1 xc1d0ca40 1}\n       {x42960000 x44140bf5 xc1c83c80 1 xc1c83c80 1}\n       {x42980000 x440dee2b xc1bdb810 1 xc1bdb810 1}\n       {x429a0000 x44083074 xc1b39c20 1 xc1b39c20 1}\n       {x429c0000 x4402b469 xc1ad06a8 1 xc1ad06a8 1}\n       {x429e0000 x43fac013 xc1a9d768 1 xc1a9d768 1}\n       {x42a00000 x43f02de5 xc1a8dfc8 1 xc1a8dfc8 1}\n       {x42a20000 x43e5a41a xc1aa6aa0 1 xc1aa6aa0 1}\n       {x42a40000 x43dae091 xc1a9eb10 1 xc1a9eb10 1}\n       {x42a60000 x43d066b8 xc1a4fa20 1 xc1a4fa20 1}\n       {x42a80000 x43c6414d xc1a25520 1 xc1a25520 1}\n       {x42aa0000 x43bc1c14 xc1a3ffb0 1 xc1a3ffb0 1}\n       {x42ac0000 x43b1c157 xc1a56bd0 1 xc1a56bd0 1}\n       {x42ae0000 x43a76e9a xc1a34588 1 xc1a34588 1}\n       {x42b00000 x439d58a6 xc1a29260 1 xc1a29260 1}\n       {x42b20000 x43931c4e xc1a4b158 1 xc1a4b158 1}\n       {x42b40000 x4388c27b xc1a7236c 1 xc1a7236c 1}\n       {x42b60000 x437c6fc1 xc1a9d85c 1 xc1a9d85c 1}\n       {x42b80000 x43670edf xc1a80928 1 xc1a80928 1}\n       {x42ba0000 x43526d77 xc1a1f9f4 1 xc1a1f9f4 1}\n       {x42bc0000 x433e9062 xc199c8d4 1 xc199c8d4 1}\n       {x42be0000 x432bfb42 xc18f34b8 1 xc18f34b8 1}\n       {x42c00000 x431ac334 xc1843ccc 1 xc1843ccc 1}\n       {x42c20000 x430aec0f xc17223f8 1 xc17223f8 1}\n       {x42c40000 x42f8fd6a xc162dd94 1 xc162dd94 1}\n       {x42c60000 x42dd20b9 xc15c2fd8 1 xc15c2fd8 1}\n       {x42c80000 x42c1f174 xc15c1950 1 xc15c1950 1}\n       {x42ca0000 x42a61a65 xc15c383c 1 xc15c383c 1}\n       {x42cc0000 x428ae365 xc14477cc 1 xc14477cc 1}\n       {x42ce0000 x4269f8e4 xc13274fc 1 xc13274fc 1}\n       {x42d00000 x423c8c4c xc1365fec 1 xc1365fec 1}\n       {x42d20000 x420ec8ee xc130052a 1 xc130052a 1}\n       {x42d40000 x41c9136e xc1207c28 1 xc1207c28 1}\n       {x42d60000 x417a2b67 xc10f23ea 1 xc10f23ea 1}\n       {x42d80000 x40e7be0e xc101c82b 1 xc101c82b 1}\n       {x42da0000 xbf164eeb xc0f05308 1 xc0f05308 1}\n       {x42dc0000 xc0f8e803 xc0d3cda1 1 xc0d3cda1 1}\n       {x42de0000 xc15d3290 xc0a3d47c 1 xc0a3d47c 1}\n       {x42e00000 xc190243f xc05471c0 1 xc05471c0 1}\n       {x42e20000 xc1a3b5b8 xbfed5480 1 xbfed5480 1}\n       {x42e40000 xc1adcecf xbed86e40 1 xbed86e40 1}\n       {x42e60000 xc1aeef62 -}\n       {x42e80000 xc1a56623 x3fba7710 1 x3fba7710 1}\n       {x42ea0000 xc197a080 x3fda18a8 1 x3fda18a8 1}\n       {x42ec0000 xc18a230e x3fdf6c90 1 x3fdf6c90 1}\n       {x42ee0000 xc17765dc x3ff1a25c 1 x3ff1a25c 1}\n       {x42f00000 xc157dd85 x3fde74cc 1 x3fde74cc 1}\n       {x42f20000 xc13fc8a9 x3fc66c84 1 x3fc66c84 1}\n       {x42f40000 xc1264264 x3fd8603c 1 x3fd8603c 1}\n       {x42f60000 xc109b09a x400518aa 1 x400518aa 1}\n       {x42f80000 xc0c76c1e x4021093e 1 x4021093e 1}\n       {x42fa0000 xc064afeb x40476c1e 1 x40476c1e 1}\n       {x42fc0000 0 x406f2857 1 x406f2857 1}\n       {x42fe0000 x4079a0c3 x4077e39b 1 x4077e39b 1}\n       {x43000000 x40f7e39b x407870c4 1 x407870c4 1}\n       {x43010000 x413aa093 x4085b642 1 x4085b642 1}\n       {x43020000 x4180d408 x409391c9 1 x409391c9 1}\n       {x43030000 x41a7192e x409ebed8 1 x409ebed8 1}\n       {x43040000 x41d03374 x40a79eee 1 x40a79eee 1}\n       {x43050000 x41fae8a5 x40bd6608 1 x40bd6608 1}\n       {x43060000 x4217733c x40e6ee6e 1 x40e6ee6e 1}\n       {x43070000 x42372fee x40e99cc4 1 x40e99cc4 1}\n       {x43080000 x4251da6d x40d91af8 1 x40d91af8 1}\n       {x43090000 x426d76ac x40db06d4 1 x40db06d4 1}\n       {x430a0000 x42844e11 x40d3f6e8 1 x40d3f6e8 1}\n       {x430b0000 x42913a33 x40cc3258 1 x40cc3258 1}\n       {x430c0000 x429dd45c x40ce8090 1 x40ce8090 1}\n       {x430d0000 x42ab0a45 x40d9e318 1 x40d9e318 1}\n       {x430e0000 x42b910bf x40dcc9a0 1 x40dcc9a0 1}\n       {x430f0000 x42c6a379 x40d7d418 1 x40d7d418 1}\n       {x43100000 x42d40b42 x40d3f068 1 x40d3f068 1}\n       {x43110000 x42e12186 x40cd4bd8 1 x40cd4bd8 1}\n       {x43120000 x42edb4bd x40c19cf8 1 x40c19cf8 1}\n       {x43130000 x42f95525 x40b07878 1 x40b07878 1}\n       {x43140000 x4301e1e6 x409c7a18 1 x409c7a18 1}\n       {x43150000 x43067234 x40612aa0 1 x40612aa0 1}\n       {x43160000 x4308eb3b x3ff99aa0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke9 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dd8a04 x4422249c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke10 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dd8a04 x4422249c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc316eed0 0 1 x407dfa00 1}\n       {x42580000 xc312bdd1 x409465a0 1 x409465a0 1}\n       {x425c0000 xc30da876 x40ac6fe0 1 x40ac6fe0 1}\n       {x42600000 xc307f6d3 x40ba33c0 1 x40ba33c0 1}\n       {x42640000 xc302053a x40d39dd0 1 x40d39dd0 1}\n       {x42680000 xc2f579ec x40dd4c90 1 x40dd4c90 1}\n       {x426c0000 xc2e860e2 x40b40c50 1 x40b40c50 1}\n       {x42700000 xc2def862 x40b09098 1 x40b09098 1}\n       {x42740000 xc2d24ecf x40be9ea0 1 x40be9ea0 1}\n       {x42780000 xc2c7248e x40bac908 1 x40bac908 1}\n       {x427c0000 xc2baf5ae x40c1d6a8 1 x40c1d6a8 1}\n       {x42800000 xc2aee9b9 x40c2a330 1 x40c2a330 1}\n       {x42820000 xc2a2a148 x40b0fc70 1 x40b0fc70 1}\n       {x42840000 xc298ca2b x408d24a8 1 x408d24a8 1}\n       {x42860000 xc290fcb3 x40828780 1 x40828780 1}\n       {x42880000 xc288793b x40937d6c 1 x40937d6c 1}\n       {x428a0000 xc27d1a0b x405c4ce0 1 x405c4ce0 1}\n       {x428c0000 xc27568da x404876f0 1 x404876f0 1}\n       {x428e0000 xc2640b2d x4093e200 1 x4093e200 1}\n       {x42900000 xc250705a x409ea734 1 x409ea734 1}\n       {x42920000 xc23c6160 x409c7edc 1 x409c7edc 1}\n       {x42940000 xc22950a3 x40840d88 1 x40840d88 1}\n       {x42960000 xc21b5dfe x4064c578 1 x4064c578 1}\n       {x42980000 xc20cb7f4 x406dc8b0 1 x406dc8b0 1}\n       {x429a0000 xc1fb49d0 x405a4b30 1 x405a4b30 1}\n       {x429c0000 xc1e2dd1c x4005771c 1 x4005771c 1}\n       {x429e0000 xc1d9ec09 x3f8e9e28 1 x3f8e9e28 1}\n       {x42a00000 xc1d10957 x3f7eeb50 1 x3f7eeb50 1}\n       {x42a20000 xc1c9fd54 x3f921518 1 x3f921518 1}\n       {x42a40000 xc1bec6b4 x3fa7cbd8 1 x3fa7cbd8 1}\n       {x42a60000 xc1b503d9 x3f68c6b0 1 x3f68c6b0 1}\n       {x42a80000 xc1b03a49 x3f11b7a0 1 x3f11b7a0 1}\n       {x42aa0000 xc1abe85f x3d063a00 1 x3d063a00 1}\n       {x42ac0000 xc1abd200 -}\n       {x42ae0000 xc1ae0b5e xbf558340 1 xbf558340 1}\n       {x42b00000 xc1ba4b3c xbfc83c68 1 xbfc83c68 1}\n       {x42b20000 xc1c712eb xbfdc97b8 1 xbfdc97b8 1}\n       {x42b40000 xc1d5de33 xbfdce560 1 xbfdce560 1}\n       {x42b60000 xc1e2af97 xbfd1afa0 1 xbfd1afa0 1}\n       {x42b80000 xc1f01427 xbffd55c8 1 xbffd55c8 1}\n       {x42ba0000 xc2012d28 xc00588ac 1 xc00588ac 1}\n       {x42bc0000 xc208bb29 xbff57a10 1 xbff57a10 1}\n       {x42be0000 xc21084c9 xc0062358 1 xc0062358 1}\n       {x42c00000 xc2197f94 xc01ff138 1 xc01ff138 1}\n       {x42c20000 xc22482f0 xbf394b40 1 xbf394b40 1}\n       {x42c40000 xc22579ff xbe1d0c80 1 xbe1d0c80 1}\n       {x42c60000 xc225bd09 -}\n       {x42c80000 xc223d700 x3eb39540 1 x3eb39540 1}\n       {x42ca0000 xc222eeb4 x3e4ce180 1 x3e4ce180 1}\n       {x42cc0000 xc2223d3d -}\n       {x42ce0000 xc2235171 xbe466500 1 xbe466500 1}\n       {x42d00000 xc223ca07 xbeb4e100 1 xbeb4e100 1}\n       {x42d20000 xc226e6e2 xbf2c78e0 1 xbf2c78e0 1}\n       {x42d40000 xc2292dce xbedd3d80 1 xbedd3d80 1}\n       {x42d60000 xc22a5bd8 xbe138400 1 xbe138400 1}\n       {x42d80000 xc22a8d04 -}\n       {x42da0000 xc228d349 x3ea02940 1 x3ea02940 1}\n       {x42dc0000 xc2280c5f x3eea8a80 1 x3eea8a80 1}\n       {x42de0000 xc225291f x3f3c5720 1 x3f3c5720 1}\n       {x42e00000 xc22229a6 x3f77c6a0 1 x3f77c6a0 1}\n       {x42e20000 xc21d6aea x3f9c80e0 1 x3f9c80e0 1}\n       {x42e40000 xc2186198 x3fde7d80 1 x3fde7d80 1}\n       {x42e60000 xc20f8312 x40058dc0 1 x40058dc0 1}\n       {x42e80000 xc207afe0 x3ff6c5f0 1 x3ff6c5f0 1}\n       {x42ea0000 xc20016b3 x400a072c 1 x400a072c 1}\n       {x42ec0000 xc1ecddf5 x4021eb44 1 x4021eb44 1}\n       {x42ee0000 xc1d7b295 x403cd4ac 1 x403cd4ac 1}\n       {x42f00000 xc1bda8ca x40589004 1 x40589004 1}\n       {x42f20000 xc1a18e94 x406aafd8 1 x406aafd8 1}\n       {x42f40000 xc182fcd4 x407da6e8 1 x407da6e8 1}\n       {x42f60000 xc14449b4 x40831bdc 1 x40831bdc 1}\n       {x42f80000 xc102ddcc x40806a56 1 x40806a56 1}\n       {x42fa0000 xc087bebb x4082ddcc 1 x4082ddcc 1}\n       {x42fc0000 0 x408784fc 1 x408784fc 1}\n       {x42fe0000 x40874b3c x4087e24a 1 x4087e24a 1}\n       {x43000000 x4107e24a x407dbd84 1 x407dbd84 1}\n       {x43010000 x41428460 x406a3f4e 1 x406a3f4e 1}\n       {x43020000 x417d01f1 x40642d40 1 x40642d40 1}\n       {x43030000 x419a4d80 x4048d6fa 1 x4048d6fa 1}\n       {x43040000 x41b0b6b7 x4031677c 1 x4031677c 1}\n       {x43050000 x41c6a75f x401c5ff8 1 x401c5ff8 1}\n       {x43060000 x41d7ceb5 x400bc9f4 1 x400bc9f4 1}\n       {x43070000 x41e999dc x3fea3930 1 x3fea3930 1}\n       {x43080000 x41f515db x3fae72b8 1 x3fae72b8 1}\n       {x43090000 x41ff6833 x3fb7bff8 1 x3fb7bff8 1}\n       {x430a0000 x420606ed x3fbee908 1 x3fbee908 1}\n       {x430b0000 x420ba2aa x3fadb180 1 x3fadb180 1}\n       {x430c0000 x4210e205 x3f8af2b0 1 x3f8af2b0 1}\n       {x430d0000 x421451d5 x3f8c4fc0 1 x3f8c4fc0 1}\n       {x430e0000 x4219a701 x3fb9f790 1 x3fb9f790 1}\n       {x430f0000 x421ff14e x3fba40a0 1 x3fba40a0 1}\n       {x43100000 x42254b0b x3fb891e0 1 x3fb891e0 1}\n       {x43110000 x422b7a6c x3fb7fb40 1 x3fb7fb40 1}\n       {x43120000 x4230cabf x3fa9c5c0 1 x3fa9c5c0 1}\n       {x43130000 x423616c8 x3fa22640 1 x3fa22640 1}\n       {x43140000 x423aed23 x3f5ccd80 1 x3f5ccd80 1}\n       {x43150000 x423cfd34 -}\n       {x43160000 x423a30fa xbf864ae0 1 0 1}}\n      {{x42540000 x4443f782 0 1 xc1134240 1}\n       {x42580000 x4441ade6 xc110b080 1 xc110b080 1}\n       {x425c0000 x443f71fe xc1120da0 1 xc1120da0 1}\n       {x42600000 x443d1d79 xc12dd780 1 xc12dd780 1}\n       {x42640000 x443a0342 xc1562020 1 xc1562020 1}\n       {x42680000 x44366c78 xc16c33c0 1 xc16c33c0 1}\n       {x426c0000 x4432a1a4 xc15374a0 1 xc15374a0 1}\n       {x42700000 x442fd0d3 xc1426a80 1 xc1426a80 1}\n       {x42740000 x442c8e50 xc1585480 1 xc1585480 1}\n       {x42780000 x44290e2f xc1656aa0 1 xc1656aa0 1}\n       {x427c0000 x442562fb xc17007c0 1 xc17007c0 1}\n       {x42800000 x44218df1 xc179cf60 1 xc179cf60 1}\n       {x42820000 x441d9480 xc17d8e00 1 xc17d8e00 1}\n       {x42840000 x4419a181 xc17a2de0 1 xc17a2de0 1}\n       {x42860000 x4415c311 xc173e900 1 xc173e900 1}\n       {x42880000 x44120239 xc17257c0 1 xc17257c0 1}\n       {x428a0000 x440e3053 xc15ea6c0 1 xc15ea6c0 1}\n       {x428c0000 x440b0d03 xc16739a0 1 xc16739a0 1}\n       {x428e0000 x4406f686 xc18530a0 1 xc18530a0 1}\n       {x42900000 x4402b9f9 xc1884a70 1 xc1884a70 1}\n       {x42920000 x43fce3be xc188dcf0 1 xc188dcf0 1}\n       {x42940000 x43f45854 xc183a568 1 xc183a568 1}\n       {x42960000 x43ec6f11 xc174ec80 1 xc174ec80 1}\n       {x42980000 x43e5098c xc1682ad0 1 xc1682ad0 1}\n       {x429a0000 x43ddec64 xc154f460 1 xc154f460 1}\n       {x429c0000 x43d7ba46 xc14b46d0 1 xc14b46d0 1}\n       {x429e0000 x43d137f7 xc14faf50 1 xc14faf50 1}\n       {x42a00000 x43cabf51 xc1554490 1 xc1554490 1}\n       {x42a20000 x43c3e3ae xc1684b20 1 xc1684b20 1}\n       {x42a40000 x43bc3a9f xc1788770 1 xc1788770 1}\n       {x42a60000 x43b45b37 xc17a34d0 1 xc17a34d0 1}\n       {x42a80000 x43ac9752 xc178d8d0 1 xc178d8d0 1}\n       {x42aa0000 x43a4cdaa xc1718260 1 xc1718260 1}\n       {x42ac0000 x439d7f2c xc16c0ad0 1 xc16c0ad0 1}\n       {x42ae0000 x43960cfd xc1688de0 1 xc1688de0 1}\n       {x42b00000 x438ef64e xc15b6b40 1 xc15b6b40 1}\n       {x42b20000 x43885649 xc1647170 1 xc1647170 1}\n       {x42b40000 x4380af37 xc171d748 1 xc171d748 1}\n       {x42b60000 x437271a9 xc1666bc8 1 xc1666bc8 1}\n       {x42b80000 x436490f5 xc15df118 1 xc15df118 1}\n       {x42ba0000 x4356b386 xc15d1038 1 xc15d1038 1}\n       {x42bc0000 x4348eeee xc1551ac8 1 xc1551ac8 1}\n       {x42be0000 x433c102d xc13d4cc0 1 xc13d4cc0 1}\n       {x42c00000 x43314556 xc12aadc8 1 xc12aadc8 1}\n       {x42c20000 x4326ba74 xc1181e70 1 xc1181e70 1}\n       {x42c40000 x431e4188 xc106f798 1 xc106f798 1}\n       {x42c60000 x4315db81 xc10d4158 1 xc10d4158 1}\n       {x42c80000 x430c995d xc1104a18 1 xc1104a18 1}\n       {x42ca0000 x4303d23e xc104b958 1 xc104b958 1}\n       {x42cc0000 x42f80464 xc0f673b8 1 xc0f673b8 1}\n       {x42ce0000 x42e8d605 xc0fe3ce8 1 xc0fe3ce8 1}\n       {x42d00000 x42d83cc7 xc0e16d90 1 xc0e16d90 1}\n       {x42d20000 x42cca853 xc0ba8fd8 1 xc0ba8fd8 1}\n       {x42d40000 x42c0eacc xc0cf0d50 1 xc0cf0d50 1}\n       {x42d60000 x42b2c6a9 xc0cfe1c8 1 xc0cfe1c8 1}\n       {x42d80000 x42a6ee93 xc0cdddb8 1 xc0cdddb8 1}\n       {x42da0000 x42990af2 xc0dbeae8 1 xc0dbeae8 1}\n       {x42dc0000 x428b7136 xc0cfb75c 1 xc0cfb75c 1}\n       {x42de0000 x427e280d xc0b83614 1 xc0b83614 1}\n       {x42e00000 x4268d4e7 xc0a702b8 1 xc0a702b8 1}\n       {x42e20000 x4254675f xc0989ff4 1 xc0989ff4 1}\n       {x42e40000 x4242acea xc0979068 1 xc0979068 1}\n       {x42e60000 x422e8345 xc08af52c 1 xc08af52c 1}\n       {x42e80000 x421fef9f xc0644d38 1 xc0644d38 1}\n       {x42ea0000 x4211f99e xc0523898 1 xc0523898 1}\n       {x42ec0000 x4205a88c xc058f7c0 1 xc058f7c0 1}\n       {x42ee0000 x41edb54c xc07ac560 1 xc07ac560 1}\n       {x42f00000 x41cc9fc0 xc086d390 1 xc086d390 1}\n       {x42f20000 x41aa4b84 xc0915d70 1 xc0915d70 1}\n       {x42f40000 x4183f108 xc0937d19 1 xc0937d19 1}\n       {x42f60000 x414119ef xc08e15aa 1 xc08e15aa 1}\n       {x42f80000 x40f398cc xc0802aa8 1 xc0802aa8 1}\n       {x42fa0000 x4081de8e xc07398cc 1 xc07398cc 1}\n       {x42fc0000 0 xc084bd22 1 xc084bd22 1}\n       {x42fe0000 xc0879bb5 xc0758489 1 xc0758489 1}\n       {x43000000 xc0f58489 xc0536223 1 xc0536223 1}\n       {x43010000 xc12d7eec xc05408cf 1 xc05408cf 1}\n       {x43020000 xc164c6ac xc0574bb0 1 xc0574bb0 1}\n       {x43030000 xc18c9262 xc039f160 1 xc039f160 1}\n       {x43040000 xc1a0dfae xc025136c 1 xc025136c 1}\n       {x43050000 xc1b5d73d xc00d268c 1 xc00d268c 1}\n       {x43060000 xc1c42951 xc0187310 1 xc0187310 1}\n       {x43070000 xc1dbf401 xc01c5b08 1 xc01c5b08 1}\n       {x43080000 xc1eb4013 xbfc8ded0 1 xbfc8ded0 1}\n       {x43090000 xc1f50fdb xbf87fa98 1 xbf87fa98 1}\n       {x430a0000 xc1fc3f66 xbf905398 1 xbf905398 1}\n       {x430b0000 xc2038d27 xbfb3b440 1 xbfb3b440 1}\n       {x430c0000 xc2095af7 -}\n       {x430d0000 xc208be43 -}\n       {x430e0000 xc20be960 xbf198040 1 xbf198040 1}\n       {x430f0000 xc20d8a45 xbef659c0 1 xbef659c0 1}\n       {x43100000 xc20fc2c7 xbf629500 1 xbf629500 1}\n       {x43110000 xc2149eed -}\n       {x43120000 xc2135649 -}\n       {x43130000 xc214ca9e xbede9d40 1 xbede9d40 1}\n       {x43140000 xc216d0be xbf4590e0 1 xbf4590e0 1}\n       {x43150000 xc21af725 xbffd5690 1 xbffd5690 1}\n       {x43160000 xc226a627 xc059128c 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke11 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d1937d x442543b6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke12 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d1937d x442543b6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc33cebcd 0 1 x40db96d0 1}\n       {x42580000 xc335c88f x40f609a0 1 x40f609a0 1}\n       {x425c0000 xc32d8b33 x40e4ad00 1 x40e4ad00 1}\n       {x42600000 xc3277dbf x40c39950 1 x40c39950 1}\n       {x42640000 xc321519e x40d83070 1 x40d83070 1}\n       {x42680000 xc319fab8 x40dec760 1 x40dec760 1}\n       {x426c0000 xc3136528 x40cf3050 1 x40cf3050 1}\n       {x42700000 xc30d07b3 x40caf640 1 x40caf640 1}\n       {x42740000 xc306b5c4 x40be78f0 1 x40be78f0 1}\n       {x42780000 xc3012024 x40c6dd40 1 x40c6dd40 1}\n       {x427c0000 xc2f48fe0 x40ddd7e8 1 x40ddd7e8 1}\n       {x42800000 xc2e6854b x40d21d28 1 x40d21d28 1}\n       {x42820000 xc2da4c3b x40b02ae8 1 x40b02ae8 1}\n       {x42840000 xc2d07fee x409b1348 1 x409b1348 1}\n       {x42860000 xc2c6e9d2 x409b28d0 1 x409b28d0 1}\n       {x42880000 xc2bd1ad4 x409d6290 1 x409d6290 1}\n       {x428a0000 xc2b33d80 x4099e7a8 1 x4099e7a8 1}\n       {x428c0000 xc2a9dddf x4097f570 1 x4097f570 1}\n       {x428e0000 xc2a03ed2 x409dade8 1 x409dade8 1}\n       {x42900000 xc2962822 x40a02b20 1 x40a02b20 1}\n       {x42920000 xc28c396e x409b2980 1 x409b2980 1}\n       {x42940000 xc282c2f2 x40929ac8 1 x40929ac8 1}\n       {x42960000 xc273cc2a x408ce240 1 x408ce240 1}\n       {x42980000 xc2624d54 x40815118 1 x40815118 1}\n       {x429a0000 xc25377e4 x406a9738 1 x406a9738 1}\n       {x429c0000 xc244fa6d x40202880 1 x40202880 1}\n       {x429e0000 xc23f72d4 x3f9aec80 1 x3f9aec80 1}\n       {x42a00000 xc23b4ba5 x3fa20ac0 1 x3fa20ac0 1}\n       {x42a20000 xc2355228 x3fd2b070 1 x3fd2b070 1}\n       {x42a40000 xc22e209e x3fd80440 1 x3fd80440 1}\n       {x42a60000 xc227d1e4 x3fafbcc0 1 x3fafbcc0 1}\n       {x42a80000 xc22324d2 x3f9ce090 1 x3f9ce090 1}\n       {x42aa0000 xc21e03db x3f49a6a0 1 x3f49a6a0 1}\n       {x42ac0000 xc21cd79d -}\n       {x42ae0000 xc21df9e2 xbf46aa60 1 xbf46aa60 1}\n       {x42b00000 xc2230cf0 xbfb4b060 1 xbfb4b060 1}\n       {x42b20000 xc22944e8 xbfcdd4c0 1 xbfcdd4c0 1}\n       {x42b40000 xc22fea3c xbfe7edf0 1 xbfe7edf0 1}\n       {x42b60000 xc237c3c7 xbfee2090 1 xbfee2090 1}\n       {x42b80000 xc23ecc45 xbfe2d320 1 xbfe2d320 1}\n       {x42ba0000 xc245f0f9 xbfe9a840 1 xbfe9a840 1}\n       {x42bc0000 xc24d66c9 xbff48040 1 xbff48040 1}\n       {x42be0000 xc25538fd xc0027be0 1 xc0027be0 1}\n       {x42c00000 xc25db645 xc00d5df0 1 xc00d5df0 1}\n       {x42c20000 xc266e4bb -}\n       {x42c40000 xc26594db x3eae08c0 1 x3eae08c0 1}\n       {x42c60000 xc2642c98 x3efcd000 1 x3efcd000 1}\n       {x42c80000 xc261a19b x3f112220 1 x3f112220 1}\n       {x42ca0000 xc25fa387 x3f20ef40 1 x3f20ef40 1}\n       {x42cc0000 xc25c9a21 x3f3a9580 1 x3f3a9580 1}\n       {x42ce0000 xc259cedb x3f0ab5e0 1 x3f0ab5e0 1}\n       {x42d00000 xc2584472 x3e8796c0 1 x3e8796c0 1}\n       {x42d20000 xc257b080 -}\n       {x42d40000 xc257ec73 -}\n       {x42d60000 xc256bd09 -}\n       {x42d80000 xc2581b69 -}\n       {x42da0000 xc2571c73 x3ec80ec0 1 x3ec80ec0 1}\n       {x42dc0000 xc254fb2e x3f5292e0 1 x3f5292e0 1}\n       {x42de0000 xc25087dc x3faf9710 1 x3faf9710 1}\n       {x42e00000 xc24a01bd x3fd9e5e0 1 x3fd9e5e0 1}\n       {x42e20000 xc242e97e x400ccb78 1 x400ccb78 1}\n       {x42e40000 xc238684e x401c0000 1 x401c0000 1}\n       {x42e60000 xc22f697e x401d50c8 1 x401d50c8 1}\n       {x42e80000 xc224be35 x402874f0 1 x402874f0 1}\n       {x42ea0000 xc21a5ae0 x403b9498 1 x403b9498 1}\n       {x42ec0000 xc20d4ba2 x405cf408 1 x405cf408 1}\n       {x42ee0000 xc1fd78be x40721d44 1 x40721d44 1}\n       {x42f00000 xc1de0ff3 x40847fb2 1 x40847fb2 1}\n       {x42f20000 xc1bb38e5 x408b8b2c 1 x408b8b2c 1}\n       {x42f40000 xc1984a5d x4092cbe2 1 x4092cbe2 1}\n       {x42f60000 xc163a5e8 x4099b91b 1 x4099b91b 1}\n       {x42f80000 xc116db9f x40974d14 1 x40974d14 1}\n       {x42fa0000 xc098b1a8 x4096db9f 1 x4096db9f 1}\n       {x42fc0000 0 x409e20c2 1 x409e20c2 1}\n       {x42fe0000 x40a38fdd x409e4843 1 x409e4843 1}\n       {x43000000 x411e4843 x40941d74 1 x40941d74 1}\n       {x43010000 x4165e563 x408b9285 1 x408b9285 1}\n       {x43020000 x4194ed64 x40847f0d 1 x40847f0d 1}\n       {x43030000 x41b53238 x406f8060 1 x406f8060 1}\n       {x43040000 x41d0cd7c x40575d78 1 x40575d78 1}\n       {x43050000 x41eb0996 x404a9778 1 x404a9778 1}\n       {x43060000 x4201b9ad x4025d818 1 x4025d818 1}\n       {x43070000 x420a3fce x3ff4cfd0 1 x3ff4cfd0 1}\n       {x43080000 x421106aa x3fcd6650 1 x3fcd6650 1}\n       {x43090000 x42171633 x3fcac5a0 1 x3fcac5a0 1}\n       {x430a0000 x421db304 x3fba3590 1 x3fba3590 1}\n       {x430b0000 x4222b98c x3fb13ec0 1 x3fb13ec0 1}\n       {x430c0000 x4228c6f0 x3fccb6a0 1 x3fccb6a0 1}\n       {x430d0000 x422f84f6 x3fc38f70 1 x3fc38f70 1}\n       {x430e0000 x4234ffe7 x3fd48e10 1 x3fd48e10 1}\n       {x430f0000 x423ccdd7 x3ffff060 1 x3ffff060 1}\n       {x43100000 x4244feed x40054188 1 x40054188 1}\n       {x43110000 x424d7608 x40086c98 1 x40086c98 1}\n       {x43120000 x42560c80 x400005c0 1 x400005c0 1}\n       {x43130000 x425d76c0 x3fc64180 1 x3fc64180 1}\n       {x43140000 x42627098 x3f658080 1 x3f658080 1}\n       {x43150000 x4264a2c4 -}\n       {x43160000 x4261b45b xbf8cb3b0 1 0 1}}\n      {{x42540000 x4447edba 0 1 xc1170a70 1}\n       {x42580000 x44459b39 xc10fcbe0 1 xc10fcbe0 1}\n       {x425c0000 x44436f5b xc11289a0 1 xc11289a0 1}\n       {x42600000 x444106ec xc13243c0 1 xc13243c0 1}\n       {x42640000 x443ddd3d xc158cc40 1 xc158cc40 1}\n       {x42680000 x443a408a xc16da5a0 1 xc16da5a0 1}\n       {x426c0000 x44367010 xc15f78e0 1 xc15f78e0 1}\n       {x42700000 x443344c3 xc14db0c0 1 xc14db0c0 1}\n       {x42740000 x4430028a xc1584200 1 xc1584200 1}\n       {x42780000 x442c82b3 xc16bb980 1 xc16bb980 1}\n       {x427c0000 x4428a4be xc17cdc80 1 xc17cdc80 1}\n       {x42800000 x44249bcf xc1801270 1 xc1801270 1}\n       {x42820000 x4420a397 xc17d5020 1 xc17d5020 1}\n       {x42840000 x441cb14e xc1800ed0 1 xc1800ed0 1}\n       {x42860000 x4418a2aa xc17ed680 1 xc17ed680 1}\n       {x42880000 x4414ba9a xc1771e80 1 xc1771e80 1}\n       {x428a0000 x4410e9b6 xc1763800 1 xc1763800 1}\n       {x428c0000 x440d08da xc18144b0 1 xc18144b0 1}\n       {x428e0000 x4408d56b xc189a970 1 xc189a970 1}\n       {x42900000 x44046e43 xc18b2d70 1 xc18b2d70 1}\n       {x42920000 x44002294 xc1897090 1 xc1897090 1}\n       {x42940000 x43f7ae74 xc18a62f0 1 xc18a62f0 1}\n       {x42960000 x43eef8ca xc1893448 1 xc1893448 1}\n       {x42980000 x43e687eb xc1799e50 1 xc1799e50 1}\n       {x429a0000 x43df5ee5 xc164acf0 1 xc164acf0 1}\n       {x429c0000 x43d83d1c xc15a13e0 1 xc15a13e0 1}\n       {x429e0000 x43d1bda7 xc154e1e0 1 xc154e1e0 1}\n       {x42a00000 x43caeefe xc16144b0 1 xc16144b0 1}\n       {x42a20000 x43c3a95c xc16e1e00 1 xc16e1e00 1}\n       {x42a40000 x43bc0d1e xc1764fc0 1 xc1764fc0 1}\n       {x42a60000 x43b44460 xc1791ec0 1 xc1791ec0 1}\n       {x42a80000 x43ac7b32 xc17a5590 1 xc17a5590 1}\n       {x42aa0000 x43a49f07 xc1731430 1 xc1731430 1}\n       {x42ac0000 x439d49ef xc165f2e0 1 xc165f2e0 1}\n       {x42ae0000 x43963fd9 xc15f1f30 1 xc15f1f30 1}\n       {x42b00000 x438f57fc xc1614080 1 xc1614080 1}\n       {x42b20000 x43882bd1 xc164ee30 1 xc164ee30 1}\n       {x42b40000 x43810919 xc165a3b8 1 xc165a3b8 1}\n       {x42b60000 x4373a32b xc169fb70 1 xc169fb70 1}\n       {x42b80000 x4364d2c4 xc16ca878 1 xc16ca878 1}\n       {x42ba0000 x43560e1c xc166cfe8 1 xc166cfe8 1}\n       {x42bc0000 x4347f8c7 xc1593ca8 1 xc1593ca8 1}\n       {x42be0000 x433ae687 xc145db58 1 xc145db58 1}\n       {x42c00000 x432f3d5c xc130bdc0 1 xc130bdc0 1}\n       {x42c20000 x4324cecf xc11ccf40 1 xc11ccf40 1}\n       {x42c40000 x431ba374 xc10ecf88 1 xc10ecf88 1}\n       {x42c60000 x4312f4de xc10e7230 1 xc10e7230 1}\n       {x42c80000 x4309d52e xc10cf0b8 1 xc10cf0b8 1}\n       {x42ca0000 x430156c7 xc10940e8 1 xc10940e8 1}\n       {x42cc0000 x42f15a22 xc1071ed0 1 xc1071ed0 1}\n       {x42ce0000 x42e0e5da xc0fef650 1 xc0fef650 1}\n       {x42d00000 x42d17b58 xc0eedab0 1 xc0eedab0 1}\n       {x42d20000 x42c30a84 xc0dc32d0 1 xc0dc32d0 1}\n       {x42d40000 x42b5f4fe xc0ccbb68 1 xc0ccbb68 1}\n       {x42d60000 x42a97317 xc0b73c50 1 xc0b73c50 1}\n       {x42d80000 x429f0d74 xc0b64d90 1 xc0b64d90 1}\n       {x42da0000 x4292a965 xc0d01538 1 xc0d01538 1}\n       {x42dc0000 x42850acd xc0d61a60 1 xc0d61a60 1}\n       {x42de0000 x426fcc32 xc0c4a740 1 xc0c4a740 1}\n       {x42e00000 x4258ebca xc0abfdec 1 xc0abfdec 1}\n       {x42e20000 x4244ccb7 xc09b5d90 1 xc09b5d90 1}\n       {x42e40000 x42321466 xc0915c68 1 xc0915c68 1}\n       {x42e60000 x4220759d xc083f04c 1 xc083f04c 1}\n       {x42e80000 x42111853 xc0624f60 1 xc0624f60 1}\n       {x42ea0000 x42042bb1 xc05f7770 1 xc05f7770 1}\n       {x42ec0000 x41ea52ca xc068804c 1 xc068804c 1}\n       {x42ee0000 x41ce374f xc062e158 1 xc062e158 1}\n       {x42f00000 x41b19a74 xc08129c0 1 xc08129c0 1}\n       {x42f20000 x418da26f xc087ff0d 1 xc087ff0d 1}\n       {x42f40000 x415b35db xc0733a04 1 xc0733a04 1}\n       {x42f60000 x4121a7dc xc06bd90f 1 xc06bd90f 1}\n       {x42f80000 x40ca92a7 xc067c37c 1 xc067c37c 1}\n       {x42fa0000 x40371878 xc04a92a7 1 xc04a92a7 1}\n       {x42fc0000 0 xc03bc74e 1 xc03bc74e 1}\n       {x42fe0000 xc0407624 xc0329a0d 1 xc0329a0d 1}\n       {x43000000 xc0b29a0d xc02fc3b8 1 xc02fc3b8 1}\n       {x43010000 xc107ff65 xc03065d3 1 xc03065d3 1}\n       {x43020000 xc1317ff0 xc013ff32 1 xc013ff32 1}\n       {x43030000 xc151fefe xbfe230d0 1 xbfe230d0 1}\n       {x43040000 xc16a0c24 xbfc82558 1 xbfc82558 1}\n       {x43050000 xc182042a xbfa42020 1 xbfa42020 1}\n       {x43060000 xc1898a16 xbf6a07c0 1 xbf6a07c0 1}\n       {x43070000 xc190a4a6 xbf0ac580 1 xbf0ac580 1}\n       {x43080000 xc192366e -}\n       {x43090000 xc18fdd60 -}\n       {x430a0000 xc1947629 xbefc9120 1 xbefc9120 1}\n       {x430b0000 xc197c1e9 -}\n       {x430c0000 xc196e5a5 x3dac6700 1 x3dac6700 1}\n       {x430d0000 xc196691b -}\n       {x430e0000 xc197a044 xbd308800 1 xbd308800 1}\n       {x430f0000 xc197bdb0 xbd308800 1 xbd308800 1}\n       {x43100000 xc199c91c -}\n       {x43110000 xc19726a9 x3e9d0ec0 1 x3e9d0ec0 1}\n       {x43120000 xc194e0a6 x3e66a7c0 1 x3e66a7c0 1}\n       {x43130000 xc1938c0a -}\n       {x43140000 xc1972b4d xbf377780 1 xbf377780 1}\n       {x43150000 xc19f0382 xc001a53c 1 xc001a53c 1}\n       {x43160000 xc1b7949c xc065fa9a 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke13 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dbd171 x44283365 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke14 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dbd171 x44283365 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc31627c4 0 1 x408079b0 1}\n       {x42580000 xc311eaac x4095f5a0 1 x4095f5a0 1}\n       {x425c0000 xc30cc86a x40ae04e0 1 x40ae04e0 1}\n       {x42600000 xc3070a5e x40bb34d0 1 x40bb34d0 1}\n       {x42640000 xc301151d x40d41380 1 x40d41380 1}\n       {x42680000 xc2f3924c x40ddb8e8 1 x40ddb8e8 1}\n       {x426c0000 xc2e6731d x40b436b0 1 x40b436b0 1}\n       {x42700000 xc2dd0b76 x40b07fe8 1 x40b07fe8 1}\n       {x42740000 xc2d06320 x40be9688 1 x40be9688 1}\n       {x42780000 xc2c538a5 x40bad4e8 1 x40bad4e8 1}\n       {x427c0000 xc2b90883 x40c1eb70 1 x40c1eb70 1}\n       {x42800000 xc2acfb37 x40c28ae8 1 x40c28ae8 1}\n       {x42820000 xc2a0b726 x40b0bfe8 1 x40b0bfe8 1}\n       {x42840000 xc296e33a x408d0f98 1 x408d0f98 1}\n       {x42860000 xc28f1533 x40826f98 1 x40826f98 1}\n       {x42880000 xc2869547 x40933b5c 1 x40933b5c 1}\n       {x428a0000 xc2795b8f x405b7310 1 x405b7310 1}\n       {x428c0000 xc271bc2c x405556e0 1 x405556e0 1}\n       {x428e0000 xc25eb0b3 x409cc658 1 x409cc658 1}\n       {x42900000 xc24a8a96 x40a0a678 1 x40a0a678 1}\n       {x42920000 xc2368715 x409c3aa4 1 x409c3aa4 1}\n       {x42940000 xc2237bed x40849260 1 x40849260 1}\n       {x42960000 xc215627d x405c56f0 1 x405c56f0 1}\n       {x42980000 xc207f10f x40639600 1 x40639600 1}\n       {x429a0000 xc1f1df7a x40562d94 1 x40562d94 1}\n       {x429c0000 xc1da56b9 x400383cc 1 x400383cc 1}\n       {x429e0000 xc1d0fe87 x3f901b70 1 x3f901b70 1}\n       {x42a00000 xc1c8534b x3f834230 1 x3f834230 1}\n       {x42a20000 xc1c09641 x3f99a828 1 x3f99a828 1}\n       {x42a40000 xc1b51e46 x3fab4568 1 x3fab4568 1}\n       {x42a60000 xc1ab2d94 x3f5fabd0 1 x3f5fabd0 1}\n       {x42a80000 xc1a72389 x3e4e6a00 1 x3e4e6a00 1}\n       {x42aa0000 xc1a699ed -}\n       {x42ac0000 xc1a761f8 xbe960840 1 xbe960840 1}\n       {x42ae0000 xc1b077fd xbfc222f8 1 xbfc222f8 1}\n       {x42b00000 xc1bfa657 xc000d9f4 1 xc000d9f4 1}\n       {x42b20000 xc1d0ae7a xc0034e04 1 xc0034e04 1}\n       {x42b40000 xc1e079d8 xc00c0f64 1 xc00c0f64 1}\n       {x42b60000 xc1f3b253 xc0100050 1 xc0100050 1}\n       {x42b80000 xc2023cf6 xc00667b4 1 xc00667b4 1}\n       {x42ba0000 xc20aa620 xc003d488 1 xc003d488 1}\n       {x42bc0000 xc212b787 xc00da618 1 xc00da618 1}\n       {x42be0000 xc21c5ae3 xc026c0a8 1 xc026c0a8 1}\n       {x42c00000 xc2278f9c xc02dc7a0 1 xc02dc7a0 1}\n       {x42c20000 xc23213d7 xbf3340c0 1 xbf3340c0 1}\n       {x42c40000 xc23302d8 -}\n       {x42c60000 xc2329388 x3df34800 1 x3df34800 1}\n       {x42c80000 xc2320f90 x3e6b3280 1 x3e6b3280 1}\n       {x42ca0000 xc230bd23 x3e676280 1 x3e676280 1}\n       {x42cc0000 xc23040cb -}\n       {x42ce0000 xc2307612 -}\n       {x42d00000 xc22ff53f -}\n       {x42d20000 xc2317438 -}\n       {x42d40000 xc230f3e2 -}\n       {x42d60000 xc2326717 -}\n       {x42d80000 xc2301d6b x3ed76c80 1 x3ed76c80 1}\n       {x42da0000 xc22f0965 x3eba59c0 1 x3eba59c0 1}\n       {x42dc0000 xc22d3404 x3f154b20 1 x3f154b20 1}\n       {x42de0000 xc22a5f0c x3f513ea0 1 x3f513ea0 1}\n       {x42e00000 xc226aa0f x3f9e4c50 1 x3f9e4c50 1}\n       {x42e20000 xc2207a47 x3fbc75d0 1 x3fbc75d0 1}\n       {x42e40000 xc21ae2b2 x3fd27e70 1 x3fd27e70 1}\n       {x42e60000 xc2135260 x40000c68 1 x40000c68 1}\n       {x42e80000 xc20ae125 x3ffef340 1 x3ffef340 1}\n       {x42ea0000 xc203632c x400a9ae0 1 x400a9ae0 1}\n       {x42ec0000 xc1f31b92 x4027d670 1 x4027d670 1}\n       {x42ee0000 xc1dcd0bc x404172f4 1 x404172f4 1}\n       {x42f00000 xc1c2bed5 x405f2d9c 1 x405f2d9c 1}\n       {x42f20000 xc1a50555 x406df2a0 1 x406df2a0 1}\n       {x42f40000 xc187422d x407d6afe 1 x407d6afe 1}\n       {x42f60000 xc14b552b x4083fa61 1 x4083fa61 1}\n       {x42f80000 xc10a89f9 x4088d8b0 1 x4088d8b0 1}\n       {x42fa0000 xc084f8f7 x408a89f9 1 x408a89f9 1}\n       {x42fc0000 0 x4086dcae 1 x4086dcae 1}\n       {x42fe0000 x4088c064 x408ad034 1 x408ad034 1}\n       {x43000000 x410ad034 x4083bedf 1 x4083bedf 1}\n       {x43010000 x41481f11 x406ee95c 1 x406ee95c 1}\n       {x43020000 x41812271 x4067ef92 1 x4067ef92 1}\n       {x43030000 x419e0b6d x404ba748 1 x404ba748 1}\n       {x43040000 x41b40c43 x403a7c78 1 x403a7c78 1}\n       {x43050000 x41ccaa8b x402e99e4 1 x402e99e4 1}\n       {x43060000 x41dfb2bc x4013884c 1 x4013884c 1}\n       {x43070000 x41f18c9e x3fc20488 1 x3fc20488 1}\n       {x43080000 x41f7f34d x3f6b72e0 1 x3f6b72e0 1}\n       {x43090000 x420021e6 x3fa9cd98 1 x3fa9cd98 1}\n       {x430a0000 x42069680 x3fbb0f20 1 x3fbb0f20 1}\n       {x430b0000 x420bd2d8 x3fa47fc0 1 x3fa47fc0 1}\n       {x430c0000 x4210de7c x3f9590b0 1 x3f9590b0 1}\n       {x430d0000 x42152be3 x3f9aa810 1 x3f9aa810 1}\n       {x430e0000 x421a88fd x3fc29c30 1 x3fc29c30 1}\n       {x430f0000 x422155a6 x3fcd87f0 1 x3fcd87f0 1}\n       {x43100000 x4227617c x3fccf2a0 1 x3fccf2a0 1}\n       {x43110000 x422e24d0 x3fcbc5d0 1 x3fcbc5d0 1}\n       {x43120000 x42341dd9 x3fbc2490 1 x3fbc2490 1}\n       {x43130000 x4239e719 x3fac7e30 1 x3fac7e30 1}\n       {x43140000 x423ee5bc x3f5932e0 1 x3f5932e0 1}\n       {x43150000 x4240b0b0 -}\n       {x43160000 x423dc14b xbf8ce2f0 1 0 1}}\n      {{x42540000 x4444e6dc 0 1 xc1133b00 1}\n       {x42580000 x44429d59 xc110ac40 1 xc110ac40 1}\n       {x425c0000 x4440617a xc1126280 1 xc1126280 1}\n       {x42600000 x443e0a45 xc12e4a40 1 xc12e4a40 1}\n       {x42640000 x443aef28 xc1566ea0 1 xc1566ea0 1}\n       {x42680000 x443756d0 xc16ca000 1 xc16ca000 1}\n       {x426c0000 x44338a28 xc153ab80 1 xc153ab80 1}\n       {x42700000 x4430b974 xc1426600 1 xc1426600 1}\n       {x42740000 x442d76f8 xc1585340 1 xc1585340 1}\n       {x42780000 x4429f6da xc1656ba0 1 xc1656ba0 1}\n       {x427c0000 x44264b9b xc1700b60 1 xc1700b60 1}\n       {x42800000 x4422767f xc179c660 1 xc179c660 1}\n       {x42820000 x441e7d68 xc17d7c20 1 xc17d7c20 1}\n       {x42840000 x441a8a9e xc17a2820 1 xc17a2820 1}\n       {x42860000 x4416ac27 xc173eca0 1 xc173eca0 1}\n       {x42880000 x4412eb39 xc1724f80 1 xc1724f80 1}\n       {x428a0000 x440f19ab xc15e8160 1 xc15e8160 1}\n       {x428c0000 x440bf72e xc16a4320 1 xc16a4320 1}\n       {x428e0000 x4407c792 xc1890c50 1 xc1890c50 1}\n       {x42900000 x44036669 xc18aa228 1 xc18aa228 1}\n       {x42920000 x43fe3adf xc18903a8 1 xc18903a8 1}\n       {x42940000 x43f5ac5d xc183bc78 1 xc183bc78 1}\n       {x42960000 x43edc350 xc17633f0 1 xc17633f0 1}\n       {x42980000 x43e6491e xc169ac70 1 xc169ac70 1}\n       {x429a0000 x43df2889 xc1571c20 1 xc1571c20 1}\n       {x429c0000 x43d8d75c xc14cf9b0 1 xc14cf9b0 1}\n       {x429e0000 x43d258ee xc14fbd30 1 xc14fbd30 1}\n       {x42a00000 x43cbdb89 xc1558ee0 1 xc1558ee0 1}\n       {x42a20000 x43c50000 xc1666fc0 1 xc1666fc0 1}\n       {x42a40000 x43bd748d xc175d380 1 xc175d380 1}\n       {x42a60000 x43b5a2c8 xc176d5f0 1 xc176d5f0 1}\n       {x42a80000 x43ae072e xc172d740 1 xc172d740 1}\n       {x42aa0000 x43a67554 xc16cc2f0 1 xc16cc2f0 1}\n       {x42ac0000 x439f3aff xc16244c0 1 xc16244c0 1}\n       {x42ae0000 x43985108 xc15d8840 1 xc15d8840 1}\n       {x42b00000 x4391627b xc15a8870 1 xc15a8870 1}\n       {x42b20000 x438aa881 xc15f6ec0 1 xc15f6ec0 1}\n       {x42b40000 x43836b8f xc165c180 1 xc165c180 1}\n       {x42b60000 x437898d2 xc164a6a0 1 xc164a6a0 1}\n       {x42b80000 x436a424a xc1672af8 1 xc1672af8 1}\n       {x42ba0000 x435bb373 xc16388c8 1 xc16388c8 1}\n       {x42bc0000 x434dd131 xc156abc0 1 xc156abc0 1}\n       {x42be0000 x4340ddfb xc140fd90 1 xc140fd90 1}\n       {x42c00000 x4335b17f xc12e7e98 1 xc12e7e98 1}\n       {x42c20000 x432b0e28 xc11b74f8 1 xc11b74f8 1}\n       {x42c40000 x432242e0 xc10ce480 1 xc10ce480 1}\n       {x42c60000 x43197198 xc10e4400 1 xc10e4400 1}\n       {x42c80000 x43107a60 xc10c9620 1 xc10c9620 1}\n       {x42ca0000 x4307ded4 xc1079f20 1 xc1079f20 1}\n       {x42cc0000 x42ff0cf8 xc1030d58 1 xc1030d58 1}\n       {x42ce0000 x42eefa52 xc1036cc4 1 xc1036cc4 1}\n       {x42d00000 x42de31c7 xc0edf568 1 xc0edf568 1}\n       {x42d20000 x42d13ba5 xc0d05ed0 1 xc0d05ed0 1}\n       {x42d40000 x42c425ed xc0d13d00 1 xc0d13d00 1}\n       {x42d60000 x42b71405 xc0d323d8 1 xc0d323d8 1}\n       {x42d80000 x42a9c172 xc0d2eeb0 1 xc0d2eeb0 1}\n       {x42da0000 x429cb62f xc0d9eed0 1 xc0d9eed0 1}\n       {x42dc0000 x428e8398 xc0d84aa8 1 xc0d84aa8 1}\n       {x42de0000 x4281acda xc0c4f128 1 xc0c4f128 1}\n       {x42e00000 x426bcae6 xc0b006d0 1 xc0b006d0 1}\n       {x42e20000 x42575800 xc09b3358 1 xc09b3358 1}\n       {x42e40000 x4244fe10 xc0914c2c 1 xc0914c2c 1}\n       {x42e60000 x423304f5 xc0845ff8 1 xc0845ff8 1}\n       {x42e80000 x4223e612 xc0685d30 1 xc0685d30 1}\n       {x42ea0000 x4215f94f xc06048c0 1 xc06048c0 1}\n       {x42ec0000 x4207dcfa xc0677d38 1 xc0677d38 1}\n       {x42ee0000 x41f21350 xc0749af4 1 xc0749af4 1}\n       {x42f00000 x41d29337 xc087f97a 1 xc087f97a 1}\n       {x42f20000 x41ae1693 xc095179e 1 xc095179e 1}\n       {x42f40000 x41880768 xc08f7391 1 xc08f7391 1}\n       {x42f60000 x414cb995 xc08a0f89 1 xc08a0f89 1}\n       {x42f80000 x4105ff47 xc08c57ac 1 xc08c57ac 1}\n       {x42fa0000 x4080c3d2 xc085ff47 1 xc085ff47 1}\n       {x42fc0000 0 xc06e811d 1 xc06e811d 1}\n       {x42fe0000 xc05b7a96 xc06f65a8 1 xc06f65a8 1}\n       {x43000000 xc0ef65a8 xc06b3b91 1 xc06b3b91 1}\n       {x43010000 xc12c7c6e xc05d891e 1 xc05d891e 1}\n       {x43020000 xc1667763 xc0461714 1 xc0461714 1}\n       {x43030000 xc187c3fc xc015d156 1 xc015d156 1}\n       {x43040000 xc198b007 xc0221a0c 1 xc0221a0c 1}\n       {x43050000 xc1b04a7f xc0239e64 1 xc0239e64 1}\n       {x43060000 xc1c197a0 xc01f9d8c 1 xc01f9d8c 1}\n       {x43070000 xc1d831e2 xbfc91560 1 xbfc91560 1}\n       {x43080000 xc1dc6254 xbf5e9940 1 xbf5e9940 1}\n       {x43090000 xc1e61b76 xbf87cca8 1 xbf87cca8 1}\n       {x430a0000 xc1ed5be9 xbf93f278 1 xbf93f278 1}\n       {x430b0000 xc1f899c5 xbf9f4cf8 1 xbf9f4cf8 1}\n       {x430c0000 xc200a2c4 xbd4ff000 1 xbd4ff000 1}\n       {x430d0000 xc200b418 xbd4ff000 1 xbd4ff000 1}\n       {x430e0000 xc2036717 xbf0838a0 1 xbf0838a0 1}\n       {x430f0000 xc204f5dd xbee59b40 1 xbee59b40 1}\n       {x43100000 xc206fd84 xbf2f6b80 1 xbf2f6b80 1}\n       {x43110000 xc20a7139 -}\n       {x43120000 xc209e4e9 -}\n       {x43130000 xc20b4b18 xbee76640 1 xbee76640 1}\n       {x43140000 xc20d8282 xbf52bfa0 1 xbf52bfa0 1}\n       {x43150000 xc211e115 xc005aeb8 1 xc005aeb8 1}\n       {x43160000 xc21e3859 xc0655704 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke15 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43db2581 x441a243a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke16 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43db2581 x441a243a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc39622a3 0 1 x408158b0 1}\n       {x42580000 xc393f556 x409f4860 1 x409f4860 1}\n       {x425c0000 xc3912860 x40c5f500 1 x40c5f500 1}\n       {x42600000 xc38dc5ae x40e096a0 1 x40e096a0 1}\n       {x42640000 xc38a23ab x40e411e0 1 x40e411e0 1}\n       {x42680000 xc386a51f x40e0cbe0 1 x40e0cbe0 1}\n       {x426c0000 xc3831d4c x40e23d50 1 x40e23d50 1}\n       {x42700000 xc37f2669 x40e56480 1 x40e56480 1}\n       {x42740000 xc377e450 x40ec6910 1 x40ec6910 1}\n       {x42780000 xc3705fd8 x40ee5010 1 x40ee5010 1}\n       {x427c0000 xc368ff4f x41005560 1 x41005560 1}\n       {x42800000 xc360552c x4104f0a0 1 x4104f0a0 1}\n       {x42820000 xc358613b x40fb13b0 1 x40fb13b0 1}\n       {x42840000 xc350a3f1 x40f48d00 1 x40f48d00 1}\n       {x42860000 xc349186b x40c97b10 1 x40c97b10 1}\n       {x42880000 xc3440c40 x40cb72e0 1 x40cb72e0 1}\n       {x428a0000 xc33c613d x40b71b50 1 x40b71b50 1}\n       {x428c0000 xc3389a8b x406e1560 1 x406e1560 1}\n       {x428e0000 xc334f092 x407703c0 1 x407703c0 1}\n       {x42900000 xc330e26d x408229c0 1 x408229c0 1}\n       {x42920000 xc32ccdf6 x3ff95100 1 x3ff95100 1}\n       {x42940000 xc32c27c0 x3f2b3f80 1 x3f2b3f80 1}\n       {x42960000 xc32b7777 x3f5aa400 1 x3f5aa400 1}\n       {x42980000 xc32a7278 x40129340 1 x40129340 1}\n       {x429a0000 xc326e2dd x402a5ce0 1 x402a5ce0 1}\n       {x429c0000 xc3251f91 x3fb53e00 1 x3fb53e00 1}\n       {x429e0000 xc3240de5 x3fcb2a00 1 x3fcb2a00 1}\n       {x42a00000 xc321f2e9 x401b7a60 1 x401b7a60 1}\n       {x42a20000 xc31f3212 x403333c0 1 x403333c0 1}\n       {x42a40000 xc31c594b x403b7f60 1 x403b7f60 1}\n       {x42a60000 xc3195617 x4044ab00 1 x4044ab00 1}\n       {x42a80000 xc31633f3 x404cfe20 1 x404cfe20 1}\n       {x42aa0000 xc312ee26 x4036d920 1 x4036d920 1}\n       {x42ac0000 xc3107d2a x3febe5c0 1 x3febe5c0 1}\n       {x42ae0000 xc30f3e8f x3f687b80 1 x3f687b80 1}\n       {x42b00000 xc30eac33 x3e532c00 1 x3e532c00 1}\n       {x42b20000 xc30e9a9a -}\n       {x42b40000 xc30ec4bc -}\n       {x42b60000 xc30eb763 -}\n       {x42b80000 xc30edab7 -}\n       {x42ba0000 xc30ecc23 x3da79800 1 x3da79800 1}\n       {x42bc0000 xc30eb0d1 x3e9c1800 1 x3e9c1800 1}\n       {x42be0000 xc30e300b x3ec82c00 1 x3ec82c00 1}\n       {x42c00000 xc30de8a5 x3eacfb00 1 x3eacfb00 1}\n       {x42c20000 xc30d8310 x3f985f80 1 x3f985f80 1}\n       {x42c40000 xc309b0ee x40668ce0 1 x40668ce0 1}\n       {x42c60000 xc3064ea9 x4064d3c0 1 x4064d3c0 1}\n       {x42c80000 xc3028a50 x407d21d0 1 x407d21d0 1}\n       {x42ca0000 xc2fccb35 x4083d710 1 x4083d710 1}\n       {x42cc0000 xc2f499be x407fd620 1 x407fd620 1}\n       {x42ce0000 xc2eccdd3 x4072eb60 1 x4072eb60 1}\n       {x42d00000 xc2e56b08 x406355c0 1 x406355c0 1}\n       {x42d20000 xc2de9877 x405b2620 1 x405b2620 1}\n       {x42d40000 xc2d7b8a6 x4051b790 1 x4051b790 1}\n       {x42d60000 xc2d17cfe x404c5c60 1 x404c5c60 1}\n       {x42d80000 xc2caf2e0 x404c4db0 1 x404c4db0 1}\n       {x42da0000 xc2c4b823 x404b1440 1 x404b1440 1}\n       {x42dc0000 xc2be419c x405b3100 1 x405b3100 1}\n       {x42de0000 xc2b70513 x406e5e40 1 x406e5e40 1}\n       {x42e00000 xc2af5bb8 x4079afd0 1 x4079afd0 1}\n       {x42e20000 xc2a76a16 x40814a50 1 x40814a50 1}\n       {x42e40000 xc29f326e x4085f0b8 1 x4085f0b8 1}\n       {x42e60000 xc296abff x4089b160 1 x4089b160 1}\n       {x42e80000 xc28dfc42 x4093c2a8 1 x4093c2a8 1}\n       {x42ea0000 xc28433aa x40a2d0d4 1 x40a2d0d4 1}\n       {x42ec0000 xc273444f x40b7e96c 1 x40b7e96c 1}\n       {x42ee0000 xc25a6cf9 x40cce508 1 x40cce508 1}\n       {x42f00000 xc2400b0d x40e06b28 1 x40e06b28 1}\n       {x42f20000 xc222522f x40f3e758 1 x40f3e758 1}\n       {x42f40000 xc2031137 x41007ae6 1 x41007ae6 1}\n       {x42f60000 xc1c42978 x4101ef1b 1 x4101ef1b 1}\n       {x42f80000 xc1843353 x4102b93f 1 x4102b93f 1}\n       {x42fa0000 xc102e072 x41043353 1 x41043353 1}\n       {x42fc0000 0 x4103d2c2 1 x4103d2c2 1}\n       {x42fe0000 x4104c513 x41032f25 1 x41032f25 1}\n       {x43000000 x41832f25 x410022e8 1 x410022e8 1}\n       {x43010000 x41c28572 x40f7a05a 1 x40f7a05a 1}\n       {x43020000 x41feff52 x40f0454c 1 x40f0454c 1}\n       {x43030000 x421d540c x40e45780 1 x40e45780 1}\n       {x43040000 x42389589 x40cb99bc 1 x40cb99bc 1}\n       {x43050000 x42503a7b x40b430cc 1 x40b430cc 1}\n       {x43060000 x4265a1bc x40a13e94 1 x40a13e94 1}\n       {x43070000 x42788a20 x408fea78 1 x408fea78 1}\n       {x43080000 x4284ce2d x40825030 1 x40825030 1}\n       {x43090000 x428c8f16 x406d50b0 1 x406d50b0 1}\n       {x430a0000 x4293a338 x405eeea0 1 x405eeea0 1}\n       {x430b0000 x429a7e00 x404f3e10 1 x404f3e10 1}\n       {x430c0000 x42a09719 x403d3510 1 x403d3510 1}\n       {x430d0000 x42a65151 x40412b30 1 x40412b30 1}\n       {x430e0000 x42aca9cc x404bbce0 1 x404bbce0 1}\n       {x430f0000 x42b30d1f x4058c780 1 x4058c780 1}\n       {x43100000 x42ba3644 x40660c00 1 x40660c00 1}\n       {x43110000 x42c16ddf x405fbb50 1 x405fbb50 1}\n       {x43120000 x42c831f9 x4056a550 1 x4056a550 1}\n       {x43130000 x42ced834 x4043a900 1 x4043a900 1}\n       {x43140000 x42d46c89 x40131de0 1 x40131de0 1}\n       {x43150000 x42d80a12 x3fb00c40 1 x3fb00c40 1}\n       {x43160000 x42d9eceb x3f3a1680 1 0 1}}\n      {{x42540000 x44847c10 0 1 xc155ea20 1}\n       {x42580000 x4482c158 xc16c3fc0 1 xc16c3fc0 1}\n       {x425c0000 x4480cb11 xc18193c0 1 xc18193c0 1}\n       {x42600000 x447d6974 xc184a500 1 xc184a500 1}\n       {x42640000 x44794bd2 xc1836550 1 xc1836550 1}\n       {x42680000 x4475331f xc18539e0 1 xc18539e0 1}\n       {x426c0000 x4470f834 xc18bc090 1 xc18bc090 1}\n       {x42700000 x446c7716 xc198de40 1 xc198de40 1}\n       {x42740000 x44676a50 xc1a9dd40 1 xc1a9dd40 1}\n       {x42780000 x4461d942 xc1bb1600 1 xc1bb1600 1}\n       {x427c0000 x445bb8f0 xc1cb09f0 1 xc1cb09f0 1}\n       {x42800000 x445528a3 xc1d3ca00 1 xc1d3ca00 1}\n       {x42820000 x444e7c50 xc1d1e7a0 1 xc1d1e7a0 1}\n       {x42840000 x44480a29 xc1ce91f0 1 xc1ce91f0 1}\n       {x42860000 x44419331 xc1d0c0c0 1 xc1d0c0c0 1}\n       {x42880000 x443afe1d xc1d5b1b0 1 xc1d5b1b0 1}\n       {x428a0000 x44343816 xc1ce3260 1 xc1ce3260 1}\n       {x428c0000 x442e1af7 xc1b6c890 1 xc1b6c890 1}\n       {x428e0000 x4428cb8d xc1af02a0 1 xc1af02a0 1}\n       {x42900000 x44232acd xc1b93eb0 1 xc1b93eb0 1}\n       {x42920000 x441d37a2 xc1c2e100 1 xc1c2e100 1}\n       {x42940000 x4416fcbd xc1c64770 1 xc1c64770 1}\n       {x42960000 x4410d32b xc1c407e0 1 xc1c407e0 1}\n       {x42980000 x440abc3f xc1b7f450 1 xc1b7f450 1}\n       {x429a0000 x440553e6 xc1b1a7e0 1 xc1b1a7e0 1}\n       {x429c0000 x43ff4382 xc1b5fbd0 1 xc1b5fbd0 1}\n       {x429e0000 x43f3e852 xc1b27d10 1 xc1b27d10 1}\n       {x42a00000 x43e8f3e0 xc1b1c850 1 xc1b1c850 1}\n       {x42a20000 x43ddaf48 xc1b28330 1 xc1b28330 1}\n       {x42a40000 x43d2a37a xc1b24bd8 1 xc1b24bd8 1}\n       {x42a60000 x43c765cd xc1b4e030 1 xc1b4e030 1}\n       {x42a80000 x43bc0774 xc1b50e70 1 xc1b50e70 1}\n       {x42aa0000 x43b0c3ff xc1b154c0 1 xc1b154c0 1}\n       {x42ac0000 x43a5dcdc xc1a9f778 1 xc1a9f778 1}\n       {x42ae0000 x439b8510 xc1a4c838 1 xc1a4c838 1}\n       {x42b00000 x439143d5 xc1a67490 1 xc1a67490 1}\n       {x42b20000 x4386b67e xc1a731a0 1 xc1a731a0 1}\n       {x42b40000 x4378bb42 xc1a854c8 1 xc1a854c8 1}\n       {x42b60000 x436357ca xc1a86cd0 1 xc1a86cd0 1}\n       {x42b80000 x434ea00e xc1a4f6fc 1 xc1a4f6fc 1}\n       {x42ba0000 x433a1a0b xc19ec504 1 xc19ec504 1}\n       {x42bc0000 x4326eecd xc1958b20 1 xc1958b20 1}\n       {x42be0000 x4314b743 xc18c7dcc 1 xc18c7dcc 1}\n       {x42c00000 x4303cf5a xc182cf10 1 xc182cf10 1}\n       {x42c20000 x42e806fe xc172eb68 1 xc172eb68 1}\n       {x42c40000 x42cae3da xc1653a08 1 xc1653a08 1}\n       {x42c60000 x42aeb87c xc1605bac 1 xc1605bac 1}\n       {x42c80000 x4292ccef xc162f628 1 xc162f628 1}\n       {x42ca0000 x426bf5e4 xc167234a 1 xc167234a 1}\n       {x42cc0000 x42320839 xc1649c90 1 xc1649c90 1}\n       {x42ce0000 x41f34f38 xc157e4dd 1 xc157e4dd 1}\n       {x42d00000 x418c2b95 xc143ffeb 1 xc143ffeb 1}\n       {x42d20000 x40bd3d34 xc136250c 1 xc136250c 1}\n       {x42d40000 xc0a7e5dd xc1261b16 1 xc1261b16 1}\n       {x42d60000 xc16d9792 xc10eac9b 1 xc10eac9b 1}\n       {x42d80000 xc1b8a612 xc0f8287a 1 xc0f8287a 1}\n       {x42da0000 xc1f2e006 xc0da5f7c 1 xc0da5f7c 1}\n       {x42dc0000 xc212eae8 xc0b5e610 1 xc0b5e610 1}\n       {x42de0000 xc226e987 xc080fcc8 1 xc080fcc8 1}\n       {x42e00000 xc2332a1a xc00b18e8 1 xc00b18e8 1}\n       {x42e20000 xc2384ca4 -}\n       {x42e40000 xc237678b x3f2bd2c0 1 x3f2bd2c0 1}\n       {x42e60000 xc2316c28 x400c4e88 1 x400c4e88 1}\n       {x42e80000 xc225ddba x4050e328 1 x4050e328 1}\n       {x42ea0000 xc2174fc3 x4068f540 1 x4068f540 1}\n       {x42ec0000 xc208bf12 x406a96f0 1 x406a96f0 1}\n       {x42ee0000 xc1f3f9ca x40709bf8 1 x40709bf8 1}\n       {x42f00000 xc1d55726 x406ce438 1 x406ce438 1}\n       {x42f20000 xc1b8c0bc x40663064 1 x40663064 1}\n       {x42f40000 xc19bcb0d x4072b2e4 1 x4072b2e4 1}\n       {x42f60000 xc1782806 x408a5bcc 1 x408a5bcc 1}\n       {x42f80000 xc12d3a4e x409a9d98 1 x409a9d98 1}\n       {x42fa0000 xc0bb14dd x40ad3a4e 1 x40ad3a4e 1}\n       {x42fc0000 0 x40c2dd3e 1 x40c2dd3e 1}\n       {x42fe0000 x40caa59f x40c35fc6 1 x40c35fc6 1}\n       {x43000000 x41435fc6 x40c07d0e 1 x40c07d0e 1}\n       {x43010000 x4192e7ef x40cafdbc 1 x40cafdbc 1}\n       {x43020000 x41c72ec1 x40da5e86 1 x40da5e86 1}\n       {x43030000 x42000b99 x40e366a2 1 x40e366a2 1}\n       {x43040000 x421c7109 x40e811ec 1 x40e811ec 1}\n       {x43050000 x423a1014 x40ee4b0c 1 x40ee4b0c 1}\n       {x43060000 x425803cc x40f79c2c 1 x40f79c2c 1}\n       {x43070000 x4277f71f x41045808 1 x41045808 1}\n       {x43080000 x428d17e8 x410c7d1e 1 x410c7d1e 1}\n       {x43090000 x429f1ad7 x410dc8c0 1 x410dc8c0 1}\n       {x430a0000 x42b08a18 x410a10bc 1 x410a10bc 1}\n       {x430b0000 x42c19f06 x41063280 1 x41063280 1}\n       {x430c0000 x42d216b8 x410846f4 1 x410846f4 1}\n       {x430d0000 x42e3b0c3 x410dd1c4 1 x410dd1c4 1}\n       {x430e0000 x42f58b29 x410cca3c 1 x410cca3c 1}\n       {x430f0000 x430371a9 x410abf34 1 x410abf34 1}\n       {x43100000 x430c1d7b x41083b50 1 x41083b50 1}\n       {x43110000 x43147913 x41039630 1 x41039630 1}\n       {x43120000 x431c9041 x40f6d910 1 x40f6d910 1}\n       {x43130000 x4323e6a4 x40e57730 1 x40e57730 1}\n       {x43140000 x432ae7b4 x40d50fa0 1 x40d50fa0 1}\n       {x43150000 x4331379e x40a31d60 1 x40a31d60 1}\n       {x43160000 x4335198a x40519b20 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke17 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dc19aa x4436d604 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke18 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44dc19aa x4436d604 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc30f5199 0 1 x40801f88 1}\n       {x42580000 xc30b175f x409596b0 1 x409596b0 1}\n       {x425c0000 xc305f82e x40ada7e0 1 x40ada7e0 1}\n       {x42600000 xc3003ce1 x40ba6b58 1 x40ba6b58 1}\n       {x42640000 xc2f4a2f1 x40d3a5e8 1 x40d3a5e8 1}\n       {x42680000 xc2e60505 x40de1f58 1 x40de1f58 1}\n       {x426c0000 xc2d8df06 x40b3d128 1 x40b3d128 1}\n       {x42700000 xc2cf8ae0 x40afde70 1 x40afde70 1}\n       {x42740000 xc2c2e338 x40be9238 1 x40be9238 1}\n       {x42780000 xc2b7b899 x40bacc98 1 x40bacc98 1}\n       {x427c0000 xc2ab89a5 x40c1d8b0 1 x40c1d8b0 1}\n       {x42800000 xc29f7d83 x40c263e0 1 x40c263e0 1}\n       {x42820000 xc2933d29 x40b08bb8 1 x40b08bb8 1}\n       {x42840000 xc2896c0c x405c0ba0 1 x405c0ba0 1}\n       {x42860000 xc2857c6f x3fedc860 1 x3fedc860 1}\n       {x42880000 xc281fdc9 x40174198 1 x40174198 1}\n       {x428a0000 xc27810ab x40171278 1 x40171278 1}\n       {x428c0000 xc2711943 x405129d8 1 x405129d8 1}\n       {x428e0000 xc25deb70 x409da4a8 1 x409da4a8 1}\n       {x42900000 xc249b019 x40a0d490 1 x40a0d490 1}\n       {x42920000 xc235b64c x409c0e40 1 x409c0e40 1}\n       {x42940000 xc222ac89 x4084366c 1 x4084366c 1}\n       {x42960000 xc214a8b1 x405ad100 1 x405ad100 1}\n       {x42980000 xc2075269 x40622394 1 x40622394 1}\n       {x429a0000 xc1f0c87d x40564858 1 x40564858 1}\n       {x429c0000 xc1d912bc x3fe45f78 1 x3fe45f78 1}\n       {x429e0000 xc1d43c8e x3f558aa0 1 x3f558aa0 1}\n       {x42a00000 xc1cbba12 x3f88aff0 1 x3f88aff0 1}\n       {x42a20000 xc1c32690 x3fa76e38 1 x3fa76e38 1}\n       {x42a40000 xc1b6cc4b x3fbf7788 1 x3fbf7788 1}\n       {x42a60000 xc1ab379f x3f843100 1 x3f843100 1}\n       {x42a80000 xc1a6462b x3efc2400 1 x3efc2400 1}\n       {x42aa0000 xc1a3567f -}\n       {x42ac0000 xc1a50d7f xbf24a000 1 xbf24a000 1}\n       {x42ae0000 xc1af0565 xbfd6eab0 1 xbfd6eab0 1}\n       {x42b00000 xc1bfead5 xc01c943c 1 xc01c943c 1}\n       {x42b20000 xc1d62a74 xc02a3ea0 1 xc02a3ea0 1}\n       {x42b40000 xc1ea7a7d xc02b0028 1 xc02b0028 1}\n       {x42b60000 xc200753f xc02529ac 1 xc02529ac 1}\n       {x42b80000 xc209e274 xc014ecd0 1 xc014ecd0 1}\n       {x42ba0000 xc21312d9 xc012ca80 1 xc012ca80 1}\n       {x42bc0000 xc21c3bc4 xc01b1b08 1 xc01b1b08 1}\n       {x42be0000 xc226763a xc03ad5d8 1 xc03ad5d8 1}\n       {x42c00000 xc233967f xc0412ce0 1 xc0412ce0 1}\n       {x42c20000 xc23e9bd6 xbec8da80 1 xbec8da80 1}\n       {x42c40000 xc23f21bd -}\n       {x42c60000 xc23eab10 x3df1ed00 1 x3df1ed00 1}\n       {x42c80000 xc23e2fd0 x3e838340 1 x3e838340 1}\n       {x42ca0000 xc23c9d03 x3eb8e1c0 1 x3eb8e1c0 1}\n       {x42cc0000 xc23b4c49 x3e4c4480 1 x3e4c4480 1}\n       {x42ce0000 xc23b047a x3e407880 1 x3e407880 1}\n       {x42d00000 xc239cb58 -}\n       {x42d20000 xc23a512d -}\n       {x42d40000 xc23a3cb2 -}\n       {x42d60000 xc23ac348 -}\n       {x42d80000 xc2391aa0 x3ef50340 1 x3ef50340 1}\n       {x42da0000 xc236ef3b x3f10e8c0 1 x3f10e8c0 1}\n       {x42dc0000 xc234935a x3f306560 1 x3f306560 1}\n       {x42de0000 xc2316c10 x3f838810 1 x3f838810 1}\n       {x42e00000 xc22c5ad9 x3fb24ea0 1 x3fb24ea0 1}\n       {x42e20000 xc2264726 x3fb51530 1 x3fb51530 1}\n       {x42e40000 xc2210986 x3fdc25d0 1 x3fdc25d0 1}\n       {x42e60000 xc21884c9 x3ff4df00 1 x3ff4df00 1}\n       {x42e80000 xc211bb96 x4006f168 1 x4006f168 1}\n       {x42ea0000 xc207a69c x40210a08 1 x40210a08 1}\n       {x42ec0000 xc1fb34aa x402fa3d8 1 x402fa3d8 1}\n       {x42ee0000 xc1e36442 x403a8908 1 x403a8908 1}\n       {x42f00000 xc1cc9268 x4057a134 1 x4057a134 1}\n       {x42f20000 xc1ad7bf5 x407f68a0 1 x407f68a0 1}\n       {x42f40000 xc18cb840 x4083cd81 1 x4083cd81 1}\n       {x42f60000 xc1572a69 x4084d301 1 x4084d301 1}\n       {x42f80000 xc1149d7f x4090c331 1 x4090c331 1}\n       {x42fa0000 xc08cce70 x40949d7f 1 x40949d7f 1}\n       {x42fc0000 0 x407d26d4 1 x407d26d4 1}\n       {x42fe0000 x4060b0c7 x40734591 1 x40734591 1}\n       {x43000000 x40f34591 x4079af22 1 x4079af22 1}\n       {x43010000 x413503c3 x4065eb57 1 x4065eb57 1}\n       {x43020000 x416c9874 x40652982 1 x40652982 1}\n       {x43030000 x4193cc42 x40563404 1 x40563404 1}\n       {x43040000 x41abd93b x404214fc 1 x404214fc 1}\n       {x43050000 x41c45181 x40305230 1 x40305230 1}\n       {x43060000 x41d7edc7 x40158cc4 1 x40158cc4 1}\n       {x43070000 x41e9b4b2 x3fe38798 1 x3fe38798 1}\n       {x43080000 x41f45eba x3fa9dfd0 1 x3fa9dfd0 1}\n       {x43090000 x41fef0ac x3fbc5530 1 x3fbc5530 1}\n       {x430a0000 x4205f4b0 x3fc51570 1 x3fc51570 1}\n       {x430b0000 x420bc9ad x3fb9d0b0 1 x3fb9d0b0 1}\n       {x430c0000 x421191bb x3fb54a20 1 x3fb54a20 1}\n       {x430d0000 x42171e4f x3fb4dd60 1 x3fb4dd60 1}\n       {x430e0000 x421cdf91 x3fcefc60 1 x3fcefc60 1}\n       {x430f0000 x42240e15 x3fe414d0 1 x3fe414d0 1}\n       {x43100000 x422b20de x3fe84610 1 x3fe84610 1}\n       {x43110000 x42329276 x3fe72030 1 x3fe72030 1}\n       {x43120000 x423992e1 x3fd85510 1 x3fd85510 1}\n       {x43130000 x424017c7 x3fb63800 1 x3fb63800 1}\n       {x43140000 x4244f661 x3f4a6320 1 x3f4a6320 1}\n       {x43150000 x42466ae0 -}\n       {x43160000 x42436fc1 xbf8f15d0 1 0 1}}\n      {{x42540000 x444110e4 0 1 xc11334f0 1}\n       {x42580000 x443ec781 xc110a060 1 xc110a060 1}\n       {x425c0000 x443c8be1 xc1124720 1 xc1124720 1}\n       {x42600000 x443a3548 xc12de020 1 xc12de020 1}\n       {x42640000 x44371ce0 xc1564280 1 xc1564280 1}\n       {x42680000 x44338334 xc16d08a0 1 xc16d08a0 1}\n       {x426c0000 x442fb49b xc1539e20 1 xc1539e20 1}\n       {x42700000 x442ce643 xc1421b40 1 xc1421b40 1}\n       {x42740000 x4429a3c1 xc1585620 1 xc1585620 1}\n       {x42780000 x44262392 xc1656c40 1 xc1656c40 1}\n       {x427c0000 x4422785f xc17007c0 1 xc17007c0 1}\n       {x42800000 x441ea354 xc179bac0 1 xc179bac0 1}\n       {x42820000 x441aaa89 xc17d6cc0 1 xc17d6cc0 1}\n       {x42840000 x4416b7ee xc1634380 1 xc1634380 1}\n       {x42860000 x4413906d xc145cb00 1 xc145cb00 1}\n       {x42880000 x44108996 xc14775c0 1 xc14775c0 1}\n       {x428a0000 x440d54bf xc149a200 1 xc149a200 1}\n       {x428c0000 x440a3c86 xc16925a0 1 xc16925a0 1}\n       {x428e0000 x44060b92 xc1894950 1 xc1894950 1}\n       {x42900000 x4401a7f1 xc18ad658 1 xc18ad658 1}\n       {x42920000 x43fabc59 xc1892a28 1 xc1892a28 1}\n       {x42940000 x43f22a9d xc183d430 1 xc183d430 1}\n       {x42960000 x43ea41d3 xc1764650 1 xc1764650 1}\n       {x42980000 x43e2c638 xc169fe60 1 xc169fe60 1}\n       {x429a0000 x43dba1ed xc157f700 1 xc157f700 1}\n       {x429c0000 x43d546c8 xc14c4220 1 xc14c4220 1}\n       {x429e0000 x43ceddcb xc14e6710 1 xc14e6710 1}\n       {x42a00000 x43c86057 xc1558d30 1 xc1558d30 1}\n       {x42a20000 x43c184f8 xc1677550 1 xc1677550 1}\n       {x42a40000 x43b9e902 xc176c5b0 1 xc176c5b0 1}\n       {x42a60000 x43b2189d xc177af50 1 xc177af50 1}\n       {x42a80000 x43aa6e0d xc1754cd0 1 xc1754cd0 1}\n       {x42aa0000 x43a2c3d0 xc16d79e0 1 xc16d79e0 1}\n       {x42ac0000 x439b966f xc15d7b60 1 xc15d7b60 1}\n       {x42ae0000 x4394ec1a xc155e070 1 xc155e070 1}\n       {x42b00000 x438e3868 xc154bc60 1 xc154bc60 1}\n       {x42b20000 x4387a054 xc1586990 1 xc1586990 1}\n       {x42b40000 x4380b1cf xc15dec58 1 xc15dec58 1}\n       {x42b60000 x4373831d xc1621520 1 xc1621520 1}\n       {x42b80000 x436520fa xc165eb50 1 xc165eb50 1}\n       {x42ba0000 x4356c5b3 xc1605df8 1 xc1605df8 1}\n       {x42bc0000 x4349153b xc1528a90 1 xc1528a90 1}\n       {x42be0000 x433c7461 xc13f88b8 1 xc13f88b8 1}\n       {x42c00000 x43312424 xc12db070 1 xc12db070 1}\n       {x42c20000 x4326be53 xc119cfc0 1 xc119cfc0 1}\n       {x42c40000 x431dea2c xc10bc368 1 xc10bc368 1}\n       {x42c60000 x431545e6 xc10a4ef8 1 xc10a4ef8 1}\n       {x42c80000 x430ca04d xc1095960 1 xc1095960 1}\n       {x42ca0000 x43041aba xc1061650 1 xc1061650 1}\n       {x42cc0000 x42f7bb06 xc1012154 1 xc1012154 1}\n       {x42ce0000 x42e7ed1f xc0f88478 1 xc0f88478 1}\n       {x42d00000 x42d8aa77 xc0e7bf20 1 xc0e7bf20 1}\n       {x42d20000 x42caf53b xc0d3c6a8 1 xc0d3c6a8 1}\n       {x42d40000 x42be31a2 xc0c5df18 1 xc0c5df18 1}\n       {x42d60000 x42b23958 xc0c20c88 1 xc0c20c88 1}\n       {x42d80000 x42a5f011 xc0c9b268 1 xc0c9b268 1}\n       {x42da0000 x4299030b xc0d57888 1 xc0d57888 1}\n       {x42dc0000 x428b4100 xc0d76308 1 xc0d76308 1}\n       {x42de0000 x427c2d54 xc0c664f0 1 xc0c664f0 1}\n       {x42e00000 x4264e8c4 xc0a90944 1 xc0a90944 1}\n       {x42e20000 x4251eb03 xc097fcb4 1 xc097fcb4 1}\n       {x42e40000 x423ee997 xc08f4d6c 1 xc08f4d6c 1}\n       {x42e60000 x422e17a8 xc0734620 1 xc0734620 1}\n       {x42e80000 x422080d3 xc0596758 1 xc0596758 1}\n       {x42ea0000 x4212eabd xc0614a58 1 xc0614a58 1}\n       {x42ec0000 x42045788 xc0700530 1 xc0700530 1}\n       {x42ee0000 x41e9d42e xc0736b10 1 xc0736b10 1}\n       {x42f00000 x41cbd44c xc080aef2 1 xc080aef2 1}\n       {x42f20000 x41a97cb5 xc08bc6c0 1 xc08bc6c0 1}\n       {x42f40000 x4185f0ec xc08c453a 1 xc08c453a 1}\n       {x42f60000 x4146b430 xc08a2886 1 xc08a2886 1}\n       {x42f80000 x4101b952 xc087bde6 1 xc087bde6 1}\n       {x42fa0000 x407bd928 xc081b952 1 xc081b952 1}\n       {x42fc0000 0 xc05cb0aa 1 xc05cb0aa 1}\n       {x42fe0000 xc03d882d xc05482d0 1 xc05482d0 1}\n       {x43000000 xc0d482d0 xc05e6e12 1 xc05e6e12 1}\n       {x43010000 xc11e9914 xc04b1b92 1 xc04b1b92 1}\n       {x43020000 xc14fcf31 xc036fb24 1 xc036fb24 1}\n       {x43030000 xc17a16a6 xc01d0f1a 1 xc01d0f1a 1}\n       {x43040000 xc18f2b5f xc01b39a0 1 xc01b39a0 1}\n       {x43050000 xc1a3d9bb xc0166660 1 xc0166660 1}\n       {x43060000 xc1b4c4f7 xc017f1b4 1 xc017f1b4 1}\n       {x43070000 xc1c9d628 xbff54c30 1 xbff54c30 1}\n       {x43080000 xc1d36e7d xbf9d8c48 1 xbf9d8c48 1}\n       {x43090000 xc1dd87b1 xbf904e70 1 xbf904e70 1}\n       {x430a0000 xc1e5784b xbf983f20 1 xbf983f20 1}\n       {x430b0000 xc1f08f95 xbfafb5a0 1 xbfafb5a0 1}\n       {x430c0000 xc1fb6eff xbf64ade0 1 xbf64ade0 1}\n       {x430d0000 xc1feda73 xbf1699f0 1 xbf1699f0 1}\n       {x430e0000 xc2026c4f xbf29bf70 1 xbf29bf70 1}\n       {x430f0000 xc204bb35 xbf2925a0 1 xbf2925a0 1}\n       {x43100000 xc207b57c xbf3dce40 1 xbf3dce40 1}\n       {x43110000 xc20aa9a7 xbf02bae0 1 xbf02bae0 1}\n       {x43120000 xc20bcb53 xbebfd500 1 xbebfd500 1}\n       {x43130000 xc20da8fb xbf1e1a60 1 xbf1e1a60 1}\n       {x43140000 xc210bc26 xbf847690 1 xbf847690 1}\n       {x43150000 xc215f064 xc0119cd8 1 xc0119cd8 1}\n       {x43160000 xc222efc1 xc06f224c 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke19 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438eadb2 x4394cf7d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke20 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438eadb2 x4394cf7d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc30fb4fb 0 1 x40817050 1}\n       {x42580000 xc30b5918 x409f9480 1 x409f9480 1}\n       {x425c0000 xc305bbb3 x40c60270 1 x40c60270 1}\n       {x42600000 xc2fdf1e2 x40e04158 1 x40e04158 1}\n       {x42640000 xc2ef6f3b x40e3c238 1 x40e3c238 1}\n       {x42680000 xc2e1799b x40e07220 1 x40e07220 1}\n       {x426c0000 xc2d360f7 x40e1d090 1 x40e1d090 1}\n       {x42700000 xc2c53f89 x40e4f238 1 x40e4f238 1}\n       {x42740000 xc2b6c2b0 x40ecda88 1 x40ecda88 1}\n       {x42780000 xc2a7a438 x40ef1370 1 x40ef1370 1}\n       {x427c0000 xc298e042 x40f96600 1 x40f96600 1}\n       {x42800000 xc2887778 x4103ef70 1 x4103ef70 1}\n       {x42820000 xc26fc8cc x40fac1a8 1 x40fac1a8 1}\n       {x42840000 xc2523e86 x40ebc78c 1 x40ebc78c 1}\n       {x42860000 xc234d6e9 x40b43b44 1 x40b43b44 1}\n       {x42880000 xc2252fb5 x40bad6f4 1 x40bad6f4 1}\n       {x428a0000 xc206212c x40a4da0c 1 x40a4da0c 1}\n       {x428c0000 xc1f7f264 x4070c2ac 1 x4070c2ac 1}\n       {x428e0000 xc1d011ad x40a5b0f8 1 x40a5b0f8 1}\n       {x42900000 xc1a519e8 x40844fd2 1 x40844fd2 1}\n       {x42920000 xc18de9c4 x3fdec030 1 x3fdec030 1}\n       {x42940000 xc18941e2 x3ec5dee0 1 x3ec5dee0 1}\n       {x42960000 xc187bacd x3ea249e0 1 x3ea249e0 1}\n       {x42980000 xc1842f93 x3f3b7000 1 x3f3b7000 1}\n       {x429a0000 xc178079a x3f32a2e0 1 x3f32a2e0 1}\n       {x429c0000 xc1720aca -}\n       {x429e0000 xc1739679 -}\n       {x42a00000 xc1735289 x3d4bd000 1 x3d4bd000 1}\n       {x42a20000 xc1714e8d x3eba4de0 1 x3eba4de0 1}\n       {x42a40000 xc167adab x3fc837f8 1 x3fc837f8 1}\n       {x42a60000 xc13f408f x3d93de00 1 x3d93de00 1}\n       {x42a80000 xc13eddfb -}\n       {x42aa0000 xc1476fa5 xbf5f50b0 1 xbf5f50b0 1}\n       {x42ac0000 xc15ac811 xbfb1028c 1 xbfb1028c 1}\n       {x42ae0000 xc173b048 xbff9e034 1 xbff9e034 1}\n       {x42b00000 xc18ca00f xc0237404 1 xc0237404 1}\n       {x42b20000 xc1a2b525 xc02d1118 1 xc02d1118 1}\n       {x42b40000 xc1b7e455 xc027af2c 1 xc027af2c 1}\n       {x42b60000 xc1cca0f0 xc0201d44 1 xc0201d44 1}\n       {x42b80000 xc1dfeba6 xc01c03ac 1 xc01c03ac 1}\n       {x42ba0000 xc1f3a1db xc022a870 1 xc022a870 1}\n       {x42bc0000 xc2044ae1 xc026ac44 1 xc026ac44 1}\n       {x42be0000 xc20ea676 xc0290558 1 xc0290558 1}\n       {x42c00000 xc2196b8c xc02deb00 1 xc02deb00 1}\n       {x42c20000 xc22463d6 xbca1b800 1 xbca1b800 1}\n       {x42c40000 xc2246a93 -}\n       {x42c60000 xc22335b7 x3edf8e40 1 x3edf8e40 1}\n       {x42c80000 xc220ec5a x3f3360c0 1 x3f3360c0 1}\n       {x42ca0000 xc21d9ab1 x3f6c26e0 1 x3f6c26e0 1}\n       {x42cc0000 xc2198b23 x3fd2f9f0 1 x3fd2f9f0 1}\n       {x42ce0000 xc2106b12 x3fd62470 1 x3fd62470 1}\n       {x42d00000 xc20c28dc x3e702a00 1 x3e702a00 1}\n       {x42d20000 xc20bd8ce -}\n       {x42d40000 xc20bf2dd xbd8ed700 1 xbd8ed700 1}\n       {x42d60000 xc20c67a5 xbe4b7400 1 xbe4b7400 1}\n       {x42d80000 xc20d89c5 xbe83f000 1 xbe83f000 1}\n       {x42da0000 xc20e7765 xbe27f980 1 xbe27f980 1}\n       {x42dc0000 xc20ed9b8 -}\n       {x42de0000 xc20e83ea x3e2b5900 1 x3e2b5900 1}\n       {x42e00000 xc20d8306 x3ea63700 1 x3ea63700 1}\n       {x42e20000 xc20beb0e x3f0d1b40 1 x3f0d1b40 1}\n       {x42e40000 xc2091a2c x3f4a3c60 1 x3f4a3c60 1}\n       {x42e60000 xc205992b x3f7595a0 1 x3f7595a0 1}\n       {x42e80000 xc2016d7f x3f953eb8 1 x3f953eb8 1}\n       {x42ea0000 xc1f88a7f x3fc5bd30 1 x3fc5bd30 1}\n       {x42ec0000 xc1ea2358 x40021638 1 x40021638 1}\n       {x42ee0000 xc1d804f1 x402ac504 1 x402ac504 1}\n       {x42f00000 xc1bf7217 x404e9078 1 x404e9078 1}\n       {x42f20000 xc1a460d3 x40663da0 1 x40663da0 1}\n       {x42f40000 xc185e2af x407d1068 1 x407d1068 1}\n       {x42f60000 xc14a3972 x4084f830 1 x4084f830 1}\n       {x42f80000 xc106cd2e x408637c0 1 x408637c0 1}\n       {x42fa0000 xc0880364 x4086cd2e 1 x4086cd2e 1}\n       {x42fc0000 0 x408c0500 1 x408c0500 1}\n       {x42fe0000 x4090069c x40915f9e 1 x40915f9e 1}\n       {x43000000 x41115f9e x4091bd19 1 x4091bd19 1}\n       {x43010000 x4159c067 x408c5d38 1 x408c5d38 1}\n       {x43020000 x418ede6b x40864783 1 x40864783 1}\n       {x43030000 x41b003f5 x40800cfa 1 x40800cfa 1}\n       {x43040000 x41cee4e8 x40685640 1 x40685640 1}\n       {x43050000 x41ea1985 x405fa1b0 1 x405fa1b0 1}\n       {x43060000 x420366aa x40775564 1 x40775564 1}\n       {x43070000 x4213f76f x404736b0 1 x404736b0 1}\n       {x43080000 x421c4d80 x3feee040 1 x3feee040 1}\n       {x43090000 x4222e573 x3fda3f00 1 x3fda3f00 1}\n       {x430a0000 x4229f170 x3fde9820 1 x3fde9820 1}\n       {x430b0000 x4230cef5 x3fd735c0 1 x3fd735c0 1}\n       {x430c0000 x423764cc x3fcdd280 1 x3fcdd280 1}\n       {x430d0000 x423dac1d x3fd13d10 1 x3fd13d10 1}\n       {x430e0000 x4244789d x3ff05ef0 1 x3ff05ef0 1}\n       {x430f0000 x424cb20c x4008a740 1 x4008a740 1}\n       {x43100000 x42558d85 x401227f0 1 x401227f0 1}\n       {x43110000 x425ef70a x4017a7d0 1 x4017a7d0 1}\n       {x43120000 x4268827f x40125e30 1 x40125e30 1}\n       {x43130000 x427142d0 x3ff6cdf0 1 x3ff6cdf0 1}\n       {x43140000 x4277ef5e x3f9400c0 1 x3f9400c0 1}\n       {x43150000 x427a82dc -}\n       {x43160000 x4279138f xbf09bce0 1 0 1}}\n      {{x42540000 x4480848c 0 1 xc155e620 1}\n       {x42580000 x447d93ae xc16c4340 1 xc16c4340 1}\n       {x425c0000 x4479a6fe xc1819c50 1 xc1819c50 1}\n       {x42600000 x447579e9 xc184a9b0 1 xc184a9b0 1}\n       {x42640000 x44715c63 xc1836f30 1 xc1836f30 1}\n       {x42680000 x446d42f6 xc1854d10 1 xc1854d10 1}\n       {x426c0000 x44690792 xc18bc9c0 1 xc18bc9c0 1}\n       {x42700000 x4464865a xc198e300 1 xc198e300 1}\n       {x42740000 x445f7962 xc1a9dbc0 1 xc1a9dbc0 1}\n       {x42780000 x4459e89e xc1bb0a50 1 xc1bb0a50 1}\n       {x427c0000 x4453c8bd xc1cc7cd0 1 xc1cc7cd0 1}\n       {x42800000 x444d20d1 xc1d9e490 1 xc1d9e490 1}\n       {x42820000 x44462a74 xc1ddc660 1 xc1ddc660 1}\n       {x42840000 x443f446b xc1de7460 1 xc1de7460 1}\n       {x42860000 x4438432e xc1d3ee90 1 xc1d3ee90 1}\n       {x42880000 x44320582 xc1d54620 1 xc1d54620 1}\n       {x428a0000 x442aeecc xc1cdffe0 1 xc1cdffe0 1}\n       {x428c0000 x44252584 xc1b99040 1 xc1b99040 1}\n       {x428e0000 x441f55c8 xc1beaa90 1 xc1beaa90 1}\n       {x42900000 x44193adb xc1c41710 1 xc1c41710 1}\n       {x42920000 x44131457 xc1be6840 1 xc1be6840 1}\n       {x42940000 x440d5457 xc1b7d5e0 1 xc1b7d5e0 1}\n       {x42960000 x440796f9 xc1b68290 1 xc1b68290 1}\n       {x42980000 x4401ec2e xc1afdd90 1 xc1afdd90 1}\n       {x429a0000 x43f93240 xc1a8ea70 1 xc1a8ea70 1}\n       {x429c0000 x43eebb0e xc1a42ca0 1 xc1a42ca0 1}\n       {x429e0000 x43e4acac xc1a0f620 1 xc1a0f620 1}\n       {x42a00000 x43da9c4a xc1a180c8 1 xc1a180c8 1}\n       {x42a20000 x43d07c93 xc1a158d8 1 xc1a158d8 1}\n       {x42a40000 x43c6712f xc1983cf0 1 xc1983cf0 1}\n       {x42a60000 x43bd74f5 xc19703c8 1 xc19703c8 1}\n       {x42a80000 x43b390b6 xc1a3d370 1 xc1a3d370 1}\n       {x42aa0000 x43a8fa87 xc1a18138 1 xc1a18138 1}\n       {x42ac0000 x439f608f xc19adde0 1 xc19adde0 1}\n       {x42ae0000 x43959ecb xc199cf40 1 xc199cf40 1}\n       {x42b00000 x438c26a7 xc19739f0 1 xc19739f0 1}\n       {x42b20000 x4382b78d xc196b5e8 1 xc196b5e8 1}\n       {x42b40000 x43729fd4 xc1970c40 1 xc1970c40 1}\n       {x42b60000 x435fac0a xc19838d8 1 xc19838d8 1}\n       {x42b80000 x434c919e xc1966e4c 1 xc1966e4c 1}\n       {x42ba0000 x433a1077 xc18fb2e4 1 xc18fb2e4 1}\n       {x42bc0000 x4328a4e5 xc186a640 1 xc186a640 1}\n       {x42be0000 x431866e7 xc1787968 1 xc1787968 1}\n       {x42c00000 x430995b8 xc1639874 1 xc1639874 1}\n       {x42c20000 x42f7e7b1 xc14e9c08 1 xc14e9c08 1}\n       {x42c40000 x42df846e xc141ed74 1 xc141ed74 1}\n       {x42c60000 x42c76c54 xc14108f0 1 xc14108f0 1}\n       {x42c80000 x42af4232 xc142e4d0 1 xc142e4d0 1}\n       {x42ca0000 x4296b320 xc1413e10 1 xc1413e10 1}\n       {x42cc0000 x427de55c xc122c3da 1 xc122c3da 1}\n       {x42ce0000 x425c0453 xc10f455e 1 xc10f455e 1}\n       {x42d00000 x423642ad xc11f2510 1 xc11f2510 1}\n       {x42d20000 x420c71cb xc11c1210 1 xc11c1210 1}\n       {x42d40000 x41d0734a xc1085dc8 1 xc1085dc8 1}\n       {x42d60000 x419085ce xc0ec9331 1 xc0ec9331 1}\n       {x42d80000 x41345363 xc0d04f09 1 xc0d04f09 1}\n       {x42da0000 x40a17926 xc0c17571 1 xc0c17571 1}\n       {x42dc0000 xbf5220e5 xc0b1a962 1 xc0b1a962 1}\n       {x42de0000 xc0c1d99d xc091326a 1 xc091326a 1}\n       {x42e00000 xc11e5478 xc04d72df 1 xc04d72df 1}\n       {x42e20000 xc147a63e xc0006fa8 1 xc0006fa8 1}\n       {x42e40000 xc15e8c4c xbf83c258 1 xbf83c258 1}\n       {x42e60000 xc16896d4 -}\n       {x42e80000 xc160740a x3f5d21d8 1 x3f5d21d8 1}\n       {x42ea0000 xc14cf299 x3f9bc7d4 1 x3f9bc7d4 1}\n       {x42ec0000 xc1398215 x3f9a4164 1 x3f9a4164 1}\n       {x42ee0000 xc1266240 x3f8b8e28 1 x3f8b8e28 1}\n       {x42f00000 xc1169e8b x3f6f5168 1 x3f6f5168 1}\n       {x42f20000 xc1087813 x3f6dd08c 1 x3f6dd08c 1}\n       {x42f40000 xc0f1c8f3 x3f8c7c3c 1 x3f8c7c3c 1}\n       {x42f60000 xc0cab208 x3fb77f3a 1 x3fb77f3a 1}\n       {x42f80000 xc0960956 x3fef8286 1 x3fef8286 1}\n       {x42fa0000 xc025e18a x40160956 1 x40160956 1}\n       {x42fc0000 0 x402de325 1 x402de325 1}\n       {x42fe0000 x4035e4c0 x402e37eb 1 x402e37eb 1}\n       {x43000000 x40ae37eb x4026508c 1 x4026508c 1}\n       {x43010000 x4100a176 x40312303 1 x40312303 1}\n       {x43020000 x412fad77 x4041de7c 1 x4041de7c 1}\n       {x43030000 x416190b4 x404e9e06 1 x404e9e06 1}\n       {x43040000 x418b7e3d x40599774 1 x40599774 1}\n       {x43050000 x41a72e37 x40806f08 1 x40806f08 1}\n       {x43060000 x41cbb5c1 x40b1b89a 1 x40b1b89a 1}\n       {x43070000 x42000542 x40b658aa 1 x40b658aa 1}\n       {x43080000 x4213710b x409d5194 1 x409d5194 1}\n       {x43090000 x422759a7 x40a0caa4 1 x40a0caa4 1}\n       {x430a0000 x423ba3b4 x40a01da0 1 x40a01da0 1}\n       {x430b0000 x424f610f x409ee160 1 x409ee160 1}\n       {x430c0000 x42635c0c x40a65a98 1 x40a65a98 1}\n       {x430d0000 x4278f7b5 x40b3f188 1 x40b3f188 1}\n       {x430e0000 x42882c37 x40bb340c 1 x40bb340c 1}\n       {x430f0000 x4293e25c x40b72a80 1 x40b72a80 1}\n       {x43100000 x429f1187 x40b13b00 1 x40b13b00 1}\n       {x43110000 x42aa09bc x40ac6860 1 x40ac6860 1}\n       {x43120000 x42b49e93 x40a54f48 1 x40a54f48 1}\n       {x43130000 x42beb3a5 x4099ec88 1 x4099ec88 1}\n       {x43140000 x42c7dc24 x408adfc8 1 x408adfc8 1}\n       {x43150000 x42d00f9e x4048f1b0 1 x4048f1b0 1}\n       {x43160000 x42d46b3f x3fd96ab0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke21 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d50656 x443abdc3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke22 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d50656 x443abdc3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc332cfd8 0 1 x40868b60 1}\n       {x42580000 xc32e616d x409c5160 1 x409c5160 1}\n       {x425c0000 xc3290ac2 x40b46cc0 1 x40b46cc0 1}\n       {x42600000 xc3231aa1 x40bfb610 1 x40bfb610 1}\n       {x42640000 xc31d0f61 x40d62a60 1 x40d62a60 1}\n       {x42680000 xc315b7fb x40df0290 1 x40df0290 1}\n       {x426c0000 xc30f1f38 x40cf75a0 1 x40cf75a0 1}\n       {x42700000 xc308c0a1 x40cb0f00 1 x40cb0f00 1}\n       {x42740000 xc3026e48 x40be7eb8 1 x40be7eb8 1}\n       {x42780000 xc2f9b16b x40c6d1a8 1 x40c6d1a8 1}\n       {x427c0000 xc2ec025b x40ddc970 1 x40ddc970 1}\n       {x42800000 xc2ddf83d x40d21560 1 x40d21560 1}\n       {x42820000 xc2d1bfaf x40b02108 1 x40b02108 1}\n       {x42840000 xc2c7f41c x409b0bd0 1 x409b0bd0 1}\n       {x42860000 xc2be5e35 x40906800 1 x40906800 1}\n       {x42880000 xc2b5e71c x409293a0 1 x409293a0 1}\n       {x428a0000 xc2ac0bc1 x4099ce28 1 x4099ce28 1}\n       {x428c0000 xc2a2ad57 x409856c8 1 x409856c8 1}\n       {x428e0000 xc29900e8 x409e90a8 1 x409e90a8 1}\n       {x42900000 xc28edb42 x40a0d4f8 1 x40a0d4f8 1}\n       {x42920000 xc284e649 x409b9ee8 1 x409b9ee8 1}\n       {x42940000 xc276ceca x4092d028 1 x4092d028 1}\n       {x42960000 xc2651888 x408cd4a0 1 x408cd4a0 1}\n       {x42980000 xc25399a2 x4081699c 1 x4081699c 1}\n       {x429a0000 xc244be21 x4062a788 1 x4062a788 1}\n       {x429c0000 xc23744b1 x4012ba00 1 x4012ba00 1}\n       {x429e0000 xc23266e1 x3f92c190 1 x3f92c190 1}\n       {x42a00000 xc22e1898 x3f9e25e0 1 x3f9e25e0 1}\n       {x42a20000 xc2288483 x3fc01730 1 x3fc01730 1}\n       {x42a40000 xc2221725 x3fc70190 1 x3fc70190 1}\n       {x42a60000 xc21c146a x3f9aaed0 1 x3f9aaed0 1}\n       {x42a80000 xc2186c38 x3f4bc100 1 x3f4bc100 1}\n       {x42aa0000 xc215b662 -}\n       {x42ac0000 xc2161666 xbe900600 1 xbe900600 1}\n       {x42ae0000 xc219c612 xbf9ecb80 1 xbf9ecb80 1}\n       {x42b00000 xc220031e xbfe954d0 1 xbfe954d0 1}\n       {x42b20000 xc2285b5f xc0031ac8 1 xc0031ac8 1}\n       {x42b40000 xc2306677 xc00545e8 1 xc00545e8 1}\n       {x42b60000 xc239041c xbfffa650 1 xbfffa650 1}\n       {x42b80000 xc24060dc xbff249a0 1 xbff249a0 1}\n       {x42ba0000 xc24828b6 xbff15910 1 xbff15910 1}\n       {x42bc0000 xc24f766d xbffafc60 1 xbffafc60 1}\n       {x42be0000 xc257d87c xc007a6e0 1 xc007a6e0 1}\n       {x42c00000 xc2606b49 xc00dbc28 1 xc00dbc28 1}\n       {x42c20000 xc2699001 -}\n       {x42c40000 xc2670d28 x3f10fd00 1 x3f10fd00 1}\n       {x42c60000 xc2650819 x3f09aa20 1 x3f09aa20 1}\n       {x42c80000 xc262bfd7 x3f246a20 1 x3f246a20 1}\n       {x42ca0000 xc25fe4c8 x3f361a00 1 x3f361a00 1}\n       {x42cc0000 xc25d0f07 x3f180c60 1 x3f180c60 1}\n       {x42ce0000 xc25b2465 x3ef900c0 1 x3ef900c0 1}\n       {x42d00000 xc2592b04 x3edc7940 1 x3edc7940 1}\n       {x42d20000 xc257b280 x3e8d5000 1 x3e8d5000 1}\n       {x42d40000 xc256f5c4 x3e3afd00 1 x3e3afd00 1}\n       {x42d60000 xc2563c86 x3ecbc680 1 x3ecbc680 1}\n       {x42d80000 xc253c6aa x3f2dcaa0 1 x3f2dcaa0 1}\n       {x42da0000 xc250ce31 x3f5ea140 1 x3f5ea140 1}\n       {x42dc0000 xc24cd1a0 x3f8a90f0 1 x3f8a90f0 1}\n       {x42de0000 xc2482522 x3fae14a0 1 x3fae14a0 1}\n       {x42e00000 xc241f056 x3fcc3a60 1 x3fcc3a60 1}\n       {x42e20000 xc23b617c x3feb8f10 1 x3feb8f10 1}\n       {x42e40000 xc2333765 x40092cc8 1 x40092cc8 1}\n       {x42e60000 xc22a3be3 x40111338 1 x40111338 1}\n       {x42e80000 xc22114fe x401baaf8 1 x401baaf8 1}\n       {x42ea0000 xc216c684 x403134f8 1 x403134f8 1}\n       {x42ec0000 xc20aee5f x404da488 1 x404da488 1}\n       {x42ee0000 xc1fa23e6 x40622b60 1 x40622b60 1}\n       {x42f00000 xc1dd51e6 x407b2784 1 x407b2784 1}\n       {x42f20000 xc1bb5a05 x408c1488 1 x408c1488 1}\n       {x42f40000 xc19747a2 x4093662c 1 x4093662c 1}\n       {x42f60000 xc1634dde x4097b0d8 1 x4097b0d8 1}\n       {x42f80000 xc116de6c x40998668 1 x40998668 1}\n       {x42fa0000 xc0938eeb x4096de6c 1 x4096de6c 1}\n       {x42fc0000 0 x40957c85 1 x40957c85 1}\n       {x42fe0000 x40976a1f x409590de 1 x409590de 1}\n       {x43000000 x411590de x408e9b30 1 x408e9b30 1}\n       {x43010000 x415a5040 x4086f15e 1 x4086f15e 1}\n       {x43020000 x418e411e x40810b44 1 x40810b44 1}\n       {x43030000 x41adadc2 x406ccca0 1 x406ccca0 1}\n       {x43040000 x41c97446 x405642cc 1 x405642cc 1}\n       {x43050000 x41e33e75 x403f0ae0 1 x403f0ae0 1}\n       {x43060000 x41f936fe x401fa4cc 1 x401fa4cc 1}\n       {x43070000 x420593d4 x4003c060 1 x4003c060 1}\n       {x43080000 x420d138b x3fe29ef0 1 x3fe29ef0 1}\n       {x43090000 x4213bdc3 x3fd38240 1 x3fd38240 1}\n       {x430a0000 x421a4baf x3fd2e910 1 x3fd2e910 1}\n       {x430b0000 x4220ec54 x3fd98700 1 x3fd98700 1}\n       {x430c0000 x4227e41f x3fd8c150 1 x3fd8c150 1}\n       {x430d0000 x422e7869 x3fcf3560 1 x3fcf3560 1}\n       {x430e0000 x4234d775 x3fd92cb0 1 x3fd92cb0 1}\n       {x430f0000 x423c0b34 x3ff44720 1 x3ff44720 1}\n       {x43100000 x42441be7 x3ffeae30 1 x3ffeae30 1}\n       {x43110000 x424bf617 x3ff7bb50 1 x3ff7bb50 1}\n       {x43120000 x4253979c x3feb7e30 1 x3feb7e30 1}\n       {x43130000 x425aadfa x3fbb9d00 1 x3fbb9d00 1}\n       {x43140000 x425f516c x3f0c6100 1 x3f0c6100 1}\n       {x43150000 x42600c98 -}\n       {x43160000 x425cfad4 xbf9354c0 1 0 1}}\n      {{x42540000 x444727a2 0 1 xc1132120 1}\n       {x42580000 x4444de75 xc1109f80 1 xc1109f80 1}\n       {x425c0000 x4442a2a6 xc113bc00 1 xc113bc00 1}\n       {x42600000 x44404095 xc1305700 1 xc1305700 1}\n       {x42640000 x443d1fee xc157b8c0 1 xc157b8c0 1}\n       {x42680000 x443982cf xc16de840 1 xc16de840 1}\n       {x426c0000 x4435b0ac xc15fb240 1 xc15fb240 1}\n       {x42700000 x4432853d xc14db9e0 1 xc14db9e0 1}\n       {x42740000 x442f42dd xc1584e20 1 xc1584e20 1}\n       {x42780000 x442bc2cc xc16bbfe0 1 xc16bbfe0 1}\n       {x427c0000 x4427e4de xc17cdb60 1 xc17cdb60 1}\n       {x42800000 x4423dbf1 xc1801190 1 xc1801190 1}\n       {x42820000 x441fe3c5 xc17d4d40 1 xc17d4d40 1}\n       {x42840000 x441bf187 xc1800ea0 1 xc1800ea0 1}\n       {x42860000 x4417e2db xc179fac0 1 xc179fac0 1}\n       {x42880000 x441421b1 xc1723b00 1 xc1723b00 1}\n       {x428a0000 x44105103 xc1762e00 1 xc1762e00 1}\n       {x428c0000 x440c7041 xc1814390 1 xc1814390 1}\n       {x428e0000 x44083cca xc189b3f0 1 xc189b3f0 1}\n       {x42900000 x4403d502 xc18b2af0 1 xc18b2af0 1}\n       {x42920000 x43ff1436 xc1895890 1 xc1895890 1}\n       {x42940000 x43f67ef2 xc18a3710 1 xc18a3710 1}\n       {x42960000 x43edcd54 xc188e7d8 1 xc188e7d8 1}\n       {x42980000 x43e561f7 xc17933f0 1 xc17933f0 1}\n       {x429a0000 x43de3a15 xc15cca00 1 xc15cca00 1}\n       {x429c0000 x43d79557 xc151de70 1 xc151de70 1}\n       {x429e0000 x43d11c2e xc1540320 1 xc1540320 1}\n       {x42a00000 x43ca5525 xc1607440 1 xc1607440 1}\n       {x42a20000 x43c314ea xc16d03c0 1 xc16d03c0 1}\n       {x42a40000 x43bb84e9 xc1757a20 1 xc1757a20 1}\n       {x42a60000 x43b3bd48 xc176e1c0 1 xc176e1c0 1}\n       {x42a80000 x43ac16cd xc1748bd0 1 xc1748bd0 1}\n       {x42aa0000 x43a4748b xc16d74c0 1 xc16d74c0 1}\n       {x42ac0000 x439d3f81 xc161aff0 1 xc161aff0 1}\n       {x42ae0000 x4396598c xc15d45e0 1 xc15d45e0 1}\n       {x42b00000 x438f6b23 xc15e48d0 1 xc15e48d0 1}\n       {x42b20000 x438874ff xc160b200 1 xc160b200 1}\n       {x42b40000 x43816003 xc1645138 1 xc1645138 1}\n       {x42b60000 x43745fd7 xc167fb78 1 xc167fb78 1}\n       {x42b80000 x4365c097 xc16a8cd0 1 xc16a8cd0 1}\n       {x42ba0000 x43570e3d xc16600c8 1 xc16600c8 1}\n       {x42bc0000 x4349007e xc1585c80 1 xc1585c80 1}\n       {x42be0000 x433c02ad xc14492a8 1 xc14492a8 1}\n       {x42c00000 x43306e29 xc13204e0 1 xc13204e0 1}\n       {x42c20000 x4325c211 xc11ebba8 1 xc11ebba8 1}\n       {x42c40000 x431c96b4 xc110eb28 1 xc110eb28 1}\n       {x42c60000 x4313a4ac xc10f92f8 1 xc10f92f8 1}\n       {x42c80000 x430aa455 xc10d9cf0 1 xc10d9cf0 1}\n       {x42ca0000 x4301f10e xc1090448 1 xc1090448 1}\n       {x42cc0000 x42f30798 xc10456c0 1 xc10456c0 1}\n       {x42ce0000 x42e2cc6c xc0fd9fb8 1 xc0fd9fb8 1}\n       {x42d00000 x42d353a1 xc0ed1568 1 xc0ed1568 1}\n       {x42d20000 x42c529bf xc0d83b88 1 xc0d83b88 1}\n       {x42d40000 x42b84c30 xc0c955c0 1 xc0c955c0 1}\n       {x42d60000 x42abff07 xc0c57208 1 xc0c57208 1}\n       {x42d80000 x429f9def xc0cc0748 1 xc0cc0748 1}\n       {x42da0000 x42927e1e xc0d7ab20 1 xc0d7ab20 1}\n       {x42dc0000 x4284a88b xc0d567e8 1 xc0d567e8 1}\n       {x42de0000 x426fa242 xc0c03c58 1 xc0c03c58 1}\n       {x42e00000 x42594200 xc0a68948 1 xc0a68948 1}\n       {x42e20000 x4245fff0 xc093de98 1 xc093de98 1}\n       {x42e40000 x42344a5a xc087a300 1 xc087a300 1}\n       {x42e60000 x42241730 xc06b03e0 1 xc06b03e0 1}\n       {x42e80000 x4216e9de xc04df0b0 1 xc04df0b0 1}\n       {x42ea0000 x420a591a xc05125d0 1 xc05125d0 1}\n       {x42ec0000 x41f98a48 xc05c7d28 1 xc05c7d28 1}\n       {x42ee0000 x41dd92ea xc06517d4 1 xc06517d4 1}\n       {x42f00000 x41c04453 xc0799ce4 1 xc0799ce4 1}\n       {x42f20000 x419f2bb1 xc087aadc 1 xc087aadc 1}\n       {x42f40000 x4178ddca xc085d1b1 1 xc085d1b1 1}\n       {x42f60000 x413885b1 xc0807cd1 1 xc0807cd1 1}\n       {x42f80000 x40f0c1f2 xc07eea91 1 xc07eea91 1}\n       {x42fa0000 x406441a2 xc070c1f2 1 xc070c1f2 1}\n       {x42fc0000 0 xc0559858 1 xc0559858 1}\n       {x42fe0000 xc046ef0d xc0501c39 1 xc0501c39 1}\n       {x43000000 xc0d01c39 xc0525672 1 xc0525672 1}\n       {x43010000 xc11ae6fc xc045fb2b 1 xc045fb2b 1}\n       {x43020000 xc14b0bb2 xc02b05a0 1 xc02b05a0 1}\n       {x43030000 xc17069cc xc012f13c 1 xc012f13c 1}\n       {x43040000 xc18a4228 xc00b42e0 1 xc00b42e0 1}\n       {x43050000 xc19b059e xc00ad10c 1 xc00ad10c 1}\n       {x43060000 xc1acf66b xc00b4dc0 1 xc00b4dc0 1}\n       {x43070000 xc1bdd90e xbfeeaf00 1 xbfeeaf00 1}\n       {x43080000 xc1cacc4b xbfbeb4f0 1 xbfbeb4f0 1}\n       {x43090000 xc1d5afac xbfa2f858 1 xbfa2f858 1}\n       {x430a0000 xc1df2b56 xbfa48380 1 xbfa48380 1}\n       {x430b0000 xc1ea401c xbfbd42b8 1 xbfbd42b8 1}\n       {x430c0000 xc1f6d3ad xbfa663e0 1 xbfa663e0 1}\n       {x430d0000 xc1ff0c98 xbf82bdd8 1 xbf82bdd8 1}\n       {x430e0000 xc20395b4 xbf7ee6c0 1 xbf7ee6c0 1}\n       {x430f0000 xc2077d82 xbf851880 1 xbf851880 1}\n       {x43100000 xc20be73c xbf85ada0 1 xbf85ada0 1}\n       {x43110000 xc20fd85c xbf7b5800 1 xbf7b5800 1}\n       {x43120000 xc213c1fc xbf6fd8c0 1 xbf6fd8c0 1}\n       {x43130000 xc2175722 xbf85a3b0 1 xbf85a3b0 1}\n       {x43140000 xc21c1c37 xbfba57d0 1 xbfba57d0 1}\n       {x43150000 xc222fc9f xc0292498 1 xc0292498 1}\n       {x43160000 xc23140ca xc080e8de 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke23 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4466bde3 x43eae9fc 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke24 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4466bde3 x43eae9fc 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3ca363c 0 1 x40cc7660 1}\n       {x42580000 xc3c6e1df x40e65900 1 x40e65900 1}\n       {x425c0000 xc3c30374 x41061400 1 x41061400 1}\n       {x42600000 xc3be809f x411fa300 1 x411fa300 1}\n       {x42640000 xc3b90944 x412f87c0 1 x412f87c0 1}\n       {x42680000 xc3b38823 x412cd2e0 1 x412cd2e0 1}\n       {x426c0000 xc3ae3c16 x4123bc10 1 x4123bc10 1}\n       {x42700000 xc3a94c62 x4125eac0 1 x4125eac0 1}\n       {x42740000 xc3a3dd6a x4129c370 1 x4129c370 1}\n       {x42780000 xc39eb02b x41248a30 1 x41248a30 1}\n       {x427c0000 xc39994c7 x41273ac0 1 x41273ac0 1}\n       {x42800000 xc3943c7f x41244860 1 x41244860 1}\n       {x42820000 xc38f5041 x410fdf50 1 x410fdf50 1}\n       {x42840000 xc38b3e8a x40f85080 1 x40f85080 1}\n       {x42860000 xc3878dbd x40f6cd40 1 x40f6cd40 1}\n       {x42880000 xc3838820 x41026bf8 1 x41026bf8 1}\n       {x428a0000 xc37ecdfb x40fbba10 1 x40fbba10 1}\n       {x428c0000 xc377549f x40e60490 1 x40e60490 1}\n       {x428e0000 xc3706db2 x40e253b0 1 x40e253b0 1}\n       {x42900000 xc3692f64 x40f07ba0 1 x40f07ba0 1}\n       {x42920000 xc36165f8 x40eb1810 1 x40eb1810 1}\n       {x42940000 xc35a7de3 x40c93e70 1 x40c93e70 1}\n       {x42960000 xc354d211 x40a790c0 1 x40a790c0 1}\n       {x42980000 xc35004d7 x40961020 1 x40961020 1}\n       {x429a0000 xc34b710f x408a4a90 1 x408a4a90 1}\n       {x429c0000 xc347602e x40769160 1 x40769160 1}\n       {x429e0000 xc343bc84 x406c5200 1 x406c5200 1}\n       {x42a00000 xc33ffd9e x407c1a60 1 x407c1a60 1}\n       {x42a20000 xc33bdbb1 x409581a0 1 x409581a0 1}\n       {x42a40000 xc336a584 x40bc8210 1 x40bc8210 1}\n       {x42a60000 xc3301390 x40b3be00 1 x40b3be00 1}\n       {x42a80000 xc32b69a4 x4097dde0 1 x4097dde0 1}\n       {x42aa0000 xc32695b2 x40959a70 1 x40959a70 1}\n       {x42ac0000 xc3220ffd x407b4760 1 x407b4760 1}\n       {x42ae0000 xc31ebb77 x4039b420 1 x4039b420 1}\n       {x42b00000 xc31c425c x4005a900 1 x4005a900 1}\n       {x42b20000 xc31a8e2f x3fcf50c0 1 x3fcf50c0 1}\n       {x42b40000 xc3190519 x3fc58740 1 x3fc58740 1}\n       {x42b60000 xc3177812 x3fce98c0 1 x3fce98c0 1}\n       {x42b80000 xc315cab6 x3fd31940 1 x3fd31940 1}\n       {x42ba0000 xc3142bad x3fc815c0 1 x3fc815c0 1}\n       {x42bc0000 xc312aa5f x3fc74900 1 x3fc74900 1}\n       {x42be0000 xc3110e89 x3fc5bd40 1 x3fc5bd40 1}\n       {x42c00000 xc30f936a x3fc001c0 1 x3fc001c0 1}\n       {x42c20000 xc30e0e82 x40392300 1 x40392300 1}\n       {x42c40000 xc309ca52 x408c49c0 1 x408c49c0 1}\n       {x42c60000 xc30549e6 x40942a20 1 x40942a20 1}\n       {x42c80000 xc30087b0 x4097d338 1 x4097d338 1}\n       {x42ca0000 xc2f79965 x4099e4c0 1 x4099e4c0 1}\n       {x42cc0000 xc2edd2c8 x409a6ba0 1 x409a6ba0 1}\n       {x42ce0000 xc2e44bf1 x4093ffb0 1 x4093ffb0 1}\n       {x42d00000 xc2db52d2 x408a99d8 1 x408a99d8 1}\n       {x42d20000 xc2d2f8b6 x407e0ca0 1 x407e0ca0 1}\n       {x42d40000 xc2cb7208 x40700a40 1 x40700a40 1}\n       {x42d60000 xc2c3f812 x4064f790 1 x4064f790 1}\n       {x42d80000 xc2bd228f x40584870 1 x40584870 1}\n       {x42da0000 xc2b6738b x40570680 1 x40570680 1}\n       {x42dc0000 xc2afb227 x405f02c0 1 x405f02c0 1}\n       {x42de0000 xc2a8835f x406cafc0 1 x406cafc0 1}\n       {x42e00000 xc2a0e72b x4075cb40 1 x4075cb40 1}\n       {x42e20000 xc29926ab x407996e0 1 x407996e0 1}\n       {x42e40000 xc2914dbd x407e57b0 1 x407e57b0 1}\n       {x42e60000 xc2894130 x40835430 1 x40835430 1}\n       {x42e80000 xc280e337 x408aef2c 1 x408aef2c 1}\n       {x42ea0000 xc26fc695 x4096f74c 1 x4096f74c 1}\n       {x42ec0000 xc25c089b x40aa6c0c 1 x40aa6c0c 1}\n       {x42ee0000 xc2452b92 x40badbd4 1 x40badbd4 1}\n       {x42f00000 xc22d51a6 x40cd40ec 1 x40cd40ec 1}\n       {x42f20000 xc211db57 x40deb3de 1 x40deb3de 1}\n       {x42f40000 xc1eb495d x40ea6a3c 1 x40ea6a3c 1}\n       {x42f60000 xc1ae8190 x40ed3e0d 1 x40ed3e0d 1}\n       {x42f80000 xc16954ad x40e8a636 1 x40e8a636 1}\n       {x42fa0000 xc0e8b9d5 x40e954ad 1 x40e954ad 1}\n       {x42fc0000 0 x40ed4ae0 1 x40ed4ae0 1}\n       {x42fe0000 x40f1dbeb x40f01e17 1 x40f01e17 1}\n       {x43000000 x41701e17 x40e9ba04 1 x40e9ba04 1}\n       {x43010000 x41b153fd x40e08bd1 1 x40e08bd1 1}\n       {x43020000 x41e854f4 x40d6f306 1 x40d6f306 1}\n       {x43030000 x420e66c0 x40c9ef84 1 x40c9ef84 1}\n       {x43040000 x4226a65b x40b7f170 1 x40b7f170 1}\n       {x43050000 x423c631c x40abd1cc 1 x40abd1cc 1}\n       {x43060000 x42519ace x40a2ddd0 1 x40a2ddd0 1}\n       {x43070000 x42651a90 x40863cd0 1 x40863cd0 1}\n       {x43080000 x42732a02 x405b4460 1 x405b4460 1}\n       {x43090000 x4280418e x404aa6a0 1 x404aa6a0 1}\n       {x430a0000 x42863f6b x403630e0 1 x403630e0 1}\n       {x430b0000 x428ba49c x402439b0 1 x402439b0 1}\n       {x430c0000 x42908306 x4017c710 1 x4017c710 1}\n       {x430d0000 x4295210d x4011a670 1 x4011a670 1}\n       {x430e0000 x42999d6d x40182f00 1 x40182f00 1}\n       {x430f0000 x429ea3fd x4027f150 1 x4027f150 1}\n       {x43100000 x42a41c82 x403069f0 1 x403069f0 1}\n       {x43110000 x42a9aa9c x4030a5f0 1 x4030a5f0 1}\n       {x43120000 x42af26e1 x402a9940 1 x402a9940 1}\n       {x43130000 x42b45430 x401315b0 1 x401315b0 1}\n       {x43140000 x42b8583c x3fc7e820 1 x3fc7e820 1}\n       {x43150000 x42ba9371 x3ebbc500 1 x3ebbc500 1}\n       {x43160000 x42bad208 -}}\n      {{x42540000 x44884227 0 1 xc15dcd20 1}\n       {x42580000 x44867517 xc177fdc0 1 xc177fdc0 1}\n       {x425c0000 x44846230 xc186ec00 1 xc186ec00 1}\n       {x42600000 x44823db7 xc18826a0 1 xc18826a0 1}\n       {x42640000 x448020fb xc18481a0 1 xc18481a0 1}\n       {x42680000 x447c3354 xc1874760 1 xc1874760 1}\n       {x426c0000 x4477cd80 xc18a5a40 1 xc18a5a40 1}\n       {x42700000 x44738db0 xc18f1870 1 xc18f1870 1}\n       {x42740000 x446edbf9 xc19fe260 1 xc19fe260 1}\n       {x42780000 x44698f8a xc1ad4fc0 1 xc1ad4fc0 1}\n       {x427c0000 x446406fd xc1bec0b0 1 xc1bec0b0 1}\n       {x42800000 x445da37f xc1cb56c0 1 xc1cb56c0 1}\n       {x42820000 x44575191 xc1c989e0 1 xc1c989e0 1}\n       {x42840000 x44510ae1 xc1c95e90 1 xc1c95e90 1}\n       {x42860000 x444abba8 xc1cf50f0 1 xc1cf50f0 1}\n       {x42880000 x444415d2 xc1d11b90 1 xc1d11b90 1}\n       {x428a0000 x443da9ef xc1ce5100 1 xc1ce5100 1}\n       {x428c0000 x443730c2 xc1d23070 1 xc1d23070 1}\n       {x428e0000 x443086e8 xc1d78af0 1 xc1d78af0 1}\n       {x42900000 x4429b813 xc1deac10 1 xc1deac10 1}\n       {x42920000 x44229c27 xc1dc4940 1 xc1dc4940 1}\n       {x42940000 x441bf37f xc1d15d20 1 xc1d15d20 1}\n       {x42960000 x44158655 xc1c8e060 1 xc1c8e060 1}\n       {x42980000 x440f6579 xc1bcce50 1 xc1bcce50 1}\n       {x429a0000 x4409b970 xc1b1ce70 1 xc1b1ce70 1}\n       {x429c0000 x44044892 xc1ac20f8 1 xc1ac20f8 1}\n       {x429e0000 x43fdeec1 xc1aa0088 1 xc1aa0088 1}\n       {x42a00000 x43f35113 xc1aaded8 1 xc1aaded8 1}\n       {x42a20000 x43e892e6 xc1a94a58 1 xc1a94a58 1}\n       {x42a40000 x43de27c8 xc19e09e0 1 xc19e09e0 1}\n       {x42a60000 x43d4d1aa xc19fe600 1 xc19fe600 1}\n       {x42a80000 x43ca2b08 xc1ae9a78 1 xc1ae9a78 1}\n       {x42aa0000 x43befe5b xc1ad3290 1 xc1ad3290 1}\n       {x42ac0000 x43b484b6 xc1a6aea8 1 xc1a6aea8 1}\n       {x42ae0000 x43aa2886 xc1a51cb0 1 xc1a51cb0 1}\n       {x42b00000 x439fe120 xc1a4ee40 1 xc1a4ee40 1}\n       {x42b20000 x43958abe xc1a6d790 1 xc1a6d790 1}\n       {x42b40000 x438b062e xc1a914f0 1 xc1a914f0 1}\n       {x42b60000 x43806820 xc1aa5f64 1 xc1aa5f64 1}\n       {x42b80000 x436b7483 xc1a7fffc 1 xc1a7fffc 1}\n       {x42ba0000 x4356d041 xc1a0eeec 1 xc1a0eeec 1}\n       {x42bc0000 x434338c8 xc198c188 1 xc198c188 1}\n       {x42be0000 x43309fdf xc18ef208 1 xc18ef208 1}\n       {x42c00000 x431f7c46 xc183e3a4 1 xc183e3a4 1}\n       {x42c20000 x430fa6f6 xc17148a0 1 xc17148a0 1}\n       {x42c40000 x43015332 xc160ac18 1 xc160ac18 1}\n       {x42c60000 x42e722e6 xc15cff10 1 xc15cff10 1}\n       {x42c80000 x42cb66a0 xc15ea124 1 xc15ea124 1}\n       {x42ca0000 x42af7a9d xc15a3bd8 1 xc15a3bd8 1}\n       {x42cc0000 x4294d7aa xc13a7454 1 xc13a7454 1}\n       {x42ce0000 x4280dd88 xc12ddb7a 1 xc12ddb7a 1}\n       {x42d00000 x4252c197 xc13f4a2e 1 xc13f4a2e 1}\n       {x42d20000 x422215f9 xc13727bb 1 xc13727bb 1}\n       {x42d40000 x41ee5b73 xc123bee7 1 xc123bee7 1}\n       {x42d60000 x41a06d0b xc1123b44 1 xc1123b44 1}\n       {x42d80000 x4138405e xc102bade 1 xc102bade 1}\n       {x42da0000 x406d9166 xc0f24bf3 1 xc0f24bf3 1}\n       {x42dc0000 xc0682e54 xc0d8cb70 1 xc0d8cb70 1}\n       {x42de0000 xc11d6716 xc0a967b5 1 xc0a967b5 1}\n       {x42e00000 xc163734a xc06285a8 1 xc06285a8 1}\n       {x42e20000 xc18754f5 xc006655c 1 xc006655c 1}\n       {x42e40000 xc19352fc xbf7c6580 1 xbf7c6580 1}\n       {x42e60000 xc1971b4d -}\n       {x42e80000 xc1909123 x3f8e2688 1 x3f8e2688 1}\n       {x42ea0000 xc185567c x3fb5dc34 1 x3fb5dc34 1}\n       {x42ec0000 xc173ab39 x3fb8c7fc 1 x3fb8c7fc 1}\n       {x42ee0000 xc15c7af9 x3fce9640 1 x3fce9640 1}\n       {x42f00000 xc14005a9 x3fbd7acc 1 x3fbd7acc 1}\n       {x42f20000 xc12d1c46 x3fa8a040 1 x3fa8a040 1}\n       {x42f40000 xc115dd99 x3fb595d6 1 x3fb595d6 1}\n       {x42f60000 xc0ff6da1 x3fec8dc6 1 x3fec8dc6 1}\n       {x42f80000 xc0b5744f x401548ce 1 x401548ce 1}\n       {x42fa0000 xc05449a6 x4035744f 1 x4035744f 1}\n       {x42fc0000 0 x405e2b23 1 x405e2b23 1}\n       {x42fe0000 x40680ca0 x40675ddd 1 x40675ddd 1}\n       {x43000000 x40e75ddd x406a7708 1 x406a7708 1}\n       {x43010000 x412f3eac x407eac0d 1 x407eac0d 1}\n       {x43020000 x417304f5 x408dc51e 1 x408dc51e 1}\n       {x43030000 x419e81e5 x40990a35 1 x40990a35 1}\n       {x43040000 x41c60795 x409f7aec 1 x409f7aec 1}\n       {x43050000 x41ee3f5b x40be1eba 1 x40be1eba 1}\n       {x43060000 x42128b79 x40f38152 1 x40f38152 1}\n       {x43070000 x42340002 x40e864c0 1 x40e864c0 1}\n       {x43080000 x424ca4a9 x40cbe88c 1 x40cbe88c 1}\n       {x43090000 x4266fa25 x40d17b8c 1 x40d17b8c 1}\n       {x430a0000 x428081c6 x40ca9594 1 x40ca9594 1}\n       {x430b0000 x428ccfc5 x40c23fe0 1 x40c23fe0 1}\n       {x430c0000 x4298c9c2 x40c5ecb0 1 x40c5ecb0 1}\n       {x430d0000 x42a58d5b x40d2d070 1 x40d2d070 1}\n       {x430e0000 x42b323d0 x40d7f4d0 1 x40d7f4d0 1}\n       {x430f0000 x42c08bf5 x40d33bb8 1 x40d33bb8 1}\n       {x43100000 x42cd8b47 x40cecc58 1 x40cecc58 1}\n       {x43110000 x42da6580 x40c7d3e8 1 x40c7d3e8 1}\n       {x43120000 x42e685c4 x40ba3ae0 1 x40ba3ae0 1}\n       {x43130000 x42f1acdc x40aafa08 1 x40aafa08 1}\n       {x43140000 x42fbe505 x4097d030 1 x4097d030 1}\n       {x43150000 x43025371 x4055bb50 1 x4055bb50 1}\n       {x43160000 x4304a05d x3fe3f5b0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke25 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43eb23f8 x443259bb 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke26 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43eb23f8 x443259bb 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc39fc1df 0 1 x40815b90 1}\n       {x42580000 xc39d9490 x409f4420 1 x409f4420 1}\n       {x425c0000 xc39ac7be x40c5fa60 1 x40c5fa60 1}\n       {x42600000 xc39764bd x40e0ab00 1 x40e0ab00 1}\n       {x42640000 xc393c266 x40e42600 1 x40e42600 1}\n       {x42680000 xc390438d x40e0e180 1 x40e0e180 1}\n       {x426c0000 xc38cbb5a x40e255e0 1 x40e255e0 1}\n       {x42700000 xc38930de x40e57dc0 1 x40e57dc0 1}\n       {x42740000 xc3858f6c x40f68c40 1 x40f68c40 1}\n       {x42780000 xc3817c7c x41017ea8 1 x41017ea8 1}\n       {x427c0000 xc37aef03 x4105b068 1 x4105b068 1}\n       {x42800000 xc37242eb x4109d628 1 x4109d628 1}\n       {x42820000 xc369b43e x41025fb8 1 x41025fb8 1}\n       {x42840000 xc361f6f4 x40f467e0 1 x40f467e0 1}\n       {x42860000 xc35a6dc0 x40ca9c70 1 x40ca9c70 1}\n       {x42880000 xc3554d2d x40cccb10 1 x40cccb10 1}\n       {x428a0000 xc34da10f x40b46ab0 1 x40b46ab0 1}\n       {x428c0000 xc34a0682 x406951c0 1 x406951c0 1}\n       {x428e0000 xc3465681 x40789c00 1 x40789c00 1}\n       {x42900000 xc34241a2 x40828810 1 x40828810 1}\n       {x42920000 xc33e2e00 x3fd11c00 1 x3fd11c00 1}\n       {x42940000 xc33da298 x3fa25a80 1 x3fa25a80 1}\n       {x42960000 xc33ba496 x40078520 1 x40078520 1}\n       {x42980000 xc339666f x405e7500 1 x405e7500 1}\n       {x429a0000 xc334b0ee x4054af00 1 x4054af00 1}\n       {x429c0000 xc332c0f7 x3fb209c0 1 x3fb209c0 1}\n       {x429e0000 xc331e8c7 x3fbf15c0 1 x3fbf15c0 1}\n       {x42a00000 xc32fc4a0 x401cd660 1 x401cd660 1}\n       {x42a20000 xc32d0214 x40346e60 1 x40346e60 1}\n       {x42a40000 xc32a212d x403e9aa0 1 x403e9aa0 1}\n       {x42a60000 xc3270d3f x40465520 1 x40465520 1}\n       {x42a80000 xc323ee84 x404d5d80 1 x404d5d80 1}\n       {x42aa0000 xc320a253 x404135a0 1 x404135a0 1}\n       {x42ac0000 xc31de4d7 x4004c060 1 x4004c060 1}\n       {x42ae0000 xc31c7c50 x3f880500 1 x3f880500 1}\n       {x42b00000 xc31bc4c3 x3ee7df00 1 x3ee7df00 1}\n       {x42b20000 xc31b9471 -}\n       {x42b40000 xc31be747 xbcf18000 1 xbcf18000 1}\n       {x42b60000 xc31be9cb -}\n       {x42b80000 xc31bc68c x3e87dc00 1 x3e87dc00 1}\n       {x42ba0000 xc31b61ef x3ed09a00 1 x3ed09a00 1}\n       {x42bc0000 xc31af5f2 x3f024f00 1 x3f024f00 1}\n       {x42be0000 xc31a5d51 x3f1c2f80 1 x3f1c2f80 1}\n       {x42c00000 xc319bd93 x3f2b6980 1 x3f2b6980 1}\n       {x42c20000 xc319067e x40094fc0 1 x40094fc0 1}\n       {x42c40000 xc3156470 x406c6700 1 x406c6700 1}\n       {x42c60000 xc311a346 x4080b6b0 1 x4080b6b0 1}\n       {x42c80000 xc30d5905 x40881f60 1 x40881f60 1}\n       {x42ca0000 xc3092150 x40885a10 1 x40885a10 1}\n       {x42cc0000 xc304d364 x4088d3f0 1 x4088d3f0 1}\n       {x42ce0000 xc3009411 x40840c10 1 x40840c10 1}\n       {x42d00000 xc2f92546 x40736050 1 x40736050 1}\n       {x42d20000 xc2f1f21d x40676fa0 1 x40676fa0 1}\n       {x42d40000 xc2eaae4c x40613b60 1 x40613b60 1}\n       {x42d60000 xc2e3de67 x405ccb30 1 x405ccb30 1}\n       {x42d80000 xc2dce199 x406032f0 1 x406032f0 1}\n       {x42da0000 xc2d5db38 x40637910 1 x40637910 1}\n       {x42dc0000 xc2ceaa08 x40768170 1 x40768170 1}\n       {x42de0000 xc2c67321 x40874f68 1 x40874f68 1}\n       {x42e00000 xc2bdc01b x408b9770 1 x408b9770 1}\n       {x42e20000 xc2b50033 x408e77a8 1 x408e77a8 1}\n       {x42e40000 xc2abf126 x4093e010 1 x4093e010 1}\n       {x42e60000 xc2a28431 x409b81f0 1 x409b81f0 1}\n       {x42e80000 xc29880e8 x40a86148 1 x40a86148 1}\n       {x42ea0000 xc28d7808 x40b46348 1 x40b46348 1}\n       {x42ec0000 xc281f47f x40c8ebd4 1 x40c8ebd4 1}\n       {x42ee0000 xc268b51b x40ddb400 1 x40ddb400 1}\n       {x42f00000 xc24c7bfe x40f21b4c 1 x40f21b4c 1}\n       {x42f20000 xc22c2e48 x41042334 1 x41042334 1}\n       {x42f40000 xc20a6a64 x410a6fa9 1 x410a6fa9 1}\n       {x42f60000 xc1cdece7 x410a59f7 1 x410a59f7 1}\n       {x42f80000 xc18a7ad1 x41098f68 1 x41098f68 1}\n       {x42fa0000 xc108bafe x410a7ad1 1 x410a7ad1 1}\n       {x42fc0000 0 x410b5455 1 x410b5455 1}\n       {x42fe0000 x410dedac x410c332d 1 x410c332d 1}\n       {x43000000 x418c332d x4108c190 1 x4108c190 1}\n       {x43010000 x41cfb866 x41047963 1 x41047963 1}\n       {x43020000 x42085648 x40fcb130 1 x40fcb130 1}\n       {x43030000 x4227087f x40edec18 1 x40edec18 1}\n       {x43040000 x4243d14e x40d96dd8 1 x40d96dd8 1}\n       {x43050000 x425d63f5 x40bf8024 1 x40bf8024 1}\n       {x43060000 x4273b157 x40aa0f14 1 x40aa0f14 1}\n       {x43070000 x4283f3dd x409c3d9c 1 x409c3d9c 1}\n       {x43080000 x428d605f x408eb178 1 x408eb178 1}\n       {x43090000 x4295ca0c x40806478 1 x40806478 1}\n       {x430a0000 x429d6cee x40716350 1 x40716350 1}\n       {x430b0000 x42a4e041 x406342d0 1 x406342d0 1}\n       {x430c0000 x42aba11b x4052edc0 1 x4052edc0 1}\n       {x430d0000 x42b20f1d x40564980 1 x40564980 1}\n       {x430e0000 x42b905b3 x40620c70 1 x40620c70 1}\n       {x430f0000 x42c02fe4 x406d96d0 1 x406d96d0 1}\n       {x43100000 x42c7df20 x40751bf0 1 x40751bf0 1}\n       {x43110000 x42cf81a3 x406fc2e0 1 x406fc2e0 1}\n       {x43120000 x42d6db4e x40699dd0 1 x40699dd0 1}\n       {x43130000 x42de1b80 x40576ee0 1 x40576ee0 1}\n       {x43140000 x42e4523c x4026f7d0 1 x4026f7d0 1}\n       {x43150000 x42e88afd x3fd573c0 1 x3fd573c0 1}\n       {x43160000 x42eafdda x3f805900 1 0 1}}\n      {{x42540000 x448763e1 0 1 xc155ea80 1}\n       {x42580000 x4485a928 xc16c4080 1 xc16c4080 1}\n       {x425c0000 x4483b2df xc1819340 1 xc1819340 1}\n       {x42600000 x44819c8e xc184a4a0 1 xc184a4a0 1}\n       {x42640000 x447f1b74 xc1836430 1 xc1836430 1}\n       {x42680000 x447b02d9 xc1853730 1 xc1853730 1}\n       {x426c0000 x4476c801 xc18bbf60 1 xc18bbf60 1}\n       {x42700000 x447246e3 xc198ddf0 1 xc198ddf0 1}\n       {x42740000 x446d3a22 xc1aa60f0 1 xc1aa60f0 1}\n       {x42780000 x4467a0d4 xc1bc1e60 1 xc1bc1e60 1}\n       {x427c0000 x4461783c xc1cb8650 1 xc1cb8650 1}\n       {x42800000 x445ae86f xc1d3af50 1 xc1d3af50 1}\n       {x42820000 x44543d47 xc1d1bb70 1 xc1d1bb70 1}\n       {x42840000 x444dccb8 xc1ce59f0 1 xc1ce59f0 1}\n       {x42860000 x444757a8 xc1d01400 1 xc1d01400 1}\n       {x42880000 x4440cb78 xc1d50040 1 xc1d50040 1}\n       {x428a0000 x443a07a4 xc1cbcbf0 1 xc1cbcbf0 1}\n       {x428c0000 x44340eb9 xc1b4cb10 1 xc1b4cb10 1}\n       {x428e0000 x442ebaf3 xc1af8e90 1 xc1af8e90 1}\n       {x42900000 x442915d0 xc1b9b400 1 xc1b9b400 1}\n       {x42920000 x44231fb3 xc1c2b6e0 1 xc1c2b6e0 1}\n       {x42940000 x441cea62 xc1c80cd0 1 xc1c80cd0 1}\n       {x42960000 x44169ee6 xc1c7b100 1 xc1c7b100 1}\n       {x42980000 x44106f52 xc1bc3c70 1 xc1bc3c70 1}\n       {x429a0000 x440adb1f xc1b33bf0 1 xc1b33bf0 1}\n       {x429c0000 x44053b93 xc1b46a60 1 xc1b46a60 1}\n       {x429e0000 x43ff28f2 xc1b27168 1 xc1b27168 1}\n       {x42a00000 x43f428f9 xc1b225f0 1 xc1b225f0 1}\n       {x42a20000 x43e8e434 xc1b2e418 1 xc1b2e418 1}\n       {x42a40000 x43ddcc76 xc1b30a78 1 xc1b30a78 1}\n       {x42a60000 x43d282e5 xc1b538a8 1 xc1b538a8 1}\n       {x42a80000 x43c72561 xc1b53430 1 xc1b53430 1}\n       {x42aa0000 x43bbdc5f xc1b2e9f8 1 xc1b2e9f8 1}\n       {x42ac0000 x43b0c822 xc1ab81c8 1 xc1ab81c8 1}\n       {x42ae0000 x43a66c26 xc1b02d48 1 xc1b02d48 1}\n       {x42b00000 x439ac279 xc1b656b8 1 xc1b656b8 1}\n       {x42b20000 x438fa14f xc1b30190 1 xc1b30190 1}\n       {x42b40000 x43846247 xc1b58764 1 xc1b58764 1}\n       {x42b60000 x4371e0c5 xc1b58d84 1 xc1b58d84 1}\n       {x42b80000 x435b612d xc1b19864 1 xc1b19864 1}\n       {x42ba0000 x43457aac xc1a9c90c 1 xc1a9c90c 1}\n       {x42bc0000 x4330eeea xc19fc3ec 1 xc19fc3ec 1}\n       {x42be0000 x431d89b1 xc1951d18 1 xc1951d18 1}\n       {x42c00000 x430ba7a4 xc18b073a 1 xc18b073a 1}\n       {x42c20000 x42f58fc5 xc1806012 1 xc1806012 1}\n       {x42c40000 x42d71f3f xc1722a00 1 xc1722a00 1}\n       {x42c60000 x42b90545 xc1729374 1 xc1729374 1}\n       {x42c80000 x429a7a62 xc1741a1e 1 xc1741a1e 1}\n       {x42ca0000 x4277fd7b xc1755272 1 xc1755272 1}\n       {x42cc0000 x423a4b8b xc16ea8a2 1 xc16ea8a2 1}\n       {x42ce0000 x4200a92a xc1644039 1 xc1644039 1}\n       {x42d00000 x419056dd xc15437c3 1 xc15437c3 1}\n       {x42d20000 x40b46a45 xc13ffd02 1 xc13ffd02 1}\n       {x42d40000 xc0be9893 xc12c7ed6 1 xc12c7ed6 1}\n       {x42d60000 xc17ec889 xc11447c6 1 xc11447c6 1}\n       {x42d80000 xc1c3edeb xc1006784 1 xc1006784 1}\n       {x42da0000 xc1ffcbc8 xc0e23cf6 1 xc0e23cf6 1}\n       {x42dc0000 xc21a8633 xc0bbf804 1 xc0bbf804 1}\n       {x42de0000 xc22ee3e5 xc082c8a8 1 xc082c8a8 1}\n       {x42e00000 xc23b385d xc003eb48 1 xc003eb48 1}\n       {x42e20000 xc23f614e -}\n       {x42e40000 xc23ddb12 x3f79b360 1 x3f79b360 1}\n       {x42e60000 xc23793b3 x4010f0d8 1 x4010f0d8 1}\n       {x42e80000 xc22bbcf7 x405821b8 1 x405821b8 1}\n       {x42ea0000 xc21c8f7c x40728cf8 1 x40728cf8 1}\n       {x42ec0000 xc20d6b58 x4071d590 1 x4071d590 1}\n       {x42ee0000 xc1fca994 x407b05b0 1 x407b05b0 1}\n       {x42f00000 xc1dc1544 x407b3b44 1 x407b3b44 1}\n       {x42f20000 xc1bddac3 x40743f24 1 x40743f24 1}\n       {x42f40000 xc19f057b x40770328 1 x40770328 1}\n       {x42f60000 xc18019f9 x40890cba 1 x40890cba 1}\n       {x42f80000 xc134fe3c x40a0cc46 1 x40a0cc46 1}\n       {x42fa0000 xc0becf59 x40b4fe3c 1 x40b4fe3c 1}\n       {x42fc0000 0 x40c732d4 1 x40c732d4 1}\n       {x42fe0000 x40cf964f x40c8459b 1 x40c8459b 1}\n       {x43000000 x4148459b x40c62b0c 1 x40c62b0c 1}\n       {x43010000 x4196fb1a x40d22b27 1 x40d22b27 1}\n       {x43020000 x41cd3861 x40dd3e8c 1 x40dd3e8c 1}\n       {x43030000 x4202cd30 x40e87992 1 x40e87992 1}\n       {x43040000 x4220ba95 x40ede858 1 x40ede858 1}\n       {x43050000 x423e4746 x40f0eb30 1 x40f0eb30 1}\n       {x43060000 x425cf561 x40fc6e48 1 x40fc6e48 1}\n       {x43070000 x427d62d8 x4106c0a6 1 x4106c0a6 1}\n       {x43080000 x42902ada x410ecbcc 1 x410ecbcc 1}\n       {x43090000 x42a2645f x410f1d68 1 x410f1d68 1}\n       {x430a0000 x42b3f234 x410a8ad8 1 x410a8ad8 1}\n       {x430b0000 x42c50715 x410604ec 1 x410604ec 1}\n       {x430c0000 x42d5736f x41076164 1 x41076164 1}\n       {x430d0000 x42e6df6e x410e4bac 1 x410e4bac 1}\n       {x430e0000 x42f9065a x410dc5f0 1 x410dc5f0 1}\n       {x430f0000 x43052875 x4109b968 1 x4109b968 1}\n       {x43100000 x430dba5a x4107d810 1 x4107d810 1}\n       {x43110000 x43162377 x4101b740 1 x4101b740 1}\n       {x43120000 x431df142 x40f25830 1 x40f25830 1}\n       {x43130000 x432548fa x40e36c90 1 x40e36c90 1}\n       {x43140000 x432c280b x40cfb530 1 x40cfb530 1}\n       {x43150000 x4332444d x40a02ae0 1 x40a02ae0 1}\n       {x43160000 x43362ab9 x40563da0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke27 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44be9431 x4438c313 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke28 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44be9431 x4438c313 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3a9bb8a 0 1 x40df1f60 1}\n       {x42580000 xc3a61c3e x40f93a40 1 x40f93a40 1}\n       {x425c0000 xc3a1f1b8 x40e9bde0 1 x40e9bde0 1}\n       {x42600000 xc39ece4f x40ff7080 1 x40ff7080 1}\n       {x42640000 xc399f634 x41170230 1 x41170230 1}\n       {x42680000 xc3955e2c x410b5750 1 x410b5750 1}\n       {x426c0000 xc39140bf x410f0af0 1 x410f0af0 1}\n       {x42700000 xc38c6d7d x4118fb50 1 x4118fb50 1}\n       {x42740000 xc387b10a x410d42e0 1 x410d42e0 1}\n       {x42780000 xc383994f x410516c8 1 x410516c8 1}\n       {x427c0000 xc37ebf3b x41065678 1 x41065678 1}\n       {x42800000 xc37667cf x410178a0 1 x410178a0 1}\n       {x42820000 xc36e9027 x40ef76b0 1 x40ef76b0 1}\n       {x42840000 xc3677064 x40d390c0 1 x40d390c0 1}\n       {x42860000 xc361571b x40d79e50 1 x40d79e50 1}\n       {x42880000 xc359f67f x40d93810 1 x40d93810 1}\n       {x428a0000 xc353c39a x40d598a0 1 x40d598a0 1}\n       {x428c0000 xc34c9cf5 x40cbd8d0 1 x40cbd8d0 1}\n       {x428e0000 xc347060d x40b36bf0 1 x40b36bf0 1}\n       {x42900000 xc3416636 x40d7fdc0 1 x40d7fdc0 1}\n       {x42920000 xc3398631 x40e3a800 1 x40e3a800 1}\n       {x42940000 xc3332bb6 x40bc4cb0 1 x40bc4cb0 1}\n       {x42960000 xc32dc166 x40a23410 1 x40a23410 1}\n       {x42980000 xc3290875 x409bf970 1 x409bf970 1}\n       {x429a0000 xc32401cf x408ca680 1 x408ca680 1}\n       {x429c0000 xc3203e0d x40694fe0 1 x40694fe0 1}\n       {x429e0000 xc31cb750 x40711640 1 x40711640 1}\n       {x42a00000 xc318b55b x40669c00 1 x40669c00 1}\n       {x42a20000 xc3158270 x409a5af0 1 x409a5af0 1}\n       {x42a40000 xc30f0fac x40ad09d0 1 x40ad09d0 1}\n       {x42a60000 xc30ab1d3 x40981f00 1 x40981f00 1}\n       {x42a80000 xc3058dbc x40a42460 1 x40a42460 1}\n       {x42aa0000 xc3006f8d x4088a020 1 x4088a020 1}\n       {x42ac0000 xc2fa0774 x40368bb0 1 x40368bb0 1}\n       {x42ae0000 xc2f5765f x3ff93300 1 x3ff93300 1}\n       {x42b00000 xc2f23ddc x3e912000 1 x3e912000 1}\n       {x42b20000 xc2f20d7c x3e584900 1 x3e584900 1}\n       {x42b40000 xc2f16593 -}\n       {x42b60000 xc2f22946 -}\n       {x42b80000 xc2f19527 -}\n       {x42ba0000 xc2f1b38d -}\n       {x42bc0000 xc2f1571e -}\n       {x42be0000 xc2f20c4b -}\n       {x42c00000 xc2f1df10 -}\n       {x42c20000 xc2f24b0b -}\n       {x42c40000 xc2edded7 x400d9580 1 x400d9580 1}\n       {x42c60000 xc2e971b3 x402b0370 1 x402b0370 1}\n       {x42c80000 xc2e32ea0 x4040dfb0 1 x4040dfb0 1}\n       {x42ca0000 xc2dd63b8 x40323620 1 x40323620 1}\n       {x42cc0000 xc2d80b3e x402404f0 1 x402404f0 1}\n       {x42ce0000 xc2d32369 x4020e670 1 x4020e670 1}\n       {x42d00000 xc2cdfcd7 x402636c0 1 x402636c0 1}\n       {x42d20000 xc2c8bffd x401685c0 1 x401685c0 1}\n       {x42d40000 xc2c4947b x40139f90 1 x40139f90 1}\n       {x42d60000 xc2bf8604 x402802d0 1 x402802d0 1}\n       {x42d80000 xc2ba144e x403b2590 1 x403b2590 1}\n       {x42da0000 xc2b3d3ab x40459cc0 1 x40459cc0 1}\n       {x42dc0000 xc2adba82 x405312c0 1 x405312c0 1}\n       {x42de0000 xc2a6a27f x407a2e60 1 x407a2e60 1}\n       {x42e00000 xc29e179c x40866020 1 x40866020 1}\n       {x42e20000 xc295d67b x408b9418 1 x408b9418 1}\n       {x42e40000 xc28ca519 x409482c8 1 x409482c8 1}\n       {x42e60000 xc2834622 x40987be0 1 x40987be0 1}\n       {x42e80000 xc2732b3a x4097a3d8 1 x4097a3d8 1}\n       {x42ea0000 xc260a34e x40a51bd8 1 x40a51bd8 1}\n       {x42ec0000 xc249e444 x40b095ec 1 x40b095ec 1}\n       {x42ee0000 xc2347dd3 x40ac9284 1 x40ac9284 1}\n       {x42f00000 xc21ebfa3 x40c76778 1 x40c76778 1}\n       {x42f20000 xc202a3f5 x40d3e7b0 1 x40d3e7b0 1}\n       {x42f40000 xc1d38b6e x40d67c74 1 x40d67c74 1}\n       {x42f60000 xc19a09b0 x40d15a95 1 x40d15a95 1}\n       {x42f80000 xc155bc47 x40caa25c 1 x40caa25c 1}\n       {x42fa0000 xc0d2e209 x40d5bc47 1 x40d5bc47 1}\n       {x42fc0000 0 x40d548f8 1 x40d548f8 1}\n       {x42fe0000 x40d7afe6 x40d0bb34 1 x40d0bb34 1}\n       {x43000000 x4150bb34 x40bf74a7 1 x40bf74a7 1}\n       {x43010000 x4195a64d x40b52462 1 x40b52462 1}\n       {x43020000 x41c2efcb x40a865f4 1 x40a865f4 1}\n       {x43030000 x41e9d947 x409ba262 1 x409ba262 1}\n       {x43040000 x4208607e x408beb2a 1 x408beb2a 1}\n       {x43050000 x4217e76e x405d71c0 1 x405d71c0 1}\n       {x43060000 x42240eb6 x403b8970 1 x403b8970 1}\n       {x43070000 x422f589c x403014e8 1 x403014e8 1}\n       {x43080000 x423a1153 x402918d8 1 x402918d8 1}\n       {x43090000 x42447bb7 x401c8850 1 x401c8850 1}\n       {x430a0000 x424da25d x4013fde8 1 x4013fde8 1}\n       {x430b0000 x4256fb74 x40100620 1 x40100620 1}\n       {x430c0000 x425fa321 x3fffca40 1 x3fffca40 1}\n       {x430d0000 x4266f818 x400d4038 1 x400d4038 1}\n       {x430e0000 x42714b28 x401fd8a8 1 x401fd8a8 1}\n       {x430f0000 x427af32d x401cb250 1 x401cb250 1}\n       {x43100000 x428270b9 x402e8e58 1 x402e8e58 1}\n       {x43110000 x4288627c x40270390 1 x40270390 1}\n       {x43120000 x428ce0f2 x400ddec0 1 x400ddec0 1}\n       {x43130000 x42914068 x3ff3cb60 1 x3ff3cb60 1}\n       {x43140000 x42947f4d x3f838700 1 x3f838700 1}\n       {x43150000 x42955ca0 -}\n       {x43160000 x42950f4d xbe67f900 1 0 1}}\n      {{x42540000 x446629ca 0 1 xc1171810 1}\n       {x42580000 x4463d8c6 xc10e92e0 1 xc10e92e0 1}\n       {x425c0000 x4461b533 xc1130ce0 1 xc1130ce0 1}\n       {x42600000 x445f405f xc14b3c80 1 xc14b3c80 1}\n       {x42640000 x445b5b4f xc17e96a0 1 xc17e96a0 1}\n       {x42680000 x44574baa xc1848f10 1 xc1848f10 1}\n       {x426c0000 x4453125e xc17d4340 1 xc17d4340 1}\n       {x42700000 x444f6190 xc1713080 1 xc1713080 1}\n       {x42740000 x444b88da xc176fd20 1 xc176fd20 1}\n       {x42780000 x4447a9a7 xc17ffb80 1 xc17ffb80 1}\n       {x427c0000 x444388fe xc18c60b0 1 xc18c60b0 1}\n       {x42800000 x443ee39c xc195ea80 1 xc195ea80 1}\n       {x42820000 x443a2a56 xc1981d10 1 xc1981d10 1}\n       {x42840000 x443561cb xc19caef0 1 xc19caef0 1}\n       {x42860000 x44305f67 xc1a2afc0 1 xc1a2afc0 1}\n       {x42880000 x442b36cf xc19b8c30 1 xc19b8c30 1}\n       {x428a0000 x4426a6a4 xc19b22f0 1 xc19b22f0 1}\n       {x428c0000 x442184a0 xc199fe60 1 xc199fe60 1}\n       {x428e0000 x441d06be xc19308a0 1 xc19308a0 1}\n       {x42900000 x44185416 xc1a65b00 1 xc1a65b00 1}\n       {x42920000 x4412a10e xc1b34a40 1 xc1b34a40 1}\n       {x42940000 x440d1f72 xc1a63580 1 xc1a63580 1}\n       {x42960000 x44083db6 xc1979c60 1 xc1979c60 1}\n       {x42980000 x4403a5ac xc189d208 1 xc189d208 1}\n       {x429a0000 x43ff412b xc17a7fc0 1 xc17a7fc0 1}\n       {x429c0000 x43f7a35c xc16babb0 1 xc16babb0 1}\n       {x429e0000 x43f08670 xc16d3990 1 xc16d3990 1}\n       {x42a00000 x43e8cfc3 xc1846450 1 xc1846450 1}\n       {x42a20000 x43dff9e6 xc1953fa8 1 xc1953fa8 1}\n       {x42a40000 x43d627ce xc1937ff8 1 xc1937ff8 1}\n       {x42a60000 x43cd89e7 xc194c0b0 1 xc194c0b0 1}\n       {x42a80000 x43c38fb8 xc19e61c8 1 xc19e61c8 1}\n       {x42aa0000 x43b9bdae xc1929540 1 xc1929540 1}\n       {x42ac0000 x43b13d10 xc1876220 1 xc1876220 1}\n       {x42ae0000 x43a8d16a xc1883388 1 xc1883388 1}\n       {x42b00000 x43a0369f xc18674b8 1 xc18674b8 1}\n       {x42b20000 x439802d3 xc185fb20 1 xc185fb20 1}\n       {x42b40000 x438f773b xc18e22f0 1 xc18e22f0 1}\n       {x42b60000 x43863e75 xc19350e4 1 xc19350e4 1}\n       {x42b80000 x437a1a3d xc19109f8 1 xc19109f8 1}\n       {x42ba0000 x43683a6c xc18beb98 1 xc18beb98 1}\n       {x42bc0000 x43571f57 xc1815ec0 1 xc1815ec0 1}\n       {x42be0000 x4347e2bc xc162ce70 1 xc162ce70 1}\n       {x42c00000 x433ac589 xc14337d8 1 xc14337d8 1}\n       {x42c20000 x432f7bc1 xc1293e10 1 xc1293e10 1}\n       {x42c40000 x43259dc7 xc12810f0 1 xc12810f0 1}\n       {x42c60000 x431a79a3 xc13b5a88 1 xc13b5a88 1}\n       {x42c80000 x430e3276 xc13a3200 1 xc13a3200 1}\n       {x42ca0000 x43033363 xc12990ac 1 xc12990ac 1}\n       {x42cc0000 x42f200c1 xc12d3f40 1 xc12d3f40 1}\n       {x42ce0000 x42db16f6 xc12f8f0c 1 xc12f8f0c 1}\n       {x42d00000 x42c61cfe xc1179624 1 xc1179624 1}\n       {x42d20000 x42b5316d xc10102b8 1 xc10102b8 1}\n       {x42d40000 x42a5dc50 xc0f44600 1 xc0f44600 1}\n       {x42d60000 x4296a8ad xc0eb7470 1 xc0eb7470 1}\n       {x42d80000 x42886dc2 xc0e9b5b4 1 xc0e9b5b4 1}\n       {x42da0000 x4272e3ed xc0f1f36c 1 xc0f1f36c 1}\n       {x42dc0000 x42545ea9 xc0f38244 1 xc0f38244 1}\n       {x42de0000 x4236035c xc0dfd68c 1 xc0dfd68c 1}\n       {x42e00000 x421c6906 xc0ba82d0 1 xc0ba82d0 1}\n       {x42e20000 x420762a8 xc0a25092 1 xc0a25092 1}\n       {x42e40000 x41e7a9c3 xc090886c 1 xc090886c 1}\n       {x42e60000 x41c6811a xc06d5cac 1 xc06d5cac 1}\n       {x42e80000 x41ac5298 xc03a5cb4 1 xc03a5cb4 1}\n       {x42ea0000 x4197e9ed xc033ea2a 1 xc033ea2a 1}\n       {x42ec0000 x417eb01b xc03093c6 1 xc03093c6 1}\n       {x42ee0000 x415789f7 xc011392e 1 xc011392e 1}\n       {x42f00000 x41361384 xc025c154 1 xc025c154 1}\n       {x42f20000 x4104a94d xc02b26bf 1 xc02b26bf 1}\n       {x42f40000 x40c10049 xc0111600 1 xc0111600 1}\n       {x42f60000 x40707933 xbfe14e0a 1 xbfe14e0a 1}\n       {x42f80000 x4020b288 xbfbc8706 1 xbfbc8706 1}\n       {x42fa0000 x3f4fc8b2 xbfa0b288 1 xbfa0b288 1}\n       {x42fc0000 0 xbf433391 1 xbf433391 1}\n       {x42fe0000 xbf369e70 xbf22477c 1 xbf22477c 1}\n       {x43000000 xbfa2477c xbec8b8d4 1 xbec8b8d4 1}\n       {x43010000 xbfbfaba2 -}\n       {x43020000 xbf6b3e2e x3f83bcfe 1 x3f83bcfe 1}\n       {x43030000 x3f0f9cb4 x3fb8feee 1 x3fb8feee 1}\n       {x43040000 x3ffc5ec5 x3fc933b3 1 x3fc933b3 1}\n       {x43050000 x406d1ae0 x3ff9fe2c 1 x3ff9fe2c 1}\n       {x43060000 x40bc16c7 x40079bac 1 x40079bac 1}\n       {x43070000 x40fe291c x400a2be5 1 x400a2be5 1}\n       {x43080000 x41232156 x4025b958 1 x4025b958 1}\n       {x43090000 x4151f13a x40306888 1 x40306888 1}\n       {x430a0000 x417b559a x40185f24 1 x40185f24 1}\n       {x430b0000 x418f1066 x3fff2988 1 x3fff2988 1}\n       {x430c0000 x419d8ffe x4004cc24 1 x4004cc24 1}\n       {x430d0000 x41b0436f x4011ca48 1 x4011ca48 1}\n       {x430e0000 x41c20290 x400dc900 1 x400dc900 1}\n       {x430f0000 x41d3b5af x4002c808 1 x4002c808 1}\n       {x43100000 x41e2b492 x4008efcc 1 x4008efcc 1}\n       {x43110000 x41f5f1a2 x402035d0 1 x402035d0 1}\n       {x43120000 x42056103 x402482c0 1 x402482c0 1}\n       {x43130000 x420f8929 x3ff35a50 1 x3ff35a50 1}\n       {x43140000 x421496a8 x3f91a8b0 1 x3f91a8b0 1}\n       {x43150000 x4218a3b4 -}\n       {x43160000 x421411c4 xbfdb5d00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke29 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b23a25 x4446076d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke30 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b23a25 x4446076d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3bea4d9 0 1 x40f0e7c0 1}\n       {x42580000 xc3bac198 x410450a0 1 x410450a0 1}\n       {x425c0000 xc3b65fcf x410c2be0 1 x410c2be0 1}\n       {x42600000 xc3b1feda x41150be0 1 x41150be0 1}\n       {x42640000 xc3ad0f11 x412c0fe0 1 x412c0fe0 1}\n       {x42680000 xc3a73ddc x412b81a0 1 x412b81a0 1}\n       {x426c0000 xc3a256f7 x412866d0 1 x412866d0 1}\n       {x42700000 xc39cb76f x4134cbd0 1 x4134cbd0 1}\n       {x42740000 xc3970a3a x412e3540 1 x412e3540 1}\n       {x42780000 xc391d41b x41265dc0 1 x41265dc0 1}\n       {x427c0000 xc38ca45e x4115b840 1 x4115b840 1}\n       {x42800000 xc3887897 x410876c0 1 x410876c0 1}\n       {x42820000 xc3841cf2 x410767a0 1 x410767a0 1}\n       {x42840000 xc380021d x41025cc0 1 x41025cc0 1}\n       {x42860000 xc377ee4c x410bd718 1 x410bd718 1}\n       {x42880000 xc36e8957 x410a5110 1 x410a5110 1}\n       {x428a0000 xc366a42a x40f0f650 1 x40f0f650 1}\n       {x428c0000 xc35f79f2 x40d75770 1 x40d75770 1}\n       {x428e0000 xc3592eb3 x40ca1db0 1 x40ca1db0 1}\n       {x42900000 xc352d817 x40e51530 1 x40e51530 1}\n       {x42920000 xc34add60 x40f062d0 1 x40f062d0 1}\n       {x42940000 xc343d1ea x40d0ffd0 1 x40d0ffd0 1}\n       {x42960000 xc33dcd63 x40adc630 1 x40adc630 1}\n       {x42980000 xc338f587 x409df320 1 x409df320 1}\n       {x429a0000 xc333ee31 x4093d110 1 x4093d110 1}\n       {x429c0000 xc32fb876 x4072c600 1 x4072c600 1}\n       {x429e0000 xc32c5801 x406c0960 1 x406c0960 1}\n       {x42a00000 xc328582b x40831530 1 x40831530 1}\n       {x42a20000 xc32426ae x40a9e0e0 1 x40a9e0e0 1}\n       {x42a40000 xc31dba1d x40ac6c30 1 x40ac6c30 1}\n       {x42a60000 xc3195feb x40986d80 1 x40986d80 1}\n       {x42a80000 xc3143345 x40a629c0 1 x40a629c0 1}\n       {x42aa0000 xc30efd4f x4095c8b0 1 x4095c8b0 1}\n       {x42ac0000 xc30ad6ba x4069f520 1 x4069f520 1}\n       {x42ae0000 xc307ada6 x4038ba60 1 x4038ba60 1}\n       {x42b00000 xc30510e7 x3fd83cc0 1 x3fd83cc0 1}\n       {x42b20000 xc3044cb3 x3f0a4000 1 x3f0a4000 1}\n       {x42b40000 xc303fc67 x3efb0900 1 x3efb0900 1}\n       {x42b60000 xc30351aa x3f0bdf00 1 x3f0bdf00 1}\n       {x42b80000 xc302e4a9 x3f20ec00 1 x3f20ec00 1}\n       {x42ba0000 xc3020fd2 x3f110280 1 x3f110280 1}\n       {x42bc0000 xc301c2a4 x3e8a1500 1 x3e8a1500 1}\n       {x42be0000 xc30185bd -}\n       {x42c00000 xc3019be8 xbe1ee200 1 xbe1ee200 1}\n       {x42c20000 xc301d52e -}\n       {x42c40000 xc2fe73e9 x4030c840 1 x4030c840 1}\n       {x42c60000 xc2f89dd8 x40439090 1 x40439090 1}\n       {x42c80000 xc2f23ae0 x4047a960 1 x4047a960 1}\n       {x42ca0000 xc2ec2342 x4035e1e0 1 x4035e1e0 1}\n       {x42cc0000 xc2e6dcc2 x40404b30 1 x40404b30 1}\n       {x42ce0000 xc2e01e8f x403d12b0 1 x403d12b0 1}\n       {x42d00000 xc2db0b97 x40242a30 1 x40242a30 1}\n       {x42d20000 xc2d5dbec x401767d0 1 x401767d0 1}\n       {x42d40000 xc2d1951a x400a3fb0 1 x400a3fb0 1}\n       {x42d60000 xc2cd37f1 x401a8b70 1 x401a8b70 1}\n       {x42d80000 xc2c7ec63 x40386f60 1 x40386f60 1}\n       {x42da0000 xc2c1b0fb x405cf430 1 x405cf430 1}\n       {x42dc0000 xc2ba1d20 x40727890 1 x40727890 1}\n       {x42de0000 xc2b28972 x40820c90 1 x40820c90 1}\n       {x42e00000 xc2a9db8e x408ad7a0 1 x408ad7a0 1}\n       {x42e20000 xc2a12e7e x4098b6e8 1 x4098b6e8 1}\n       {x42e40000 xc296c4b1 x40a44a70 1 x40a44a70 1}\n       {x42e60000 xc28ca530 x40a433c8 1 x40a433c8 1}\n       {x42e80000 xc2823e38 x40a2c1f8 1 x40a2c1f8 1}\n       {x42ea0000 xc27099e2 x40ac5d10 1 x40ac5d10 1}\n       {x42ec0000 xc259652c x40c41ca0 1 x40c41ca0 1}\n       {x42ee0000 xc23f92ba x40c53488 1 x40c53488 1}\n       {x42f00000 xc228180a x40ccaec8 1 x40ccaec8 1}\n       {x42f20000 xc20c6708 x40dc7a9c 1 x40dc7a9c 1}\n       {x42f40000 xc1e1f2c6 x40e359a4 1 x40e359a4 1}\n       {x42f60000 xc1a7213e x40e0333a 1 x40e0333a 1}\n       {x42f80000 xc163b252 x40def137 1 x40def137 1}\n       {x42fa0000 xc0dea28a x40e3b252 1 x40e3b252 1}\n       {x42fc0000 0 x40e4ce6a 1 x40e4ce6a 1}\n       {x42fe0000 x40eafa4b x40e31c34 1 x40e31c34 1}\n       {x43000000 x41631c34 x40d697c4 1 x40d697c4 1}\n       {x43010000 x41a60a75 x40ca0b50 1 x40ca0b50 1}\n       {x43020000 x41d693c2 x40b678ba 1 x40b678ba 1}\n       {x43030000 x4200a369 x40a90c40 1 x40a90c40 1}\n       {x43040000 x42158cf1 x40982708 1 x40982708 1}\n       {x43050000 x4226ad2b x407e0fa0 1 x407e0fa0 1}\n       {x43060000 x42354ee5 x40671060 1 x40671060 1}\n       {x43070000 x42438f37 x404da8e0 1 x404da8e0 1}\n       {x43080000 x424f0401 x4038b6b0 1 x4038b6b0 1}\n       {x43090000 x425aa60d x403b6220 1 x403b6220 1}\n       {x430a0000 x42667045 x402cce88 1 x402cce88 1}\n       {x430b0000 x42703fde x40136ce8 1 x40136ce8 1}\n       {x430c0000 x4278dde2 x400bf2d0 1 x400bf2d0 1}\n       {x430d0000 x4280df1c x4023e5f0 1 x4023e5f0 1}\n       {x430e0000 x4286ad50 x4029be80 1 x4029be80 1}\n       {x430f0000 x428b7b04 x4022fb60 1 x4022fb60 1}\n       {x43100000 x4290dd06 x40227b10 1 x40227b10 1}\n       {x43110000 x4295a2b5 x40237350 1 x40237350 1}\n       {x43120000 x429b143b x401ace10 1 x401ace10 1}\n       {x43130000 x429f4f96 x3ff199e0 1 x3ff199e0 1}\n       {x43140000 x42a2a10a x3fbfb900 1 x3fbfb900 1}\n       {x43150000 x42a54d5e -}\n       {x43160000 x42a4fafa xbe772c00 1 0 1}}\n      {{x42540000 x446fc847 0 1 xc12012e0 1}\n       {x42580000 x446d44be xc1228100 1 xc1228100 1}\n       {x425c0000 x446ab43f xc13e66c0 1 xc13e66c0 1}\n       {x42600000 x44675188 xc169dbc0 1 xc169dbc0 1}\n       {x42640000 x44636561 xc184bb40 1 xc184bb40 1}\n       {x42680000 x445f05d4 xc18a5740 1 xc18a5740 1}\n       {x426c0000 x445abfed xc183bd60 1 xc183bd60 1}\n       {x42700000 x4456c9fe xc182a6f0 1 xc182a6f0 1}\n       {x42740000 x4452957e xc18b0550 1 xc18b0550 1}\n       {x42780000 x444e19a9 xc1948fa0 1 xc1948fa0 1}\n       {x427c0000 x44494c84 xc1972df0 1 xc1972df0 1}\n       {x42800000 x4444a6ca xc19dd660 1 xc19dd660 1}\n       {x42820000 x443f6f1e xc1a85630 1 xc1a85630 1}\n       {x42840000 x443a2167 xc1af5dc0 1 xc1af5dc0 1}\n       {x42860000 x44347942 xc1c20fa0 1 xc1c20fa0 1}\n       {x42880000 x442e006d xc1bc4790 1 xc1bc4790 1}\n       {x428a0000 x4428b4c9 xc1a7bab0 1 xc1a7bab0 1}\n       {x428c0000 x442384c2 xc1a0be20 1 xc1a0be20 1}\n       {x428e0000 x441ea8e7 xc19d4f00 1 xc19d4f00 1}\n       {x42900000 x4419afd2 xc1ab81c0 1 xc1ab81c0 1}\n       {x42920000 x4413f0cb xc1b6e5d0 1 xc1b6e5d0 1}\n       {x42940000 x440e4175 xc1abec70 1 xc1abec70 1}\n       {x42960000 x44093204 xc19a2d60 1 xc19a2d60 1}\n       {x42980000 x44049e9f xc18988f0 1 xc18988f0 1}\n       {x429a0000 x44009975 xc1789410 1 xc1789410 1}\n       {x429c0000 x43f9b3fd xc16def80 1 xc16def80 1}\n       {x429e0000 x43f253f2 xc177ad20 1 xc177ad20 1}\n       {x42a00000 x43ea392b xc18cc9b0 1 xc18cc9b0 1}\n       {x42a20000 x43e0babc xc19a5880 1 xc19a5880 1}\n       {x42a40000 x43d6ee1b xc1938290 1 xc1938290 1}\n       {x42a60000 x43ce4a6a xc1950b38 1 xc1950b38 1}\n       {x42a80000 x43c44cb4 xc19eb990 1 xc19eb990 1}\n       {x42aa0000 x43ba7338 xc1936420 1 xc1936420 1}\n       {x42ac0000 x43b1e030 xc188be90 1 xc188be90 1}\n       {x42ae0000 x43a95b66 xc18a1780 1 xc18a1780 1}\n       {x42b00000 x43a09d40 xc186d860 1 xc186d860 1}\n       {x42b20000 x4398805a xc1881e40 1 xc1881e40 1}\n       {x42b40000 x438f9978 xc194cb40 1 xc194cb40 1}\n       {x42b60000 x4385e6f2 xc1983b98 1 xc1983b98 1}\n       {x42b80000 x4379240a xc1963f94 1 xc1963f94 1}\n       {x42ba0000 x43663dff xc190ac60 1 xc190ac60 1}\n       {x42bc0000 x4354f8f2 xc1832a00 1 xc1832a00 1}\n       {x42be0000 x4345737f xc1646898 1 xc1646898 1}\n       {x42c00000 x43386bdf xc143f6b8 1 xc143f6b8 1}\n       {x42c20000 x432cf4a8 xc12f5500 1 xc12f5500 1}\n       {x42c40000 x4322813f xc131c420 1 xc131c420 1}\n       {x42c60000 x4316bc24 xc1419550 1 xc1419550 1}\n       {x42c80000 x430a4e95 xc13d9f28 1 xc13d9f28 1}\n       {x42ca0000 x42fe107e xc12e00a4 1 xc12e00a4 1}\n       {x42cc0000 x42e91d01 xc134aa3c 1 xc134aa3c 1}\n       {x42ce0000 x42d0e5ef xc1372dc0 1 xc1372dc0 1}\n       {x42d00000 x42bb5191 xc11cb82c 1 xc11cb82c 1}\n       {x42d20000 x42a9b7e4 xc1047b50 1 xc1047b50 1}\n       {x42d40000 x429a32bd xc0fa60b8 1 xc0fa60b8 1}\n       {x42d60000 x428a6bcd xc0f38954 1 xc0f38954 1}\n       {x42d80000 x42778325 xc0e77e40 1 xc0e77e40 1}\n       {x42da0000 x425af80a xc0f09dac 1 xc0f09dac 1}\n       {x42dc0000 x423b5bba xc0f50e6c 1 xc0f50e6c 1}\n       {x42de0000 x421db46f xc0db628c 1 xc0db628c 1}\n       {x42e00000 x42048317 xc0b4a7ec 1 xc0b4a7ec 1}\n       {x42e20000 x41e114e8 xc09df96c 1 xc09df96c 1}\n       {x42e40000 x41ba0978 xc08f0316 1 xc08f0316 1}\n       {x42e60000 x4199935d xc054e4e8 1 xc054e4e8 1}\n       {x42e80000 x4184d03e xc01da834 1 xc01da834 1}\n       {x42ea0000 x416452a0 xc0225816 1 xc0225816 1}\n       {x42ec0000 x41387471 xc0215a76 1 xc0215a76 1}\n       {x42ee0000 x4113a565 xc0036efc 1 xc0036efc 1}\n       {x42f00000 x40ed79e6 xbfe5490e 1 xbfe5490e 1}\n       {x42f20000 x40b4a643 xbfe9e73f 1 xbfe9e73f 1}\n       {x42f40000 x40710c8d xbfea34f2 1 xbfea34f2 1}\n       {x42f60000 x3ffe2f28 xbf9fa71e 1 xbf9fa71e 1}\n       {x42f80000 x3fa2cadd xbf68c300 1 xbf68c300 1}\n       {x42fa0000 x3e2b6142 xbf0088f2 1 xbf0088f2 1}\n       {x42fc0000 0 xbe3cfbfb 1 xbe3cfbfb 1}\n       {x42fe0000 xbe4e96b4 xbd5b3738 1 xbd5b3738 1}\n       {x43000000 xbe60db4e -}\n       {x43010000 x3e8dc62a x3f51cb33 1 x3f51cb33 1}\n       {x43020000 x3fb5afc9 x3fcd4553 1 x3fcd4553 1}\n       {x43030000 x405efe18 x40065c88 1 x40065c88 1}\n       {x43040000 x40b3c87a x4014cd58 1 x4014cd58 1}\n       {x43050000 x41022632 x401f49d4 1 x401f49d4 1}\n       {x43060000 x41298927 x401dc2e2 1 x401dc2e2 1}\n       {x43070000 x415107a3 x403720b6 1 x403720b6 1}\n       {x43080000 x41828cc1 x4046de12 1 x4046de12 1}\n       {x43090000 x419a3b56 x40411b40 1 x40411b40 1}\n       {x430a0000 x41b2d391 x40332e38 1 x40332e38 1}\n       {x430b0000 x41c706e4 x4023e888 1 x4023e888 1}\n       {x430c0000 x41dbcdb3 x4028ca8c 1 x4028ca8c 1}\n       {x430d0000 x41f13987 x4026e83c 1 x4026e83c 1}\n       {x430e0000 x4202c3e1 x4027f8b4 1 x4027f8b4 1}\n       {x430f0000 x420d9bda x402f6cd0 1 x402f6cd0 1}\n       {x43100000 x4218b17b x403d96d0 1 x403d96d0 1}\n       {x43110000 x42254eb4 x40430cc0 1 x40430cc0 1}\n       {x43120000 x42311313 x402bdb30 1 x402bdb30 1}\n       {x43130000 x423aca1a x40160d70 1 x40160d70 1}\n       {x43140000 x4243d4c1 x3fb39710 1 x3fb39710 1}\n       {x43150000 x4246038b -}\n       {x43160000 x42413402 xbfe6e9b0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke31 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44ece5cb x44533bf8 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke32 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44ece5cb x44533bf8 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2a45d33 0 1 x3f8e1a50 1}\n       {x42580000 xc2a1c278 x3fd7d7a0 1 x3fd7d7a0 1}\n       {x425c0000 xc29d9e76 x401cf0a0 1 x401cf0a0 1}\n       {x42600000 xc297f36e x4086ff18 1 x4086ff18 1}\n       {x42640000 xc28cbe93 x40a99838 1 x40a99838 1}\n       {x42680000 xc282c067 x40b95d80 1 x40b95d80 1}\n       {x426c0000 xc26b25c6 x408c8620 1 x408c8620 1}\n       {x42700000 xc2625f46 x40138fb8 1 x40138fb8 1}\n       {x42740000 xc258b3cf x403cfb48 1 x403cfb48 1}\n       {x42780000 xc24abfdd x406d9710 1 x406d9710 1}\n       {x427c0000 xc23b00ed x40746bd0 1 x40746bd0 1}\n       {x42800000 xc22c3263 x40738450 1 x40738450 1}\n       {x42820000 xc21c9063 x40899c40 1 x40899c40 1}\n       {x42840000 xc209cb53 -}\n       {x42860000 xc20ab9a5 xbee5bdc0 1 xbee5bdc0 1}\n       {x42880000 xc20d624a -}\n       {x428a0000 xc20caa72 -}\n       {x428c0000 xc211263f -}\n       {x428e0000 xc1ff7043 x4094b7cc 1 x4094b7cc 1}\n       {x42900000 xc1d7f098 x409ee20e 1 x409ee20e 1}\n       {x42920000 xc1afff3c x409c3668 1 x409c3668 1}\n       {x42940000 xc189d564 x4082889c 1 x4082889c 1}\n       {x42960000 xc15d75dc x405ea3c4 1 x405ea3c4 1}\n       {x42980000 xc12458e6 x40692a05 1 x40692a05 1}\n       {x429a0000 xc0d1c1b3 x405d4ea2 1 x405d4ea2 1}\n       {x429c0000 xc056c654 x3fd97fac 1 x3fd97fac 1}\n       {x429e0000 xc0328662 x3f4ca677 1 x3f4ca677 1}\n       {x42a00000 xbfe0e631 x3f808c0e 1 x3f808c0e 1}\n       {x42a20000 xbf47e950 x3f87224f 1 x3f87224f 1}\n       {x42a40000 x3eb579b3 x3f74a59f 1 x3f74a59f 1}\n       {x42a60000 x3f90b0f7 x3eef2412 1 x3eef2412 1}\n       {x42a80000 x3fa4f076 x3e15464c 1 x3e15464c 1}\n       {x42aa0000 x3fb6028a -}\n       {x42ac0000 x3f970403 xbf39f72a 1 xbf39f72a 1}\n       {x42ae0000 xbeb273a8 xbff6034c 1 xbff6034c 1}\n       {x42b00000 xc02a814b xc023a620 1 xc023a620 1}\n       {x42b20000 xc0aecd5b xc0293710 1 xc0293710 1}\n       {x42b40000 xc0fe77b6 xc02f89ad 1 xc02f89ad 1}\n       {x42b60000 xc12f2b84 xc03b2bd0 1 xc03b2bd0 1}\n       {x42b80000 xc15cd1c3 xc040f84c 1 xc040f84c 1}\n       {x42ba0000 xc187d3d5 xc0466f82 1 xc0466f82 1}\n       {x42bc0000 xc1a004c2 xc04a6ac0 1 xc04a6ac0 1}\n       {x42be0000 xc1ba6e85 xc055f358 1 xc055f358 1}\n       {x42c00000 xc1d58198 xc05cdf58 1 xc05cdf58 1}\n       {x42c20000 xc1f1a65b xc00f5d64 1 xc00f5d64 1}\n       {x42c40000 xc1f958f1 xbf694710 1 xbf694710 1}\n       {x42c60000 xc2001d66 xbf532850 1 xbf532850 1}\n       {x42c80000 xc20345bb xbf3aaa20 1 xbf3aaa20 1}\n       {x42ca0000 xc205f2b7 xbf20f6c0 1 xbf20f6c0 1}\n       {x42cc0000 xc2084d71 xbf314c80 1 xbf314c80 1}\n       {x42ce0000 xc20b7d1b xbf8f64e0 1 xbf8f64e0 1}\n       {x42d00000 xc21143bf xbfb8e360 1 xbfb8e360 1}\n       {x42d20000 xc2170b51 xbfb6d890 1 xbfb6d890 1}\n       {x42d40000 xc21cb148 xbfdd9e30 1 xbfdd9e30 1}\n       {x42d60000 xc224e534 xbfd55ed0 1 xbfd55ed0 1}\n       {x42d80000 xc22a0735 xbf69d840 1 xbf69d840 1}\n       {x42da0000 xc22c33f6 xbe293200 1 xbe293200 1}\n       {x42dc0000 xc22c6c5c -}\n       {x42de0000 xc22b4761 x3f131b20 1 x3f131b20 1}\n       {x42e00000 xc227d383 x3f96ea60 1 x3f96ea60 1}\n       {x42e20000 xc221d8bb x3fc41c40 1 x3fc41c40 1}\n       {x42e40000 xc21b91bf x3fd87970 1 x3fd87970 1}\n       {x42e60000 xc2145124 x40008758 1 x40008758 1}\n       {x42e80000 xc20b80d4 x400b0d38 1 x400b0d38 1}\n       {x42ea0000 xc202ef7d x40136e88 1 x40136e88 1}\n       {x42ec0000 xc1f22606 x40226f7c 1 x40226f7c 1}\n       {x42ee0000 xc1dd431b x403e19e4 1 x403e19e4 1}\n       {x42f00000 xc1c29f8d x405e28b8 1 x405e28b8 1}\n       {x42f20000 xc1a5b8ed x40731e28 1 x40731e28 1}\n       {x42f40000 xc185d803 x408166ad 1 x408166ad 1}\n       {x42f60000 xc14a0b2d x40846b8e 1 x40846b8e 1}\n       {x42f80000 xc1074478 x4085c046 1 x4085c046 1}\n       {x42fa0000 xc08895ce x40874478 1 x40874478 1}\n       {x42fc0000 0 x4085e930 1 x4085e930 1}\n       {x42fe0000 x40833c91 x408498ce 1 x408498ce 1}\n       {x43000000 x410498ce x408089ce 1 x408089ce 1}\n       {x43010000 x41422816 x40682d92 1 x40682d92 1}\n       {x43020000 x4178af97 x405b6ce4 1 x405b6ce4 1}\n       {x43030000 x4197ef44 x4043f716 1 x4043f716 1}\n       {x43040000 x41ad5591 x402a3528 1 x402a3528 1}\n       {x43050000 x41c27c8e x4016831c 1 x4016831c 1}\n       {x43060000 x41d2f658 x3ffc6a18 1 x3ffc6a18 1}\n       {x43070000 x41e209d1 x3fcbfbf0 1 x3fcbfbf0 1}\n       {x43080000 x41ec75d6 x3fa351e8 1 x3fa351e8 1}\n       {x43090000 x41f6740e x3fb184a0 1 x3fb184a0 1}\n       {x430a0000 x42015335 x3faf7300 1 x3faf7300 1}\n       {x430b0000 x42063137 x3fb9a470 1 x3fb9a470 1}\n       {x430c0000 x420ced7c x3fcfc220 1 x3fcfc220 1}\n       {x430d0000 x42132d59 x3fcae410 1 x3fcae410 1}\n       {x430e0000 x42199bbd x3fe59a00 1 x3fe59a00 1}\n       {x430f0000 x422186f9 x3fffa690 1 x3fffa690 1}\n       {x43100000 x42299626 x4002bcb0 1 x4002bcb0 1}\n       {x43110000 x4231de8f x3ffad9c0 1 x3ffad9c0 1}\n       {x43120000 x423943c2 x3fe09730 1 x3fe09730 1}\n       {x43130000 x423fe802 x3fb66a60 1 x3fb66a60 1}\n       {x43140000 x4244aa68 x3f3ff380 1 x3f3ff380 1}\n       {x43150000 x4245e79e -}\n       {x43160000 x4241688b xbfd7d390 1 0 1}}\n      {{x42540000 x4432ccc9 0 1 xc10cb2a0 1}\n       {x42580000 x4430994a xc10d3a00 1 xc10d3a00 1}\n       {x425c0000 x442e62f9 xc104bd20 1 xc104bd20 1}\n       {x42600000 x442c7361 xc11e5880 1 xc11e5880 1}\n       {x42640000 x44297035 xc13ccce0 1 xc13ccce0 1}\n       {x42680000 x44268cfa xc15674c0 1 xc15674c0 1}\n       {x426c0000 x4422bc8f xc144adc0 1 xc144adc0 1}\n       {x42700000 x4420678c xc1158200 1 xc1158200 1}\n       {x42740000 x441e107f xc1301900 1 xc1301900 1}\n       {x42780000 x441ae6c4 xc14f0740 1 xc14f0740 1}\n       {x427c0000 x44179845 xc1537da0 1 xc1537da0 1}\n       {x42800000 x44144ad7 xc1565f60 1 xc1565f60 1}\n       {x42820000 x4410e54a xc16ae080 1 xc16ae080 1}\n       {x42840000 x440cf3d3 xc149db80 1 xc149db80 1}\n       {x42860000 x440a966e xc10ef260 1 xc10ef260 1}\n       {x42880000 x44087c40 xc111aa80 1 xc111aa80 1}\n       {x428a0000 x4406091a xc115ca20 1 xc115ca20 1}\n       {x428c0000 x4403cdef xc14a0d60 1 xc14a0d60 1}\n       {x428e0000 x43ff715e xc18513f0 1 xc18513f0 1}\n       {x42900000 x43f6f960 xc1886088 1 xc1886088 1}\n       {x42920000 x43ee654d xc18941d0 1 xc18941d0 1}\n       {x42940000 x43e5d126 xc183b740 1 xc183b740 1}\n       {x42960000 x43ddee65 xc1747950 1 xc1747950 1}\n       {x42980000 x43d68991 xc168c480 1 xc168c480 1}\n       {x429a0000 x43cf621d xc1570810 1 xc1570810 1}\n       {x429c0000 x43c91910 xc14a8b70 1 xc14a8b70 1}\n       {x429e0000 x43c2b966 xc14d4fc0 1 xc14d4fc0 1}\n       {x42a00000 x43bc4414 xc151bb20 1 xc151bb20 1}\n       {x42a20000 x43b59db4 xc161cc10 1 xc161cc10 1}\n       {x42a40000 x43ae2753 xc1758ae0 1 xc1758ae0 1}\n       {x42a60000 x43a64506 xc17f2400 1 xc17f2400 1}\n       {x42a80000 x439e3513 xc17df8f0 1 xc17df8f0 1}\n       {x42aa0000 x43966577 xc16fe440 1 xc16fe440 1}\n       {x42ac0000 x438f36cf xc15bf3c0 1 xc15bf3c0 1}\n       {x42ae0000 x4388a63b xc14b0920 1 xc14b0920 1}\n       {x42b00000 x4382863d xc143e070 1 xc143e070 1}\n       {x42b20000 x4378d068 xc1467568 1 xc1467568 1}\n       {x42b40000 x436c3dcd xc14c70b8 1 xc14c70b8 1}\n       {x42b60000 x435f4251 xc1555ab0 1 xc1555ab0 1}\n       {x42b80000 x43519277 xc1542800 1 xc1542800 1}\n       {x42ba0000 x4344bd51 xc142ec18 1 xc142ec18 1}\n       {x42bc0000 x433934f4 xc1339068 1 xc1339068 1}\n       {x42be0000 x432e4b44 xc11e1ea8 1 xc11e1ea8 1}\n       {x42c00000 x4325711f xc10dba10 1 xc10dba10 1}\n       {x42c20000 x431c9402 xc1032a60 1 xc1032a60 1}\n       {x42c40000 x43150bd3 xc0ee3620 1 xc0ee3620 1}\n       {x42c60000 x430db0a0 xc0f38520 1 xc0f38520 1}\n       {x42c80000 x4305d381 xc0f90620 1 xc0f90620 1}\n       {x42ca0000 x42fc407c xc0f21de0 1 xc0f21de0 1}\n       {x42cc0000 x42ed6346 xc0e36f80 1 xc0e36f80 1}\n       {x42ce0000 x42dfd28c xc0d67278 1 xc0d67278 1}\n       {x42d00000 x42d294f7 xc0c9cda0 1 xc0c9cda0 1}\n       {x42d20000 x42c698d8 xc0b78438 1 xc0b78438 1}\n       {x42d40000 x42bba470 xc0a734f8 1 xc0a734f8 1}\n       {x42d60000 x42b1b239 xc0a175d0 1 xc0a175d0 1}\n       {x42d80000 x42a775b6 xc0b59ce8 1 xc0b59ce8 1}\n       {x42da0000 x429afe9c xc0c6f9f0 1 xc0c6f9f0 1}\n       {x42dc0000 x428e9678 xc0ce6938 1 xc0ce6938 1}\n       {x42de0000 x42813175 xc0bae54c 1 xc0bae54c 1}\n       {x42e00000 x426e739d xc0a7ee7c 1 xc0a7ee7c 1}\n       {x42e20000 x4258674b xc09a6968 1 xc09a6968 1}\n       {x42e40000 x4247d943 xc084950c 1 xc084950c 1}\n       {x42e60000 x42374208 xc0863d70 1 xc0863d70 1}\n       {x42e80000 x422649e7 xc0724bf0 1 xc0724bf0 1}\n       {x42ea0000 x4218f88a xc0518898 1 xc0518898 1}\n       {x42ec0000 x420c18d4 xc0499b04 1 xc0499b04 1}\n       {x42ee0000 x41ff8a53 xc07868a0 1 xc07868a0 1}\n       {x42f00000 x41da1780 xc0964098 1 xc0964098 1}\n       {x42f20000 x41b46a07 xc094f55e 1 xc094f55e 1}\n       {x42f40000 x418f9cd1 xc08be92b 1 xc08be92b 1}\n       {x42f60000 x415ceae3 xc0922899 1 xc0922899 1}\n       {x42f80000 x410d1109 xc09a419b 1 xc09a419b 1}\n       {x42fa0000 x40855290 xc08d1109 1 xc08d1109 1}\n       {x42fc0000 0 xc06dd904 1 xc06dd904 1}\n       {x42fe0000 xc0510ce7 xc0616b5c 1 xc0616b5c 1}\n       {x43000000 xc0e16b5c xc06cc618 1 xc06cc618 1}\n       {x43010000 xc12aa646 xc047e026 1 xc047e026 1}\n       {x43020000 xc154a5c1 xc0464394 1 xc0464394 1}\n       {x43030000 xc186e408 xc02accaa 1 xc02accaa 1}\n       {x43040000 xc195060b xc010c9e0 1 xc010c9e0 1}\n       {x43050000 xc1ab1680 xc0207a48 1 xc0207a48 1}\n       {x43060000 xc1bd249d xc0231fbc 1 xc0231fbc 1}\n       {x43070000 xc1d3de6f xc00ce7ec 1 xc00ce7ec 1}\n       {x43080000 xc1e05e98 xbfc674c8 1 xbfc674c8 1}\n       {x43090000 xc1ecad08 xbfd20870 1 xbfd20870 1}\n       {x430a0000 xc1fa9fa6 xbfbff1e0 1 xbfbff1e0 1}\n       {x430b0000 xc20255a2 xbfee10a0 1 xbfee10a0 1}\n       {x430c0000 xc20c30dd xbfe1f5b0 1 xbfe1f5b0 1}\n       {x430d0000 xc21074fd xbfa568f0 1 xbfa568f0 1}\n       {x430e0000 xc216876c xbfbd23f0 1 xbfbd23f0 1}\n       {x430f0000 xc21c473c xbfe74dc0 1 xbfe74dc0 1}\n       {x43100000 xc224fc48 xbfebda10 1 xbfebda10 1}\n       {x43110000 xc22b04dd xbfb062b0 1 xbfb062b0 1}\n       {x43120000 xc2300273 xbfc82b80 1 xbfc82b80 1}\n       {x43130000 xc2378795 xbffbdb80 1 xbffbdb80 1}\n       {x43140000 xc23fc02b xc026b8a8 1 xc026b8a8 1}\n       {x43150000 xc24c5eaa xc059cc60 1 xc059cc60 1}\n       {x43160000 xc25af9b7 xc071a308 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke33 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x447c34fe x444f020c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke34 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x447c34fe x444f020c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3e8c6a9 0 1 x40cc53d0 1}\n       {x42580000 xc3e57363 x40e5cce0 1 x40e5cce0 1}\n       {x425c0000 xc3e19842 x41059f50 1 x41059f50 1}\n       {x42600000 xc3dd196e x411f4740 1 x411f4740 1}\n       {x42640000 xc3d7a3ce x412f4570 1 x412f4570 1}\n       {x42680000 xc3d22517 x412cb7f0 1 x412cb7f0 1}\n       {x426c0000 xc3ccd84f x41297a80 1 x41297a80 1}\n       {x42700000 xc3c78d6f x412fc9b0 1 x412fc9b0 1}\n       {x42740000 xc3c1dbb4 x412da510 1 x412da510 1}\n       {x42780000 xc3bcb31e x41247230 1 x41247230 1}\n       {x427c0000 xc3b79491 x4127bfa0 1 x4127bfa0 1}\n       {x42800000 xc3b23724 x41222480 1 x41222480 1}\n       {x42820000 xc3ad7249 x410cfd40 1 x410cfd40 1}\n       {x42840000 xc3a96750 x41007100 1 x41007100 1}\n       {x42860000 xc3a56b39 x41053c10 1 x41053c10 1}\n       {x42880000 xc3a1138f x41072380 1 x41072380 1}\n       {x428a0000 xc39cf901 x40fc6080 1 x40fc6080 1}\n       {x428c0000 xc399308b x40e90680 1 x40e90680 1}\n       {x428e0000 xc395b0cd x40dd3240 1 x40dd3240 1}\n       {x42900000 xc39246f9 x40effd80 1 x40effd80 1}\n       {x42920000 xc38e30e1 x40f1e560 1 x40f1e560 1}\n       {x42940000 xc38ab7ce x40c8f600 1 x40c8f600 1}\n       {x42960000 xc387e931 x40a6d140 1 x40a6d140 1}\n       {x42980000 xc3858144 x409740a0 1 x409740a0 1}\n       {x429a0000 xc3832f2c x408c0f00 1 x408c0f00 1}\n       {x429c0000 xc38120cc x407ab6a0 1 x407ab6a0 1}\n       {x429e0000 xc37e88a3 x40755a60 1 x40755a60 1}\n       {x42a00000 xc37a96c5 x4085cf80 1 x4085cf80 1}\n       {x42a20000 xc3762bab x409fb290 1 x409fb290 1}\n       {x42a40000 xc3709b9c x40c59fb0 1 x40c59fb0 1}\n       {x42a60000 xc369d1b0 x40ba4eb0 1 x40ba4eb0 1}\n       {x42a80000 xc364f6b1 x409e5070 1 x409e5070 1}\n       {x42aa0000 xc35feca9 x409c1810 1 x409c1810 1}\n       {x42ac0000 xc35b3530 x40893710 1 x40893710 1}\n       {x42ae0000 xc3575938 x40576c20 1 x40576c20 1}\n       {x42b00000 xc35479cf x402176a0 1 x402176a0 1}\n       {x42b20000 xc3524d83 x3ff06480 1 x3ff06480 1}\n       {x42b40000 xc350b83d x3fdc2c00 1 x3fdc2c00 1}\n       {x42b60000 xc34edcd3 x4006ca60 1 x4006ca60 1}\n       {x42b80000 xc34c81ea x4009ecc0 1 x4009ecc0 1}\n       {x42ba0000 xc34a8d6d x40046c40 1 x40046c40 1}\n       {x42bc0000 xc3485e88 x401463e0 1 x401463e0 1}\n       {x42be0000 xc345ea4e x4010dd20 1 x4010dd20 1}\n       {x42c00000 xc343d79f x40052760 1 x40052760 1}\n       {x42c20000 xc341c113 x4060bc20 1 x4060bc20 1}\n       {x42c40000 xc33cd1be x40a785b0 1 x40a785b0 1}\n       {x42c60000 xc33748b8 x40b3b140 1 x40b3b140 1}\n       {x42c80000 xc33196aa x40b23740 1 x40b23740 1}\n       {x42ca0000 xc32c2544 x40ac80b0 1 x40ac80b0 1}\n       {x42cc0000 xc326ce9f x40af0460 1 x40af0460 1}\n       {x42ce0000 xc32134fe x40ad5890 1 x40ad5890 1}\n       {x42d00000 xc31bf916 x409eae00 1 x409eae00 1}\n       {x42d20000 xc3174a1e x40953aa0 1 x40953aa0 1}\n       {x42d40000 xc312a56c x40964360 1 x40964360 1}\n       {x42d60000 xc30de5e8 x4099a510 1 x4099a510 1}\n       {x42d80000 xc3090b1b x409c98f0 1 x409c98f0 1}\n       {x42da0000 xc3041c59 x40a556e8 1 x40a556e8 1}\n       {x42dc0000 xc2fd6b59 x40b0fef0 1 x40b0fef0 1}\n       {x42de0000 xc2f218d4 x40bcfa38 1 x40bcfa38 1}\n       {x42e00000 xc2e5cc12 x40c64560 1 x40c64560 1}\n       {x42e20000 xc2d95028 x40ca4f58 1 x40ca4f58 1}\n       {x42e40000 xc2cc8227 x40d077f0 1 x40d077f0 1}\n       {x42e60000 xc2bf412a x40d70e18 1 x40d70e18 1}\n       {x42e80000 xc2b1a064 x40e0a178 1 x40e0a178 1}\n       {x42ea0000 xc2a32cfb x40ee1f08 1 x40ee1f08 1}\n       {x42ec0000 xc293dc83 x4100ad98 1 x4100ad98 1}\n       {x42ee0000 xc2830195 x410483be 1 x410483be 1}\n       {x42f00000 xc2657727 x410fe5a2 1 x410fe5a2 1}\n       {x42f20000 xc23e1059 x4118a7ea 1 x4118a7ea 1}\n       {x42f40000 xc2192332 x411cdfba 1 x411cdfba 1}\n       {x42f60000 xc1df40f8 x4119fea1 1 x4119fea1 1}\n       {x42f80000 xc19847c3 x41145298 1 x41145298 1}\n       {x42fa0000 xc115dcc1 x411847c3 1 x411847c3 1}\n       {x42fc0000 0 x4117f60a 1 x4117f60a 1}\n       {x42fe0000 x411a0f53 x41178067 1 x41178067 1}\n       {x43000000 x41978067 x41105b3a 1 x41105b3a 1}\n       {x43010000 x41dd62e3 x41089221 1 x41089221 1}\n       {x43020000 x42100944 x41008d9f 1 x41008d9f 1}\n       {x43030000 x422ef841 x40eee590 1 x40eee590 1}\n       {x43040000 x424bc2a8 x40db4b7c 1 x40db4b7c 1}\n       {x43050000 x4265cb20 x40c12cdc 1 x40c12cdc 1}\n       {x43060000 x427c0ddf x40a721f0 1 x40a721f0 1}\n       {x43070000 x4287c9ce x40955a8c 1 x40955a8c 1}\n       {x43080000 x4290b241 x408a2a28 1 x408a2a28 1}\n       {x43090000 x42990f13 x408060b8 1 x408060b8 1}\n       {x430a0000 x42a0be58 x406c4380 1 x406c4380 1}\n       {x430b0000 x42a7d34b x40597970 1 x40597970 1}\n       {x430c0000 x42ae55ef x404b4160 1 x404b4160 1}\n       {x430d0000 x42b48761 x404ca180 1 x404ca180 1}\n       {x430e0000 x42bb2007 x40593800 1 x40593800 1}\n       {x430f0000 x42c21ae1 x405eb080 1 x405eb080 1}\n       {x43100000 x42c90b0f x40607410 1 x40607410 1}\n       {x43110000 x42d02222 x405deb20 1 x405deb20 1}\n       {x43120000 x42d6e9c1 x40543800 1 x40543800 1}\n       {x43130000 x42dd65a2 x4040bf50 1 x4040bf50 1}\n       {x43140000 x42e2f5b6 x401510c0 1 x401510c0 1}\n       {x43150000 x42e6b6ae x3fbd4780 1 x3fbd4780 1}\n       {x43160000 x42e8dff2 x3f61ab80 1 0 1}}\n      {{x42540000 x44872dc0 0 1 xc15dde20 1}\n       {x42580000 x448560af xc177dd40 1 xc177dd40 1}\n       {x425c0000 x44834e4b xc186c820 1 xc186c820 1}\n       {x42600000 x44812a6e xc1880da0 1 xc1880da0 1}\n       {x42640000 x447e1bbc xc18475d0 1 xc18475d0 1}\n       {x42680000 x447a0d7f xc18744a0 1 xc18744a0 1}\n       {x426c0000 x4475a772 xc1880700 1 xc1880700 1}\n       {x42700000 x44718d0f xc189fb90 1 xc189fb90 1}\n       {x42740000 x446d07b9 xc19ce570 1 xc19ce570 1}\n       {x42780000 x4467beb8 xc1acef30 1 xc1acef30 1}\n       {x427c0000 x446238c6 xc1be94d0 1 xc1be94d0 1}\n       {x42800000 x445bd56b xc1c6b9b0 1 xc1c6b9b0 1}\n       {x42820000 x4455cd2b xc1c2ccd0 1 xc1c2ccd0 1}\n       {x42840000 x444fa89e xc1c65ed0 1 xc1c65ed0 1}\n       {x42860000 x4449673e xc1cf5c20 1 xc1cf5c20 1}\n       {x42880000 x4442b2dc xc1ce4bc0 1 xc1ce4bc0 1}\n       {x428a0000 x443c8282 xc1c8a470 1 xc1c8a470 1}\n       {x428c0000 x44362895 xc1cca540 1 xc1cca540 1}\n       {x428e0000 x442fb82e xc1c8a640 1 xc1c8a640 1}\n       {x42900000 x44299e31 xc1caae50 1 xc1caae50 1}\n       {x42920000 x44230d49 xc1ce89e0 1 xc1ce89e0 1}\n       {x42940000 x441cb593 xc1c73490 1 xc1c73490 1}\n       {x42960000 x44169a00 xc1c3b360 1 xc1c3b360 1}\n       {x42980000 x44107a5d xc1bc57f0 1 xc1bc57f0 1}\n       {x429a0000 x440ad481 xc1b12be0 1 xc1b12be0 1}\n       {x429c0000 x4405679f xc1ac10c0 1 xc1ac10c0 1}\n       {x429e0000 x44001375 xc1a9c020 1 xc1a9c020 1}\n       {x42a00000 x43f5973a xc1a8f9c0 1 xc1a8f9c0 1}\n       {x42a20000 x43eb07b2 xc1a9a780 1 xc1a9a780 1}\n       {x42a40000 x43e0624a xc1a787c0 1 xc1a787c0 1}\n       {x42a60000 x43d616ba xc1a4e4e8 1 xc1a4e4e8 1}\n       {x42a80000 x43cbc5ad xc1a292f0 1 xc1a292f0 1}\n       {x42aa0000 x43c1c45c xc1a12f88 1 xc1a12f88 1}\n       {x42ac0000 x43b79fbc xc1a2c408 1 xc1a2c408 1}\n       {x42ae0000 x43ad6bdb xc1a1a008 1 xc1a1a008 1}\n       {x42b00000 x43a36bbb xc1a16c00 1 xc1a16c00 1}\n       {x42b20000 x43993e5b xc1a516f0 1 xc1a516f0 1}\n       {x42b40000 x438ec8dd xc1a9a030 1 xc1a9a030 1}\n       {x42b60000 x43840a55 xc1ac1238 1 xc1ac1238 1}\n       {x42b80000 x43728d2c xc1ab8a28 1 xc1ab8a28 1}\n       {x42ba0000 x435d3220 xc1a5b570 1 xc1a5b570 1}\n       {x42bc0000 x43491fd0 xc19d32d0 1 xc19d32d0 1}\n       {x42be0000 x4335e56c xc193139c 1 xc193139c 1}\n       {x42c00000 x43245ae9 xc1870100 1 xc1870100 1}\n       {x42c20000 x4314252c xc17735b8 1 xc17735b8 1}\n       {x42c40000 x43057432 xc16be75c 1 xc16be75c 1}\n       {x42c60000 x42ed5081 xc16ae414 1 xc16ae414 1}\n       {x42c80000 x42d02f5f xc16a2578 1 xc16a2578 1}\n       {x42ca0000 x42b2c723 xc169447c 1 xc169447c 1}\n       {x42cc0000 x4295de40 xc1666d36 1 xc1666d36 1}\n       {x42ce0000 x427257ab xc15f32cc 1 xc15f32cc 1}\n       {x42d00000 x423c231a xc14eddb0 1 xc14eddb0 1}\n       {x42d20000 x420ae8d3 xc13bcd3a 1 xc13bcd3a 1}\n       {x42d40000 x41bc78fa xc12acf30 1 xc12acf30 1}\n       {x42d60000 x415604ec xc11872ed 1 xc11872ed 1}\n       {x42d80000 x40901835 xc1087542 1 xc1087542 1}\n       {x42da0000 xc06b9663 xc0fd047c 1 xc0fd047c 1}\n       {x42dc0000 xc134f862 xc0de6a2f 1 xc0de6a2f 1}\n       {x42de0000 xc18ca7e4 xc0a8c58a 1 xc0a8c58a 1}\n       {x42e00000 xc1aedef6 xc0576674 1 xc0576674 1}\n       {x42e20000 xc1c28181 xbfec7080 1 xbfec7080 1}\n       {x42e40000 xc1cc6d06 xbf238f00 1 xbf238f00 1}\n       {x42e60000 xc1ce212e -}\n       {x42e80000 xc1c493bd x3fc72188 1 x3fc72188 1}\n       {x42ea0000 xc1b53cfd x3fe8d4c8 1 x3fe8d4c8 1}\n       {x42ec0000 xc1a77924 x3fefa030 1 x3fefa030 1}\n       {x42ee0000 xc19748f7 x40120b10 1 x40120b10 1}\n       {x42f00000 xc182f660 x3ffd47f0 1 x3ffd47f0 1}\n       {x42f20000 xc16f3ff2 x3ff2788c 1 x3ff2788c 1}\n       {x42f40000 xc1494e9d x4004601c 1 x4004601c 1}\n       {x42f60000 xc12d0fe4 x40282d03 1 x40282d03 1}\n       {x42f80000 xc0ea7037 x4052330d 1 x4052330d 1}\n       {x42fa0000 xc087ecbb x406a7037 1 x406a7037 1}\n       {x42fc0000 0 x408c1ca8 1 x408c1ca8 1}\n       {x42fe0000 x40904c96 x40906ec0 1 x40906ec0 1}\n       {x43000000 x41106ec0 x40960efa 1 x40960efa 1}\n       {x43010000 x415e3545 x40a5162e 1 x40a5162e 1}\n       {x43020000 x419ac277 x40b8fd55 1 x40b8fd55 1}\n       {x43030000 x41cb994d x40c65a70 1 x40c65a70 1}\n       {x43040000 x41fdefaf x40ca484a 1 x40ca484a 1}\n       {x43050000 x42185eb9 x40cdd8c2 1 x40cdd8c2 1}\n       {x43060000 x42326e08 x40d57e0c 1 x40d57e0c 1}\n       {x43070000 x424dbe3c x40e582bc 1 x40e582bc 1}\n       {x43080000 x426bceb7 x40f3a9d8 1 x40f3a9d8 1}\n       {x43090000 x42855459 x40f48344 1 x40f48344 1}\n       {x430a0000 x429477c4 x40e7e3c0 1 x40e7e3c0 1}\n       {x430b0000 x42a250d1 x40d72fb0 1 x40d72fb0 1}\n       {x430c0000 x42af5dba x40db5a08 1 x40db5a08 1}\n       {x430d0000 x42bdbc12 x40e57a20 1 x40e57a20 1}\n       {x430e0000 x42cc0cfe x40e6f158 1 x40e6f158 1}\n       {x430f0000 x42da9a3d x40e406d0 1 x40e406d0 1}\n       {x43100000 x42e88dd8 x40ddc388 1 x40ddc388 1}\n       {x43110000 x42f652ae x40d55eb0 1 x40d55eb0 1}\n       {x43120000 x43019cd7 x40c60110 1 x40c60110 1}\n       {x43130000 x43078968 x40b08640 1 x40b08640 1}\n       {x43140000 x430ca53b x409bd810 1 x409bd810 1}\n       {x43150000 x431146e9 x405ef100 1 x405ef100 1}\n       {x43160000 x43139cc3 x3fe17280 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke35 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d63ff8 x44540eea 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke36 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d63ff8 x44540eea 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc345299a 0 1 x40a63468 1}\n       {x42580000 xc33fc6e0 x40b89cf0 1 x40b89cf0 1}\n       {x425c0000 xc3399fcb x40c141a0 1 x40c141a0 1}\n       {x42600000 xc333b2c6 x40be9f70 1 x40be9f70 1}\n       {x42640000 xc32db5d4 x40d57ba0 1 x40d57ba0 1}\n       {x42680000 xc3265b0c x40df8060 1 x40df8060 1}\n       {x426c0000 xc31fbdce x40cfe3e0 1 x40cfe3e0 1}\n       {x42700000 xc3195cce x40cb30e0 1 x40cb30e0 1}\n       {x42740000 xc3130ac0 x40be7b20 1 x40be7b20 1}\n       {x42780000 xc30d751c x40c6e990 1 x40c6e990 1}\n       {x427c0000 xc3069c27 x40de0848 1 x40de0848 1}\n       {x42800000 xc2ff292f x40d22088 1 x40d22088 1}\n       {x42820000 xc2f2f43d x40afed78 1 x40afed78 1}\n       {x42840000 xc2e92b80 x409b2a38 1 x409b2a38 1}\n       {x42860000 xc2df8ef6 x409b7960 1 x409b7960 1}\n       {x42880000 xc2d5bc54 x409d4b98 1 x409d4b98 1}\n       {x428a0000 xc2cbe583 x40999118 1 x40999118 1}\n       {x428c0000 xc2c28a31 x4098b770 1 x4098b770 1}\n       {x428e0000 xc2b8ce95 x409f6650 1 x409f6650 1}\n       {x42900000 xc2ae9d67 x40a12b60 1 x40a12b60 1}\n       {x42920000 xc2a4a929 x409baa58 1 x409baa58 1}\n       {x42940000 xc29b281c x40932ff0 1 x40932ff0 1}\n       {x42960000 xc292432b x408d7f38 1 x408d7f38 1}\n       {x42980000 xc2897835 x4081a208 1 x4081a208 1}\n       {x429a0000 xc2820eea x40633718 1 x40633718 1}\n       {x429c0000 xc2768987 x3ff13b60 1 x3ff13b60 1}\n       {x429e0000 xc274063e x3f5b6800 1 x3f5b6800 1}\n       {x42a00000 xc26fae47 x3f9fba00 1 x3f9fba00 1}\n       {x42a20000 xc26a0a9e x3fc05130 1 x3fc05130 1}\n       {x42a40000 xc263a934 x3fc600c0 1 x3fc600c0 1}\n       {x42a60000 xc25daa92 x3f8e1690 1 x3f8e1690 1}\n       {x42a80000 xc25ac7cb x3f271dc0 1 x3f271dc0 1}\n       {x42aa0000 xc25871a4 -}\n       {x42ac0000 xc258d532 xbe955500 1 xbe955500 1}\n       {x42ae0000 xc25d4f64 xbfba95a0 1 xbfba95a0 1}\n       {x42b00000 xc2647e8c xc003c938 1 xc003c938 1}\n       {x42b20000 xc26dc88b xc004c088 1 xc004c088 1}\n       {x42b40000 xc275169d xbfe95af0 1 xbfe95af0 1}\n       {x42b60000 xc27c5e3a xbfd15bf0 1 xbfd15bf0 1}\n       {x42b80000 xc281162e xbfc4a6c0 1 xbfc4a6c0 1}\n       {x42ba0000 xc2845453 xbfc8bee0 1 xbfc8bee0 1}\n       {x42bc0000 xc2875c25 xbfced740 1 xbfced740 1}\n       {x42be0000 xc28acb0d xbfd5fc60 1 xbfd5fc60 1}\n       {x42c00000 xc28e0c08 xbfd87900 1 xbfd87900 1}\n       {x42c20000 xc2918ed5 -}\n       {x42c40000 xc2909f14 x3f184200 1 x3f184200 1}\n       {x42c60000 xc28f2dcd x3f2f9d40 1 x3f2f9d40 1}\n       {x42c80000 xc28de09f x3f47d4c0 1 x3f47d4c0 1}\n       {x42ca0000 xc28c0e7a x3f593840 1 x3f593840 1}\n       {x42cc0000 xc28a7bbe x3f40b340 1 x3f40b340 1}\n       {x42ce0000 xc2890bad x3f19b9c0 1 x3f19b9c0 1}\n       {x42d00000 xc28814d7 x3f1ecf00 1 x3f1ecf00 1}\n       {x42d20000 xc2869071 x3f107e80 1 x3f107e80 1}\n       {x42d40000 xc285d2dd x3edc5d00 1 x3edc5d00 1}\n       {x42d60000 xc284d7b7 x3f2b7a40 1 x3f2b7a40 1}\n       {x42d80000 xc28324f4 x3f87e080 1 x3f87e080 1}\n       {x42da0000 xc28098b3 x3fb63460 1 x3fb63460 1}\n       {x42dc0000 xc27ae6a2 x3fd2bf70 1 x3fd2bf70 1}\n       {x42de0000 xc274056f x3fee37c0 1 x3fee37c0 1}\n       {x42e00000 xc26c0326 x400637e0 1 x400637e0 1}\n       {x42e20000 xc2633e73 x401993d8 1 x401993d8 1}\n       {x42e40000 xc258d0ab x402ec918 1 x402ec918 1}\n       {x42e60000 xc24d6550 x403a3278 1 x403a3278 1}\n       {x42e80000 xc2418a5c x4046ad18 1 x4046ad18 1}\n       {x42ea0000 xc2348fad x405f2e98 1 x405f2e98 1}\n       {x42ec0000 xc225a489 x407f8980 1 x407f8980 1}\n       {x42ee0000 xc2149e7d x408b5d14 1 x408b5d14 1}\n       {x42f00000 xc202cd44 x409798e0 1 x409798e0 1}\n       {x42f20000 xc1dd708a x40a4f412 1 x40a4f412 1}\n       {x42f40000 xc1b3207f x40ae245e 1 x40ae245e 1}\n       {x42f60000 xc1865e5b x40b31391 1 x40b31391 1}\n       {x42f80000 xc1332d6d x40b2ee66 1 x40b2ee66 1}\n       {x42fa0000 xc0b39ca0 x40b32d6d 1 x40b32d6d 1}\n       {x42fc0000 0 x40b3efd0 1 x40b3efd0 1}\n       {x42fe0000 x40b44301 x40aca7d3 1 x40aca7d3 1}\n       {x43000000 x412ca7d3 x40a820b6 1 x40a820b6 1}\n       {x43010000 x4181211b x40a2fa41 1 x40a2fa41 1}\n       {x43020000 x41a7d10a x40962806 1 x40962806 1}\n       {x43030000 x41cc351e x4088c8ba 1 x4088c8ba 1}\n       {x43040000 x41ec3567 x40707298 1 x40707298 1}\n       {x43050000 x420428e2 x4058a7f4 1 x4058a7f4 1}\n       {x43060000 x42112fb2 x40484c30 1 x40484c30 1}\n       {x43070000 x421d3268 x40290210 1 x40290210 1}\n       {x43080000 x42264ff4 x4010ae30 1 x4010ae30 1}\n       {x43090000 x422f482e x40154710 1 x40154710 1}\n       {x430a0000 x4238f8d6 x40121b18 1 x40121b18 1}\n       {x430b0000 x42418b91 x3ff96580 1 x3ff96580 1}\n       {x430c0000 x42488f2e x3fe98820 1 x3fe98820 1}\n       {x430d0000 x42502413 x3ffb82e0 1 x3ffb82e0 1}\n       {x430e0000 x4258475c x3feeabe0 1 x3feeabe0 1}\n       {x430f0000 x425f0ed1 x3ff88510 1 x3ff88510 1}\n       {x43100000 x4267cfad x4003fe60 1 x4003fe60 1}\n       {x43110000 x426f8e9d x4001be60 1 x4001be60 1}\n       {x43120000 x42780779 x3ff25880 1 x3ff25880 1}\n       {x43130000 x427eb425 x3fb7cc90 1 x3fb7cc90 1}\n       {x43140000 x4281c221 x3e6cbe00 1 x3e6cbe00 1}\n       {x43150000 x4281e996 -}\n       {x43160000 x4280523f xbf98c0a0 1 0 1}}\n      {{x42540000 x44459abf 0 1 xc111c930 1}\n       {x42580000 x444365fc xc103ffe0 1 xc103ffe0 1}\n       {x425c0000 x44417ac0 xc10993e0 1 xc10993e0 1}\n       {x42600000 x443f195d xc12fbf00 1 xc12fbf00 1}\n       {x42640000 x443bfcc8 xc1576840 1 xc1576840 1}\n       {x42680000 x44385e1b xc16e6a60 1 xc16e6a60 1}\n       {x426c0000 x44348975 xc1600ba0 1 xc1600ba0 1}\n       {x42700000 x44315dbe xc14dc500 1 xc14dc500 1}\n       {x42740000 x442e1b4d xc1585400 1 xc1585400 1}\n       {x42780000 x442a9b1e xc16bdd00 1 xc16bdd00 1}\n       {x427c0000 x4426bc65 xc17d0c40 1 xc17d0c40 1}\n       {x42800000 x4422b2bc xc18018c0 1 xc18018c0 1}\n       {x42820000 x441ebad9 xc17d3e20 1 xc17d3e20 1}\n       {x42840000 x441ac8cb xc18018c0 1 xc18018c0 1}\n       {x42860000 x4416b94d xc17f19a0 1 xc17f19a0 1}\n       {x42880000 x4412cffe xc1773400 1 xc1773400 1}\n       {x428a0000 x440effad xc1762180 1 xc1762180 1}\n       {x428c0000 x440b1ef2 xc1815100 1 xc1815100 1}\n       {x428e0000 x4406ea9d xc189de40 1 xc189de40 1}\n       {x42900000 x4402810e xc18b4a70 1 xc18b4a70 1}\n       {x42920000 x43fc6bec xc1896620 1 xc1896620 1}\n       {x42940000 x43f3d558 xc18a76b8 1 xc18a76b8 1}\n       {x42960000 x43eb1d15 xc1897118 1 xc1897118 1}\n       {x42980000 x43e2a735 xc179f800 1 xc179f800 1}\n       {x429a0000 x43db7d95 xc15d7000 1 xc15d7000 1}\n       {x429c0000 x43d4d035 xc1514900 1 xc1514900 1}\n       {x429e0000 x43ce6905 xc152c820 1 xc152c820 1}\n       {x42a00000 x43c7a3b3 xc160acc0 1 xc160acc0 1}\n       {x42a20000 x43c05e39 xc16d6050 1 xc16d6050 1}\n       {x42a40000 x43b8cdae xc17592c0 1 xc17592c0 1}\n       {x42a60000 x43b1050d xc177a730 1 xc177a730 1}\n       {x42a80000 x43a9533b xc176c550 1 xc176c550 1}\n       {x42aa0000 x43a198b8 xc16ef4c0 1 xc16ef4c0 1}\n       {x42ac0000 x439a63ef xc15fe480 1 xc15fe480 1}\n       {x42ae0000 x43939a70 xc15a4f30 1 xc15a4f30 1}\n       {x42b00000 x438cbefc xc15b14c0 1 xc15b14c0 1}\n       {x42b20000 x4385e924 xc16222a0 1 xc16222a0 1}\n       {x42b40000 x437d39a4 xc169e450 1 xc169e450 1}\n       {x42b60000 x436e95be xc169a8c0 1 xc169a8c0 1}\n       {x42b80000 x4360048c xc16c3878 1 xc16c3878 1}\n       {x42ba0000 x43510eaf xc169dc60 1 xc169dc60 1}\n       {x42bc0000 x4342c900 xc15eed48 1 xc15eed48 1}\n       {x42be0000 x43353106 xc14e7c10 1 xc14e7c10 1}\n       {x42c00000 x4328f97e xc1386a38 1 xc1386a38 1}\n       {x42c20000 x431e23bf xc123cf68 1 xc123cf68 1}\n       {x42c40000 x43147f91 xc1169238 1 xc1169238 1}\n       {x42c60000 x430b5178 xc11382f8 1 xc11382f8 1}\n       {x42c80000 x43020f32 xc10f012c 1 xc10f012c 1}\n       {x42ca0000 x42f2e2a5 xc10a5998 1 xc10a5998 1}\n       {x42cc0000 x42e187fe xc1090f50 1 xc1090f50 1}\n       {x42ce0000 x42d09ed1 xc1081430 1 xc1081430 1}\n       {x42d00000 x42bf82f2 xc0fcc6a8 1 xc0fcc6a8 1}\n       {x42d20000 x42b105fc xc0e4d2d0 1 xc0e4d2d0 1}\n       {x42d40000 x42a2e898 xc0d9b310 1 xc0d9b310 1}\n       {x42d60000 x4295cf9a xc0d1c710 1 xc0d1c710 1}\n       {x42d80000 x4288afb6 xc0d089a0 1 xc0d089a0 1}\n       {x42da0000 x42777ccc xc0d01a6c 1 xc0d01a6c 1}\n       {x42dc0000 x425d58d1 xc0d4fec4 1 xc0d4fec4 1}\n       {x42de0000 x42423d1b xc0bee774 1 xc0bee774 1}\n       {x42e00000 x422d9ef4 xc09d2df0 1 xc09d2df0 1}\n       {x42e20000 x421af19f xc085e544 1 xc085e544 1}\n       {x42e40000 x420c25a3 xc0642244 1 xc0642244 1}\n       {x42e60000 x41fcdaad xc04473e0 1 xc04473e0 1}\n       {x42e80000 x41e72e4e xc028cadc 1 xc028cadc 1}\n       {x42ea0000 x41d2a7f6 xc0239944 1 xc0239944 1}\n       {x42ec0000 x41be47fd xc022411c 1 xc022411c 1}\n       {x42ee0000 x41aa17af xc024a490 1 xc024a490 1}\n       {x42f00000 x41951ed9 xc03f43c4 1 xc03f43c4 1}\n       {x42f20000 x41748d7c xc0587964 1 xc0587964 1}\n       {x42f40000 x413e0100 xc04f830e 1 xc04f830e 1}\n       {x42f60000 x410ccbf5 xc04a1836 1 xc04a1836 1}\n       {x42f80000 x40b1e9ca xc04c61da 1 xc04c61da 1}\n       {x42fa0000 x401a6c1f xc031e9ca 1 xc031e9ca 1}\n       {x42fc0000 0 xc00df603 1 xc00df603 1}\n       {x42fe0000 xc0017fe7 xc0170521 1 xc0170521 1}\n       {x43000000 xc0970521 xc00c96f8 1 xc00c96f8 1}\n       {x43010000 xc0cd56eb xbfdd8c7e 1 xbfdd8c7e 1}\n       {x43020000 xc102e5b0 xbfd573e6 1 xbfd573e6 1}\n       {x43030000 xc11c086f xbfb61b08 1 xbfb61b08 1}\n       {x43040000 xc1306c72 xbfa4a188 1 xbfa4a188 1}\n       {x43050000 xc14530d1 xbf99820c 1 xbf99820c 1}\n       {x43060000 xc156ccf5 xbf4ea688 1 xbf4ea688 1}\n       {x43070000 xc15f05a2 xbf4ddad8 1 xbf4ddad8 1}\n       {x43080000 xc1708850 xbf44bf80 1 xbf44bf80 1}\n       {x43090000 xc1779d92 xbec84d90 1 xbec84d90 1}\n       {x430a0000 xc17d0d29 xbf17e520 1 xbf17e520 1}\n       {x430b0000 xc1854d1b xbf8ecf1c 1 xbf8ecf1c 1}\n       {x430c0000 xc1906078 xbfaca860 1 xbfaca860 1}\n       {x430d0000 xc19ae227 xbf9650b0 1 xbf9650b0 1}\n       {x430e0000 xc1a32a8e xbf9a2c10 1 xbf9a2c10 1}\n       {x430f0000 xc1ae27a9 xbfa3a170 1 xbfa3a170 1}\n       {x43100000 xc1b79ebc xbfa60fc0 1 xbfa60fc0 1}\n       {x43110000 xc1c2e9a1 xbf9e4ac8 1 xbf9e4ac8 1}\n       {x43120000 xc1cb6815 xbf946140 1 xbf946140 1}\n       {x43130000 xc1d575c9 xbfb5d750 1 xbfb5d750 1}\n       {x43140000 xc1e222ff xbfe8d328 1 xbfe8d328 1}\n       {x43150000 xc1f2902e xc0379c7c 1 xc0379c7c 1}\n       {x43160000 xc208050f xc082f481 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke37 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44969ab8 x44515c3a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke38 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44969ab8 x44515c3a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3e14983 0 1 x40de81a0 1}\n       {x42580000 xc3dda6e8 x40fcf100 1 x40fcf100 1}\n       {x425c0000 xc3d961fb x41121f30 1 x41121f30 1}\n       {x42600000 xc3d484f5 x4125a900 1 x4125a900 1}\n       {x42640000 xc3cf076b x413a24e0 1 x413a24e0 1}\n       {x42680000 xc3c8e2a7 x413bf910 1 x413bf910 1}\n       {x426c0000 xc3c347da x41339b00 1 x41339b00 1}\n       {x42700000 xc3bda8f7 x41350380 1 x41350380 1}\n       {x42740000 xc3b7f7a2 x412f1ce0 1 x412f1ce0 1}\n       {x42780000 xc3b2b729 x4126a820 1 x4126a820 1}\n       {x427c0000 xc3ad8d20 x412853d0 1 x412853d0 1}\n       {x42800000 xc3a831ec x412834e0 1 x412834e0 1}\n       {x42820000 xc3a309d2 x4112fef0 1 x4112fef0 1}\n       {x42840000 xc39f01fd x41060ec0 1 x41060ec0 1}\n       {x42860000 xc39aa8e6 x4110ca80 1 x4110ca80 1}\n       {x42880000 xc395f555 x410fda00 1 x410fda00 1}\n       {x428a0000 xc391ab46 x40ffc740 1 x40ffc740 1}\n       {x428c0000 xc38df71b x40de7100 1 x40de7100 1}\n       {x428e0000 xc38ab7be x40d5eb20 1 x40d5eb20 1}\n       {x42900000 xc38747c2 x40f0d760 1 x40f0d760 1}\n       {x42920000 xc3833103 x40f4f430 1 x40f4f430 1}\n       {x42940000 xc37f4041 x40d253f0 1 x40d253f0 1}\n       {x42960000 xc3793cc7 x40ac4b90 1 x40ac4b90 1}\n       {x42980000 xc3747b88 x40993980 1 x40993980 1}\n       {x429a0000 xc36fa92f x408fac50 1 x408fac50 1}\n       {x429c0000 xc36b80c3 x407f9f20 1 x407f9f20 1}\n       {x429e0000 xc367ac36 x4079ae00 1 x4079ae00 1}\n       {x42a00000 xc363b353 x408c5b60 1 x408c5b60 1}\n       {x42a20000 xc35ee680 x40ab5ac0 1 x40ab5ac0 1}\n       {x42a40000 xc358fda7 x40a92a30 1 x40a92a30 1}\n       {x42a60000 xc35453dd x409d1a00 1 x409d1a00 1}\n       {x42a80000 xc34f2c07 x40b4e550 1 x40b4e550 1}\n       {x42aa0000 xc3490588 x40a97e70 1 x40a97e70 1}\n       {x42ac0000 xc3449420 x4079e4e0 1 x4079e4e0 1}\n       {x42ae0000 xc3413661 x403fdfe0 1 x403fdfe0 1}\n       {x42b00000 xc33e9521 x4006d880 1 x4006d880 1}\n       {x42b20000 xc33cff9d x3fb1eec0 1 x3fb1eec0 1}\n       {x42b40000 xc33bcd66 x3fa63540 1 x3fa63540 1}\n       {x42b60000 xc33a66c8 x3ff155c0 1 x3ff155c0 1}\n       {x42b80000 xc338080f x3ffcd5c0 1 x3ffcd5c0 1}\n       {x42ba0000 xc3367371 x3ff30f80 1 x3ff30f80 1}\n       {x42bc0000 xc3343bd1 x40039980 1 x40039980 1}\n       {x42be0000 xc33256a5 x3fd8f400 1 x3fd8f400 1}\n       {x42c00000 xc330d801 x3fc4b340 1 x3fc4b340 1}\n       {x42c20000 xc32f43d8 x40387de0 1 x40387de0 1}\n       {x42c40000 xc32b1412 x40891aa0 1 x40891aa0 1}\n       {x42c60000 xc326b22e x40953120 1 x40953120 1}\n       {x42c80000 xc321c100 x409a9950 1 x409a9950 1}\n       {x42ca0000 xc31d0899 x4095b8f0 1 x4095b8f0 1}\n       {x42cc0000 xc3186571 x4097d930 1 x4097d930 1}\n       {x42ce0000 xc3138b06 x40940cf0 1 x40940cf0 1}\n       {x42d00000 xc30f24a2 x408e3c30 1 x408e3c30 1}\n       {x42d20000 xc30aa743 x408326b0 1 x408326b0 1}\n       {x42d40000 xc306f237 x407d1260 1 x407d1260 1}\n       {x42d60000 xc302beb0 x40867d20 1 x40867d20 1}\n       {x42d80000 xc2fd14ca x408b9e78 1 x408b9e78 1}\n       {x42da0000 xc2f40991 x4095e988 1 x4095e988 1}\n       {x42dc0000 xc2ea5799 x40a05f50 1 x40a05f50 1}\n       {x42de0000 xc2dffda7 x40abb7f0 1 x40abb7f0 1}\n       {x42e00000 xc2d4e09b x40b5e8d8 1 x40b5e8d8 1}\n       {x42e20000 xc2c9408c x40ba82c0 1 x40ba82c0 1}\n       {x42e40000 xc2bd9043 x40c05928 1 x40c05928 1}\n       {x42e60000 xc2b13567 x40c8a328 1 x40c8a328 1}\n       {x42e80000 xc2a47bde x40ceaf10 1 x40ceaf10 1}\n       {x42ea0000 xc2975f85 x40dae4b8 1 x40dae4b8 1}\n       {x42ec0000 xc2891f47 x40ebd03c 1 x40ebd03c 1}\n       {x42ee0000 xc273cafb x40f5511c 1 x40f5511c 1}\n       {x42f00000 xc254ea47 x41064d5c 1 x41064d5c 1}\n       {x42f20000 xc230a44d x410f3292 1 x410f3292 1}\n       {x42f40000 xc20d50fe x4111aa62 1 x4111aa62 1}\n       {x42f60000 xc1cf9e38 x410e54f1 1 x410e54f1 1}\n       {x42f80000 xc18c4d0b x410bb01e 1 x410bb01e 1}\n       {x42fa0000 xc107dc34 x410c4d0b 1 x410c4d0b 1}\n       {x42fc0000 0 x410d05b8 1 x410d05b8 1}\n       {x42fe0000 x41122f3c x410bfdd5 1 x410bfdd5 1}\n       {x43000000 x418bfdd5 x41054089 1 x41054089 1}\n       {x43010000 x41ce5827 x40fcb51a 1 x40fcb51a 1}\n       {x43020000 x42052c31 x40e952c6 1 x40e952c6 1}\n       {x43030000 x422180c5 x40d931f0 1 x40d931f0 1}\n       {x43040000 x423b78ad x40c5b044 1 x40c5b044 1}\n       {x43050000 x4252ecd6 x40aacfbc 1 x40aacfbc 1}\n       {x43060000 x42662c9c x40972a10 1 x40972a10 1}\n       {x43070000 x4278b75a x408c9ff8 1 x408c9ff8 1}\n       {x43080000 x4284aa4d x407865d0 1 x407865d0 1}\n       {x43090000 x428be20a x405e96b0 1 x405e96b0 1}\n       {x430a0000 x429293b8 x4053d570 1 x4053d570 1}\n       {x430b0000 x42991f61 x404fdc20 1 x404fdc20 1}\n       {x430c0000 x429f917a x404193f0 1 x404193f0 1}\n       {x430d0000 x42a538a0 x40346940 1 x40346940 1}\n       {x430e0000 x42aad80e x403bc520 1 x403bc520 1}\n       {x430f0000 x42b0f4f2 x404e05b0 1 x404e05b0 1}\n       {x43100000 x42b7b869 x40563fa0 1 x40563fa0 1}\n       {x43110000 x42be58ec x404aeb40 1 x404aeb40 1}\n       {x43120000 x42c4671d x40477fe0 1 x40477fe0 1}\n       {x43130000 x42cad0ea x402f2070 1 x402f2070 1}\n       {x43140000 x42cf5924 x3ff403a0 1 x3ff403a0 1}\n       {x43150000 x42d27107 x3f911a00 1 x3f911a00 1}\n       {x43160000 x42d3e1f4 x3f0397c0 1 0 1}}\n      {{x42540000 x44814141 0 1 xc1394430 1}\n       {x42580000 x447f82d5 xc14d3960 1 xc14d3960 1}\n       {x425c0000 x447c18b7 xc17131a0 1 xc17131a0 1}\n       {x42600000 x4477f948 xc185a000 1 xc185a000 1}\n       {x42640000 x4473beb7 xc18b1030 1 xc18b1030 1}\n       {x42680000 x446f4845 xc19199d0 1 xc19199d0 1}\n       {x426c0000 x446aa51a xc1899b30 1 xc1899b30 1}\n       {x42700000 x4466ae92 xc1879050 1 xc1879050 1}\n       {x42740000 x44622c15 xc1967020 1 xc1967020 1}\n       {x42780000 x445d4790 xc1a122b0 1 xc1a122b0 1}\n       {x427c0000 x445819ea xc1b83d00 1 xc1b83d00 1}\n       {x42800000 x4451c3c0 xc1c5d660 1 xc1c5d660 1}\n       {x42820000 x444bbc84 xc1c0a890 1 xc1c0a890 1}\n       {x42840000 x4445b937 xc1c46af0 1 xc1c46af0 1}\n       {x42860000 x443f75d5 xc1cbd560 1 xc1cbd560 1}\n       {x42880000 x4438fbe1 xc1c35100 1 xc1c35100 1}\n       {x428a0000 x443340c5 xc1b7e720 1 xc1b7e720 1}\n       {x428c0000 x442d7d6f xc1b743c0 1 xc1b743c0 1}\n       {x428e0000 x4427cc89 xc1b793b0 1 xc1b793b0 1}\n       {x42900000 x44220434 xc1c25c10 1 xc1c25c10 1}\n       {x42920000 x441ba6c8 xc1c13c20 1 xc1c13c20 1}\n       {x42940000 x4415f072 xc1b3c130 1 xc1b3c130 1}\n       {x42960000 x44106ab5 xc1a72710 1 xc1a72710 1}\n       {x42980000 x440b7e01 xc1986240 1 xc1986240 1}\n       {x429a0000 x4406e491 xc18e2130 1 xc18e2130 1}\n       {x429c0000 x44029bee xc1944bf8 1 xc1944bf8 1}\n       {x429e0000 x43fb3fa3 xc197de48 1 xc197de48 1}\n       {x42a00000 x43f23c13 xc19b10f0 1 xc19b10f0 1}\n       {x42a20000 x43e7dd85 xc1a15ef0 1 xc1a15ef0 1}\n       {x42a40000 x43de1035 xc195bd80 1 xc195bd80 1}\n       {x42a60000 x43d525d5 xc197d510 1 xc197d510 1}\n       {x42a80000 x43cb1593 xc1a311f8 1 xc1a311f8 1}\n       {x42aa0000 x43c0c396 xc19be680 1 xc19be680 1}\n       {x42ac0000 x43b798c3 xc19063d8 1 xc19063d8 1}\n       {x42ae0000 x43aeb71b xc18fd8a0 1 xc18fd8a0 1}\n       {x42b00000 x43a59daf xc18a7278 1 xc18a7278 1}\n       {x42b20000 x439d68cc xc190aa48 1 xc190aa48 1}\n       {x42b40000 x43938866 xc1a37d50 1 xc1a37d50 1}\n       {x42b60000 x4388f922 xc1a9cb90 1 xc1a9cb90 1}\n       {x42b80000 x437c9de8 xc1a7c420 1 xc1a7c420 1}\n       {x42ba0000 x4368013c xc1a0864c 1 xc1a0864c 1}\n       {x42bc0000 x43547c55 xc1936778 1 xc1936778 1}\n       {x42be0000 x4343275e xc1854178 1 xc1854178 1}\n       {x42c00000 x43332bf7 xc1709fb0 1 xc1709fb0 1}\n       {x42c20000 x43251368 xc15aace8 1 xc15aace8 1}\n       {x42c40000 x4317d65a xc15616b0 1 xc15616b0 1}\n       {x42c60000 x430a5092 xc15e8128 1 xc15e8128 1}\n       {x42c80000 x42f80c6a xc15f41f0 1 xc15f41f0 1}\n       {x42ca0000 x42dcd0a8 xc1533468 1 xc1533468 1}\n       {x42cc0000 x42c33f50 xc155a2e0 1 xc155a2e0 1}\n       {x42ce0000 x42a767f0 xc1546e80 1 xc1546e80 1}\n       {x42d00000 x428e23b0 xc1402dba 1 xc1402dba 1}\n       {x42d20000 x426eb903 xc12ebf6c 1 xc12ebf6c 1}\n       {x42d40000 x4244e7aa xc11eb08a 1 xc11eb08a 1}\n       {x42d60000 x421f60be xc110d8f7 1 xc110d8f7 1}\n       {x42d80000 x41f8f65d xc105ca93 1 xc105ca93 1}\n       {x42da0000 x41b8f6e9 xc101c276 1 xc101c276 1}\n       {x42dc0000 x416e67ce xc0f04fff 1 xc0f04fff 1}\n       {x42de0000 x41019dd3 xc0c760f0 1 xc0c760f0 1}\n       {x42e00000 x401c1b7a xc0975d23 1 xc0975d23 1}\n       {x42e20000 xbfadfa7e xc0533589 1 xc0533589 1}\n       {x42e40000 xc08527cc xc01f5642 1 xc01f5642 1}\n       {x42e60000 xc0cad4e2 xbfc0d04a 1 xbfc0d04a 1}\n       {x42e80000 xc0e58ff1 -}\n       {x42ea0000 xc0deccd5 -}\n       {x42ec0000 xc0f348e9 -}\n       {x42ee0000 xc0f0fbee x3e5cde20 1 x3e5cde20 1}\n       {x42f00000 xc0dbd801 -}\n       {x42f20000 xc0e68014 -}\n       {x42f40000 xc0cf4dcd x3ef30e28 1 x3ef30e28 1}\n       {x42f60000 xc0c81e4f x3f2c73d0 1 x3f2c73d0 1}\n       {x42f80000 xc0851e20 x3fee9e78 1 x3fee9e78 1}\n       {x42fa0000 xc0219e26 x40051e20 1 x40051e20 1}\n       {x42fc0000 0 x402d6b0c 1 x402d6b0c 1}\n       {x42fe0000 x403937f1 x402d2a0d 1 x402d2a0d 1}\n       {x43000000 x40ad2a0d x4035a9ee 1 x4035a9ee 1}\n       {x43010000 x410922f3 x40604bbd 1 x40604bbd 1}\n       {x43020000 x4146bae5 x408771f9 1 x408771f9 1}\n       {x43030000 x41884a76 x4097476f 1 x4097476f 1}\n       {x43040000 x41af012a x409ac99c 1 x409ac99c 1}\n       {x43050000 x41d5af44 x40a08638 1 x40a08638 1}\n       {x43060000 x41ff4446 x40a6f8d8 1 x40a6f8d8 1}\n       {x43070000 x421495d8 x40af3ad4 1 x40af3ad4 1}\n       {x43080000 x422b70d8 x40bb76a8 1 x40bb76a8 1}\n       {x43090000 x42437382 x40be9978 1 x40be9978 1}\n       {x430a0000 x425b1736 x40b373c0 1 x40b373c0 1}\n       {x430b0000 x42705072 x409e8e90 1 x409e8e90 1}\n       {x430c0000 x42815d6d x40a33380 1 x40a33380 1}\n       {x430d0000 x428c8ea9 x40ac1ea8 1 x40ac1ea8 1}\n       {x430e0000 x4296e142 x40afd840 1 x40afd840 1}\n       {x430f0000 x42a289b1 x40af0c58 1 x40af0c58 1}\n       {x43100000 x42acc2cd x40a69980 1 x40a69980 1}\n       {x43110000 x42b75ce1 x40a473e0 1 x40a473e0 1}\n       {x43120000 x42c15149 x409a1c78 1 x409a1c78 1}\n       {x43130000 x42caa070 x40882410 1 x40882410 1}\n       {x43140000 x42d255cb x405b8d90 1 x405b8d90 1}\n       {x43150000 x42d85949 x400764e0 1 x400764e0 1}\n       {x43160000 x42dacc19 x3f475240 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke39 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438cb7cf x43e654fe 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke40 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438cb7cf x43e654fe 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc355c08c 0 1 x40810d88 1}\n       {x42580000 xc3516837 x409f04d0 1 x409f04d0 1}\n       {x425c0000 xc34bd03f x40c591c0 1 x40c591c0 1}\n       {x42600000 xc3450f1b x40e006b0 1 x40e006b0 1}\n       {x42640000 xc33dcfd4 x40e37cf0 1 x40e37cf0 1}\n       {x42680000 xc336d74c x40e031d0 1 x40e031d0 1}\n       {x426c0000 xc32fccb7 x40e195e0 1 x40e195e0 1}\n       {x42700000 xc328bdee x40e4b9d0 1 x40e4b9d0 1}\n       {x42740000 xc321811a x40ebdbc0 1 x40ebdbc0 1}\n       {x42780000 xc31a0032 x40ee0fb0 1 x40ee0fb0 1}\n       {x427c0000 xc312a01f x40f8d910 1 x40f8d910 1}\n       {x42800000 xc30a72a1 x4103aa80 1 x4103aa80 1}\n       {x42820000 xc3022acf x40fa33d0 1 x40fa33d0 1}\n       {x42840000 xc2f59ec8 x40ea9138 1 x40ea9138 1}\n       {x42860000 xc2e70377 x40c10530 1 x40c10530 1}\n       {x42880000 xc2dd7e22 x40c90140 1 x40c90140 1}\n       {x428a0000 xc2cde34f x40a86840 1 x40a86840 1}\n       {x428c0000 xc2c8711a x404265a0 1 x404265a0 1}\n       {x428e0000 xc2c1bcf5 x4062a590 1 x4062a590 1}\n       {x42900000 xc2ba46c1 x407721f0 1 x407721f0 1}\n       {x42920000 xc2b24ad6 x401da050 1 x401da050 1}\n       {x42940000 xc2b06cbc x3f724600 1 x3f724600 1}\n       {x42960000 xc2ae81be x3f8eaa20 1 x3f8eaa20 1}\n       {x42980000 xc2abf76b x3fd14d00 1 x3fd14d00 1}\n       {x429a0000 xc2a7f756 x3fc8b3a0 1 x3fc8b3a0 1}\n       {x429c0000 xc2a5b1ce -}\n       {x429e0000 xc2a5c880 -}\n       {x42a00000 xc2a5221d x3ee4ec80 1 x3ee4ec80 1}\n       {x42a20000 xc2a3fea7 x3f0f7a40 1 x3f0f7a40 1}\n       {x42a40000 xc2a2e434 x3f26db00 1 x3f26db00 1}\n       {x42a60000 xc2a1633b x3f079700 1 x3f079700 1}\n       {x42a80000 xc2a0c5d8 x3e9c9080 1 x3e9c9080 1}\n       {x42aa0000 xc2a02a1a x3eabf680 1 x3eabf680 1}\n       {x42ac0000 xc29f6deb -}\n       {x42ae0000 xc2a07134 xbf6a08c0 1 xbf6a08c0 1}\n       {x42b00000 xc2a3160e xbfd0f5e0 1 xbfd0f5e0 1}\n       {x42b20000 xc2a6f8e3 xbff8aa60 1 xbff8aa60 1}\n       {x42b40000 xc2aadb61 xbff0e340 1 xbff0e340 1}\n       {x42b60000 xc2ae7ffd xbfd51d80 1 xbfd51d80 1}\n       {x42b80000 xc2b1844d xbfd71360 1 xbfd71360 1}\n       {x42ba0000 xc2b53898 xbff20f40 1 xbff20f40 1}\n       {x42bc0000 xc2b914c7 xbfa92260 1 xbfa92260 1}\n       {x42be0000 xc2ba81ab xbf5004c0 1 xbf5004c0 1}\n       {x42c00000 xc2bc54da xbf590740 1 xbf590740 1}\n       {x42c20000 xc2bde5c8 -}\n       {x42c40000 xc2b9dcc3 x400e9b70 1 x400e9b70 1}\n       {x42c60000 xc2b4fc11 x401bab70 1 x401bab70 1}\n       {x42c80000 xc2b0220c x40280ca0 1 x40280ca0 1}\n       {x42ca0000 xc2aa7b47 x402c8410 1 x402c8410 1}\n       {x42cc0000 xc2a559cb x4036a5c0 1 x4036a5c0 1}\n       {x42ce0000 xc29f10eb x402aa070 1 x402aa070 1}\n       {x42d00000 xc29aafc4 x4009aa70 1 x4009aa70 1}\n       {x42d20000 xc2967644 x3ffae560 1 x3ffae560 1}\n       {x42d40000 xc292d899 x3fd054a0 1 x3fd054a0 1}\n       {x42d60000 xc28ff39f x3fa45660 1 x3fa45660 1}\n       {x42d80000 xc28db5e6 x3fa0e3c0 1 x3fa0e3c0 1}\n       {x42da0000 xc28aec81 x3fc37d60 1 x3fc37d60 1}\n       {x42dc0000 xc28799fb x3fd6dd00 1 x3fd6dd00 1}\n       {x42de0000 xc2843599 x3fee3c60 1 x3fee3c60 1}\n       {x42e00000 xc2802818 x400e78b0 1 x400e78b0 1}\n       {x42e20000 xc2769c1c x401b3760 1 x401b3760 1}\n       {x42e40000 xc26ce944 x401f5ac0 1 x401f5ac0 1}\n       {x42e60000 xc262b0c4 x402ca8d8 1 x402ca8d8 1}\n       {x42e80000 xc2575429 x403fd5d8 1 x403fd5d8 1}\n       {x42ea0000 xc24ab609 x405be8d8 1 x405be8d8 1}\n       {x42ec0000 xc23bd70e x40811fa8 1 x40811fa8 1}\n       {x42ee0000 xc22a6e1f x4096c510 1 x4096c510 1}\n       {x42f00000 xc21625ca x40aae29c 1 x40aae29c 1}\n       {x42f20000 xc1ff6af0 x40bb8336 1 x40bb8336 1}\n       {x42f40000 xc1ce89f9 x40ca8198 1 x40ca8198 1}\n       {x42f60000 xc19a2a24 x40cf9274 1 x40cf9274 1}\n       {x42f80000 xc14d817e x40cc7dc4 1 x40cc7dc4 1}\n       {x42fa0000 xc0cfad08 x40cd817e 1 x40cd817e 1}\n       {x42fc0000 0 x40d39f56 1 x40d39f56 1}\n       {x42fe0000 x40d791a3 x40d89ae5 1 x40d89ae5 1}\n       {x43000000 x41589ae5 x40d7bed2 1 x40d7bed2 1}\n       {x43010000 x41a1c3d2 x40d3fc2d 1 x40d3fc2d 1}\n       {x43020000 x41d64b89 x40cac75c 1 x40cac75c 1}\n       {x43030000 x420393c0 x40bfd2fa 1 x40bfd2fa 1}\n       {x43040000 x421b1a83 x40b2465c 1 x40b2465c 1}\n       {x43050000 x42302557 x409cae0c 1 x409cae0c 1}\n       {x43060000 x42424606 x408a0194 1 x408a0194 1}\n       {x43070000 x4252a5bc x407357b0 1 x407357b0 1}\n       {x43080000 x4260b0fc x40594000 1 x40594000 1}\n       {x43090000 x426dcdbc x404c4bd0 1 x404c4bd0 1}\n       {x430a0000 x427a3a76 x403d8c50 1 x403d8c50 1}\n       {x430b0000 x4282bfa3 x402f2e40 1 x402f2e40 1}\n       {x430c0000 x4288101f x402600a0 1 x402600a0 1}\n       {x430d0000 x428d1fad x402687d0 1 x402687d0 1}\n       {x430e0000 x4292789c x4030e120 1 x4030e120 1}\n       {x430f0000 x42982dbf x40436c80 1 x40436c80 1}\n       {x43100000 x429eaf64 x4051f8f0 1 x4051f8f0 1}\n       {x43110000 x42a54d4e x40506180 1 x40506180 1}\n       {x43120000 x42abb57c x4043e510 1 x4043e510 1}\n       {x43130000 x42b18b9f x402b35b0 1 x402b35b0 1}\n       {x43140000 x42b668d7 x3ff799c0 1 x3ff799c0 1}\n       {x43150000 x42b9486d x3f8a3760 1 x3f8a3760 1}\n       {x43160000 x42baba92 x3f0b6460 1 0 1}}\n      {{x42540000 x4484320f 0 1 xc155e460 1}\n       {x42580000 x4482776a xc16c2ec0 1 xc16c2ec0 1}\n       {x425c0000 x44808154 xc1818f30 1 xc1818f30 1}\n       {x42600000 x447cd5e1 xc184a360 1 xc184a360 1}\n       {x42640000 x4478b872 xc1836540 1 xc1836540 1}\n       {x42680000 x44749f8d xc1854110 1 xc1854110 1}\n       {x426c0000 x44706461 xc18bc260 1 xc18bc260 1}\n       {x42700000 x446be367 xc198db60 1 xc198db60 1}\n       {x42740000 x4466d6ab xc1a9e140 1 xc1a9e140 1}\n       {x42780000 x44614553 xc1bb20a0 1 xc1bb20a0 1}\n       {x427c0000 x445b24a1 xc1cc9820 1 xc1cc9820 1}\n       {x42800000 x44547bd1 xc1d9f140 1 xc1d9f140 1}\n       {x42820000 x444d858d xc1dddcc0 1 xc1dddcc0 1}\n       {x42840000 x44469e05 xc1dea2c0 1 xc1dea2c0 1}\n       {x42860000 x443f9b61 xc1d81ad0 1 xc1d81ad0 1}\n       {x42880000 x44391c58 xc1d9a840 1 xc1d9a840 1}\n       {x428a0000 x443200dd xc1cf10c0 1 xc1cf10c0 1}\n       {x428c0000 x442c2b4c xc1b1b4f0 1 xc1b1b4f0 1}\n       {x428e0000 x4426e58e xc1adbca0 1 xc1adbca0 1}\n       {x42900000 x44214f82 xc1b84540 1 xc1b84540 1}\n       {x42920000 x441b613a xc1c3bb50 1 xc1c3bb50 1}\n       {x42940000 x441513cd xc1c875c0 1 xc1c875c0 1}\n       {x42960000 x440ed9de xc1c610e0 1 xc1c610e0 1}\n       {x42980000 x4408b2bf xc1b7cdd0 1 xc1b7cdd0 1}\n       {x429a0000 x44035d01 xc1af7cb8 1 xc1af7cb8 1}\n       {x429c0000 x43fb75e7 xc1b219f0 1 xc1b219f0 1}\n       {x429e0000 x43f076c4 xc1afb3f0 1 xc1afb3f0 1}\n       {x42a00000 x43e57f69 xc1afa450 1 xc1afa450 1}\n       {x42a20000 x43da823a xc1b035a8 1 xc1b035a8 1}\n       {x42a40000 x43cf78b4 xc1b16d48 1 xc1b16d48 1}\n       {x42a60000 x43c45491 xc1b1cb18 1 xc1b1cb18 1}\n       {x42a80000 x43b93f51 xc1b160e8 1 xc1b160e8 1}\n       {x42aa0000 x43ae2874 xc1ad49a0 1 xc1ad49a0 1}\n       {x42ac0000 x43a3961d xc1a63c18 1 xc1a63c18 1}\n       {x42ae0000 x439960f1 xc1a1d5c8 1 xc1a1d5c8 1}\n       {x42b00000 x438f5b64 xc1a02fd0 1 xc1a02fd0 1}\n       {x42b20000 x43855af7 xc1a01e68 1 xc1a01e68 1}\n       {x42b40000 x4376af2e xc1a0e154 1 xc1a0e154 1}\n       {x42b60000 x43627d99 xc1a25d20 1 xc1a25d20 1}\n       {x42b80000 x434e17e6 xc19f2648 1 xc19f2648 1}\n       {x42ba0000 x433ab407 xc197d910 1 xc197d910 1}\n       {x42bc0000 x432821a2 xc192309c 1 xc192309c 1}\n       {x42be0000 x431627e0 xc1898b60 1 xc1898b60 1}\n       {x42c00000 x4305beca xc17da204 1 xc17da204 1}\n       {x42c20000 x42ece73f xc168f2f8 1 xc168f2f8 1}\n       {x42c40000 x42d140d6 xc15c7818 1 xc15c7818 1}\n       {x42c60000 x42b5c939 xc15a96cc 1 xc15a96cc 1}\n       {x42c80000 x429a9b23 xc15c3d12 1 xc15c3d12 1}\n       {x42ca0000 x427d73e9 xc15cf22c 1 xc15cf22c 1}\n       {x42cc0000 x4246bd30 xc1581284 1 xc1581284 1}\n       {x42ce0000 x42116aa7 xc14b3a08 1 xc14b3a08 1}\n       {x42d00000 x41c24058 xc13b3904 1 xc13b3904 1}\n       {x42d20000 x414f3893 xc12c5ad4 1 xc12c5ad4 1}\n       {x42d40000 x402f2c1e xc11801c6 1 xc11801c6 1}\n       {x42d60000 xc0c195f4 xc101f34a 1 xc101f34a 1}\n       {x42d80000 xc1581b8d xc0e1c418 1 xc0e1c418 1}\n       {x42da0000 xc1a14789 xc0ccd257 1 xc0ccd257 1}\n       {x42dc0000 xc1d276f2 xc0b1e3e0 1 xc0b1e3e0 1}\n       {x42de0000 xc1fa3979 xc0841860 1 xc0841860 1}\n       {x42e00000 xc20a4191 xc01eb104 1 xc01eb104 1}\n       {x42e20000 xc210f2dd xbf656140 1 xbf656140 1}\n       {x42e40000 xc21224b4 -}\n       {x42e60000 xc20e94e5 x3fbcb8e0 1 x3fbcb8e0 1}\n       {x42e80000 xc2065926 x401c1154 1 x401c1154 1}\n       {x42ea0000 xc1f62575 x40397d74 1 x40397d74 1}\n       {x42ec0000 xc1de52ef x40397f60 1 x40397f60 1}\n       {x42ee0000 xc1c7c59d x40397e4c 1 x40397e4c 1}\n       {x42f00000 xc1aff35c x4038ac74 1 x4038ac74 1}\n       {x42f20000 xc1999a80 x4035354c 1 x4035354c 1}\n       {x42f40000 xc182a609 x40427366 1 x40427366 1}\n       {x42f60000 xc151fb4d x405e53f8 1 x405e53f8 1}\n       {x42f80000 xc1162216 x4081d5f6 1 x4081d5f6 1}\n       {x42fa0000 xc0a04aaf x40962216 1 x40962216 1}\n       {x42fc0000 0 x40a4703a 1 x40a4703a 1}\n       {x42fe0000 x40a895c4 x40a5d170 1 x40a5d170 1}\n       {x43000000 x4125d170 x40a43d7c 1 x40a43d7c 1}\n       {x43010000 x4178885e x40abac44 1 x40abac44 1}\n       {x43020000 x41a8beda x40b8db12 1 x40b8db12 1}\n       {x43030000 x41d8b1b8 x40c106f4 1 x40c106f4 1}\n       {x43040000 x4204a12a x40c60af8 1 x40c60af8 1}\n       {x43050000 x421ddb9a x40cda950 1 x40cda950 1}\n       {x43060000 x42380b7e x40db0204 1 x40db0204 1}\n       {x43070000 x42549c1b x40ebd94c 1 x40ebd94c 1}\n       {x43080000 x427301d1 x40facc44 1 x40facc44 1}\n       {x43090000 x4289a796 x40fe4f2c 1 x40fe4f2c 1}\n       {x430a0000 x42994ace x40f92d80 1 x40f92d80 1}\n       {x430b0000 x42a8cd46 x40f4cc00 1 x40f4cc00 1}\n       {x430c0000 x42b7e44e x40f8c7b0 1 x40f8c7b0 1}\n       {x430d0000 x42c7e63c x4102a770 1 x4102a770 1}\n       {x430e0000 x42d88e2a x4104b7bc 1 x4104b7bc 1}\n       {x430f0000 x42e9142b x41021324 1 x41021324 1}\n       {x43100000 x42f912f3 x40fe93c8 1 x40fe93c8 1}\n       {x43110000 x43047352 x40f7bb78 1 x40f7bb78 1}\n       {x43120000 x430c0531 x40e94780 1 x40e94780 1}\n       {x43130000 x431307ca x40da09c0 1 x40da09c0 1}\n       {x43140000 x4319a5cd x40ca6710 1 x40ca6710 1}\n       {x43150000 x431fae3b x409c7440 1 x409c7440 1}\n       {x43160000 x43236d11 x404b1c00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke41 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b6cbf0 x4451f5e3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke42 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b6cbf0 x4451f5e3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3b6111b 0 1 x40f48000 1}\n       {x42580000 xc3b22d89 x4100d6c0 1 x4100d6c0 1}\n       {x425c0000 xc3ae03af x41088be0 1 x41088be0 1}\n       {x42600000 xc3a9a4cb x411465f0 1 x411465f0 1}\n       {x42640000 xc3a4bd50 x4118a600 1 x4118a600 1}\n       {x42680000 xc3a01a6b x4117dc20 1 x4117dc20 1}\n       {x426c0000 xc39b3f8e x411b7e90 1 x411b7e90 1}\n       {x42700000 xc3966282 x41289c20 1 x41289c20 1}\n       {x42740000 xc390b5cc x412ac530 1 x412ac530 1}\n       {x42780000 xc38bb62f x411afd40 1 x411afd40 1}\n       {x427c0000 xc38705f8 x410dbea0 1 x410dbea0 1}\n       {x42800000 xc382da45 x41085130 1 x41085130 1}\n       {x42820000 xc37d01ca x410725d0 1 x410725d0 1}\n       {x42840000 xc374cfd0 x40f3f5c0 1 x40f3f5c0 1}\n       {x42860000 xc36dc26e x40fb86e0 1 x40fb86e0 1}\n       {x42880000 xc3651762 x41046178 1 x41046178 1}\n       {x428a0000 xc35d363f x40f0b150 1 x40f0b150 1}\n       {x428c0000 xc3560c4d x40d725c0 1 x40d725c0 1}\n       {x428e0000 xc34fc3e3 x40bf2350 1 x40bf2350 1}\n       {x42900000 xc34a1a18 x40d9b600 1 x40d9b600 1}\n       {x42920000 xc3422883 x40e59240 1 x40e59240 1}\n       {x42940000 xc33bc0f4 x40c64060 1 x40c64060 1}\n       {x42960000 xc335c47d x40ad7d30 1 x40ad7d30 1}\n       {x42980000 xc330e921 x409e1ed0 1 x409e1ed0 1}\n       {x429a0000 xc32be290 x40939e50 1 x40939e50 1}\n       {x429c0000 xc327af3c x4071ff40 1 x4071ff40 1}\n       {x429e0000 xc3245296 x406bafe0 1 x406bafe0 1}\n       {x42a00000 xc32051bd x4082a1e0 1 x4082a1e0 1}\n       {x42a20000 xc31c2878 x40a95580 1 x40a95580 1}\n       {x42a40000 xc315bc65 x40acadc0 1 x40acadc0 1}\n       {x42a60000 xc3115d9c x40987380 1 x40987380 1}\n       {x42a80000 xc30c352d x40a62f10 1 x40a62f10 1}\n       {x42aa0000 xc306faab x40962660 1 x40962660 1}\n       {x42ac0000 xc302d2c7 x406a9a60 1 x406a9a60 1}\n       {x42ae0000 xc2ff4bb0 x403a1910 1 x403a1910 1}\n       {x42b00000 xc2fa03fd x3fd4bc60 1 x3fd4bc60 1}\n       {x42b20000 xc2f8a5cd x3f07dc80 1 x3f07dc80 1}\n       {x42b40000 xc2f7e48b x3f035c80 1 x3f035c80 1}\n       {x42b60000 xc2f6985b x3f0d9440 1 x3f0d9440 1}\n       {x42b80000 xc2f5ae3a x3f025fc0 1 x3f025fc0 1}\n       {x42ba0000 xc2f48edc x3ed4c200 1 x3ed4c200 1}\n       {x42bc0000 xc2f404b6 x3e4e1700 1 x3e4e1700 1}\n       {x42be0000 xc2f3c0c5 -}\n       {x42c00000 xc2f44859 xbec8ac00 1 xbec8ac00 1}\n       {x42c20000 xc2f5521d -}\n       {x42c40000 xc2f05ca6 x401d0610 1 x401d0610 1}\n       {x42c60000 xc2eb81bc x4037b5a0 1 x4037b5a0 1}\n       {x42c80000 xc2e4e14c x403c8870 1 x403c8870 1}\n       {x42ca0000 xc2dfb935 x4026f580 1 x4026f580 1}\n       {x42cc0000 xc2da71f4 x4032aed0 1 x4032aed0 1}\n       {x42ce0000 xc2d48e48 x402acab0 1 x402acab0 1}\n       {x42d00000 xc2cfc549 x40196080 1 x40196080 1}\n       {x42d20000 xc2caf840 x40080150 1 x40080150 1}\n       {x42d40000 xc2c74534 x400aed80 1 x400aed80 1}\n       {x42d60000 xc2c24968 x402342f0 1 x402342f0 1}\n       {x42d80000 xc2bd1105 x402f6df0 1 x402f6df0 1}\n       {x42da0000 xc2b75289 x404aaf00 1 x404aaf00 1}\n       {x42dc0000 xc2b06615 x406103c0 1 x406103c0 1}\n       {x42de0000 xc2a9424d x40710710 1 x40710710 1}\n       {x42e00000 xc2a155a4 x40832600 1 x40832600 1}\n       {x42e20000 xc298dd8d x40862c78 1 x40862c78 1}\n       {x42e40000 xc2909015 x40891a60 1 x40891a60 1}\n       {x42e60000 xc287ba41 x40961940 1 x40961940 1}\n       {x42e80000 xc27b99da x4097c824 1 x4097c824 1}\n       {x42ea0000 xc2698279 x40a3390c 1 x40a3390c 1}\n       {x42ec0000 xc252cb97 x40b71324 1 x40b71324 1}\n       {x42ee0000 xc23bbdb0 x40b8b190 1 x40b8b190 1}\n       {x42f00000 xc2249f33 x40c7ef20 1 x40c7ef20 1}\n       {x42f20000 xc209c1e8 x40d42cf4 1 x40d42cf4 1}\n       {x42f40000 xc1df27ec x40dd5254 1 x40dd5254 1}\n       {x42f60000 xc1a4daa6 x40dc57ce 1 x40dc57ce 1}\n       {x42f80000 xc161f80a x40de6837 1 x40de6837 1}\n       {x42fa0000 xc0d69a2a x40e1f80a 1 x40e1f80a 1}\n       {x42fc0000 0 x40dcff96 1 x40dcff96 1}\n       {x42fe0000 x40e36501 x40e0ed6b 1 x40e0ed6b 1}\n       {x43000000 x4160ed6b x40d76680 1 x40d76680 1}\n       {x43010000 x41a48c80 x40c689e7 1 x40c689e7 1}\n       {x43020000 x41d3bba9 x40b6be44 1 x40b6be44 1}\n       {x43030000 x41ffeba2 x40aa9932 1 x40aa9932 1}\n       {x43040000 x42148421 x40958710 1 x40958710 1}\n       {x43050000 x42255795 x407fabd8 1 x407fabd8 1}\n       {x43060000 x4234799c x40615870 1 x40615870 1}\n       {x43070000 x424182a3 x40475428 1 x40475428 1}\n       {x43080000 x424d6421 x403f6448 1 x403f6448 1}\n       {x43090000 x42596f2c x403227e8 1 x403227e8 1}\n       {x430a0000 x4263a91e x4021f258 1 x4021f258 1}\n       {x430b0000 x426dad77 x40243fc0 1 x40243fc0 1}\n       {x430c0000 x42783116 x401f45a8 1 x401f45a8 1}\n       {x430d0000 x4280cb16 x4019da90 1 x4019da90 1}\n       {x430e0000 x4285b634 x402703c0 1 x402703c0 1}\n       {x430f0000 x428b3b52 x402f00d0 1 x402f00d0 1}\n       {x43100000 x4290a641 x40221730 1 x40221730 1}\n       {x43110000 x42955cc5 x40277150 1 x40277150 1}\n       {x43120000 x429b1d56 x401859a0 1 x401859a0 1}\n       {x43130000 x429ee25f x40021e90 1 x40021e90 1}\n       {x43140000 x42a33f3f x3fc88be0 1 x3fc88be0 1}\n       {x43150000 x42a526be -}\n       {x43160000 x42a4853a xbef24600 1 0 1}}\n      {{x42540000 x446b8e1e 0 1 xc1265280 1}\n       {x42580000 x44690c35 xc114c9c0 1 xc114c9c0 1}\n       {x425c0000 x4466e7d0 xc1305c40 1 xc1305c40 1}\n       {x42600000 x44638953 xc168fca0 1 xc168fca0 1}\n       {x42640000 x445f9feb xc17fef00 1 xc17fef00 1}\n       {x42680000 x445b89db xc1855a70 1 xc1855a70 1}\n       {x426c0000 x44574a44 xc17e6ee0 1 xc17e6ee0 1}\n       {x42700000 x44539664 xc17d0840 1 xc17d0840 1}\n       {x42740000 x444f6202 xc188e610 1 xc188e610 1}\n       {x42780000 x444b0803 xc18cb4b0 1 xc18cb4b0 1}\n       {x427c0000 x444696b7 xc1916a20 1 xc1916a20 1}\n       {x42800000 x4441f161 xc19da9c0 1 xc19da9c0 1}\n       {x42820000 x443cbc1b xc1a80570 1 xc1a80570 1}\n       {x42840000 x4437710a xc1adde00 1 xc1adde00 1}\n       {x42860000 x4431de3b xc1b894b0 1 xc1b894b0 1}\n       {x42880000 x442be7bf xc1b3d530 1 xc1b3d530 1}\n       {x428a0000 x4426a0e8 xc1a71c80 1 xc1a71c80 1}\n       {x428c0000 x442175f7 xc1a03b10 1 xc1a03b10 1}\n       {x428e0000 x441c9d37 xc198e840 1 xc198e840 1}\n       {x42900000 x4417e773 xc1a707d0 1 xc1a707d0 1}\n       {x42920000 x44122cba xc1b41e10 1 xc1b41e10 1}\n       {x42940000 x440ca592 xc1a93f90 1 xc1a93f90 1}\n       {x42960000 x440798c1 xc19a2aa0 1 xc19a2aa0 1}\n       {x42980000 x440302e8 xc189b3e8 1 xc189b3e8 1}\n       {x429a0000 x43fdfb05 xc178c650 1 xc178c650 1}\n       {x429c0000 x43f6796b xc16d6620 1 xc16d6620 1}\n       {x429e0000 x43ef24a3 xc176b380 1 xc176b380 1}\n       {x42a00000 x43e70e33 xc18c88e0 1 xc18c88e0 1}\n       {x42a20000 x43dd9387 xc19a4bf0 1 xc19a4bf0 1}\n       {x42a40000 x43d3c4b5 xc1937e10 1 xc1937e10 1}\n       {x42a60000 x43cb23c5 xc194e6d8 1 xc194e6d8 1}\n       {x42a80000 x43c127da xc19eb670 1 xc19eb670 1}\n       {x42aa0000 x43b74cf7 xc1935a58 1 xc1935a58 1}\n       {x42ac0000 x43aebc8f xc1888618 1 xc1888618 1}\n       {x42ae0000 x43a63c34 xc189dd30 1 xc189dd30 1}\n       {x42b00000 x439d80e9 xc186dd08 1 xc186dd08 1}\n       {x42b20000 x43956093 xc18807f8 1 xc18807f8 1}\n       {x42b40000 x438c7fea xc19460a8 1 xc19460a8 1}\n       {x42b60000 x4382d47e xc197eb98 1 xc197eb98 1}\n       {x42b80000 x437304ee xc1950710 1 xc1950710 1}\n       {x42ba0000 x43606738 xc18fc0c0 1 xc18fc0c0 1}\n       {x42bc0000 x434f14be xc182ce88 1 xc182ce88 1}\n       {x42be0000 x433fb396 xc16554c0 1 xc16554c0 1}\n       {x42c00000 x43326a26 xc1486e10 1 xc1486e10 1}\n       {x42c20000 x4326a5d4 xc1336700 1 xc1336700 1}\n       {x42c40000 x431bfd46 xc12e96f8 1 xc12e96f8 1}\n       {x42c60000 x4310d2f5 xc13c1ae8 1 xc13c1ae8 1}\n       {x42c80000 x430479e9 xc13cf2a0 1 xc13cf2a0 1}\n       {x42ca0000 x42f26942 xc12eabd4 1 xc12eabd4 1}\n       {x42cc0000 x42dd48dd xc130cef8 1 xc130cef8 1}\n       {x42ce0000 x42c63584 xc130c1e8 1 xc130c1e8 1}\n       {x42d00000 x42b11863 xc11d532c 1 xc11d532c 1}\n       {x42d20000 x429ee0b9 xc1085918 1 xc1085918 1}\n       {x42d40000 x428f021d xc0fc37c4 1 xc0fc37c4 1}\n       {x42d60000 x427eb381 xc0f1cfc0 1 xc0f1cfc0 1}\n       {x42d80000 x4261904a xc0e85e30 1 xc0e85e30 1}\n       {x42da0000 x42449bf5 xc0eb9774 1 xc0eb9774 1}\n       {x42dc0000 x4226aa6d xc0e572b4 1 xc0e572b4 1}\n       {x42de0000 x420b3f48 xc0c94fba 1 xc0c94fba 1}\n       {x42e00000 x41e8acfd xc0acf496 1 xc0acf496 1}\n       {x42e20000 x41c00445 xc08fc886 1 xc08fc886 1}\n       {x42e40000 x41a0c8ba xc0673710 1 xc0673710 1}\n       {x42e60000 x41863681 xc0326144 1 xc0326144 1}\n       {x42e80000 x416860d2 xbff41d48 1 xbff41d48 1}\n       {x42ea0000 x414f65b0 xbff74a28 1 xbff74a28 1}\n       {x42ec0000 x412a8e48 xc003028c 1 xc003028c 1}\n       {x42ee0000 x410de46a xbfd6db1a 1 xbfd6db1a 1}\n       {x42f00000 x40e9af03 xbfe2b382 1 xbfe2b382 1}\n       {x42f20000 x40aa6f13 xbfe1676e 1 xbfe1676e 1}\n       {x42f40000 x4071f698 xbfdd21ff 1 xbfdd21ff 1}\n       {x42f60000 x3fef784e xbfa4d9fd 1 xbfa4d9fd 1}\n       {x42f80000 x3f9a3936 xbf623407 1 xbf623407 1}\n       {x42fa0000 x3dd4446c xbe9f3351 1 xbe9f3351 1}\n       {x42fc0000 0 xbe752338 1 xbe752338 1}\n       {x42fe0000 xbec0121d xbea1ed58 1 xbea1ed58 1}\n       {x43000000 xbf21ed58 -}\n       {x43010000 xbecbf16b x3f1921da 1 x3f1921da 1}\n       {x43020000 x3f10565b x3f9ec015 1 x3f9ec015 1}\n       {x43030000 x400541e8 x3fc82910 1 x3fc82910 1}\n       {x43040000 x406c3ea7 x3ff8a336 1 x3ff8a336 1}\n       {x43050000 x40bef28f x4015dee4 1 x4015dee4 1}\n       {x43060000 x4105ff1c x4013bfbd 1 x4013bfbd 1}\n       {x43070000 x41295926 x4024583c 1 x4024583c 1}\n       {x43080000 x41582b3a x40314368 1 x40314368 1}\n       {x43090000 x4180fd6d x403249e4 1 x403249e4 1}\n       {x430a0000 x4198a816 x402417a0 1 x402417a0 1}\n       {x430b0000 x41aa0355 x40092fa8 1 x40092fa8 1}\n       {x430c0000 x41baf400 x400b886c 1 x400b886c 1}\n       {x430d0000 x41cce570 x40146840 1 x40146840 1}\n       {x430e0000 x41e00e10 x4019562c 1 x4019562c 1}\n       {x430f0000 x41f33afb x401a0198 1 x401a0198 1}\n       {x43100000 x4203473b x401d769c 1 x401d769c 1}\n       {x43110000 x420d4c51 x401ee180 1 x401ee180 1}\n       {x43120000 x4217236b x40272de8 1 x40272de8 1}\n       {x43130000 x4222320e x3ffcca30 1 x3ffcca30 1}\n       {x43140000 x4226f00e x3f899960 1 x3f899960 1}\n       {x43150000 x422acba4 -}\n       {x43160000 x42285226 xbf6d8f40 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke43 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44e7c5a2 x440c9811 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke44 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44e7c5a2 x440c9811 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2ad911c 0 1 x3f78e180 1}\n       {x42580000 xc2ab410e x3fc32900 1 x3fc32900 1}\n       {x425c0000 xc2a777d4 x401106d0 1 x401106d0 1}\n       {x42600000 xc2a230a1 x4081d768 1 x4081d768 1}\n       {x42640000 xc2973ce7 x40a644c8 1 x40a644c8 1}\n       {x42680000 xc28d6808 x40b6dd58 1 x40b6dd58 1}\n       {x426c0000 xc280613c x408cc930 1 x408cc930 1}\n       {x42700000 xc2779dc4 x40199048 1 x40199048 1}\n       {x42740000 xc26d906f x403c4178 1 x403c4178 1}\n       {x42780000 xc2601595 x405d27d0 1 x405d27d0 1}\n       {x427c0000 xc251eb75 x405ce460 1 x405ce460 1}\n       {x42800000 xc2447909 x405e5f20 1 x405e5f20 1}\n       {x42820000 xc2361f91 x4081e614 1 x4081e614 1}\n       {x42840000 xc223ff84 -}\n       {x42860000 xc2264b9f xbf077b20 1 xbf077b20 1}\n       {x42880000 xc2283b5d -}\n       {x428a0000 xc2270662 -}\n       {x428c0000 xc22ad2f5 -}\n       {x428e0000 xc2190f98 x408e5728 1 x408e5728 1}\n       {x42900000 xc2073d2b x4098c280 1 x4098c280 1}\n       {x42920000 xc1e5bdf0 x40a2160c 1 x40a2160c 1}\n       {x42940000 xc1bd6f50 x4077ca84 1 x4077ca84 1}\n       {x42960000 xc1a7cb4f x40286018 1 x40286018 1}\n       {x42980000 xc193574a x40509d5a 1 x40509d5a 1}\n       {x429a0000 xc16747f1 x40634108 1 x40634108 1}\n       {x429c0000 xc1350e10 x40029506 1 x40029506 1}\n       {x429e0000 xc125fd6e x3f74f338 1 x3f74f338 1}\n       {x42a00000 xc1166fa9 x3f57f750 1 x3f57f750 1}\n       {x42a20000 xc10afe84 x3f752864 1 x3f752864 1}\n       {x42a40000 xc0ef9539 x3f797fd8 1 x3f797fd8 1}\n       {x42a60000 xc0d79d12 -}\n       {x42a80000 xc0dc1ac0 -}\n       {x42aa0000 xc0ce93fe -}\n       {x42ac0000 xc0daf50f xbf230238 1 xbf230238 1}\n       {x42ae0000 xc0f7548c xbfc6dbfe 1 xbfc6dbfe 1}\n       {x42b00000 xc11f3187 xbfffa794 1 xbfffa794 1}\n       {x42b20000 xc13b942b xc00d1bf4 1 xc00d1bf4 1}\n       {x42b40000 xc165bf81 xc01128a2 1 xc01128a2 1}\n       {x42b60000 xc182143e xc002b06e 1 xc002b06e 1}\n       {x42b80000 xc1938bdc xbffa3df0 1 xbffa3df0 1}\n       {x42ba0000 xc1a15bfc xc00697d0 1 xc00697d0 1}\n       {x42bc0000 xc1b531d0 xc0059ebc 1 xc0059ebc 1}\n       {x42be0000 xc1c2c3ab xc006df70 1 xc006df70 1}\n       {x42c00000 xc1d6e9ac xc032237c 1 xc032237c 1}\n       {x42c20000 xc1ef4c8a xbff129d8 1 xbff129d8 1}\n       {x42c40000 xc1f50ee7 xbf08c9b0 1 xbf08c9b0 1}\n       {x42c60000 xc1f7d925 xbc6c8800 1 xbc6c8800 1}\n       {x42c80000 xc1f7e300 xbc6c8800 1 xbc6c8800 1}\n       {x42ca0000 xc1f90a97 xbe6265c0 1 xbe6265c0 1}\n       {x42cc0000 xc1fb6c97 xbf08a7b0 1 xbf08a7b0 1}\n       {x42ce0000 xc200ca89 xbf07d530 1 xbf07d530 1}\n       {x42d00000 xc201f4f5 xbf03a8e0 1 xbf03a8e0 1}\n       {x42d20000 xc204e7d0 xbf41ed60 1 xbf41ed60 1}\n       {x42d40000 xc2080460 xbf2eda40 1 xbf2eda40 1}\n       {x42d60000 xc20a5ea2 xbf28b780 1 xbf28b780 1}\n       {x42d80000 xc20d4a1c -}\n       {x42da0000 xc20b264b -}\n       {x42dc0000 xc20b29cb -}\n       {x42de0000 xc209ce81 x3eb885c0 1 x3eb885c0 1}\n       {x42e00000 xc20847b4 x3f349860 1 x3f349860 1}\n       {x42e20000 xc20429be x3f917bd0 1 x3f917bd0 1}\n       {x42e40000 xc1fe5fee x3fc11330 1 x3fc11330 1}\n       {x42e60000 xc1f03116 x3fc9ed20 1 x3fc9ed20 1}\n       {x42e80000 xc1e5224a x3fc2aa78 1 x3fc2aa78 1}\n       {x42ea0000 xc1d7dbc7 x3fd910c8 1 x3fd910c8 1}\n       {x42ec0000 xc1ca0031 x400293c4 1 x400293c4 1}\n       {x42ee0000 xc1b736d6 x401ce670 1 x401ce670 1}\n       {x42f00000 xc1a2c695 x402cbcd0 1 x402cbcd0 1}\n       {x42f20000 xc18c07a2 x4051faf0 1 x4051faf0 1}\n       {x42f40000 xc15c8fb2 x40600bb2 1 x40600bb2 1}\n       {x42f60000 xc128096b x405fab4f 1 x405fab4f 1}\n       {x42f80000 xc0d97415 x4057b5cc 1 x4057b5cc 1}\n       {x42fa0000 xc070ba14 x40597415 1 x40597415 1}\n       {x42fc0000 0 x406997fa 1 x406997fa 1}\n       {x42fe0000 x406275df x40624715 1 x40624715 1}\n       {x43000000 x40e24715 x4057a5a2 1 x4057a5a2 1}\n       {x43010000 x41247049 x40446b5f 1 x40446b5f 1}\n       {x43020000 x4153593a x404be646 1 x404be646 1}\n       {x43030000 x418531b6 x403fbaf8 1 x403fbaf8 1}\n       {x43040000 x41999b5b x4029d474 1 x4029d474 1}\n       {x43050000 x41afa6d3 x40197754 1 x40197754 1}\n       {x43060000 x41bff930 x4001483c 1 x4001483c 1}\n       {x43070000 x41cff8e2 x3fd99d40 1 x3fd99d40 1}\n       {x43080000 x41db2cd8 x3fb65488 1 x3fb65488 1}\n       {x43090000 x41e6c373 x3fa89090 1 x3fa89090 1}\n       {x430a0000 x41f03eea x3fb93ee8 1 x3fb93ee8 1}\n       {x430b0000 x41fdeb50 x3fcbb950 1 x3fcbb950 1}\n       {x430c0000 x4204db0a x3fb949d0 1 x3fb949d0 1}\n       {x430d0000 x420a8a45 x3fb374a0 1 x3fb374a0 1}\n       {x430e0000 x42101254 x3fb3f220 1 x3fb3f220 1}\n       {x430f0000 x4215c967 x3fdc7cf0 1 x3fdc7cf0 1}\n       {x43100000 x421dda23 x3fe9e1b0 1 x3fe9e1b0 1}\n       {x43110000 x42246782 x3fd07ab0 1 x3fd07ab0 1}\n       {x43120000 x422ae1ce x3fb33130 1 x3fb33130 1}\n       {x43130000 x422f9a95 x3f8efb00 1 x3f8efb00 1}\n       {x43140000 x4233d17e x3f4aa8e0 1 x3f4aa8e0 1}\n       {x43150000 x4235efdc -}\n       {x43160000 x4230f660 xbfeec740 1 0 1}}\n      {{x42540000 x443863cf 0 1 xc10c9080 1}\n       {x42580000 x443631dd xc10c5480 1 xc10c5480 1}\n       {x425c0000 x4434012b xc1024d60 1 xc1024d60 1}\n       {x42600000 x44321f72 xc11b9ce0 1 xc11b9ce0 1}\n       {x42640000 x442f2444 xc13adb00 1 xc13adb00 1}\n       {x42680000 x442c489a xc1541360 1 xc1541360 1}\n       {x426c0000 x442883a9 xc1439e60 1 xc1439e60 1}\n       {x42700000 x44262ba7 xc1168a00 1 xc1168a00 1}\n       {x42740000 x4423cf59 xc1303f00 1 xc1303f00 1}\n       {x42780000 x4420a9af xc14cd620 1 xc14cd620 1}\n       {x427c0000 x441d68a8 xc14f9580 1 xc14f9580 1}\n       {x42800000 x441a2d03 xc15321e0 1 xc15321e0 1}\n       {x42820000 x4416cf99 xc16930a0 1 xc16930a0 1}\n       {x42840000 x4412e37e xc1471b80 1 xc1471b80 1}\n       {x42860000 x441096bd xc10e1ea0 1 xc10e1ea0 1}\n       {x42880000 x440e7289 xc1141b60 1 xc1141b60 1}\n       {x428a0000 x440bf5e2 xc1183420 1 xc1183420 1}\n       {x428c0000 x4409b0e8 xc14b1b40 1 xc14b1b40 1}\n       {x428e0000 x44059d08 xc183ffd0 1 xc183ffd0 1}\n       {x42900000 x440170eb xc18632c0 1 xc18632c0 1}\n       {x42920000 x43fa73b8 xc187d538 1 xc187d538 1}\n       {x42940000 x43f1e72f xc1804488 1 xc1804488 1}\n       {x42960000 x43ea6b27 xc16b92a0 1 xc16b92a0 1}\n       {x42980000 x43e32e05 xc165c0d0 1 xc165c0d0 1}\n       {x429a0000 x43dc0f1a xc155ef70 1 xc155ef70 1}\n       {x429c0000 x43d5cf0e xc149f9c0 1 xc149f9c0 1}\n       {x429e0000 x43cf6f7e xc14f7510 1 xc14f7510 1}\n       {x42a00000 x43c8d7bd xc15622d0 1 xc15622d0 1}\n       {x42a20000 x43c20d51 xc15ba030 1 xc15ba030 1}\n       {x42a40000 x43bb1dba xc165c7a0 1 xc165c7a0 1}\n       {x42a60000 x43b3b0d7 xc1790c80 1 xc1790c80 1}\n       {x42a80000 x43ab8cf2 xc17b1520 1 xc17b1520 1}\n       {x42aa0000 x43a3ff85 xc16bf680 1 xc16bf680 1}\n       {x42ac0000 x439ccd8a xc15cc8f0 1 xc15cc8f0 1}\n       {x42ae0000 x439632f6 xc15841d0 1 xc15841d0 1}\n       {x42b00000 x438f496d xc15391d0 1 xc15391d0 1}\n       {x42b20000 x4388f9d9 xc155e510 1 xc155e510 1}\n       {x42b40000 x4381eb1c xc1551770 1 xc1551770 1}\n       {x42b60000 x437750c4 xc150a120 1 xc150a120 1}\n       {x42b80000 x4369c214 xc150ff18 1 xc150ff18 1}\n       {x42ba0000 x435d30e1 xc150bd30 1 xc150bd30 1}\n       {x42bc0000 x434faa6e xc145cb80 1 xc145cb80 1}\n       {x42be0000 x43447771 xc136b2b8 1 xc136b2b8 1}\n       {x42c00000 x4338d417 xc1366c50 1 xc1366c50 1}\n       {x42c20000 x432da9e7 xc1205be0 1 xc1205be0 1}\n       {x42c40000 x4324c89b xc10b3e18 1 xc10b3e18 1}\n       {x42c60000 x431c4224 xc1002ab8 1 xc1002ab8 1}\n       {x42c80000 x4314c344 xc0fd4ef0 1 xc0fd4ef0 1}\n       {x42ca0000 x430c6d35 xc1018c78 1 xc1018c78 1}\n       {x42cc0000 x430491b5 xc100da50 1 xc100da50 1}\n       {x42ce0000 x42f8a3d6 xc0fe26f8 1 xc0fe26f8 1}\n       {x42d00000 x42e95e8b xc0e190c0 1 xc0e190c0 1}\n       {x42d20000 x42dc71be xc0cb8738 1 xc0cb8738 1}\n       {x42d40000 x42cfeda4 xc0beef20 1 xc0beef20 1}\n       {x42d60000 x42c493da xc0c27058 1 xc0c27058 1}\n       {x42d80000 x42b79f99 xc0b5c8d8 1 xc0b5c8d8 1}\n       {x42da0000 x42addabf xc0c5bb20 1 xc0c5bb20 1}\n       {x42dc0000 x429ee835 xc0e11e40 1 xc0e11e40 1}\n       {x42de0000 x4291b6f7 xc0d163d8 1 xc0d163d8 1}\n       {x42e00000 x4284bbba xc0b34478 1 xc0b34478 1}\n       {x42e20000 x42769cd0 xc09c5748 1 xc09c5748 1}\n       {x42e40000 x426261a2 xc0982d94 1 xc0982d94 1}\n       {x42e60000 x4250916b xc08d2858 1 xc08d2858 1}\n       {x42e80000 x423f178c xc08044cc 1 xc08044cc 1}\n       {x42ea0000 x42308038 xc0814390 1 xc0814390 1}\n       {x42ec0000 x421ec6a8 xc08b512c 1 xc08b512c 1}\n       {x42ee0000 x420dabed xc08ea226 1 xc08ea226 1}\n       {x42f00000 x41f63c3d xc09e6d44 1 xc09e6d44 1}\n       {x42f20000 x41cc2138 xc09e517a 1 xc09e517a 1}\n       {x42f40000 x41a71380 xc09f79ff 1 xc09f79ff 1}\n       {x42f60000 x4178c871 xc0a00fe1 1 xc0a00fe1 1}\n       {x42f80000 x412e171f xc0ae138e 1 xc0ae138e 1}\n       {x42fa0000 x409569c6 xc0ae171f 1 xc0ae171f 1}\n       {x42fc0000 0 xc093ba15 1 xc093ba15 1}\n       {x42fe0000 xc0920a64 xc092c5d2 1 xc092c5d2 1}\n       {x43000000 xc112c5d2 xc08fff95 1 xc08fff95 1}\n       {x43010000 xc15904c7 xc08ac890 1 xc08ac890 1}\n       {x43020000 xc18ec731 xc05ef5ee 1 xc05ef5ee 1}\n       {x43030000 xc1a43fdf xc04bfb40 1 xc04bfb40 1}\n       {x43040000 xc1c1c601 xc0469bcc 1 xc0469bcc 1}\n       {x43050000 xc1d5e6d2 xc030f148 1 xc030f148 1}\n       {x43060000 xc1ee0253 xc037c640 1 xc037c640 1}\n       {x43070000 xc201ec31 xc029471c 1 xc029471c 1}\n       {x43080000 xc20c2a0d xc00da288 1 xc00da288 1}\n       {x43090000 xc213a082 xbffb0d30 1 xbffb0d30 1}\n       {x430a0000 xc21bdae0 xbfe2f220 1 xbfe2f220 1}\n       {x430b0000 xc221cfa4 xbfe49a80 1 xbfe49a80 1}\n       {x430c0000 xc22a2488 xc0088d58 1 xc0088d58 1}\n       {x430d0000 xc232e14f xbff6d0c0 1 xbff6d0c0 1}\n       {x430e0000 xc2399194 xbfc6bf00 1 xbfc6bf00 1}\n       {x430f0000 xc23f4d3f xbfab7550 1 xbfab7550 1}\n       {x43100000 xc24448e9 xbfd527d0 1 xbfd527d0 1}\n       {x43110000 xc24c9fbc xbff3f4b0 1 xbff3f4b0 1}\n       {x43120000 xc2538834 xbfd1eb30 1 xbfd1eb30 1}\n       {x43130000 xc259be6f xbfd2b960 1 xbfd2b960 1}\n       {x43140000 xc260b3ca xbfd34620 1 xbfd34620 1}\n       {x43150000 xc266f2d1 xc02f9830 1 xc02f9830 1}\n       {x43160000 xc276a6d0 xc09089e8 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke45 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44cd2917 x446143d7 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke46 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44cd2917 x446143d7 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc370b3d7 0 1 x40dceee0 1}\n       {x42580000 xc369861f x40f74740 1 x40f74740 1}\n       {x425c0000 xc3613f63 x40e52090 1 x40e52090 1}\n       {x42600000 xc35b3416 x40c14780 1 x40c14780 1}\n       {x42640000 xc3552aeb x40d6a580 1 x40d6a580 1}\n       {x42680000 xc34dc9be x40f58da0 1 x40f58da0 1}\n       {x426c0000 xc345d211 x40e5c600 1 x40e5c600 1}\n       {x42700000 xc33f6d5e x40cb5de0 1 x40cb5de0 1}\n       {x42740000 xc3391c33 x40be6f90 1 x40be6f90 1}\n       {x42780000 xc3338665 x40deb050 1 x40deb050 1}\n       {x427c0000 xc32b312e x4100d568 1 x4100d568 1}\n       {x42800000 xc3236bb8 x40ee1db0 1 x40ee1db0 1}\n       {x42820000 xc31c4f53 x40cbae00 1 x40cbae00 1}\n       {x42840000 xc316b0d8 x40b2e790 1 x40b2e790 1}\n       {x42860000 xc31120da x40b796d0 1 x40b796d0 1}\n       {x42880000 xc30b376b x40bc0510 1 x40bc0510 1}\n       {x428a0000 xc3056089 x40b73b60 1 x40b73b60 1}\n       {x428c0000 xc2ff876a x40a852e0 1 x40a852e0 1}\n       {x428e0000 xc2f5b6b6 x40a06d68 1 x40a06d68 1}\n       {x42900000 xc2eb79bd x40a97478 1 x40a97478 1}\n       {x42920000 xc2e08827 x40a8f678 1 x40a8f678 1}\n       {x42940000 xc2d65aee x40992e00 1 x40992e00 1}\n       {x42960000 xc2cd6267 x408ecec0 1 x408ecec0 1}\n       {x42980000 xc2c48116 x408adef8 1 x408adef8 1}\n       {x429a0000 xc2bc0688 x40769440 1 x40769440 1}\n       {x429c0000 xc2b517d2 x4042ad60 1 x4042ad60 1}\n       {x429e0000 xc2afdbb2 x400aeeb0 1 x400aeeb0 1}\n       {x42a00000 xc2ac68e7 x3fcb7fa0 1 x3fcb7fa0 1}\n       {x42a20000 xc2a97fb5 x3fd32bc0 1 x3fd32bc0 1}\n       {x42a40000 xc2a5cf89 x3fecad00 1 x3fecad00 1}\n       {x42a60000 xc2a21a4d x3fba3540 1 x3fba3540 1}\n       {x42a80000 xc29ffddf x3f845340 1 x3f845340 1}\n       {x42aa0000 xc29df7b3 x3f3535c0 1 x3f3535c0 1}\n       {x42ac0000 xc29d2908 -}\n       {x42ae0000 xc29ec7d0 xbf9be060 1 xbf9be060 1}\n       {x42b00000 xc2a2080b xbfcb91e0 1 xbfcb91e0 1}\n       {x42b20000 xc2a5245f xbfa240c0 1 xbfa240c0 1}\n       {x42b40000 xc2a71a11 xbf7965c0 1 xbf7965c0 1}\n       {x42b60000 xc2a909f6 xbf68c800 1 xbf68c800 1}\n       {x42b80000 xc2aabd31 xbf7ef240 1 xbf7ef240 1}\n       {x42ba0000 xc2ad05bf xbf8d7940 1 xbf8d7940 1}\n       {x42bc0000 xc2af28fb xbf8b9a00 1 xbf8b9a00 1}\n       {x42be0000 xc2b1628f xbf865140 1 xbf865140 1}\n       {x42c00000 xc2b35b85 xbf721040 1 xbf721040 1}\n       {x42c20000 xc2b52ad0 -}\n       {x42c40000 xc2b35a25 x3fbb4f40 1 x3fbb4f40 1}\n       {x42c60000 xc2af5056 x3fb9f140 1 x3fb9f140 1}\n       {x42c80000 xc2ad8a9b x3f821bc0 1 x3f821bc0 1}\n       {x42ca0000 xc2ab3f78 x3fba05c0 1 x3fba05c0 1}\n       {x42cc0000 xc2a7ba6d x3fb9bec0 1 x3fb9bec0 1}\n       {x42ce0000 xc2a57182 x3f9b0c20 1 x3f9b0c20 1}\n       {x42d00000 xc2a2e20c x3f81a040 1 x3f81a040 1}\n       {x42d20000 xc2a16480 x3f63d2c0 1 x3f63d2c0 1}\n       {x42d40000 xc29f52c1 x3f72e080 1 x3f72e080 1}\n       {x42d60000 xc29d98fe x3f9a5480 1 x3f9a5480 1}\n       {x42d80000 xc29a801d x3fc76520 1 x3fc76520 1}\n       {x42da0000 xc2975dd5 x3ffa1d20 1 x3ffa1d20 1}\n       {x42dc0000 xc292af34 x401cb480 1 x401cb480 1}\n       {x42de0000 xc28d928d x402de6c0 1 x402de6c0 1}\n       {x42e00000 xc287d0c8 x40416a50 1 x40416a50 1}\n       {x42e20000 xc2817be8 x404bd3c8 1 x404bd3c8 1}\n       {x42e40000 xc2762717 x40587a50 1 x40587a50 1}\n       {x42e60000 xc267e886 x4067c8c0 1 x4067c8c0 1}\n       {x42e80000 xc2592dff x406b2d38 1 x406b2d38 1}\n       {x42ea0000 xc24a82df x4083603c 1 x4083603c 1}\n       {x42ec0000 xc23855f0 x4096bf4c 1 x4096bf4c 1}\n       {x42ee0000 xc224d30c x409ce818 1 x409ce818 1}\n       {x42f00000 xc2111bea x40a93b52 1 x40a93b52 1}\n       {x42f20000 xc1f5086f x40b7c550 1 x40b7c550 1}\n       {x42f40000 xc1c6552c x40c33008 1 x40c33008 1}\n       {x42f60000 xc193706b x40c30b73 1 x40c30b73 1}\n       {x42f80000 xc1499ee5 x40c2a31e 1 x40c2a31e 1}\n       {x42fa0000 xc0c87b71 x40c99ee5 1 x40c99ee5 1}\n       {x42fc0000 0 x40c09efb 1 x40c09efb 1}\n       {x42fe0000 x40b8c285 x40b83ce5 1 x40b83ce5 1}\n       {x43000000 x41383ce5 x40b8ce02 1 x40b8ce02 1}\n       {x43010000 x418a97a2 x40b1ad37 1 x40b1ad37 1}\n       {x43020000 x41b4f50e x40a48396 1 x40a48396 1}\n       {x43030000 x41dcd96d x40975938 1 x40975938 1}\n       {x43040000 x420050d5 x40884fb6 1 x40884fb6 1}\n       {x43050000 x421080a4 x407069b0 1 x407069b0 1}\n       {x43060000 x421e5e0b x405f27c8 1 x405f27c8 1}\n       {x43070000 x422c659d x40509810 1 x40509810 1}\n       {x43080000 x4238710d x402bc808 1 x402bc808 1}\n       {x43090000 x4241de9e x402ed318 1 x402ed318 1}\n       {x430a0000 x424e4b70 x40342818 1 x40342818 1}\n       {x430b0000 x425863a1 x40195080 1 x40195080 1}\n       {x430c0000 x42617580 x400a5108 1 x400a5108 1}\n       {x430d0000 x4269adc2 x4012d6f0 1 x4012d6f0 1}\n       {x430e0000 x4273d05e x4016a1e0 1 x4016a1e0 1}\n       {x430f0000 x427c81fe x40149720 1 x40149720 1}\n       {x43100000 x428331a1 x401ca930 1 x401ca930 1}\n       {x43110000 x42880b92 x40173b90 1 x40173b90 1}\n       {x43120000 x428ca55a x4002ccc0 1 x4002ccc0 1}\n       {x43130000 x4290385e x3fdd3480 1 x3fdd3480 1}\n       {x43140000 x42938efe x3f882260 1 x3f882260 1}\n       {x43150000 x42947971 -}\n       {x43160000 x4293d617 xbef50700 1 0 1}}\n      {{x42540000 x444d62ca 0 1 xc1172d00 1}\n       {x42580000 x444b106b xc10f6d40 1 xc10f6d40 1}\n       {x425c0000 x4448e760 xc1121fe0 1 xc1121fe0 1}\n       {x42600000 x44467f6c xc130ecc0 1 xc130ecc0 1}\n       {x42640000 x44435ffa xc1581b00 1 xc1581b00 1}\n       {x42680000 x443fbe94 xc17907c0 1 xc17907c0 1}\n       {x426c0000 x443b97bc xc16a5fe0 1 xc16a5fe0 1}\n       {x42700000 x44386b95 xc14dd220 1 xc14dd220 1}\n       {x42740000 x4435292b xc15853c0 1 xc15853c0 1}\n       {x42780000 x4431a8f7 xc1737f40 1 xc1737f40 1}\n       {x427c0000 x442d8d31 xc1875bf0 1 xc1875bf0 1}\n       {x42800000 x44293338 xc188fe80 1 xc188fe80 1}\n       {x42820000 x4424fd49 xc1874130 1 xc1874130 1}\n       {x42840000 x4420bf25 xc1895700 1 xc1895700 1}\n       {x42860000 x441c67d9 xc189fa30 1 xc189fa30 1}\n       {x42880000 x44181f82 xc184c3f0 1 xc184c3f0 1}\n       {x428a0000 x44141b9a xc17fc3c0 1 xc17fc3c0 1}\n       {x428c0000 x44102164 xc1830670 1 xc1830670 1}\n       {x428e0000 x440beb33 xc18a30e0 1 xc18a30e0 1}\n       {x42900000 x44077e56 xc1903940 1 xc1903940 1}\n       {x42920000 x4402e79f xc193b2e0 1 xc193b2e0 1}\n       {x42940000 x43fc8650 xc1907508 1 xc1907508 1}\n       {x42960000 x43f3c09d xc18a8220 1 xc18a8220 1}\n       {x42980000 x43eb360c xc17e6570 1 xc17e6570 1}\n       {x429a0000 x43e3da46 xc161f090 1 xc161f090 1}\n       {x429c0000 x43dd1703 xc1601a20 1 xc1601a20 1}\n       {x429e0000 x43d5d8a4 xc1682e00 1 xc1682e00 1}\n       {x42a00000 x43ce9423 xc1693f40 1 xc1693f40 1}\n       {x42a20000 x43c744b0 xc16ee5c0 1 xc16ee5c0 1}\n       {x42a40000 x43bfa5c7 xc17824e0 1 xc17824e0 1}\n       {x42a60000 x43b7c262 xc17c9b70 1 xc17c9b70 1}\n       {x42a80000 x43afdc10 xc17ba1b0 1 xc17ba1b0 1}\n       {x42aa0000 x43a80847 xc1747410 1 xc1747410 1}\n       {x42ac0000 x43a094cf xc1654640 1 xc1654640 1}\n       {x42ae0000 x4399b3e3 xc15b62e0 1 xc15b62e0 1}\n       {x42b00000 x4392dea1 xc1621dd0 1 xc1621dd0 1}\n       {x42b20000 x438b9206 xc1714220 1 xc1714220 1}\n       {x42b40000 x4383ca7f xc1792740 1 xc1792740 1}\n       {x42b60000 x4377ff24 xc1783a78 1 xc1783a78 1}\n       {x42b80000 x43688daf xc17b0ea8 1 xc17b0ea8 1}\n       {x42ba0000 x43589d4f xc1778c58 1 xc1778c58 1}\n       {x42bc0000 x43499c24 xc168f268 1 xc168f268 1}\n       {x42be0000 x433b7f02 xc1556250 1 xc1556250 1}\n       {x42c00000 x432eefda xc13d1cb8 1 xc13d1cb8 1}\n       {x42c20000 x4323db6b xc1260810 1 xc1260810 1}\n       {x42c40000 x431a2ed8 xc114db30 1 xc114db30 1}\n       {x42c60000 x43114005 xc118c5f8 1 xc118c5f8 1}\n       {x42c80000 x43071619 xc12170ec 1 xc12170ec 1}\n       {x42ca0000 x42fa23cf xc115e390 1 xc115e390 1}\n       {x42cc0000 x42e8b34e xc1108c54 1 xc1108c54 1}\n       {x42ce0000 x42d600ba xc11062e0 1 xc11062e0 1}\n       {x42d00000 x42c49a96 xc1072420 1 xc1072420 1}\n       {x42d20000 x42b437b2 xc0fb4e20 1 xc0fb4e20 1}\n       {x42d40000 x42a530d2 xc0e85e60 1 xc0e85e60 1}\n       {x42d60000 x42972be6 xc0d861b0 1 xc0d861b0 1}\n       {x42d80000 x428a249c xc0db3844 1 xc0db3844 1}\n       {x42da0000 x427789bb xc0de5340 1 xc0de5340 1}\n       {x42dc0000 x425cb468 xc0d71b98 1 xc0d71b98 1}\n       {x42de0000 x4241c2d5 xc0bda818 1 xc0bda818 1}\n       {x42e00000 x422d4a62 xc094571c 1 xc094571c 1}\n       {x42e20000 x421cad0e xc0887bb0 1 xc0887bb0 1}\n       {x42e40000 x420b2b76 xc07dfd3c 1 xc07dfd3c 1}\n       {x42e60000 x41f9dacd xc04b1550 1 xc04b1550 1}\n       {x42e80000 x41e39198 xc02fccf0 1 xc02fccf0 1}\n       {x42ea0000 x41cde791 xc03384a4 1 xc03384a4 1}\n       {x42ec0000 x41b6b06f xc02e1dbc 1 xc02e1dbc 1}\n       {x42ee0000 x41a26022 xc033b008 1 xc033b008 1}\n       {x42f00000 x4189c46d xc048afc0 1 xc048afc0 1}\n       {x42f20000 x41606864 xc0542596 1 xc0542596 1}\n       {x42f40000 x4129760f xc047dc39 1 xc047dc39 1}\n       {x42f60000 x40f8f48f xc046dc3b 1 xc046dc3b 1}\n       {x42f80000 x408c0fe3 xc0432a0c 1 xc0432a0c 1}\n       {x42fa0000 x3fd72a0d xc00c0fe3 1 xc00c0fe3 1}\n       {x42fc0000 0 xc001431d 1 xc001431d 1}\n       {x42fe0000 xc016f134 xc016263e 1 xc016263e 1}\n       {x43000000 xc096263e xbffa99c8 1 xbffa99c8 1}\n       {x43010000 xc0c8c57e xbfc46228 1 xbfc46228 1}\n       {x43020000 xc0f85752 xbf9c8294 1 xbf9c8294 1}\n       {x43030000 xc10b8364 xbf41e910 1 xbf41e910 1}\n       {x43040000 xc11468cb xbf266db8 1 xbf266db8 1}\n       {x43050000 xc120511b xbf28e5f0 1 xbf28e5f0 1}\n       {x43060000 xc1298589 -}\n       {x43070000 xc124659d x3e6bd0a0 1 x3e6bd0a0 1}\n       {x43080000 xc1222704 x3e83bbe0 1 x3e83bbe0 1}\n       {x43090000 xc11c29df x3f1a3300 1 x3f1a3300 1}\n       {x430a0000 xc10ee0a4 x3f1086a0 1 x3f1086a0 1}\n       {x430b0000 xc10a190b -}\n       {x430c0000 xc1121420 xbf1bd410 1 xbf1bd410 1}\n       {x430d0000 xc11d938d xbeeccbc0 1 xbeeccbc0 1}\n       {x430e0000 xc120e0dc xbec8d700 1 xbec8d700 1}\n       {x430f0000 xc12a20fd xbf0f77c8 1 xbf0f77c8 1}\n       {x43100000 xc132cfd5 xbee7c7d0 1 xbee7c7d0 1}\n       {x43110000 xc1389d7a -}\n       {x43120000 xc136ea14 -}\n       {x43130000 xc13ff31e xbf145f38 1 xbf145f38 1}\n       {x43140000 xc14975fb xbf7d93d0 1 xbf7d93d0 1}\n       {x43150000 xc15fa598 xc0007b42 1 xc0007b42 1}\n       {x43160000 xc184d9ce xc03c1677 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke47 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43b3ad50 x43a2b45a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke48 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43b3ad50 x43a2b45a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc33c2cdc 0 1 x4081b9e8 1}\n       {x42580000 xc337ceb5 x409fdad0 1 x409fdad0 1}\n       {x425c0000 xc3322f2f x40c666e0 1 x40c666e0 1}\n       {x42600000 xc32b6847 x40e0cdd0 1 x40e0cdd0 1}\n       {x42640000 xc3242252 x40e453a0 1 x40e453a0 1}\n       {x42680000 xc31d230d x40e108a0 1 x40e108a0 1}\n       {x426c0000 xc31611c8 x40e27410 1 x40e27410 1}\n       {x42700000 xc30efbcc x40e598e0 1 x40e598e0 1}\n       {x42740000 xc307b83a x40f6e530 1 x40f6e530 1}\n       {x42780000 xc2ff1af2 x410143a0 1 x410143a0 1}\n       {x427c0000 xc2ef1f8c x410635e8 1 x410635e8 1}\n       {x42800000 xc2dd8d78 x4108c018 1 x4108c018 1}\n       {x42820000 xc2ccef86 x4100e484 1 x4100e484 1}\n       {x42840000 xc2bd5457 x40fb0b58 1 x40fb0b58 1}\n       {x42860000 xc2ad8e1b x40b8bad0 1 x40b8bad0 1}\n       {x42880000 xc2a63cfd x40b65530 1 x40b65530 1}\n       {x428a0000 xc296c375 x40ab7028 1 x40ab7028 1}\n       {x428c0000 xc290cef8 x40732040 1 x40732040 1}\n       {x428e0000 xc2879171 x409941b4 1 x409941b4 1}\n       {x42900000 xc27b4d83 x409108a8 1 x409108a8 1}\n       {x42920000 xc26ae0b8 x3fd90e60 1 x3fd90e60 1}\n       {x42940000 xc2689de7 x3f030aa0 1 x3f030aa0 1}\n       {x42960000 xc266c863 x3eeeae40 1 x3eeeae40 1}\n       {x42980000 xc264e32e x3fb5f3e0 1 x3fb5f3e0 1}\n       {x429a0000 xc25a5647 x40117e70 1 x40117e70 1}\n       {x429c0000 xc252b360 x3fdbc2e0 1 x3fdbc2e0 1}\n       {x429e0000 xc24c9a19 x3d581800 1 x3d581800 1}\n       {x42a00000 xc24c8817 x3d581800 1 x3d581800 1}\n       {x42a20000 xc245b43a x3fefc9b0 1 x3fefc9b0 1}\n       {x42a40000 xc23d8b7c x402c3520 1 x402c3520 1}\n       {x42a60000 xc2302d96 x402356a8 1 x402356a8 1}\n       {x42a80000 xc22920a7 x3fc29790 1 x3fc29790 1}\n       {x42aa0000 xc224041d x3fbf5960 1 x3fbf5960 1}\n       {x42ac0000 xc21d2b11 x3f0d66c0 1 x3f0d66c0 1}\n       {x42ae0000 xc21c6e88 -}\n       {x42b00000 xc21f9add xbf86b5a0 1 xbf86b5a0 1}\n       {x42b20000 xc224d9e2 xbfa8c800 1 xbfa8c800 1}\n       {x42b40000 xc22a275d xbfa1d890 1 xbfa1d890 1}\n       {x42b60000 xc22ef76b xbf943cf0 1 xbf943cf0 1}\n       {x42b80000 xc2336b2c xbf961500 1 xbf961500 1}\n       {x42ba0000 xc23858bb xbfa57ba0 1 xbfa57ba0 1}\n       {x42bc0000 xc23dc2e6 xbfad45e0 1 xbfad45e0 1}\n       {x42be0000 xc2432d19 xbfb56d90 1 xbfb56d90 1}\n       {x42c00000 xc24919bf xbfc53160 1 xbfc53160 1}\n       {x42c20000 xc24f802f -}\n       {x42c40000 xc24add32 x3f9b6e50 1 x3f9b6e50 1}\n       {x42c60000 xc245c94a x3f8ecf00 1 x3f8ecf00 1}\n       {x42c80000 xc241f042 x3f959eb0 1 x3f959eb0 1}\n       {x42ca0000 xc23c6f5f x3fa4c200 1 x3fa4c200 1}\n       {x42cc0000 xc237a422 x3fd833f0 1 x3fd833f0 1}\n       {x42ce0000 xc22eec20 x3fe0ad10 1 x3fe0ad10 1}\n       {x42d00000 xc2299951 x3f93ea70 1 x3f93ea70 1}\n       {x42d20000 xc225ad79 x3f433760 1 x3f433760 1}\n       {x42d40000 xc2237f96 x3eee40c0 1 x3eee40c0 1}\n       {x42d60000 xc221f476 x3e74d100 1 x3e74d100 1}\n       {x42d80000 xc22195f4 x3da93900 1 x3da93900 1}\n       {x42da0000 xc2214b3d x3dc41600 1 x3dc41600 1}\n       {x42dc0000 xc220d1de x3ea2d0c0 1 x3ea2d0c0 1}\n       {x42de0000 xc21ebffa x3ef7f240 1 x3ef7f240 1}\n       {x42e00000 xc21cf215 x3f115940 1 x3f115940 1}\n       {x42e20000 xc21a3530 x3f590660 1 x3f590660 1}\n       {x42e40000 xc21629e2 x3f8929c0 1 x3f8929c0 1}\n       {x42e60000 xc211a294 x3fa02190 1 x3fa02190 1}\n       {x42e80000 xc20c27c9 x3fbe8780 1 x3fbe8780 1}\n       {x42ea0000 xc205ba1c x3fe93f28 1 x3fe93f28 1}\n       {x42ec0000 xc1fb27ad x4017d43c 1 x4017d43c 1}\n       {x42ee0000 xc1e57f29 x403df3c0 1 x403df3c0 1}\n       {x42f00000 xc1cbaabd x405ac5c4 1 x405ac5c4 1}\n       {x42f20000 xc1aecdb8 x40787e10 1 x40787e10 1}\n       {x42f40000 xc18d8b39 x4087db27 1 x4087db27 1}\n       {x42f60000 xc155c049 x408cb1af 1 x408cb1af 1}\n       {x42f80000 xc10e64c3 x408dd1ce 1 x408dd1ce 1}\n       {x42fa0000 xc08fdcf7 x408e64c3 1 x408e64c3 1}\n       {x42fc0000 0 x4092d978 1 x4092d978 1}\n       {x42fe0000 x4095d5fa x409800ad 1 x409800ad 1}\n       {x43000000 x411800ad x40989b65 1 x40989b65 1}\n       {x43010000 x41638662 x408fd7f9 1 x408fd7f9 1}\n       {x43020000 x4193ec53 x408747b2 1 x408747b2 1}\n       {x43030000 x41b5670a x4082a15e 1 x4082a15e 1}\n       {x43040000 x41d53d02 x406cfeb0 1 x406cfeb0 1}\n       {x43050000 x41f0a6b6 x405ec900 1 x405ec900 1}\n       {x43060000 x420677a1 x407d1a98 1 x407d1a98 1}\n       {x43070000 x4217f6ae x4051f8c8 1 x4051f8c8 1}\n       {x43080000 x4220b6ba x3ff822c0 1 x3ff822c0 1}\n       {x43090000 x422778da x3fdf43f0 1 x3fdf43f0 1}\n       {x430a0000 x422eaaf9 x3fdf8310 1 x3fdf8310 1}\n       {x430b0000 x4235710b x3fd57ea0 1 x3fd57ea0 1}\n       {x430c0000 x423c02e3 x3fd07ab0 1 x3fd07ab0 1}\n       {x430d0000 x424278b6 x3fdcf9c0 1 x3fdcf9c0 1}\n       {x430e0000 x4249d27f x3ff8ec30 1 x3ff8ec30 1}\n       {x430f0000 x42520779 x40099428 1 x40099428 1}\n       {x43100000 x425b0504 x4014e4c0 1 x4014e4c0 1}\n       {x43110000 x4264a411 x40192578 1 x40192578 1}\n       {x43120000 x426e29b3 x4012d918 1 x4012d918 1}\n       {x43130000 x4276ff34 x3ff27fe0 1 x3ff27fe0 1}\n       {x43140000 x427d51b1 x3f8dfb50 1 x3f8dfb50 1}\n       {x43150000 x427fdee9 -}\n       {x43160000 x427e7a39 xbf05c200 1 0 1}}\n      {{x42540000 x44819ac7 0 1 xc155eb50 1}\n       {x42580000 x447fc000 xc16c53e0 1 xc16c53e0 1}\n       {x425c0000 x447bd2ef xc181a0e0 1 xc181a0e0 1}\n       {x42600000 x4477a5f2 xc184ab40 1 xc184ab40 1}\n       {x42640000 x4473883b xc1836f30 1 xc1836f30 1}\n       {x42680000 x446f6eff xc1854620 1 xc1854620 1}\n       {x426c0000 x446b33d9 xc18bc800 1 xc18bc800 1}\n       {x42700000 x4466b27f xc198e5d0 1 xc198e5d0 1}\n       {x42740000 x4461a57c xc1aa4ae0 1 xc1aa4ae0 1}\n       {x42780000 x445c0dd1 xc1bbe410 1 xc1bbe410 1}\n       {x427c0000 x4455e73b xc1ccfa90 1 xc1ccfa90 1}\n       {x42800000 x444f3e28 xc1d9f420 1 xc1d9f420 1}\n       {x42820000 x444847f9 xc1ddb4a0 1 xc1ddb4a0 1}\n       {x42840000 x444162de xc1de5390 1 xc1de5390 1}\n       {x42860000 x443a62c0 xc1d2a130 1 xc1d2a130 1}\n       {x42880000 x443438cb xc1d3d450 1 xc1d3d450 1}\n       {x428a0000 x442d257b xc1cfa960 1 xc1cfa960 1}\n       {x428c0000 x44273e35 xc1b23ea0 1 xc1b23ea0 1}\n       {x428e0000 x44220191 xc1ad0180 1 xc1ad0180 1}\n       {x42900000 x441c6e1d xc1b75290 1 xc1b75290 1}\n       {x42920000 x44168c68 xc1b9fe70 1 xc1b9fe70 1}\n       {x42940000 x4410ce36 xc1b747d0 1 xc1b747d0 1}\n       {x42960000 x440b17eb xc1b5c490 1 xc1b5c490 1}\n       {x42980000 x440571ed xc1b136c0 1 xc1b136c0 1}\n       {x429a0000 x4400047f xc1abbfa8 1 xc1abbfa8 1}\n       {x429c0000 x43f56be5 xc1a82a60 1 xc1a82a60 1}\n       {x429e0000 x43eb03b2 xc1a3ef60 1 xc1a3ef60 1}\n       {x42a00000 x43e0edf9 xc1a3bc58 1 xc1a3bc58 1}\n       {x42a20000 x43d68c27 xc1a6bd90 1 xc1a6bd90 1}\n       {x42a40000 x43cc1647 xc1a2e9d0 1 xc1a2e9d0 1}\n       {x42a60000 x43c22eed xc1a19e88 1 xc1a19e88 1}\n       {x42a80000 x43b7e276 xc1a5fa98 1 xc1a5fa98 1}\n       {x42aa0000 x43ad6f9a xc1a78718 1 xc1a78718 1}\n       {x42ac0000 x43a2f193 xc1a4b868 1 xc1a4b868 1}\n       {x42ae0000 x4398d88d xc19ed910 1 xc19ed910 1}\n       {x42b00000 x438f1671 xc19b76d8 1 xc19b76d8 1}\n       {x42b20000 x438569b2 xc19b71d8 1 xc19b71d8 1}\n       {x42b40000 x4377506c xc19d2b28 1 xc19d2b28 1}\n       {x42b60000 x4363889a xc19eb924 1 xc19eb924 1}\n       {x42b80000 x434fa223 xc19c86bc 1 xc19c86bc 1}\n       {x42ba0000 x433c66eb xc1958720 1 xc1958720 1}\n       {x42bc0000 x432a405b xc18c26a8 1 xc18c26a8 1}\n       {x42be0000 x43195d41 xc1816b10 1 xc1816b10 1}\n       {x42c00000 x4309e597 xc16ca7b4 1 xc16ca7b4 1}\n       {x42c20000 x42f79095 xc156fd50 1 xc156fd50 1}\n       {x42c40000 x42de0bda xc148d8d0 1 xc148d8d0 1}\n       {x42c60000 x42c55a61 xc144f2d8 1 xc144f2d8 1}\n       {x42c80000 x42accf24 xc144a928 1 xc144a928 1}\n       {x42ca0000 x42943017 xc1439a20 1 xc1439a20 1}\n       {x42cc0000 x4277d138 xc12fc6ce 1 xc12fc6ce 1}\n       {x42ce0000 x42507cc7 xc11c9646 1 xc11c9646 1}\n       {x42d00000 x42298615 xc11e26f8 1 xc11e26f8 1}\n       {x42d20000 x4201694b xc118687c 1 xc118687c 1}\n       {x42d40000 x41baa3ae xc1080a26 1 xc1080a26 1}\n       {x42d60000 x417590df xc0f0794e 1 xc0f0794e 1}\n       {x42d80000 x4104ce0e xc0d544e4 1 xc0d544e4 1}\n       {x42da0000 x40012fed xc0c4a69c 1 xc0c4a69c 1}\n       {x42dc0000 xc07f623a xc0b56e2d 1 xc0b56e2d 1}\n       {x42de0000 xc1152232 xc090f70e 1 xc090f70e 1}\n       {x42e00000 xc150cf9c xc0444c94 1 xc0444c94 1}\n       {x42e20000 xc177487c xbfe8c2f0 1 xbfe8c2f0 1}\n       {x42e40000 xc185802c xbf49c090 1 xbf49c090 1}\n       {x42e60000 xc1884047 -}\n       {x42e80000 xc1816b20 x3f95e9d8 1 x3f95e9d8 1}\n       {x42ea0000 xc16b0618 x3fb81f6c 1 x3fb81f6c 1}\n       {x42ec0000 xc154ce65 x3fb43420 1 x3fb43420 1}\n       {x42ee0000 xc13df910 x3fa7c994 1 x3fa7c994 1}\n       {x42f00000 xc12adc00 x3f96be24 1 x3f96be24 1}\n       {x42f20000 xc1184987 x3f9a7ffc 1 x3f9a7ffc 1}\n       {x42f40000 xc1043c01 x3fa837ba 1 x3fa837ba 1}\n       {x42f60000 xc0dc7731 x3fc94a60 1 x3fc94a60 1}\n       {x42f80000 xc0a3d2d2 x4003fbba 1 x4003fbba 1}\n       {x42fa0000 xc030f6ef x4023d2d2 1 x4023d2d2 1}\n       {x42fc0000 0 x4038f2c4 1 x4038f2c4 1}\n       {x42fe0000 x4040ee99 x40391107 1 x40391107 1}\n       {x43000000 x40b91107 x4033677c 1 x4033677c 1}\n       {x43010000 x4109ef64 x4036d56d 1 x4036d56d 1}\n       {x43020000 x4137f33a x4041b188 1 x4041b188 1}\n       {x43030000 x416ac828 x404d8334 1 x404d8334 1}\n       {x43040000 x418f5a6a x4055b7d0 1 x4055b7d0 1}\n       {x43050000 x41aad208 x407edcfc 1 x407edcfc 1}\n       {x43060000 x41cf11a9 x40ac7274 1 x40ac7274 1}\n       {x43070000 x420085a1 x40b21f06 1 x40b21f06 1}\n       {x43080000 x42141096 x409c1efc 1 x409c1efc 1}\n       {x43090000 x42278d60 x409d13e0 1 x409d13e0 1}\n       {x430a0000 x423b558e x409f3f90 1 x409f3f90 1}\n       {x430b0000 x424f5d44 x409ff9f8 1 x409ff9f8 1}\n       {x430c0000 x4263540c x40a4dca0 1 x40a4dca0 1}\n       {x430d0000 x4278946c x40b2ee00 1 x40b2ee00 1}\n       {x430e0000 x428807c6 x40ba0cb0 1 x40ba0cb0 1}\n       {x430f0000 x42938bcc x40b66250 1 x40b66250 1}\n       {x43100000 x429ed410 x40b1b7a0 1 x40b1b7a0 1}\n       {x43110000 x42a9c2c0 x40aa22c8 1 x40aa22c8 1}\n       {x43120000 x42b41869 x40a204e8 1 x40a204e8 1}\n       {x43130000 x42be035d x40989e38 1 x40989e38 1}\n       {x43140000 x42c72c30 x408aa460 1 x408aa460 1}\n       {x43150000 x42cf57e9 x4046f9e0 1 x4046f9e0 1}\n       {x43160000 x42d39bce x3fd27c00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke49 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x444833a6 x447347cf 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke50 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x444833a6 x447347cf 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3d25dfe 0 1 x408c0740 1}\n       {x42580000 xc3cfd8d7 x40cbcec0 1 x40cbcec0 1}\n       {x425c0000 xc3cbff88 x40fad9c0 1 x40fad9c0 1}\n       {x42600000 xc3c80209 x41140d80 1 x41140d80 1}\n       {x42640000 xc3c2beb0 x4128f7b0 1 x4128f7b0 1}\n       {x42680000 xc3bd728e x41294f50 1 x41294f50 1}\n       {x426c0000 xc3b829bb x41219ec0 1 x41219ec0 1}\n       {x42700000 xc3b358a2 x41239d90 1 x41239d90 1}\n       {x42740000 xc3adefe2 x412898d0 1 x412898d0 1}\n       {x42780000 xc3a8cf15 x411b5880 1 x411b5880 1}\n       {x427c0000 xc3a43a5a x41179f00 1 x41179f00 1}\n       {x42800000 xc39f5525 x411d4fe0 1 x411d4fe0 1}\n       {x42820000 xc39a655c x410ce570 1 x410ce570 1}\n       {x42840000 xc39686ce x40f20660 1 x40f20660 1}\n       {x42860000 xc392d529 x40db71c0 1 x40db71c0 1}\n       {x42880000 xc38fab40 x40de83c0 1 x40de83c0 1}\n       {x428a0000 xc38be10b x40c0cb00 1 x40c0cb00 1}\n       {x428c0000 xc389a4e8 x4087acc0 1 x4087acc0 1}\n       {x428e0000 xc387a3a5 x40889a40 1 x40889a40 1}\n       {x42900000 xc3856016 x40909760 1 x40909760 1}\n       {x42920000 xc3831eea x405aa000 1 x405aa000 1}\n       {x42940000 xc381f596 x4051cca0 1 x4051cca0 1}\n       {x42960000 xc37faf6f x4090b960 1 x4090b960 1}\n       {x42980000 xc37adf96 x40976950 1 x40976950 1}\n       {x429a0000 xc37638da x408c53f0 1 x408c53f0 1}\n       {x429c0000 xc3721a57 x406d4c00 1 x406d4c00 1}\n       {x429e0000 xc36ece7a x40532100 1 x40532100 1}\n       {x42a00000 xc36b814f x4065a440 1 x4065a440 1}\n       {x42a20000 xc367a158 x408676a0 1 x408676a0 1}\n       {x42a40000 xc36319e5 x409d4710 1 x409d4710 1}\n       {x42a60000 xc35dcce7 x409acdb0 1 x409acdb0 1}\n       {x42a80000 xc3596d0a x408bc560 1 x408bc560 1}\n       {x42aa0000 xc3551091 x407d7c00 1 x407d7c00 1}\n       {x42ac0000 xc351812a x405bfc80 1 x405bfc80 1}\n       {x42ae0000 xc34e30ad x402177e0 1 x402177e0 1}\n       {x42b00000 xc34c756b x3fb1d140 1 x3fb1d140 1}\n       {x42b20000 xc34b6968 x3f7e4300 1 x3f7e4300 1}\n       {x42b40000 xc34a78e5 x3f905400 1 x3f905400 1}\n       {x42b60000 xc3492818 x3fbcfd00 1 x3fbcfd00 1}\n       {x42b80000 xc34784f1 x3ff14d40 1 x3ff14d40 1}\n       {x42ba0000 xc34562e3 x40108140 1 x40108140 1}\n       {x42bc0000 xc34300e7 x401c6720 1 x401c6720 1}\n       {x42be0000 xc3407faa x401669e0 1 x401669e0 1}\n       {x42c00000 xc33e4d98 x400a9420 1 x400a9420 1}\n       {x42c20000 xc33c2b09 x40649be0 1 x40649be0 1}\n       {x42c40000 xc33728b9 x40aaf150 1 x40aaf150 1}\n       {x42c60000 xc3317bf4 x40b771d0 1 x40b771d0 1}\n       {x42c80000 xc32bb19c x40a98ad0 1 x40a98ad0 1}\n       {x42ca0000 xc326e347 x409a6700 1 x409a6700 1}\n       {x42cc0000 xc3220b2c x4097d8f0 1 x4097d8f0 1}\n       {x42ce0000 xc31d65b8 x4093aad0 1 x4093aad0 1}\n       {x42d00000 xc318d07f x408c6c90 1 x408c6c90 1}\n       {x42d20000 xc3149eef x4084c490 1 x4084c490 1}\n       {x42d40000 xc3108436 x4086b0c0 1 x4086b0c0 1}\n       {x42d60000 xc30c33e3 x408a7720 1 x408a7720 1}\n       {x42d80000 xc307dcc4 x408f4870 1 x408f4870 1}\n       {x42da0000 xc3033f5c x40978828 1 x40978828 1}\n       {x42dc0000 xc2fcc883 x40a46e48 1 x40a46e48 1}\n       {x42de0000 xc2f1f0ef x40b26660 1 x40b26660 1}\n       {x42e00000 xc2e67bb7 x40b880b0 1 x40b880b0 1}\n       {x42e20000 xc2dae0d9 x40be9670 1 x40be9670 1}\n       {x42e40000 xc2cea8e9 x40c5f8f8 1 x40c5f8f8 1}\n       {x42e60000 xc2c221ba x40cd8438 1 x40cd8438 1}\n       {x42e80000 xc2b4f862 x40d8da58 1 x40d8da58 1}\n       {x42ea0000 xc2a7066f x40e7fda0 1 x40e7fda0 1}\n       {x42ec0000 xc297f8ae x40fc3870 1 x40fc3870 1}\n       {x42ee0000 xc2877f61 x4105e6cc 1 x4105e6cc 1}\n       {x42f00000 xc26cfdf6 x4110756a 1 x4110756a 1}\n       {x42f20000 xc246c40d x4119da8c 1 x4119da8c 1}\n       {x42f40000 xc22010b0 x4120dcde 1 x4120dcde 1}\n       {x42f60000 xc1ecab3c x412223b7 1 x412223b7 1}\n       {x42f80000 xc19dfda9 x411db420 1 x411db420 1}\n       {x42fa0000 xc11dee37 x411dfda9 1 x411dfda9 1}\n       {x42fc0000 0 x411e3a36 1 x411e3a36 1}\n       {x42fe0000 x411e8634 x411cb35a 1 x411cb35a 1}\n       {x43000000 x419cb35a x41178785 1 x41178785 1}\n       {x43010000 x41e6ca9f x41108d7a 1 x41108d7a 1}\n       {x43020000 x4216a06a x410ac35f 1 x410ac35f 1}\n       {x43030000 x4238c6ff x41023db8 1 x41023db8 1}\n       {x43040000 x4257bf46 x40ea5568 1 x40ea5568 1}\n       {x43050000 x42735c59 x40cf7ce8 1 x40cf7ce8 1}\n       {x43060000 x4285cf40 x40b90024 1 x40b90024 1}\n       {x43070000 x4290ce31 x40abb210 1 x40abb210 1}\n       {x43080000 x429b4582 x409ef9a0 1 x409ef9a0 1}\n       {x43090000 x42a4ad65 x40902110 1 x40902110 1}\n       {x430a0000 x42ad49a4 x40868638 1 x40868638 1}\n       {x430b0000 x42b57e2c x407ccd70 1 x407ccd70 1}\n       {x430c0000 x42bd167b x40611050 1 x40611050 1}\n       {x430d0000 x42c38f31 x4054caa0 1 x4054caa0 1}\n       {x430e0000 x42ca6325 x4061aab0 1 x4061aab0 1}\n       {x430f0000 x42d1a9dc x406bb870 1 x406bb870 1}\n       {x43100000 x42d91eac x406fbd00 1 x406fbd00 1}\n       {x43110000 x42e0a5ac x406cdd50 1 x406cdd50 1}\n       {x43120000 x42e7ec81 x4062c880 1 x4062c880 1}\n       {x43130000 x42eed234 x404cfe80 1 x404cfe80 1}\n       {x43140000 x42f4bc69 x401fdf70 1 x401fdf70 1}\n       {x43150000 x42f8d02b x3fcceba0 1 x3fcceba0 1}\n       {x43160000 x42fb23c6 x3f71c8a0 1 0 1}}\n      {{x42540000 x44863755 0 1 xc1528140 1}\n       {x42580000 x44847c80 xc1733d00 1 xc1733d00 1}\n       {x425c0000 x44826a61 xc186fe20 1 xc186fe20 1}\n       {x42600000 x4480448f xc18899b0 1 xc18899b0 1}\n       {x42640000 x447c4b27 xc1853d40 1 xc1853d40 1}\n       {x42680000 x4478354a xc187ac60 1 xc187ac60 1}\n       {x426c0000 x4473d061 xc18aff90 1 xc18aff90 1}\n       {x42700000 x446f8551 xc18fcf40 1 xc18fcf40 1}\n       {x42740000 x446ad36d xc19fdee0 1 xc19fdee0 1}\n       {x42780000 x44658763 xc1b101f0 1 xc1b101f0 1}\n       {x427c0000 x445fc34e xc1c37f00 1 xc1c37f00 1}\n       {x42800000 x44594f73 xc1cc6c80 1 xc1cc6c80 1}\n       {x42820000 x4452fc86 xc1cbff10 1 xc1cbff10 1}\n       {x42840000 x444c8f82 xc1cbcbb0 1 xc1cbcbb0 1}\n       {x42860000 x44463fcb xc1cc4460 1 xc1cc4460 1}\n       {x42880000 x443fcb3c xc1cf51b0 1 xc1cf51b0 1}\n       {x428a0000 x44394ab0 xc1c6a350 1 xc1c6a350 1}\n       {x428c0000 x44336107 xc1b8f5a0 1 xc1b8f5a0 1}\n       {x428e0000 x442dbb56 xc1b9ef60 1 xc1b9ef60 1}\n       {x42900000 x4427c211 xc1c371b0 1 xc1c371b0 1}\n       {x42920000 x4421843b xc1cbbbf0 1 xc1cbbbf0 1}\n       {x42940000 x441b0652 xc1ce2ec0 1 xc1ce2ec0 1}\n       {x42960000 x4414a14f xc1c84a40 1 xc1c84a40 1}\n       {x42980000 x440e81ae xc1bc48c0 1 xc1bc48c0 1}\n       {x429a0000 x4408dcc3 xc1b113e0 1 xc1b113e0 1}\n       {x429c0000 x44037070 xc1af1a28 1 xc1af1a28 1}\n       {x429e0000 x43fbd641 xc1ae0820 1 xc1ae0820 1}\n       {x42a00000 x43f11fdc xc1ab1778 1 xc1ab1778 1}\n       {x42a20000 x43e67352 xc1ada980 1 xc1ada980 1}\n       {x42a40000 x43db6aac xc1b2ce50 1 xc1b2ce50 1}\n       {x42a60000 x43d01988 xc1af2aa8 1 xc1af2aa8 1}\n       {x42a80000 x43c58557 xc1a65de8 1 xc1a65de8 1}\n       {x42aa0000 x43bb4dcb xc1a725c0 1 xc1a725c0 1}\n       {x42ac0000 x43b0a09f xc1a8bb88 1 xc1a8bb88 1}\n       {x42ae0000 x43a6365a xc1aa7fc0 1 xc1aa7fc0 1}\n       {x42b00000 x439b50a7 xc1ac9ad0 1 xc1ac9ad0 1}\n       {x42b20000 x4390a300 xc1ab3a70 1 xc1ab3a70 1}\n       {x42b40000 x4385e959 xc1ad9a10 1 xc1ad9a10 1}\n       {x42b60000 x4375df7c xc1b01920 1 xc1b01920 1}\n       {x42b80000 x435fcc6a xc1ad4298 1 xc1ad4298 1}\n       {x42ba0000 x434a8ed6 xc1a5893c 1 xc1a5893c 1}\n       {x42bc0000 x43366a1b xc19ca73c 1 xc19ca73c 1}\n       {x42be0000 x43236507 xc1918b4c 1 xc1918b4c 1}\n       {x42c00000 x43120748 xc185b2dc 1 xc185b2dc 1}\n       {x42c20000 x4301f850 xc1752010 1 xc1752010 1}\n       {x42c40000 x42e6c68c xc16a09f4 1 xc16a09f4 1}\n       {x42c60000 x42c96e23 xc16a8e1c 1 xc16a8e1c 1}\n       {x42c80000 x42ac2305 xc16d5c58 1 xc16d5c58 1}\n       {x42ca0000 x428e170d xc16efba8 1 xc16efba8 1}\n       {x42cc0000 x4260c836 xc16908a4 1 xc16908a4 1}\n       {x42ce0000 x4227a9c8 xc15da054 1 xc15da054 1}\n       {x42d00000 x41e3f018 xc1501932 1 xc1501932 1}\n       {x42d20000 x417e74bb xc13e314c 1 xc13e314c 1}\n       {x42d40000 x4096fb32 xc126ee60 1 xc126ee60 1}\n       {x42d60000 xc09ed009 xc111a137 1 xc111a137 1}\n       {x42d80000 xc157c4d5 xc1024269 1 xc1024269 1}\n       {x42da0000 xc1a9f66b xc0ec0f0d 1 xc0ec0f0d 1}\n       {x42dc0000 xc1e1e9f1 xc0c63e02 1 xc0c63e02 1}\n       {x42de0000 xc2068ab6 xc08bf5ba 1 xc08bf5ba 1}\n       {x42e00000 xc213f267 xc015eec8 1 xc015eec8 1}\n       {x42e20000 xc219488f xbed52100 1 xbed52100 1}\n       {x42e40000 xc219d6a5 -}\n       {x42e60000 xc2150833 x3fe40cf0 1 x3fe40cf0 1}\n       {x42e80000 xc20b95d6 x402db554 1 x402db554 1}\n       {x42ea0000 xc1fea311 x404155b8 1 x404155b8 1}\n       {x42ec0000 xc1e6d63e x4044bc1c 1 x4044bc1c 1}\n       {x42ee0000 xc1cd740a x404fc760 1 x404fc760 1}\n       {x42f00000 xc1b2e466 x404160d0 1 x404160d0 1}\n       {x42f20000 xc19d1bd6 x4038a098 1 x4038a098 1}\n       {x42f40000 xc184bc40 x40461d96 1 x40461d96 1}\n       {x42f60000 xc15728e1 x4064df1e 1 x4064df1e 1}\n       {x42f80000 xc11708f1 x4084c4de 1 x4084c4de 1}\n       {x42fa0000 xc0a4c805 x409708f1 1 x409708f1 1}\n       {x42fc0000 0 x40a8be80 1 x40a8be80 1}\n       {x42fe0000 x40acb4fa x40aa80f9 1 x40aa80f9 1}\n       {x43000000 x412a80f9 x40ac2761 1 x40ac2761 1}\n       {x43010000 x418140ef x40b70faf 1 x40b70faf 1}\n       {x43020000 x41b0c854 x40c6c37a 1 x40c6c37a 1}\n       {x43030000 x41e4a2ac x40d2071c 1 x40d2071c 1}\n       {x43040000 x420ce5f1 x40d54ee4 1 x40d54ee4 1}\n       {x43050000 x4227a50f x40d762b4 1 x40d762b4 1}\n       {x43060000 x4242be9e x40def444 1 x40def444 1}\n       {x43070000 x425f6220 x40eeafcc 1 x40eeafcc 1}\n       {x43080000 x427e6a91 x40fe2e70 1 x40fe2e70 1}\n       {x43090000 x428f76de x40fdd3dc 1 x40fdd3dc 1}\n       {x430a0000 x429eefc4 x40ef2670 1 x40ef2670 1}\n       {x430b0000 x42ad5bac x40e49b28 1 x40e49b28 1}\n       {x430c0000 x42bb8329 x40ea77d8 1 x40ea77d8 1}\n       {x430d0000 x42caaaa7 x40f55610 1 x40f55610 1}\n       {x430e0000 x42da2deb x40f77428 1 x40f77428 1}\n       {x430f0000 x42e9992c x40f258b8 1 x40f258b8 1}\n       {x43100000 x42f87902 x40ed0120 1 x40ed0120 1}\n       {x43110000 x43039ca8 x40e4aa20 1 x40e4aa20 1}\n       {x43120000 x430a8723 x40d4e550 1 x40d4e550 1}\n       {x43130000 x4310eafd x40c0d260 1 x40c0d260 1}\n       {x43140000 x43169449 x40ab8170 1 x40ab8170 1}\n       {x43150000 x431ba314 x40794ec0 1 x40794ec0 1}\n       {x43160000 x431e5ebf x4009b8c0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke51 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x440877df x445e6540 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke52 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x440877df x445e6540 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3ac9202 0 1 x40929bb0 1}\n       {x42580000 xc3aa0f17 x40bcf8e0 1 x40bcf8e0 1}\n       {x425c0000 xc3a6aa3b x40d90aa0 1 x40d90aa0 1}\n       {x42600000 xc3a346c2 x40e0ca60 1 x40e0ca60 1}\n       {x42640000 xc39fa3e8 x40e445c0 1 x40e445c0 1}\n       {x42680000 xc39c2494 x40e10300 1 x40e10300 1}\n       {x426c0000 xc3989bd0 x40e27b20 1 x40e27b20 1}\n       {x42700000 xc39510bb x40ff6120 1 x40ff6120 1}\n       {x42740000 xc390a0c7 x410ed460 1 x410ed460 1}\n       {x42780000 xc38c2375 x4108d370 1 x4108d370 1}\n       {x427c0000 xc3881390 x410f0280 1 x410f0280 1}\n       {x42800000 xc383334d x41163150 1 x41163150 1}\n       {x42820000 xc37d60f6 x410618e0 1 x410618e0 1}\n       {x42840000 xc375a37e x40f44a30 1 x40f44a30 1}\n       {x42860000 xc36e1c53 x40cc4d70 1 x40cc4d70 1}\n       {x42880000 xc368dea7 x40d49860 1 x40d49860 1}\n       {x428a0000 xc360d2cd x40be4ac0 1 x40be4ac0 1}\n       {x428c0000 xc35cf9fb x4075afa0 1 x4075afa0 1}\n       {x428e0000 xc3592550 x40829af0 1 x40829af0 1}\n       {x42900000 xc354d04c x408ae540 1 x408ae540 1}\n       {x42920000 xc35076fc x404d8d60 1 x404d8d60 1}\n       {x42940000 xc34e63e1 x40068cc0 1 x40068cc0 1}\n       {x42960000 xc34c4296 x404a41e0 1 x404a41e0 1}\n       {x42980000 xc34811d2 x408d9680 1 x408d9680 1}\n       {x429a0000 xc343692e x40842f10 1 x40842f10 1}\n       {x429c0000 xc33fcee1 x404311e0 1 x404311e0 1}\n       {x429e0000 xc33d509f x40237000 1 x40237000 1}\n       {x42a00000 xc33ab361 x403e3bc0 1 x403e3bc0 1}\n       {x42a20000 xc3375ec1 x405d2aa0 1 x405d2aa0 1}\n       {x42a40000 xc333ca0c x4069eee0 1 x4069eee0 1}\n       {x42a60000 xc3300f4a x406b6180 1 x406b6180 1}\n       {x42a80000 xc32c6f00 x407088e0 1 x407088e0 1}\n       {x42aa0000 xc3288b03 x4055f720 1 x4055f720 1}\n       {x42ac0000 xc325bf47 x400887e0 1 x400887e0 1}\n       {x42ae0000 xc32446c4 x3f9a8c00 1 x3f9a8c00 1}\n       {x42b00000 xc3235517 x3f230700 1 x3f230700 1}\n       {x42b20000 xc32300b6 -}\n       {x42b40000 xc3230891 -}\n       {x42b60000 xc322c351 x3e94ed00 1 x3e94ed00 1}\n       {x42b80000 xc32273a4 -}\n       {x42ba0000 xc322b141 xbe824000 1 xbe824000 1}\n       {x42bc0000 xc322f5e4 -}\n       {x42be0000 xc322e474 -}\n       {x42c00000 xc322ea28 -}\n       {x42c20000 xc322c082 x3ef9e400 1 x3ef9e400 1}\n       {x42c40000 xc31f9d34 x4047a760 1 x4047a760 1}\n       {x42c60000 xc31c8347 x40577b00 1 x40577b00 1}\n       {x42c80000 xc318e15c x406ba600 1 x406ba600 1}\n       {x42ca0000 xc3152617 x40763140 1 x40763140 1}\n       {x42cc0000 xc3112fd2 x407ef040 1 x407ef040 1}\n       {x42ce0000 xc30d2e95 x4079a840 1 x4079a840 1}\n       {x42d00000 xc3096290 x406de1a0 1 x406de1a0 1}\n       {x42d20000 xc305bf88 x4061fd60 1 x4061fd60 1}\n       {x42d40000 xc30252a5 x4062b910 1 x4062b910 1}\n       {x42d60000 xc2fd537f x40681440 1 x40681440 1}\n       {x42d80000 xc2f62406 x4068ebd0 1 x4068ebd0 1}\n       {x42da0000 xc2eec4c2 x4077ac80 1 x4077ac80 1}\n       {x42dc0000 xc2e6a93e x408bdca8 1 x408bdca8 1}\n       {x42de0000 xc2dd492d x4096f0a8 1 x4096f0a8 1}\n       {x42e00000 xc2d3cb29 x409b7478 1 x409b7478 1}\n       {x42e20000 xc2c9da9e x40a5be98 1 x40a5be98 1}\n       {x42e40000 xc2bf1356 x40abf4a0 1 x40abf4a0 1}\n       {x42e60000 xc2b45c0a x40b1d310 1 x40b1d310 1}\n       {x42e80000 xc2a8d8f4 x40bfe690 1 x40bfe690 1}\n       {x42ea0000 xc29c5f38 x40ce5100 1 x40ce5100 1}\n       {x42ec0000 xc28f0ed4 x40e3447c 1 x40e3447c 1}\n       {x42ee0000 xc27fed51 x40f7a818 1 x40f7a818 1}\n       {x42f00000 xc26033a2 x41069c1c 1 x41069c1c 1}\n       {x42f20000 xc23c9f43 x411011b0 1 x411011b0 1}\n       {x42f40000 xc2182aca x411806c2 1 x411806c2 1}\n       {x42f60000 xc1e137c4 x4118f89f 1 x4118f89f 1}\n       {x42f80000 xc1975cf5 x41166717 1 x41166717 1}\n       {x42fa0000 xc115a15a x41175cf5 1 x41175cf5 1}\n       {x42fc0000 0 x41174878 1 x41174878 1}\n       {x42fe0000 x4118ef97 x4117aebe 1 x4117aebe 1}\n       {x43000000 x4197aebe x411366a0 1 x411366a0 1}\n       {x43010000 x41dfde6b x410dfbd4 1 x410dfbd4 1}\n       {x43020000 x4212d549 x4107a385 1 x4107a385 1}\n       {x43030000 x4233c0f8 x40fcd68c 1 x40fcd68c 1}\n       {x43040000 x42520aec x40e74860 1 x40e74860 1}\n       {x43050000 x426d9310 x40cf6f10 1 x40cf6f10 1}\n       {x43060000 x4282f358 x40ba1f20 1 x40ba1f20 1}\n       {x43070000 x428e0d6c x40ab26b0 1 x40ab26b0 1}\n       {x43080000 x4298582e x409bb970 1 x409bb970 1}\n       {x43090000 x42a1849a x408eb170 1 x408eb170 1}\n       {x430a0000 x42aa2e5c x40869aa8 1 x40869aa8 1}\n       {x430b0000 x42b257ef x407e21c0 1 x407e21c0 1}\n       {x430c0000 x42ba1078 x40704480 1 x40704480 1}\n       {x430d0000 x42c15c37 x406cf200 1 x406cf200 1}\n       {x430e0000 x42c8df98 x40783570 1 x40783570 1}\n       {x430f0000 x42d0df8e x40831f80 1 x40831f80 1}\n       {x43100000 x42d94388 x40872b78 1 x40872b78 1}\n       {x43110000 x42e1c4fd x40861bf8 1 x40861bf8 1}\n       {x43120000 x42ea0707 x4080d0b8 1 x4080d0b8 1}\n       {x43130000 x42f1df14 x4068a530 1 x4068a530 1}\n       {x43140000 x42f8915a x4039e0c0 1 x4039e0c0 1}\n       {x43150000 x42fd7d20 x3ffb8440 1 x3ffb8440 1}\n       {x43160000 x430036be x3f9c6060 1 0 1}}\n      {{x42540000 x4485e1b1 0 1 xc153f200 1}\n       {x42580000 x448426eb xc1704500 1 xc1704500 1}\n       {x425c0000 x4482209d xc1839320 1 xc1839320 1}\n       {x42600000 x44800a52 xc184a4a0 1 xc184a4a0 1}\n       {x42640000 x447bf6f0 xc1836370 1 xc1836370 1}\n       {x42680000 x4477de6d xc1853470 1 xc1853470 1}\n       {x426c0000 x4473a3a9 xc18bbe60 1 xc18bbe60 1}\n       {x42700000 x446f2287 xc1975b20 1 xc1975b20 1}\n       {x42740000 x446a2df7 xc1a82df0 1 xc1a82df0 1}\n       {x42780000 x44649fa8 xc1b96120 1 xc1b96120 1}\n       {x427c0000 x445e97e5 xc1c7cba0 1 xc1c7cba0 1}\n       {x42800000 x445822ee xc1d05be0 1 xc1d05be0 1}\n       {x42820000 x44519227 xc1cffeb0 1 xc1cffeb0 1}\n       {x42840000 x444b2303 xc1ce27e0 1 xc1ce27e0 1}\n       {x42860000 x4444afa9 xc1d05c10 1 xc1d05c10 1}\n       {x42880000 x443e1d42 xc1d2be60 1 xc1d2be60 1}\n       {x428a0000 x443783c3 xc1ca0ae0 1 xc1ca0ae0 1}\n       {x428c0000 x44317c94 xc1b97a80 1 xc1b97a80 1}\n       {x428e0000 x442bec1b xc1b74520 1 xc1b74520 1}\n       {x42900000 x44260842 xc1c11d00 1 xc1c11d00 1}\n       {x42920000 x441fda4b xc1ca93e0 1 xc1ca93e0 1}\n       {x42940000 x44195f04 xc1cc5760 1 xc1cc5760 1}\n       {x42960000 x441314d5 xc1c794c0 1 xc1c794c0 1}\n       {x42980000 x440ce5b8 xc1bd3540 1 xc1bd3540 1}\n       {x429a0000 x44074181 xc1b37460 1 xc1b37460 1}\n       {x429c0000 x4401ae72 xc1b31828 1 xc1b31828 1}\n       {x429e0000 x43f81ffd xc1b007e8 1 xc1b007e8 1}\n       {x42a00000 x43ed5be7 xc1addf90 1 xc1addf90 1}\n       {x42a20000 x43e2640b xc1afafe8 1 xc1afafe8 1}\n       {x42a40000 x43d765ea xc1b22e10 1 xc1b22e10 1}\n       {x42a60000 x43cc1e49 xc1b11258 1 xc1b11258 1}\n       {x42a80000 x43c1439f xc1ac5418 1 xc1ac5418 1}\n       {x42aa0000 x43b693c6 xc1ae60d8 1 xc1ae60d8 1}\n       {x42ac0000 x43ab7784 xc1abf6b0 1 xc1abf6b0 1}\n       {x42ae0000 x43a114f0 xc1ac6070 1 xc1ac6070 1}\n       {x42b00000 x4395eb76 xc1b09098 1 xc1b09098 1}\n       {x42b20000 x438b02dd xc1af1658 1 xc1af1658 1}\n       {x42b40000 x438008ab xc1b1b708 1 xc1b1b708 1}\n       {x42b60000 x436997f8 xc1b204b4 1 xc1b204b4 1}\n       {x42b80000 x43539029 xc1acec6c 1 xc1acec6c 1}\n       {x42ba0000 x433e5cdd xc1a4e49c 1 xc1a4e49c 1}\n       {x42bc0000 x432a5702 xc19a51f8 1 xc19a51f8 1}\n       {x42be0000 x4317c85f xc18f9134 1 xc18f9134 1}\n       {x42c00000 x430672b5 xc1862082 1 xc1862082 1}\n       {x42c20000 x42ec807d xc1791510 1 xc1791510 1}\n       {x42c40000 x42cea026 xc16b838c 1 xc16b838c 1}\n       {x42c60000 x42b19f9a xc16955ac 1 xc16955ac 1}\n       {x42c80000 x42944abb xc16c947e 1 xc16c947e 1}\n       {x42ca0000 x426cf4f5 xc16d2800 1 xc16d2800 1}\n       {x42cc0000 x42320176 xc166fb66 1 xc166fb66 1}\n       {x42ce0000 x41f2ee84 xc15dc110 1 xc15dc110 1}\n       {x42d00000 x418641dc xc15092de 1 xc15092de 1}\n       {x42d20000 x40896e98 xc13f180b 1 xc13f180b 1}\n       {x42d40000 xc0e358bc xc12ab793 1 xc12ab793 1}\n       {x42d60000 xc1885bed xc1118a7d 1 xc1118a7d 1}\n       {x42d80000 xc1ca60ac xc0f6e052 1 xc0f6e052 1}\n       {x42da0000 xc201e60b xc0db3bb4 1 xc0db3bb4 1}\n       {x42dc0000 xc21bff43 xc0bc41b8 1 xc0bc41b8 1}\n       {x42de0000 xc230f679 xc07fa620 1 xc07fa620 1}\n       {x42e00000 xc23bf407 xbfec1c20 1 xbfec1c20 1}\n       {x42e20000 xc23fb83b -}\n       {x42e40000 xc23df9bc x3f935e70 1 x3f935e70 1}\n       {x42e60000 xc2368254 x401f99c8 1 x401f99c8 1}\n       {x42e80000 xc22a0683 x405bb408 1 x405bb408 1}\n       {x42ea0000 xc21b0bd3 x406ea428 1 x406ea428 1}\n       {x42ec0000 xc20c31fe x4073461c 1 x4073461c 1}\n       {x42ee0000 xc1f9461f x407f3164 1 x407f3164 1}\n       {x42f00000 xc1d897a3 x4074796c 1 x4074796c 1}\n       {x42f20000 xc1bc27c4 x406c85e0 1 x406c85e0 1}\n       {x42f40000 xc19d762b x407940c6 1 x407940c6 1}\n       {x42f60000 xc17baf25 x4089794b 1 x4089794b 1}\n       {x42f80000 xc131730b x409e57bb 1 x409e57bb 1}\n       {x42fa0000 xc0baaed4 x40b1730b 1 x40b1730b 1}\n       {x42fc0000 0 x40c1a1d8 1 x40c1a1d8 1}\n       {x42fe0000 x40c894db x40c322b9 1 x40c322b9 1}\n       {x43000000 x414322b9 x40c33db0 1 x40c33db0 1}\n       {x43010000 x4193c40f x40d04659 1 x40d04659 1}\n       {x43020000 x41c9b489 x40dc0aee 1 x40dc0aee 1}\n       {x43030000 x4200e4c3 x40e2b4da 1 x40e2b4da 1}\n       {x43040000 x421d877b x40e87da4 1 x40e87da4 1}\n       {x43050000 x423b042c x40ee4e70 1 x40ee4e70 1}\n       {x43060000 x42591b17 x40f74df4 1 x40f74df4 1}\n       {x43070000 x4278d7a9 x410341ae 1 x410341ae 1}\n       {x43080000 x428d5df7 x410a1f8a 1 x410a1f8a 1}\n       {x43090000 x429ef3b7 x410aab98 1 x410aab98 1}\n       {x430a0000 x42b008dd x41052068 1 x41052068 1}\n       {x430b0000 x42c03bd1 x40ffd988 1 x40ffd988 1}\n       {x430c0000 x42d0040e x41026ca4 1 x41026ca4 1}\n       {x430d0000 x42e0d6fa x4107ac94 1 x4107ac94 1}\n       {x430e0000 x42f1ef33 x4106ba48 1 x4106ba48 1}\n       {x430f0000 x430142c6 x41026b54 1 x41026b54 1}\n       {x43100000 x43094504 x40ffada0 1 x40ffada0 1}\n       {x43110000 x43113da0 x40f6af00 1 x40f6af00 1}\n       {x43120000 x4318aff4 x40e66490 1 x40e66490 1}\n       {x43130000 x431fa3e9 x40d51bb0 1 x40d51bb0 1}\n       {x43140000 x432601af x40c04b50 1 x40c04b50 1}\n       {x43150000 x432ba89e x408e8820 1 x408e8820 1}\n       {x43160000 x432eea31 x402a0f00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke53 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44565ccd x43e318d5 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke54 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44565ccd x43e318d5 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c6d3af 0 1 x40cb9d60 1}\n       {x42580000 xc3c38238 x40e5de80 1 x40e5de80 1}\n       {x425c0000 xc3bfa4bb x4105f2c0 1 x4105f2c0 1}\n       {x42600000 xc3bb230c x411f2d50 1 x411f2d50 1}\n       {x42640000 xc3b5b1e6 x412ea8c0 1 x412ea8c0 1}\n       {x42680000 xc3b03880 x412c0320 1 x412c0320 1}\n       {x426c0000 xc3aaf1b4 x41231eb0 1 x41231eb0 1}\n       {x42700000 xc3a60695 x412579d0 1 x412579d0 1}\n       {x42740000 xc3a09a17 x4126e870 1 x4126e870 1}\n       {x42780000 xc39b980e x4119be20 1 x4119be20 1}\n       {x427c0000 xc396fe35 x411ed700 1 x411ed700 1}\n       {x42800000 xc391aa9e x4123bbb0 1 x4123bbb0 1}\n       {x42820000 xc38cc27a x410f6d00 1 x410f6d00 1}\n       {x42840000 xc388b3ce x40f7ba40 1 x40f7ba40 1}\n       {x42860000 xc38504a8 x40f61740 1 x40f61740 1}\n       {x42880000 xc3810314 x410239d8 1 x410239d8 1}\n       {x428a0000 xc379c215 x40fb9440 1 x40fb9440 1}\n       {x428c0000 xc3724ce4 x40e56920 1 x40e56920 1}\n       {x428e0000 xc36b6b83 x40e25cd0 1 x40e25cd0 1}\n       {x42900000 xc3642717 x40eff490 1 x40eff490 1}\n       {x42920000 xc35c6c3a x40e4ba20 1 x40e4ba20 1}\n       {x42940000 xc355db75 x40c0cb30 1 x40c0cb30 1}\n       {x42960000 xc3505f87 x40a497a0 1 x40a497a0 1}\n       {x42980000 xc34b91fb x40956430 1 x40956430 1}\n       {x429a0000 xc3470944 x408917d0 1 x408917d0 1}\n       {x429c0000 xc343007e x407052e0 1 x407052e0 1}\n       {x429e0000 xc33f86ad x40643a80 1 x40643a80 1}\n       {x42a00000 xc33bdeaa x407bd9e0 1 x407bd9e0 1}\n       {x42a20000 xc337a7de x4092b9a0 1 x4092b9a0 1}\n       {x42a40000 xc332b310 x40b20ae0 1 x40b20ae0 1}\n       {x42a60000 xc32c8730 x40ae2ef0 1 x40ae2ef0 1}\n       {x42a80000 xc327d021 x4098b700 1 x4098b700 1}\n       {x42aa0000 xc322fbc0 x409391f0 1 x409391f0 1}\n       {x42ac0000 xc31e9702 x4077eaa0 1 x4077eaa0 1}\n       {x42ae0000 xc31b3c6b x403da840 1 x403da840 1}\n       {x42b00000 xc318a9c0 x40085020 1 x40085020 1}\n       {x42b20000 xc316f9ea x3fc839c0 1 x3fc839c0 1}\n       {x42b40000 xc31588d9 x3fc36a00 1 x3fc36a00 1}\n       {x42b60000 xc313ec42 x3fce78c0 1 x3fce78c0 1}\n       {x42b80000 xc3124ef6 x3fc96240 1 x3fc96240 1}\n       {x42ba0000 xc310c6b9 x3fbd0300 1 x3fbd0300 1}\n       {x42bc0000 xc30f5aea x3fc064c0 1 x3fc064c0 1}\n       {x42be0000 xc30dc526 x3fc513c0 1 x3fc513c0 1}\n       {x42c00000 xc30c469b x3fbe3ac0 1 x3fbe3ac0 1}\n       {x42c20000 xc30acc3b x40365980 1 x40365980 1}\n       {x42c40000 xc30693cf x408a4aa0 1 x408a4aa0 1}\n       {x42c60000 xc3022791 x40921ad8 1 x40921ad8 1}\n       {x42c80000 xc2fae443 x4095a2c8 1 x4095a2c8 1}\n       {x42ca0000 xc2f19ac9 x4095ad90 1 x4095ad90 1}\n       {x42cc0000 xc2e82e91 x4098ca58 1 x4098ca58 1}\n       {x42ce0000 xc2de817e x409271c8 1 x409271c8 1}\n       {x42d00000 xc2d5e058 x408766a8 1 x408766a8 1}\n       {x42d20000 xc2cd94a9 x4078f4b0 1 x4078f4b0 1}\n       {x42d40000 xc2c6510d x40663400 1 x40663400 1}\n       {x42d60000 xc2bf3169 x405c2a40 1 x405c2a40 1}\n       {x42d80000 xc2b88e69 x404f8230 1 x404f8230 1}\n       {x42da0000 xc2b23946 x404dbba0 1 x404dbba0 1}\n       {x42dc0000 xc2abb2af x40575550 1 x40575550 1}\n       {x42de0000 xc2a4c3f1 x4062a3e0 1 x4062a3e0 1}\n       {x42e00000 xc29d8871 x406b89a0 1 x406b89a0 1}\n       {x42e20000 xc2960b57 x40715b00 1 x40715b00 1}\n       {x42e40000 xc28e72c1 x40764990 1 x40764990 1}\n       {x42e60000 xc286a6be x407cada8 1 x407cada8 1}\n       {x42e80000 xc27d4fcd x4085b5f8 1 x4085b5f8 1}\n       {x42ea0000 xc26bdffe x40933248 1 x40933248 1}\n       {x42ec0000 xc258833b x40a6ce28 1 x40a6ce28 1}\n       {x42ee0000 xc2422c74 x40b77a60 1 x40b77a60 1}\n       {x42f00000 xc22aa4a3 x40c8bd48 1 x40c8bd48 1}\n       {x42f20000 xc20ffd22 x40dabeee 1 x40dabeee 1}\n       {x42f40000 xc1e7e9cf x40e65460 1 x40e65460 1}\n       {x42f60000 xc1acd014 x40e9919b 1 x40e9919b 1}\n       {x42f80000 xc1664203 x40e77682 1 x40e77682 1}\n       {x42fa0000 xc0e4534c x40e64203 1 x40e64203 1}\n       {x42fc0000 0 x40e7b270 1 x40e7b270 1}\n       {x42fe0000 x40eb1194 x40ea23e4 1 x40ea23e4 1}\n       {x43000000 x416a23e4 x40e5c87c 1 x40e5c87c 1}\n       {x43010000 x41ada8a3 x40dde706 1 x40dde706 1}\n       {x43020000 x41e40575 x40d374da 1 x40d374da 1}\n       {x43030000 x420bb188 x40c7367e 1 x40c7367e 1}\n       {x43040000 x4223d05a x40b5bda8 1 x40b5bda8 1}\n       {x43050000 x423920f2 x40aa4234 1 x40aa4234 1}\n       {x43060000 x424e60e7 x40a41c24 1 x40a41c24 1}\n       {x43070000 x426227fb x408830e0 1 x408830e0 1}\n       {x43080000 x42706d1f x405a8e50 1 x405a8e50 1}\n       {x43090000 x427d79c5 x40489538 1 x40489538 1}\n       {x430a0000 x4284bfe3 x4035a478 1 x4035a478 1}\n       {x430b0000 x428a172a x402303e0 1 x402303e0 1}\n       {x430c0000 x428ef021 x4016a3b0 1 x4016a3b0 1}\n       {x430d0000 x42938165 x4010f5f0 1 x4010f5f0 1}\n       {x430e0000 x4297ff80 x401966c0 1 x401966c0 1}\n       {x430f0000 x429d17d1 x402840a0 1 x402840a0 1}\n       {x43100000 x42a2838a x4030e0e0 1 x4030e0e0 1}\n       {x43110000 x42a825df x40322210 1 x40322210 1}\n       {x43120000 x42ada5ab x402a66d0 1 x402a66d0 1}\n       {x43130000 x42b2cc4c x4013d850 1 x4013d850 1}\n       {x43140000 x42b6e330 x3fc811a0 1 x3fc811a0 1}\n       {x43150000 x42b90cd9 x3f05dd00 1 x3f05dd00 1}\n       {x43160000 x42b96617 -}}\n      {{x42540000 x44880ef5 0 1 xc15d9de0 1}\n       {x42580000 x44864238 xc177dfc0 1 xc177dfc0 1}\n       {x425c0000 x44842f76 xc186e1e0 1 xc186e1e0 1}\n       {x42600000 x44820b29 xc1880f00 1 xc1880f00 1}\n       {x42640000 x447fddfc xc18483f0 1 xc18483f0 1}\n       {x42680000 x447bce13 xc1874380 1 xc1874380 1}\n       {x426c0000 x447769c4 xc18a5f30 1 xc18a5f30 1}\n       {x42700000 x44732820 xc18f3a30 1 xc18f3a30 1}\n       {x42740000 x446e7621 xc1a2cee0 1 xc1a2cee0 1}\n       {x42780000 x4468fb32 xc1b3de30 1 xc1b3de30 1}\n       {x427c0000 x4463383e xc1c26820 1 xc1c26820 1}\n       {x42800000 x445cd4b0 xc1cb4e70 1 xc1cb4e70 1}\n       {x42820000 x44568357 xc1c97610 1 xc1c97610 1}\n       {x42840000 x44503d4f xc1c93640 1 xc1c93640 1}\n       {x42860000 x4449eff3 xc1cf39f0 1 xc1cf39f0 1}\n       {x42880000 x444349b0 xc1d121e0 1 xc1d121e0 1}\n       {x428a0000 x443cddd5 xc1ce6160 1 xc1ce6160 1}\n       {x428c0000 x4436639a xc1d2a930 1 xc1d2a930 1}\n       {x428e0000 x442fb342 xc1d87440 1 xc1d87440 1}\n       {x42900000 x4428dc56 xc1df6770 1 xc1df6770 1}\n       {x42920000 x4421bccb xc1dc5e00 1 xc1dc5e00 1}\n       {x42940000 x441b1676 xc1d0eaa0 1 xc1d0eaa0 1}\n       {x42960000 x4414ae21 xc1c89090 1 xc1c89090 1}\n       {x42980000 x440e8d6d xc1bd0e40 1 xc1bd0e40 1}\n       {x429a0000 x4408dd3d xc1b23c30 1 xc1b23c30 1}\n       {x429c0000 x440369aa xc1ac2e28 1 xc1ac2e28 1}\n       {x429e0000 x43fc34b5 xc1a9ce20 1 xc1a9ce20 1}\n       {x42a00000 x43f19990 xc1aa4e70 1 xc1aa4e70 1}\n       {x42a20000 x43e6eae7 xc1a80bc0 1 xc1a80bc0 1}\n       {x42a40000 x43dc9818 xc19dbc00 1 xc19dbc00 1}\n       {x42a60000 x43d33367 xc19f00b0 1 xc19f00b0 1}\n       {x42a80000 x43c8b802 xc1ac16e8 1 xc1ac16e8 1}\n       {x42aa0000 x43bdb08a xc1ad4620 1 xc1ad4620 1}\n       {x42ac0000 x43b30f3e xc1a81820 1 xc1a81820 1}\n       {x42ae0000 x43a8ad86 xc1a3dee0 1 xc1a3dee0 1}\n       {x42b00000 x439e9362 xc1a36088 1 xc1a36088 1}\n       {x42b20000 x43944175 xc1a64848 1 xc1a64848 1}\n       {x42b40000 x4389ca59 xc1a8b1a0 1 xc1a8b1a0 1}\n       {x42b60000 x437e5682 xc1aa28d4 1 xc1aa28d4 1}\n       {x42b80000 x43690a7d xc1a7af50 1 xc1a7af50 1}\n       {x42ba0000 x43546aae xc1a08c70 1 xc1a08c70 1}\n       {x42bc0000 x4340e761 xc198357c 1 xc198357c 1}\n       {x42be0000 x432e5d4f xc18ed3f0 1 xc18ed3f0 1}\n       {x42c00000 x431d3265 xc1842050 1 xc1842050 1}\n       {x42c20000 x430d553b xc1712540 1 xc1712540 1}\n       {x42c40000 x42fe1b7a xc1602130 1 xc1602130 1}\n       {x42c60000 x42e2a22a xc15be280 1 xc15be280 1}\n       {x42c80000 x42c722da xc15ca2c8 1 xc15ca2c8 1}\n       {x42ca0000 x42ab7978 xc158f48c 1 xc158f48c 1}\n       {x42cc0000 x4290e5b7 xc1402588 1 xc1402588 1}\n       {x42ce0000 x4276e02c xc13196a0 1 xc13196a0 1}\n       {x42d00000 x4249001e xc13d055c 1 xc13d055c 1}\n       {x42d20000 x42185d7e xc1373bf1 1 xc1373bf1 1}\n       {x42d40000 x41dac44b xc122e0b7 1 xc122e0b7 1}\n       {x42d60000 x418dda45 xc1105cda 1 xc1105cda 1}\n       {x42d80000 x4114cee3 xc10181fb 1 xc10181fb 1}\n       {x42da0000 x3fc584a4 xc0eeba6a 1 xc0eeba6a 1}\n       {x42dc0000 xc0b3d70e xc0d3e528 1 xc0d3e528 1}\n       {x42de0000 xc13b3494 xc0a54551 1 xc0a54551 1}\n       {x42e00000 xc17f30d8 xc05a092c 1 xc05a092c 1}\n       {x42e20000 xc1941c95 xbff9dad8 1 xbff9dad8 1}\n       {x42e40000 xc19ed3c7 xbf580360 1 xbf580360 1}\n       {x42e60000 xc1a19ccb -}\n       {x42e80000 xc199b852 x3fa399c8 1 x3fa399c8 1}\n       {x42ea0000 xc18d2992 x3fcacd88 1 x3fcacd88 1}\n       {x42ec0000 xc1805ea1 x3fd0a754 1 x3fd0a754 1}\n       {x42ee0000 xc166294f x3fe61058 1 x3fe61058 1}\n       {x42f00000 xc147392c x3fd1739c 1 x3fd1739c 1}\n       {x42f20000 xc131cc68 x3fb2cee8 1 x3fb2cee8 1}\n       {x42f40000 xc11a8572 x3fc395a4 1 x3fc395a4 1}\n       {x42f60000 xc100e6ff x3ff6185a 1 x3ff6185a 1}\n       {x42f80000 xc0b9feb7 x4016c266 1 x4016c266 1}\n       {x42fa0000 xc0561730 x4039feb7 1 x4039feb7 1}\n       {x42fc0000 0 x4063f206 1 x4063f206 1}\n       {x42fe0000 x4071ccdd x406be05e 1 x406be05e 1}\n       {x43000000 x40ebe05e x406ac366 1 x406ac366 1}\n       {x43010000 x4131d4ea x407eec82 1 x407eec82 1}\n       {x43020000 x41756670 x408cbd26 1 x408cbd26 1}\n       {x43030000 x419f4908 x4097ad04 1 x4097ad04 1}\n       {x43040000 x41c689ba x40a04724 1 x40a04724 1}\n       {x43050000 x41ef6c9a x40c39f2c 1 x40c39f2c 1}\n       {x43060000 x42142ca8 x4100b2cc 1 x4100b2cc 1}\n       {x43070000 x42380fb3 x40f4a744 1 x40f4a744 1}\n       {x43080000 x42515679 x40cecae0 1 x40cecae0 1}\n       {x43090000 x426bc26b x40d26204 1 x40d26204 1}\n       {x430a0000 x4282f77d x40cc4834 1 x40cc4834 1}\n       {x430b0000 x428f6a3c x40c5a5d0 1 x40c5a5d0 1}\n       {x430c0000 x429bac37 x40c7ad78 1 x40c7ad78 1}\n       {x430d0000 x42a85feb x40d34bf8 1 x40d34bf8 1}\n       {x430e0000 x42b615b6 x40d90958 1 x40d90958 1}\n       {x430f0000 x42c38116 x40d476a8 1 x40d476a8 1}\n       {x43100000 x42d0a48b x40d01558 1 x40d01558 1}\n       {x43110000 x42dd83c1 x40c9cc30 1 x40c9cc30 1}\n       {x43120000 x42e9de11 x40be20e8 1 x40be20e8 1}\n       {x43130000 x42f547de x40acd5e8 1 x40acd5e8 1}\n       {x43140000 x42ff78ce x4098dd70 1 x4098dd70 1}\n       {x43150000 x430431c6 x4059e6c0 1 x4059e6c0 1}\n       {x43160000 x43068b9d x3fe97a80 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke55 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44e540bc x44695bd7 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke56 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44e540bc x44695bd7 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2fbc8bd 0 1 x408fa21c 1}\n       {x42580000 xc2f37fdb x405ccc50 1 x405ccc50 1}\n       {x425c0000 xc2edfbf8 x403d4df0 1 x403d4df0 1}\n       {x42600000 xc2e7aafc x408ec2b8 1 x408ec2b8 1}\n       {x42640000 xc2dc23a1 x40d18dd8 1 x40d18dd8 1}\n       {x42680000 xc2cd7941 x40df0a98 1 x40df0a98 1}\n       {x426c0000 xc2c0424e x40a79798 1 x40a79798 1}\n       {x42700000 xc2b8864e x4082a6f8 1 x4082a6f8 1}\n       {x42740000 xc2afed6f x409e1e40 1 x409e1e40 1}\n       {x42780000 xc2a4c286 x40baa9d0 1 x40baa9d0 1}\n       {x427c0000 xc2989835 x40c18e60 1 x40c18e60 1}\n       {x42800000 xc28c90ba x40c1fd80 1 x40c1fd80 1}\n       {x42820000 xc2805885 x40b01830 1 x40b01830 1}\n       {x42840000 xc26d1b68 -}\n       {x42860000 xc26d1d4a xbbb4c000 1 xbbb4c000 1}\n       {x42880000 xc26ed720 -}\n       {x428a0000 xc2645a39 -}\n       {x428c0000 xc267d662 -}\n       {x428e0000 xc25475a6 x409f0660 1 x409f0660 1}\n       {x42900000 xc24014ca x40a145d4 1 x40a145d4 1}\n       {x42920000 xc22c2431 x409bf7fc 1 x409bf7fc 1}\n       {x42940000 xc21916cb x4083be78 1 x4083be78 1}\n       {x42960000 xc20b3493 x405886ac 1 x405886ac 1}\n       {x42980000 xc1fc0beb x40602320 1 x40602320 1}\n       {x429a0000 xc1de605e x405de894 1 x405de894 1}\n       {x429c0000 xc1c491c6 x3fe2bc30 1 x3fe2bc30 1}\n       {x429e0000 xc1bfd885 x3f512bc0 1 x3f512bc0 1}\n       {x42a00000 xc1b77f0a x3f81a560 1 x3f81a560 1}\n       {x42a20000 xc1afa3d9 x3f8f2b38 1 x3f8f2b38 1}\n       {x42a40000 xc1a599a3 x3f91ef60 1 x3f91ef60 1}\n       {x42a60000 xc19d65ed x3f1e0420 1 x3f1e0420 1}\n       {x42a80000 xc19bb961 x3e34f340 1 x3e34f340 1}\n       {x42aa0000 xc19a9220 -}\n       {x42ac0000 xc19b8f33 xbebdce40 1 xbebdce40 1}\n       {x42ae0000 xc1a619cc xbfdc22d8 1 xbfdc22d8 1}\n       {x42b00000 xc1b7138e xc019a4c8 1 xc019a4c8 1}\n       {x42b20000 xc1cc82fe xc0219440 1 xc0219440 1}\n       {x42b40000 xc1df789e xc02437e4 1 xc02437e4 1}\n       {x42b60000 xc1f590f7 xc026d4c8 1 xc026d4c8 1}\n       {x42b80000 xc20496e8 xc02aefbc 1 xc02aefbc 1}\n       {x42ba0000 xc2102673 xc0320818 1 xc0320818 1}\n       {x42bc0000 xc21ad7eb xc03234e8 1 xc03234e8 1}\n       {x42be0000 xc2266d10 xc035bcb0 1 xc035bcb0 1}\n       {x42c00000 xc2318f81 xc03baac8 1 xc03baac8 1}\n       {x42c20000 xc23de269 xbfd54380 1 xbfd54380 1}\n       {x42c40000 xc2401b1d xbf0fa760 1 xbf0fa760 1}\n       {x42c60000 xc2425fa4 xbee41600 1 xbee41600 1}\n       {x42c80000 xc243ab75 xbeab5280 1 xbeab5280 1}\n       {x42ca0000 xc2450cee xbea619c0 1 xbea619c0 1}\n       {x42cc0000 xc24643dc xbead0bc0 1 xbead0bc0 1}\n       {x42ce0000 xc247c11d xbe98c5c0 1 xbe98c5c0 1}\n       {x42d00000 xc248a6f3 xbe96fd40 1 xbe96fd40 1}\n       {x42d20000 xc24a1d12 xbea4cc40 1 xbea4cc40 1}\n       {x42d40000 xc24b3a24 xbe662000 1 xbe662000 1}\n       {x42d60000 xc24be952 -}\n       {x42d80000 xc24b5ed1 x3e84b580 1 x3e84b580 1}\n       {x42da0000 xc249d67c x3f33e6c0 1 x3f33e6c0 1}\n       {x42dc0000 xc245bf9b x3f80d8c0 1 x3f80d8c0 1}\n       {x42de0000 xc241c8f0 x3f9236e0 1 x3f9236e0 1}\n       {x42e00000 xc23c9c2d x3fc48620 1 x3fc48620 1}\n       {x42e20000 xc235808e x3fdb4c00 1 x3fdb4c00 1}\n       {x42e40000 xc22ee76d x3fdf82e0 1 x3fdf82e0 1}\n       {x42e60000 xc2278860 x400160d0 1 x400160d0 1}\n       {x42e80000 xc21ebb53 x4009bf58 1 x4009bf58 1}\n       {x42ea0000 xc2165075 x401d1898 1 x401d1898 1}\n       {x42ec0000 xc20b1840 x403f2634 1 x403f2634 1}\n       {x42ee0000 xc1fcd75d x4057dd88 1 x4057dd88 1}\n       {x42f00000 xc1e0391e x4070b70c 1 x4070b70c 1}\n       {x42f20000 xc1c0a99a x40915218 1 x40915218 1}\n       {x42f40000 xc1979012 x40978389 1 x40978389 1}\n       {x42f60000 xc169cfab x40967286 1 x40967286 1}\n       {x42f80000 xc118ad9e x409c61de 1 x409c61de 1}\n       {x42fa0000 xc09adb9a x4098ad9e 1 x4098ad9e 1}\n       {x42fc0000 0 x4094425e 1 x4094425e 1}\n       {x42fe0000 x408da921 x40939f74 1 x40939f74 1}\n       {x43000000 x41139f74 x40934300 1 x40934300 1}\n       {x43010000 x415a1790 x408408da 1 x408408da 1}\n       {x43020000 x418bd427 x40748b34 1 x40748b34 1}\n       {x43030000 x41aa2e95 x40556034 1 x40556034 1}\n       {x43040000 x41c12c34 x4030c3d0 1 x4030c3d0 1}\n       {x43050000 x41d65f89 x401dcd7c 1 x401dcd7c 1}\n       {x43060000 x41e89f93 x400f7964 1 x400f7964 1}\n       {x43070000 x41fa3de2 x3fe750e8 1 x3fe750e8 1}\n       {x43080000 x4202c4d8 x3fc37ac0 1 x3fc37ac0 1}\n       {x43090000 x4209569d x3fc2ce90 1 x3fc2ce90 1}\n       {x430a0000 x420ef1c1 x3fd3cf80 1 x3fd3cf80 1}\n       {x430b0000 x42169395 x3fd84410 1 x3fd84410 1}\n       {x430c0000 x421c7602 x3fc682e0 1 x3fc682e0 1}\n       {x430d0000 x4222fbc3 x3fc83830 1 x3fc83830 1}\n       {x430e0000 x4228f985 x3fce98e0 1 x3fce98e0 1}\n       {x430f0000 x422fe551 x3fd951a0 1 x3fd951a0 1}\n       {x43100000 x42368e9f x3fe49b40 1 x3fe49b40 1}\n       {x43110000 x423e2f05 x3fdad1c0 1 x3fdad1c0 1}\n       {x43120000 x42443bbb x3fb74b90 1 x3fb74b90 1}\n       {x43130000 x4249a3be x3f928a00 1 x3f928a00 1}\n       {x43140000 x424d645b -}\n       {x43150000 x424d2ccf xbe26a400 1 xbe26a400 1}\n       {x43160000 x42476b33 xc004f180 1 0 1}}\n      {{x42540000 x443adc62 0 1 xc117d590 1}\n       {x42580000 x4438932d xc1073ca0 1 xc1073ca0 1}\n       {x425c0000 x4436a27d xc0fb50c0 1 xc0fb50c0 1}\n       {x42600000 x4434a5ea xc1214560 1 xc1214560 1}\n       {x42640000 x44319852 xc1554440 1 xc1554440 1}\n       {x42680000 x442dfbc8 xc16dfb80 1 xc16dfb80 1}\n       {x426c0000 x442a2876 xc151a840 1 xc151a840 1}\n       {x42700000 x44276e86 xc12f0620 1 xc12f0620 1}\n       {x42740000 x4424b045 xc147d4e0 1 xc147d4e0 1}\n       {x42780000 x44212fdf xc1656d60 1 xc1656d60 1}\n       {x427c0000 x441d84da xc16ff980 1 xc16ff980 1}\n       {x42800000 x4419b013 xc1799d60 1 xc1799d60 1}\n       {x42820000 x4415b7ef xc17d4ac0 1 xc17d4ac0 1}\n       {x42840000 x4411c5bd xc14c72e0 1 xc14c72e0 1}\n       {x42860000 x440f5458 xc11343e0 1 xc11343e0 1}\n       {x42880000 x440d2b9e xc12866e0 1 xc12866e0 1}\n       {x428a0000 x440a1121 xc12c9680 1 xc12c9680 1}\n       {x428c0000 x4407c6ea xc14f96a0 1 xc14f96a0 1}\n       {x428e0000 x4403946c xc1899350 1 xc1899350 1}\n       {x42900000 x43fe5b6a xc18b14f8 1 xc18b14f8 1}\n       {x42920000 x43f5c639 xc1895720 1 xc1895720 1}\n       {x42940000 x43ed3086 xc183e5d8 1 xc183e5d8 1}\n       {x42960000 x43e5497e xc1763660 1 xc1763660 1}\n       {x42980000 x43ddcd20 xc16a5660 1 xc16a5660 1}\n       {x429a0000 x43d6a418 xc1576240 1 xc1576240 1}\n       {x429c0000 x43d056fc xc14b0920 1 xc14b0920 1}\n       {x429e0000 x43c9f386 xc14dd5a0 1 xc14dd5a0 1}\n       {x42a00000 x43c379a2 xc1526260 1 xc1526260 1}\n       {x42a20000 x43bccd60 xc165dd70 1 xc165dd70 1}\n       {x42a40000 x43b51bcb xc17a15a0 1 xc17a15a0 1}\n       {x42a60000 x43ad2c06 xc17f12e0 1 xc17f12e0 1}\n       {x42a80000 x43a52a9d xc17ca990 1 xc17ca990 1}\n       {x42aa0000 x439d616d xc1703180 1 xc1703180 1}\n       {x42ac0000 x43962785 xc15f2400 1 xc15f2400 1}\n       {x42ae0000 x438f6f2d xc1529480 1 xc1529480 1}\n       {x42b00000 x4388fe3d xc1532d20 1 xc1532d20 1}\n       {x42b20000 x43823c5b xc157f268 1 xc157f268 1}\n       {x42b40000 x4376fe2d xc15433c0 1 xc15433c0 1}\n       {x42b60000 x4369f23e xc156c758 1 xc156c758 1}\n       {x42b80000 x435c2542 xc1571df0 1 xc1571df0 1}\n       {x42ba0000 x434f0e80 xc14946a8 1 xc14946a8 1}\n       {x42bc0000 x4342fc6d xc13fbc38 1 xc13fbc38 1}\n       {x42be0000 x433716f9 xc12d8f08 1 xc12d8f08 1}\n       {x42c00000 x432d4a8c xc1198408 1 xc1198408 1}\n       {x42c20000 x4323e678 xc10cfc98 1 xc10cfc98 1}\n       {x42c40000 x431baaf9 xc0fdf2e0 1 xc0fdf2e0 1}\n       {x42c60000 x4314074a xc100ea70 1 xc100ea70 1}\n       {x42c80000 x430b8dab xc1043780 1 xc1043780 1}\n       {x42ca0000 x4303805a xc0fd1e78 1 xc0fd1e78 1}\n       {x42cc0000 x42f77787 xc0ef9df8 1 xc0ef9df8 1}\n       {x42ce0000 x42e90cf5 xc0e96428 1 xc0e96428 1}\n       {x42d00000 x42da4b02 xc0e44320 1 xc0e44320 1}\n       {x42d20000 x42cc8491 xc0d78308 1 xc0d78308 1}\n       {x42d40000 x42bf5aa1 xc0cba4f0 1 xc0cba4f0 1}\n       {x42d60000 x42b30ff3 xc0c3ed88 1 xc0c3ed88 1}\n       {x42d80000 x42a6dcf0 xc0cb68a8 1 xc0cb68a8 1}\n       {x42da0000 x4299a2de xc0d6ed48 1 xc0d6ed48 1}\n       {x42dc0000 x428bff47 xc0d5a204 1 xc0d5a204 1}\n       {x42de0000 x427ddd3b xc0bfbd20 1 xc0bfbd20 1}\n       {x42e00000 x42680f46 xc0a79c7c 1 xc0a79c7c 1}\n       {x42e20000 x4253f61c xc09b6f60 1 xc09b6f60 1}\n       {x42e40000 x4241336e xc08e0298 1 xc08e0298 1}\n       {x42e60000 x42307576 xc079f7a8 1 xc079f7a8 1}\n       {x42e80000 x4221f479 xc05f4770 1 xc05f4770 1}\n       {x42ea0000 x42148c88 xc0577690 1 xc0577690 1}\n       {x42ec0000 x420705a7 xc05ad04c 1 xc05ad04c 1}\n       {x42ee0000 x41f264fd xc075bc3c 1 xc075bc3c 1}\n       {x42f00000 x41d09c3f xc08af40c 1 xc08af40c 1}\n       {x42f20000 x41aceaf7 xc091663e 1 xc091663e 1}\n       {x42f40000 x4187e920 xc08fad3b 1 xc08fad3b 1}\n       {x42f60000 x414a28b3 xc08bf040 1 xc08bf040 1}\n       {x42f80000 x4103e200 xc08a98dd 1 xc08a98dd 1}\n       {x42fa0000 x407e3f59 xc083e200 1 xc083e200 1}\n       {x42fc0000 0 xc06f65b7 1 xc06f65b7 1}\n       {x42fe0000 xc0608c15 xc0623e0d 1 xc0623e0d 1}\n       {x43000000 xc0e23e0d xc06554fa 1 xc06554fa 1}\n       {x43010000 xc12acd82 xc055c0f5 1 xc055c0f5 1}\n       {x43020000 xc15bff81 xc03d3b5c 1 xc03d3b5c 1}\n       {x43030000 xc184b598 xc030ab3e 1 xc030ab3e 1}\n       {x43040000 xc19a2a90 xc024bb38 1 xc024bb38 1}\n       {x43050000 xc1ade466 xc01dea00 1 xc01dea00 1}\n       {x43060000 xc1c1a510 xc01dddcc 1 xc01dddcc 1}\n       {x43070000 xc1d55bd9 xc00f1908 1 xc00f1908 1}\n       {x43080000 xc1e56b52 xbfddad58 1 xbfddad58 1}\n       {x43090000 xc1f11184 xbfc77f80 1 xbfc77f80 1}\n       {x430a0000 xc1fe5b42 xbfd1f8e0 1 xbfd1f8e0 1}\n       {x430b0000 xc205a850 xbfea1410 1 xbfea1410 1}\n       {x430c0000 xc20dcee2 xbff5f810 1 xbff5f810 1}\n       {x430d0000 xc21507d1 xbfdd1700 1 xbfdd1700 1}\n       {x430e0000 xc21ba052 xbfd6f550 1 xbfd6f550 1}\n       {x430f0000 xc2227726 xbfdb9610 1 xbfdb9610 1}\n       {x43100000 xc22959b3 xbfe17fb0 1 xbfe17fb0 1}\n       {x43110000 xc2308f21 xbfd7cf30 1 xbfd7cf30 1}\n       {x43120000 xc236d6a6 xbfc3f040 1 xbfc3f040 1}\n       {x43130000 xc23cce25 xbfe6a990 1 xbfe6a990 1}\n       {x43140000 xc245413f xc012c4b0 1 xc012c4b0 1}\n       {x43150000 xc24f26bb xc053b038 1 xc053b038 1}\n       {x43160000 xc25fb746 xc091da76 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke57 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44c076d9 x4471ffae 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke58 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44c076d9 x4471ffae 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3a2a4ab 0 1 x40dded90 1}\n       {x42580000 xc39f09f4 x40f82e20 1 x40f82e20 1}\n       {x425c0000 xc39ae33a x40e6f200 1 x40e6f200 1}\n       {x42600000 xc397d264 x40fd5c80 1 x40fd5c80 1}\n       {x42640000 xc392f856 x41169440 1 x41169440 1}\n       {x42680000 xc38e6920 x410a5210 1 x410a5210 1}\n       {x426c0000 xc38a5335 x410d4f90 1 x410d4f90 1}\n       {x42700000 xc3859427 x41175730 1 x41175730 1}\n       {x42740000 xc380ddc2 x410c8f20 1 x410c8f20 1}\n       {x42780000 xc379966a x41045a60 1 x41045a60 1}\n       {x427c0000 xc3713038 x4105ea40 1 x4105ea40 1}\n       {x42800000 xc368d922 x41016650 1 x41016650 1}\n       {x42820000 xc361036e x40ef1a70 1 x40ef1a70 1}\n       {x42840000 xc359e77b x40d36220 1 x40d36220 1}\n       {x42860000 xc353cd4c x40d7af50 1 x40d7af50 1}\n       {x42880000 xc34c6c86 x40d917c0 1 x40d917c0 1}\n       {x428a0000 xc3463bd0 x40d5aa80 1 x40d5aa80 1}\n       {x428c0000 xc33f11de x40cb6170 1 x40cb6170 1}\n       {x428e0000 xc33985b9 x40b24820 1 x40b24820 1}\n       {x42900000 xc333ed5c x40bff3b0 1 x40bff3b0 1}\n       {x42920000 xc32d867e x40cc6f50 1 x40cc6f50 1}\n       {x42940000 xc3272667 x40bc8080 1 x40bc8080 1}\n       {x42960000 xc321be76 x40a22f60 1 x40a22f60 1}\n       {x42980000 xc31d0371 x4093d470 1 x4093d470 1}\n       {x429a0000 xc318812f x40849950 1 x40849950 1}\n       {x429c0000 xc314b9dc x40467740 1 x40467740 1}\n       {x429e0000 xc3124d75 x40305120 1 x40305120 1}\n       {x42a00000 xc30f3753 x40382880 1 x40382880 1}\n       {x42a20000 xc30c8c31 x40508360 1 x40508360 1}\n       {x42a40000 xc308b338 x404642c0 1 x404642c0 1}\n       {x42a60000 xc3065a1b x402401a0 1 x402401a0 1}\n       {x42a80000 xc303932b x4061d650 1 x4061d650 1}\n       {x42aa0000 xc2fe96d1 x4048cc20 1 x4048cc20 1}\n       {x42ac0000 xc2fa9994 x3fa77960 1 x3fa77960 1}\n       {x42ae0000 xc2f95b06 -}\n       {x42b00000 xc2f9c4e5 xbe653900 1 xbe653900 1}\n       {x42b20000 xc2fa403f xbe50f800 1 xbe50f800 1}\n       {x42b40000 xc2fa95dd xbe01e300 1 xbe01e300 1}\n       {x42b60000 xc2fac222 -}\n       {x42b80000 xc2faae13 x3df0b400 1 x3df0b400 1}\n       {x42ba0000 xc2f9b495 x3ec36400 1 x3ec36400 1}\n       {x42bc0000 xc2f9274b x3e350c00 1 x3e350c00 1}\n       {x42be0000 xc2f8ff89 -}\n       {x42c00000 xc2f959b0 xbe8e3a80 1 xbe8e3a80 1}\n       {x42c20000 xc2fa1bfe -}\n       {x42c40000 xc2f53294 x401dc4f0 1 x401dc4f0 1}\n       {x42c60000 xc2f03faf x4019ec30 1 x4019ec30 1}\n       {x42c80000 xc2eb93d1 x400ed7e0 1 x400ed7e0 1}\n       {x42ca0000 xc2e75231 x400f8a90 1 x400f8a90 1}\n       {x42cc0000 xc2e29b28 x4016d6c0 1 x4016d6c0 1}\n       {x42ce0000 xc2dde4c5 x4013f6e0 1 x4013f6e0 1}\n       {x42d00000 xc2d95bba x400da5c0 1 x400da5c0 1}\n       {x42d20000 xc2d50a69 x3ffa2bc0 1 x3ffa2bc0 1}\n       {x42d40000 xc2d18a5c x40005af0 1 x40005af0 1}\n       {x42d60000 xc2cd04ba x40108000 1 x40108000 1}\n       {x42d80000 xc2c8825c x40220b30 1 x40220b30 1}\n       {x42da0000 xc2c2e407 x402eddd0 1 x402eddd0 1}\n       {x42dc0000 xc2bd947f x40479f60 1 x40479f60 1}\n       {x42de0000 xc2b66a11 x405fd610 1 x405fd610 1}\n       {x42e00000 xc2af971e x407a4290 1 x407a4290 1}\n       {x42e20000 xc2a6c5e8 x408a20d0 1 x408a20d0 1}\n       {x42e40000 xc29e5304 x40938808 1 x40938808 1}\n       {x42e60000 xc29454e7 x409b6290 1 x409b6290 1}\n       {x42e80000 xc28ae6b2 x409e4858 1 x409e4858 1}\n       {x42ea0000 xc2808bdc x40b2c300 1 x40b2c300 1}\n       {x42ec0000 xc2691ca4 x40c688a8 1 x40c688a8 1}\n       {x42ee0000 xc24f758e x40ce5554 1 x40ce5554 1}\n       {x42f00000 xc235874f x40da7bec 1 x40da7bec 1}\n       {x42f20000 xc218d693 x40ed3f6e 1 x40ed3f6e 1}\n       {x42f40000 xc1f46ee7 x40f9484e 1 x40f9484e 1}\n       {x42f60000 xc1b508ff x40fcda59 1 x40fcda59 1}\n       {x42f80000 xc16c0375 x40ef98a1 1 x40ef98a1 1}\n       {x42fa0000 xc0f4f2ba x40ec0375 1 x40ec0375 1}\n       {x42fc0000 0 x40ee9eb2 1 x40ee9eb2 1}\n       {x42fe0000 x40e84aab x40e72e56 1 x40e72e56 1}\n       {x43000000 x41672e56 x40df20f2 1 x40df20f2 1}\n       {x43010000 x41a9a324 x40d0689c 1 x40d0689c 1}\n       {x43020000 x41dbcb79 x40bf947c 1 x40bf947c 1}\n       {x43030000 x4204b6b1 x40b47812 1 x40b47812 1}\n       {x43040000 x421b03c1 x40a7b1f0 1 x40a7b1f0 1}\n       {x43050000 x422ea32d x408c151c 1 x408c151c 1}\n       {x43060000 x423e0908 x4075f390 1 x4075f390 1}\n       {x43070000 x424d619f x4070ef68 1 x4070ef68 1}\n       {x43080000 x425c26f5 x4058a808 1 x4058a808 1}\n       {x43090000 x426876a0 x40456480 1 x40456480 1}\n       {x430a0000 x4274d385 x4034fe98 1 x4034fe98 1}\n       {x430b0000 x427f1673 x4020f1c8 1 x4020f1c8 1}\n       {x430c0000 x428478df x401555a8 1 x401555a8 1}\n       {x430d0000 x4288e094 x401a4040 1 x401a4040 1}\n       {x430e0000 x428e1ce3 x4024ce60 1 x4024ce60 1}\n       {x430f0000 x42932d7a x4025a050 1 x4025a050 1}\n       {x43100000 x429876e8 x40297170 1 x40297170 1}\n       {x43110000 x429dc491 x401e41e0 1 x401e41e0 1}\n       {x43120000 x42a25b06 x401d5e30 1 x401d5e30 1}\n       {x43130000 x42a79a74 x4018da10 1 x4018da10 1}\n       {x43140000 x42abe8a7 x40043a80 1 x40043a80 1}\n       {x43150000 x42afde1c x3fd724e0 1 x3fd724e0 1}\n       {x43160000 x42b2a1ce x3f9dd050 1 0 1}}\n      {{x42540000 x445d7c48 0 1 xc1173500 1}\n       {x42580000 x445b2a44 xc10f1900 1 xc10f1900 1}\n       {x425c0000 x44590380 xc11272a0 1 xc11272a0 1}\n       {x42600000 x445696af xc14a3440 1 xc14a3440 1}\n       {x42640000 x4452b1de xc17ddc60 1 xc17ddc60 1}\n       {x42680000 x444ea7cc xc183f310 1 xc183f310 1}\n       {x426c0000 x444a72ad xc17bd3a0 1 xc17bd3a0 1}\n       {x42700000 x4446c92f xc16ff780 1 xc16ff780 1}\n       {x42740000 x4442f2f1 xc1768480 1 xc1768480 1}\n       {x42780000 x443f150b xc17f8b00 1 xc17f8b00 1}\n       {x427c0000 x443af699 xc18c2ff0 1 xc18c2ff0 1}\n       {x42800000 x4436520c xc195c800 1 xc195c800 1}\n       {x42820000 x44319a19 xc197f550 1 xc197f550 1}\n       {x42840000 x442cd2b7 xc19c8a70 1 xc19c8a70 1}\n       {x42860000 x4427d172 xc1a2a5f0 1 xc1a2a5f0 1}\n       {x42880000 x4422a858 xc19ba2b0 1 xc19ba2b0 1}\n       {x428a0000 x441e1747 xc19b47a0 1 xc19b47a0 1}\n       {x428c0000 x4418f3de xc199f500 1 xc199f500 1}\n       {x428e0000 x441477f7 xc192b8c0 1 xc192b8c0 1}\n       {x42900000 x440fc852 xc19e4910 1 xc19e4910 1}\n       {x42920000 x440a9366 xc1ab8f70 1 xc1ab8f70 1}\n       {x42940000 x44050f5b xc1a660e0 1 xc1a660e0 1}\n       {x42960000 x44002d58 xc197ddf8 1 xc197ddf8 1}\n       {x42980000 x43f722f7 xc1888170 1 xc1888170 1}\n       {x429a0000 x43ef4a82 xc177a0a0 1 xc177a0a0 1}\n       {x429c0000 x43e7a8ed xc162e270 1 xc162e270 1}\n       {x429e0000 x43e11c5b xc161a4a0 1 xc161a4a0 1}\n       {x42a00000 x43d98ea3 xc17a83e0 1 xc17a83e0 1}\n       {x42a20000 x43d1741d xc184a950 1 xc184a950 1}\n       {x42a40000 x43c8f979 xc1861b90 1 xc1861b90 1}\n       {x42a60000 x43c0b0ab xc1889b70 1 xc1889b70 1}\n       {x42a80000 x43b7e60b xc1906a18 1 xc1906a18 1}\n       {x42aa0000 x43aea368 xc18a5ad0 1 xc18a5ad0 1}\n       {x42ac0000 x43a69ab1 xc17a4fb0 1 xc17a4fb0 1}\n       {x42ae0000 x439efe6d xc172ef50 1 xc172ef50 1}\n       {x42b00000 x43976bbc xc1771290 1 xc1771290 1}\n       {x42b20000 x438f8d44 xc1822db0 1 xc1822db0 1}\n       {x42b40000 x43872606 xc18c246c 1 xc18c246c 1}\n       {x42b60000 x437c116d xc19172f4 1 xc19172f4 1}\n       {x42b80000 x4369ef4f xc192a5e0 1 xc192a5e0 1}\n       {x42ba0000 x435767f5 xc18f603c 1 xc18f603c 1}\n       {x42bc0000 x43461740 xc182b7c8 1 xc182b7c8 1}\n       {x42be0000 x4336ba03 xc163d780 1 xc163d780 1}\n       {x42c00000 x43299c50 xc1457e58 1 xc1457e58 1}\n       {x42c20000 x431e0a38 xc12fd8f0 1 xc12fd8f0 1}\n       {x42c40000 x4313a132 xc1267ff0 1 xc1267ff0 1}\n       {x42c60000 x43093a3a xc12fbe54 1 xc12fbe54 1}\n       {x42c80000 x42fb52cf xc1338794 1 xc1338794 1}\n       {x42ca0000 x42e5928f xc125920c 1 xc125920c 1}\n       {x42cc0000 x42d1ee4c xc125a020 1 xc125a020 1}\n       {x42ce0000 x42bc2a87 xc124fc38 1 xc124fc38 1}\n       {x42d00000 x42a8af3e xc113922c 1 xc113922c 1}\n       {x42d20000 x429745fc xc104c1a8 1 xc104c1a8 1}\n       {x42d40000 x42877ed4 xc0f39ac8 1 xc0f39ac8 1}\n       {x42d60000 x4271a546 xc0e51284 1 xc0e51284 1}\n       {x42d80000 x4255b907 xc0df56a8 1 xc0df56a8 1}\n       {x42da0000 x4239cf9c xc0e6ab2c 1 xc0e6ab2c 1}\n       {x42dc0000 x421c0e3c xc0dc2f40 1 xc0dc2f40 1}\n       {x42de0000 x4202c3cc xc0b7a670 1 xc0b7a670 1}\n       {x42e00000 x41dc4940 xc08f78f0 1 xc08f78f0 1}\n       {x42e20000 x41bdcb20 xc0671ae8 1 xc0671ae8 1}\n       {x42e40000 x41a28286 xc038d0a4 1 xc038d0a4 1}\n       {x42e60000 x418f96f7 xc00a6038 1 xc00a6038 1}\n       {x42e80000 x417fd4f0 xbfdda170 1 xbfdda170 1}\n       {x42ea0000 x4167c592 xbfc5b874 1 xbfc5b874 1}\n       {x42ec0000 x414e66d3 xbfbd68f4 1 xbfbd68f4 1}\n       {x42ee0000 x41386b55 xbfc71b0c 1 xbfc71b0c 1}\n       {x42f00000 x411ca010 xbffb59f6 1 xbffb59f6 1}\n       {x42f20000 x40f329af xc002dbef 1 xc002dbef 1}\n       {x42f40000 x40b66431 xbfe6b014 1 xbfe6b014 1}\n       {x42f60000 x407fa34a xbfce872a 1 xbfce872a 1}\n       {x42f80000 x401e4138 xbfc73b6a 1 xbfc73b6a 1}\n       {x42fa0000 x3f619f7e xbf9e4138 1 xbf9e4138 1}\n       {x42fc0000 0 xbf56d226 1 xbf56d226 1}\n       {x42fe0000 xbf4c04cf xbf41b1d4 1 xbf41b1d4 1}\n       {x43000000 xbfc1b1d4 xbf17f53e 1 xbf17f53e 1}\n       {x43010000 xbffdf7a5 xbeb15124 1 xbeb15124 1}\n       {x43020000 xc00d2d33 -}\n       {x43030000 xc0083220 x3e6f1390 1 x3e6f1390 1}\n       {x43040000 xbfc9db93 x3f024548 1 x3f024548 1}\n       {x43050000 xbf8e1ef8 x3e8fa4c0 1 x3e8fa4c0 1}\n       {x43060000 xbf820933 x3e60a946 1 x3e60a946 1}\n       {x43070000 xbf2be94d x3f0be9d4 1 x3f0be9d4 1}\n       {x43080000 x3d9e0a15 x3f51c716 1 x3f51c716 1}\n       {x43090000 x3f77a4df x3f837ea5 1 x3f837ea5 1}\n       {x430a0000 x40086ef6 x3f4fdccc 1 x3f4fdccc 1}\n       {x430b0000 x4025d79e x3e9c3b78 1 x3e9c3b78 1}\n       {x430c0000 x402f7dd4 x3ee79510 1 x3ee79510 1}\n       {x430d0000 x4065abb6 x3f5abda4 1 x3f5abda4 1}\n       {x430e0000 x408e6e53 x3f68395c 1 x3f68395c 1}\n       {x430f0000 x40ace432 x3f46f90c 1 x3f46f90c 1}\n       {x43100000 x40c02c96 x3f4ec4ec 1 x3f4ec4ec 1}\n       {x43110000 x40e0956d x3f8b6a2c 1 x3f8b6a2c 1}\n       {x43120000 x4102f0d6 x3f9ce926 1 x3f9ce926 1}\n       {x43130000 x41178500 x3f662470 1 x3f662470 1}\n       {x43140000 x411fb564 x3ea8b050 1 x3ea8b050 1}\n       {x43150000 x41221005 -}\n       {x43160000 x410786e5 xc01f36c0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke59 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44da4bf8 x4462b75c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke60 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44da4bf8 x4462b75c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc338bd3a 0 1 x4083e7e8 1}\n       {x42580000 xc3346432 x40999330 1 x40999330 1}\n       {x425c0000 xc32f2407 x40b1bd60 1 x40b1bd60 1}\n       {x42600000 xc329485c x40bc7010 1 x40bc7010 1}\n       {x42640000 xc3235d06 x40d455d0 1 x40d455d0 1}\n       {x42680000 xc31c02ff x40df7cd0 1 x40df7cd0 1}\n       {x426c0000 xc3156539 x40cfec40 1 x40cfec40 1}\n       {x42700000 xc30f043b x40cb34a0 1 x40cb34a0 1}\n       {x42740000 xc308b1ef x40be7e60 1 x40be7e60 1}\n       {x42780000 xc3031c55 x40c6d948 1 x40c6d948 1}\n       {x427c0000 xc2f888b5 x40dde5b8 1 x40dde5b8 1}\n       {x42800000 xc2ea7bf3 x40d20f48 1 x40d20f48 1}\n       {x42820000 xc2de46cc x40afef50 1 x40afef50 1}\n       {x42840000 xc2d47e09 x405b17c0 1 x405b17c0 1}\n       {x42860000 xc2d09550 x3fe5d800 1 x3fe5d800 1}\n       {x42880000 xc2cd4f49 x401100f0 1 x401100f0 1}\n       {x428a0000 xc2c78541 x40119470 1 x40119470 1}\n       {x428c0000 xc2c43602 x4050aff0 1 x4050aff0 1}\n       {x428e0000 xc2ba7a42 x409f7908 1 x409f7908 1}\n       {x42900000 xc2b046e1 x40a143f8 1 x40a143f8 1}\n       {x42920000 xc2a651c3 x409bc0d0 1 x409bc0d0 1}\n       {x42940000 xc29ccec7 x408c08c0 1 x408c08c0 1}\n       {x42960000 xc294d0ab x407e7b10 1 x407e7b10 1}\n       {x42980000 xc28ce716 x40752420 1 x40752420 1}\n       {x429a0000 xc2857e69 x4062d208 1 x4062d208 1}\n       {x429c0000 xc27d73eb x3feb7e20 1 x3feb7e20 1}\n       {x429e0000 xc27afff0 x3f5a78e0 1 x3f5a78e0 1}\n       {x42a00000 xc276a024 x3f9f45b0 1 x3f9f45b0 1}\n       {x42a20000 xc2710b95 x3fbeea10 1 x3fbeea10 1}\n       {x42a40000 xc26ab183 x3fc54920 1 x3fc54920 1}\n       {x42a60000 xc264b703 x3f8d3c30 1 x3f8d3c30 1}\n       {x42a80000 xc261ddc0 x3f246bc0 1 x3f246bc0 1}\n       {x42aa0000 xc25f93a5 -}\n       {x42ac0000 xc25ff925 xbe984000 1 xbe984000 1}\n       {x42ae0000 xc26498a2 xbfbf8ce0 1 xbfbf8ce0 1}\n       {x42b00000 xc26bf1f3 xc0064e28 1 xc0064e28 1}\n       {x42b20000 xc2756267 xc0075758 1 xc0075758 1}\n       {x42b40000 xc27cdcde xbfefa0f0 1 xbfefa0f0 1}\n       {x42b60000 xc2822e3b xbfd7fe00 1 xbfd7fe00 1}\n       {x42b80000 xc2852e5f xbfca2360 1 xbfca2360 1}\n       {x42ba0000 xc2887f56 xbfc670e0 1 xbfc670e0 1}\n       {x42bc0000 xc28b61e6 xbfc2a440 1 xbfc2a440 1}\n       {x42be0000 xc28e9478 xbfc708e0 1 xbfc708e0 1}\n       {x42c00000 xc2919a2d xbfcbdfa0 1 xbfcbdfa0 1}\n       {x42c20000 xc294f375 -}\n       {x42c40000 xc293cd7c x3f4c3e80 1 x3f4c3e80 1}\n       {x42c60000 xc291c27b x3f621f00 1 x3f621f00 1}\n       {x42c80000 xc2904500 x3f5a6700 1 x3f5a6700 1}\n       {x42ca0000 xc28e58df x3f80d260 1 x3f80d260 1}\n       {x42cc0000 xc28c3e6d x3f79ffc0 1 x3f79ffc0 1}\n       {x42ce0000 xc28a70e0 x3f3d1880 1 x3f3d1880 1}\n       {x42d00000 xc2894a0b x3f294380 1 x3f294380 1}\n       {x42d20000 xc287cbd2 x3f30e9c0 1 x3f30e9c0 1}\n       {x42d40000 xc2868664 x3f284280 1 x3f284280 1}\n       {x42d60000 xc2852ac8 x3f5abb00 1 x3f5abb00 1}\n       {x42d80000 xc2831b78 x3fa10560 1 x3fa10560 1}\n       {x42da0000 xc280229d x3fd072e0 1 x3fd072e0 1}\n       {x42dc0000 xc2792fc2 x3fedf8c0 1 x3fedf8c0 1}\n       {x42de0000 xc27165ae x40058848 1 x40058848 1}\n       {x42e00000 xc2687eb9 x40130aa0 1 x40130aa0 1}\n       {x42e20000 xc25f045a x401e5d50 1 x401e5d50 1}\n       {x42e40000 xc254b30f x402d0858 1 x402d0858 1}\n       {x42e60000 xc249634f x403552d0 1 x403552d0 1}\n       {x42e80000 xc23e08b5 x404f75c0 1 x404f75c0 1}\n       {x42ea0000 xc22f7497 x405d82d8 1 x405d82d8 1}\n       {x42ec0000 xc222585a x40712550 1 x40712550 1}\n       {x42ee0000 xc2114fed x40896212 1 x40896212 1}\n       {x42f00000 xc1ffffab x409477b4 1 x409477b4 1}\n       {x42f20000 xc1d86400 x40a29eee 1 x40a29eee 1}\n       {x42f40000 xc1aeb034 x40aeea08 1 x40aeea08 1}\n       {x42f60000 xc180eefc x40b4c0fa 1 x40b4c0fa 1}\n       {x42f80000 xc1289f6e x40ad1602 1 x40ad1602 1}\n       {x42fa0000 xc0a98fed x40a89f6e 1 x40a89f6e 1}\n       {x42fc0000 0 x40a8a992 1 x40a8a992 1}\n       {x42fe0000 x40a7c336 x40a5f72e 1 x40a5f72e 1}\n       {x43000000 x4125f72e x40a01ff2 1 x40a01ff2 1}\n       {x43010000 x4174018d x40963968 1 x40963968 1}\n       {x43020000 x419e184b x408a2b4f 1 x408a2b4f 1}\n       {x43030000 x41bf166e x4079bdbc 1 x4079bdbc 1}\n       {x43040000 x41dc87ba x40640334 1 x40640334 1}\n       {x43050000 x41f8173b x404b5948 1 x404b5948 1}\n       {x43060000 x4207af06 x402c674c 1 x402c674c 1}\n       {x43070000 x42119887 x40038880 1 x40038880 1}\n       {x43080000 x42182016 x3fffced0 1 x3fffced0 1}\n       {x43090000 x42219574 x401536f8 1 x401536f8 1}\n       {x430a0000 x422ac6f5 x400d27b0 1 x400d27b0 1}\n       {x430b0000 x42333a6a x3fe36bc0 1 x3fe36bc0 1}\n       {x430c0000 x4238fdb1 x3fdd3ab0 1 x3fdd3ab0 1}\n       {x430d0000 x42410e15 x400b4fa0 1 x400b4fa0 1}\n       {x430e0000 x424a67a5 x40002710 1 x40002710 1}\n       {x430f0000 x425112f7 x4001e970 1 x4001e970 1}\n       {x43100000 x425aa4d3 x400a0740 1 x400a0740 1}\n       {x43110000 x426253df x400915f0 1 x400915f0 1}\n       {x43120000 x426bc791 x40024b38 1 x40024b38 1}\n       {x43130000 x42729d46 x3fc1f9d0 1 x3fc1f9d0 1}\n       {x43140000 x4277e72e x3ee3c100 1 x3ee3c100 1}\n       {x43150000 x42787f04 -}\n       {x43160000 x42762791 xbf60cb20 1 0 1}}\n      {{x42540000 x4443bb85 0 1 xc11322e0 1}\n       {x42580000 x4441725b xc11099c0 1 xc11099c0 1}\n       {x425c0000 x443f36b7 xc1132880 1 xc1132880 1}\n       {x42600000 x443cd917 xc12eafa0 1 xc12eafa0 1}\n       {x42640000 x4439c13a xc156ca00 1 xc156ca00 1}\n       {x42680000 x443622c7 xc16e69c0 1 xc16e69c0 1}\n       {x426c0000 x44324dec xc1601220 1 xc1601220 1}\n       {x42700000 x442f2236 xc14dc6e0 1 xc14dc6e0 1}\n       {x42740000 x442bdfb5 xc15858a0 1 xc15858a0 1}\n       {x42780000 x44285f71 xc16bd460 1 xc16bd460 1}\n       {x427c0000 x44248112 xc17cf700 1 xc17cf700 1}\n       {x42800000 x442077b9 xc18013f0 1 xc18013f0 1}\n       {x42820000 x441c7fd3 xc17d3ec0 1 xc17d3ec0 1}\n       {x42840000 x44188dc3 xc1630d40 1 xc1630d40 1}\n       {x42860000 x44156769 xc144d360 1 xc144d360 1}\n       {x42880000 x44126728 xc145e660 1 xc145e660 1}\n       {x428a0000 x440f3836 xc14846a0 1 xc14846a0 1}\n       {x428c0000 x440c24f3 xc168e900 1 xc168e900 1}\n       {x428e0000 x4407f0ee xc189d300 1 xc189d300 1}\n       {x42900000 x440387c3 xc18b42e0 1 xc18b42e0 1}\n       {x42920000 x43fe7980 xc1896558 1 xc1896558 1}\n       {x42940000 x43f5e2db xc1878598 1 xc1878598 1}\n       {x42960000 x43ed88cd xc1844108 1 xc1844108 1}\n       {x42980000 x43e55aba xc1757f30 1 xc1757f30 1}\n       {x429a0000 x43de30da xc15d3db0 1 xc15d3db0 1}\n       {x429c0000 x43d786df xc150fe10 1 xc150fe10 1}\n       {x429e0000 x43d120f9 xc1527be0 1 xc1527be0 1}\n       {x42a00000 x43ca5f21 xc16048b0 1 xc16048b0 1}\n       {x42a20000 x43c31c6e xc16d4020 1 xc16d4020 1}\n       {x42a40000 x43bb8b1f xc175ab50 1 xc175ab50 1}\n       {x42a60000 x43b3c1b9 xc177b700 1 xc177b700 1}\n       {x42a80000 x43ac0faf xc176c2c0 1 xc176c2c0 1}\n       {x42aa0000 x43a4558d xc16eec90 1 xc16eec90 1}\n       {x42ac0000 x439d20e6 xc15f9220 1 xc15f9220 1}\n       {x42ae0000 x43965c6b xc159cde0 1 xc159cde0 1}\n       {x42b00000 x438f8408 xc15a8ef0 1 xc15a8ef0 1}\n       {x42b20000 x4388b37c xc16178b0 1 xc16178b0 1}\n       {x42b40000 x43816c7d xc1693850 1 xc1693850 1}\n       {x42b60000 x43743fee xc1693660 1 xc1693660 1}\n       {x42b80000 x4365b22e xc16bd648 1 xc16bd648 1}\n       {x42ba0000 x4356c525 xc16a3ae0 1 xc16a3ae0 1}\n       {x42bc0000 x43486ad2 xc15f4708 1 xc15f4708 1}\n       {x42be0000 x433adc44 xc14d5dc0 1 xc14d5dc0 1}\n       {x42c00000 x432ebf1a xc1378b00 1 xc1378b00 1}\n       {x42c20000 x4323eae4 xc12352e0 1 xc12352e0 1}\n       {x42c40000 x431a54be xc1160e40 1 xc1160e40 1}\n       {x42c60000 x4311291c xc1147d70 1 xc1147d70 1}\n       {x42c80000 x4307c510 xc1148404 1 xc1148404 1}\n       {x42ca0000 x42fd3137 xc10e615c 1 xc10e615c 1}\n       {x42cc0000 x42ebf1c9 xc1091e1c 1 xc1091e1c 1}\n       {x42ce0000 x42dae9b0 xc105baac 1 xc105baac 1}\n       {x42d00000 x42ca831e xc0f24d78 1 xc0f24d78 1}\n       {x42d20000 x42bca001 xc0da27c8 1 xc0da27c8 1}\n       {x42d40000 x42af3e25 xc0cd0d78 1 xc0cd0d78 1}\n       {x42d60000 x42a2fe52 xc0c44610 1 xc0c44610 1}\n       {x42d80000 x4296b563 xc0cb18a8 1 xc0cb18a8 1}\n       {x42da0000 x42899b3d xc0d2b028 1 xc0d2b028 1}\n       {x42dc0000 x4278bebc xc0d2004c 1 xc0d2004c 1}\n       {x42de0000 x425eb667 xc0bb197c 1 xc0bb197c 1}\n       {x42e00000 x4249f85d xc09d688c 1 xc09d688c 1}\n       {x42e20000 x42375c44 xc08c6dc4 1 xc08c6dc4 1}\n       {x42e40000 x4226dcec xc07d2158 1 xc07d2158 1}\n       {x42e60000 x4217b819 xc061bce0 1 xc061bce0 1}\n       {x42e80000 x420aa550 xc03bde08 1 xc03bde08 1}\n       {x42ea0000 x42003c58 xc03e81a0 1 xc03e81a0 1}\n       {x42ec0000 x41e5aa38 xc04d5dbc 1 xc04d5dbc 1}\n       {x42ee0000 x41cd2141 xc04f34fc 1 xc04f34fc 1}\n       {x42f00000 x41b1dcf9 xc068d544 1 xc068d544 1}\n       {x42f20000 x4192ebf0 xc078d0c0 1 xc078d0c0 1}\n       {x42f40000 x41675192 xc06fffc2 1 xc06fffc2 1}\n       {x42f60000 x412dd7ff xc06bb14e 1 xc06bb14e 1}\n       {x42f80000 x40e2f1d6 xc06e8dba 1 xc06e8dba 1}\n       {x42fa0000 x405a4487 xc062f1d6 1 xc062f1d6 1}\n       {x42fc0000 0 xc042c214 1 xc042c214 1}\n       {x42fe0000 xc02b3fa2 xc03e1df1 1 xc03e1df1 1}\n       {x43000000 xc0be1df1 xc0437fd9 1 xc0437fd9 1}\n       {x43010000 xc10c8fd5 xc02c22e5 1 xc02c22e5 1}\n       {x43020000 xc135206b xc019ee06 1 xc019ee06 1}\n       {x43030000 xc15986d8 xc0092fc0 1 xc0092fc0 1}\n       {x43040000 xc179b84b xbff26f98 1 xbff26f98 1}\n       {x43050000 xc18b115f xbff31794 1 xbff31794 1}\n       {x43060000 xc19b3f18 xbff268d0 1 xbff268d0 1}\n       {x43070000 xc1a95e79 xbfe71900 1 xbfe71900 1}\n       {x43080000 xc1b82238 xbf9a7598 1 xbf9a7598 1}\n       {x43090000 xc1bcad2c xbf241080 1 xbf241080 1}\n       {x430a0000 xc1c26340 xbf814960 1 xbf814960 1}\n       {x430b0000 xc1ccd658 xbfc2e4b8 1 xbfc2e4b8 1}\n       {x430c0000 xc1dabfd7 xbfbf0658 1 xbfbf0658 1}\n       {x430d0000 xc1e4b723 xbf857838 1 xbf857838 1}\n       {x430e0000 xc1eb6ede xbf8fbb10 1 xbf8fbb10 1}\n       {x430f0000 xc1f6ae85 xbf9aaa88 1 xbf9aaa88 1}\n       {x43100000 xc1fec42f xbf9c6038 1 xbf9c6038 1}\n       {x43110000 xc2051d46 xbf935048 1 xbf935048 1}\n       {x43120000 xc208971c xbf8a3090 1 xbf8a3090 1}\n       {x43130000 xc20dc04f xbfb671a0 1 xbfb671a0 1}\n       {x43140000 xc213fe36 xbfe67c80 1 xbfe67c80 1}\n       {x43150000 xc21c2817 xc03379a8 1 xc03379a8 1}\n       {x43160000 xc22a6d6b xc07cc30c 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke61 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44c4aff8 x4475b4dd 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke62 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44c4aff8 x4475b4dd 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3918dc8 0 1 x40dd91c0 1}\n       {x42580000 xc38df474 x40f7db80 1 x40f7db80 1}\n       {x425c0000 xc389ceec x40e63480 1 x40e63480 1}\n       {x42600000 xc386c2d0 x40fbc900 1 x40fbc900 1}\n       {x42640000 xc381f0a4 x411578e0 1 x411578e0 1}\n       {x42680000 xc37ad684 x410935c8 1 x410935c8 1}\n       {x426c0000 xc372ba8f x40fcdd80 1 x40fcdd80 1}\n       {x42700000 xc36b08ac x40fc1c70 1 x40fc1c70 1}\n       {x42740000 xc362f8c8 x40f01080 1 x40f01080 1}\n       {x42780000 xc35c07a4 x40f52190 1 x40f52190 1}\n       {x427c0000 xc353a6af x4105bf60 1 x4105bf60 1}\n       {x42800000 xc34b4fb8 x41016150 1 x41016150 1}\n       {x42820000 xc3437a85 x40eeea80 1 x40eeea80 1}\n       {x42840000 xc33c6110 x40d33f20 1 x40d33f20 1}\n       {x42860000 xc3364693 x40c0c140 1 x40c0c140 1}\n       {x42880000 xc33054fc x40b6d430 1 x40b6d430 1}\n       {x428a0000 xc32ad950 x40bc9420 1 x40bc9420 1}\n       {x428c0000 xc3248bba x40bd1230 1 x40bd1230 1}\n       {x428e0000 xc31f082d x40b14010 1 x40b14010 1}\n       {x42900000 xc31977b9 x40b0f4c0 1 x40b0f4c0 1}\n       {x42920000 xc313f8e1 x40af6b10 1 x40af6b10 1}\n       {x42940000 xc30e8108 x40adee30 1 x40adee30 1}\n       {x42960000 xc30919fe x40a243c0 1 x40a243c0 1}\n       {x42980000 xc3045ccc x4093a8f0 1 x4093a8f0 1}\n       {x429a0000 xc2ffbede x407d0f00 1 x407d0f00 1}\n       {x429c0000 xc2f8e8a8 x4043e060 1 x4043e060 1}\n       {x429e0000 xc2f380d8 x40125140 1 x40125140 1}\n       {x42a00000 xc2efc394 x3fd4e4c0 1 x3fd4e4c0 1}\n       {x42a20000 xc2ecd9b2 x402482a0 1 x402482a0 1}\n       {x42a40000 xc2e57b6a x403fb000 1 x403fb000 1}\n       {x42a60000 xc2e0deb2 x401eb6b0 1 x401eb6b0 1}\n       {x42a80000 xc2db8fff x401eecc0 1 x401eecc0 1}\n       {x42aa0000 xc2d6efe6 x40068990 1 x40068990 1}\n       {x42ac0000 xc2d32766 x3f98fa40 1 x3f98fa40 1}\n       {x42ae0000 xc2d22814 -}\n       {x42b00000 xc2d2ce72 xbea70880 1 xbea70880 1}\n       {x42b20000 xc2d37625 xbe8dc480 1 xbe8dc480 1}\n       {x42b40000 xc2d3e9fb xbebd7600 1 xbebd7600 1}\n       {x42b60000 xc2d4f111 xbebf8900 1 xbebf8900 1}\n       {x42b80000 xc2d5690d xbed2a000 1 xbed2a000 1}\n       {x42ba0000 xc2d69651 xbf2d4f40 1 xbf2d4f40 1}\n       {x42bc0000 xc2d81e4a xbf62da80 1 xbf62da80 1}\n       {x42be0000 xc2da21bb xbf7232c0 1 xbf7232c0 1}\n       {x42c00000 xc2dbe715 xbf7209c0 1 xbf7209c0 1}\n       {x42c20000 xc2dde9e2 -}\n       {x42c40000 xc2db7215 x3fca05a0 1 x3fca05a0 1}\n       {x42c60000 xc2d799b5 x3fdd2400 1 x3fdd2400 1}\n       {x42c80000 xc2d488f5 x3fbfbba0 1 x3fbfbba0 1}\n       {x42ca0000 xc2d19bd8 x3fd5e3a0 1 x3fd5e3a0 1}\n       {x42cc0000 xc2cdd9d8 x3fdd1740 1 x3fdd1740 1}\n       {x42ce0000 xc2cab31e x3fe94f40 1 x3fe94f40 1}\n       {x42d00000 xc2c68f5e x3ff94880 1 x3ff94880 1}\n       {x42d20000 xc2c2e8da x3fdc0280 1 x3fdc0280 1}\n       {x42d40000 xc2bfaf4a x3fe44140 1 x3fe44140 1}\n       {x42d60000 xc2bbc6d0 x3ffad040 1 x3ffad040 1}\n       {x42d80000 xc2b7d8c8 x401123e0 1 x401123e0 1}\n       {x42da0000 xc2b2b492 x401ebe70 1 x401ebe70 1}\n       {x42dc0000 xc2adece1 x4036a9e0 1 x4036a9e0 1}\n       {x42de0000 xc2a749f4 x4052f3b0 1 x4052f3b0 1}\n       {x42e00000 xc2a0bda6 x406391c0 1 x406391c0 1}\n       {x42e20000 xc29910d8 x407449b0 1 x407449b0 1}\n       {x42e40000 xc291790b x4081e998 1 x4081e998 1}\n       {x42e60000 xc288d3a5 x4089d308 1 x4089d308 1}\n       {x42e80000 xc2803eaa x4091a2dc 1 x4091a2dc 1}\n       {x42ea0000 xc26d3e93 x409fd0e0 1 x409fd0e0 1}\n       {x42ec0000 xc258891c x40aed08c 1 x40aed08c 1}\n       {x42ee0000 xc2418a70 x40b91638 1 x40b91638 1}\n       {x42f00000 xc22a438e x40c528ac 1 x40c528ac 1}\n       {x42f20000 xc2104045 x40da7d92 1 x40da7d92 1}\n       {x42f40000 xc1e74853 x40e811d4 1 x40e811d4 1}\n       {x42f60000 xc1ac77a0 x40ed8630 1 x40ed8630 1}\n       {x42f80000 xc1610a76 x40e706aa 1 x40e706aa 1}\n       {x42fa0000 xc0e3d12b x40e10a76 1 x40e10a76 1}\n       {x42fc0000 0 x40dff358 1 x40dff358 1}\n       {x42fe0000 x40dc1585 x40dc4ca3 1 x40dc4ca3 1}\n       {x43000000 x415c4ca3 x40d7fc12 1 x40d7fc12 1}\n       {x43010000 x41a3036a x40cb9b3f 1 x40cb9b3f 1}\n       {x43020000 x41d3f3f1 x40b61caa 1 x40b61caa 1}\n       {x43030000 x41fe11bf x40ab54d2 1 x40ab54d2 1}\n       {x43040000 x4214cf2d x40a4ae42 1 x40a4ae42 1}\n       {x43050000 x42283470 x4089267c 1 x4089267c 1}\n       {x43060000 x423718cc x406c6628 1 x406c6628 1}\n       {x43070000 x4245c135 x40672198 1 x40672198 1}\n       {x43080000 x4253fcff x404b1fb0 1 x404b1fb0 1}\n       {x43090000 x425f252b x40371920 1 x40371920 1}\n       {x430a0000 x426ae023 x40327198 1 x40327198 1}\n       {x430b0000 x4275735e x40250968 1 x40250968 1}\n       {x430c0000 x427f8150 x40191ad0 1 x40191ad0 1}\n       {x430d0000 x42844b5c x402c8450 1 x402c8450 1}\n       {x430e0000 x428a88ed x403b3e20 1 x403b3e20 1}\n       {x430f0000 x428fff3e x402cd010 1 x402cd010 1}\n       {x43100000 x429555ee x4030a750 1 x4030a750 1}\n       {x43110000 x429b09b3 x4024a9f0 1 x4024a9f0 1}\n       {x43120000 x429fa08d x40177e00 1 x40177e00 1}\n       {x43130000 x42a48193 x4011d1a0 1 x4011d1a0 1}\n       {x43140000 x42a8bda7 x40039c90 1 x40039c90 1}\n       {x43150000 x42acbb5c x3fb9c1a0 1 x3fb9c1a0 1}\n       {x43160000 x42ae8bb4 x3f228060 1 0 1}}\n      {{x42540000 x44564a1e 0 1 xc1173560 1}\n       {x42580000 x4453f7ed xc10f3a00 1 xc10f3a00 1}\n       {x425c0000 x4451d04e xc1124c60 1 xc1124c60 1}\n       {x42600000 x444f658a xc149a1a0 1 xc149a1a0 1}\n       {x42640000 x444b8341 xc17ccc60 1 xc17ccc60 1}\n       {x42680000 x44477f27 xc1834ed0 1 xc1834ed0 1}\n       {x426c0000 x44434e54 xc1731900 1 xc1731900 1}\n       {x42700000 x443fe65f xc15e6be0 1 xc15e6be0 1}\n       {x42740000 x443c5af5 xc1648dc0 1 xc1648dc0 1}\n       {x42780000 x4438c1f1 xc176d440 1 xc176d440 1}\n       {x427c0000 x4434a453 xc18c1d90 1 xc18c1d90 1}\n       {x42800000 x44300018 xc195b6b0 1 xc195b6b0 1}\n       {x42820000 x442b48e8 xc197df20 1 xc197df20 1}\n       {x42840000 x44268226 xc19c6ff0 1 xc19c6ff0 1}\n       {x42860000 x442181e9 xc194c880 1 xc194c880 1}\n       {x42880000 x441d359e xc184a410 1 xc184a410 1}\n       {x428a0000 x441937a8 xc187b170 1 xc187b170 1}\n       {x428c0000 x4414ba87 xc18f60c0 1 xc18f60c0 1}\n       {x428e0000 x4410419c xc1925ce0 1 xc1925ce0 1}\n       {x42900000 x440b94b9 xc19474f0 1 xc19474f0 1}\n       {x42920000 x4406fa4d xc19a77f0 1 xc19a77f0 1}\n       {x42940000 x4401ed3a xc19ef1a0 1 xc19ef1a0 1}\n       {x42960000 x43fa1666 xc197fdb0 1 xc197fdb0 1}\n       {x42980000 x43f0dabe xc1889678 1 xc1889678 1}\n       {x429a0000 x43e90397 xc16e4c10 1 xc16e4c10 1}\n       {x429c0000 x43e1f5fd xc1655950 1 xc1655950 1}\n       {x429e0000 x43daae02 xc167ac50 1 xc167ac50 1}\n       {x42a00000 x43d37b38 xc16828b0 1 xc16828b0 1}\n       {x42a20000 x43cc2b77 xc17bb0a0 1 xc17bb0a0 1}\n       {x42a40000 x43c3c02e xc1856b60 1 xc1856b60 1}\n       {x42a60000 x43bb7e0b xc187e5c8 1 xc187e5c8 1}\n       {x42a80000 x43b2c375 xc189ef58 1 xc189ef58 1}\n       {x42aa0000 x43aa4020 xc18416c8 1 xc18416c8 1}\n       {x42ac0000 x43a2409c xc178c060 1 xc178c060 1}\n       {x42ae0000 x439ab41a xc170e650 1 xc170e650 1}\n       {x42b00000 x43933237 xc1755a00 1 xc1755a00 1}\n       {x42b20000 x438b5e7a xc1818150 1 xc1818150 1}\n       {x42b40000 x4383020d xc1866d9c 1 xc1866d9c 1}\n       {x42b60000 x4375218d xc1867a5c 1 xc1867a5c 1}\n       {x42b80000 x43646583 xc186b7f4 1 xc186b7f4 1}\n       {x42ba0000 x43537390 xc1814518 1 xc1814518 1}\n       {x42bc0000 x4344143d xc16cfe40 1 xc16cfe40 1}\n       {x42be0000 x4335d3c8 xc15745e8 1 xc15745e8 1}\n       {x42c00000 x43292b80 xc13f3d00 1 xc13f3d00 1}\n       {x42c20000 x431dec28 xc12a5e20 1 xc12a5e20 1}\n       {x42c40000 x4313dfbc xc11cc808 1 xc11cc808 1}\n       {x42c60000 x430a5327 xc1211068 1 xc1211068 1}\n       {x42c80000 x42ff7b5e xc126ee28 1 xc126ee28 1}\n       {x42ca0000 x42eaeac4 xc11bb248 1 xc11bb248 1}\n       {x42cc0000 x42d88ecc xc11708e4 1 xc11708e4 1}\n       {x42ce0000 x42c5288b xc11a49f4 1 xc11a49f4 1}\n       {x42d00000 x42b1fc4f xc1123484 1 xc1123484 1}\n       {x42d20000 x42a09b6a xc1042f20 1 xc1042f20 1}\n       {x42d40000 x4290f087 xc0f2c930 1 xc0f2c930 1}\n       {x42d60000 x42824244 xc0e22f14 1 xc0e22f14 1}\n       {x42d80000 x42695549 xc0db684c 1 xc0db684c 1}\n       {x42da0000 x424daa75 xc0e208c8 1 xc0e208c8 1}\n       {x42dc0000 x4230d317 xc0d82014 1 xc0d82014 1}\n       {x42de0000 x4217a270 xc0b63bb0 1 xc0b63bb0 1}\n       {x42e00000 x4203442b xc092943a 1 xc092943a 1}\n       {x42e20000 x41e5fac3 xc075a438 1 xc075a438 1}\n       {x42e40000 x41c91f48 xc04cfeb8 1 xc04cfeb8 1}\n       {x42e60000 x41b2bb15 xc01e0e30 1 xc01e0e30 1}\n       {x42e80000 x41a19bbc xbfed4b98 1 xbfed4b98 1}\n       {x42ea0000 x419511a2 xbff09838 1 xbff09838 1}\n       {x42ec0000 x418388b5 xbffde350 1 xbffde350 1}\n       {x42ee0000 x416aaa70 xc0031b68 1 xc0031b68 1}\n       {x42f00000 x414583b6 xc019951a 1 xc019951a 1}\n       {x42f20000 x411ddfe3 xc01f2664 1 xc01f2664 1}\n       {x42f40000 x40ebe108 xc0120eb9 1 xc0120eb9 1}\n       {x42f60000 x40a9b10d xc0042dda 1 xc0042dda 1}\n       {x42f80000 x404f665d xbffe4552 1 xbffe4552 1}\n       {x42fa0000 x3faa3990 xbfcf665d 1 xbfcf665d 1}\n       {x42fc0000 0 xbfa6f7c8 1 xbfa6f7c8 1}\n       {x42fe0000 xbfa3b601 xbf9e808a 1 xbf9e808a 1}\n       {x43000000 xc01e808a xbf8893de 1 xbf8893de 1}\n       {x43010000 xc05a6edf xbf4f298c 1 xbf4f298c 1}\n       {x43020000 xc0830aa8 xbf0584ae 1 xbf0584ae 1}\n       {x43030000 xc08e989b -}\n       {x43040000 xc08bd79b x3ddc05c0 1 x3ddc05c0 1}\n       {x43050000 xc087b86d -}\n       {x43060000 xc08d5aa8 xbcc03000 1 xbcc03000 1}\n       {x43070000 xc08d9ab8 -}\n       {x43080000 xc07cebe1 x3ef5dbdc 1 x3ef5dbdc 1}\n       {x43090000 xc05dbe79 x3f236e4e 1 x3f236e4e 1}\n       {x430a0000 xc02b34ba x3f04ca5a 1 x3f04ca5a 1}\n       {x430b0000 xc01b594c x3e1a2ae0 1 x3e1a2ae0 1}\n       {x430c0000 xc017ef5e x3e23dca0 1 x3e23dca0 1}\n       {x430d0000 xbffd7a5e x3f1a5ab0 1 x3f1a5ab0 1}\n       {x430e0000 xbf95840c x3f532bab 1 x3f532bab 1}\n       {x430f0000 xbea93acc x3f1a897e 1 x3f1a897e 1}\n       {x43100000 x3d20ae4d x3f2a4f4e 1 x3f2a4f4e 1}\n       {x43110000 x3f80009b x3f40ade0 1 x3f40ade0 1}\n       {x43120000 x3fc5b352 x3f589879 1 x3f589879 1}\n       {x43130000 x402c4c8a x3f53a476 1 x3f53a476 1}\n       {x43140000 x404cabe4 x3e91b090 1 x3e91b090 1}\n       {x43150000 x4052bdea -}\n       {x43160000 x3f970762 xc04ad756 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke63 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438756a8 x435a08b4 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke64 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x438756a8 x435a08b4 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc30ebfd6 0 1 x40811ad8 1}\n       {x42580000 xc30a6666 x409f5450 1 x409f5450 1}\n       {x425c0000 xc304ca91 x40c58240 1 x40c58240 1}\n       {x42600000 xc2fc1c84 x40df68f0 1 x40df68f0 1}\n       {x42640000 xc2eda804 x40e2e630 1 x40e2e630 1}\n       {x42680000 xc2dfbfbe x40df8ab8 1 x40df8ab8 1}\n       {x426c0000 xc2d1b6ad x40e0d008 1 x40e0d008 1}\n       {x42700000 xc2c3a5bd x40e3eb40 1 x40e3eb40 1}\n       {x42740000 xc2b53945 x40eb6038 1 x40eb6038 1}\n       {x42780000 xc2a639b6 x40edfbc0 1 x40edfbc0 1}\n       {x427c0000 xc29779cd x40f8d9b8 1 x40f8d9b8 1}\n       {x42800000 xc2871e7f x410377b0 1 x410377b0 1}\n       {x42820000 xc26d37c2 x40f9c654 1 x40f9c654 1}\n       {x42840000 xc24fcb69 x40ea6f10 1 x40ea6f10 1}\n       {x42860000 xc2329bfe x40c7a870 1 x40c7a870 1}\n       {x42880000 xc21de14d x40d01d9a 1 x40d01d9a 1}\n       {x428a0000 xc1fd292f x40c183bc 1 x40c183bc 1}\n       {x428c0000 xc1db00bc x4091791c 1 x4091791c 1}\n       {x428e0000 xc1b46ca1 x409fb6c8 1 x409fb6c8 1}\n       {x42900000 xc18b2558 x40630926 1 x40630926 1}\n       {x42920000 xc17754af x3fbf9244 1 x3fbf9244 1}\n       {x42940000 xc166661f x3f5b4420 1 x3f5b4420 1}\n       {x42960000 xc15bec2b x3f31ec70 1 x3f31ec70 1}\n       {x42980000 xc1502891 x3f834474 1 x3f834474 1}\n       {x429a0000 xc13b1b0e x3fa8d198 1 x3fa8d198 1}\n       {x429c0000 xc125f42b x3f69d638 1 x3f69d638 1}\n       {x429e0000 xc11de047 x3ebe3810 1 x3ebe3810 1}\n       {x42a00000 xc11a10aa x3ecdd960 1 x3ecdd960 1}\n       {x42a20000 xc11102b1 x3f11aee0 1 x3f11aee0 1}\n       {x42a40000 xc107dace -}\n       {x42a60000 xc1111ac0 xbf151210 1 xbf151210 1}\n       {x42a80000 xc11a7d10 xbf6284d8 1 xbf6284d8 1}\n       {x42aa0000 xc12d6b5b -}\n       {x42ac0000 xc11e4373 -}\n       {x42ae0000 xc13ac086 xc00d6162 1 xc00d6162 1}\n       {x42b00000 xc164f424 xc0338be4 1 xc0338be4 1}\n       {x42b20000 xc18a433c xc03c436c 1 xc03c436c 1}\n       {x42b40000 xc1a18aed xc03401b8 1 xc03401b8 1}\n       {x42b60000 xc1b743aa xc0296e50 1 xc0296e50 1}\n       {x42b80000 xc1cbe681 xc027add0 1 xc027add0 1}\n       {x42ba0000 xc1e12f1e xc02bddc4 1 xc02bddc4 1}\n       {x42bc0000 xc1f6ddf2 xc02eae48 1 xc02eae48 1}\n       {x42be0000 xc2066d58 xc0327e20 1 xc0327e20 1}\n       {x42c00000 xc211bebd xc0385b30 1 xc0385b30 1}\n       {x42c20000 xc21d78be xbedcad00 1 xbedcad00 1}\n       {x42c40000 xc21e0bdc -}\n       {x42c60000 xc21d40f0 x3e935000 1 x3e935000 1}\n       {x42c80000 xc21bbe9c x3efe40c0 1 x3efe40c0 1}\n       {x42ca0000 xc21947ed x3f436cc0 1 x3f436cc0 1}\n       {x42cc0000 xc215a336 x3fca1590 1 x3fca1590 1}\n       {x42ce0000 xc20ca694 x3fbaf380 1 x3fbaf380 1}\n       {x42d00000 xc209f3fe -}\n       {x42d20000 xc20b0f85 xbe7dfc00 1 xbe7dfc00 1}\n       {x42d40000 xc20beff6 xbe82fd40 1 xbe82fd40 1}\n       {x42d60000 xc20d1b7a xbe48b600 1 xbe48b600 1}\n       {x42d80000 xc20d8162 xbe98dc00 1 xbe98dc00 1}\n       {x42da0000 xc20fc35e xbebc0540 1 xbebc0540 1}\n       {x42dc0000 xc2107177 -}\n       {x42de0000 xc2104bde x3da4ed00 1 x3da4ed00 1}\n       {x42e00000 xc20fcc8a x3e65b100 1 x3e65b100 1}\n       {x42e20000 xc20e807c x3efc3400 1 x3efc3400 1}\n       {x42e40000 xc20bdbba x3f2eda00 1 x3f2eda00 1}\n       {x42e60000 xc20909ac x3f6c4300 1 x3f6c4300 1}\n       {x42e80000 xc20479a2 x3f92a408 1 x3f92a408 1}\n       {x42ea0000 xc1ffbed7 x3fb22210 1 x3fb22210 1}\n       {x42ec0000 xc1f2af02 x4000d4b0 1 x4000d4b0 1}\n       {x42ee0000 xc1df89ab x40349ff8 1 x40349ff8 1}\n       {x42f00000 xc1c58704 x405a6850 1 x405a6850 1}\n       {x42f20000 xc1a8ef97 x406ef84c 1 x406ef84c 1}\n       {x42f40000 xc189c8f1 x4082f75b 1 x4082f75b 1}\n       {x42f60000 xc14ee7d3 x40890fad 1 x40890fad 1}\n       {x42f80000 xc10a8235 x4088426e 1 x4088426e 1}\n       {x42fa0000 xc08d4aca x408a8235 1 x408a8235 1}\n       {x42fc0000 0 x4094e733 1 x4094e733 1}\n       {x42fe0000 x409c839c x409b08ac 1 x409b08ac 1}\n       {x43000000 x411b08ac x409ab8b7 1 x409ab8b7 1}\n       {x43010000 x4168fa85 x409555de 1 x409555de 1}\n       {x43020000 x41982f45 x408cd9b5 1 x408cd9b5 1}\n       {x43030000 x41baea1d x408951d8 1 x408951d8 1}\n       {x43040000 x41dcd831 x407ea2f8 1 x407ea2f8 1}\n       {x43050000 x41fa92db x4059b594 1 x4059b594 1}\n       {x43060000 x4209a2cb x402c0a44 1 x402c0a44 1}\n       {x43070000 x4212cab6 x4008bd40 1 x4008bd40 1}\n       {x43080000 x421aba73 x3ff7ab20 1 x3ff7ab20 1}\n       {x43090000 x42224568 x3ff19100 1 x3ff19100 1}\n       {x430a0000 x4229d383 x3feae600 1 x3feae600 1}\n       {x430b0000 x4230f3c8 x3fe1bad0 1 x3fe1bad0 1}\n       {x430c0000 x4237ef30 x3fd251d0 1 x3fd251d0 1}\n       {x430d0000 x423e18e5 x3fd122f0 1 x3fd122f0 1}\n       {x430e0000 x4245015f x3fec6e00 1 x3fec6e00 1}\n       {x430f0000 x424cdfc5 x4009bab8 1 x4009bab8 1}\n       {x43100000 x425638b6 x401a6398 1 x401a6398 1}\n       {x43110000 x42602c38 x401c7a28 1 x401c7a28 1}\n       {x43120000 x4269c7fb x40191d00 1 x40191d00 1}\n       {x43130000 x42734fd8 x3ff5f370 1 x3ff5f370 1}\n       {x43140000 x42792732 x3f80c420 1 x3f80c420 1}\n       {x43150000 x427b5c1a -}\n       {x43160000 x42794d01 xbf45a960 1 0 1}}\n      {{x42540000 x44801b43 0 1 xc155ddf0 1}\n       {x42580000 x447cc14d xc16c2ee0 1 xc16c2ee0 1}\n       {x425c0000 x4478d50f xc1819a20 1 xc1819a20 1}\n       {x42600000 x4474a7ab xc184a9e0 1 xc184a9e0 1}\n       {x42640000 x44708a71 xc18373d0 1 xc18373d0 1}\n       {x42680000 x446c706e xc1855ef0 1 xc1855ef0 1}\n       {x426c0000 x44683482 xc18bd040 1 xc18bd040 1}\n       {x42700000 x4463b36a xc198e190 1 xc198e190 1}\n       {x42740000 x445ea669 xc1a9edb0 1 xc1a9edb0 1}\n       {x42780000 x4459148f xc1bb3270 1 xc1bb3270 1}\n       {x427c0000 x4452f342 xc1cca050 1 xc1cca050 1}\n       {x42800000 x444c4a8a xc1d9f700 1 xc1d9f700 1}\n       {x42820000 x444553d2 xc1dde080 1 xc1dde080 1}\n       {x42840000 x443e6c82 xc1dea680 1 xc1dea680 1}\n       {x42860000 x4437696a xc1da1a70 1 xc1da1a70 1}\n       {x42880000 x4430cadb xc1dbce40 1 xc1dbce40 1}\n       {x428a0000 x4429ac86 xc1d628b0 1 xc1d628b0 1}\n       {x428c0000 x44236850 xc1c732e0 1 xc1c732e0 1}\n       {x428e0000 x441d3958 xc1ca4a00 1 xc1ca4a00 1}\n       {x42900000 x4416c3b0 xc1c73cc0 1 xc1c73cc0 1}\n       {x42920000 x4410c58c xc1bb68e0 1 xc1bb68e0 1}\n       {x42940000 x440b0d22 xc1b5e6b0 1 xc1b5e6b0 1}\n       {x42960000 x44056721 xc1b3e5f8 1 xc1b3e5f8 1}\n       {x42980000 x43ff9d85 xc1af8818 1 xc1af8818 1}\n       {x429a0000 x43f4dd3f xc1a95650 1 xc1a95650 1}\n       {x429c0000 x43ea72bb xc1a3c360 1 xc1a3c360 1}\n       {x429e0000 x43e064d3 xc19fc200 1 xc19fc200 1}\n       {x42a00000 x43d67a7b xc19fc848 1 xc19fc848 1}\n       {x42a20000 x43cc6bca xc1a0dd28 1 xc1a0dd28 1}\n       {x42a40000 x43c25ed6 xc19b7f00 1 xc19b7f00 1}\n       {x42a60000 x43b8fbea xc1964450 1 xc1964450 1}\n       {x42a80000 x43af964c xc1994ca8 1 xc1994ca8 1}\n       {x42aa0000 x43a5d255 xc1a15b48 1 xc1a15b48 1}\n       {x42ac0000 x439b6ae3 xc1a07980 1 xc1a07980 1}\n       {x42ae0000 x4391c325 xc1978010 1 xc1978010 1}\n       {x42b00000 x43887ae1 xc1941818 1 xc1941818 1}\n       {x42b20000 x437e8044 xc1935c34 1 xc1935c34 1}\n       {x42b40000 x436c1eb5 xc1932c28 1 xc1932c28 1}\n       {x42b60000 x4359b53a xc1956bf4 1 xc1956bf4 1}\n       {x42b80000 x4346c3b8 xc194d838 1 xc194d838 1}\n       {x42ba0000 x43347f2c xc18e6b88 1 xc18e6b88 1}\n       {x42bc0000 x432328d6 xc185ad88 1 xc185ad88 1}\n       {x42be0000 x431313ca xc175a220 1 xc175a220 1}\n       {x42c00000 x43047492 xc15ef108 1 xc15ef108 1}\n       {x42c20000 x42ee6b52 xc14a6d74 1 xc14a6d74 1}\n       {x42c40000 x42d64dc7 xc14215b4 1 xc14215b4 1}\n       {x42c60000 x42bde5e5 xc14076c0 1 xc14076c0 1}\n       {x42c80000 x42a63017 xc13ee684 1 xc13ee684 1}\n       {x42ca0000 x428e2c44 xc1404160 1 xc1404160 1}\n       {x42cc0000 x426c3f7e xc126fc8c 1 xc126fc8c 1}\n       {x42ce0000 x4248da42 xc10a7c4c 1 xc10a7c4c 1}\n       {x42d00000 x42270158 xc10c25d4 1 xc10c25d4 1}\n       {x42d20000 x4202c758 xc10ae946 1 xc10ae946 1}\n       {x42d40000 x41c3196a xc0fb6afe 1 xc0fb6afe 1}\n       {x42d60000 x4187d931 xc0ea2220 1 xc0ea2220 1}\n       {x42d80000 x411c10b4 xc0d6c30d 1 xc0d6c30d 1}\n       {x42da0000 x4063bd53 xc0c1537a 1 xc0c1537a 1}\n       {x42dc0000 xc0150b1a xc0b258c3 1 xc0b258c3 1}\n       {x42de0000 xc0f2d2dc xc0925e8c 1 xc0925e8c 1}\n       {x42e00000 xc137a153 xc05377c2 1 xc05377c2 1}\n       {x42e20000 xc163254f xc0041382 1 xc0041382 1}\n       {x42e40000 xc179ab14 xbf8975dc 1 xbf8975dc 1}\n       {x42e60000 xc182c163 -}\n       {x42e80000 xc17b5450 x3f692240 1 x3f692240 1}\n       {x42ea0000 xc1685e7e x3faa8754 1 x3faa8754 1}\n       {x42ec0000 xc150b27b x3fb0de24 1 x3fb0de24 1}\n       {x42ee0000 xc13c26f5 x3f956bf4 1 x3f956bf4 1}\n       {x42f00000 xc12b577e x3f84a604 1 x3f84a604 1}\n       {x42f20000 xc11afd74 x3f88ec90 1 x3f88ec90 1}\n       {x42f40000 xc1091c5a x3fa66f6e 1 x3fa66f6e 1}\n       {x42f60000 xc0e2c331 x3fd888d2 1 x3fd888d2 1}\n       {x42f80000 xc0a5f44b x4008e5aa 1 x4008e5aa 1}\n       {x42fa0000 xc033bb0d x4025f44b 1 x4025f44b 1}\n       {x42fc0000 0 x403efec0 1 x403efec0 1}\n       {x42fe0000 x404a4272 x4043d9ba 1 x4043d9ba 1}\n       {x43000000 x40c3d9ba x403d78a5 1 x403d78a5 1}\n       {x43010000 x41114cef x40458a06 1 x40458a06 1}\n       {x43020000 x4144b1e0 x4057c078 1 x4057c078 1}\n       {x43030000 x417d2d2b x4063fa80 1 x4063fa80 1}\n       {x43040000 x419b5790 x406bf4c6 1 x406bf4c6 1}\n       {x43050000 x41b993c7 x408a9eb0 1 x408a9eb0 1}\n       {x43060000 x41e0a6e8 x40bebc22 1 x40bebc22 1}\n       {x43070000 x420c78ec x40c6f388 1 x40c6f388 1}\n       {x43080000 x42221056 x40abb3c4 1 x40abb3c4 1}\n       {x43090000 x423765dd x40ace7bc 1 x40ace7bc 1}\n       {x430a0000 x424d4a45 x40ac04cc 1 x40ac04cc 1}\n       {x430b0000 x42626710 x40a89ae0 1 x40a89ae0 1}\n       {x430c0000 x427770fd x40b15c20 1 x40b15c20 1}\n       {x430d0000 x42875f0c x40c48ec4 1 x40c48ec4 1}\n       {x430e0000 x42944a57 x40ce6bd8 1 x40ce6bd8 1}\n       {x430f0000 x42a12c87 x40c8a9c0 1 x40c8a9c0 1}\n       {x43100000 x42ad5f8f x40be0d48 1 x40be0d48 1}\n       {x43110000 x42b8ee30 x40b739c0 1 x40b739c0 1}\n       {x43120000 x42c446c7 x40af65a8 1 x40af65a8 1}\n       {x43130000 x42cedae5 x40a022f0 1 x40a022f0 1}\n       {x43140000 x42d84b25 x408ec008 1 x408ec008 1}\n       {x43150000 x42e0b2e6 x404f9e70 1 x404f9e70 1}\n       {x43160000 x42e5450c x3fe72fd0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke65 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b454c5 x447edc08 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke66 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44b454c5 x447edc08 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c167b2 0 1 x40f0bc20 1}\n       {x42580000 xc3bd854c x41042a20 1 x41042a20 1}\n       {x425c0000 xc3b92510 x410c22f0 1 x410c22f0 1}\n       {x42600000 xc3b4c31d x41197770 1 x41197770 1}\n       {x42640000 xc3af8d99 x41302660 1 x41302660 1}\n       {x42680000 xc3a9c0b7 x412a9ee0 1 x412a9ee0 1}\n       {x426c0000 xc3a4e3ab x4127c5e0 1 x4127c5e0 1}\n       {x42700000 xc39f4459 x4134c560 1 x4134c560 1}\n       {x42740000 xc3999755 x412e37d0 1 x412e37d0 1}\n       {x42780000 xc39460dc x4120b450 1 x4120b450 1}\n       {x427c0000 xc38f8c10 x411006a0 1 x411006a0 1}\n       {x42800000 xc38b6072 x410869b0 1 x410869b0 1}\n       {x42820000 xc3870575 x41075430 1 x41075430 1}\n       {x42840000 xc382eb2f x41024a90 1 x41024a90 1}\n       {x42860000 xc37dc198 x41062b70 1 x41062b70 1}\n       {x42880000 xc37510f0 x4104b900 1 x4104b900 1}\n       {x428a0000 xc36d2a78 x40f12e30 1 x40f12e30 1}\n       {x428c0000 xc365fe0d x40d759d0 1 x40d759d0 1}\n       {x428e0000 xc35fb4db x40c9d8e0 1 x40c9d8e0 1}\n       {x42900000 xc359607f x40e485b0 1 x40e485b0 1}\n       {x42920000 xc3516c80 x40f05890 1 x40f05890 1}\n       {x42940000 xc34a5af6 x40d135e0 1 x40d135e0 1}\n       {x42960000 xc3445922 x40adfd80 1 x40adfd80 1}\n       {x42980000 xc33f7b1e x409e3c30 1 x409e3c30 1}\n       {x429a0000 xc33a755f x409403e0 1 x409403e0 1}\n       {x429c0000 xc3363ae0 x40735ac0 1 x40735ac0 1}\n       {x429e0000 xc332da89 x406bae20 1 x406bae20 1}\n       {x42a00000 xc32edd6f x408027c0 1 x408027c0 1}\n       {x42a20000 xc32ad80d x40a055e0 1 x40a055e0 1}\n       {x42a40000 xc324d811 x40a92da0 1 x40a92da0 1}\n       {x42a60000 xc3204533 x409c3f10 1 x409c3f10 1}\n       {x42a80000 xc31b1420 x40a84ab0 1 x40a84ab0 1}\n       {x42aa0000 xc315c088 x40980940 1 x40980940 1}\n       {x42ac0000 xc311938c x4044ad20 1 x4044ad20 1}\n       {x42ae0000 xc30f9b1f x3fd438c0 1 x3fd438c0 1}\n       {x42b00000 xc30e42a9 x3f8a8f00 1 x3f8a8f00 1}\n       {x42b20000 xc30d70e3 x3f1f2600 1 x3f1f2600 1}\n       {x42b40000 xc30d045d x3ecd6000 1 x3ecd6000 1}\n       {x42b60000 xc30ca383 x3f2a4200 1 x3f2a4200 1}\n       {x42b80000 xc30bafd9 x3f3d7f80 1 x3f3d7f80 1}\n       {x42ba0000 xc30b2884 x3f1fc100 1 x3f1fc100 1}\n       {x42bc0000 xc30a7057 -}\n       {x42be0000 xc30a79a3 xbd544800 1 xbd544800 1}\n       {x42c00000 xc30a8ae0 xbe472200 1 xbe472200 1}\n       {x42c20000 xc30add34 -}\n       {x42c40000 xc3085bcf x40283460 1 x40283460 1}\n       {x42c60000 xc3059b91 x40411b00 1 x40411b00 1}\n       {x42c80000 xc30252f7 x40455190 1 x40455190 1}\n       {x42ca0000 xc2fee209 x4031a150 1 x4031a150 1}\n       {x42cc0000 xc2f98bd9 x403b8c60 1 x403b8c60 1}\n       {x42ce0000 xc2f32943 x40326860 1 x40326860 1}\n       {x42d00000 xc2ee6553 x40187d50 1 x40187d50 1}\n       {x42d20000 xc2e9a16e x4008d900 1 x4008d900 1}\n       {x42d40000 xc2e5d7c3 x400735b0 1 x400735b0 1}\n       {x42d60000 xc2e12e13 x40148930 1 x40148930 1}\n       {x42d80000 xc2dc8f30 x402439f0 1 x402439f0 1}\n       {x42da0000 xc2d6ea74 x40475290 1 x40475290 1}\n       {x42dc0000 xc2d01a07 x407977a0 1 x407977a0 1}\n       {x42de0000 xc2c752fa x4085e1d8 1 x4085e1d8 1}\n       {x42e00000 xc2bf5dcc x40883de0 1 x40883de0 1}\n       {x42e20000 xc2b64b3e x4096d950 1 x4096d950 1}\n       {x42e40000 xc2ac82a2 x409c5f88 1 x409c5f88 1}\n       {x42e60000 xc2a2bf4d x40a3b8d0 1 x40a3b8d0 1}\n       {x42e80000 xc2980b88 x40a9c040 1 x40a9c040 1}\n       {x42ea0000 xc28d8745 x40bdccd0 1 x40bdccd0 1}\n       {x42ec0000 xc28051ee x40db2fa0 1 x40db2fa0 1}\n       {x42ee0000 xc26442a2 x40de02b4 1 x40de02b4 1}\n       {x42f00000 xc249232f x40ec9bd4 1 x40ec9bd4 1}\n       {x42f20000 xc2291bad x41023962 1 x41023962 1}\n       {x42f40000 xc208067e x4109a24d 1 x4109a24d 1}\n       {x42f60000 xc1c8950d x410a94c8 1 x410a94c8 1}\n       {x42f80000 xc1857834 x41070a1a 1 x41070a1a 1}\n       {x42fa0000 xc10315e6 x41057834 1 x41057834 1}\n       {x42fc0000 0 x410701e4 1 x410701e4 1}\n       {x42fe0000 x410aede1 x410552f3 1 x410552f3 1}\n       {x43000000 x418552f3 x40f95f2d 1 x40f95f2d 1}\n       {x43010000 x41c22687 x40e73572 1 x40e73572 1}\n       {x43020000 x41f8edac x40ce27de 1 x40ce27de 1}\n       {x43030000 x42149d3b x40bf8874 1 x40bf8874 1}\n       {x43040000 x422c58f3 x40b4bf58 1 x40b4bf58 1}\n       {x43050000 x4241cd11 x409c9f90 1 x409c9f90 1}\n       {x43060000 x425380d7 x40892708 1 x40892708 1}\n       {x43070000 x426416d3 x407c3578 1 x407c3578 1}\n       {x43080000 x42730786 x405aea38 1 x405aea38 1}\n       {x43090000 x427f741a x40473720 1 x40473720 1}\n       {x430a0000 x4285f735 x4029ac90 1 x4029ac90 1}\n       {x430b0000 x428a54d6 x40128fe0 1 x40128fe0 1}\n       {x430c0000 x428f2033 x400eb620 1 x400eb620 1}\n       {x430d0000 x42934038 x3fe21920 1 x3fe21920 1}\n       {x430e0000 x429630fc x3fe2e6e0 1 x3fe2e6e0 1}\n       {x430f0000 x429a576f x40105240 1 x40105240 1}\n       {x43100000 x429f3620 x401069a0 1 x401069a0 1}\n       {x43110000 x42a35e09 x400952f0 1 x400952f0 1}\n       {x43120000 x42a7cb4f x3ff76880 1 x3ff76880 1}\n       {x43130000 x42ab194d x3fe89a20 1 x3fe89a20 1}\n       {x43140000 x42af1020 x3ff569c0 1 x3ff569c0 1}\n       {x43150000 x42b2c49b x3fd46980 1 x3fd46980 1}\n       {x43160000 x42b5b36c x3faf59a0 1 0 1}}\n      {{x42540000 x446abf27 0 1 xc11fd8f0 1}\n       {x42580000 x44683aa0 xc123b360 1 xc123b360 1}\n       {x425c0000 x4465a18c xc13fd600 1 xc13fd600 1}\n       {x42600000 x44623bf0 xc171a500 1 xc171a500 1}\n       {x42640000 x445e1464 xc1883170 1 xc1883170 1}\n       {x42680000 x4459b8d9 xc189afa0 1 xc189afa0 1}\n       {x426c0000 x4455796a xc1835810 1 xc1835810 1}\n       {x42700000 x44518358 xc182a860 1 xc182a860 1}\n       {x42740000 x444d4ee4 xc18b0680 1 xc18b0680 1}\n       {x42780000 x4448d2f0 xc191fa70 1 xc191fa70 1}\n       {x427c0000 x44442f3d xc19489d0 1 xc19489d0 1}\n       {x42800000 x443f8a53 xc19dbcd0 1 xc19dbcd0 1}\n       {x42820000 x443a5370 xc1a83db0 1 xc1a83db0 1}\n       {x42840000 x44350678 xc1af48e0 1 xc1af48e0 1}\n       {x42860000 x442f5ee2 xc1ba1dd0 1 xc1ba1dd0 1}\n       {x42880000 x4429649b xc1b44ea0 1 xc1b44ea0 1}\n       {x428a0000 x442419f8 xc1a76760 1 xc1a76760 1}\n       {x428c0000 x441eee25 xc1a07080 1 xc1a07080 1}\n       {x428e0000 x441a12f0 xc19d3c30 1 xc19d3c30 1}\n       {x42900000 x44151a62 xc1ab3e50 1 xc1ab3e50 1}\n       {x42920000 x440f5f0b xc1b6c0f0 1 xc1b6c0f0 1}\n       {x42940000 x4409ae53 xc1abfbc0 1 xc1abfbc0 1}\n       {x42960000 x44049f4f xc19a7020 1 xc19a7020 1}\n       {x42980000 x44000751 xc189dd40 1 xc189dd40 1}\n       {x429a0000 x43f802f6 xc178e340 1 xc178e340 1}\n       {x429c0000 x43f0806e xc16e08c0 1 xc16e08c0 1}\n       {x429e0000 x43e9226a xc177a120 1 xc177a120 1}\n       {x42a00000 x43e1065c xc18a68b8 1 xc18a68b8 1}\n       {x42a20000 x43d7d553 xc197d280 1 xc197d280 1}\n       {x42a40000 x43ce0c0c xc1957880 1 xc1957880 1}\n       {x42a60000 x43c52643 xc197b8b8 1 xc197b8b8 1}\n       {x42a80000 x43bb14f5 xc19fa1d0 1 xc19fa1d0 1}\n       {x42aa0000 x43b13209 xc1937b80 1 xc1937b80 1}\n       {x42ac0000 x43a8a585 xc1862018 1 xc1862018 1}\n       {x42ae0000 x43a06e06 xc1848968 1 xc1848968 1}\n       {x42b00000 x43981458 xc1839c30 1 xc1839c30 1}\n       {x42b20000 x438ffa80 xc1883720 1 xc1883720 1}\n       {x42b40000 x43870d74 xc195b104 1 xc195b104 1}\n       {x42b60000 x437a88bf xc19b2800 1 xc19b2800 1}\n       {x42b80000 x436750e8 xc1973140 1 xc1973140 1}\n       {x42ba0000 x4354bc6f xc18fccf4 1 xc18fccf4 1}\n       {x42bc0000 x43435dab xc18487d8 1 xc18487d8 1}\n       {x42be0000 x43339a79 xc167aa88 1 xc167aa88 1}\n       {x42c00000 x4326685a xc145ee70 1 xc145ee70 1}\n       {x42c20000 x431adcab xc1301698 1 xc1301698 1}\n       {x42c40000 x43106587 xc1301550 1 xc1301550 1}\n       {x42c60000 x4304da01 xc1400538 1 xc1400538 1}\n       {x42c80000 x42f0c9c0 xc13df990 1 xc13df990 1}\n       {x42ca0000 x42da359e xc12e7fb0 1 xc12e7fb0 1}\n       {x42cc0000 x42c529d4 xc13335d0 1 xc13335d0 1}\n       {x42ce0000 x42ad682a xc130c190 1 xc130c190 1}\n       {x42d00000 x4298f970 xc1189904 1 xc1189904 1}\n       {x42d20000 x428741e9 xc105d5a8 1 xc105d5a8 1}\n       {x42d40000 x426f080c xc0f7251c 1 xc0f7251c 1}\n       {x42d60000 x4250ba8b xc0e9d35c 1 xc0e9d35c 1}\n       {x42d80000 x42349335 xc0e752ec 1 xc0e752ec 1}\n       {x42da0000 x4216e5d0 xc0eafc2c 1 xc0eafc2c 1}\n       {x42dc0000 x41f3a854 xc0db8f7e 1 xc0db8f7e 1}\n       {x42de0000 x41c003e1 xc0b2f7a4 1 xc0b2f7a4 1}\n       {x42e00000 x419a2c82 xc08773b9 1 xc08773b9 1}\n       {x42e20000 x41789409 xc0558b9e 1 xc0558b9e 1}\n       {x42e40000 x41499335 xc0287f9e 1 xc0287f9e 1}\n       {x42e60000 x4124543a xbfda4918 1 xbfda4918 1}\n       {x42e80000 x411300ef xbf802978 1 xbf802978 1}\n       {x42ea0000 x410449dc xbf826124 1 xbf826124 1}\n       {x42ec0000 x40e4d14c xbf7d4eb4 1 xbf7d4eb4 1}\n       {x42ee0000 x40c9400b xbf7642f8 1 xbf7642f8 1}\n       {x42f00000 x40a7408e xbfa1f98d 1 xbfa1f98d 1}\n       {x42f20000 x40708689 xbfb65fb7 1 xbfb65fb7 1}\n       {x42f40000 x40182165 xbf9f9e13 1 xbf9f9e13 1}\n       {x42f60000 x3fa1d0ec xbf651c70 1 xbf651c70 1}\n       {x42f80000 x3f164cb5 xbf1ca19f 1 xbf1ca19f 1}\n       {x42fa0000 x3d25e9ae xbdf8de85 1 xbdf8de85 1}\n       {x42fc0000 0 -}\n       {x42fe0000 x3e7e4124 x3e8cc82e 1 x3e8cc82e 1}\n       {x43000000 x3f0cc82e x3ebeb7cd 1 x3ebeb7cd 1}\n       {x43010000 x3f7e4816 x3f205ed4 1 x3f205ed4 1}\n       {x43020000 x3fe6c2eb x3f641efd 1 x3f641efd 1}\n       {x43030000 x4031a184 x3f90b978 1 x3f90b978 1}\n       {x43040000 x40820d77 x3f887600 1 x3f887600 1}\n       {x43050000 x409d0bc2 x3f3768b8 1 x3f3768b8 1}\n       {x43060000 x40afe7a5 x3f27d538 1 x3f27d538 1}\n       {x43070000 x40c70110 x3f75eb94 1 x3f75eb94 1}\n       {x43080000 x40ed628a x3faa5144 1 x3faa5144 1}\n       {x43090000 x410e14d9 x3fdb36c8 1 x3fdb36c8 1}\n       {x430a0000 x412d7ef7 x3fba93ac 1 x3fba93ac 1}\n       {x430b0000 x413cb9c4 x3f619080 1 x3f619080 1}\n       {x430c0000 x4149b107 x3f7927a0 1 x3f7927a0 1}\n       {x430d0000 x415bdeb8 x3f9a7808 1 x3f9a7808 1}\n       {x430e0000 x41704f09 x3fa9dc78 1 x3fa9dc78 1}\n       {x430f0000 x41832aeb x3faae684 1 x3faae684 1}\n       {x43100000 x418d8455 x3fa8c710 1 x3fa8c710 1}\n       {x43110000 x419843cd x3fa4caa8 1 x3fa4caa8 1}\n       {x43120000 x41a21daa x3f8bf648 1 x3f8bf648 1}\n       {x43130000 x41a9c296 x3f50ed20 1 x3f50ed20 1}\n       {x43140000 x41af2c7c x3d84d800 1 x3d84d800 1}\n       {x43150000 x41af58c4 -}\n       {x43160000 x41a267af xc01b4cfc 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke67 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x447839db x43ff076d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke68 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x447839db x43ff076d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3d7890c 0 1 x40cce890 1}\n       {x42580000 xc3d4333e x40e68960 1 x40e68960 1}\n       {x425c0000 xc3d054c1 x41061680 1 x41061680 1}\n       {x42600000 xc3cbd1d6 x411fde10 1 x411fde10 1}\n       {x42640000 xc3c656e0 x413008a0 1 x413008a0 1}\n       {x42680000 xc3c0d14c x412d5060 1 x412d5060 1}\n       {x426c0000 xc3bb81da x4129a6a0 1 x4129a6a0 1}\n       {x42700000 xc3b636e2 x412bae50 1 x412bae50 1}\n       {x42740000 xc3b0c6f5 x413146d0 1 x413146d0 1}\n       {x42780000 xc3ab2275 x412c1d80 1 x412c1d80 1}\n       {x427c0000 xc3a6051d x41279310 1 x41279310 1}\n       {x42800000 xc3a0a944 x4124b310 1 x4124b310 1}\n       {x42820000 xc39bb9ec x410d9700 1 x410d9700 1}\n       {x42840000 xc397cfd4 x40fc5280 1 x40fc5280 1}\n       {x42860000 xc393d758 x4104dd10 1 x4104dd10 1}\n       {x42880000 xc38f8203 x4106d5a0 1 x4106d5a0 1}\n       {x428a0000 xc38b69fe x40fc0da0 1 x40fc0da0 1}\n       {x428c0000 xc387a196 x40e7f000 1 x40e7f000 1}\n       {x428e0000 xc3842a7e x40e279e0 1 x40e279e0 1}\n       {x42900000 xc3808dc7 x40f12070 1 x40f12070 1}\n       {x42920000 xc37942f5 x40ee88f0 1 x40ee88f0 1}\n       {x42940000 xc37232ff x40cea9b0 1 x40cea9b0 1}\n       {x42960000 xc36c585a x40aa8a00 1 x40aa8a00 1}\n       {x42980000 xc3678a5f x409679d0 1 x409679d0 1}\n       {x429a0000 xc362f0bd x408aec40 1 x408aec40 1}\n       {x429c0000 xc35edb9b x407dc440 1 x407dc440 1}\n       {x429e0000 xc35b029b x407ddbc0 1 x407ddbc0 1}\n       {x42a00000 xc356ecbd x408b6940 1 x408b6940 1}\n       {x42a20000 xc3524c07 x40a53730 1 x40a53730 1}\n       {x42a40000 xc34c994a x40c43910 1 x40c43910 1}\n       {x42a60000 xc3460876 x40bb4010 1 x40bb4010 1}\n       {x42a80000 xc340e549 x40a47710 1 x40a47710 1}\n       {x42aa0000 xc33bc105 x409ea2c0 1 x409ea2c0 1}\n       {x42ac0000 xc336fb1d x40892790 1 x40892790 1}\n       {x42ae0000 xc3332e8c x405288e0 1 x405288e0 1}\n       {x42b00000 xc33066d6 x401a5980 1 x401a5980 1}\n       {x42b20000 xc32e5bc0 x3ff36440 1 x3ff36440 1}\n       {x42b40000 xc32c9945 x3fed0440 1 x3fed0440 1}\n       {x42b60000 xc32aa7af x40022920 1 x40022920 1}\n       {x42b80000 xc32887fc x40035960 1 x40035960 1}\n       {x42ba0000 xc3268ce4 x3fffdc00 1 x3fffdc00 1}\n       {x42bc0000 xc324888c x40016e60 1 x40016e60 1}\n       {x42be0000 xc3228171 x3ff9d480 1 x3ff9d480 1}\n       {x42c00000 xc320a13a x3ff3c4c0 1 x3ff3c4c0 1}\n       {x42c20000 xc31eb25e x4056f0c0 1 x4056f0c0 1}\n       {x42c40000 xc319e9b4 x409fa860 1 x409fa860 1}\n       {x42c60000 xc314b7d8 x40a8c1f0 1 x40a8c1f0 1}\n       {x42c80000 xc30f5d95 x40a90a40 1 x40a90a40 1}\n       {x42ca0000 xc30a2734 x40ab8f40 1 x40ab8f40 1}\n       {x42cc0000 xc304a4a1 x40aa4e80 1 x40aa4e80 1}\n       {x42ce0000 xc2ff0498 x409c7db0 1 x409c7db0 1}\n       {x42d00000 xc2f5b98c x4088b190 1 x4088b190 1}\n       {x42d20000 xc2edee66 x407b1bd0 1 x407b1bd0 1}\n       {x42d40000 xc2e607cf x407d8480 1 x407d8480 1}\n       {x42d60000 xc2de161e x407b96a0 1 x407b96a0 1}\n       {x42d80000 xc2d64e65 x40773880 1 x40773880 1}\n       {x42da0000 xc2cea296 x40792f40 1 x40792f40 1}\n       {x42dc0000 xc2c6bb71 x40814d80 1 x40814d80 1}\n       {x42de0000 xc2be78e6 x4088efb0 1 x4088efb0 1}\n       {x42e00000 xc2b59d7b x40911b20 1 x40911b20 1}\n       {x42e20000 xc2ac5582 x4096fde0 1 x4096fde0 1}\n       {x42e40000 xc2a2bdbf x4099e818 1 x4099e818 1}\n       {x42e60000 xc299187f x409e5ea0 1 x409e5ea0 1}\n       {x42e80000 xc28ef1eb x40a7bb00 1 x40a7bb00 1}\n       {x42ea0000 xc284211f x40af2658 1 x40af2658 1}\n       {x42ec0000 xc2721a40 x40c2933c 1 x40c2933c 1}\n       {x42ee0000 xc2579d6f x40ce5b60 1 x40ce5b60 1}\n       {x42f00000 xc23e8368 x40e5c9f0 1 x40e5c9f0 1}\n       {x42f20000 xc21e2af3 x40f7e4d4 1 x40f7e4d4 1}\n       {x42f40000 xc2008a33 x41006819 1 x41006819 1}\n       {x42f60000 xc1bbedcd x40fe4452 1 x40fe4452 1}\n       {x42f80000 xc181f23d x40fb3bd0 1 x40fb3bd0 1}\n       {x42fa0000 xc0f93f95 x4101f23d 1 x4101f23d 1}\n       {x42fc0000 0 x41026863 1 x41026863 1}\n       {x42fe0000 x410830fb x41052034 1 x41052034 1}\n       {x43000000 x41852034 x40ff6caf 1 x40ff6caf 1}\n       {x43010000 x41c3ced5 x40f47ce8 1 x40f47ce8 1}\n       {x43020000 x41ff5ea8 x40e6b4b6 1 x40e6b4b6 1}\n       {x43030000 x421b9498 x40d73a3c 1 x40d73a3c 1}\n       {x43040000 x42357de3 x40c5a51c 1 x40c5a51c 1}\n       {x43050000 x424cfddf x40b3c050 1 x40b3c050 1}\n       {x43060000 x42626df7 x409f80b0 1 x409f80b0 1}\n       {x43070000 x4274de0b x4082975c 1 x4082975c 1}\n       {x43080000 x428189e7 x40619268 1 x40619268 1}\n       {x43090000 x4288882c x4054a6f0 1 x4054a6f0 1}\n       {x430a0000 x428ed456 x4042c7f0 1 x4042c7f0 1}\n       {x430b0000 x4294b4ab x4031f6e0 1 x4031f6e0 1}\n       {x430c0000 x4299f3c4 x40225c10 1 x40225c10 1}\n       {x430d0000 x429eda6c x402053b0 1 x402053b0 1}\n       {x430e0000 x42a3f8ff x402be700 1 x402be700 1}\n       {x430f0000 x42a998dc x4035be20 1 x4035be20 1}\n       {x43100000 x42af54e1 x403d8ed0 1 x403d8ed0 1}\n       {x43110000 x42b571c9 x403d3250 1 x403d3250 1}\n       {x43120000 x42bb2806 x403454e0 1 x403454e0 1}\n       {x43130000 x42c0b717 x4020ff00 1 x4020ff00 1}\n       {x43140000 x42c537f6 x3fe4e3a0 1 x3fe4e3a0 1}\n       {x43150000 x42c7de34 x3f55d780 1 x3f55d780 1}\n       {x43160000 x42c88f54 x3dcf6200 1 0 1}}\n      {{x42540000 x44877f33 0 1 xc15de8e0 1}\n       {x42580000 x4485b1f6 xc17809c0 1 xc17809c0 1}\n       {x425c0000 x44839f0c xc186ecc0 1 xc186ecc0 1}\n       {x42600000 x44817a90 xc1883160 1 xc1883160 1}\n       {x42640000 x447ebb02 xc1847e30 1 xc1847e30 1}\n       {x42680000 x447aad3d xc1874940 1 xc1874940 1}\n       {x426c0000 x4476466e xc18811e0 1 xc18811e0 1}\n       {x42700000 x44722c1f xc18cbd70 1 xc18cbd70 1}\n       {x42740000 x446d7a97 xc19dbfb0 1 xc19dbfb0 1}\n       {x42780000 x44685024 xc1ab15d0 1 xc1ab15d0 1}\n       {x427c0000 x4462c93a xc1bea5f0 1 xc1bea5f0 1}\n       {x42800000 x445c65c5 xc1cb5cc0 1 xc1cb5cc0 1}\n       {x42820000 x4456136e xc1c7ff10 1 xc1c7ff10 1}\n       {x42840000 x444fe5d4 xc1c6fde0 1 xc1c6fde0 1}\n       {x42860000 x4449a390 xc1cf6d90 1 xc1cf6d90 1}\n       {x42880000 x4442eefb xc1ce6ac0 1 xc1ce6ac0 1}\n       {x428a0000 x443cbce4 xc1c8d8d0 1 xc1c8d8d0 1}\n       {x428c0000 x4436616e xc1cfe350 1 xc1cfe350 1}\n       {x428e0000 x442fbeaf xc1d67e10 1 xc1d67e10 1}\n       {x42900000 x4428f98d xc1ddd4f0 1 xc1ddd4f0 1}\n       {x42920000 x4421e160 xc1dc1d90 1 xc1dc1d90 1}\n       {x42940000 x441b37b4 xc1d17990 1 xc1d17990 1}\n       {x42960000 x4414c9c7 xc1c8e700 1 xc1c8e700 1}\n       {x42980000 x440ea944 xc1bca580 1 xc1bca580 1}\n       {x429a0000 x4408ff6f xc1b19450 1 xc1b19450 1}\n       {x429c0000 x44038fff xc1ac6d90 1 xc1ac6d90 1}\n       {x429e0000 x43fc712c xc1a9c898 1 xc1a9c898 1}\n       {x42a00000 x43f1e6eb xc1a8b820 1 xc1a8b820 1}\n       {x42a20000 x43e75a28 xc1a86898 1 xc1a86898 1}\n       {x42a40000 x43dcd9d8 xc1a397c0 1 xc1a397c0 1}\n       {x42a60000 x43d2e730 xc1a339b0 1 xc1a339b0 1}\n       {x42a80000 x43c872a2 xc1a6a380 1 xc1a6a380 1}\n       {x42aa0000 x43be12c0 xc1a5a350 1 xc1a5a350 1}\n       {x42ac0000 x43b3be38 xc1a52f70 1 xc1a52f70 1}\n       {x42ae0000 x43a96cd2 xc1a3c728 1 xc1a3c728 1}\n       {x42b00000 x439f4553 xc1a380a8 1 xc1a380a8 1}\n       {x42b20000 x4394fcbd xc1a57d10 1 xc1a57d10 1}\n       {x42b40000 x438a95b1 xc1a7c088 1 xc1a7c088 1}\n       {x42b60000 x438004ac xc1aa5bac 1 xc1aa5bac 1}\n       {x42b80000 x436a9477 xc1a89fbc 1 xc1a89fbc 1}\n       {x42ba0000 x4355e169 xc1a258bc 1 xc1a258bc 1}\n       {x42bc0000 x4341fe48 xc199ea38 1 xc199ea38 1}\n       {x42be0000 x432f66db xc18ef180 1 xc18ef180 1}\n       {x42c00000 x431e41e8 xc183f66c 1 xc183f66c 1}\n       {x42c20000 x430e6940 xc17284d8 1 xc17284d8 1}\n       {x42c40000 x42ffe29a xc16567d0 1 xc16567d0 1}\n       {x42c60000 x42e3788c xc1612cd0 1 xc1612cd0 1}\n       {x42c80000 x42c79766 xc15fe9cc 1 xc15fe9cc 1}\n       {x42ca0000 x42ab7e19 xc1600574 1 xc1600574 1}\n       {x42cc0000 x428f9609 xc14e3770 1 xc14e3770 1}\n       {x42ce0000 x426fe07a xc13c406c 1 xc13c406c 1}\n       {x42d00000 x42410bdc xc1330aa6 1 xc1330aa6 1}\n       {x42d20000 x42165b27 xc1273ab6 1 xc1273ab6 1}\n       {x42d40000 x41dadd02 xc11c9c56 1 xc11c9c56 1}\n       {x42d60000 x419019f8 xc10e4be5 1 xc10e4be5 1}\n       {x42d80000 x4119223a xc10253b7 1 xc10253b7 1}\n       {x42da0000 x3fdc640c xc0f3823f 1 xc0f3823f 1}\n       {x42dc0000 xc0b4c00a xc0d46d2c 1 xc0d46d2c 1}\n       {x42de0000 xc138e0aa xc0a0e5f2 1 xc0a0e5f2 1}\n       {x42e00000 xc17b45f7 xc0567894 1 xc0567894 1}\n       {x42e20000 xc1920e7a xc004ab86 1 xc004ab86 1}\n       {x42e40000 xc19ecddd xbf59f4a0 1 xbf59f4a0 1}\n       {x42e60000 xc1a11314 -}\n       {x42e80000 xc19ad2b3 x3f92e918 1 x3f92e918 1}\n       {x42ea0000 xc18eb5f1 x3fb204f8 1 x3fb204f8 1}\n       {x42ec0000 xc1849214 x3f9dba1c 1 x3f9dba1c 1}\n       {x42ee0000 xc175fd5b x3fce6f64 1 x3fce6f64 1}\n       {x42f00000 xc155884f x3fbc4234 1 x3fbc4234 1}\n       {x42f20000 xc146ecce x3fb9cb48 1 x3fb9cb48 1}\n       {x42f40000 xc127157d x3fcca2dc 1 x3fcca2dc 1}\n       {x42f60000 xc113c417 x40098943 1 x40098943 1}\n       {x42f80000 xc0c4a1b7 x402de714 1 x402de714 1}\n       {x42fa0000 xc0734233 x4044a1b7 1 x4044a1b7 1}\n       {x42fc0000 0 x4067cfa4 1 x4067cfa4 1}\n       {x42fe0000 x405c5d14 x406bca9e 1 x406bca9e 1}\n       {x43000000 x40ebca9e x408271f6 1 x408271f6 1}\n       {x43010000 x4139893b x408f1ad1 1 x408f1ad1 1}\n       {x43020000 x41828010 x409fa009 1 x409fa009 1}\n       {x43030000 x41ac94a2 x40ad0002 1 x40ad0002 1}\n       {x43040000 x41d90011 x40b55418 1 x40b55418 1}\n       {x43050000 x42039f57 x40bfb5be 1 x40bfb5be 1}\n       {x43060000 x421c6d78 x40d7c19c 1 x40d7c19c 1}\n       {x43070000 x42398fbe x40ecc858 1 x40ecc858 1}\n       {x43080000 x42579f8e x40f299b8 1 x40f299b8 1}\n       {x43090000 x4276362c x40ef5510 1 x40ef5510 1}\n       {x430a0000 x4289ba69 x40e2e1b8 1 x40e2e1b8 1}\n       {x430b0000 x4297774d x40d72d48 1 x40d72d48 1}\n       {x430c0000 x42a4a012 x40d70e70 1 x40d70e70 1}\n       {x430d0000 x42b2591b x40db2128 1 x40db2128 1}\n       {x430e0000 x42c00437 x40d73738 1 x40d73738 1}\n       {x430f0000 x42cd4002 x40d5dd80 1 x40d5dd80 1}\n       {x43100000 x42dabfe7 x40d53720 1 x40d53720 1}\n       {x43110000 x42e7e6e6 x40cdce80 1 x40cdce80 1}\n       {x43120000 x42f479b7 x40c33800 1 x40c33800 1}\n       {x43130000 x430026f3 x40afefe8 1 x40afefe8 1}\n       {x43140000 x43053bda x4096bcd0 1 x4096bcd0 1}\n       {x43150000 x430992c0 x40549000 1 x40549000 1}\n       {x43160000 x430be05a x3fe5a380 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke69 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d38c9c x4477dd60 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke70 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44d38c9c x4477dd60 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3546c30 0 1 x40a7a320 1}\n       {x42580000 xc34efdc0 x40ba23c0 1 x40ba23c0 1}\n       {x425c0000 xc348c9f4 x40c24c90 1 x40c24c90 1}\n       {x42600000 xc342d8f7 x40be2440 1 x40be2440 1}\n       {x42640000 xc33ce7b0 x40d50210 1 x40d50210 1}\n       {x42680000 xc33588d6 x40f4eba0 1 x40f4eba0 1}\n       {x426c0000 xc32d98f6 x40e53c50 1 x40e53c50 1}\n       {x42700000 xc3273511 x40cb5860 1 x40cb5860 1}\n       {x42740000 xc320e370 x40be75c0 1 x40be75c0 1}\n       {x42780000 xc31b4db5 x40c703f0 1 x40c703f0 1}\n       {x427c0000 xc3147331 x40e9d310 1 x40e9d310 1}\n       {x42800000 xc30cb084 x40eda380 1 x40eda380 1}\n       {x42820000 xc30598f9 x40cb2f20 1 x40cb2f20 1}\n       {x42840000 xc2fffb24 x40b29320 1 x40b29320 1}\n       {x42860000 xc2f4df8e x40a79458 1 x40a79458 1}\n       {x42880000 xc2eb0899 x409d46b0 1 x409d46b0 1}\n       {x428a0000 xc2e136b8 x40538470 1 x40538470 1}\n       {x428c0000 xc2ddd052 x4052e4a0 1 x4052e4a0 1}\n       {x428e0000 xc2d4086e x40a01318 1 x40a01318 1}\n       {x42900000 xc2c9cdef x40a91f38 1 x40a91f38 1}\n       {x42920000 xc2bee487 x40a67868 1 x40a67868 1}\n       {x42940000 xc2b4fee2 x409683e8 1 x409683e8 1}\n       {x42960000 xc2ac140a x408de598 1 x408de598 1}\n       {x42980000 xc2a3422f x4081b700 1 x4081b700 1}\n       {x429a0000 xc29bdd2a x4063efa0 1 x4063efa0 1}\n       {x429c0000 xc2950335 x3febecc0 1 x3febecc0 1}\n       {x429e0000 xc293c8a4 x3f5a4c80 1 x3f5a4c80 1}\n       {x42a00000 xc2919a03 x3fa0cec0 1 x3fa0cec0 1}\n       {x42a20000 xc28ec22e x3fcc22e0 1 x3fcc22e0 1}\n       {x42a40000 xc28b38ec x3fdbd080 1 x3fdbd080 1}\n       {x42a60000 xc287e3aa x3faca200 1 x3faca200 1}\n       {x42a80000 xc285d3dc x3f7f8e40 1 x3f7f8e40 1}\n       {x42aa0000 xc283e571 -}\n       {x42ac0000 xc284133a xbe895b00 1 xbe895b00 1}\n       {x42ae0000 xc2866598 xbfbff6a0 1 xbfbff6a0 1}\n       {x42b00000 xc28a12ef xbfe09960 1 xbfe09960 1}\n       {x42b20000 xc28d6a63 xbfdf4180 1 xbfdf4180 1}\n       {x42b40000 xc2910cfb xbfb68700 1 xbfb68700 1}\n       {x42b60000 xc2931e9b xbf792cc0 1 xbf792cc0 1}\n       {x42b80000 xc294f1ae xbf86d020 1 xbf86d020 1}\n       {x42ba0000 xc297551c xbfa63c00 1 xbfa63c00 1}\n       {x42bc0000 xc29a238e xbfbc5a20 1 xbfbc5a20 1}\n       {x42be0000 xc29d37ed xbfbf8ca0 1 xbfbf8ca0 1}\n       {x42c00000 xc2a01ff3 xbfc46b20 1 xbfc46b20 1}\n       {x42c20000 xc2a35b46 -}\n       {x42c40000 xc2a1a865 x3f8bcc00 1 x3f8bcc00 1}\n       {x42c60000 xc29efce6 x3f87a620 1 x3f87a620 1}\n       {x42c80000 xc29d6b34 x3f670600 1 x3f670600 1}\n       {x42ca0000 xc29b60ce x3f922cc0 1 x3f922cc0 1}\n       {x42cc0000 xc298d9ce x3f8eaa20 1 x3f8eaa20 1}\n       {x42ce0000 xc296eb7d x3f6d1e80 1 x3f6d1e80 1}\n       {x42d00000 xc2952554 x3f521780 1 x3f521780 1}\n       {x42d20000 xc293a31f x3f4158c0 1 x3f4158c0 1}\n       {x42d40000 xc2921ff1 x3f402a40 1 x3f402a40 1}\n       {x42d60000 xc290a276 x3f910600 1 x3f910600 1}\n       {x42d80000 xc28d97c1 x3fd88740 1 x3fd88740 1}\n       {x42da0000 xc289de3c x40017af0 1 x40017af0 1}\n       {x42dc0000 xc2858012 x400acaf0 1 x400acaf0 1}\n       {x42de0000 xc281318d x400f62a8 1 x400f62a8 1}\n       {x42e00000 xc27913cf x402c33a8 1 x402c33a8 1}\n       {x42e20000 xc26cdca5 x4040ad10 1 x4040ad10 1}\n       {x42e40000 xc260fe2d x40421e90 1 x40421e90 1}\n       {x42e60000 xc25498d3 x404808a0 1 x404808a0 1}\n       {x42e80000 xc247fd19 x40537eb8 1 x40537eb8 1}\n       {x42ea0000 xc23a28fc x40673eb0 1 x40673eb0 1}\n       {x42ec0000 xc22b1543 x408270b8 1 x408270b8 1}\n       {x42ee0000 xc2198cce x408e5290 1 x408e5290 1}\n       {x42f00000 xc207809f x409c9f5e 1 x409c9f5e 1}\n       {x42f20000 xc1e4c9ed x40b024f2 1 x40b024f2 1}\n       {x42f40000 xc1b6eec5 x40b16512 1 x40b16512 1}\n       {x42f60000 xc18c1764 x40b9af76 1 x40b9af76 1}\n       {x42f80000 xc1342e14 x40b9d71c 1 x40b9d71c 1}\n       {x42fa0000 xc0bcaf59 x40b42e14 1 x40b42e14 1}\n       {x42fc0000 0 x40b76213 1 x40b76213 1}\n       {x42fe0000 x40b214cd x40b9a99c 1 x40b9a99c 1}\n       {x43000000 x4139a99c x40b1c3fa 1 x40b1c3fa 1}\n       {x43010000 x41856730 x409e4e36 1 x409e4e36 1}\n       {x43020000 x41abfbe9 x4092f9ee 1 x4092f9ee 1}\n       {x43030000 x41cee427 x408369b0 1 x408369b0 1}\n       {x43040000 x41edb0c1 x4067870c 1 x4067870c 1}\n       {x43050000 x420462f5 x404384bc 1 x404384bc 1}\n       {x43060000 x420f48f8 x402bcc68 1 x402bcc68 1}\n       {x43070000 x4219dc82 x401c3510 1 x401c3510 1}\n       {x43080000 x4222cf9a x40028ba0 1 x40028ba0 1}\n       {x43090000 x422a2df6 x3ffa4ae0 1 x3ffa4ae0 1}\n       {x430a0000 x42327448 x3feb74e0 1 x3feb74e0 1}\n       {x430b0000 x4238e544 x3fe405a0 1 x3fe405a0 1}\n       {x430c0000 x4240b4a2 x3ff04f30 1 x3ff04f30 1}\n       {x430d0000 x4247ea37 x3ff00460 1 x3ff00460 1}\n       {x430e0000 x424fb4e8 x40019df0 1 x40019df0 1}\n       {x430f0000 x42581df5 x400e23d8 1 x400e23d8 1}\n       {x43100000 x42617963 x401dcfc0 1 x401dcfc0 1}\n       {x43110000 x426bd7ed x401378a0 1 x401378a0 1}\n       {x43120000 x4273e877 x3feba140 1 x3feba140 1}\n       {x43130000 x427a9201 x3fd80970 1 x3fd80970 1}\n       {x43140000 x4280b487 x3f83c510 1 x3f83c510 1}\n       {x43150000 x42816729 -}\n       {x43160000 x428070d1 xbf38c200 1 0 1}}\n      {{x42540000 x444a1e0b 0 1 xc111e8a0 1}\n       {x42580000 x4447e8f3 xc10400c0 1 xc10400c0 1}\n       {x425c0000 x4445fe05 xc109a5e0 1 xc109a5e0 1}\n       {x42600000 x44439bc4 xc12f6b60 1 xc12f6b60 1}\n       {x42640000 x444082aa xc1573440 1 xc1573440 1}\n       {x42680000 x443ce222 xc178a460 1 xc178a460 1}\n       {x426c0000 x4438bd87 xc16a1520 1 xc16a1520 1}\n       {x42700000 x44359179 xc14dd180 1 xc14dd180 1}\n       {x42740000 x44324efb xc1585940 1 xc1585940 1}\n       {x42780000 x442eceaf xc16bfbe0 1 xc16bfbe0 1}\n       {x427c0000 x442aef1c xc1838350 1 xc1838350 1}\n       {x42800000 x4426967a xc188d280 1 xc188d280 1}\n       {x42820000 x442261f4 xc1870b10 1 xc1870b10 1}\n       {x42840000 x441e25c9 xc1892720 1 xc1892720 1}\n       {x42860000 x4419cf82 xc1840ce0 1 xc1840ce0 1}\n       {x42880000 x4415e4fb xc1774e60 1 xc1774e60 1}\n       {x428a0000 x4412150f xc15cca20 1 xc15cca20 1}\n       {x428c0000 x440efeaa xc1696e00 1 xc1696e00 1}\n       {x428e0000 x440ac99f xc18a00e0 1 xc18a00e0 1}\n       {x42900000 x44065e9c xc18fece0 1 xc18fece0 1}\n       {x42920000 x4401cad1 xc19279f8 1 xc19279f8 1}\n       {x42940000 x43fa6df9 xc18f2368 1 xc18f2368 1}\n       {x42960000 x43f1b135 xc189cf18 1 xc189cf18 1}\n       {x42980000 x43e93416 xc17a8690 1 xc17a8690 1}\n       {x429a0000 x43e208cc xc15e1d30 1 xc15e1d30 1}\n       {x429c0000 x43db5243 xc151c580 1 xc151c580 1}\n       {x429e0000 x43d4ec74 xc1529910 1 xc1529910 1}\n       {x42a00000 x43ce28b2 xc160c030 1 xc160c030 1}\n       {x42a20000 x43c6e071 xc1712b90 1 xc1712b90 1}\n       {x42a40000 x43bf15f9 xc17c2d20 1 xc17c2d20 1}\n       {x42a60000 x43b71d9f xc17da960 1 xc17da960 1}\n       {x42a80000 x43af3b63 xc17b24d0 1 xc17b24d0 1}\n       {x42aa0000 x43a76b52 xc17056d0 1 xc17056d0 1}\n       {x42ac0000 x43a035f6 xc15f9bd0 1 xc15f9bd0 1}\n       {x42ae0000 x43997195 xc159d4e0 1 xc159d4e0 1}\n       {x42b00000 x439298a8 xc1615380 1 xc1615380 1}\n       {x42b20000 x438b5c5d xc168c980 1 xc168c980 1}\n       {x42b40000 x43840c10 xc1713380 1 xc1713380 1}\n       {x42b60000 x4378924a xc1778920 1 xc1778920 1}\n       {x42b80000 x436926fc xc17a5c70 1 xc17a5c70 1}\n       {x42ba0000 x435946bc xc1722598 1 xc1722598 1}\n       {x42bc0000 x434ae249 xc15facf8 1 xc15facf8 1}\n       {x42be0000 x433d511d xc14d5430 1 xc14d5430 1}\n       {x42c00000 x433137c3 xc13774d0 1 xc13774d0 1}\n       {x42c20000 x43266283 xc1240840 1 xc1240840 1}\n       {x42c40000 x431cb6bb xc1161b70 1 xc1161b70 1}\n       {x42c60000 x43139f15 xc115df90 1 xc115df90 1}\n       {x42c80000 x4309fac9 xc1185820 1 xc1185820 1}\n       {x42ca0000 x43009411 xc11082c8 1 xc11082c8 1}\n       {x42cc0000 x42efd4e0 xc10b9b1c 1 xc10b9b1c 1}\n       {x42ce0000 x42de415b xc108fd98 1 xc108fd98 1}\n       {x42d00000 x42cd957a xc0fc5980 1 xc0fc5980 1}\n       {x42d20000 x42beb62b xc0e6d1d8 1 xc0e6d1d8 1}\n       {x42d40000 x42b0bb3f xc0d90fe0 1 xc0d90fe0 1}\n       {x42d60000 x42a3942f xc0cff280 1 xc0cff280 1}\n       {x42d80000 x4296bcef xc0d51048 1 xc0d51048 1}\n       {x42da0000 x4288f226 xc0db3478 1 xc0db3478 1}\n       {x42dc0000 x4276acc0 xc0daaadc 1 xc0daaadc 1}\n       {x42de0000 x425b3995 xc0c26628 1 xc0c26628 1}\n       {x42e00000 x42461336 xc09fb174 1 xc09fb174 1}\n       {x42e20000 x42334d38 xc08f37b8 1 xc08f37b8 1}\n       {x42e40000 x42224548 xc07ba528 1 xc07ba528 1}\n       {x42e60000 x4213d893 xc0592110 1 xc0592110 1}\n       {x42e80000 x42072126 xc04045c8 1 xc04045c8 1}\n       {x42ea0000 x41f79fb4 xc0489fa4 1 xc0489fa4 1}\n       {x42ec0000 x41dc1a63 xc0546634 1 xc0546634 1}\n       {x42ee0000 x41c28627 xc04f0fc4 1 xc04f0fc4 1}\n       {x42f00000 x41a85672 xc0678f74 1 xc0678f74 1}\n       {x42f20000 x4188a24a xc076487e 1 xc076487e 1}\n       {x42f40000 x415588a5 xc06a7060 1 xc06a7060 1}\n       {x42f60000 x411c0c64 xc065308c 1 xc065308c 1}\n       {x42f80000 x40c5e0be xc059f38a 1 xc059f38a 1}\n       {x42fa0000 x403c4a7c xc045e0be 1 xc045e0be 1}\n       {x42fc0000 0 xc0310fd8 1 xc0310fd8 1}\n       {x42fe0000 xc025d535 xc0349e71 1 xc0349e71 1}\n       {x43000000 xc0b49e71 xc03c261a 1 xc03c261a 1}\n       {x43010000 xc107885a xc02226cd 1 xc02226cd 1}\n       {x43020000 xc12b629f xc00de9de 1 xc00de9de 1}\n       {x43030000 xc14e7d49 xbff1c230 1 xbff1c230 1}\n       {x43040000 xc167d32b xbfd869dc 1 xbfd869dc 1}\n       {x43050000 xc1824be0 xbfc8a88c 1 xbfc8a88c 1}\n       {x43060000 xc18cfea7 xbfcbd978 1 xbfcbd978 1}\n       {x43070000 xc19bc70f xbfc06b68 1 xbfc06b68 1}\n       {x43080000 xc1a50c14 xbf53d560 1 xbf53d560 1}\n       {x43090000 xc1a90465 xbf1743c0 1 xbf1743c0 1}\n       {x430a0000 xc1ae8050 xbf522d00 1 xbf522d00 1}\n       {x430b0000 xc1b62735 xbf704a30 1 xbf704a30 1}\n       {x430c0000 xc1bd84f3 xbf872838 1 xbf872838 1}\n       {x430d0000 xc1c70c3c xbf593650 1 xbf593650 1}\n       {x430e0000 xc1cb1858 xbf30ede0 1 xbf30ede0 1}\n       {x430f0000 xc1d21b1a xbf5957a0 1 xbf5957a0 1}\n       {x43100000 xc1d8add2 xbf25f490 1 xbf25f490 1}\n       {x43110000 xc1dc7a63 xbf05abc0 1 xbf05abc0 1}\n       {x43120000 xc1e1088e xbf5c6550 1 xbf5c6550 1}\n       {x43130000 xc1ea40b8 xbf7e0100 1 xbf7e0100 1}\n       {x43140000 xc1f0e89e xbfad9348 1 xbfad9348 1}\n       {x43150000 xc1fff321 xc01f6cd0 1 xc01f6cd0 1}\n       {x43160000 xc20c61e9 xc05a11e4 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke71 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44effd2f x442505e3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke72 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44effd2f x442505e3 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc0a64b6b 0 1 x3d2a0ea0 1}\n       {x42580000 xc09fa7ec x3f0a1214 1 x3f0a1214 1}\n       {x425c0000 xc083c6e6 x3f981316 1 x3f981316 1}\n       {x42600000 xc0273cc2 x3fe407ec 1 x3fe407ec 1}\n       {x42640000 xbf0e177e x405312ae 1 x405312ae 1}\n       {x42680000 x407ee899 x40a53756 1 x40a53756 1}\n       {x426c0000 x411c55de x406ffce4 1 x406ffce4 1}\n       {x42700000 x4137b898 x3fe1f424 1 x3fe1f424 1}\n       {x42740000 x4154d2e7 x3fc10024 1 x3fc10024 1}\n       {x42780000 x4167f8a1 x3f9ff4d0 1 x3f9ff4d0 1}\n       {x427c0000 x417cd01b x3f8f43ec 1 x3f8f43ec 1}\n       {x42800000 x4185e4ce x4002235a 1 x4002235a 1}\n       {x42820000 x419ef0e4 x4073a950 1 x4073a950 1}\n       {x42840000 x41c2cf22 -}\n       {x42860000 x41ba445a xbfaee418 1 xbfaee418 1}\n       {x42880000 x41acf29f xbf8ef258 1 xbf8ef258 1}\n       {x428a0000 x41a8660f xbfb12b18 1 xbfb12b18 1}\n       {x428c0000 x4196cd3c -}\n       {x428e0000 x41ba53c3 x408d8504 1 x408d8504 1}\n       {x42900000 x41dd8fbe x406d6574 1 x406d6574 1}\n       {x42920000 x41f5ad20 x404f9e70 1 x404f9e70 1}\n       {x42940000 x4208bbad x40367138 1 x40367138 1}\n       {x42960000 x4211a4b7 x40043480 1 x40043480 1}\n       {x42980000 x4219423d x400677b8 1 x400677b8 1}\n       {x429a0000 x422273ae x40170c30 1 x40170c30 1}\n       {x429c0000 x422c23c3 x3fd5a8b0 1 x3fd5a8b0 1}\n       {x429e0000 x422fce39 x3f6b2680 1 x3f6b2680 1}\n       {x42a00000 x42337cf7 x3f64b5a0 1 x3f64b5a0 1}\n       {x42a20000 x4236f3e6 x3f73e8c0 1 x3f73e8c0 1}\n       {x42a40000 x423b1c3d x3f53cf40 1 x3f53cf40 1}\n       {x42a60000 x423d9260 -}\n       {x42a80000 x423d1d8f -}\n       {x42aa0000 x423dfe1d -}\n       {x42ac0000 x423cd5fe xbf480a60 1 xbf480a60 1}\n       {x42ae0000 x4237bdca xbfdd0940 1 xbfdd0940 1}\n       {x42b00000 x422f056a xc008fa90 1 xc008fa90 1}\n       {x42b20000 x42269e78 xc00dfa10 1 xc00dfa10 1}\n       {x42b40000 x421d4628 xc01130d0 1 xc01130d0 1}\n       {x42b60000 x4214785e xc00263e0 1 xc00263e0 1}\n       {x42b80000 x420cf9ac xbff0c630 1 xbff0c630 1}\n       {x42ba0000 x42056bfb xc0158bf0 1 xc0158bf0 1}\n       {x42bc0000 x41f4905c xc0239348 1 xc0239348 1}\n       {x42be0000 x41e1f324 xc0187f0c 1 xc0187f0c 1}\n       {x42c00000 x41ce7099 xc038b590 1 xc038b590 1}\n       {x42c20000 x41b3c5c0 xc002bd90 1 xc002bd90 1}\n       {x42c40000 x41adc135 xbf104f20 1 xbf104f20 1}\n       {x42c60000 x41aac0ce xbe6ffc00 1 xbe6ffc00 1}\n       {x42c80000 x41aa0145 xbe8fa6c0 1 xbe8fa6c0 1}\n       {x42ca0000 x418c5448 xc079a974 1 xc079a974 1}\n       {x42cc0000 x41572dd0 xc0861f0f 1 xc0861f0f 1}\n       {x42ce0000 x41128981 xc08914a4 1 xc08914a4 1}\n       {x42d00000 x409c3259 xc0a026b7 1 xc0a026b7 1}\n       {x42d20000 xbf59d361 xc0b2f668 1 xc0b2f668 1}\n       {x42d40000 xc0c9ba77 xc0a9b51c 1 xc0a9b51c 1}\n       {x42d60000 xc1375252 xc0a1ddd8 1 xc0a1ddd8 1}\n       {x42d80000 xc1835d8a xc08fccf2 1 xc08fccf2 1}\n       {x42da0000 xc1a38fa2 xc0763f80 1 xc0763f80 1}\n       {x42dc0000 xc1c0ed6a xc0608abc 1 xc0608abc 1}\n       {x42de0000 xc1dbb251 -}\n       {x42e00000 xc1d6d0ce x3f60e7c0 1 x3f60e7c0 1}\n       {x42e20000 xc1cda3d5 x3f9c7748 1 x3f9c7748 1}\n       {x42e40000 xc1c341e5 x3fb7e688 1 x3fb7e688 1}\n       {x42e60000 xc1b6a704 x3fc0bc00 1 x3fc0bc00 1}\n       {x42e80000 xc1ab2a65 x3fbf9290 1 x3fbf9290 1}\n       {x42ea0000 xc19eb4b2 x3fe47800 1 x3fe47800 1}\n       {x42ec0000 xc18e9b65 x400fb442 1 x400fb442 1}\n       {x42ee0000 xc1758f43 x402524b2 1 x402524b2 1}\n       {x42f00000 xc14aa471 x4031075a 1 x4031075a 1}\n       {x42f20000 xc11d0b96 x402e6755 1 x402e6755 1}\n       {x42f40000 xc0e6e18d x4014425d 1 x4014425d 1}\n       {x42f60000 xc0a5d4cf x40046303 1 x40046303 1}\n       {x42f80000 xc044fd14 x3fe6d6be 1 x3fe6d6be 1}\n       {x42fa0000 xbfc9a5c0 x3fc4fd14 1 x3fc4fd14 1}\n       {x42fc0000 0 x3fba732b 1 x3fba732b 1}\n       {x42fe0000 x3fab4096 x401ec8a5 1 x401ec8a5 1}\n       {x43000000 x409ec8a5 x40616626 1 x40616626 1}\n       {x43010000 x41061b26 x4053a6cd 1 x4053a6cd 1}\n       {x43020000 x413937b9 x404d2ede 1 x404d2ede 1}\n       {x43030000 x416cb295 x403a7e66 1 x403a7e66 1}\n       {x43040000 x418b3b76 x402386a2 1 x402386a2 1}\n       {x43050000 x419f3af3 x400c92d0 1 x400c92d0 1}\n       {x43060000 x41ae602a x3fe72c40 1 x3fe72c40 1}\n       {x43070000 x41bc207b x3fc2a7f8 1 x3fc2a7f8 1}\n       {x43080000 x41c6b529 x3fa00148 1 x3fa00148 1}\n       {x43090000 x41d020a4 x3f9c83f0 1 x3f9c83f0 1}\n       {x430a0000 x41da45a7 x3fa9e8b8 1 x3fa9e8b8 1}\n       {x430b0000 x41e55dbb x3fb9a5f0 1 x3fb9a5f0 1}\n       {x430c0000 x41f17a65 x3fbef580 1 x3fbef580 1}\n       {x430d0000 x41fd3c6b x3fc67f38 1 x3fc67f38 1}\n       {x430e0000 x42052526 x3fd0da48 1 x3fd0da48 1}\n       {x430f0000 x420babda x3fdb13a0 1 x3fdb13a0 1}\n       {x43100000 x4212d660 x3fe3c780 1 x3fe3c780 1}\n       {x43110000 x4219e852 x3fd6fc90 1 x3fd6fc90 1}\n       {x43120000 x42204629 x3fc37c70 1 x3fc37c70 1}\n       {x43130000 x42262019 x3f945b20 1 x3f945b20 1}\n       {x43140000 x42298bdb -}\n       {x43150000 x42296bd3 xbdc03000 1 xbdc03000 1}\n       {x43160000 x42248e01 xbfe395e0 1 0 1}}\n      {{x42540000 x4429a65a 0 1 xc111eac0 1}\n       {x42580000 x44276069 xc1109f40 1 xc1109f40 1}\n       {x425c0000 x44252160 xc105afe0 1 xc105afe0 1}\n       {x42600000 x442332ea xc106e240 1 xc106e240 1}\n       {x42640000 x4420ea4e xc123ba20 1 xc123ba20 1}\n       {x42680000 x441e1519 xc146be80 1 xc146be80 1}\n       {x426c0000 x441ab45a xc133c680 1 xc133c680 1}\n       {x42700000 x441876e5 xc10ea140 1 xc10ea140 1}\n       {x42740000 x44163f50 xc11ec780 1 xc11ec780 1}\n       {x42780000 x441380a9 xc1305fc0 1 xc1305fc0 1}\n       {x427c0000 x4410bc52 xc12df480 1 xc12df480 1}\n       {x42800000 x440e1105 xc13d8180 1 xc13d8180 1}\n       {x42820000 x440ad046 xc1657280 1 xc1657280 1}\n       {x42840000 x4406e571 xc1412640 1 xc1412640 1}\n       {x42860000 x4404c714 xc0ff2fc0 1 xc0ff2fc0 1}\n       {x42880000 x4402e8b2 xc1031d20 1 xc1031d20 1}\n       {x428a0000 x4400ae2b xc106c0b0 1 xc106c0b0 1}\n       {x428c0000 x43fd6559 xc141d7a0 1 xc141d7a0 1}\n       {x428e0000 x43f53edc xc183d860 1 xc183d860 1}\n       {x42900000 x43ecea4d xc17b4580 1 xc17b4580 1}\n       {x42920000 x43e58a84 xc17281b0 1 xc17281b0 1}\n       {x42940000 x43ddc232 xc16cf4b0 1 xc16cf4b0 1}\n       {x42960000 x43d6bb39 xc15af900 1 xc15af900 1}\n       {x42980000 x43d012a2 xc14f91a0 1 xc14f91a0 1}\n       {x429a0000 x43c9c21f xc14d7760 1 xc14d7760 1}\n       {x429c0000 x43c33b2c xc14dcea0 1 xc14dcea0 1}\n       {x429e0000 x43bce535 xc14f5ca0 1 xc14f5ca0 1}\n       {x42a00000 x43b64562 xc153eda0 1 xc153eda0 1}\n       {x42a20000 x43afa65b xc15cda90 1 xc15cda90 1}\n       {x42a40000 x43a877b9 xc16e07a0 1 xc16e07a0 1}\n       {x42a60000 x43a0c5e1 xc17f5ea0 1 xc17f5ea0 1}\n       {x42a80000 x439881cf xc1803d78 1 xc1803d78 1}\n       {x42aa0000 x4390be32 xc16f73b0 1 xc16f73b0 1}\n       {x42ac0000 x43898a94 xc15be6b0 1 xc15be6b0 1}\n       {x42ae0000 x4382ffc7 xc14f5950 1 xc14f5950 1}\n       {x42b00000 x437929fe xc1433e20 1 xc1433e20 1}\n       {x42b20000 x436d97ca xc1407888 1 xc1407888 1}\n       {x42b40000 x43611aed xc14d5a50 1 xc14d5a50 1}\n       {x42b60000 x4353ec80 xc149f108 1 xc149f108 1}\n       {x42b80000 x4347dccc xc1411218 1 xc1411218 1}\n       {x42ba0000 x433bca3d xc14674b0 1 xc14674b0 1}\n       {x42bc0000 x432f0e36 xc1453348 1 xc1453348 1}\n       {x42be0000 x432323d4 xc132c7b0 1 xc132c7b0 1}\n       {x42c00000 x4318b540 xc12357a8 1 xc12357a8 1}\n       {x42c20000 x430eb8df xc111a3b0 1 xc111a3b0 1}\n       {x42c40000 x430680ca xc0fe32f0 1 xc0fe32f0 1}\n       {x42c60000 x42fdab60 xc0f01b70 1 xc0f01b70 1}\n       {x42c80000 x42eefe26 xc0c39900 1 xc0c39900 1}\n       {x42ca0000 x42e53840 xc09bade0 1 xc09bade0 1}\n       {x42cc0000 x42db886a xc086da48 1 xc086da48 1}\n       {x42ce0000 x42d45cf7 xc06dd850 1 xc06dd850 1}\n       {x42d00000 x42ccaae5 xc03ea750 1 xc03ea750 1}\n       {x42d20000 x42c87282 xbfec3ea0 1 xbfec3ea0 1}\n       {x42d40000 x42c548f0 xbfd8c640 1 xbfd8c640 1}\n       {x42d60000 x42c1ac50 xc0274000 1 xc0274000 1}\n       {x42d80000 x42bad4f0 xc0672170 1 xc0672170 1}\n       {x42da0000 x42b33a39 xc09605a8 1 xc09605a8 1}\n       {x42dc0000 x42a8143b xc0bd9da0 1 xc0bd9da0 1}\n       {x42de0000 x429b8685 xc0c113a0 1 xc0c113a0 1}\n       {x42e00000 x428ff1c7 xc0adc0a0 1 xc0adc0a0 1}\n       {x42e20000 x4285ce71 xc09d1294 1 xc09d1294 1}\n       {x42e40000 x42789ee9 xc08a587c 1 xc08a587c 1}\n       {x42e60000 x426906c3 xc0813570 1 xc0813570 1}\n       {x42e80000 x4258518d xc08154ac 1 xc08154ac 1}\n       {x42ea0000 x4248b198 xc081c0bc 1 xc081c0bc 1}\n       {x42ec0000 x4237e15e xc080daf4 1 xc080daf4 1}\n       {x42ee0000 x42287adb xc0722830 1 xc0722830 1}\n       {x42f00000 x42199c58 xc072ab10 1 xc072ab10 1}\n       {x42f20000 x420a2579 xc0842a94 1 xc0842a94 1}\n       {x42f40000 x41f12366 xc0b7e798 1 xc0b7e798 1}\n       {x42f60000 x41b85726 xc0ec9212 1 xc0ec9212 1}\n       {x42f80000 x4175b4ba xc0ffe3d4 1 xc0ffe3d4 1}\n       {x42fa0000 x40e194f1 xc0f5b4ba 1 xc0f5b4ba 1}\n       {x42fc0000 0 xc0d40046 1 xc0d40046 1}\n       {x42fe0000 xc0c66b9c xc0ae448b 1 xc0ae448b 1}\n       {x43000000 xc12e448b xc0910f11 1 xc0910f11 1}\n       {x43010000 xc17444df xc083a9f3 1 xc083a9f3 1}\n       {x43020000 xc198f73f xc071200e 1 xc071200e 1}\n       {x43030000 xc1b66a73 xc062a2ac 1 xc062a2ac 1}\n       {x43040000 xc1d19fea xc04c3e18 1 xc04c3e18 1}\n       {x43050000 xc1e979f9 xc0477ef0 1 xc0477ef0 1}\n       {x43060000 xc201bfd3 xc047bf5c 1 xc047bf5c 1}\n       {x43070000 xc20db4e8 xc031bf78 1 xc031bf78 1}\n       {x43080000 xc217f7c2 xc011b370 1 xc011b370 1}\n       {x43090000 xc21feb56 xc0080180 1 xc0080180 1}\n       {x430a0000 xc228f7f2 xc00afa68 1 xc00afa68 1}\n       {x430b0000 xc2314aa3 xc0108d88 1 xc0108d88 1}\n       {x430c0000 xc23b09a3 xc0106880 1 xc0106880 1}\n       {x430d0000 xc24357b3 xbfee59f0 1 xbfee59f0 1}\n       {x430e0000 xc249ef42 xbfcf0a90 1 xbfcf0a90 1}\n       {x430f0000 xc250485c xbfddd890 1 xbfddd890 1}\n       {x43100000 xc257cccb xc0024ff0 1 xc0024ff0 1}\n       {x43110000 xc260925a xbfeda880 1 xbfeda880 1}\n       {x43120000 xc266a753 xbfd9f580 1 xbfd9f580 1}\n       {x43130000 xc26e31b2 xbffb3b30 1 xbffb3b30 1}\n       {x43140000 xc2765b06 xc0145780 1 xc0145780 1}\n       {x43150000 xc2805e51 xc0645ce0 1 xc0645ce0 1}\n       {x43160000 xc2897351 xc0a0e0c8 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke73 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x439727ae x437f649c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke74 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x439727ae x437f649c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc31baaa5 0 1 x40818b50 1}\n       {x42580000 xc3174dc8 x409fbc40 1 x409fbc40 1}\n       {x425c0000 xc311aee1 x40c61f00 1 x40c61f00 1}\n       {x42600000 xc30aebd8 x40e04bc0 1 x40e04bc0 1}\n       {x42640000 xc303aa25 x40e3cf48 1 x40e3cf48 1}\n       {x42680000 xc2f95dc7 x40e07d58 1 x40e07d58 1}\n       {x426c0000 xc2eb449f x40e1d950 1 x40e1d950 1}\n       {x42700000 xc2dd229d x40e4f9e8 1 x40e4f9e8 1}\n       {x42740000 xc2cea562 x40f64318 1 x40f64318 1}\n       {x42780000 xc2be5a3a x41010f40 1 x41010f40 1}\n       {x427c0000 xc2ae6192 x41018ef0 1 x41018ef0 1}\n       {x42800000 xc29df67e x4103fc54 1 x4103fc54 1}\n       {x42820000 xc28d627d x40fadc6c 1 x40fadc6c 1}\n       {x42840000 xc27d35e1 x40ebfa84 1 x40ebfa84 1}\n       {x42860000 xc25fc659 x40c09fa8 1 x40c09fa8 1}\n       {x42880000 xc24d0df7 x40c7278c 1 x40c7278c 1}\n       {x428a0000 xc22dfc76 x40b953a4 1 x40b953a4 1}\n       {x428c0000 xc21eb90e x4090186c 1 x4090186c 1}\n       {x428e0000 xc209f65b x40ae37a6 1 x40ae37a6 1}\n       {x42900000 xc1e65649 x409aba94 1 x409aba94 1}\n       {x42920000 xc1c68f6c x40228494 1 x40228494 1}\n       {x42940000 xc1bdb524 x3f5b9db0 1 x3f5b9db0 1}\n       {x42960000 xc1b8d591 x3f268390 1 x3f268390 1}\n       {x42980000 xc1b34ceb x3fb244a8 1 x3fb244a8 1}\n       {x429a0000 xc1a28cfc x3fc7e748 1 x3fc7e748 1}\n       {x429c0000 xc19a5002 x3f2d1030 1 x3f2d1030 1}\n       {x429e0000 xc197bbf9 x3e873740 1 x3e873740 1}\n       {x42a00000 xc1961648 x3eac07c0 1 x3eac07c0 1}\n       {x42a20000 xc1925bbb x3f13e2a0 1 x3f13e2a0 1}\n       {x42a40000 xc18cd81e x3f5b4bd0 1 x3f5b4bd0 1}\n       {x42a60000 xc184a6fe -}\n       {x42a80000 xc186e63f xbf2023c0 1 xbf2023c0 1}\n       {x42aa0000 xc18ea93a xbf10cfc0 1 xbf10cfc0 1}\n       {x42ac0000 xc1902b64 xbf10cfc0 1 xbf10cfc0 1}\n       {x42ae0000 xc19da05b xbfd9e3f0 1 xbfd9e3f0 1}\n       {x42b00000 xc1ab67e2 xbff81d90 1 xbff81d90 1}\n       {x42b20000 xc1bca40d xc00885e0 1 xc00885e0 1}\n       {x42b40000 xc1cd895a xc003fc6c 1 xc003fc6c 1}\n       {x42b60000 xc1dda328 xbff82f60 1 xbff82f60 1}\n       {x42b80000 xc1ec8f46 xbff3da90 1 xbff3da90 1}\n       {x42ba0000 xc1fc1e7a xc00064b0 1 xc00064b0 1}\n       {x42bc0000 xc2065439 xc0038b20 1 xc0038b20 1}\n       {x42be0000 xc20e80a1 xc0064548 1 xc0064548 1}\n       {x42c00000 xc2171ce2 xc00cd0b0 1 xc00cd0b0 1}\n       {x42c20000 xc2201ab7 -}\n       {x42c40000 xc21e084d x3f216f20 1 x3f216f20 1}\n       {x42c60000 xc21b0f3e x3f2ef040 1 x3f2ef040 1}\n       {x42c80000 xc21890cb x3f45a460 1 x3f45a460 1}\n       {x42ca0000 xc214e21b x3f797420 1 x3f797420 1}\n       {x42cc0000 xc210c52a x3fd17850 1 x3fd17850 1}\n       {x42ce0000 xc207ca96 x3fd4bb10 1 x3fd4bb10 1}\n       {x42d00000 xc2037979 x3f01c180 1 x3f01c180 1}\n       {x42d20000 xc202cc77 x3ddbed00 1 x3ddbed00 1}\n       {x42d40000 xc2029d8c -}\n       {x42d60000 xc202e2fa xbe175b80 1 xbe175b80 1}\n       {x42d80000 xc203cc43 xbe9c4dc0 1 xbe9c4dc0 1}\n       {x42da0000 xc2055431 xbe812a80 1 xbe812a80 1}\n       {x42dc0000 xc205d0ed -}\n       {x42de0000 xc2059b7a x3dee9f00 1 x3dee9f00 1}\n       {x42e00000 xc204e24e x3e896640 1 x3e896640 1}\n       {x42e20000 xc20375e1 x3f04e780 1 x3f04e780 1}\n       {x42e40000 xc200bb12 x3f401980 1 x3f401980 1}\n       {x42e60000 xc1faea2a x3f554340 1 x3f554340 1}\n       {x42e80000 xc1f421f0 x3f6d4da0 1 x3f6d4da0 1}\n       {x42ea0000 xc1ec1550 x3f9691f0 1 x3f9691f0 1}\n       {x42ec0000 xc1e14fb2 x3fe06c78 1 x3fe06c78 1}\n       {x42ee0000 xc1d007c1 x402c8924 1 x402c8924 1}\n       {x42f00000 xc1b62d69 x4050c478 1 x4050c478 1}\n       {x42f20000 xc19bd6a3 x40609136 1 x40609136 1}\n       {x42f40000 xc17c1237 x40748a1c 1 x40748a1c 1}\n       {x42f60000 xc13d6838 x407862d3 1 x407862d3 1}\n       {x42f80000 xc0ffc19b x407b4310 1 x407b4310 1}\n       {x42fa0000 xc07f1ac0 x407fc19b 1 x407fc19b 1}\n       {x42fc0000 0 x4084d778 1 x4084d778 1}\n       {x42fe0000 x408a2191 x408bc84f 1 x408bc84f 1}\n       {x43000000 x410bc84f x408a7d5a 1 x408a7d5a 1}\n       {x43010000 x414f8e23 x40851a17 1 x40851a17 1}\n       {x43020000 x41887133 x407ce9a6 1 x407ce9a6 1}\n       {x43030000 x41a7017b x40726608 1 x40726608 1}\n       {x43040000 x41c50ab5 x4062dff0 1 x4062dff0 1}\n       {x43050000 x41dfb977 x40592528 1 x40592528 1}\n       {x43060000 x41fb53ff x4062f8cc 1 x4062f8cc 1}\n       {x43070000 x420c3bd5 x403452ac 1 x403452ac 1}\n       {x43080000 x42143455 x3fd614f0 1 x3fd614f0 1}\n       {x43090000 x42199d24 x3fbbd040 1 x3fbbd040 1}\n       {x430a0000 x421ff159 x3fbf8ea0 1 x3fbf8ea0 1}\n       {x430b0000 x4225960e x3fbbb360 1 x3fbbb360 1}\n       {x430c0000 x422bac8f x3fb2df90 1 x3fb2df90 1}\n       {x430d0000 x4230c407 x3fa54530 1 x3fa54530 1}\n       {x430e0000 x423600e2 x3fbd3bf0 1 x3fbd3bf0 1}\n       {x430f0000 x423c97c6 x3fe33bc0 1 x3fe33bc0 1}\n       {x43100000 x4244349e x40008478 1 x40008478 1}\n       {x43110000 x424ca855 x400b0890 1 x400b0890 1}\n       {x43120000 x425595b0 x400cc350 1 x400cc350 1}\n       {x43130000 x425e40bf x3fe10490 1 x3fe10490 1}\n       {x43140000 x4263a5f9 x3f6c4d20 1 x3f6c4d20 1}\n       {x43150000 x4265a328 -}\n       {x43160000 x426335f7 xbf68f260 1 0 1}}\n      {{x42540000 x44814506 0 1 xc155e6d0 1}\n       {x42580000 x447f1499 xc16c48a0 1 xc16c48a0 1}\n       {x425c0000 x447b27c7 xc1819ff0 1 xc1819ff0 1}\n       {x42600000 x4476fa9a xc184ab80 1 xc184ab80 1}\n       {x42640000 x4472dd0f xc1837220 1 xc1837220 1}\n       {x42680000 x446ec378 xc18550f0 1 xc18550f0 1}\n       {x426c0000 x446a8800 xc18bcc00 1 xc18bcc00 1}\n       {x42700000 x446606b8 xc198e500 1 xc198e500 1}\n       {x42740000 x4460f9b0 xc1aa5340 1 xc1aa5340 1}\n       {x42780000 x445b6184 xc1bbf640 1 xc1bbf640 1}\n       {x427c0000 x44553a4c xc1ccefd0 1 xc1ccefd0 1}\n       {x42800000 x444e9287 xc1d9e2a0 1 xc1d9e2a0 1}\n       {x42820000 x44479c22 xc1ddc2a0 1 xc1ddc2a0 1}\n       {x42840000 x4440b65d xc1de6cb0 1 xc1de6cb0 1}\n       {x42860000 x4439b557 xc1d7b410 1 xc1d7b410 1}\n       {x42880000 x44333b1c xc1d910d0 1 xc1d910d0 1}\n       {x428a0000 x442c244a xc1d36fb0 1 xc1d36fb0 1}\n       {x428c0000 x44260421 xc1c03c50 1 xc1c03c50 1}\n       {x428e0000 x44202085 xc1c1d5d0 1 xc1c1d5d0 1}\n       {x42900000 x4419e6c4 xc1c82d40 1 xc1c82d40 1}\n       {x42920000 x44139db1 xc1c0a300 1 xc1c0a300 1}\n       {x42940000 x440ddc94 xc1b73800 1 xc1b73800 1}\n       {x42960000 x44082a31 xc1b57900 1 xc1b57900 1}\n       {x42980000 x44028504 xc1b17f00 1 xc1b17f00 1}\n       {x429a0000 x43fa2482 xc1aab728 1 xc1aab728 1}\n       {x429c0000 x43efb323 xc1a48ba0 1 xc1a48ba0 1}\n       {x429e0000 x43e5930e xc1a132f8 1 xc1a132f8 1}\n       {x42a00000 x43db8cc4 xc1a11c08 1 xc1a11c08 1}\n       {x42a20000 x43d16f8d xc1a189b0 1 xc1a189b0 1}\n       {x42a40000 x43c75b8e xc19af150 1 xc19af150 1}\n       {x42a60000 x43be1163 xc1981d18 1 xc1981d18 1}\n       {x42a80000 x43b457eb xc19ea948 1 xc19ea948 1}\n       {x42aa0000 x43aa3c3a xc1a05f58 1 xc1a05f58 1}\n       {x42ac0000 x43a04c00 xc19d6c10 1 xc19d6c10 1}\n       {x42ae0000 x43968eb8 xc19a8430 1 xc19a8430 1}\n       {x42b00000 x438cfb7a xc198c648 1 xc198c648 1}\n       {x42b20000 x438375ef xc198805c 1 xc198805c 1}\n       {x42b40000 x4373d6dd xc1996f9c 1 xc1996f9c 1}\n       {x42b60000 x43608ff7 xc19ae658 1 xc19ae658 1}\n       {x42b80000 x434d1d47 xc1990a5c 1 xc1990a5c 1}\n       {x42ba0000 x433a4d60 xc1924310 1 xc1924310 1}\n       {x42bc0000 x43288c83 xc1892638 1 xc1892638 1}\n       {x42be0000 x431803d2 xc17d1f90 1 xc17d1f90 1}\n       {x42c00000 x4308e891 xc16783f8 1 xc16783f8 1}\n       {x42c20000 x42f626a6 xc1524a98 1 xc1524a98 1}\n       {x42c40000 x42dd3e7c xc1458424 1 xc1458424 1}\n       {x42c60000 x42c4c59d xc142ee70 1 xc142ee70 1}\n       {x42c80000 x42ac82e0 xc142eac4 1 xc142eac4 1}\n       {x42ca0000 x42940aec xc1424d54 1 xc1424d54 1}\n       {x42cc0000 x4277df16 xc1271114 1 xc1271114 1}\n       {x42ce0000 x42548d4e xc1109dea 1 xc1109dea 1}\n       {x42d00000 x422f9021 xc119e9ec 1 xc119e9ec 1}\n       {x42d20000 x42079858 xc116e9ad 1 xc116e9ad 1}\n       {x42d40000 x41c83695 xc105e1c3 1 xc105e1c3 1}\n       {x42d60000 x41894eed xc0ec631d 1 xc0ec631d 1}\n       {x42d80000 x41240a0d xc0d1c91a 1 xc0d1c91a 1}\n       {x42da0000 x4081a981 xc0c1b37f 1 xc0c1b37f 1}\n       {x42dc0000 xbfed4b93 xc0b1d5f0 1 xc0b1d5f0 1}\n       {x42de0000 xc0e20260 xc090c6c4 1 xc090c6c4 1}\n       {x42e00000 xc12e7036 xc04e966c 1 xc04e966c 1}\n       {x42e20000 xc1584c66 xc001b0ba 1 xc001b0ba 1}\n       {x42e40000 xc16f4893 xbf8736c0 1 xbf8736c0 1}\n       {x42e60000 xc17a1a16 -}\n       {x42e80000 xc1705d8a x3f705f30 1 x3f705f30 1}\n       {x42ea0000 xc15c0e30 x3fad6a68 1 x3fad6a68 1}\n       {x42ec0000 xc14502f0 x3fac3acc 1 x3fac3acc 1}\n       {x42ee0000 xc130ff7d x3f8e90dc 1 x3f8e90dc 1}\n       {x42f00000 xc1215eb9 x3f73e6b8 1 x3f73e6b8 1}\n       {x42f20000 xc11282a6 x3f7a7820 1 x3f7a7820 1}\n       {x42f40000 xc1020fb5 x3f95de22 1 x3f95de22 1}\n       {x42f60000 xc0da163b x3fc90216 1 x3fc90216 1}\n       {x42f80000 xc09f9e5f x40024166 1 x40024166 1}\n       {x42fa0000 xc02fa9aa x401f9e5f 1 x401f9e5f 1}\n       {x42fc0000 0 x40385dce 1 x40385dce 1}\n       {x42fe0000 x404111f3 x4039f9c8 1 x4039f9c8 1}\n       {x43000000 x40b9f9c8 x40323bce 1 x40323bce 1}\n       {x43010000 x41096264 x403b3ed4 1 x403b3ed4 1}\n       {x43020000 x413a9c4e x4050382e 1 x4050382e 1}\n       {x43030000 x41717e7b x405bd608 1 x405bd608 1}\n       {x43040000 x419443a9 x40608c1e 1 x40608c1e 1}\n       {x43050000 x41b0e245 x4088682a 1 x4088682a 1}\n       {x43060000 x41d877be x40c3eb2e 1 x40c3eb2e 1}\n       {x43070000 x42096bee x40c7bce8 1 x40c7bce8 1}\n       {x43080000 x421e2b19 x40a52e04 1 x40a52e04 1}\n       {x43090000 x4232b76f x40a59418 1 x40a59418 1}\n       {x430a0000 x4247901f x40a5c590 1 x40a5c590 1}\n       {x430b0000 x425c28d3 x40a3a54c 1 x40a3a54c 1}\n       {x430c0000 x42707972 x40abe8bc 1 x40abe8bc 1}\n       {x430d0000 x42839181 x40bdb6d8 1 x40bdb6d8 1}\n       {x430e0000 x428ff394 x40c700b8 1 x40c700b8 1}\n       {x430f0000 x429c7198 x40c2cd78 1 x40c2cd78 1}\n       {x43100000 x42a84d43 x40ba1290 1 x40ba1290 1}\n       {x43110000 x42b3b3ea x40b32808 1 x40b32808 1}\n       {x43120000 x42beb244 x40aa4f30 1 x40aa4f30 1}\n       {x43130000 x42c8fdd0 x409efc90 1 x409efc90 1}\n       {x43140000 x42d291d6 x409111f8 1 x409111f8 1}\n       {x43150000 x42db200f x4053c840 1 x4053c840 1}\n       {x43160000 x42dfce5a x3fed93e0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke75 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42bef127 x43f35290 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke76 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42bef127 x43f35290 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2eabe6f 0 1 x4080c0c0 1}\n       {x42580000 xc2e212d2 x409eabf0 1 x409eabf0 1}\n       {x425c0000 xc2d6e8f1 x40c531d8 1 x40c531d8 1}\n       {x42600000 xc2c96c97 x40dfa0e0 1 x40dfa0e0 1}\n       {x42640000 xc2baf4d5 x40d8e5a8 1 x40d8e5a8 1}\n       {x42680000 xc2ae4fe2 x40cba998 1 x40cba998 1}\n       {x426c0000 xc2a17fa2 x40ccde70 1 x40ccde70 1}\n       {x42700000 xc294b414 x40d07818 1 x40d07818 1}\n       {x42740000 xc287709f x40e1a9dc 1 x40e1a9dc 1}\n       {x42780000 xc270fdb1 x40ed7e6c 1 x40ed7e6c 1}\n       {x427c0000 xc25381a3 x40f88c70 1 x40f88c70 1}\n       {x42800000 xc232da95 x40fdd6dc 1 x40fdd6dc 1}\n       {x42820000 xc2140bec x40f0b198 1 x40f0b198 1}\n       {x42840000 xc1ed5c5e x40e9e068 1 x40e9e068 1}\n       {x42860000 xc1b327a4 x40c145c0 1 x40c145c0 1}\n       {x42880000 xc18cb97e x40ca00a5 1 x40ca00a5 1}\n       {x428a0000 xc11c4ea3 x40ab5024 1 x40ab5024 1}\n       {x428c0000 xc0dc45af x4046401c 1 x4046401c 1}\n       {x428e0000 xc064ba54 x405feb8d 1 x405feb8d 1}\n       {x42900000 x3de97799 x402e0178 1 x402e0178 1}\n       {x42920000 x3fee9136 -}\n       {x42940000 x3fcd3cea xbe5c6130 1 xbe5c6130 1}\n       {x42960000 x3fb778ea -}\n       {x42980000 x3fcb2f8b x3eec8f8c 1 x3eec8f8c 1}\n       {x429a0000 x40607714 x3e51d780 1 x3e51d780 1}\n       {x429c0000 x4064d63c -}\n       {x429e0000 x3ff0a6bd xbfc58d03 1 xbfc58d03 1}\n       {x42a00000 x3efa49ca xbf99a7e6 1 xbf99a7e6 1}\n       {x42a20000 xbf05521e xbf7850a2 1 xbf7850a2 1}\n       {x42a40000 xbfb9be30 xbf71ed77 1 xbf71ed77 1}\n       {x42a60000 xc01a4b43 xbf90c329 1 xbf90c329 1}\n       {x42a80000 xc06da241 xbfaab643 1 xbfaab643 1}\n       {x42aa0000 xc0a280c3 xbfbeff9b 1 xbfbeff9b 1}\n       {x42ac0000 xc0d650ee xc00bc26d 1 xc00bc26d 1}\n       {x42ae0000 xc1172198 xc046188e 1 xc046188e 1}\n       {x42b00000 xc14e34be xc06315a8 1 xc06315a8 1}\n       {x42b20000 xc1845636 xc065d600 1 xc065d600 1}\n       {x42b40000 xc1a08fdf xc05d1e04 1 xc05d1e04 1}\n       {x42b60000 xc1bb9db7 xc0506b40 1 xc0506b40 1}\n       {x42b80000 xc1d4aaaf xc047b9a4 1 xc047b9a4 1}\n       {x42ba0000 xc1ed8c20 xc04b87c4 1 xc04b87c4 1}\n       {x42bc0000 xc203c650 xc04bae60 1 xc04bae60 1}\n       {x42be0000 xc2103bdc xc048e8b8 1 xc048e8b8 1}\n       {x42c00000 xc21ce367 xc04b16b0 1 xc04b16b0 1}\n       {x42c20000 xc2299eb2 xbf9fb220 1 xbf9fb220 1}\n       {x42c40000 xc22b488d xbe3ece00 1 xbe3ece00 1}\n       {x42c60000 xc22b8827 -}\n       {x42c80000 xc22b4338 x3e4ecd00 1 x3e4ecd00 1}\n       {x42ca0000 xc229bd0c x3ee60c00 1 x3ee60c00 1}\n       {x42cc0000 xc227ab08 x3edf46c0 1 x3edf46c0 1}\n       {x42ce0000 xc2263ff1 x3e81a980 1 x3e81a980 1}\n       {x42d00000 xc225a462 -}\n       {x42d20000 xc226c391 xbe801d00 1 xbe801d00 1}\n       {x42d40000 xc227a4d6 xbe8c6080 1 xbe8c6080 1}\n       {x42d60000 xc228f513 xbeceb2c0 1 xbeceb2c0 1}\n       {x42d80000 xc22adfa1 xbed5a6c0 1 xbed5a6c0 1}\n       {x42da0000 xc22c4bae xbe40e400 1 xbe40e400 1}\n       {x42dc0000 xc22c8bfa -}\n       {x42de0000 xc22b821e x3e9cdb00 1 x3e9cdb00 1}\n       {x42e00000 xc22a188e x3f08e460 1 x3f08e460 1}\n       {x42e20000 xc2273afb x3f5b9e60 1 x3f5b9e60 1}\n       {x42e40000 xc2233b9b x3f97cab0 1 x3f97cab0 1}\n       {x42e60000 xc21dbe50 x3fbc2720 1 x3fbc2720 1}\n       {x42e80000 xc2177929 x3fde2060 1 x3fde2060 1}\n       {x42ea0000 xc20fdc4a x40084ed0 1 x40084ed0 1}\n       {x42ec0000 xc2066f4f x402be488 1 x402be488 1}\n       {x42ee0000 xc1f4bf72 x404af3dc 1 x404af3dc 1}\n       {x42f00000 xc1da21a7 x40660a68 1 x40660a68 1}\n       {x42f20000 xc1bb3cd8 x4081bdc4 1 x4081bdc4 1}\n       {x42f40000 xc19942c5 x408f08c1 1 x408f08c1 1}\n       {x42f60000 xc16770ef x4095dc3f 1 x4095dc3f 1}\n       {x42f80000 xc11ca94b x40986d94 1 x40986d94 1}\n       {x42fa0000 xc09e06b6 x409ca94b 1 x409ca94b 1}\n       {x42fc0000 0 x409fd05a 1 x409fd05a 1}\n       {x42fe0000 x40a199ff x40a2c6d7 1 x40a2c6d7 1}\n       {x43000000 x4122c6d7 x40a1e25e 1 x40a1e25e 1}\n       {x43010000 x4172af5d x409af791 1 x409af791 1}\n       {x43020000 x419edf34 x4093c205 1 x4093c205 1}\n       {x43030000 x41c338b1 x408f1eee 1 x408f1eee 1}\n       {x43040000 x41e66eab x4082353e 1 x4082353e 1}\n       {x43050000 x420229a8 x40643c54 1 x40643c54 1}\n       {x43060000 x420fbee0 x4049b278 1 x4049b278 1}\n       {x43070000 x421b5ff7 x4034c760 1 x4034c760 1}\n       {x43080000 x422657cc x4029ee50 1 x4029ee50 1}\n       {x43090000 x42309dc1 x401eafc0 1 x401eafc0 1}\n       {x430a0000 x423a2dc4 x401a1fa8 1 x401a1fa8 1}\n       {x430b0000 x4243e1b6 x4018b8a0 1 x4018b8a0 1}\n       {x430c0000 x424d44d8 x40151cb0 1 x40151cb0 1}\n       {x430d0000 x4256854c x401b9600 1 x401b9600 1}\n       {x430e0000 x4260b798 x402c6900 1 x402c6900 1}\n       {x430f0000 x426c126c x403c11d0 1 x403c11d0 1}\n       {x43100000 x427839d2 x4043b660 1 x4043b660 1}\n       {x43110000 x4282449c x4042fe80 1 x4042fe80 1}\n       {x43120000 x42884cd1 x403afdb0 1 x403afdb0 1}\n       {x43130000 x428df477 x402a36e0 1 x402a36e0 1}\n       {x43140000 x4292f03f x3ff56440 1 x3ff56440 1}\n       {x43150000 x42959f99 x3f5d1980 1 x3f5d1980 1}\n       {x43160000 x429664a5 x3e14f100 1 0 1}}\n      {{x42540000 x4482f011 0 1 xc155e010 1}\n       {x42580000 x4481357d xc16c1de0 1 xc16c1de0 1}\n       {x425c0000 x447e7f33 xc1818810 1 xc1818810 1}\n       {x42600000 x447a5279 xc184a040 1 xc184a040 1}\n       {x42640000 x4476352f xc182e030 1 xc182e030 1}\n       {x42680000 x44722476 xc1844e80 1 xc1844e80 1}\n       {x426c0000 x446df047 xc18ad090 1 xc18ad090 1}\n       {x42700000 x4469776d xc197dd40 1 xc197dd40 1}\n       {x42740000 x44647273 xc1a96bc0 1 xc1a96bc0 1}\n       {x42780000 x445ee0b1 xc1bb3040 1 xc1bb3040 1}\n       {x427c0000 x4458bf6f xc1cca8a0 1 xc1cca8a0 1}\n       {x42800000 x44521627 xc1d9f4c0 1 xc1d9f4c0 1}\n       {x42820000 x444b2023 xc1dde530 1 xc1dde530 1}\n       {x42840000 x444437d4 xc1debcf0 1 xc1debcf0 1}\n       {x42860000 x443d3454 xc1d902c0 1 xc1d902c0 1}\n       {x42880000 x4436a7a8 xc1daad90 1 xc1daad90 1}\n       {x428a0000 x442f897b xc1d02e60 1 xc1d02e60 1}\n       {x428c0000 x4429a4c2 xc1b330c0 1 xc1b330c0 1}\n       {x428e0000 x4424566f xc1aec580 1 xc1aec580 1}\n       {x42900000 x441eb86a xc1b42e30 1 xc1b42e30 1}\n       {x42920000 x4419138c xc1bdfa90 1 xc1bdfa90 1}\n       {x42940000 x4412d8c1 xc1c5a5f0 1 xc1c5a5f0 1}\n       {x42960000 x440cb92d xc1c2f520 1 xc1c2f520 1}\n       {x42980000 x4406a96f xc1b63350 1 xc1b63350 1}\n       {x429a0000 x440155f8 xc1ae0ad0 1 xc1ae0ad0 1}\n       {x429c0000 x43f79184 xc1b057e8 1 xc1b057e8 1}\n       {x429e0000 x43eca0f3 xc1ae4170 1 xc1ae4170 1}\n       {x42a00000 x43e1c956 xc1adb580 1 xc1adb580 1}\n       {x42a20000 x43d6ea43 xc1ae6138 1 xc1ae6138 1}\n       {x42a40000 x43cbfd2f xc1aea4c8 1 xc1aea4c8 1}\n       {x42a60000 x43c115aa xc1af5570 1 xc1af5570 1}\n       {x42a80000 x43b61281 xc1afad90 1 xc1afad90 1}\n       {x42aa0000 x43ab1ff8 xc1ac1288 1 xc1ac1288 1}\n       {x42ac0000 x43a09030 xc1a69f28 1 xc1a69f28 1}\n       {x42ae0000 x43964c13 xc1a22b08 1 xc1a22b08 1}\n       {x42b00000 x438c4acf xc1a015f8 1 xc1a015f8 1}\n       {x42b20000 x43824954 xc19fc2a0 1 xc19fc2a0 1}\n       {x42b40000 x4370a4f6 xc1a0759c 1 xc1a0759c 1}\n       {x42b60000 x435c7541 xc1a16fac 1 xc1a16fac 1}\n       {x42b80000 x4348490b xc19e6e54 1 xc19e6e54 1}\n       {x42ba0000 x4334d9ac xc1969294 1 xc1969294 1}\n       {x42bc0000 x4322a466 xc18c934c 1 xc18c934c 1}\n       {x42be0000 x4311b4d9 xc181ecf8 1 xc181ecf8 1}\n       {x42c00000 x43022928 xc170585c 1 xc170585c 1}\n       {x42c20000 x42e7539b xc15b96b4 1 xc15b96b4 1}\n       {x42c40000 x42cd6ca3 xc14e604c 1 xc14e604c 1}\n       {x42c60000 x42b3bb88 xc14f7c94 1 xc14f7c94 1}\n       {x42c80000 x42998d7e xc15166ac 1 xc15166ac 1}\n       {x42ca0000 x427ec3ba xc150e048 1 xc150e048 1}\n       {x42cc0000 x424aaad8 xc14dc0fa 1 xc14dc0fa 1}\n       {x42ce0000 x4217e33d xc142520f 1 xc142520f 1}\n       {x42d00000 x41d303a1 xc1305e75 1 xc1305e75 1}\n       {x42d20000 x417ed00a xc11ed618 1 xc11ed618 1}\n       {x42d40000 x40d0b623 xc10d3ffa 1 xc10d3ffa 1}\n       {x42d60000 xbfdd7f4d xc0f0f624 1 xc0f0f624 1}\n       {x42d80000 xc1089b12 xc0cbc9b1 1 xc0cbc9b1 1}\n       {x42da0000 xc167799b xc0b55322 1 xc0b55322 1}\n       {x42dc0000 xc19ef71a xc09f0bf3 1 xc09f0bf3 1}\n       {x42de0000 xc1c342c7 xc074f52c 1 xc074f52c 1}\n       {x42e00000 xc1dc3465 xc0113b00 1 xc0113b00 1}\n       {x42e20000 xc1e79187 xbf6b6dc0 1 xbf6b6dc0 1}\n       {x42e40000 xc1eaeb41 -}\n       {x42e60000 xc1e77780 x3f926a80 1 x3f926a80 1}\n       {x42e80000 xc1d89df1 x4009639c 1 x4009639c 1}\n       {x42ea0000 xc1c51e99 x401fbdf0 1 x401fbdf0 1}\n       {x42ec0000 xc1b0ae75 x401b3c90 1 x401b3c90 1}\n       {x42ee0000 xc19e4f75 x400efc18 1 x400efc18 1}\n       {x42f00000 xc18cef6f x4012b16e 1 x4012b16e 1}\n       {x42f20000 xc1734633 x401294dc 1 x401294dc 1}\n       {x42f40000 xc1509470 x4014fa84 1 x4014fa84 1}\n       {x42f60000 xc128c8f1 x402ba698 1 x402ba698 1}\n       {x42f80000 xc0f58248 x404c967f 1 x404c967f 1}\n       {x42fa0000 xc084fb63 x40758248 1 x40758248 1}\n       {x42fc0000 0 x40854eb2 1 x40854eb2 1}\n       {x42fe0000 x4085a201 x40831c6b 1 x40831c6b 1}\n       {x43000000 x41031c6b x40780c33 1 x40780c33 1}\n       {x43010000 x413ed71a x407cac72 1 x407cac72 1}\n       {x43020000 x4180b952 x40865e1a 1 x40865e1a 1}\n       {x43030000 x41a29a9a x408d11c0 1 x408d11c0 1}\n       {x43040000 x41c74232 x40904d9c 1 x40904d9c 1}\n       {x43050000 x41eac168 x4094cba4 1 x4094cba4 1}\n       {x43060000 x4208d402 x409ea348 1 x409ea348 1}\n       {x43070000 x421d0986 x40aa3f20 1 x40aa3f20 1}\n       {x43080000 x423363ca x40bb4040 1 x40bb4040 1}\n       {x43090000 x424bd996 x40c666f4 1 x40c666f4 1}\n       {x430a0000 x4264fd87 x40c88788 1 x40c88788 1}\n       {x430b0000 x427dfb78 x40c5b37c 1 x40c5b37c 1}\n       {x430c0000 x428b3533 x40cbbac8 1 x40cbbac8 1}\n       {x430d0000 x42987515 x40dad990 1 x40dad990 1}\n       {x430e0000 x42a69065 x40e013f8 1 x40e013f8 1}\n       {x430f0000 x42b47794 x40d7d360 1 x40d7d360 1}\n       {x43100000 x42c18ad1 x40ce7f18 1 x40ce7f18 1}\n       {x43110000 x42ce4777 x40c87c18 1 x40c87c18 1}\n       {x43120000 x42da9a54 x40bddaa0 1 x40bddaa0 1}\n       {x43130000 x42e602cb x40b51780 1 x40b51780 1}\n       {x43140000 x42f13d44 x40aa9a70 1 x40aa9a70 1}\n       {x43150000 x42fb5619 x40813ed0 1 x40813ed0 1}\n       {x43160000 x4300b28f x40219220 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke77 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42a306a8 x441380e6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke78 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42a306a8 x441380e6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc302ec78 0 1 x4080dca4 1}\n       {x42580000 xc2fd2bbb x409ec0a8 1 x409ec0a8 1}\n       {x425c0000 xc2f200db x40c556d8 1 x40c556d8 1}\n       {x42600000 xc2e480e0 x40dfddf0 1 x40dfddf0 1}\n       {x42640000 xc2d6051d x40e34ee8 1 x40e34ee8 1}\n       {x42680000 xc2c81703 x40d5f250 1 x40d5f250 1}\n       {x426c0000 xc2bb46d3 x40ccdd50 1 x40ccdd50 1}\n       {x42700000 xc2ae7b59 x40d078a8 1 x40d078a8 1}\n       {x42740000 xc2a137be x40e1b580 1 x40e1b580 1}\n       {x42780000 xc29244a9 x40ed8a30 1 x40ed8a30 1}\n       {x427c0000 xc2838678 x40f89104 1 x40f89104 1}\n       {x42800000 xc2666511 x40fdda3c 1 x40fdda3c 1}\n       {x42820000 xc2479661 x40f0b6ec 1 x40f0b6ec 1}\n       {x42840000 xc22a3756 x40e9f170 1 x40e9f170 1}\n       {x42860000 xc20d1a05 x40c4d574 1 x40c4d574 1}\n       {x42880000 xc1f203f2 x40cd8ba0 1 x40cd8ba0 1}\n       {x428a0000 xc1b36e3a x40b4b328 1 x40b4b328 1}\n       {x428c0000 xc197aa5e x405e4ed6 1 x405e4ed6 1}\n       {x428e0000 xc177b509 x406ad96e 1 x406ad96e 1}\n       {x42900000 xc139e805 x40344388 1 x40344388 1}\n       {x42920000 xc11d9345 x3f19d2f0 1 x3f19d2f0 1}\n       {x42940000 xc11a5ee0 x3e6b0040 1 x3e6b0040 1}\n       {x42960000 xc1163b43 x3ed81420 1 x3ed81420 1}\n       {x42980000 xc10cdd9e x3fa47d38 1 x3fa47d38 1}\n       {x429a0000 xc0da37ea x3f9eff04 1 x3f9eff04 1}\n       {x429c0000 xc0ca3bba -}\n       {x429e0000 xc0e8b403 xbf49bbd0 1 xbf49bbd0 1}\n       {x42a00000 xc0fcaaae xbef6a0f8 1 xbef6a0f8 1}\n       {x42a20000 xc103c411 xbe9a2240 1 xbe9a2240 1}\n       {x42a40000 xc107f77b xbe749a00 1 xbe749a00 1}\n       {x42a60000 xc10b68e1 xbed9e240 1 xbed9e240 1}\n       {x42a80000 xc115959f xbf2a2060 1 xbf2a2060 1}\n       {x42aa0000 xc120aced xbf3ce8c0 1 xbf3ce8c0 1}\n       {x42ac0000 xc12d32b7 xbfa302d0 1 xbfa302d0 1}\n       {x42ae0000 xc1496da1 xc006faf6 1 xc006faf6 1}\n       {x42b00000 xc170b032 xc027cfde 1 xc027cfde 1}\n       {x42b20000 xc18eaac8 xc02f56f4 1 xc02f56f4 1}\n       {x42b40000 xc1a42dd6 xc028f5f8 1 xc028f5f8 1}\n       {x42b60000 xc1b8e846 xc0219da0 1 xc0219da0 1}\n       {x42b80000 xc1cc953e xc01c16d8 1 xc01c16d8 1}\n       {x42ba0000 xc1dfedfc xc01eeb54 1 xc01eeb54 1}\n       {x42bc0000 xc1f45013 xc0214a40 1 xc0214a40 1}\n       {x42be0000 xc2042046 xc024802c 1 xc024802c 1}\n       {x42c00000 xc20eb80f xc0269010 1 xc0269010 1}\n       {x42c20000 xc218f248 xbfeec1e0 1 xbfeec1e0 1}\n       {x42c40000 xc21da42d xbf521da0 1 xbf521da0 1}\n       {x42c60000 xc21f8335 xbf023560 1 xbf023560 1}\n       {x42c80000 xc221b5d8 -}\n       {x42ca0000 xc21dea9f x3f6b61c0 1 x3f6b61c0 1}\n       {x42cc0000 xc21a5aca -}\n       {x42ce0000 xc21bb90b xbec82740 1 xbec82740 1}\n       {x42d00000 xc21d7b67 xbf0c2240 1 xbf0c2240 1}\n       {x42d20000 xc2201a1d xbf07a9e0 1 xbf07a9e0 1}\n       {x42d40000 xc221b8b6 xbedf0580 1 xbedf0580 1}\n       {x42d60000 xc2239633 xbf3a46e0 1 xbf3a46e0 1}\n       {x42d80000 xc2278aed xbe9f3480 1 xbe9f3480 1}\n       {x42da0000 xc227f510 xbe9f3480 1 xbe9f3480 1}\n       {x42dc0000 xc22a127c -}\n       {x42de0000 xc228ad45 x3e9d2b80 1 x3e9d2b80 1}\n       {x42e00000 xc2279dce x3f223920 1 x3f223920 1}\n       {x42e20000 xc2239b7c x3f91b9a0 1 x3f91b9a0 1}\n       {x42e40000 xc21e8234 x3fed5110 1 x3fed5110 1}\n       {x42e60000 xc214c66b x3fff6d70 1 x3fff6d70 1}\n       {x42e80000 xc20e8b5d x3fd45ad0 1 x3fd45ad0 1}\n       {x42ea0000 xc20780be x3fda2450 1 x3fda2450 1}\n       {x42ec0000 xc200e918 x401f0e54 1 x401f0e54 1}\n       {x42ee0000 xc1e73de7 x40470a90 1 x40470a90 1}\n       {x42f00000 xc1d00f8c x40536868 1 x40536868 1}\n       {x42f20000 xc1b263cd x4074befc 1 x4074befc 1}\n       {x42f40000 xc192dfcd x4087f555 1 x4087f555 1}\n       {x42f60000 xc15cd245 x408f66f4 1 x408f66f4 1}\n       {x42f80000 xc11658a6 x4093adb8 1 x4093adb8 1}\n       {x42fa0000 xc092491b x409658a6 1 x409658a6 1}\n       {x42fc0000 0 x409e4655 1 x409e4655 1}\n       {x42fe0000 x40aa438f x409da073 1 x409da073 1}\n       {x43000000 x411da073 x408f8a88 1 x408f8a88 1}\n       {x43010000 x4164ac50 x40937be5 1 x40937be5 1}\n       {x43020000 x41988e2c x409443ae 1 x409443ae 1}\n       {x43030000 x41bc77ff x40826842 1 x40826842 1}\n       {x43040000 x41d9c24d x4077f8e8 1 x4077f8e8 1}\n       {x43050000 x41fa7639 x4073a3e4 1 x4073a3e4 1}\n       {x43060000 x420b55a3 x403b77d4 1 x403b77d4 1}\n       {x43070000 x4214aa17 x403c6a10 1 x403c6a10 1}\n       {x43080000 x4222e2e5 x403fbdc0 1 x403fbdc0 1}\n       {x43090000 x422ca1cf x401e0ae8 1 x401e0ae8 1}\n       {x430a0000 x4236a442 x4022d330 1 x4022d330 1}\n       {x430b0000 x4240fc35 x40232e30 1 x40232e30 1}\n       {x430c0000 x424b0a08 x401da238 1 x401da238 1}\n       {x430d0000 x4254b07c x401abe08 1 x401abe08 1}\n       {x430e0000 x425e61c9 x4025ba78 1 x4025ba78 1}\n       {x430f0000 x426967cb x40374258 1 x40374258 1}\n       {x43100000 x42754a14 x403d6168 1 x403d6168 1}\n       {x43110000 x428089fc x403bc0e0 1 x403bc0e0 1}\n       {x43120000 x42866118 x40370a90 1 x40370a90 1}\n       {x43130000 x428bfaa5 x402494f0 1 x402494f0 1}\n       {x43140000 x4290aa67 x3fe264c0 1 x3fe264c0 1}\n       {x43150000 x42930dcb x3f3e3540 1 x3f3e3540 1}\n       {x43160000 x4293a33c x3d87d100 1 0 1}}\n      {{x42540000 x4482c65a 0 1 xc155e220 1}\n       {x42580000 x44810bbf xc16c2440 1 xc16c2440 1}\n       {x425c0000 x447e2b92 xc1818940 1 xc1818940 1}\n       {x42600000 x4479feea xc184a080 1 xc184a080 1}\n       {x42640000 x4475e18a xc1836100 1 xc1836100 1}\n       {x42680000 x4471c8da xc184ca90 1 xc184ca90 1}\n       {x426c0000 x446d94e1 xc18acc30 1 xc18acc30 1}\n       {x42700000 x44691c17 xc197daa0 1 xc197daa0 1}\n       {x42740000 x44641737 xc1a96880 1 xc1a96880 1}\n       {x42780000 x445e858f xc1bb2cb0 1 xc1bb2cb0 1}\n       {x427c0000 x4458646c xc1cca680 1 xc1cca680 1}\n       {x42800000 x4451bb27 xc1d9f340 1 xc1d9f340 1}\n       {x42820000 x444ac538 xc1dde380 1 xc1dde380 1}\n       {x42840000 x4443dcef xc1deba90 1 xc1deba90 1}\n       {x42860000 x443cd98f xc1d95dc0 1 xc1d95dc0 1}\n       {x42880000 x44364713 xc1db0ae0 1 xc1db0ae0 1}\n       {x428a0000 x442f28e1 xc1d26750 1 xc1d26750 1}\n       {x428c0000 x4429209e xc1b5a3d0 1 xc1b5a3d0 1}\n       {x428e0000 x4423cea4 xc1af4560 1 xc1af4560 1}\n       {x42900000 x441e2c48 xc1b47050 1 xc1b47050 1}\n       {x42920000 x4418879f xc1bdba40 1 xc1bdba40 1}\n       {x42940000 x441250a4 xc1c589a0 1 xc1c589a0 1}\n       {x42960000 x440c2f05 xc1c31920 1 xc1c31920 1}\n       {x42980000 x44061f12 xc1b66180 1 xc1b66180 1}\n       {x429a0000 x4400c8ed xc1ae2358 1 xc1ae2358 1}\n       {x429c0000 x43f679b9 xc1b01738 1 xc1b01738 1}\n       {x429e0000 x43eb8ef3 xc1ae4680 1 xc1ae4680 1}\n       {x42a00000 x43e0b0e9 xc1ae0a08 1 xc1ae0a08 1}\n       {x42a20000 x43d5cdb2 xc1aeb2b0 1 xc1aeb2b0 1}\n       {x42a40000 x43cada93 xc1af92d0 1 xc1af92d0 1}\n       {x42a60000 x43bfdb58 xc1b00c58 1 xc1b00c58 1}\n       {x42a80000 x43b4d908 xc1affdf8 1 xc1affdf8 1}\n       {x42aa0000 x43a9db99 xc1ad4690 1 xc1ad4690 1}\n       {x42ac0000 x439f3036 xc1a6c980 1 xc1a6c980 1}\n       {x42ae0000 x43950269 xc1a1aeb0 1 xc1a1aeb0 1}\n       {x42b00000 x438afa60 xc1a0d388 1 xc1a0d388 1}\n       {x42b20000 x4380e7f8 xc1a073cc 1 xc1a073cc 1}\n       {x42b40000 x436dd7cd xc1a12334 1 xc1a12334 1}\n       {x42b60000 x43598723 xc1a24a58 1 xc1a24a58 1}\n       {x42b80000 x43454537 xc19ee56c 1 xc19ee56c 1}\n       {x42ba0000 x4331cdc8 xc19634e0 1 xc19634e0 1}\n       {x42bc0000 x431fb7ff xc18d04a4 1 xc18d04a4 1}\n       {x42be0000 x430e8c9f xc183917e 1 xc183917e 1}\n       {x42c00000 x42fda73f xc173131c 1 xc173131c 1}\n       {x42c20000 x42e05477 xc15b81c8 1 xc15b81c8 1}\n       {x42c40000 x42c6c6cd xc14810cc 1 xc14810cc 1}\n       {x42c60000 x42ae5044 xc14514fc 1 xc14514fc 1}\n       {x42c80000 x4295818e xc14cff8a 1 xc14cff8a 1}\n       {x42ca0000 x427620c3 xc1523d60 1 xc1523d60 1}\n       {x42cc0000 x4241e46c xc14c87b2 1 xc14c87b2 1}\n       {x42ce0000 x420fdcea xc13d6586 1 xc13d6586 1}\n       {x42d00000 x41c66352 xc122aff5 1 xc122aff5 1}\n       {x42d20000 x417a13be xc10bdd66 1 xc10bdd66 1}\n       {x42d40000 x40ea17b0 xc1067741 1 xc1067741 1}\n       {x42d60000 xbf96d61f xc0eeb3d8 1 xc0eeb3d8 1}\n       {x42d80000 xc0f35001 xc0d1b3ec 1 xc0d1b3ec 1}\n       {x42da0000 xc1648eb0 xc0b9dc9e 1 xc0b9dc9e 1}\n       {x42dc0000 xc199c24f xc0a4d0f6 1 xc0a4d0f6 1}\n       {x42de0000 xc1c4afd3 xc06c4888 1 xc06c4888 1}\n       {x42e00000 xc1d4d471 xbfe01cd0 1 xbfe01cd0 1}\n       {x42e20000 xc1e0b36d xbf7123e0 1 xbf7123e0 1}\n       {x42e40000 xc1e3e6af -}\n       {x42e60000 xc1dcbd26 x3fce9518 1 x3fce9518 1}\n       {x42e80000 xc1ca140c x4014334c 1 x4014334c 1}\n       {x42ea0000 xc1b7b053 x40301848 1 x40301848 1}\n       {x42ec0000 xc19e0dfa x403143a4 1 x403143a4 1}\n       {x42ee0000 xc18b5f6a x3fd57db0 1 x3fd57db0 1}\n       {x42f00000 xc1835e44 x3ff1b35c 1 x3ff1b35c 1}\n       {x42f20000 xc15a51fd x3ffd8d5c 1 x3ffd8d5c 1}\n       {x42f40000 xc1475931 x3ffa41f0 1 x3ffa41f0 1}\n       {x42f60000 xc11bc181 x4022b0e1 1 x4022b0e1 1}\n       {x42f80000 xc0ec0181 x40306b15 1 x40306b15 1}\n       {x42fa0000 xc08717ed x406c0181 1 x406c0181 1}\n       {x42fc0000 0 x40873f4a 1 x40873f4a 1}\n       {x42fe0000 x408766a6 x408cf12d 1 x408cf12d 1}\n       {x43000000 x410cf12d x40778c80 1 x40778c80 1}\n       {x43010000 x413f7993 x406aad26 1 x406aad26 1}\n       {x43020000 x418123e0 x40559fe6 1 x40559fe6 1}\n       {x43030000 x419524c3 x4074facc 1 x4074facc 1}\n       {x43040000 x41be6293 x40722dc8 1 x40722dc8 1}\n       {x43050000 x41d1b035 x40000f68 1 x40000f68 1}\n       {x43060000 x41de666d x40042da0 1 x40042da0 1}\n       {x43070000 x41f2bb9d x400b1844 1 x400b1844 1}\n       {x43080000 x4200963f x401453d4 1 x401453d4 1}\n       {x43090000 x420be849 x40829f78 1 x40829f78 1}\n       {x430a0000 x42213e1d x40aa9574 1 x40aa9574 1}\n       {x430b0000 x42368da6 x40ac28f0 1 x40ac28f0 1}\n       {x430c0000 x424c4859 x40b2b24c 1 x40b2b24c 1}\n       {x430d0000 x42633a39 x40cb1e74 1 x40cb1e74 1}\n       {x430e0000 x427f0ff6 x40dc83fc 1 x40dc83fc 1}\n       {x430f0000 x428d2d9c x40d46000 1 x40d46000 1}\n       {x43100000 x429a13fb x40cc4d00 1 x40cc4d00 1}\n       {x43110000 x42a6b73c x40c769e8 1 x40c769e8 1}\n       {x43120000 x42b30138 x40bbb6b8 1 x40bbb6b8 1}\n       {x43130000 x42be2e13 x40aee8f8 1 x40aee8f8 1}\n       {x43140000 x42c8de57 x40a27538 1 x40a27538 1}\n       {x43150000 x42d27cba x40782d60 1 x40782d60 1}\n       {x43160000 x42d8612d x401ebee0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke79 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44404550 x43e116c9 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke80 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44404550 x43e116c9 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c2cd67 0 1 x408daac0 1}\n       {x42580000 xc3c04295 x40ccc800 1 x40ccc800 1}\n       {x425c0000 xc3bc6727 x4105a960 1 x4105a960 1}\n       {x42600000 xc3b7e7ff x41141840 1 x41141840 1}\n       {x42640000 xc3b325a3 x4116bf60 1 x4116bf60 1}\n       {x42680000 xc3ae7c09 x411722e0 1 x411722e0 1}\n       {x426c0000 xc3a9b375 x41141f40 1 x41141f40 1}\n       {x42700000 xc3a53a15 x41199830 1 x41199830 1}\n       {x42740000 xc3a019f2 x41217030 1 x41217030 1}\n       {x42780000 xc39b2312 x41181160 1 x41181160 1}\n       {x427c0000 xc39698dc x41169e90 1 x41169e90 1}\n       {x42800000 xc391b929 x411c3360 1 x411c3360 1}\n       {x42820000 xc38cd5a6 x410bd890 1 x410bd890 1}\n       {x42840000 xc388fba0 x40f0f080 1 x40f0f080 1}\n       {x42860000 xc3854e22 x40ce1420 1 x40ce1420 1}\n       {x42880000 xc3828aff x40d93810 1 x40d93810 1}\n       {x428a0000 xc37d08c3 x40f26a50 1 x40f26a50 1}\n       {x428c0000 xc375ef59 x40da9470 1 x40da9470 1}\n       {x428e0000 xc36f5f7c x40da6e20 1 x40da6e20 1}\n       {x42900000 xc3684877 x40e22d30 1 x40e22d30 1}\n       {x42920000 xc3613ca9 x40d59360 1 x40d59360 1}\n       {x42940000 xc35aef41 x40b67af0 1 x40b67af0 1}\n       {x42960000 xc355d4fa x409ece30 1 x409ece30 1}\n       {x42980000 xc351025e x4097ff70 1 x4097ff70 1}\n       {x429a0000 xc34c5503 x408c40c0 1 x408c40c0 1}\n       {x429c0000 xc3483e52 x407ba2e0 1 x407ba2e0 1}\n       {x429e0000 xc34477ec x40710720 1 x40710720 1}\n       {x42a00000 xc340b619 x4080d9f0 1 x4080d9f0 1}\n       {x42a20000 xc33c6a4d x409089f0 1 x409089f0 1}\n       {x42a40000 xc337ad7a x409d70b0 1 x409d70b0 1}\n       {x42a60000 xc3329342 x40997820 1 x40997820 1}\n       {x42a80000 xc32e15f8 x40920a60 1 x40920a60 1}\n       {x42aa0000 xc329729c x40960f70 1 x40960f70 1}\n       {x42ac0000 xc324b501 x4088e300 1 x4088e300 1}\n       {x42ae0000 xc320e46c x40529860 1 x40529860 1}\n       {x42b00000 xc31e203e x401c3bc0 1 x401c3bc0 1}\n       {x42b20000 xc31c028e x3ff6d840 1 x3ff6d840 1}\n       {x42b40000 xc31a44dd x3fea2880 1 x3fea2880 1}\n       {x42b60000 xc31859ec x3ff42000 1 x3ff42000 1}\n       {x42b80000 xc316745d x3ff14500 1 x3ff14500 1}\n       {x42ba0000 xc31494d8 x3febb800 1 x3febb800 1}\n       {x42bc0000 xc312c57d x3fee87c0 1 x3fee87c0 1}\n       {x42be0000 xc310dab9 x3ff5c500 1 x3ff5c500 1}\n       {x42c00000 xc30eee69 x3ff15200 1 x3ff15200 1}\n       {x42c20000 xc30d1571 x40499020 1 x40499020 1}\n       {x42c40000 xc308a1e8 x40911380 1 x40911380 1}\n       {x42c60000 xc3040439 x40997b18 1 x40997b18 1}\n       {x42c80000 xc2fe146d x409eaaa0 1 x409eaaa0 1}\n       {x42ca0000 xc2f4331e x409f8650 1 x409f8650 1}\n       {x42cc0000 xc2ea23a3 x409e1968 1 x409e1968 1}\n       {x42ce0000 xc2e06ff1 x4093cc30 1 x4093cc30 1}\n       {x42d00000 xc2d7aa1d x408860a0 1 x408860a0 1}\n       {x42d20000 xc2cf63dd x407915d0 1 x407915d0 1}\n       {x42d40000 xc2c818c0 x4066f110 1 x4066f110 1}\n       {x42d60000 xc2c0f4cc x405bdd60 1 x405bdd60 1}\n       {x42d80000 xc2ba5aea x404eb930 1 x404eb930 1}\n       {x42da0000 xc2b40939 x404ce600 1 x404ce600 1}\n       {x42dc0000 xc2ad8c8a x40567870 1 x40567870 1}\n       {x42de0000 xc2a6a1b2 x40629880 1 x40629880 1}\n       {x42e00000 xc29f6302 x406b12c0 1 x406b12c0 1}\n       {x42e20000 xc297f086 x40705450 1 x40705450 1}\n       {x42e40000 xc2905dbd x4074dfe0 1 x4074dfe0 1}\n       {x42e60000 xc288a288 x407e06c0 1 x407e06c0 1}\n       {x42e80000 xc2807d51 x408847b0 1 x408847b0 1}\n       {x42ea0000 xc26f3324 x40943a2c 1 x40943a2c 1}\n       {x42ec0000 xc25bec17 x40a72b80 1 x40a72b80 1}\n       {x42ee0000 xc2456844 x40b96df8 1 x40b96df8 1}\n       {x42f00000 xc22d9099 x40cbbba8 1 x40cbbba8 1}\n       {x42f20000 xc212795a x40dcbe16 1 x40dcbe16 1}\n       {x42f40000 xc1ecc227 x40e9a704 1 x40e9a704 1}\n       {x42f60000 xc1b01f32 x40ecd249 1 x40ecd249 1}\n       {x42f80000 xc16cb205 x40ea9966 1 x40ea9966 1}\n       {x42fa0000 xc0eb49fd x40ecb205 1 x40ecb205 1}\n       {x42fc0000 0 x40ef5830 1 x40ef5830 1}\n       {x42fe0000 x40f36663 x40f21db4 1 x40f21db4 1}\n       {x43000000 x41721db4 x40ed97aa 1 x40ed97aa 1}\n       {x43010000 x41b3a56e x40e4cdf0 1 x40e4cdf0 1}\n       {x43020000 x41eb75d2 x40d98874 1 x40d98874 1}\n       {x43030000 x421034d4 x40ccb764 1 x40ccb764 1}\n       {x43040000 x4228e8c2 x40bc3604 1 x40bc3604 1}\n       {x43050000 x423f4255 x40aaa27c 1 x40aaa27c 1}\n       {x43060000 x42539161 x409c41bc 1 x409c41bc 1}\n       {x43070000 x426652c4 x40849fc0 1 x40849fc0 1}\n       {x43080000 x4274b951 x405bfc50 1 x405bfc50 1}\n       {x43090000 x4280e927 x40495668 1 x40495668 1}\n       {x430a0000 x4286f20f x403953e0 1 x403953e0 1}\n       {x430b0000 x428c7e65 x402708e0 1 x402708e0 1}\n       {x430c0000 x4291629d x4017f0d0 1 x4017f0d0 1}\n       {x430d0000 x4295fd72 x4013b0c0 1 x4013b0c0 1}\n       {x430e0000 x429a9da9 x401c49a0 1 x401c49a0 1}\n       {x430f0000 x429fc20c x402c5680 1 x402c5680 1}\n       {x43100000 x42a56311 x4034e670 1 x4034e670 1}\n       {x43110000 x42ab1073 x40346630 1 x40346630 1}\n       {x43120000 x42b0a974 x403081e0 1 x403081e0 1}\n       {x43130000 x42b61891 x40194080 1 x40194080 1}\n       {x43140000 x42ba3d7c x3fcfba20 1 x3fcfba20 1}\n       {x43150000 x42bc9662 x3f38e0c0 1 x3f38e0c0 1}\n       {x43160000 x42bd20ff x3d385600 1 0 1}}\n      {{x42540000 x4485de54 0 1 xc1529620 1}\n       {x42580000 x4484234d xc1735e40 1 xc1735e40 1}\n       {x425c0000 x448210db xc186cbb0 1 xc186cbb0 1}\n       {x42600000 x447fd9df xc186dae0 1 xc186dae0 1}\n       {x42640000 x447bb408 xc184cae0 1 xc184cae0 1}\n       {x42680000 x44778d31 xc18639c0 1 xc18639c0 1}\n       {x426c0000 x4473506c xc18adad0 1 xc18adad0 1}\n       {x42700000 x446edf84 xc193a170 1 xc193a170 1}\n       {x42740000 x446a1655 xc1a444a0 1 xc1a444a0 1}\n       {x42780000 x44649b3a xc1b44340 1 xc1b44340 1}\n       {x427c0000 x445ed221 xc1c3d350 1 xc1c3d350 1}\n       {x42800000 x44585e05 xc1cc4c40 1 xc1cc4c40 1}\n       {x42820000 x44520d5d xc1cb6a70 1 xc1cb6a70 1}\n       {x42840000 x444ba75e xc1cb1630 1 xc1cb1630 1}\n       {x42860000 x44455bfa xc1ceb650 1 xc1ceb650 1}\n       {x42880000 x443ebbf9 xc1d339d0 1 xc1d339d0 1}\n       {x428a0000 x4438285d xc1d39380 1 xc1d39380 1}\n       {x428c0000 x443182c1 xc1cf32b0 1 xc1cf32b0 1}\n       {x428e0000 x442b3532 xc1cc95f0 1 xc1cc95f0 1}\n       {x42900000 x4424b962 xc1d47770 1 xc1d47770 1}\n       {x42920000 x441dedbb xc1d7a8a0 1 xc1d7a8a0 1}\n       {x42940000 x44173ed8 xc1cf8bb0 1 xc1cf8bb0 1}\n       {x42960000 x4410f500 xc1c66760 1 xc1c66760 1}\n       {x42980000 x440ad862 xc1bc2610 1 xc1bc2610 1}\n       {x429a0000 x4405329f xc1b1a3c0 1 xc1b1a3c0 1}\n       {x429c0000 x43ff7c4c xc1ae02f8 1 xc1ae02f8 1}\n       {x429e0000 x43f4a4df xc1aad858 1 xc1aad858 1}\n       {x42a00000 x43ea2141 xc1a68098 1 xc1a68098 1}\n       {x42a20000 x43dfd4cc xc1a82e40 1 xc1a82e40 1}\n       {x42a40000 x43d51b79 xc1ab7198 1 xc1ab7198 1}\n       {x42a60000 x43ca6699 xc1a13138 1 xc1a13138 1}\n       {x42a80000 x43c0f552 xc197df40 1 xc197df40 1}\n       {x42aa0000 x43b76ab1 xc19bf878 1 xc19bf878 1}\n       {x42ac0000 x43ad7643 xc1a02b58 1 xc1a02b58 1}\n       {x42ae0000 x43a36546 xc19f8728 1 xc19f8728 1}\n       {x42b00000 x4399855e xc19f0570 1 xc19f0570 1}\n       {x42b20000 x438f8498 xc1a11f08 1 xc1a11f08 1}\n       {x42b40000 x4385617d xc1a39530 1 xc1a39530 1}\n       {x42b60000 x437623e4 xc1a7040c 1 xc1a7040c 1}\n       {x42b80000 x436101f7 xc1a50f68 1 xc1a50f68 1}\n       {x42ba0000 x434ce00a xc19f7e54 1 xc19f7e54 1}\n       {x42bc0000 x43392262 xc1978f70 1 xc1978f70 1}\n       {x42be0000 x4326fc2e xc18bcbd8 1 xc18bcbd8 1}\n       {x42c00000 x43162f6c xc18085ac 1 xc18085ac 1}\n       {x42c20000 x4306dac3 xc16c60e4 1 xc16c60e4 1}\n       {x42c40000 x42f1469f xc1611b54 1 xc1611b54 1}\n       {x42c60000 x42d56eb1 xc15a43b4 1 xc15a43b4 1}\n       {x42c80000 x42bab5b2 xc156ffa8 1 xc156ffa8 1}\n       {x42ca0000 x429faec7 xc15a55b0 1 xc15a55b0 1}\n       {x42cc0000 x42842046 xc1442b8e 1 xc1442b8e 1}\n       {x42ce0000 x425d47c7 xc131f3b6 1 xc131f3b6 1}\n       {x42d00000 x422f46b1 xc13b92e3 1 xc13b92e3 1}\n       {x42d20000 x41fefcab xc1353272 1 xc1353272 1}\n       {x42d40000 x41a95af0 xc122795a 1 xc122795a 1}\n       {x42d60000 x413906a2 xc11047c5 1 xc11047c5 1}\n       {x42d80000 x40489956 xc101c5b8 1 xc101c5b8 1}\n       {x42da0000 xc095099b xc0efc6ce 1 xc0efc6ce 1}\n       {x42dc0000 xc13da079 xc0d47fb2 1 xc0d47fb2 1}\n       {x42de0000 xc18f8240 xc0a555ab 1 xc0a555ab 1}\n       {x42e00000 xc1b17b12 xc058f63c 1 xc058f63c 1}\n       {x42e20000 xc1c5bfcf xbff71240 1 xbff71240 1}\n       {x42e40000 xc1d05d5a xbf4e5510 1 xbf4e5510 1}\n       {x42e60000 xc1d2a520 -}\n       {x42e80000 xc1c7507f x3fdc7808 1 x3fdc7808 1}\n       {x42ea0000 xc1b7161f x3ff685d8 1 x3ff685d8 1}\n       {x42ec0000 xc1a87fc4 x3fe912e0 1 x3fe912e0 1}\n       {x42ee0000 xc199f3c3 x3ffc1ed8 1 x3ffc1ed8 1}\n       {x42f00000 xc188fbe9 x4004310e 1 x4004310e 1}\n       {x42f20000 xc171ceff x400719e4 1 x400719e4 1}\n       {x42f40000 xc14e6ae0 x400f6d86 1 x400f6d86 1}\n       {x42f60000 xc12a183c x4028a5e9 1 x4028a5e9 1}\n       {x42f80000 xc0f42fd7 x404bcd77 1 x404bcd77 1}\n       {x42fa0000 xc0886301 x40742fd7 1 x40742fd7 1}\n       {x42fc0000 0 x408774a9 1 x408774a9 1}\n       {x42fe0000 x40868651 x408a1f86 1 x408a1f86 1}\n       {x43000000 x410a1f86 x408fe190 1 x408fe190 1}\n       {x43010000 x415324b8 x409945f6 1 x409945f6 1}\n       {x43020000 x4191b2be x40a5f64e 1 x40a5f64e 1}\n       {x43030000 x41bc8d83 x40b04418 1 x40b04418 1}\n       {x43040000 x41e9d4ca x40baa186 1 x40baa186 1}\n       {x43050000 x420cef23 x40be7094 1 x40be7094 1}\n       {x43060000 x4224868a x40d50440 1 x40d50440 1}\n       {x43070000 x42423033 x40f2d590 1 x40f2d590 1}\n       {x43080000 x42613bee x40f882ac 1 x40f882ac 1}\n       {x43090000 x4280286f x40f29308 1 x40f29308 1}\n       {x430a0000 x428ef058 x40e84498 1 x40e84498 1}\n       {x430b0000 x429d3102 x40df2080 1 x40df2080 1}\n       {x430c0000 x42aad468 x40e09cb8 1 x40e09cb8 1}\n       {x430d0000 x42b94499 x40e78188 1 x40e78188 1}\n       {x430e0000 x42c7c499 x40e4f418 1 x40e4f418 1}\n       {x430f0000 x42d5e31c x40e2b3a0 1 x40e2b3a0 1}\n       {x43100000 x42e41b0d x40df31b0 1 x40df31b0 1}\n       {x43110000 x42f1c952 x40d79348 1 x40d79348 1}\n       {x43120000 x42ff0d76 x40ce38a0 1 x40ce38a0 1}\n       {x43130000 x4305c833 x40bca0f0 1 x40bca0f0 1}\n       {x43140000 x430b50ca x40a49160 1 x40a49160 1}\n       {x43150000 x43101149 x4070c340 1 x4070c340 1}\n       {x43160000 x4312d6e4 x4011b880 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke81 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4336c7f0 x43a0120d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke82 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4336c7f0 x43a0120d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2e4078b 0 1 x40808638 1}\n       {x42580000 xc2db5ed4 x409e95e0 1 x409e95e0 1}\n       {x425c0000 xc2d034cf x40c4db18 1 x40c4db18 1}\n       {x42600000 xc2c2c371 x40deea20 1 x40deea20 1}\n       {x42640000 xc2b4578b x40e259f8 1 x40e259f8 1}\n       {x42680000 xc2a67832 x40df0260 1 x40df0260 1}\n       {x426c0000 xc298773f x40e048f0 1 x40e048f0 1}\n       {x42700000 xc28a6f14 x40da5778 1 x40da5778 1}\n       {x42740000 xc27a58a0 x40e19390 1 x40e19390 1}\n       {x42780000 xc25c7944 x40ed6bd0 1 x40ed6bd0 1}\n       {x427c0000 xc23efdac x40f88a4c 1 x40f88a4c 1}\n       {x42800000 xc21e56b1 x40fdd66c 1 x40fdd66c 1}\n       {x42820000 xc1ff1022 x40f0a972 1 x40f0a972 1}\n       {x42840000 xc1c458a9 x40e9bdfe 1 x40e9bdfe 1}\n       {x42860000 xc18a3123 x40bbf5d4 1 x40bbf5d4 1}\n       {x42880000 xc14cbb7e x40c4c62d 1 x40c4c62d 1}\n       {x428a0000 xc09f3832 x4089bbf2 1 x4089bbf2 1}\n       {x428c0000 xc0629dc3 x4005e959 1 x4005e959 1}\n       {x428e0000 xbf4a76c8 x403c9dec 1 x403c9dec 1}\n       {x42900000 x40169e16 -}\n       {x42920000 x400a5b9f xbd294340 1 xbd294340 1}\n       {x42940000 x400979f0 -}\n       {x42960000 x400ef512 x3e748df8 1 x3e748df8 1}\n       {x42980000 x40280baf x3ee272ec 1 x3ee272ec 1}\n       {x429a0000 x404791cd x3ecbae60 1 x3ecbae60 1}\n       {x429c0000 x405af747 -}\n       {x429e0000 x4054d078 xbda6c800 1 xbda6c800 1}\n       {x42a00000 x40508ac7 -}\n       {x42a20000 x40555e97 -}\n       {x42a40000 x404e95be -}\n       {x42a60000 x4087e9a2 -}\n       {x42a80000 x401be0a0 xc0064e7a 1 xc0064e7a 1}\n       {x42aa0000 x3d4d93e3 xc002cd78 1 xc002cd78 1}\n       {x42ac0000 xbfd374a0 xbfeb18e3 1 xbfeb18e3 1}\n       {x42ae0000 xc067e293 xc01fb7c0 1 xc01fb7c0 1}\n       {x42b00000 xc0d494e8 xc04caf70 1 xc04caf70 1}\n       {x42b20000 xc120505d xc053cdfe 1 xc053cdfe 1}\n       {x42b40000 xc1543173 xc048fba6 1 xc048fba6 1}\n       {x42b60000 xc1826718 xc03b4556 1 xc03b4556 1}\n       {x42b80000 xc198ea0f xc03848d0 1 xc03848d0 1}\n       {x42ba0000 xc1b0794c xc0379f9c 1 xc0379f9c 1}\n       {x42bc0000 xc1c6d1f6 xc03a25cc 1 xc03a25cc 1}\n       {x42be0000 xc1df02bf xc0421490 1 xc0421490 1}\n       {x42c00000 xc1f7571a xc04c45ac 1 xc04c45ac 1}\n       {x42c20000 xc2090a15 xbf574840 1 xbf574840 1}\n       {x42c40000 xc20a2920 -}\n       {x42c60000 xc2094a28 -}\n       {x42c80000 xc209ba39 -}\n       {x42ca0000 xc20934c9 x3ec82800 1 x3ec82800 1}\n       {x42cc0000 xc20605b6 x3fd4f368 1 x3fd4f368 1}\n       {x42ce0000 xc1f7cb25 x3fb52990 1 x3fb52990 1}\n       {x42d00000 xc1f404f2 -}\n       {x42d20000 xc1f753b7 xbebaf100 1 xbebaf100 1}\n       {x42d40000 xc1f9dc7a xbf11d730 1 xbf11d730 1}\n       {x42d60000 xc2003895 xbf519f20 1 xbf519f20 1}\n       {x42d80000 xc2037b36 xbf254be0 1 xbf254be0 1}\n       {x42da0000 xc20562f4 xbe941580 1 xbe941580 1}\n       {x42dc0000 xc205cb8c xbe0b7300 1 xbe0b7300 1}\n       {x42de0000 xc20679da -}\n       {x42e00000 xc20644cc x3def0400 1 x3def0400 1}\n       {x42e20000 xc2058ad6 x3ee27140 1 x3ee27140 1}\n       {x42e40000 xc202bb07 x3f264380 1 x3f264380 1}\n       {x42e60000 xc20058ba x3f4591f0 1 x3f4591f0 1}\n       {x42e80000 xc1f91cef x3f8bb880 1 x3f8bb880 1}\n       {x42ea0000 xc1ef3a64 x3fd29730 1 x3fd29730 1}\n       {x42ec0000 xc1deca09 x40097648 1 x40097648 1}\n       {x42ee0000 xc1ccdcd2 x40292b2c 1 x40292b2c 1}\n       {x42f00000 xc1b47f3e x40462ce4 1 x40462ce4 1}\n       {x42f20000 xc19b5199 x405434ec 1 x405434ec 1}\n       {x42f40000 xc17ee406 x406e7348 1 x406e7348 1}\n       {x42f60000 xc13f698e x40800052 1 x40800052 1}\n       {x42f80000 xc0fdc769 x407d979c 1 x407d979c 1}\n       {x42fa0000 xc0813b80 x407dc769 1 x407dc769 1}\n       {x42fc0000 0 x40897cf8 1 x40897cf8 1}\n       {x42fe0000 x4091be6f x408e3e3f 1 x408e3e3f 1}\n       {x43000000 x410e3e3f x408be822 1 x408be822 1}\n       {x43010000 x4154c759 x40875ee3 1 x40875ee3 1}\n       {x43020000 x418ace91 x4081d303 1 x4081d303 1}\n       {x43030000 x41ab4d2e x4076cb28 1 x4076cb28 1}\n       {x43040000 x41c8815b x405b9320 1 x405b9320 1}\n       {x43050000 x41e231f6 x404a3a2c 1 x404a3a2c 1}\n       {x43060000 x41fb0fe6 x40425cb8 1 x40425cb8 1}\n       {x43070000 x42096492 x40106868 1 x40106868 1}\n       {x43080000 x420f9500 x3fc8ec80 1 x3fc8ec80 1}\n       {x43090000 x4215f35a x3fd13a00 1 x3fd13a00 1}\n       {x430a0000 x421ca8a0 x3fd1bb40 1 x3fd1bb40 1}\n       {x430b0000 x42230f0e x3fcf8ca0 1 x3fcf8ca0 1}\n       {x430c0000 x4229a16a x3fd398e0 1 x3fd398e0 1}\n       {x430d0000 x4230489c x3feaf800 1 x3feaf800 1}\n       {x430e0000 x423850ea x400b0678 1 x400b0678 1}\n       {x430f0000 x4241a96b x40193970 1 x40193970 1}\n       {x43100000 x424b7818 x4020ecb0 1 x4020ecb0 1}\n       {x43110000 x4255c701 x4025beb8 1 x4025beb8 1}\n       {x43120000 x42602fef x401e01e0 1 x401e01e0 1}\n       {x43130000 x4269873d x40075758 1 x40075758 1}\n       {x43140000 x42711ada x3fb68100 1 x3fb68100 1}\n       {x43150000 x4274ef4d -}\n       {x43160000 x42747f79 xbe27be00 1 0 1}}\n      {{x42540000 x447b0dac 0 1 xc155d830 1}\n       {x42580000 x447798ac xc16c0fa0 1 xc16c0fa0 1}\n       {x425c0000 x4473ad2f xc1818930 1 xc1818930 1}\n       {x42600000 x446f8019 xc184a200 1 xc184a200 1}\n       {x42640000 x446b630f xc18368b0 1 xc18368b0 1}\n       {x42680000 x4467498e xc1855480 1 xc1855480 1}\n       {x426c0000 x44630dc7 xc18bc8d0 1 xc18bc8d0 1}\n       {x42700000 x445e8d01 xc1986340 1 xc1986340 1}\n       {x42740000 x44598793 xc1a97890 1 xc1a97890 1}\n       {x42780000 x4453f578 xc1bb3ca0 1 xc1bb3ca0 1}\n       {x427c0000 x444dd3c9 xc1ccaeb0 1 xc1ccaeb0 1}\n       {x42800000 x44472a8d xc1d9f9b0 1 xc1d9f9b0 1}\n       {x42820000 x4440342e xc1dde970 1 xc1dde970 1}\n       {x42840000 x44394bf6 xc1dec130 1 xc1dec130 1}\n       {x42860000 x4432481b xc1d74ef0 1 xc1d74ef0 1}\n       {x42880000 x442bd707 xc1d8fa00 1 xc1d8fa00 1}\n       {x428a0000 x4424b87b xc1c9f280 1 xc1c9f280 1}\n       {x428c0000 x441f37df xc1ae0070 1 xc1ae0070 1}\n       {x428e0000 x4419d874 xc1b0a2d0 1 xc1b0a2d0 1}\n       {x42900000 x44142db2 xc1b60b50 1 xc1b60b50 1}\n       {x42920000 x440e77bf xc1b5c5d0 1 xc1b5c5d0 1}\n       {x42940000 x4408d155 xc1b569d0 1 xc1b569d0 1}\n       {x42960000 x44032122 xc1b43890 1 xc1b43890 1}\n       {x42980000 x43fb1b98 xc1ac3f50 1 xc1ac3f50 1}\n       {x429a0000 x43f0ba5a xc1a34ed8 1 xc1a34ed8 1}\n       {x429c0000 x43e6b1bd xc1a21178 1 xc1a21178 1}\n       {x429e0000 x43dc782b xc1a18da8 1 xc1a18da8 1}\n       {x42a00000 x43d28008 xc19e8148 1 xc19e8148 1}\n       {x42a20000 x43c8a802 xc1a177b8 1 xc1a177b8 1}\n       {x42a40000 x43be5111 xc1a84d28 1 xc1a84d28 1}\n       {x42a60000 x43b39e5d xc1a10e60 1 xc1a10e60 1}\n       {x42a80000 x43aa2f45 xc1952a38 1 xc1952a38 1}\n       {x42aa0000 x43a0f916 xc1964e70 1 xc1964e70 1}\n       {x42ac0000 x43976577 xc19924c8 1 xc19924c8 1}\n       {x42ae0000 x438dd47d xc195d998 1 xc195d998 1}\n       {x42b00000 x4384aa44 xc191775c 1 xc191775c 1}\n       {x42b20000 x43774b23 xc1903f74 1 xc1903f74 1}\n       {x42b40000 x436544ab xc19120e4 1 xc19120e4 1}\n       {x42b60000 x435302ea xc1949e08 1 xc1949e08 1}\n       {x42b80000 x43401d29 xc193cb00 1 xc193cb00 1}\n       {x42ba0000 x432e102a xc18eed60 1 xc18eed60 1}\n       {x42bc0000 x431c61d1 xc185ef84 1 xc185ef84 1}\n       {x42be0000 x430c9449 xc172a698 1 xc172a698 1}\n       {x42c00000 x42fc19fc xc15b05d4 1 xc15b05d4 1}\n       {x42c20000 x42e2671d xc147f7a0 1 xc147f7a0 1}\n       {x42c40000 x42ca1c14 xc144d290 1 xc144d290 1}\n       {x42c60000 x42b13279 xc140ec70 1 xc140ec70 1}\n       {x42c80000 x4299e0f8 xc13ae264 1 xc13ae264 1}\n       {x42ca0000 x428279e0 xc140e1bc 1 xc140e1bc 1}\n       {x42cc0000 x42535112 xc1332988 1 xc1332988 1}\n       {x42ce0000 x422b5efc xc11030fc 1 xc11030fc 1}\n       {x42d00000 x420b3894 xc10389c5 1 xc10389c5 1}\n       {x42d20000 x41d33433 xc102a85d 1 xc102a85d 1}\n       {x42d40000 x4193c8cb xc0e6e75d 1 xc0e6e75d 1}\n       {x42d60000 x413f8109 xc0c79f56 1 xc0c79f56 1}\n       {x42d80000 x40bfe480 xc0bb5b4b 1 xc0bb5b4b 1}\n       {x42da0000 x3e84b7bb xc0b92218 1 xc0b92218 1}\n       {x42dc0000 xc0b25fb0 xc0aabe7d 1 xc0aabe7d 1}\n       {x42de0000 xc12698bf xc0882a97 1 xc0882a97 1}\n       {x42e00000 xc1615a6f xc03cb2f2 1 xc03cb2f2 1}\n       {x42e20000 xc182791c xbff0036c 1 xbff0036c 1}\n       {x42e40000 xc18eada5 -}\n       {x42e60000 xc18e577d x3e013c00 1 x3e013c00 1}\n       {x42e80000 xc188f825 x3f8dcea0 1 x3f8dcea0 1}\n       {x42ea0000 xc1793b52 x3f87b76c 1 x3f87b76c 1}\n       {x42ec0000 xc170026f x3f546e40 1 x3f546e40 1}\n       {x42ee0000 xc15ead8a x3f87fdfc 1 x3f87fdfc 1}\n       {x42f00000 xc14e02f0 x3f99dfd4 1 x3f99dfd4 1}\n       {x42f20000 xc1383595 x3fbe30c0 1 x3fbe30c0 1}\n       {x42f40000 xc11e76c0 x3fd30fdc 1 x3fd30fdc 1}\n       {x42f60000 xc103719e x3ff801ac 1 x3ff801ac 1}\n       {x42f80000 xc0c0ecaa x401e0a1c 1 x401e0a1c 1}\n       {x42fa0000 xc051b241 x4040ecaa 1 x4040ecaa 1}\n       {x42fc0000 0 x4042cc3a 1 x4042cc3a 1}\n       {x42fe0000 x4033e633 x40441206 1 x40441206 1}\n       {x43000000 x40c41206 x404b3bfc 1 x404b3bfc 1}\n       {x43010000 x4112978b x404f0474 1 x404f0474 1}\n       {x43020000 x41498b3d x405ae6b6 1 x405ae6b6 1}\n       {x43030000 x41800573 x4065e612 1 x4065e612 1}\n       {x43040000 x419e3f23 x40750b18 1 x40750b18 1}\n       {x43050000 x41bd4839 x407b8660 1 x407b8660 1}\n       {x43060000 x41dd20bb x40926a56 1 x40926a56 1}\n       {x43070000 x42033eb2 x40b1d922 1 x40b1d922 1}\n       {x43080000 x421b06a6 x40bc422c 1 x40bc422c 1}\n       {x43090000 x42324f3d x40b83de4 1 x40b83de4 1}\n       {x430a0000 x4249161f x40b35e88 1 x40b35e88 1}\n       {x430b0000 x425f26df x40afc84c 1 x40afc84c 1}\n       {x430c0000 x42750832 x40b6254c 1 x40b6254c 1}\n       {x430d0000 x42865819 x40bdddc8 1 x40bdddc8 1}\n       {x430e0000 x42923fd2 x40b52958 1 x40b52958 1}\n       {x430f0000 x429cfd44 x40b27998 1 x40b27998 1}\n       {x43100000 x42a88f05 x40b70278 1 x40b70278 1}\n       {x43110000 x42b3dd93 x40af1260 1 x40af1260 1}\n       {x43120000 x42be7151 x40a8dab8 1 x40a8dab8 1}\n       {x43130000 x42c8f8ea x40a0a978 1 x40a0a978 1}\n       {x43140000 x42d28680 x4089f968 1 x4089f968 1}\n       {x43150000 x42da3817 x40466840 1 x40466840 1}\n       {x43160000 x42deed04 x3ffd70a0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke83 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43e68b02 x4396ac4a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke84 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43e68b02 x4396ac4a 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc36d35f7 0 1 x409440c8 1}\n       {x42580000 xc3682cc8 x40baf010 1 x40baf010 1}\n       {x425c0000 xc36186f6 x40d73740 1 x40d73740 1}\n       {x42600000 xc35ab954 x40e1b2f0 1 x40e1b2f0 1}\n       {x42640000 xc3536bc7 x40e54420 1 x40e54420 1}\n       {x42680000 xc34c6512 x40e1ff00 1 x40e1ff00 1}\n       {x426c0000 xc3454bd7 x40e37b90 1 x40e37b90 1}\n       {x42700000 xc33e2d59 x40e6a440 1 x40e6a440 1}\n       {x42740000 xc336e193 x40f7f690 1 x40f7f690 1}\n       {x42780000 xc32eadf0 x41017330 1 x41017330 1}\n       {x427c0000 xc326b32d x41087690 1 x41087690 1}\n       {x42800000 xc31d9f1e x410d4918 1 x410d4918 1}\n       {x42820000 xc3150a0a x41029b80 1 x41029b80 1}\n       {x42840000 xc30d4bae x40f5e7f0 1 x40f5e7f0 1}\n       {x42860000 xc305ab8b x40c6e200 1 x40c6e200 1}\n       {x42880000 xc300dd8e x40c68188 1 x40c68188 1}\n       {x428a0000 xc2f286e5 x40c284b8 1 x40c284b8 1}\n       {x428c0000 xc2e96a85 x40af2c18 1 x40af2c18 1}\n       {x428e0000 xc2dca162 x40ce8fa0 1 x40ce8fa0 1}\n       {x42900000 xc2cf9891 x40acce98 1 x40acce98 1}\n       {x42920000 xc2c7078f x406b6500 1 x406b6500 1}\n       {x42940000 xc2c0e241 x40413af0 1 x40413af0 1}\n       {x42960000 xc2baf3e0 x4027ade0 1 x4027ade0 1}\n       {x42980000 xc2b66763 x401fe910 1 x401fe910 1}\n       {x429a0000 xc2b0f54f x4010b200 1 x4010b200 1}\n       {x429c0000 xc2ad5c43 x3fcf31e0 1 x3fcf31e0 1}\n       {x429e0000 xc2aa7bc0 x3ec79800 1 x3ec79800 1}\n       {x42a00000 xc2aa3938 x3ec79800 1 x3ec79800 1}\n       {x42a20000 xc2a6c9fb x3ff2dfa0 1 x3ff2dfa0 1}\n       {x42a40000 xc2a2a23b x402d7400 1 x402d7400 1}\n       {x42a60000 xc29bf2bb x4025f320 1 x4025f320 1}\n       {x42a80000 xc2984309 x3fd1a380 1 x3fd1a380 1}\n       {x42aa0000 xc295659f x40057be0 1 x40057be0 1}\n       {x42ac0000 xc28feb4b x3f9255c0 1 x3f9255c0 1}\n       {x42ae0000 xc28f282e -}\n       {x42b00000 xc2904e19 xbf53ff00 1 xbf53ff00 1}\n       {x42b20000 xc292782a xbf89ae00 1 xbf89ae00 1}\n       {x42b40000 xc2949b89 xbf7d2440 1 xbf7d2440 1}\n       {x42b60000 xc2966cbb xbf5b3240 1 xbf5b3240 1}\n       {x42b80000 xc2980852 xbf5a4b80 1 xbf5a4b80 1}\n       {x42ba0000 xc299d5e9 xbf730b00 1 xbf730b00 1}\n       {x42bc0000 xc29bd47e xbf7bb0c0 1 xbf7bb0c0 1}\n       {x42be0000 xc29dc4ac xbf8322c0 1 xbf8322c0 1}\n       {x42c00000 xc29fed94 xbf900060 1 xbf900060 1}\n       {x42c20000 xc2a244af -}\n       {x42c40000 xc29e024d x400a3780 1 x400a3780 1}\n       {x42c60000 xc299a137 x40146390 1 x40146390 1}\n       {x42c80000 xc294bc14 x4020cef0 1 x4020cef0 1}\n       {x42ca0000 xc28f9448 x40252130 1 x40252130 1}\n       {x42cc0000 xc28a6a01 x40344170 1 x40344170 1}\n       {x42ce0000 xc2845031 x403a9b98 1 x403a9b98 1}\n       {x42d00000 xc27d808f x4024bb28 1 x4024bb28 1}\n       {x42d20000 xc27408fd x400b9b10 1 x400b9b10 1}\n       {x42d40000 xc26c0d2d x3ff57a60 1 x3ff57a60 1}\n       {x42d60000 xc264b157 x3fd1aa30 1 x3fd1aa30 1}\n       {x42d80000 xc25ef28a x3fae5fa0 1 x3fae5fa0 1}\n       {x42da0000 xc259cb5d x3fa149f0 1 x3fa149f0 1}\n       {x42dc0000 xc254ddeb x3fa8d230 1 x3fa8d230 1}\n       {x42de0000 xc24f3e3a x3fbd2630 1 x3fbd2630 1}\n       {x42e00000 xc2490b88 x3fcd2410 1 x3fcd2410 1}\n       {x42e20000 xc2426bf9 x3fe010a0 1 x3fe010a0 1}\n       {x42e40000 xc23b0a7e x3ff74540 1 x3ff74540 1}\n       {x42e60000 xc232f7a5 x4003d230 1 x4003d230 1}\n       {x42e80000 xc22a9038 x40024ee8 1 x40024ee8 1}\n       {x42ea0000 xc222adc8 x4014d5d8 1 x4014d5d8 1}\n       {x42ec0000 xc217f57d x4041d240 1 x4041d240 1}\n       {x42ee0000 xc20a7380 x406ecf00 1 x406ecf00 1}\n       {x42f00000 xc1f4373a x4089bb44 1 x4089bb44 1}\n       {x42f20000 xc1d0095e x40977a6c 1 x40977a6c 1}\n       {x42f40000 xc1a87a04 x40a37b89 1 x40a37b89 1}\n       {x42f60000 xc17c9733 x40a97ade 1 x40a97ade 1}\n       {x42f80000 xc127792a x40a7e942 1 x40a7e942 1}\n       {x42fa0000 xc0a95be1 x40a7792a 1 x40a7792a 1}\n       {x42fc0000 0 x40ad1dcc 1 x40ad1dcc 1}\n       {x42fe0000 x40b0dfb6 x40b33f68 1 x40b33f68 1}\n       {x43000000 x41333f68 x40b2addf 1 x40b2addf 1}\n       {x43010000 x41858edd x40ab204a 1 x40ab204a 1}\n       {x43020000 x41af2fd9 x40a2ab34 1 x40a2ab34 1}\n       {x43030000 x41d6e477 x409b51a4 1 x409b51a4 1}\n       {x43040000 x41fcd8ab x408eca76 1 x408eca76 1}\n       {x43050000 x420f24d9 x40760b9c 1 x40760b9c 1}\n       {x43060000 x421d2dc9 x405238b8 1 x405238b8 1}\n       {x43070000 x42296bf0 x40363e50 1 x40363e50 1}\n       {x43080000 x4233f593 x401d9130 1 x401d9130 1}\n       {x43090000 x423d1e16 x4011d628 1 x4011d628 1}\n       {x430a0000 x42463058 x4009c9c0 1 x4009c9c0 1}\n       {x430b0000 x424e574e x3ffda290 1 x3ffda290 1}\n       {x430c0000 x42560a81 x3feada70 1 x3feada70 1}\n       {x430d0000 x425d04f5 x3fe60d20 1 x3fe60d20 1}\n       {x430e0000 x42646b53 x40006c98 1 x40006c98 1}\n       {x430f0000 x426d1288 x400e73d8 1 x400e73d8 1}\n       {x43100000 x427639ce x40176ac8 1 x40176ac8 1}\n       {x43110000 x427fffe1 x401e5250 1 x401e5250 1}\n       {x43120000 x4285020c x401c88a8 1 x401c88a8 1}\n       {x43130000 x4289c87b x40044df0 1 x40044df0 1}\n       {x43140000 x428d46eb x3fa0b620 1 x3fa0b620 1}\n       {x43150000 x428ece2c -}\n       {x43160000 x428e77aa xbe81c300 1 0 1}}\n      {{x42540000 x448363fc 0 1 xc15529f0 1}\n       {x42580000 x4481a908 xc16e1a20 1 xc16e1a20 1}\n       {x425c0000 x447f5727 xc1827e10 1 xc1827e10 1}\n       {x42600000 x447b2a2f xc184b020 1 xc184b020 1}\n       {x42640000 x44770c25 xc1837300 1 xc1837300 1}\n       {x42680000 x4472f2ff xc1854040 1 xc1854040 1}\n       {x426c0000 x446eb821 xc18bc830 1 xc18bc830 1}\n       {x42700000 x446a367c xc198ecd0 1 xc198ecd0 1}\n       {x42740000 x44652954 xc1aa3830 1 xc1aa3830 1}\n       {x42780000 x445f92f9 xc1bbb4e0 1 xc1bbb4e0 1}\n       {x427c0000 x44596e06 xc1cbe010 1 xc1cbe010 1}\n       {x42800000 x4452d4f8 xc1d47e70 1 xc1d47e70 1}\n       {x42820000 x444c261f xc1d58990 1 xc1d58990 1}\n       {x42840000 x44457c5f xc1d312f0 1 xc1d312f0 1}\n       {x42860000 x443ef4f0 xc1d0fe60 1 xc1d0fe60 1}\n       {x42880000 x44386c79 xc1d5ef30 1 xc1d5ef30 1}\n       {x428a0000 x443195fd xc1d29a60 1 xc1d29a60 1}\n       {x428c0000 x442b42d3 xc1c3c3b0 1 xc1c3c3b0 1}\n       {x428e0000 x442559c2 xc1c20e50 1 xc1c20e50 1}\n       {x42900000 x441f21ee xc1c311e0 1 xc1c311e0 1}\n       {x42920000 x441928a4 xc1c3b140 1 xc1c3b140 1}\n       {x42940000 x4412e6da xc1c71b20 1 xc1c71b20 1}\n       {x42960000 x440cb6f2 xc1c30360 1 xc1c30360 1}\n       {x42980000 x4406b6a4 xc1b7b040 1 xc1b7b040 1}\n       {x429a0000 x44013bee xc1ac8160 1 xc1ac8160 1}\n       {x429c0000 x43f7dd1c xc1a7ee88 1 xc1a7ee88 1}\n       {x429e0000 x43ed7a0b xc1a390f0 1 xc1a390f0 1}\n       {x42a00000 x43e36afe xc1a39198 1 xc1a39198 1}\n       {x42a20000 x43d907d8 xc1a6d7b0 1 xc1a6d7b0 1}\n       {x42a40000 x43ce9008 xc1a2e3c8 1 xc1a2e3c8 1}\n       {x42a60000 x43c4ab5f xc1a1d9d0 1 xc1a1d9d0 1}\n       {x42a80000 x43ba54ce xc1a6bcb8 1 xc1a6bcb8 1}\n       {x42aa0000 x43afd3c8 xc1aa05c8 1 xc1aa05c8 1}\n       {x42ac0000 x43a51415 xc1a71760 1 xc1a71760 1}\n       {x42ae0000 x439af0dc xc19f97d0 1 xc19f97d0 1}\n       {x42b00000 x4391211b xc19c4c50 1 xc19c4c50 1}\n       {x42b20000 x43876752 xc19c7aec 1 xc19c7aec 1}\n       {x42b40000 x437b237b xc19e9a74 1 xc19e9a74 1}\n       {x42b60000 x43672807 xc1a0443c 1 xc1a0443c 1}\n       {x42b80000 x4353126c xc19e0fac 1 xc19e0fac 1}\n       {x42ba0000 x433fa41c xc19707f4 1 xc19707f4 1}\n       {x42bc0000 x432d506f xc18d995c 1 xc18d995c 1}\n       {x42be0000 x431c3dc5 xc18304e8 1 xc18304e8 1}\n       {x42c00000 x430c8f35 xc17008d8 1 xc17008d8 1}\n       {x42c20000 x42fc7954 xc15cd140 1 xc15cd140 1}\n       {x42c40000 x42e1ea1a xc14ec308 1 xc14ec308 1}\n       {x42c60000 x42c8c892 xc14c8b38 1 xc14c8b38 1}\n       {x42c80000 x42aec74c xc14ffb8c 1 xc14ffb8c 1}\n       {x42ca0000 x4294c9af xc14efb7e 1 xc14efb7e 1}\n       {x42cc0000 x427610d9 xc142489e 1 xc142489e 1}\n       {x42ce0000 x42486f0f xc131b00a 1 xc131b00a 1}\n       {x42d00000 x421d38d4 xc1294730 1 xc1294730 1}\n       {x42d20000 x41e796ee xc11da68d 1 xc11da68d 1}\n       {x42d40000 x419ccb1b xc10dc0af 1 xc10dc0af 1}\n       {x42d60000 x4133ac7e xc0f70343 1 xc0f70343 1}\n       {x42d80000 x408525e6 xc0d7643c 1 xc0d7643c 1}\n       {x42da0000 xc00edef8 xc0c67ac3 1 xc0c67ac3 1}\n       {x42dc0000 xc103e7d0 xc0b2ff3f 1 xc0b2ff3f 1}\n       {x42de0000 xc156b6fd xc08d63a0 1 xc08d63a0 1}\n       {x42e00000 xc188a5b8 xc03d8d22 1 xc03d8d22 1}\n       {x42e20000 xc19abec7 xbfd7ddc8 1 xbfd7ddc8 1}\n       {x42e40000 xc1a3a171 xbf3b5910 1 xbf3b5910 1}\n       {x42e60000 xc1a67458 -}\n       {x42e80000 xc19e275d x3fb3ddc8 1 x3fb3ddc8 1}\n       {x42ea0000 xc18ff89f x3fda13b0 1 x3fda13b0 1}\n       {x42ec0000 xc182e4e7 x3fce80b0 1 x3fce80b0 1}\n       {x42ee0000 xc16c5112 x3fcffd64 1 x3fcffd64 1}\n       {x42f00000 xc151ca75 x3fcd37d4 1 x3fcd37d4 1}\n       {x42f20000 xc139031d x3fc539c4 1 x3fc539c4 1}\n       {x42f40000 xc1207c04 x3fd4dd20 1 x3fd4dd20 1}\n       {x42f60000 xc103cbd5 x3ff8fcd2 1 x3ff8fcd2 1}\n       {x42f80000 xc0c4799f x401df336 1 x401df336 1}\n       {x42fa0000 xc05348e9 x4044799f 1 x4044799f 1}\n       {x42fc0000 0 x405e7701 1 x405e7701 1}\n       {x42fe0000 x4069a519 x4062a1ab 1 x4062a1ab 1}\n       {x43000000 x40e2a1ab x405dfe26 1 x405dfe26 1}\n       {x43010000 x41296859 x4069b85d 1 x4069b85d 1}\n       {x43020000 x41662d04 x40803885 1 x40803885 1}\n       {x43030000 x4194d06f x4089aa44 1 x4089aa44 1}\n       {x43040000 x41b7eba4 x408cad96 1 x408cad96 1}\n       {x43050000 x41db273a x4096c810 1 x4096c810 1}\n       {x43060000 x4201a7d6 x40aa9e94 1 x40aa9e94 1}\n       {x43070000 x42183b42 x40b827e8 1 x40b827e8 1}\n       {x43080000 x422fb1d0 x40c22dcc 1 x40c22dcc 1}\n       {x43090000 x4248c6b5 x40c918b0 1 x40c918b0 1}\n       {x430a0000 x4261f7fc x40c459a8 1 x40c459a8 1}\n       {x430b0000 x4279dd1f x40bf9e48 1 x40bf9e48 1}\n       {x430c0000 x4288efc7 x40c738c4 1 x40c738c4 1}\n       {x430d0000 x4295d5a8 x40d2fe68 1 x40d2fe68 1}\n       {x430e0000 x42a34f94 x40d962d8 1 x40d962d8 1}\n       {x430f0000 x42b10203 x40d57068 1 x40d57068 1}\n       {x43100000 x42bdfda1 x40d0bbf8 1 x40d0bbf8 1}\n       {x43110000 x42cb1982 x40cbc5f8 1 x40cbc5f8 1}\n       {x43120000 x42d77660 x40bf4fd8 1 x40bf4fd8 1}\n       {x43130000 x42e3037d x40b1be88 1 x40b1be88 1}\n       {x43140000 x42edae31 x40a255f0 1 x40a255f0 1}\n       {x43150000 x42f74e3b x40727b90 1 x40727b90 1}\n       {x43160000 x42fcd5ea x40103308 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke85 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x429a21cb x4464420c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke86 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x429a21cb x4464420c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc35ea514 0 1 x408107e0 1}\n       {x42580000 xc35a4d45 x409edde0 1 x409edde0 1}\n       {x425c0000 xc354b736 x40c58fe0 1 x40c58fe0 1}\n       {x42600000 xc34df447 x40e040e0 1 x40e040e0 1}\n       {x42640000 xc346b328 x40e3b400 1 x40e3b400 1}\n       {x42680000 xc33fb907 x40e06ed0 1 x40e06ed0 1}\n       {x426c0000 xc338ac3b x40e1de30 1 x40e1de30 1}\n       {x42700000 xc3319b24 x40e50530 1 x40e50530 1}\n       {x42740000 xc32a5be8 x40eb8810 1 x40eb8810 1}\n       {x42780000 xc322e2a3 x40ed8520 1 x40ed8520 1}\n       {x427c0000 xc31b8396 x40f88b80 1 x40f88b80 1}\n       {x42800000 xc31359eb x40fdd5b0 1 x40fdd5b0 1}\n       {x42820000 xc30ba63b x40f0f560 1 x40f0f560 1}\n       {x42840000 xc3044a95 x40eb09e0 1 x40eb09e0 1}\n       {x42860000 xc2f9eb3a x40c8c0c0 1 x40c8c0c0 1}\n       {x42880000 xc2ef7d12 x40d0bae8 1 x40d0bae8 1}\n       {x428a0000 xc2dfd3dd x40bf0650 1 x40bf0650 1}\n       {x428c0000 xc2d79c48 x4077dc90 1 x4077dc90 1}\n       {x428e0000 xc2d05614 x407569b0 1 x407569b0 1}\n       {x42900000 xc2c845ad x40813bf0 1 x40813bf0 1}\n       {x42920000 xc2c02e96 x3f91f8c0 1 x3f91f8c0 1}\n       {x42940000 xc2bf6bf5 x3ece3f80 1 x3ece3f80 1}\n       {x42960000 xc2be9217 x3f17b0c0 1 x3f17b0c0 1}\n       {x42980000 xc2bd0d32 x3fb27860 1 x3fb27860 1}\n       {x429a0000 xc2b8fe54 x3fae5000 1 x3fae5000 1}\n       {x429c0000 xc2b79ab2 -}\n       {x429e0000 xc2b8ab2f xbedd1000 1 xbedd1000 1}\n       {x42a00000 xc2b954d2 -}\n       {x42a20000 xc2b91040 x3e3e5400 1 x3e3e5400 1}\n       {x42a40000 xc2b8967e x3e4b7100 1 x3e4b7100 1}\n       {x42a60000 xc2b844cf x3de82400 1 x3de82400 1}\n       {x42a80000 xc2b8226c -}\n       {x42aa0000 xc2b83b75 xbe163600 1 xbe163600 1}\n       {x42ac0000 xc2b8bec9 xbe761400 1 xbe761400 1}\n       {x42ae0000 xc2b93189 -}\n       {x42b00000 xc2b82877 -}\n       {x42b20000 xc2b83283 xbd712000 1 xbd712000 1}\n       {x42b40000 xc2b8c4f7 xbe474000 1 xbe474000 1}\n       {x42b60000 xc2b8f9c3 xbe0ac700 1 xbe0ac700 1}\n       {x42b80000 xc2b94fbe xbeb60e80 1 xbeb60e80 1}\n       {x42ba0000 xc2ba65e0 xbf16ac40 1 xbf16ac40 1}\n       {x42bc0000 xc2bbaa6f xbf0418c0 1 xbf0418c0 1}\n       {x42be0000 xc2bc7643 xbec0fa80 1 xbec0fa80 1}\n       {x42c00000 xc2bd2c64 xbdb2a400 1 xbdb2a400 1}\n       {x42c20000 xc2bd3b47 -}\n       {x42c40000 xc2bbf148 x3f752fc0 1 x3f752fc0 1}\n       {x42c60000 xc2b96688 x3fabc0a0 1 x3fabc0a0 1}\n       {x42c80000 xc2b69343 x3fef6c60 1 x3fef6c60 1}\n       {x42ca0000 xc2b1eb25 x403bb560 1 x403bb560 1}\n       {x42cc0000 xc2aad7ed x4034f9a0 1 x4034f9a0 1}\n       {x42ce0000 xc2a69b8b x40056b50 1 x40056b50 1}\n       {x42d00000 xc2a28138 x3ff7c100 1 x3ff7c100 1}\n       {x42d20000 xc29edd83 x3fe68000 1 x3fe68000 1}\n       {x42d40000 xc29b4d38 x3fe3ff20 1 x3fe3ff20 1}\n       {x42d60000 xc297bd8a x3fda30e0 1 x3fda30e0 1}\n       {x42d80000 xc2947bb1 x3fea8f20 1 x3fea8f20 1}\n       {x42da0000 xc2906911 x40022ee0 1 x40022ee0 1}\n       {x42dc0000 xc28c58c3 x40163480 1 x40163480 1}\n       {x42de0000 xc28705c9 x402e0290 1 x402e0290 1}\n       {x42e00000 xc281789a x4043ec70 1 x4043ec70 1}\n       {x42e20000 xc2758e04 x405f3da0 1 x405f3da0 1}\n       {x42e40000 xc2670980 x40869e48 1 x40869e48 1}\n       {x42e60000 xc253e672 x406b8f18 1 x406b8f18 1}\n       {x42e80000 xc249979d x402f6e00 1 x402f6e00 1}\n       {x42ea0000 xc23df8b2 x4048c110 1 x4048c110 1}\n       {x42ec0000 xc2307f7b x40758798 1 x40758798 1}\n       {x42ee0000 xc21f47bf x408c001c 1 x408c001c 1}\n       {x42f00000 xc20d7f74 x4099b9e2 1 x4099b9e2 1}\n       {x42f20000 xc1f1b28d x40abcbba 1 x40abcbba 1}\n       {x42f40000 xc1c5190b x40b8f346 1 x40b8f346 1}\n       {x42f60000 xc19538ea x40c4e53b 1 x40c4e53b 1}\n       {x42f80000 xc1454cdb x40ca4f08 1 x40ca4f08 1}\n       {x42fa0000 xc0c04597 x40c54cdb 1 x40c54cdb 1}\n       {x42fc0000 0 x40cc5568 1 x40cc5568 1}\n       {x42fe0000 x40d86539 x40cfb928 1 x40cfb928 1}\n       {x43000000 x414fb928 x40c48d24 1 x40c48d24 1}\n       {x43010000 x41985fe0 x40bd0010 1 x40bd0010 1}\n       {x43020000 x41c65c9c x40b885e8 1 x40b885e8 1}\n       {x43030000 x41f4a2d4 x40acb500 1 x40acb500 1}\n       {x43040000 x420e5b8e x4090f7d8 1 x4090f7d8 1}\n       {x43050000 x421e8f60 x40717d70 1 x40717d70 1}\n       {x43060000 x422c8b3c x40576a60 1 x40576a60 1}\n       {x43070000 x42397cac x404df278 1 x404df278 1}\n       {x43080000 x4246498b x4044bce0 1 x4044bce0 1}\n       {x43090000 x42521448 x403f8e78 1 x403f8e78 1}\n       {x430a0000 x425e3b5a x40456b80 1 x40456b80 1}\n       {x430b0000 x426ac1b8 x4049bb30 1 x4049bb30 1}\n       {x430c0000 x427772c0 x40461140 1 x40461140 1}\n       {x430d0000 x4281c1f0 x404ffa70 1 x404ffa70 1}\n       {x430e0000 x4288b907 x40689c10 1 x40689c10 1}\n       {x430f0000 x42904bb1 x4076ace0 1 x4076ace0 1}\n       {x43100000 x429823d5 x407aeb70 1 x407aeb70 1}\n       {x43110000 x429ffa68 x40786500 1 x40786500 1}\n       {x43120000 x42a7aa25 x4071c670 1 x4071c670 1}\n       {x43130000 x42af16cf x4059f090 1 x4059f090 1}\n       {x43140000 x42b5492e x4025dda0 1 x4025dda0 1}\n       {x43150000 x42b974a9 x3fc556c0 1 x3fc556c0 1}\n       {x43160000 x42bb73e4 x3f3a1580 1 0 1}}\n      {{x42540000 x44852d17 0 1 xc155e6e0 1}\n       {x42580000 x4483726f xc16c2e40 1 xc16c2e40 1}\n       {x425c0000 x44817c5e xc1818ad0 1 xc1818ad0 1}\n       {x42600000 x447ecc31 xc184a0e0 1 xc184a0e0 1}\n       {x42640000 x447aaeae xc1835fa0 1 xc1835fa0 1}\n       {x42680000 x44769637 xc1853580 1 xc1853580 1}\n       {x426c0000 x44725b56 xc18bbcf0 1 xc18bbcf0 1}\n       {x42700000 x446dda68 xc198d8c0 1 xc198d8c0 1}\n       {x42740000 x4468cdca xc1a9e2f0 1 xc1a9e2f0 1}\n       {x42780000 x44633c39 xc1bb2990 1 xc1bb2990 1}\n       {x427c0000 x445d1b31 xc1cca5b0 1 xc1cca5b0 1}\n       {x42800000 x445671de xc1d9f1f0 1 xc1d9f1f0 1}\n       {x42820000 x444f7c12 xc1d91960 1 xc1d91960 1}\n       {x42840000 x4448e048 xc1d51f00 1 xc1d51f00 1}\n       {x42860000 x44422a22 xc1d56bd0 1 xc1d56bd0 1}\n       {x42880000 x443b898b xc1dbf660 1 xc1dbf660 1}\n       {x428a0000 x44346abc xc1d52530 1 xc1d52530 1}\n       {x428c0000 x442e3738 xc1b8bf70 1 xc1b8bf70 1}\n       {x428e0000 x4428dec5 xc1b01ee0 1 xc1b01ee0 1}\n       {x42900000 x4423354a xc1ba33d0 1 xc1ba33d0 1}\n       {x42920000 x441d3b88 xc1c2a100 1 xc1c2a100 1}\n       {x42940000 x44170b3a xc1c4ef20 1 xc1c4ef20 1}\n       {x42960000 x4410ec96 xc1c2a9b0 1 xc1c2a9b0 1}\n       {x42980000 x440ae09f xc1b64370 1 xc1b64370 1}\n       {x429a0000 x4405885f xc1adfae0 1 xc1adfae0 1}\n       {x429c0000 x440000f1 xc1b0f130 1 xc1b0f130 1}\n       {x429e0000 x43f4f298 xc1ae4360 1 xc1ae4360 1}\n       {x42a00000 x43ea3976 xc1ad3e58 1 xc1ad3e58 1}\n       {x42a20000 x43df4acd xc1adfe48 1 xc1adfe48 1}\n       {x42a40000 x43d479ad xc1adae30 1 xc1adae30 1}\n       {x42a60000 x43c99507 xc1afb438 1 xc1afb438 1}\n       {x42a80000 x43be8326 xc1b04c60 1 xc1b04c60 1}\n       {x42aa0000 x43b38b7b xc1ad5710 1 xc1ad5710 1}\n       {x42ac0000 x43a8d844 xc1a6fa78 1 xc1a6fa78 1}\n       {x42ae0000 x439eac2c xc1a7d668 1 xc1a7d668 1}\n       {x42b00000 x4393dd77 xc1ac8360 1 xc1ac8360 1}\n       {x42b20000 x43891bc0 xc1ab5b74 1 xc1ab5b74 1}\n       {x42b40000 x437ce411 xc1acab94 1 xc1acab94 1}\n       {x42b60000 x43670c9b xc1acc5b4 1 xc1acc5b4 1}\n       {x42b80000 x4351b2a4 xc1a846fc 1 xc1a846fc 1}\n       {x42ba0000 x433cfadc xc1a13e38 1 xc1a13e38 1}\n       {x42bc0000 x43296316 xc196b39c 1 xc196b39c 1}\n       {x42be0000 x43174df5 xc18c0b98 1 xc18c0b98 1}\n       {x42c00000 x43066030 xc183d4c0 1 xc183d4c0 1}\n       {x42c20000 x42ecb18a xc17188d8 1 xc17188d8 1}\n       {x42c40000 x42d05e2a xc15b460c 1 xc15b460c 1}\n       {x42c60000 x42b5e007 xc155875c 1 xc155875c 1}\n       {x42c80000 x429afc53 xc15dae08 1 xc15dae08 1}\n       {x42ca0000 x427ce90a xc16a205c 1 xc16a205c 1}\n       {x42cc0000 x4240e878 xc1659e66 1 xc1659e66 1}\n       {x42ce0000 x420a19d7 xc1547cdc 1 xc1547cdc 1}\n       {x42d00000 x41ad5414 xc142301a 1 xc142301a 1}\n       {x42d20000 x41240729 xc12cef67 1 xc12cef67 1}\n       {x42d40000 x3d495a41 xc11b6bac 1 xc11b6bac 1}\n       {x42d60000 xc112d02f xc1066fbc 1 xc1066fbc 1}\n       {x42d80000 xc1860b0f xc0e80a7b 1 xc0e80a7b 1}\n       {x42da0000 xc1bd6d55 xc0cd4c26 1 xc0cd4c26 1}\n       {x42dc0000 xc1ecb122 xc0aed056 1 xc0aed056 1}\n       {x42de0000 xc20a6ac0 xc07109f8 1 xc07109f8 1}\n       {x42e00000 xc21479d0 xbfe7f890 1 xbfe7f890 1}\n       {x42e20000 xc218ea49 -}\n       {x42e40000 xc21851e3 x3ee49900 1 x3ee49900 1}\n       {x42e60000 xc211a51d x400166d8 1 x400166d8 1}\n       {x42e80000 xc2082508 x4025058c 1 x4025058c 1}\n       {x42ea0000 xc1fa08d7 x403ed3b0 1 x403ed3b0 1}\n       {x42ec0000 xc1e09524 x404f875c 1 x404f875c 1}\n       {x42ee0000 xc1c62700 x4044c9ac 1 x4044c9ac 1}\n       {x42f00000 xc1af62b9 x40401ea4 1 x40401ea4 1}\n       {x42f20000 xc1961f57 x4043e4a0 1 x4043e4a0 1}\n       {x42f40000 xc17cd322 x40523ba2 1 x40523ba2 1}\n       {x42f60000 xc14320dd x4069577a 1 x4069577a 1}\n       {x42f80000 xc1082765 x407f1beb 1 x407f1beb 1}\n       {x42fa0000 xc08725cf x40882765 1 x40882765 1}\n       {x42fc0000 0 x408fa322 1 x408fa322 1}\n       {x42fe0000 x40982074 x40934bee 1 x40934bee 1}\n       {x43000000 x41134bee x408e1ed2 1 x408e1ed2 1}\n       {x43010000 x415a2f0c x4098a456 1 x4098a456 1}\n       {x43020000 x4195f822 x40935b52 1 x40935b52 1}\n       {x43030000 x41b6c52f x407ab9e8 1 x407ab9e8 1}\n       {x43040000 x41d4a69c -}\n       {x43050000 x41d30b58 -}\n       {x43060000 x41d87143 x3f6f97f0 1 x3f6f97f0 1}\n       {x43070000 x41e204d7 x3f9e0240 1 x3f9e0240 1}\n       {x43080000 x41ec318b x3fc71998 1 x3fc71998 1}\n       {x43090000 x41fae80a x4008782c 1 x4008782c 1}\n       {x430a0000 x420727cb x40275370 1 x40275370 1}\n       {x430b0000 x42125e73 x403aa3b0 1 x403aa3b0 1}\n       {x430c0000 x421e7c41 x404f5c58 1 x404f5c58 1}\n       {x430d0000 x422c49fe x405eb908 1 x405eb908 1}\n       {x430e0000 x423a5362 x40579a18 1 x40579a18 1}\n       {x430f0000 x42473d41 x404811b0 1 x404811b0 1}\n       {x43100000 x42535598 x40371700 1 x40371700 1}\n       {x43110000 x425e2021 x40260698 1 x40260698 1}\n       {x43120000 x4268166b x401ef1c8 1 x401ef1c8 1}\n       {x43130000 x4271fe5a x4026b090 1 x4026b090 1}\n       {x43140000 x427cec7d x401c39b0 1 x401c39b0 1}\n       {x43150000 x4282c2c8 x3ba2c000 1 x3ba2c000 1}\n       {x43160000 x4282c3a1 -}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke87 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43c21d2f x42663a5e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke88 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x43c21d2f x42663a5e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc38a9939 0 1 x40800b10 1}\n       {x42580000 xc38870b6 x409e4c20 1 x409e4c20 1}\n       {x425c0000 xc385a6d8 x40c41700 1 x40c41700 1}\n       {x42600000 xc3824ffe x40dd7d90 1 x40dd7d90 1}\n       {x42640000 xc37d75d7 x40e0ef60 1 x40e0ef60 1}\n       {x42680000 xc3769106 x40d4d2b0 1 x40d4d2b0 1}\n       {x426c0000 xc37028ac x40cce9a0 1 x40cce9a0 1}\n       {x42700000 xc369c26c x40d06f10 1 x40d06f10 1}\n       {x42740000 xc36321bb x40d80050 1 x40d80050 1}\n       {x42780000 xc35c4267 x40e026f0 1 x40e026f0 1}\n       {x427c0000 xc3551f4c x40f08040 1 x40f08040 1}\n       {x42800000 xc34d3a63 x40f98980 1 x40f98980 1}\n       {x42820000 xc34586b4 x40ebd4f0 1 x40ebd4f0 1}\n       {x42840000 xc33e7d14 x40df2d20 1 x40df2d20 1}\n       {x42860000 xc33793e2 x40e69dc0 1 x40e69dc0 1}\n       {x42880000 xc3301338 x40fa6600 1 x40fa6600 1}\n       {x428a0000 xc327ed82 x41026288 1 x41026288 1}\n       {x428c0000 xc31fc6e7 x40f8db00 1 x40f8db00 1}\n       {x428e0000 xc3185fd2 x40f71e90 1 x40f71e90 1}\n       {x42900000 xc31054fe x40b1ebb0 1 x40b1ebb0 1}\n       {x42920000 xc30d4117 x4055f580 1 x4055f580 1}\n       {x42940000 xc309a552 x405c3d80 1 x405c3d80 1}\n       {x42960000 xc3065f2b x404c6d40 1 x404c6d40 1}\n       {x42980000 xc30341e8 x404f7d80 1 x404f7d80 1}\n       {x429a0000 xc2ffc67e x40551cc0 1 x40551cc0 1}\n       {x429c0000 xc2f93204 x403d0130 1 x403d0130 1}\n       {x429e0000 xc2f3f66b x3e6f7000 1 x3e6f7000 1}\n       {x42a00000 xc2f3ce83 x3e4f9800 1 x3e4f9800 1}\n       {x42a20000 xc2f326d3 x3eba8380 1 x3eba8380 1}\n       {x42a40000 xc2f2597c x3f904e60 1 x3f904e60 1}\n       {x42a60000 xc2eea460 x400417c0 1 x400417c0 1}\n       {x42a80000 xc2ea1800 x4006b630 1 x4006b630 1}\n       {x42aa0000 xc2e638fd x405287c0 1 x405287c0 1}\n       {x42ac0000 xc2dcef84 x40875328 1 x40875328 1}\n       {x42ae0000 xc2d54e98 x405489a0 1 x405489a0 1}\n       {x42b00000 xc2cfa6ea x4026f860 1 x4026f860 1}\n       {x42b20000 xc2cadf12 x4004db50 1 x4004db50 1}\n       {x42b40000 xc2c75935 x3feb2e60 1 x3feb2e60 1}\n       {x42b60000 xc2c3859f x3ff98aa0 1 x3ff98aa0 1}\n       {x42b80000 xc2bf8ce0 x40235450 1 x40235450 1}\n       {x42ba0000 xc2b9505a x40381660 1 x40381660 1}\n       {x42bc0000 xc2b40b7a x4026a340 1 x4026a340 1}\n       {x42be0000 xc2aee626 x40073220 1 x40073220 1}\n       {x42c00000 xc2ab9858 x3fcf5b00 1 x3fcf5b00 1}\n       {x42c20000 xc2a86b4e x403b49e0 1 x403b49e0 1}\n       {x42c40000 xc29fe3ba x408c8888 1 x408c8888 1}\n       {x42c60000 xc296da3d x40962cb8 1 x40962cb8 1}\n       {x42c80000 xc28d1e23 x409dadd8 1 x409dadd8 1}\n       {x42ca0000 xc2832482 x40a2aa78 1 x40a2aa78 1}\n       {x42cc0000 xc27191a8 x40a7d568 1 x40a7d568 1}\n       {x42ce0000 xc25c53aa x40913358 1 x40913358 1}\n       {x42d00000 xc24d44d2 x405a9508 1 x405a9508 1}\n       {x42d20000 xc2410109 x40373850 1 x40373850 1}\n       {x42d40000 xc2365dc8 x40466b08 1 x40466b08 1}\n       {x42d60000 xc22833a8 x402f7110 1 x402f7110 1}\n       {x42d80000 xc2206fa6 x3fdad5d0 1 x3fdad5d0 1}\n       {x42da0000 xc21a864b x3fc57580 1 x3fc57580 1}\n       {x42dc0000 xc214184e x3fd2ec80 1 x3fd2ec80 1}\n       {x42de0000 xc20d5783 x3fddfce0 1 x3fddfce0 1}\n       {x42e00000 xc2063880 x3fe99a88 1 x3fe99a88 1}\n       {x42e20000 xc1fd7bb5 x3fbd2548 1 x3fbd2548 1}\n       {x42e40000 xc1f4cc57 x3f8f4ce0 1 x3f8f4ce0 1}\n       {x42e60000 xc1eb9219 x3fa162f0 1 x3fa162f0 1}\n       {x42e80000 xc1e09ff9 x3fa08348 1 x3fa08348 1}\n       {x42ea0000 xc1d781b0 x3fb1c0c0 1 x3fb1c0c0 1}\n       {x42ec0000 xc1ca67e1 x3fd27420 1 x3fd27420 1}\n       {x42ee0000 xc1bd332c x40096390 1 x40096390 1}\n       {x42f00000 xc1a80efd x4032af0c 1 x4032af0c 1}\n       {x42f20000 xc1908769 x4048d44c 1 x4048d44c 1}\n       {x42f40000 xc16bb3d4 x4060b08c 1 x4060b08c 1}\n       {x42f60000 xc130b68c x406f0150 1 x406f0150 1}\n       {x42f80000 xc0e86658 x406910ae 1 x406910ae 1}\n       {x42fa0000 xc070b8d3 x40686658 1 x40686658 1}\n       {x42fc0000 0 x407686b7 1 x407686b7 1}\n       {x42fe0000 x407c549b x407f4c42 1 x407f4c42 1}\n       {x43000000 x40ff4c42 x4082a730 1 x4082a730 1}\n       {x43010000 x4141bc57 x4085191d 1 x4085191d 1}\n       {x43020000 x41825f9f x40758fa2 1 x40758fa2 1}\n       {x43030000 x419e4214 x406283b4 1 x406283b4 1}\n       {x43040000 x41bb008c x40547068 1 x40547068 1}\n       {x43050000 x41d35e2e x403611d0 1 x403611d0 1}\n       {x43060000 x41e88500 x4015f184 1 x4015f184 1}\n       {x43070000 x41f8da8f x3fd76200 1 x3fd76200 1}\n       {x43080000 x4201b8a0 x3f9dcd98 1 x3f9dcd98 1}\n       {x43090000 x42064a21 x3f9fde00 1 x3f9fde00 1}\n       {x430a0000 x420bb680 x3f9a2b50 1 x3f9a2b50 1}\n       {x430b0000 x420fecd6 x3f733900 1 x3f733900 1}\n       {x430c0000 x42135048 x3f37fd20 1 x3f37fd20 1}\n       {x430d0000 x4215acbf x3f3dcd20 1 x3f3dcd20 1}\n       {x430e0000 x42193eb1 x3f817980 1 x3f817980 1}\n       {x430f0000 x421dc457 x3fa32460 1 x3fa32460 1}\n       {x43100000 x422370f7 x3fc57e00 1 x3fc57e00 1}\n       {x43110000 x422a1c37 x3fd53b70 1 x3fd53b70 1}\n       {x43120000 x4230c4ae x3fbe94e0 1 x3fbe94e0 1}\n       {x43130000 x42360585 x3f864020 1 x3f864020 1}\n       {x43140000 x423928b0 -}\n       {x43150000 x42388f8d xbee5b480 1 xbee5b480 1}\n       {x43160000 x4234c290 xbf99b8e0 1 0 1}}\n      {{x42540000 x448dc62b 0 1 xc155caa0 1}\n       {x42580000 x448c0bd1 xc16bf1c0 1 xc16bf1c0 1}\n       {x425c0000 x448a1664 xc1818b20 1 xc1818b20 1}\n       {x42600000 x4487ff78 xc184a660 1 xc184a660 1}\n       {x42640000 x4485f131 xc1837780 1 xc1837780 1}\n       {x42680000 x4483e3bc xc1851ae0 1 xc1851ae0 1}\n       {x426c0000 x4481c85a xc18b0890 1 xc18b0890 1}\n       {x42700000 x447f16ef xc1980120 1 xc1980120 1}\n       {x42740000 x447a10a2 xc1a98130 1 xc1a98130 1}\n       {x42780000 x44747edc xc1bb3cd0 1 xc1bb3cd0 1}\n       {x427c0000 x446e5cd5 xc1cce3f0 1 xc1cce3f0 1}\n       {x42800000 x4467b09d xc1da3460 1 xc1da3460 1}\n       {x42820000 x4460b98f xc1deb4b0 1 xc1deb4b0 1}\n       {x42840000 x4459c552 xc1e04b80 1 xc1e04b80 1}\n       {x42860000 x4452b4d7 xc1e3bad0 1 xc1e3bad0 1}\n       {x42880000 x444b89a5 xc1e81cd0 1 xc1e81cd0 1}\n       {x428a0000 x4444330a xc1eb2620 1 xc1eb2620 1}\n       {x428c0000 x443cd743 xc1e8afe0 1 xc1e8afe0 1}\n       {x428e0000 x4435a80c xc1e71f90 1 xc1e71f90 1}\n       {x42900000 x442e654a xc1d9fb30 1 xc1d9fb30 1}\n       {x42920000 x44280859 xc1caf630 1 xc1caf630 1}\n       {x42940000 x4421b5e7 xc1c85290 1 xc1c85290 1}\n       {x42960000 x441b8330 xc1c45e80 1 xc1c45e80 1}\n       {x42980000 x44156fff xc1bede90 1 xc1bede90 1}\n       {x429a0000 x440f9547 xc1b6eef0 1 xc1b6eef0 1}\n       {x429c0000 x440a0110 xc1afdf40 1 xc1afdf40 1}\n       {x429e0000 x44049753 xc1a5e888 1 xc1a5e888 1}\n       {x42a00000 x43ff450f xc19f4e18 1 xc19f4e18 1}\n       {x42a20000 x43f544e3 xc1a02fe0 1 xc1a02fe0 1}\n       {x42a40000 x43eb3f13 xc1a65d08 1 xc1a65d08 1}\n       {x42a60000 x43e07942 xc1aab2f0 1 xc1aab2f0 1}\n       {x42a80000 x43d5e8b5 xc1ab4628 1 xc1ab4628 1}\n       {x42aa0000 x43cb107d xc1b2e3a0 1 xc1b2e3a0 1}\n       {x42ac0000 x43bf8c41 xc1b4af38 1 xc1b4af38 1}\n       {x42ae0000 x43b47a96 xc1af4490 1 xc1af4490 1}\n       {x42b00000 x43a9a3af xc1aefd98 1 xc1aefd98 1}\n       {x42b20000 x439e9ae3 xc1afb130 1 xc1afb130 1}\n       {x42b40000 x4393ad89 xc1b10108 1 xc1b10108 1}\n       {x42b60000 x43887ac2 xc1b1d354 1 xc1b1d354 1}\n       {x42b80000 x437ae63d xc1b32a08 1 xc1b32a08 1}\n       {x42ba0000 x43642b02 xc1b03850 1 xc1b03850 1}\n       {x42bc0000 x434ed829 xc1a5f2b8 1 xc1a5f2b8 1}\n       {x42be0000 x433aae54 xc197dce4 1 xc197dce4 1}\n       {x42c00000 x4328e0f0 xc1898ab4 1 xc1898ab4 1}\n       {x42c20000 x43184ba7 xc179e8d0 1 xc179e8d0 1}\n       {x42c40000 x4309a3d6 xc16a9030 1 xc16a9030 1}\n       {x42c60000 x42f5f342 xc16618c8 1 xc16618c8 1}\n       {x42c80000 x42d9c17a xc1643c00 1 xc1643c00 1}\n       {x42ca0000 x42bce442 xc167990c 1 xc167990c 1}\n       {x42cc0000 x429fdb37 xc1628f34 1 xc1628f34 1}\n       {x42ce0000 x42844075 xc14e802a 1 xc14e802a 1}\n       {x42d00000 x42587659 xc13d4e0a 1 xc13d4e0a 1}\n       {x42d20000 x4229d9e5 xc12f0d12 1 xc12f0d12 1}\n       {x42d40000 x4200efd0 xc120f87a 1 xc120f87a 1}\n       {x42d60000 x41b2bb50 xc10f092b 1 xc10f092b 1}\n       {x42d80000 x4165acea xc0ef3c8e 1 xc0ef3c8e 1}\n       {x42da0000 x40ec7424 xc0d68874 1 xc0d68874 1}\n       {x42dc0000 x3f72475b xc0c2bf56 1 xc0c2bf56 1}\n       {x42de0000 xc0990a89 xc0994aae 1 xc0994aae 1}\n       {x42e00000 xc10a2638 xc04a55e5 1 xc04a55e5 1}\n       {x42e20000 xc131b037 xbff34600 1 xbff34600 1}\n       {x42e40000 xc146f7b8 xbf77ea30 1 xbf77ea30 1}\n       {x42e60000 xc150ad7d -}\n       {x42e80000 xc144b1b9 x3f7a8da0 1 x3f7a8da0 1}\n       {x42ea0000 xc1315bc9 x3f9a7474 1 x3f9a7474 1}\n       {x42ec0000 xc11e149c x3f725da8 1 x3f725da8 1}\n       {x42ee0000 xc1131014 x3f3e9aa0 1 x3f3e9aa0 1}\n       {x42f00000 xc1064148 x3f20f87c 1 x3f20f87c 1}\n       {x42f20000 xc0fde209 x3f2e33ac 1 x3f2e33ac 1}\n       {x42f40000 xc0e0f5a5 x3f642184 1 x3f642184 1}\n       {x42f60000 xc0c4d9a8 x3f9d2710 1 x3f9d2710 1}\n       {x42f80000 xc092621d x3fdafe51 1 x3fdafe51 1}\n       {x42fa0000 xc02eb4ff x4012621d 1 x4012621d 1}\n       {x42fc0000 0 x402c174e 1 x402c174e 1}\n       {x42fe0000 x4029799c x402d9375 1 x402d9375 1}\n       {x43000000 x40ad9375 x40254525 1 x40254525 1}\n       {x43010000 x40fa01f3 x4033912d 1 x4033912d 1}\n       {x43020000 x41309251 x4053514b 1 x4053514b 1}\n       {x43030000 x4166a99f x405ae44e 1 x405ae44e 1}\n       {x43040000 x418f023c x4068d5ba 1 x4068d5ba 1}\n       {x43050000 x41ad8a3e x407394bc 1 x407394bc 1}\n       {x43060000 x41cbe76b x408dee8c 1 x408dee8c 1}\n       {x43070000 x41f48184 x4099201e 1 x4099201e 1}\n       {x43080000 x420c3bbd x40a18420 1 x40a18420 1}\n       {x43090000 x4222a1ca x40b7e9c8 1 x40b7e9c8 1}\n       {x430a0000 x423a362f x40af2a98 1 x40af2a98 1}\n       {x430b0000 x424e6c70 x40a9aa74 1 x40a9aa74 1}\n       {x430c0000 x4264a0cc x40b59ad0 1 x40b59ad0 1}\n       {x430d0000 x427bd324 x40c7d938 1 x40c7d938 1}\n       {x430e0000 x428b4b8d x40d365b8 1 x40d365b8 1}\n       {x430f0000 x42985649 x40cf6910 1 x40cf6910 1}\n       {x43100000 x42a538af x40cab260 1 x40cab260 1}\n       {x43110000 x42b1ac95 x40ca0670 1 x40ca0670 1}\n       {x43120000 x42be797d x40b93f08 1 x40b93f08 1}\n       {x43130000 x42c8d476 x40a81108 1 x40a81108 1}\n       {x43140000 x42d37b9e x40a5cc08 1 x40a5cc08 1}\n       {x43150000 x42dd8df7 x4077a3c0 1 x4077a3c0 1}\n       {x43160000 x42e2f5da x4007a8b0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke89 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44772168 x43d0dbe8 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke90 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44772168 x43d0dbe8 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3d7e39f 0 1 x40cd4410 1}\n       {x42580000 xc3d48c50 x40e6f320 1 x40e6f320 1}\n       {x425c0000 xc3d0ac06 x41065680 1 x41065680 1}\n       {x42600000 xc3cc26e8 x41201f90 1 x41201f90 1}\n       {x42640000 xc3c6aa0d x41398c90 1 x41398c90 1}\n       {x42680000 xc3c08e1f x4136c080 1 x4136c080 1}\n       {x426c0000 xc3bb3e05 x4129a160 1 x4129a160 1}\n       {x42700000 xc3b5f409 x412bc270 1 x412bc270 1}\n       {x42740000 xc3b081de x41316df0 1 x41316df0 1}\n       {x42780000 xc3aadd2a x412c09a0 1 x412c09a0 1}\n       {x427c0000 xc3a5c144 x412765b0 1 x412765b0 1}\n       {x42800000 xc3a066cf x412488d0 1 x412488d0 1}\n       {x42820000 xc39b78b7 x410d64d0 1 x410d64d0 1}\n       {x42840000 xc3979082 x40fb6880 1 x40fb6880 1}\n       {x42860000 xc3939d73 x41044710 1 x41044710 1}\n       {x42880000 xc38f4c11 x41065aa0 1 x41065aa0 1}\n       {x428a0000 xc38b37c9 x40fb86a0 1 x40fb86a0 1}\n       {x428c0000 xc3876fdc x40e76340 1 x40e76340 1}\n       {x428e0000 xc383fcaf x40e20220 1 x40e20220 1}\n       {x42900000 xc3805fcb x40f07dc0 1 x40f07dc0 1}\n       {x42920000 xc378f182 x40ef0a80 1 x40ef0a80 1}\n       {x42940000 xc371ceee x40d19070 1 x40d19070 1}\n       {x42960000 xc36bd87b x40ac0720 1 x40ac0720 1}\n       {x42980000 xc3670e7c x40966240 1 x40966240 1}\n       {x429a0000 xc3627257 x408b2b60 1 x408b2b60 1}\n       {x429c0000 xc35e5bc6 x40796ec0 1 x40796ec0 1}\n       {x429e0000 xc35aa6e1 x4073aca0 1 x4073aca0 1}\n       {x42a00000 xc356be61 x408537f0 1 x408537f0 1}\n       {x42a20000 xc3525362 x409d36b0 1 x409d36b0 1}\n       {x42a40000 xc34ceaf6 x40bd9cf0 1 x40bd9cf0 1}\n       {x42a60000 xc3467993 x40b64880 1 x40b64880 1}\n       {x42a80000 xc341866e x409f8520 1 x409f8520 1}\n       {x42aa0000 xc33c8141 x4099ac50 1 x4099ac50 1}\n       {x42ac0000 xc337eba9 x40828a10 1 x40828a10 1}\n       {x42ae0000 xc33458a0 x4047a200 1 x4047a200 1}\n       {x42b00000 xc331ae99 x4012d6c0 1 x4012d6c0 1}\n       {x42b20000 xc32fc1ea x3fe6cc40 1 x3fe6cc40 1}\n       {x42b40000 xc32e1368 x3fdeeb40 1 x3fdeeb40 1}\n       {x42b60000 xc32c463d x3ff1b780 1 x3ff1b780 1}\n       {x42b80000 xc32a4c8a x3ff54f00 1 x3ff54f00 1}\n       {x42ba0000 xc3287101 x3fed0680 1 x3fed0680 1}\n       {x42bc0000 xc3269870 x3fef0180 1 x3fef0180 1}\n       {x42be0000 xc324b4fb x3fe87640 1 x3fe87640 1}\n       {x42c00000 xc322f697 x3fe2ff80 1 x3fe2ff80 1}\n       {x42c20000 xc32128fd x404d9600 1 x404d9600 1}\n       {x42c40000 xc31c89e7 x4099bc00 1 x4099bc00 1}\n       {x42c60000 xc3178d3d x40a28c40 1 x40a28c40 1}\n       {x42c80000 xc3126123 x40a3ea30 1 x40a3ea30 1}\n       {x42ca0000 xc30d4e9a x40a64940 1 x40a64940 1}\n       {x42cc0000 xc307fc8f x40a58ce0 1 x40a58ce0 1}\n       {x42ce0000 xc302f5cc x4099fd28 1 x4099fd28 1}\n       {x42d00000 xc2fcb979 x40954990 1 x40954990 1}\n       {x42d20000 xc2f34266 x4090e690 1 x4090e690 1}\n       {x42d40000 xc2ea9ca7 x408d9d18 1 x408d9d18 1}\n       {x42d60000 xc2e18ec3 x408bfe30 1 x408bfe30 1}\n       {x42d80000 xc2d91ce1 x40858568 1 x40858568 1}\n       {x42da0000 xc2d0de16 x4083a208 1 x4083a208 1}\n       {x42dc0000 xc2c8a8a0 x40884238 1 x40884238 1}\n       {x42de0000 xc2bfd5cf x4096da30 1 x4096da30 1}\n       {x42e00000 xc2b5cd5a x40a393b8 1 x40a393b8 1}\n       {x42e20000 xc2ab6358 x40a63500 1 x40a63500 1}\n       {x42e40000 xc2a106ba x40a3ce10 1 x40a3ce10 1}\n       {x42e60000 xc296e996 x40a4d158 1 x40a4d158 1}\n       {x42e80000 xc28c6c8f x40a854e0 1 x40a854e0 1}\n       {x42ea0000 xc281defa x40a86168 1 x40a86168 1}\n       {x42ec0000 xc26ec0c4 x40bd86dc 1 x40bd86dc 1}\n       {x42ee0000 xc2545c3d x40cc599c 1 x40cc599c 1}\n       {x42f00000 xc23baa5d x40e2822c 1 x40e2822c 1}\n       {x42f20000 xc21bbbb2 x40f87474 1 x40f87474 1}\n       {x42f40000 xc1fb1a80 x4100d134 1 x4100d134 1}\n       {x42f60000 xc1b6a630 x40fb8e98 1 x40fb8e98 1}\n       {x42f80000 xc17aa668 x40f3edef 1 x40f3edef 1}\n       {x42fa0000 xc0f2bce2 x40faa668 1 x40faa668 1}\n       {x42fc0000 0 x40fc2b55 1 x40fc2b55 1}\n       {x42fe0000 x4102cce4 x41001084 1 x41001084 1}\n       {x43000000 x41801084 x40f6ae44 1 x40f6ae44 1}\n       {x43010000 x41bcbd94 x40ee2f6c 1 x40ee2f6c 1}\n       {x43020000 x41f7283a x40e1b4ac 1 x40e1b4ac 1}\n       {x43030000 x4216cbf5 x40d15c48 1 x40d15c48 1}\n       {x43040000 x422feb2f x40c1118c 1 x40c1118c 1}\n       {x43050000 x42471058 x40a9a5d4 1 x40a9a5d4 1}\n       {x43060000 x425a54a4 x408f35f4 1 x408f35f4 1}\n       {x43070000 x426addd5 x4071b518 1 x4071b518 1}\n       {x43080000 x42788b47 x40588328 1 x40588328 1}\n       {x43090000 x4282f71d x404a98a8 1 x404a98a8 1}\n       {x430a0000 x4288ef2e x4039e4b0 1 x4039e4b0 1}\n       {x430b0000 x428e9568 x402cc7e0 1 x402cc7e0 1}\n       {x430c0000 x4293bbac x401a71c0 1 x401a71c0 1}\n       {x430d0000 x42983c84 x400cec50 1 x400cec50 1}\n       {x430e0000 x429c8a71 x401172d0 1 x401172d0 1}\n       {x430f0000 x42a153b1 x40253930 1 x40253930 1}\n       {x43100000 x42a6de04 x40326050 1 x40326050 1}\n       {x43110000 x42ac79b6 x4030a100 1 x4030a100 1}\n       {x43120000 x42b1e814 x402f5aa0 1 x402f5aa0 1}\n       {x43130000 x42b76f60 x40182520 1 x40182520 1}\n       {x43140000 x42bb6a66 x3fc98b80 1 x3fc98b80 1}\n       {x43150000 x42bdbbbc x3f060b80 1 x3f060b80 1}\n       {x43160000 x42be1519 -}}\n      {{x42540000 x4487e040 0 1 xc15df1e0 1}\n       {x42580000 x448612e6 xc1782340 1 xc1782340 1}\n       {x425c0000 x4483ffb3 xc18700e0 1 xc18700e0 1}\n       {x42600000 x4481dadf xc1884200 1 xc1884200 1}\n       {x42640000 x447f7b46 xc185d150 1 xc185d150 1}\n       {x42680000 x447b58a9 xc18899c0 1 xc18899c0 1}\n       {x426c0000 x4476f1aa xc1881990 1 xc1881990 1}\n       {x42700000 x4472d710 xc18cc1b0 1 xc18cc1b0 1}\n       {x42740000 x446e258f xc19de330 1 xc19de330 1}\n       {x42780000 x4468f8dd xc1ab4ca0 1 xc1ab4ca0 1}\n       {x427c0000 x446370c5 xc1beb940 1 xc1beb940 1}\n       {x42800000 x445d0d49 xc1cb59a0 1 xc1cb59a0 1}\n       {x42820000 x4456bb2b xc1c7fc00 1 xc1c7fc00 1}\n       {x42840000 x44508d89 xc1c70d70 1 xc1c70d70 1}\n       {x42860000 x444a4a54 xc1cf83e0 1 xc1cf83e0 1}\n       {x42880000 x4443954b xc1ce9820 1 xc1ce9820 1}\n       {x428a0000 x443d60d2 xc1c926e0 1 xc1c926e0 1}\n       {x428c0000 x443702dd xc1d062d0 1 xc1d062d0 1}\n       {x428e0000 x44305aa5 xc1d76840 1 xc1d76840 1}\n       {x42900000 x44298c59 xc1de9040 1 xc1de9040 1}\n       {x42920000 x442271a1 xc1dc4e10 1 xc1dc4e10 1}\n       {x42940000 x441bc778 xc1d1b7e0 1 xc1d1b7e0 1}\n       {x42960000 x44155623 xc1c93ac0 1 xc1c93ac0 1}\n       {x42980000 x440f33cc xc1bcb4f0 1 xc1bcb4f0 1}\n       {x429a0000 x44098ad4 xc1b18120 1 xc1b18120 1}\n       {x429c0000 x44041bba xc1ac2b78 1 xc1ac2b78 1}\n       {x429e0000 x43fd9039 xc1a9d1d8 1 xc1a9d1d8 1}\n       {x42a00000 x43f2fd39 xc1a9ac40 1 xc1a9ac40 1}\n       {x42a20000 x43e85ab1 xc1a868a8 1 xc1a868a8 1}\n       {x42a40000 x43ddf024 xc1a015e0 1 xc1a015e0 1}\n       {x42a60000 x43d457f5 xc1a10ef8 1 xc1a10ef8 1}\n       {x42a80000 x43c9ce45 xc1aa6c60 1 xc1aa6c60 1}\n       {x42aa0000 x43bf0a69 xc1a9ab70 1 xc1a9ab70 1}\n       {x42ac0000 x43b498d7 xc1a64758 1 xc1a64758 1}\n       {x42ae0000 x43aa417e xc1a44828 1 xc1a44828 1}\n       {x42b00000 x43a00fd2 xc1a3f628 1 xc1a3f628 1}\n       {x42b20000 x4395c2b9 xc1a5e958 1 xc1a5e958 1}\n       {x42b40000 x438b52a7 xc1a822b0 1 xc1a822b0 1}\n       {x42b60000 x4380be63 xc1aa5130 1 xc1aa5130 1}\n       {x42b80000 x436c1102 xc1a85eac 1 xc1a85eac 1}\n       {x42ba0000 x4357651b xc1a1d3a8 1 xc1a1d3a8 1}\n       {x42bc0000 x43439c18 xc1997f54 1 xc1997f54 1}\n       {x42be0000 x43310546 xc18ee34c 1 xc18ee34c 1}\n       {x42c00000 x431fe345 xc183dc9c 1 xc183dc9c 1}\n       {x42c20000 x43100e1f xc1720138 1 xc1720138 1}\n       {x42c40000 x4301a31e xc163ca00 1 xc163ca00 1}\n       {x42c60000 x42e729be xc15fb0e8 1 xc15fb0e8 1}\n       {x42c80000 x42cb5a02 xc15f5d78 1 xc15f5d78 1}\n       {x42ca0000 x42af5260 xc15e0fec 1 xc15e0fec 1}\n       {x42cc0000 x4293d607 xc1479eb8 1 xc1479eb8 1}\n       {x42ce0000 x427ad564 xc13727ee 1 xc13727ee 1}\n       {x42d00000 x424c1817 xc13df322 1 xc13df322 1}\n       {x42d20000 x421bdbd3 xc1353870 1 xc1353870 1}\n       {x42d40000 x41e2f7be xc1240018 1 xc1240018 1}\n       {x42d60000 x4193b78e xc113c496 1 xc113c496 1}\n       {x42d80000 x411e6650 xc102a4e3 1 xc102a4e3 1}\n       {x42da0000 x40089558 xc0ef6f28 1 xc0ef6f28 1}\n       {x42dc0000 xc0a211af xc0d6d344 1 xc0d6d344 1}\n       {x42de0000 xc134adee xc0ac62c8 1 xc0ac62c8 1}\n       {x42e00000 xc17d6ba0 xc06bafec 1 xc06bafec 1}\n       {x42e20000 xc19542f2 xc00b561c 1 xc00b561c 1}\n       {x42e40000 xc1a18b57 xbf8dd8e8 1 xbf8dd8e8 1}\n       {x42e60000 xc1a6fe0f -}\n       {x42e80000 xc19f74c1 x3f9cc068 1 x3f9cc068 1}\n       {x42ea0000 xc1936602 x3fb6d8d0 1 x3fb6d8d0 1}\n       {x42ec0000 xc18899a7 x3fcefbbc 1 x3fcefbbc 1}\n       {x42ee0000 xc1730d15 x3fe2271c 1 x3fe2271c 1}\n       {x42f00000 xc158a987 x3fd51074 1 x3fd51074 1}\n       {x42f20000 xc13dc8f8 x3fc73e08 1 x3fc73e08 1}\n       {x42f40000 xc126da05 x3fc8b440 1 x3fc8b440 1}\n       {x42f60000 xc10b9be8 x3ffe63e6 1 x3ffe63e6 1}\n       {x42f80000 xc0ce8217 x4024c289 1 x4024c289 1}\n       {x42fa0000 xc064ea8e x404e8217 1 x404e8217 1}\n       {x42fc0000 0 x4072858c 1 x4072858c 1}\n       {x42fe0000 x40801045 x407f9c18 1 x407f9c18 1}\n       {x43000000 x40ff9c18 x408243ee 1 x408243ee 1}\n       {x43010000 x41424c10 x408ca342 1 x408ca342 1}\n       {x43020000 x418638a7 x409b5c80 1 x409b5c80 1}\n       {x43030000 x41aed448 x40a73842 1 x40a73842 1}\n       {x43040000 x41d9d4c8 x40aec994 1 x40aec994 1}\n       {x43050000 x42031c89 x40c0c194 1 x40c0c194 1}\n       {x43060000 x421d1ac9 x40e590b8 1 x40e590b8 1}\n       {x43070000 x423c80b7 x40e89710 1 x40e89710 1}\n       {x43080000 x4257408d x40dea290 1 x40dea290 1}\n       {x43090000 x4274295b x40e7126c 1 x40e7126c 1}\n       {x430a0000 x42888294 x40dd9d74 1 x40dd9d74 1}\n       {x430b0000 x4295c85c x40d0b308 1 x40d0b308 1}\n       {x430c0000 x42a298f5 x40d3e538 1 x40d3e538 1}\n       {x430d0000 x42b04503 x40e20fa0 1 x40e20fa0 1}\n       {x430e0000 x42bedae9 x40e75b58 1 x40e75b58 1}\n       {x430f0000 x42cd306e x40e1b420 1 x40e1b420 1}\n       {x43100000 x42db116d x40dc8eb0 1 x40dc8eb0 1}\n       {x43110000 x42e8c244 x40d52810 1 x40d52810 1}\n       {x43120000 x42f5b66f x40c5e200 1 x40c5e200 1}\n       {x43130000 x4300bf42 x40b4c8a8 1 x40b4c8a8 1}\n       {x43140000 x430627c2 x40a093a0 1 x40a093a0 1}\n       {x43150000 x430ac87c x40670200 1 x40670200 1}\n       {x43160000 x430d5fd2 x40053f40 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke91 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4448d439 x43c4724e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke92 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4448d439 x43c4724e 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c4b6fc 0 1 x40caaed0 1}\n       {x42580000 xc3c16890 x40e57360 1 x40e57360 1}\n       {x425c0000 xc3bd8b61 x4105e7d0 1 x4105e7d0 1}\n       {x42600000 xc3b90a13 x411eafa0 1 x411eafa0 1}\n       {x42640000 xc3b3a067 x412d9d40 1 x412d9d40 1}\n       {x42680000 xc3ae303f x412391f0 1 x412391f0 1}\n       {x426c0000 xc3a96748 x411ae840 1 x411ae840 1}\n       {x42700000 xc3a481bb x412094e0 1 x412094e0 1}\n       {x42740000 xc39f5dfa x4121ff80 1 x4121ff80 1}\n       {x42780000 xc39a61c3 x4118b790 1 x4118b790 1}\n       {x427c0000 xc395d281 x41172280 1 x41172280 1}\n       {x42800000 xc390ef9b x411c42b0 1 x411c42b0 1}\n       {x42820000 xc38c0e56 x410ea2d0 1 x410ea2d0 1}\n       {x42840000 xc388056e x40f6ab80 1 x40f6ab80 1}\n       {x42860000 xc38458fa x40e74da0 1 x40e74da0 1}\n       {x42880000 xc380cb01 x40f2f270 1 x40f2f270 1}\n       {x428a0000 xc37982cd x40f30230 1 x40f30230 1}\n       {x428c0000 xc37265df x40e34e00 1 x40e34e00 1}\n       {x428e0000 xc36b4ded x40eb8050 1 x40eb8050 1}\n       {x42900000 xc363adda x40f62c70 1 x40f62c70 1}\n       {x42920000 xc35beb26 x40d88040 1 x40d88040 1}\n       {x42940000 xc35625d6 x40af0fe0 1 x40af0fe0 1}\n       {x42960000 xc350fa28 x409d0670 1 x409d0670 1}\n       {x42980000 xc34c556f x4094fa90 1 x4094fa90 1}\n       {x429a0000 xc347aa7f x408ca050 1 x408ca050 1}\n       {x429c0000 xc3438b6a x407ab780 1 x407ab780 1}\n       {x429e0000 xc33fd4c3 x407001c0 1 x407001c0 1}\n       {x42a00000 xc33c0b5c x40829c50 1 x40829c50 1}\n       {x42a20000 xc337aafe x40934600 1 x40934600 1}\n       {x42a40000 xc332d6fc x40a2a4b0 1 x40a2a4b0 1}\n       {x42a60000 xc32d80b3 x409e46d0 1 x409e46d0 1}\n       {x42a80000 xc328f28f x40936d60 1 x40936d60 1}\n       {x42aa0000 xc32449dd x4092b680 1 x4092b680 1}\n       {x42ac0000 xc31fc727 x4080db00 1 x4080db00 1}\n       {x42ae0000 xc31c3c2d x4048ca60 1 x4048ca60 1}\n       {x42b00000 xc31980d4 x401335a0 1 x401335a0 1}\n       {x42b20000 xc317a280 x3fdb18c0 1 x3fdb18c0 1}\n       {x42b40000 xc3161471 x3fd34980 1 x3fd34980 1}\n       {x42b60000 xc314555a x3fdc5b40 1 x3fdc5b40 1}\n       {x42b80000 xc312a304 x3fd74f80 1 x3fd74f80 1}\n       {x42ba0000 xc310f81c x3fcf17c0 1 x3fcf17c0 1}\n       {x42bc0000 xc30f66a5 x3fd18740 1 x3fd18740 1}\n       {x42be0000 xc30db1ff x3fd80f40 1 x3fd80f40 1}\n       {x42c00000 xc30c0668 x3fd1d0c0 1 x3fd1d0c0 1}\n       {x42c20000 xc30a6abc x403f18c0 1 x403f18c0 1}\n       {x42c40000 xc3060da2 x408e8df0 1 x408e8df0 1}\n       {x42c60000 xc30181dd x40969618 1 x40969618 1}\n       {x42c80000 xc2f94881 x409b1cc0 1 x409b1cc0 1}\n       {x42ca0000 xc2efa022 x409bc808 1 x409bc808 1}\n       {x42cc0000 xc2e5cf80 x409c2a88 1 x409c2a88 1}\n       {x42ce0000 xc2dc1ad1 x4093b108 1 x4093b108 1}\n       {x42d00000 xc2d3595f x40884b90 1 x40884b90 1}\n       {x42d20000 xc2cb115f x40792b00 1 x40792b00 1}\n       {x42d40000 xc2c3c6af x4066e770 1 x4066e770 1}\n       {x42d60000 xc2bca2e8 x405be2d0 1 x405be2d0 1}\n       {x42d80000 xc2b60882 x404ecd60 1 x404ecd60 1}\n       {x42da0000 xc2afb612 x404d1060 1 x404d1060 1}\n       {x42dc0000 xc2a9377c x40569b80 1 x40569b80 1}\n       {x42de0000 xc2a24c5a x40629dd0 1 x40629dd0 1}\n       {x42e00000 xc29b0d9f x406b2520 1 x406b2520 1}\n       {x42e20000 xc2939a08 x40706540 1 x40706540 1}\n       {x42e40000 xc28c074b x40750e50 1 x40750e50 1}\n       {x42e60000 xc2844923 x407cc980 1 x407cc980 1}\n       {x42e80000 xc2787566 x4086bfe4 1 x4086bfe4 1}\n       {x42ea0000 xc266e24d x40935010 1 x40935010 1}\n       {x42ec0000 xc253a162 x40a1c480 1 x40a1c480 1}\n       {x42ee0000 xc23e712d x40b450c4 1 x40b450c4 1}\n       {x42f00000 xc2268d31 x40c5f1a8 1 x40c5f1a8 1}\n       {x42f20000 xc20cf4c3 x40d637f6 1 x40d637f6 1}\n       {x42f40000 xc1e1fe67 x40e1d4f6 1 x40e1d4f6 1}\n       {x42f60000 xc1a8ff0b x40e605dd 1 x40e605dd 1}\n       {x42f80000 xc15df6f1 x40e14c0d 1 x40e14c0d 1}\n       {x42fa0000 xc0e16412 x40ddf6f1 1 x40ddf6f1 1}\n       {x42fc0000 0 x40e3c4bc 1 x40e3c4bc 1}\n       {x42fe0000 x40e62565 x40e5df9a 1 x40e5df9a 1}\n       {x43000000 x4165df9a x40e1c33c 1 x40e1c33c 1}\n       {x43010000 x41aa6af7 x40da15c4 1 x40da15c4 1}\n       {x43020000 x41dffaaf x40d0c276 1 x40d0c276 1}\n       {x43030000 x42096619 x40c3acda 1 x40c3acda 1}\n       {x43040000 x4220e88e x40b2ea18 1 x40b2ea18 1}\n       {x43050000 x4236209f x40995c9c 1 x40995c9c 1}\n       {x43060000 x42473fb5 x4074bda0 1 x4074bda0 1}\n       {x43070000 x4254b853 x40539080 1 x40539080 1}\n       {x43080000 x4261b1c5 x4046fb28 1 x4046fb28 1}\n       {x43090000 x426d97b8 x4037bbb8 1 x4037bbb8 1}\n       {x430a0000 x4278a93c x40295890 1 x40295890 1}\n       {x430b0000 x42816165 x40196270 1 x40196270 1}\n       {x430c0000 x4285eac5 x400a0680 1 x400a0680 1}\n       {x430d0000 x428a01cd x40008a80 1 x40008a80 1}\n       {x430e0000 x428df36d x400ac770 1 x400ac770 1}\n       {x430f0000 x4292ae44 x401d3080 1 x401d3080 1}\n       {x43100000 x4297c675 x4025d5a0 1 x4025d5a0 1}\n       {x43110000 x429d0b9e x4027eb80 1 x4027eb80 1}\n       {x43120000 x42a2452d x4025cc00 1 x4025cc00 1}\n       {x43130000 x42a7685e x400e7b90 1 x400e7b90 1}\n       {x43140000 x42ab2ce6 x3fb654c0 1 x3fb654c0 1}\n       {x43150000 x42ad1b04 x3e76de00 1 x3e76de00 1}\n       {x43160000 x42ad4429 -}}\n      {{x42540000 x4487915a 0 1 xc15d6300 1}\n       {x42580000 x4485c4fe xc177c400 1 xc177c400 1}\n       {x425c0000 x4483b24a xc186de00 1 xc186de00 1}\n       {x42600000 x44818e0e xc187f740 1 xc187f740 1}\n       {x42640000 x447ee520 xc1848980 1 xc1848980 1}\n       {x42680000 x447ad384 xc184e8a0 1 xc184e8a0 1}\n       {x426c0000 x44769696 xc1880c20 1 xc1880c20 1}\n       {x42700000 x447252c2 xc190c4b0 1 xc190c4b0 1}\n       {x42740000 x446d8a4b xc1a43920 1 xc1a43920 1}\n       {x42780000 x44680f30 xc1b429f0 1 xc1b429f0 1}\n       {x427c0000 x446247ac xc1c3a890 1 xc1c3a890 1}\n       {x42800000 x445bd4a7 xc1cc32b0 1 xc1cc32b0 1}\n       {x42820000 x44558481 xc1c94db0 1 xc1c94db0 1}\n       {x42840000 x444f3fcc xc1c8f1e0 1 xc1c8f1e0 1}\n       {x42860000 x4448f563 xc1d11700 1 xc1d11700 1}\n       {x42880000 x44422e5c xc1d56390 1 xc1d56390 1}\n       {x428a0000 x443b9f2a xc1d32080 1 xc1d32080 1}\n       {x428c0000 x4434fc54 xc1d6c710 1 xc1d6c710 1}\n       {x428e0000 x442e32b9 xc1db3c40 1 xc1db3c40 1}\n       {x42900000 x44274890 xc1e19b60 1 xc1e19b60 1}\n       {x42920000 x44201903 xc1dd5410 1 xc1dd5410 1}\n       {x42940000 x4419734f xc1d16080 1 xc1d16080 1}\n       {x42960000 x441302fb xc1ca4250 1 xc1ca4250 1}\n       {x42980000 x440ccf2a xc1bd7c50 1 xc1bd7c50 1}\n       {x429a0000 x44072b36 xc1b111d0 1 xc1b111d0 1}\n       {x429c0000 x4401be0d xc1acf5f0 1 xc1acf5f0 1}\n       {x429e0000 x43f8b7ae xc1aa0c48 1 xc1aa0c48 1}\n       {x42a00000 x43ee3a91 xc1a6f2a8 1 xc1a6f2a8 1}\n       {x42a20000 x43e3d959 xc1a7c3b0 1 xc1a7c3b0 1}\n       {x42a40000 x43d9421b xc1a75c10 1 xc1a75c10 1}\n       {x42a60000 x43ceedd7 xc1a1ed08 1 xc1a1ed08 1}\n       {x42a80000 x43c5047a xc1a13850 1 xc1a13850 1}\n       {x42aa0000 x43bac6cd xc1a4ab00 1 xc1a4ab00 1}\n       {x42ac0000 x43b06f1a xc1a4c008 1 xc1a4c008 1}\n       {x42ae0000 x43a62ecc xc1a15090 1 xc1a15090 1}\n       {x42b00000 x439c4508 xc1a0af18 1 xc1a0af18 1}\n       {x42b20000 x439218e9 xc1a3d6d0 1 xc1a3d6d0 1}\n       {x42b40000 x4387ca2e xc1a649ec 1 xc1a649ec 1}\n       {x42b60000 x437a9f57 xc1a8db48 1 xc1a8db48 1}\n       {x42b80000 x43655d8a xc1a6af38 1 xc1a6af38 1}\n       {x42ba0000 x4350f389 xc1a05cf0 1 xc1a05cf0 1}\n       {x42bc0000 x433d464e xc1984230 1 xc1984230 1}\n       {x42be0000 x432ae2fd xc18db764 1 xc18db764 1}\n       {x42c00000 x4319d875 xc182c6a0 1 xc182c6a0 1}\n       {x42c20000 x430a3155 xc16f6948 1 xc16f6948 1}\n       {x42c40000 x42f7d698 xc1613850 1 xc1613850 1}\n       {x42c60000 x42dc1496 xc15b1040 1 xc15b1040 1}\n       {x42c80000 x42c11288 xc1593c48 1 xc1593c48 1}\n       {x42ca0000 x42a5c584 xc15a3284 1 xc15a3284 1}\n       {x42cc0000 x428a85e7 xc1427336 1 xc1427336 1}\n       {x42ce0000 x426a516d xc131964e 1 xc131964e 1}\n       {x42d00000 x423c40a7 xc13c44da 1 xc13c44da 1}\n       {x42d20000 x420c2f00 xc135e650 1 xc135e650 1}\n       {x42d40000 x41c29afe xc122b4ae 1 xc122b4ae 1}\n       {x42d60000 x416b52a5 xc11071fb 1 xc11071fb 1}\n       {x42d80000 x40c8a40d xc101c630 1 xc101c630 1}\n       {x42da0000 xbfc1cddf xc0efac3e 1 xc0efac3e 1}\n       {x42dc0000 xc10b5a37 xc0d4a980 1 xc0d4a980 1}\n       {x42de0000 xc16ce33c xc0a5ab05 1 xc0a5ab05 1}\n       {x42e00000 xc198829e xc059f118 1 xc059f118 1}\n       {x42e20000 xc1acede4 xbff92d48 1 xbff92d48 1}\n       {x42e40000 xc1b7a847 xbf541450 1 xbf541450 1}\n       {x42e60000 xc1ba2f29 -}\n       {x42e80000 xc1b02eca x3fc59850 1 x3fc59850 1}\n       {x42ea0000 xc1a17c1f x3fe476d0 1 x3fe476d0 1}\n       {x42ec0000 xc1939ff0 x3feb3270 1 x3feb3270 1}\n       {x42ee0000 xc18415d1 x3ff27d94 1 x3ff27d94 1}\n       {x42f00000 xc16aa07b x3fed79b8 1 x3fed79b8 1}\n       {x42f20000 xc14ccd34 x3fd913f8 1 x3fd913f8 1}\n       {x42f40000 xc1345b7d x3fea75a4 1 x3fea75a4 1}\n       {x42f60000 xc1122fcb x400db544 1 x400db544 1}\n       {x42f80000 xc0db01b6 x402e4b31 1 x402e4b31 1}\n       {x42fa0000 xc06c28ca x405b01b6 1 x405b01b6 1}\n       {x42fc0000 0 x407bd8dc 1 x407bd8dc 1}\n       {x42fe0000 x4085c477 x40841732 1 x40841732 1}\n       {x43000000 x41041732 x4083fbb0 1 x4083fbb0 1}\n       {x43010000 x4146ddeb x408da6e2 1 x408da6e2 1}\n       {x43020000 x4188df0a x409ac5ff 1 x409ac5ff 1}\n       {x43030000 x41b0d1f5 x40a505b2 1 x40a505b2 1}\n       {x43040000 x41db61e3 x40acdc4e 1 x40acdc4e 1}\n       {x43050000 x4203a00e x40b62f9e 1 x40b62f9e 1}\n       {x43060000 x421b3cd9 x40cdb1b0 1 x40cdb1b0 1}\n       {x43070000 x42370c7a x40dce270 1 x40dce270 1}\n       {x43080000 x42527575 x40e11f78 1 x40e11f78 1}\n       {x43090000 x426f5458 x40e3a1bc 1 x40e3a1bc 1}\n       {x430a0000 x4285aef2 x40da0a38 1 x40da0a38 1}\n       {x430b0000 x4292eb73 x40d13620 1 x40d13620 1}\n       {x430c0000 x429fd5b6 x40d56b28 1 x40d56b28 1}\n       {x430d0000 x42ad98d8 x40e39b00 1 x40e39b00 1}\n       {x430e0000 x42bc4916 x40e914b8 1 x40e914b8 1}\n       {x430f0000 x42cabb6f x40e29d90 1 x40e29d90 1}\n       {x43100000 x42d89cc8 x40dc2460 1 x40dc2460 1}\n       {x43110000 x42e63ffb x40d5c6d8 1 x40d5c6d8 1}\n       {x43120000 x42f355a3 x40c6eb60 1 x40c6eb60 1}\n       {x43130000 x42ff1d67 x40b727d8 1 x40b727d8 1}\n       {x43140000 x43051d4f x40a43e98 1 x40a43e98 1}\n       {x43150000 x4309d29d x406e6480 1 x406e6480 1}\n       {x43160000 x430c9073 x400ffe00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke93 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448722f2 x4439cb85 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke94 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448722f2 x4439cb85 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3eb151a 0 1 x40cccf50 1}\n       {x42580000 xc3e7c010 x40e628e0 1 x40e628e0 1}\n       {x425c0000 xc3e3e3d3 x4105c6c0 1 x4105c6c0 1}\n       {x42600000 xc3df63a4 x411f9760 1 x411f9760 1}\n       {x42640000 xc3d9ea5d x413977e0 1 x413977e0 1}\n       {x42680000 xc3d3cc26 x4136dc80 1 x4136dc80 1}\n       {x426c0000 xc3ce7c95 x4129ce20 1 x4129ce20 1}\n       {x42700000 xc3c92f44 x412fefc0 1 x412fefc0 1}\n       {x42740000 xc3c37d99 x41355f30 1 x41355f30 1}\n       {x42780000 xc3bdd951 x412c39c0 1 x412c39c0 1}\n       {x427c0000 xc3b8b9fd x4127e000 1 x4127e000 1}\n       {x42800000 xc3b35b51 x41225510 1 x41225510 1}\n       {x42820000 xc3ae94ac x410d31d0 1 x410d31d0 1}\n       {x42840000 xc3aa8834 x4100b7f0 1 x4100b7f0 1}\n       {x42860000 xc3a6892d x4109af30 1 x4109af30 1}\n       {x42880000 xc3a1ed41 x410b7410 1 x410b7410 1}\n       {x428a0000 xc39dd1ec x40fa37c0 1 x40fa37c0 1}\n       {x428c0000 xc39a1b83 x40e154c0 1 x40e154c0 1}\n       {x428e0000 xc396c746 x40d7a320 1 x40d7a320 1}\n       {x42900000 xc3935e6a x40f00ea0 1 x40f00ea0 1}\n       {x42920000 xc38f46d1 x40ef4600 1 x40ef4600 1}\n       {x42940000 xc38be43a x40c6f880 1 x40c6f880 1}\n       {x42960000 xc3890f0d x40a79c80 1 x40a79c80 1}\n       {x42980000 xc386a756 x409721e0 1 x409721e0 1}\n       {x429a0000 xc38455fe x408be5a0 1 x408be5a0 1}\n       {x429c0000 xc3824829 x407b20c0 1 x407b20c0 1}\n       {x429e0000 xc380697b x40768ca0 1 x40768ca0 1}\n       {x42a00000 xc37cdbed x40868e10 1 x40868e10 1}\n       {x42a20000 xc3786a15 x40a08ee0 1 x40a08ee0 1}\n       {x42a40000 xc372d2ff x40c5f080 1 x40c5f080 1}\n       {x42a60000 xc36c0b0d x40bab0c0 1 x40bab0c0 1}\n       {x42a80000 xc36727f3 x409f0fb0 1 x409f0fb0 1}\n       {x42aa0000 xc3621a12 x409c9850 1 x409c9850 1}\n       {x42ac0000 xc35d5e6e x40899010 1 x40899010 1}\n       {x42ae0000 xc3598111 x4052ac00 1 x4052ac00 1}\n       {x42b00000 xc356c90e x40169aa0 1 x40169aa0 1}\n       {x42b20000 xc354cc3c x3fe0ba00 1 x3fe0ba00 1}\n       {x42b40000 xc3534626 x3fdb1ac0 1 x3fdb1ac0 1}\n       {x42b60000 xc3515fd1 x4008a5c0 1 x4008a5c0 1}\n       {x42b80000 xc34f00f8 x40143320 1 x40143320 1}\n       {x42ba0000 xc34cbe38 x4019d5e0 1 x4019d5e0 1}\n       {x42bc0000 xc34a3249 x4024d3c0 1 x4024d3c0 1}\n       {x42be0000 xc347979a x401d8240 1 x401d8240 1}\n       {x42c00000 xc3454637 x4011bd20 1 x4011bd20 1}\n       {x42c20000 xc34309b1 x406b04e0 1 x406b04e0 1}\n       {x42c40000 xc33dee10 x40ae8440 1 x40ae8440 1}\n       {x42c60000 xc338216d x40bc0110 1 x40bc0110 1}\n       {x42c80000 xc3322dff x40b99e10 1 x40b99e10 1}\n       {x42ca0000 xc32c878c x40b568c0 1 x40b568c0 1}\n       {x42cc0000 xc326d773 x40b88d50 1 x40b88d50 1}\n       {x42ce0000 xc320feb7 x40b6fcd0 1 x40b6fcd0 1}\n       {x42d00000 xc31b67a6 x40a61700 1 x40a61700 1}\n       {x42d20000 xc3169d47 x409912c0 1 x409912c0 1}\n       {x42d40000 xc311d67a x409ba150 1 x409ba150 1}\n       {x42d60000 xc30ce332 x409fb4c0 1 x409fb4c0 1}\n       {x42d80000 xc307db2e x409db040 1 x409db040 1}\n       {x42da0000 xc303082e x40a293b8 1 x40a293b8 1}\n       {x42dc0000 xc2fb63e5 x40b48918 1 x40b48918 1}\n       {x42de0000 xc2ef7f39 x40c496e0 1 x40c496e0 1}\n       {x42e00000 xc2e2d109 x40cd11a0 1 x40cd11a0 1}\n       {x42e20000 xc2d5dd05 x40d06f48 1 x40d06f48 1}\n       {x42e40000 xc2c8c320 x40d53678 1 x40d53678 1}\n       {x42e60000 xc2bb3636 x40d7aca0 1 x40d7aca0 1}\n       {x42e80000 xc2adcd8c x40dffcc8 1 x40dffcc8 1}\n       {x42ea0000 xc29f369d x40e9d3d8 1 x40e9d3d8 1}\n       {x42ec0000 xc2909311 x40fc1a70 1 x40fc1a70 1}\n       {x42ee0000 xc27f669e x4101a7b2 1 x4101a7b2 1}\n       {x42f00000 xc2605249 x410effd4 1 x410effd4 1}\n       {x42f20000 xc237e6b4 x41176446 1 x41176446 1}\n       {x42f40000 xc214a026 x41186a72 1 x41186a72 1}\n       {x42f60000 xc1d762f6 x4115ce77 1 x4115ce77 1}\n       {x42f80000 xc19371d5 x410f54ca 1 x410f54ca 1}\n       {x42fa0000 xc1101c57 x411371d5 1 x411371d5 1}\n       {x42fc0000 0 x41108b96 1 x41108b96 1}\n       {x42fe0000 x4110fad4 x410f7bf0 1 x410f7bf0 1}\n       {x43000000 x418f7bf0 x4107c301 1 x4107c301 1}\n       {x43010000 x41d0406b x4102ce5c 1 x4102ce5c 1}\n       {x43020000 x42092526 x40f732b6 1 x40f732b6 1}\n       {x43030000 x4225ece3 x40dd473c 1 x40dd473c 1}\n       {x43040000 x424076f5 x40cdb5a8 1 x40cdb5a8 1}\n       {x43050000 x42595a4d x40b57f1c 1 x40b57f1c 1}\n       {x43060000 x426dd6bc x409be3e4 1 x409be3e4 1}\n       {x43070000 x428029a3 x408cc890 1 x408cc890 1}\n       {x43080000 x42888470 x407e17b0 1 x407e17b0 1}\n       {x43090000 x42900b1e x40678ce0 1 x40678ce0 1}\n       {x430a0000 x4296fd3e x40567bd0 1 x40567bd0 1}\n       {x430b0000 x429d72db x40468300 1 x40468300 1}\n       {x430c0000 x42a3656e x40383be0 1 x40383be0 1}\n       {x430d0000 x42a8f699 x40374190 1 x40374190 1}\n       {x430e0000 x42aed987 x403deec0 1 x403deec0 1}\n       {x430f0000 x42b4d585 x40483e50 1 x40483e50 1}\n       {x43100000 x42bb5d6c x404f73f0 1 x404f73f0 1}\n       {x43110000 x42c1ccc4 x404cb4d0 1 x404cb4d0 1}\n       {x43120000 x42c828b9 x4043ebe0 1 x4043ebe0 1}\n       {x43130000 x42ce0b82 x402a1fa0 1 x402a1fa0 1}\n       {x43140000 x42d2cab3 x40017ff0 1 x40017ff0 1}\n       {x43150000 x42d62381 x3f8a51c0 1 x3f8a51c0 1}\n       {x43160000 x42d71d41 x3e43f900 1 0 1}}\n      {{x42540000 x4487a602 0 1 xc15df440 1}\n       {x42580000 x4485d8c5 xc177f300 1 xc177f300 1}\n       {x425c0000 x4483c636 xc186d3e0 1 xc186d3e0 1}\n       {x42600000 x4481a226 xc1881eb0 1 xc1881eb0 1}\n       {x42640000 x447f0a81 xc18aadf0 1 xc18aadf0 1}\n       {x42680000 x447a996d xc18d7ef0 1 xc18d7ef0 1}\n       {x426c0000 x44763292 xc18806d0 1 xc18806d0 1}\n       {x42700000 x44721900 xc189e760 1 xc189e760 1}\n       {x42740000 x446d941c xc19ac530 1 xc19ac530 1}\n       {x42780000 x44686cad xc1aacb80 1 xc1aacb80 1}\n       {x427c0000 x4462e764 xc1be8a90 1 xc1be8a90 1}\n       {x42800000 x445c8404 xc1c6aec0 1 xc1c6aec0 1}\n       {x42820000 x44567c78 xc1c2b1b0 1 xc1c2b1b0 1}\n       {x42840000 x445058e9 xc1c652c0 1 xc1c652c0 1}\n       {x42860000 x444a174c xc1cc9ee0 1 xc1cc9ee0 1}\n       {x42880000 x44438efb xc1c81cd0 1 xc1c81cd0 1}\n       {x428a0000 x443d957f xc1bbf850 1 xc1bbf850 1}\n       {x428c0000 x4437cf76 xc1bc9100 1 xc1bc9100 1}\n       {x428e0000 x4431cc6f xc1c17b30 1 xc1c17b30 1}\n       {x42900000 x442bb7c3 xc1ca1570 1 xc1ca1570 1}\n       {x42920000 x44252b18 xc1caec40 1 xc1caec40 1}\n       {x42940000 x441f08ff xc1c38320 1 xc1c38320 1}\n       {x42960000 x4418f2e6 xc1c35ef0 1 xc1c35ef0 1}\n       {x42980000 x4412d310 xc1bc6420 1 xc1bc6420 1}\n       {x429a0000 x440d2ca4 xc1b13ac0 1 xc1b13ac0 1}\n       {x429c0000 x4407bf64 xc1ac1dd0 1 xc1ac1dd0 1}\n       {x429e0000 x44026ac7 xc1a9c098 1 xc1a9c098 1}\n       {x42a00000 x43fa46b5 xc1a8e918 1 xc1a8e918 1}\n       {x42a20000 x43efb86b xc1a99160 1 xc1a99160 1}\n       {x42a40000 x43e51489 xc1a76cc8 1 xc1a76cc8 1}\n       {x42a60000 x43dacad2 xc1a4e480 1 xc1a4e480 1}\n       {x42a80000 x43d077f9 xc1a2c040 1 xc1a2c040 1}\n       {x42aa0000 x43c672ca xc1a15ad0 1 xc1a15ad0 1}\n       {x42ac0000 x43bc4c9f xc1a2e3d0 1 xc1a2e3d0 1}\n       {x42ae0000 x43b21650 xc1a30a20 1 xc1a30a20 1}\n       {x42b00000 x43a7eb5b xc1a3aac0 1 xc1a3aac0 1}\n       {x42b20000 x439da0f8 xc1a63880 1 xc1a63880 1}\n       {x42b40000 x4393244b xc1aa3f50 1 xc1aa3f50 1}\n       {x42b60000 x4388590e xc1aced30 1 xc1aced30 1}\n       {x42b80000 x437b0d4a xc1ab2dbc 1 xc1ab2dbc 1}\n       {x42ba0000 x4365e6ad xc1a575f0 1 xc1a575f0 1}\n       {x42bc0000 x4351afce xc19c13fc 1 xc19c13fc 1}\n       {x42be0000 x433ee1ae xc18fce68 1 xc18fce68 1}\n       {x42c00000 x432dbc34 xc18439a8 1 xc18439a8 1}\n       {x42c20000 x431dd344 xc17346e0 1 xc17346e0 1}\n       {x42c40000 x430f5358 xc1687710 1 xc1687710 1}\n       {x42c60000 x4300c462 xc16a77fc 1 xc16a77fc 1}\n       {x42c80000 x42e408b1 xc16b5fa8 1 xc16b5fa8 1}\n       {x42ca0000 x42c6b0da xc1674004 1 xc1674004 1}\n       {x42cc0000 x42aa38b0 xc164ee3c 1 xc164ee3c 1}\n       {x42ce0000 x428d754b xc160320e 1 xc160320e 1}\n       {x42d00000 x42645859 xc14e6b92 1 xc14e6b92 1}\n       {x42d20000 x4233b4cd xc13a41c0 1 xc13a41c0 1}\n       {x42d40000 x42073779 xc12b9f9b 1 xc12b9f9b 1}\n       {x42d60000 x41bbc9ff xc119bec4 1 xc119bec4 1}\n       {x42d80000 x4169605b xc109a13a 1 xc109a13a 1}\n       {x42da0000 x40c8a315 xc1022b92 1 xc1022b92 1}\n       {x42dc0000 xbfd7b644 xc0ea6eec 1 xc0ea6eec 1}\n       {x42de0000 xc1061d62 xc0b7f696 1 xc0b7f696 1}\n       {x42e00000 xc152ed5f xc07ba448 1 xc07ba448 1}\n       {x42e20000 xc181f7c3 xc0205a0a 1 xc0205a0a 1}\n       {x42e40000 xc1918d32 xbfb85e50 1 xbfb85e50 1}\n       {x42e60000 xc199038d -}\n       {x42e80000 xc195a873 x3f510b00 1 x3f510b00 1}\n       {x42ea0000 xc18bf2dd x3eca0980 1 x3eca0980 1}\n       {x42ec0000 xc18ae57b x3eca0980 1 x3eca0980 1}\n       {x42ee0000 xc17fed95 x3fe019a8 1 x3fe019a8 1}\n       {x42f00000 xc15dc48c x3fbaf9f8 1 x3fbaf9f8 1}\n       {x42f20000 xc1512f17 x3faba6d8 1 x3faba6d8 1}\n       {x42f40000 xc132dad6 x3fcda834 1 x3fcda834 1}\n       {x42f60000 xc11dc50a x4014f784 1 x4014f784 1}\n       {x42f80000 xc0d0be28 x403e4d44 1 x403e4d44 1}\n       {x42fa0000 xc07a79a0 x4050be28 1 x4050be28 1}\n       {x42fc0000 0 x407f54d4 1 x407f54d4 1}\n       {x42fe0000 x40821804 x4083a422 1 x4083a422 1}\n       {x43000000 x4103a422 x408b8523 1 x408b8523 1}\n       {x43010000 x414c9125 x409cd4fa 1 x409cd4fa 1}\n       {x43020000 x41903c8e x40b38c03 1 x40b38c03 1}\n       {x43030000 x41c00e94 x40c1bc6e 1 x40c1bc6e 1}\n       {x43040000 x41f11ac5 x40c5347c 1 x40c5347c 1}\n       {x43050000 x42115469 x40ca9382 1 x40ca9382 1}\n       {x43060000 x422b3243 x40d205d0 1 x40d205d0 1}\n       {x43070000 x4245d5dd x40e03f58 1 x40e03f58 1}\n       {x43080000 x42634219 x40f06f6c 1 x40f06f6c 1}\n       {x43090000 x4280f8dc x40f1b91c 1 x40f1b91c 1}\n       {x430a0000 x428fd830 x40e4d298 1 x40e4d298 1}\n       {x430b0000 x429d932f x40d595b0 1 x40d595b0 1}\n       {x430c0000 x42aa8ae6 x40d54890 1 x40d54890 1}\n       {x430d0000 x42b83c41 x40de60f8 1 x40de60f8 1}\n       {x430e0000 x42c65705 x40e01b68 1 x40e01b68 1}\n       {x430f0000 x42d43fae x40dbfa18 1 x40dbfa18 1}\n       {x43100000 x42e1d648 x40d832e0 1 x40d832e0 1}\n       {x43110000 x42ef460a x40d211b0 1 x40d211b0 1}\n       {x43120000 x42fc187e x40c4b9e0 1 x40c4b9e0 1}\n       {x43130000 x4303eea3 x40af0280 1 x40af0280 1}\n       {x43140000 x4308fc67 x4097ad40 1 x4097ad40 1}\n       {x43150000 x430d6977 x40554980 1 x40554980 1}\n       {x43160000 x430fa6b3 x3fd8a380 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke95 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4451349c x43c93df4 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke96 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4451349c x43c93df4 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c6fd2c 0 1 x40cb44e0 1}\n       {x42580000 xc3c3acb8 x40e5cd40 1 x40e5cd40 1}\n       {x425c0000 xc3bfcec2 x41060390 1 x41060390 1}\n       {x42600000 xc3bb4c7f x411efd80 1 x411efd80 1}\n       {x42640000 xc3b5deea x412e29f0 1 x412e29f0 1}\n       {x42680000 xc3b069e0 x412b82f0 1 x412b82f0 1}\n       {x426c0000 xc3ab26bb x4122ba20 1 x4122ba20 1}\n       {x42700000 xc3a63e3e x41254390 1 x41254390 1}\n       {x42740000 xc3a0d282 x4126cd70 1 x4126cd70 1}\n       {x42780000 xc39bd167 x411972d0 1 x411972d0 1}\n       {x427c0000 xc3973b55 x4117cf30 1 x4117cf30 1}\n       {x42800000 xc3925474 x411ca720 1 x411ca720 1}\n       {x42820000 xc38d70e3 x410ed960 1 x410ed960 1}\n       {x42840000 xc38966de x40f6e9a0 1 x40f6e9a0 1}\n       {x42860000 xc385b996 x40f561c0 1 x40f561c0 1}\n       {x42880000 xc381bbd0 x4101f878 1 x4101f878 1}\n       {x428a0000 xc37b341d x40fb47a0 1 x40fb47a0 1}\n       {x428c0000 xc373c326 x40e7cdd0 1 x40e7cdd0 1}\n       {x428e0000 xc36cb740 x40ea5040 1 x40ea5040 1}\n       {x42900000 xc3651e22 x40f51500 1 x40f51500 1}\n       {x42920000 xc35d65f0 x40e1a680 1 x40e1a680 1}\n       {x42940000 xc35703ba x40bc8090 1 x40bc8090 1}\n       {x42960000 xc3519de7 x40a221a0 1 x40a221a0 1}\n       {x42980000 xc34ce1a0 x4095fed0 1 x4095fed0 1}\n       {x429a0000 xc3483dfa x408be850 1 x408be850 1}\n       {x429c0000 xc344231b x4078a1a0 1 x4078a1a0 1}\n       {x429e0000 xc34078ed x406ad860 1 x406ad860 1}\n       {x42a00000 xc33ccc58 x407c1440 1 x407c1440 1}\n       {x42a20000 xc338984b x4091eaf0 1 x4091eaf0 1}\n       {x42a40000 xc333ada9 x40add1b0 1 x40add1b0 1}\n       {x42a60000 xc32dbb30 x40a87780 1 x40a87780 1}\n       {x42a80000 xc3292631 x40943200 1 x40943200 1}\n       {x42aa0000 xc3247810 x409269b0 1 x409269b0 1}\n       {x42ac0000 xc31fff96 x407f2ce0 1 x407f2ce0 1}\n       {x42ae0000 xc31c7ea9 x40420060 1 x40420060 1}\n       {x42b00000 xc319ef93 x400c72c0 1 x400c72c0 1}\n       {x42b20000 xc3181b13 x3fd6f2c0 1 x3fd6f2c0 1}\n       {x42b40000 xc31693c8 x3fcfb940 1 x3fcfb940 1}\n       {x42b60000 xc314dc2e x3fd95fc0 1 x3fd95fc0 1}\n       {x42b80000 xc3132e49 x3fd443c0 1 x3fd443c0 1}\n       {x42ba0000 xc3118b1f x3fcb4940 1 x3fcb4940 1}\n       {x42bc0000 xc3100124 x3fce0b40 1 x3fce0b40 1}\n       {x42be0000 xc30e52f2 x3fd42d00 1 x3fd42d00 1}\n       {x42c00000 xc30cb070 x3fcdddc0 1 x3fcdddc0 1}\n       {x42c20000 xc30b1b7b x403d4c60 1 x403d4c60 1}\n       {x42c40000 xc306c60d x408dae70 1 x408dae70 1}\n       {x42c60000 xc3024094 x4095a2a8 1 x4095a2a8 1}\n       {x42c80000 xc2fad7c5 x4099ef60 1 x4099ef60 1}\n       {x42ca0000 xc2f1433c x409a7a00 1 x409a7a00 1}\n       {x42cc0000 xc2e78885 x409b6fc8 1 x409b6fc8 1}\n       {x42ce0000 xc2ddd543 x409382a0 1 x409382a0 1}\n       {x42d00000 xc2d51831 x40882fb0 1 x40882fb0 1}\n       {x42d20000 xc2cccf4d x40792c40 1 x40792c40 1}\n       {x42d40000 xc2c5856d x4066d330 1 x4066d330 1}\n       {x42d60000 xc2be621a x405beb40 1 x405beb40 1}\n       {x42d80000 xc2b7c6b9 x404ee4f0 1 x404ee4f0 1}\n       {x42da0000 xc2b173cb x404d2dd0 1 x404d2dd0 1}\n       {x42dc0000 xc2aaf3dc x4056b7f0 1 x4056b7f0 1}\n       {x42de0000 xc2a4084c x4062a000 1 x4062a000 1}\n       {x42e00000 xc29cc9dc x406b3440 1 x406b3440 1}\n       {x42e20000 xc2955508 x407081a0 1 x407081a0 1}\n       {x42e40000 xc28dc1c2 x40753a60 1 x40753a60 1}\n       {x42e60000 xc2860162 x407c94a8 1 x407c94a8 1}\n       {x42e80000 xc27bf0ef x408667c0 1 x408667c0 1}\n       {x42ea0000 xc26a68d4 x409339a4 1 x409339a4 1}\n       {x42ec0000 xc2572286 x40a40a78 1 x40a40a78 1}\n       {x42ee0000 xc2416636 x40b89e18 1 x40b89e18 1}\n       {x42f00000 xc228fb00 x40c8a964 1 x40c8a964 1}\n       {x42f20000 xc20f3bdd x40d949a0 1 x40d949a0 1}\n       {x42f40000 xc1e55130 x40e63f38 1 x40e63f38 1}\n       {x42f60000 xc1ab581e x40e94115 1 x40e94115 1}\n       {x42f80000 xc161614b x40e4e62f 1 x40e4e62f 1}\n       {x42fa0000 xc0e3941a x40e1614b 1 x40e1614b 1}\n       {x42fc0000 0 x40e76368 1 x40e76368 1}\n       {x42fe0000 x40eb32b6 x40e9c2ae 1 x40e9c2ae 1}\n       {x43000000 x4169c2ae x40e6ac77 1 x40e6ac77 1}\n       {x43010000 x41ae22e9 x40e00fe6 1 x40e00fe6 1}\n       {x43020000 x41e4e94a x40d4c28e 1 x40d4c28e 1}\n       {x43030000 x420c4218 x40c73d10 1 x40c73d10 1}\n       {x43040000 x422443e9 x40b64a18 1 x40b64a18 1}\n       {x43050000 x4239d49e x409ce368 1 x409ce368 1}\n       {x43060000 x424b7cc3 x407800e0 1 x407800e0 1}\n       {x43070000 x4258d4ba x4051a8e8 1 x4051a8e8 1}\n       {x43080000 x4265b1e0 x404879f0 1 x404879f0 1}\n       {x43090000 x4271e3f8 x403a8098 1 x403a8098 1}\n       {x430a0000 x427d01f3 x402c4c60 1 x402c4c60 1}\n       {x430b0000 x4283b6c2 x401b7488 1 x401b7488 1}\n       {x430c0000 x42883842 x400c9320 1 x400c9320 1}\n       {x430d0000 x428c7ff4 x40015ed0 1 x40015ed0 1}\n       {x430e0000 x42904e2f x400a4730 1 x400a4730 1}\n       {x430f0000 x42952467 x401e7b40 1 x401e7b40 1}\n       {x43100000 x429a35e3 x402810e0 1 x402810e0 1}\n       {x43110000 x429fa575 x402b27a0 1 x402b27a0 1}\n       {x43120000 x42a4e85d x40284f70 1 x40284f70 1}\n       {x43130000 x42aa2a6c x40111630 1 x40111630 1}\n       {x43140000 x42adf9c0 x3fb47060 1 x3fb47060 1}\n       {x43150000 x42afcdef x3e80f700 1 x3e80f700 1}\n       {x43160000 x42aff8ec -}}\n      {{x42540000 x4487a185 0 1 xc15d82a0 1}\n       {x42580000 x4485d4f0 xc177da40 1 xc177da40 1}\n       {x425c0000 x4483c21c xc186e6c0 1 xc186e6c0 1}\n       {x42600000 x44819dba xc1880760 1 xc1880760 1}\n       {x42640000 x447f03c2 xc1848920 1 xc1848920 1}\n       {x42680000 x447af2e2 xc1874200 1 xc1874200 1}\n       {x426c0000 x44768fa2 xc18a5e50 1 xc18a5e50 1}\n       {x42700000 x44724cfd xc18f4d50 1 xc18f4d50 1}\n       {x42740000 x446d9acd xc1a2d390 1 xc1a2d390 1}\n       {x42780000 x44681fc4 xc1b3fe00 1 xc1b3fe00 1}\n       {x427c0000 x44625aed xc1c37040 1 xc1c37040 1}\n       {x42800000 x445be8c0 xc1cc2b80 1 xc1cc2b80 1}\n       {x42820000 x44559835 xc1c95710 1 xc1c95710 1}\n       {x42840000 x444f534f xc1c90470 1 xc1c90470 1}\n       {x42860000 x444907ee xc1cf2840 1 xc1cf2840 1}\n       {x42880000 x444260cb xc1d12770 1 xc1d12770 1}\n       {x428a0000 x443bf577 xc1ce6ca0 1 xc1ce6ca0 1}\n       {x428c0000 x44357a01 xc1d483a0 1 xc1d483a0 1}\n       {x428e0000 x442ead3d xc1dbe2e0 1 xc1dbe2e0 1}\n       {x42900000 x4427bbd3 xc1e22230 1 xc1e22230 1}\n       {x42920000 x44208b1a xc1de3560 1 xc1de3560 1}\n       {x42940000 x4419d87d xc1d1f060 1 xc1d1f060 1}\n       {x42960000 x44136c14 xc1c951e0 1 xc1c951e0 1}\n       {x42980000 x440d435f xc1bcf200 1 xc1bcf200 1}\n       {x429a0000 x44079cf4 xc1b14860 1 xc1b14860 1}\n       {x429c0000 x44022ed9 xc1acc7e8 1 xc1acc7e8 1}\n       {x429e0000 x43f9a0eb xc1aa90f0 1 xc1aa90f0 1}\n       {x42a00000 x43ef0b94 xc1a8f8c8 1 xc1a8f8c8 1}\n       {x42a20000 x43e481d2 xc1a8b208 1 xc1a8b208 1}\n       {x42a40000 x43d9f553 xc1a4d4a8 1 xc1a4d4a8 1}\n       {x42a60000 x43cfe73d xc1a0c178 1 xc1a0c178 1}\n       {x42a80000 x43c5dd24 xc1a396c0 1 xc1a396c0 1}\n       {x42aa0000 x43bb7465 xc1a696f0 1 xc1a696f0 1}\n       {x42ac0000 x43b10a46 xc1a59218 1 xc1a59218 1}\n       {x42ae0000 x43a6c222 xc1a2f6d0 1 xc1a2f6d0 1}\n       {x42b00000 x439cab6c xc1a258e0 1 xc1a258e0 1}\n       {x42b20000 x43927706 xc1a45b18 1 xc1a45b18 1}\n       {x42b40000 x43882009 xc1a6ccec 1 xc1a6ccec 1}\n       {x42b60000 x437b3ad1 xc1a92a68 1 xc1a92a68 1}\n       {x42b80000 x4365f578 xc1a6f28c 1 xc1a6f28c 1}\n       {x42ba0000 x43517e2e xc1a07a00 1 xc1a07a00 1}\n       {x42bc0000 x433dd6f8 xc19851c0 1 xc19851c0 1}\n       {x42be0000 x432b69be xc18e036c 1 xc18e036c 1}\n       {x42c00000 x431a561d xc18320c4 1 xc18320c4 1}\n       {x42c20000 x430aa18d xc16fe750 1 xc16fe750 1}\n       {x42c40000 x42f8b266 xc1611c54 1 xc1611c54 1}\n       {x42c60000 x42dcfc05 xc15b45bc 1 xc15b45bc 1}\n       {x42c80000 x42c1e0f7 xc159f2fc 1 xc159f2fc 1}\n       {x42ca0000 x42a67f46 xc15a0654 1 xc15a0654 1}\n       {x42cc0000 x428b5f62 xc141c7da 1 xc141c7da 1}\n       {x42ce0000 x426c1a9f xc1316a4c 1 xc1316a4c 1}\n       {x42d00000 x423e099e xc13c8e54 1 xc13c8e54 1}\n       {x42d20000 x420dd375 xc1363e97 1 xc1363e97 1}\n       {x42d40000 x41c5d4a5 xc122cb4a 1 xc122cb4a 1}\n       {x42d60000 x4171b741 xc1107d0e 1 xc1107d0e 1}\n       {x42d80000 x40d55e5c xc101bfd7 1 xc101bfd7 1}\n       {x42da0000 xbf8e4364 xc0ef8d11 1 xc0ef8d11 1}\n       {x42dc0000 xc104dde3 xc0d4a3f8 1 xc0d4a3f8 1}\n       {x42de0000 xc1666c64 xc0a5bc07 1 xc0a5bc07 1}\n       {x42e00000 xc1954cf5 xc05a41a0 1 xc05a41a0 1}\n       {x42e20000 xc1a9c69a xbff9e608 1 xbff9e608 1}\n       {x42e40000 xc1b489b6 xbf563fb0 1 xbf563fb0 1}\n       {x42e60000 xc1b72a95 -}\n       {x42e80000 xc1ada674 x3fbd92a0 1 x3fbd92a0 1}\n       {x42ea0000 xc19f7841 x3fde4e28 1 x3fde4e28 1}\n       {x42ec0000 xc191dcaf x3fecb918 1 x3fecb918 1}\n       {x42ee0000 xc181e11e x3ff67b20 1 x3ff67b20 1}\n       {x42f00000 xc1661a96 x3feca704 1 x3feca704 1}\n       {x42f20000 xc148987b x3fd07d10 1 x3fd07d10 1}\n       {x42f40000 xc131fb52 x3fdffa70 1 x3fdffa70 1}\n       {x42f60000 xc11099df x400cf7fc 1 x400cf7fc 1}\n       {x42f80000 xc0d6fea8 x402dbe4e 1 x402dbe4e 1}\n       {x42fa0000 xc066eadf x4056fea8 1 x4056fea8 1}\n       {x42fc0000 0 x40792d78 1 x40792d78 1}\n       {x42fe0000 x4085b808 x408383a1 1 x408383a1 1}\n       {x43000000 x410383a1 x40828a1a 1 x40828a1a 1}\n       {x43010000 x4145661e x408b464f 1 x408b464f 1}\n       {x43020000 x418764f8 x40985754 1 x40985754 1}\n       {x43030000 x41aedeb9 x40a37b74 1 x40a37b74 1}\n       {x43040000 x41d922b2 x40aa71fa 1 x40aa71fa 1}\n       {x43050000 x42020bdb x40bb927c 1 x40bb927c 1}\n       {x43060000 x421b75f8 x40de6700 1 x40de6700 1}\n       {x43070000 x4239a59b x40e23088 1 x40e23088 1}\n       {x43080000 x4254021a x40da0fa0 1 x40da0fa0 1}\n       {x43090000 x42702983 x40df2a28 1 x40df2a28 1}\n       {x430a0000 x4285e652 x40d6c974 1 x40d6c974 1}\n       {x430b0000 x4292edf0 x40cdf360 1 x40cdf360 1}\n       {x430c0000 x429fa4be x40d22c78 1 x40d22c78 1}\n       {x430d0000 x42ad337f x40e1b478 1 x40e1b478 1}\n       {x430e0000 x42bbdb4d x40e9a000 1 x40e9a000 1}\n       {x430f0000 x42ca677f x40e202c0 1 x40e202c0 1}\n       {x43100000 x42d81ba5 x40da9250 1 x40da9250 1}\n       {x43110000 x42e5b9c9 x40d48138 1 x40d48138 1}\n       {x43120000 x42f2abcc x40c3ec30 1 x40c3ec30 1}\n       {x43130000 x42fe374f x40b49330 1 x40b49330 1}\n       {x43140000 x43049f19 x40a28038 1 x40a28038 1}\n       {x43150000 x430943ab x406b21c0 1 x406b21c0 1}\n       {x43160000 x430bf827 x400e1da0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke97 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42b35db2 x43db4561 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke98 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42b35db2 x43db4561 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2d96202 0 1 x4080a0e8 1}\n       {x42580000 xc2d0b852 x409e8f30 1 x409e8f30 1}\n       {x425c0000 xc2c5901c x40b98618 1 x40b98618 1}\n       {x42600000 xc2b9878f x40c8ca10 1 x40c8ca10 1}\n       {x42640000 xc2ac76da x40cdb0d8 1 x40cdb0d8 1}\n       {x42680000 xc29fd174 x40cbad90 1 x40cbad90 1}\n       {x426c0000 xc2930128 x40ccdf50 1 x40ccdf50 1}\n       {x42700000 xc286358a x40d077c4 1 x40d077c4 1}\n       {x42740000 xc271e45f x40e18a28 1 x40e18a28 1}\n       {x42780000 xc254088a x40ed5b88 1 x40ed5b88 1}\n       {x427c0000 xc2368d7d x40f87b40 1 x40f87b40 1}\n       {x42800000 xc215e9ba x40fdc992 1 x40fdc992 1}\n       {x42820000 xc1ee3631 x40f0a242 1 x40f0a242 1}\n       {x42840000 xc1b38253 x40e9b44d 1 x40e9b44d 1}\n       {x42860000 xc172b815 x40c08c33 1 x40c08c33 1}\n       {x42880000 xc1267873 x40c96ecc 1 x40c96ecc 1}\n       {x428a0000 xc0252523 x40a71283 1 x40a71283 1}\n       {x428c0000 x3d1a0f8f x4038d870 1 x4038d870 1}\n       {x428e0000 x404c8bbd x405606c6 1 x405606c6 1}\n       {x42900000 x40d73ae5 x4025dbea 1 x4025dbea 1}\n       {x42920000 x410610e4 -}\n       {x42940000 x40e4c99d xbf92ad1c 1 xbf92ad1c 1}\n       {x42960000 x40c2cb3a xbf6641e8 1 xbf6641e8 1}\n       {x42980000 x40ab3923 -}\n       {x429a0000 x40bade60 -}\n       {x429c0000 x40a0622b xbf94bb7e 1 xbf94bb7e 1}\n       {x429e0000 x40610142 xbfacb31b 1 xbfacb31b 1}\n       {x42a00000 x4014113b xbf8d15b8 1 xbf8d15b8 1}\n       {x42a20000 x3fa7d714 xbf5fca78 1 xbf5fca78 1}\n       {x42a40000 x3f10affd xbf48076c 1 xbf48076c 1}\n       {x42a60000 xbe80c162 xbf90453a 1 xbf90453a 1}\n       {x42a80000 xbfd83276 xbfc211dd 1 xbfc211dd 1}\n       {x42aa0000 xc0522a09 xbfd18c53 1 xbfd18c53 1}\n       {x42ac0000 xc09ed2c7 xc0077d20 1 xc0077d20 1}\n       {x42ae0000 xc0f09224 xc03bc391 1 xc03bc391 1}\n       {x42b00000 xc12d4b2c xc05dde80 1 xc05dde80 1}\n       {x42b20000 xc1673852 xc0635b90 1 xc0635b90 1}\n       {x42b40000 xc18f7c7a xc05873e8 1 xc05873e8 1}\n       {x42b60000 xc1a9b923 xc0484460 1 xc0484460 1}\n       {x42b80000 xc1c18d92 xc0441ee4 1 xc0441ee4 1}\n       {x42ba0000 xc1dac0dc xc04d2fa0 1 xc04d2fa0 1}\n       {x42bc0000 xc1f4d97a xc0465170 1 xc0465170 1}\n       {x42be0000 xc2062a9c xc0425e90 1 xc0425e90 1}\n       {x42c00000 xc212b88f xc042dc20 1 xc042dc20 1}\n       {x42c20000 xc21e8620 xbf993ea0 1 xbf993ea0 1}\n       {x42c40000 xc2201ec7 xbabe8000 1 xbabe8000 1}\n       {x42c60000 xc2201f46 -}\n       {x42c80000 xc21fa632 x3e841b80 1 x3e841b80 1}\n       {x42ca0000 xc21e0ed8 x3eb40bc0 1 x3eb40bc0 1}\n       {x42cc0000 xc21cd603 x3eba4d00 1 x3eba4d00 1}\n       {x42ce0000 xc21b25a4 x3ea7b100 1 x3ea7b100 1}\n       {x42d00000 xc21a373f -}\n       {x42d20000 xc21a6ff2 xbe151d00 1 xbe151d00 1}\n       {x42d40000 xc21b6179 xbe91b100 1 xbe91b100 1}\n       {x42d60000 xc21cb6b6 xbebdf340 1 xbebdf340 1}\n       {x42d80000 xc21e5946 xbebe79c0 1 xbebe79c0 1}\n       {x42da0000 xc21fb09d xbe622000 1 xbe622000 1}\n       {x42dc0000 xc2201d86 -}\n       {x42de0000 xc21fd17d x3e260680 1 x3e260680 1}\n       {x42e00000 xc21ed179 x3e960240 1 x3e960240 1}\n       {x42e20000 xc21d7974 x3f13f2c0 1 x3f13f2c0 1}\n       {x42e40000 xc21a31e3 x3f856710 1 x3f856710 1}\n       {x42e60000 xc2152303 x3fc12740 1 x3fc12740 1}\n       {x42e80000 xc20e1f6f x3fdd3330 1 x3fdd3330 1}\n       {x42ea0000 xc2074fd0 x3ff64d90 1 x3ff64d90 1}\n       {x42ec0000 xc1fd752c x401ffe98 1 x401ffe98 1}\n       {x42ee0000 xc1e69ffa x403df394 1 x403df394 1}\n       {x42f00000 xc1cdf847 x405561dc 1 x405561dc 1}\n       {x42f20000 xc1b14783 x407503b8 1 x407503b8 1}\n       {x42f40000 xc190b759 x40884a4d 1 x40884a4d 1}\n       {x42f60000 xc15a44b9 x408f03f7 1 x408f03f7 1}\n       {x42f80000 xc1126abb x40900846 1 x40900846 1}\n       {x42fa0000 xc09478e5 x40926abb 1 x40926abb 1}\n       {x42fc0000 0 x4098a93a 1 x4098a93a 1}\n       {x42fe0000 x409cd990 x409c986d 1 x409c986d 1}\n       {x43000000 x411c986d x4099a29d 1 x4099a29d 1}\n       {x43010000 x41680f65 x4094b56b 1 x4094b56b 1}\n       {x43020000 x4198a6ec x408db879 1 x408db879 1}\n       {x43030000 x41bae3ef x4085f2a2 1 x4085f2a2 1}\n       {x43040000 x41dba03d x407663f4 1 x407663f4 1}\n       {x43050000 x41f87cec x4054c5a4 1 x4054c5a4 1}\n       {x43060000 x420868d3 x40374928 1 x40374928 1}\n       {x43070000 x4213279b x4023adb8 1 x4023adb8 1}\n       {x43080000 x421cde8a x401585b8 1 x401585b8 1}\n       {x43090000 x4225d852 x400dad10 1 x400dad10 1}\n       {x430a0000 x422e942c x400c4c68 1 x400c4c68 1}\n       {x430b0000 x423761df x400d3218 1 x400d3218 1}\n       {x430c0000 x42403a6f x4009e288 1 x4009e288 1}\n       {x430d0000 x42489e30 x400e89e0 1 x400e89e0 1}\n       {x430e0000 x42520bab x40216840 1 x40216840 1}\n       {x430f0000 x425ccb38 x4033af60 1 x4033af60 1}\n       {x43100000 x42688197 x403a0c00 1 x403a0c00 1}\n       {x43110000 x42740cb8 x40384b30 1 x40384b30 1}\n       {x43120000 x427f8afd x4031c110 1 x4031c110 1}\n       {x43130000 x4285226d x401c2918 1 x401c2918 1}\n       {x43140000 x42898810 x3fd158a0 1 x3fd158a0 1}\n       {x43150000 x428bad32 x3f273780 1 x3f273780 1}\n       {x43160000 x428c24ee x3cc62800 1 0 1}}\n      {{x42540000 x448247cb 0 1 xc155dda0 1}\n       {x42580000 x44808d3f xc16c16c0 1 xc16c16c0 1}\n       {x425c0000 x447d2ee0 xc18106c0 1 xc18106c0 1}\n       {x42600000 x44790a12 xc1838c40 1 xc1838c40 1}\n       {x42640000 x4474f61c xc1824d90 1 xc1824d90 1}\n       {x42680000 x4470e539 xc1845390 1 xc1845390 1}\n       {x426c0000 x446cb0e3 xc18ad3c0 1 xc18ad3c0 1}\n       {x42700000 x446837fd xc197df30 1 xc197df30 1}\n       {x42740000 x446332f0 xc1a96f30 1 xc1a96f30 1}\n       {x42780000 x445da10a xc1bb3590 1 xc1bb3590 1}\n       {x427c0000 x44577f97 xc1ccad40 1 xc1ccad40 1}\n       {x42800000 x4450d636 xc1d9f740 1 xc1d9f740 1}\n       {x42820000 x4449e023 xc1dde890 1 xc1dde890 1}\n       {x42840000 x4442f7ad xc1dec350 1 xc1dec350 1}\n       {x42860000 x443bf3ee xc1d8ccd0 1 xc1d8ccd0 1}\n       {x42880000 x44356ae0 xc1da7c30 1 xc1da7c30 1}\n       {x428a0000 x442e4c2b xc1cf0f30 1 xc1cf0f30 1}\n       {x428c0000 x442879ed xc1b1fba0 1 xc1b1fba0 1}\n       {x428e0000 x44232c71 xc1ae9ed0 1 xc1ae9ed0 1}\n       {x42900000 x441d9000 xc1b41370 1 xc1b41370 1}\n       {x42920000 x4417eb3a xc1be6e70 1 xc1be6e70 1}\n       {x42940000 x4411a919 xc1c5d6b0 1 xc1c5d6b0 1}\n       {x42960000 x440b8dcf xc1c2b1b0 1 xc1c2b1b0 1}\n       {x42980000 x44057dfe xc1b41c30 1 xc1b41c30 1}\n       {x429a0000 x44004c0c xc1ac2f78 1 xc1ac2f78 1}\n       {x429c0000 x43f5760d xc1ae7be0 1 xc1ae7be0 1}\n       {x429e0000 x43eac89c xc1aaa798 1 xc1aaa798 1}\n       {x42a00000 x43e0211a xc1aa6c90 1 xc1aa6c90 1}\n       {x42a20000 x43d57b0a xc1ab5f70 1 xc1ab5f70 1}\n       {x42a40000 x43cab52c xc1acd798 1 xc1acd798 1}\n       {x42a60000 x43bfe017 xc1acdb48 1 xc1acdb48 1}\n       {x42a80000 x43b519c3 xc1ac5dd0 1 xc1ac5dd0 1}\n       {x42aa0000 x43aa545d xc1ab06f8 1 xc1ab06f8 1}\n       {x42ac0000 x439fb8e4 xc1a6ea50 1 xc1a6ea50 1}\n       {x42ae0000 x43957713 xc1a15ab8 1 xc1a15ab8 1}\n       {x42b00000 x438b8d8d xc19d9da0 1 xc19d9da0 1}\n       {x42b20000 x4381c35f xc19ce728 1 xc19ce728 1}\n       {x42b40000 x436fe150 xc19e6d70 1 xc19e6d70 1}\n       {x42b60000 x435beb62 xc1a09610 1 xc1a09610 1}\n       {x42b80000 x4347bbcc xc19e3290 1 xc19e3290 1}\n       {x42ba0000 x43345ebe xc194d784 1 xc194d784 1}\n       {x42bc0000 x432285eb xc18ab8fc 1 xc18ab8fc 1}\n       {x42be0000 x4311b07f xc180f550 1 xc180f550 1}\n       {x42c00000 x43024897 xc16d8a1c 1 xc16d8a1c 1}\n       {x42c20000 x42e7fe77 xc1575f1c 1 xc1575f1c 1}\n       {x42c40000 x42ceb967 xc14a8264 1 xc14a8264 1}\n       {x42c60000 x42b55dde xc14bc478 1 xc14bc478 1}\n       {x42c80000 x429bc849 xc14cfb80 1 xc14cfb80 1}\n       {x42ca0000 x42821efe xc14b921c 1 xc14b921c 1}\n       {x42cc0000 x4251c784 xc14724ee 1 xc14724ee 1}\n       {x42ce0000 x4220ab85 xc13dae72 1 xc13dae72 1}\n       {x42d00000 x41e5e096 xc12e8811 1 xc12e8811 1}\n       {x42d20000 x4192cef9 xc11d13d7 1 xc11d13d7 1}\n       {x42d40000 x4111997e xc10ab9b9 1 xc10ab9b9 1}\n       {x42d60000 x3f815407 xc0ee982e 1 xc0ee982e 1}\n       {x42d80000 xc0b9fd60 xc0cba02f 1 xc0cba02f 1}\n       {x42da0000 xc13b75ae xc0b6df5c 1 xc0b6df5c 1}\n       {x42dc0000 xc189ef06 xc0a2aba4 1 xc0a2aba4 1}\n       {x42de0000 xc1af10a9 xc07b4828 1 xc07b4828 1}\n       {x42e00000 xc1c8c110 xc0191b0c 1 xc0191b0c 1}\n       {x42e20000 xc1d5576c xbf8b25f0 1 xbf8b25f0 1}\n       {x42e40000 xc1da25ce -}\n       {x42e60000 xc1d71725 x3f92bfb0 1 x3f92bfb0 1}\n       {x42e80000 xc1c742a4 x4006ed70 1 x4006ed70 1}\n       {x42ea0000 xc1b55bc9 x400fccbc 1 x400fccbc 1}\n       {x42ec0000 xc1a34f75 x4009f0b4 1 x4009f0b4 1}\n       {x42ee0000 xc192df9c x4004f4bc 1 x4004f4bc 1}\n       {x42f00000 xc1821246 x400af420 1 x400af420 1}\n       {x42f20000 xc1604528 x4007f4de 1 x4007f4de 1}\n       {x42f40000 xc1402a1d x4008d8cc 1 x4008d8cc 1}\n       {x42f60000 xc11bd8c2 x401f822f 1 x401f822f 1}\n       {x42f80000 xc0e0d20b x403c70af 1 x403c70af 1}\n       {x42fa0000 xc07681aa x4060d20b 1 x4060d20b 1}\n       {x42fc0000 0 x4080363a 1 x4080363a 1}\n       {x42fe0000 x40852b9e x4078dfc0 1 x4078dfc0 1}\n       {x43000000 x40f8dfc0 x4067cf6c 1 x4067cf6c 1}\n       {x43010000 x41367d85 x40716d6a 1 x40716d6a 1}\n       {x43020000 x41752695 x4080f8ad 1 x4080f8ad 1}\n       {x43030000 x419bbb19 x4088d943 1 x4088d943 1}\n       {x43040000 x41beffec x408dabd6 1 x408dabd6 1}\n       {x43050000 x41e29104 x40931770 1 x40931770 1}\n       {x43060000 x420445d2 x409acbd8 1 x409acbd8 1}\n       {x43070000 x4217fb78 x40a8621c 1 x40a8621c 1}\n       {x43080000 x422e5e59 x40b85094 1 x40b85094 1}\n       {x43090000 x42460f9d x40bee61c 1 x40bee61c 1}\n       {x430a0000 x425e17e0 x40c03724 1 x40c03724 1}\n       {x430b0000 x42761d66 x40bfb3e8 1 x40bfb3e8 1}\n       {x430c0000 x4287026d x40c5ce78 1 x40c5ce78 1}\n       {x430d0000 x4293c882 x40d6c4a8 1 x40d6c4a8 1}\n       {x430e0000 x42a1db02 x40de5838 1 x40de5838 1}\n       {x430f0000 x42af9389 x40d4db58 1 x40d4db58 1}\n       {x43100000 x42bc766d x40ccf960 1 x40ccf960 1}\n       {x43110000 x42c932b5 x40c9e1c8 1 x40c9e1c8 1}\n       {x43120000 x42d5b2a6 x40bf4078 1 x40bf4078 1}\n       {x43130000 x42e11ac4 x40b09578 1 x40b09578 1}\n       {x43140000 x42ebc555 x40a0b930 1 x40a0b930 1}\n       {x43150000 x42f531ea x40766430 1 x40766430 1}\n       {x43160000 x42fb2b98 x40239e88 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke99 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x431e8ac1 x438bc106 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke100 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x431e8ac1 x438bc106 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc2ddd794 0 1 x407fc008 1}\n       {x42580000 xc2d5393b x409df0a8 1 x409df0a8 1}\n       {x425c0000 xc2ca197f x40b97b40 1 x40b97b40 1}\n       {x42600000 xc2be09d3 x40c929c8 1 x40c929c8 1}\n       {x42640000 xc2b0f446 x40cdf770 1 x40cdf770 1}\n       {x42680000 xc2a44ae5 x40cbcff8 1 x40cbcff8 1}\n       {x426c0000 xc2977a47 x40cce5c8 1 x40cce5c8 1}\n       {x42700000 xc28aae2c x40d073e4 1 x40d073e4 1}\n       {x42740000 xc27ad795 x40e0aa1c 1 x40e0aa1c 1}\n       {x42780000 xc25d31d1 x40ec6738 1 x40ec6738 1}\n       {x427c0000 xc23fbdc7 x40f80630 1 x40f80630 1}\n       {x42800000 xc21f3045 x40fd7030 1 x40fd7030 1}\n       {x42820000 xc20061bb x40f0379e 1 x40f0379e 1}\n       {x42840000 xc1c644bb x40e87b84 1 x40e87b84 1}\n       {x42860000 xc18c85b4 x40cabf6e 1 x40cabf6e 1}\n       {x42880000 xc141ca08 x40d56ed6 1 x40d56ed6 1}\n       {x428a0000 xc0873925 x40b58984 1 x40b58984 1}\n       {x428c0000 xbf440848 x405e222e 1 x405e222e 1}\n       {x428e0000 x402dd213 x406bf442 1 x406bf442 1}\n       {x42900000 x40d37339 x3f1cc9d8 1 x3f1cc9d8 1}\n       {x42920000 x40d9fba2 -}\n       {x42940000 x40d6b4b4 -}\n       {x42960000 x40d6d62b x3c48ca00 1 x3c48ca00 1}\n       {x42980000 x40dc4b7c x3e292f00 1 x3e292f00 1}\n       {x429a0000 x40e1691b x3e0e7650 1 x3e0e7650 1}\n       {x429c0000 x40e532e1 -}\n       {x429e0000 x40e44668 xbdb15ac0 1 xbdb15ac0 1}\n       {x42a00000 x40dc2d90 xbe3af0c0 1 xbe3af0c0 1}\n       {x42a20000 x40d8975c xbe1b2e40 1 xbe1b2e40 1}\n       {x42a40000 x40d27aac -}\n       {x42a60000 x40d5ff2c -}\n       {x42a80000 x4097711f xc00a4800 1 xc00a4800 1}\n       {x42aa0000 x40176e59 xbff5eac0 1 xbff5eac0 1}\n       {x42ac0000 x3f63ddf8 xbfe65046 1 xbfe65046 1}\n       {x42ae0000 xbf9dc3da xc028f4a4 1 xc028f4a4 1}\n       {x42b00000 xc08c78e5 xc0542348 1 xc0542348 1}\n       {x42b20000 xc0fb943f xc05ae38f 1 xc05ae38f 1}\n       {x42b40000 xc133ae3a xc04c16b5 1 xc04c16b5 1}\n       {x42b60000 xc163d57a xc03daa98 1 xc03daa98 1}\n       {x42b80000 xc18941c3 xc03e99ac 1 xc03e99ac 1}\n       {x42ba0000 xc1a19128 xc03f236c 1 xc03f236c 1}\n       {x42bc0000 xc1b90a9e xc0426478 1 xc0426478 1}\n       {x42be0000 xc1d22a46 xc04a10a0 1 xc04a10a0 1}\n       {x42c00000 xc1eb8ec6 xc0500df0 1 xc0500df0 1}\n       {x42c20000 xc20316e1 xbfb0f8e0 1 xbfb0f8e0 1}\n       {x42c40000 xc204eece xbdda0400 1 xbdda0400 1}\n       {x42c60000 xc2051324 xbd5de800 1 xbd5de800 1}\n       {x42c80000 xc2055dc2 -}\n       {x42ca0000 xc204b790 x3edc5580 1 x3edc5580 1}\n       {x42cc0000 xc201ec6c x3f9c8cd8 1 x3f9c8cd8 1}\n       {x42ce0000 xc1f5dd85 -}\n       {x42d00000 xc1f6371c xbe066280 1 xbe066280 1}\n       {x42d20000 xc1fb9568 xbf1a8410 1 xbf1a8410 1}\n       {x42d40000 xc1ffdf5d xbf17bf00 1 xbf17bf00 1}\n       {x42d60000 xc20288ac xbf321270 1 xbf321270 1}\n       {x42d80000 xc2058042 xbf251040 1 xbf251040 1}\n       {x42da0000 xc207b12e xbee53600 1 xbee53600 1}\n       {x42dc0000 xc209151a xbe92e880 1 xbe92e880 1}\n       {x42de0000 xc209fcd0 -}\n       {x42e00000 xc209a82d x3e617f00 1 x3e617f00 1}\n       {x42e20000 xc20839d2 x3ec52500 1 x3ec52500 1}\n       {x42e40000 xc2069399 x3f0c8620 1 x3f0c8620 1}\n       {x42e60000 xc203d5a1 x3f463d40 1 x3f463d40 1}\n       {x42e80000 xc20061af x3f867860 1 x3f867860 1}\n       {x42ea0000 xc1f6dc36 x3fcefd90 1 x3fcefd90 1}\n       {x42ec0000 xc1e6e3ac x4009c2d0 1 x4009c2d0 1}\n       {x42ee0000 xc1d46b82 x402d0340 1 x402d0340 1}\n       {x42f00000 xc1bba2dc x404cc19c 1 x404cc19c 1}\n       {x42f20000 xc1a13b1b x4060505c 1 x4060505c 1}\n       {x42f40000 xc1838ec5 x40766ba8 1 x40766ba8 1}\n       {x42f60000 xc1474062 x40840fdc 1 x40840fdc 1}\n       {x42f80000 xc1030dae x4086486e 1 x4086486e 1}\n       {x42fa0000 xc081efe7 x40830dae 1 x40830dae 1}\n       {x42fc0000 0 x408ae79e 1 x408ae79e 1}\n       {x42fe0000 x4093df55 x409218f3 1 x409218f3 1}\n       {x43000000 x411218f3 x4090ccfe 1 x4090ccfe 1}\n       {x43010000 x415abca9 x408cfead 1 x408cfead 1}\n       {x43020000 x418f8bd0 x4087870b 1 x4087870b 1}\n       {x43030000 x41b121da x40818584 1 x40818584 1}\n       {x43040000 x41d04e92 x40687244 1 x40687244 1}\n       {x43050000 x41eb3e6b x405489e0 1 x405489e0 1}\n       {x43060000 x4202b885 x40569fdc 1 x40569fdc 1}\n       {x43070000 x42107331 x40240f80 1 x40240f80 1}\n       {x43080000 x42173a75 x3fdbb6b0 1 x3fdbb6b0 1}\n       {x43090000 x421e2e9c x3fde8d30 1 x3fde8d30 1}\n       {x430a0000 x42252348 x3fdf4030 1 x3fdf4030 1}\n       {x430b0000 x422c229f x3fdcb320 1 x3fdcb320 1}\n       {x430c0000 x4232ee7a x3fd9dc10 1 x3fd9dc10 1}\n       {x430d0000 x4239c060 x3fe8a860 1 x3fe8a860 1}\n       {x430e0000 x42417900 x4007f2b0 1 x4007f2b0 1}\n       {x430f0000 x424abeb6 x401757d8 1 x401757d8 1}\n       {x43100000 x425463fb x401bf518 1 x401bf518 1}\n       {x43110000 x425e3d59 x40215b78 1 x40215b78 1}\n       {x43120000 x42688f6a x401c4d60 1 x401c4d60 1}\n       {x43130000 x4271c705 x4002a428 1 x4002a428 1}\n       {x43140000 x4278e3ef x3fa808f0 1 x3fa808f0 1}\n       {x43150000 x427c4794 -}\n       {x43160000 x427bccb2 xbe385300 1 0 1}}\n      {{x42540000 x4479299d 0 1 xc155cd00 1}\n       {x42580000 x4475b4ec xc16beac0 1 xc16beac0 1}\n       {x425c0000 x4471ca47 xc1810810 1 xc1810810 1}\n       {x42600000 x446da46b xc183a0e0 1 xc183a0e0 1}\n       {x42640000 x44699039 xc1826940 1 xc1826940 1}\n       {x42680000 x44657dd7 xc1848030 1 xc1848030 1}\n       {x426c0000 x44614836 xc18aef60 1 xc18aef60 1}\n       {x42700000 x445ccee1 xc197f060 1 xc197f060 1}\n       {x42740000 x4457c930 xc1a98bd0 1 xc1a98bd0 1}\n       {x42780000 x44523624 xc1bb5fa0 1 xc1bb5fa0 1}\n       {x427c0000 x444c1336 xc1cccef0 1 xc1cccef0 1}\n       {x42800000 x44456935 xc1da0950 1 xc1da0950 1}\n       {x42820000 x443e72a1 xc1de00e0 1 xc1de00e0 1}\n       {x42840000 x44378927 xc1def050 1 xc1def050 1}\n       {x42860000 x4430839c xc1da6600 1 xc1da6600 1}\n       {x42880000 x4429e2c7 xc1dd3060 1 xc1dd3060 1}\n       {x428a0000 x4422b096 xc1d44210 1 xc1d44210 1}\n       {x428c0000 x441c9ea6 xc1b87480 1 xc1b87480 1}\n       {x428e0000 x4417294e xc1b394f0 1 xc1b394f0 1}\n       {x42900000 x44116557 xc1b7d9c0 1 xc1b7d9c0 1}\n       {x42920000 x440babb2 xc1b4f070 1 xc1b4f070 1}\n       {x42940000 x44061650 xc1b32010 1 xc1b32010 1}\n       {x42960000 x440079b1 xc1b1fef8 1 xc1b1fef8 1}\n       {x42980000 x43f5ecc1 xc1ab5410 1 xc1ab5410 1}\n       {x429a0000 x43eb88e0 xc1a38f70 1 xc1a38f70 1}\n       {x429c0000 x43e17ad3 xc1a0bbe0 1 xc1a0bbe0 1}\n       {x429e0000 x43d77164 xc19efbc8 1 xc19efbc8 1}\n       {x42a00000 x43cd9b5a xc19cd068 1 xc19cd068 1}\n       {x42a20000 x43c3d757 xc19e5fc8 1 xc19e5fc8 1}\n       {x42a40000 x43b9cf61 xc1a27ba0 1 xc1a27ba0 1}\n       {x42a60000 x43af87e3 xc199c488 1 xc199c488 1}\n       {x42a80000 x43a696d0 xc18f1330 1 xc18f1330 1}\n       {x42aa0000 x439da57d xc1941630 1 xc1941630 1}\n       {x42ac0000 x4394140a xc1983a10 1 xc1983a10 1}\n       {x42ae0000 x438a9e3b xc193e368 1 xc193e368 1}\n       {x42b00000 x4381979d xc18f84e4 1 xc18f84e4 1}\n       {x42b20000 x43715b3d xc18e28a4 1 xc18e28a4 1}\n       {x42b40000 x435fa511 xc18d5680 1 xc18d5680 1}\n       {x42b60000 x434e059d xc1910430 1 xc1910430 1}\n       {x42b80000 x433b6405 xc191e0c0 1 xc191e0c0 1}\n       {x42ba0000 x43298d6d xc18c18c0 1 xc18c18c0 1}\n       {x42bc0000 x43185dd5 xc1837ae8 1 xc1837ae8 1}\n       {x42be0000 x4308aeb3 xc16f731c 1 xc16f731c 1}\n       {x42c00000 x42f4dee3 xc1567c98 1 xc1567c98 1}\n       {x42c20000 x42dbbe40 xc142e81c 1 xc142e81c 1}\n       {x42c40000 x42c424dc xc14069ac 1 xc14069ac 1}\n       {x42c60000 x42aba3d5 xc13d3828 1 xc13d3828 1}\n       {x42c80000 x4294d6d2 xc137e504 1 xc137e504 1}\n       {x42ca0000 x427b5528 xc13d4fb6 1 xc13d4fb6 1}\n       {x42cc0000 x424b05c9 xc12d4660 1 xc12d4660 1}\n       {x42ce0000 x4224b1f8 xc105e228 1 xc105e228 1}\n       {x42d00000 x420814b5 xc0e6014a 1 xc0e6014a 1}\n       {x42d20000 x41d6634b xc0e70aa0 1 xc0e70aa0 1}\n       {x42d40000 x419ca41a xc0da27f5 1 xc0da27f5 1}\n       {x42d60000 x41529ea1 xc0c201fa 1 xc0c201fa 1}\n       {x42d80000 x40ee8c74 xc0b5382f 1 xc0b5382f 1}\n       {x42da0000 x3feb338e xc0b3f0bb 1 xc0b3f0bb 1}\n       {x42dc0000 xc072aa04 xc0a62334 1 xc0a62334 1}\n       {x42de0000 xc108bcc2 xc0881968 1 xc0881968 1}\n       {x42e00000 xc144c3e9 xc03e4798 1 xc03e4798 1}\n       {x42e20000 xc167e08e xbff37754 1 xbff37754 1}\n       {x42e40000 xc180d0df xbde58000 1 xbde58000 1}\n       {x42e60000 xc1811d5f -}\n       {x42e80000 xc1767262 x3f8aacd4 1 x3f8aacd4 1}\n       {x42ea0000 xc15f8f89 x3f7bd918 1 x3f7bd918 1}\n       {x42ec0000 xc156f73f x3f420df0 1 x3f420df0 1}\n       {x42ee0000 xc1474dcb x3f810784 1 x3f810784 1}\n       {x42f00000 xc136b55e x3f91c8f0 1 x3f91c8f0 1}\n       {x42f20000 xc122db8f x3fa3e194 1 x3fa3e194 1}\n       {x42f40000 xc10dbcf9 x3fb0d1fa 1 x3fb0d1fa 1}\n       {x42f60000 xc0ed4e21 x3fd7a8ec 1 x3fd7a8ec 1}\n       {x42f80000 xc0afa57c x400d8826 1 x400d8826 1}\n       {x42fa0000 xc03f8bf5 x402fa57c 1 x402fa57c 1}\n       {x42fc0000 0 x4032dac2 1 x4032dac2 1}\n       {x42fe0000 x4026298f x4031f1ed 1 x4031f1ed 1}\n       {x43000000 x40b1f1ed x40390448 1 x40390448 1}\n       {x43010000 x41060c88 x403de249 1 x403de249 1}\n       {x43020000 x4137ea1b x404b6518 1 x404b6518 1}\n       {x43030000 x416bbf14 x405aa1ee 1 x405aa1ee 1}\n       {x43040000 x41929d89 x406ac130 1 x406ac130 1}\n       {x43050000 x41b08fd6 x407a7360 1 x407a7360 1}\n       {x43060000 x41d13a61 x4092aafa 1 x4092aafa 1}\n       {x43070000 x41f9e553 x40ae4b02 1 x40ae4b02 1}\n       {x43080000 x42142ff1 x40b81eba 1 x40b81eba 1}\n       {x43090000 x422afa58 x40b45b04 1 x40b45b04 1}\n       {x430a0000 x424146b2 x40b1ce2c 1 x40b1ce2c 1}\n       {x430b0000 x42576de3 x40af03d4 1 x40af03d4 1}\n       {x430c0000 x426d07a7 x40b3b1ac 1 x40b3b1ac 1}\n       {x430d0000 x42822d27 x40b995fc 1 x40b995fc 1}\n       {x430e0000 x428db693 x40b27398 1 x40b27398 1}\n       {x430f0000 x42987b9a x40b151b0 1 x40b151b0 1}\n       {x43100000 x42a3e0c9 x40b3fd20 1 x40b3fd20 1}\n       {x43110000 x42aefb3e x40adb880 1 x40adb880 1}\n       {x43120000 x42b997d9 x40a672a0 1 x40a672a0 1}\n       {x43130000 x42c3c992 x409d8080 1 x409d8080 1}\n       {x43140000 x42cd47e9 x40897c00 1 x40897c00 1}\n       {x43150000 x42d4f912 x4044a120 1 x4044a120 1}\n       {x43160000 x42d991fb x3ff4b640 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke101 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44bb0ed9 x44631313 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke102 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44bb0ed9 x44631313 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3aae691 0 1 x40de6690 1}\n       {x42580000 xc3a74a08 x40f899a0 1 x40f899a0 1}\n       {x425c0000 xc3a321c4 x40e7f3e0 1 x40e7f3e0 1}\n       {x42600000 xc3a00a69 x40fefce0 1 x40fefce0 1}\n       {x42640000 xc39b29dd x41179390 1 x41179390 1}\n       {x42680000 xc3969130 x410b6440 1 x410b6440 1}\n       {x426c0000 xc3927399 x410e6330 1 x410e6330 1}\n       {x42700000 xc38daafd x41274e90 1 x41274e90 1}\n       {x42740000 xc387feb0 x412ab720 1 x412ab720 1}\n       {x42780000 xc382ff8b x41135448 1 x41135448 1}\n       {x427c0000 xc37d92d7 x41061be0 1 x41061be0 1}\n       {x42800000 xc3753b9a x410833f8 1 x410833f8 1}\n       {x42820000 xc36c8c58 x40fcdc20 1 x40fcdc20 1}\n       {x42840000 xc3656dd8 x40d38520 1 x40d38520 1}\n       {x42860000 xc35f5406 x40d82b20 1 x40d82b20 1}\n       {x42880000 xc357eb26 x40da17f0 1 x40da17f0 1}\n       {x428a0000 xc351b287 x40d62ac0 1 x40d62ac0 1}\n       {x428c0000 xc34a887a x40cbf310 1 x40cbf310 1}\n       {x428e0000 xc344f356 x40b359b0 1 x40b359b0 1}\n       {x42900000 xc33f52df x40d8b560 1 x40d8b560 1}\n       {x42920000 xc3376800 x40e4e620 1 x40e4e620 1}\n       {x42940000 xc331047d x40c5b130 1 x40c5b130 1}\n       {x42960000 xc32b0ced x40ad64d0 1 x40ad64d0 1}\n       {x42980000 xc3262e30 x409e4850 1 x409e4850 1}\n       {x429a0000 xc3212868 x409390b0 1 x409390b0 1}\n       {x429c0000 xc31cf525 x4071c6a0 1 x4071c6a0 1}\n       {x429e0000 xc3199a33 x40506620 1 x40506620 1}\n       {x42a00000 xc31671f4 x404ac9e0 1 x404ac9e0 1}\n       {x42a20000 xc31343e4 x40849060 1 x40849060 1}\n       {x42a40000 xc30e28ee x408b7fd0 1 x408b7fd0 1}\n       {x42a60000 xc30a8be7 x407b34e0 1 x407b34e0 1}\n       {x42a80000 xc3064f47 x40981840 1 x40981840 1}\n       {x42aa0000 xc3010a63 x408a5aa8 1 x408a5aa8 1}\n       {x42ac0000 xc2fb5339 x4029c0c0 1 x4029c0c0 1}\n       {x42ae0000 xc2f778ba x3fcdd1e0 1 x3fcdd1e0 1}\n       {x42b00000 xc2f4e4aa -}\n       {x42b20000 xc2f529c4 xbde97c00 1 xbde97c00 1}\n       {x42b40000 xc2f55968 xbda1f800 1 xbda1f800 1}\n       {x42b60000 xc2f57ac0 -}\n       {x42b80000 xc2f55161 x3e783a00 1 x3e783a00 1}\n       {x42ba0000 xc2f44e38 x3ec79d80 1 x3ec79d80 1}\n       {x42bc0000 xc2f3c226 x3e3ab000 1 x3e3ab000 1}\n       {x42be0000 xc2f39388 -}\n       {x42c00000 xc2f3f939 xbe9a2580 1 xbe9a2580 1}\n       {x42c20000 xc2f4c7d3 -}\n       {x42c40000 xc2efd9f3 x401d4e00 1 x401d4e00 1}\n       {x42c60000 xc2eaf2f3 x4035f400 1 x4035f400 1}\n       {x42c80000 xc2e47ab3 x403f76b0 1 x403f76b0 1}\n       {x42ca0000 xc2defb88 x402c1280 1 x402c1280 1}\n       {x42cc0000 xc2d9b98b x40316650 1 x40316650 1}\n       {x42ce0000 xc2d3e523 x40295b50 1 x40295b50 1}\n       {x42d00000 xc2cf23d6 x401820f0 1 x401820f0 1}\n       {x42d20000 xc2ca6314 x40083210 1 x40083210 1}\n       {x42d40000 xc2c6a0b5 x40077ed0 1 x40077ed0 1}\n       {x42d60000 xc2c1eb27 x4016c6b0 1 x4016c6b0 1}\n       {x42d80000 xc2bd344a x402482d0 1 x402482d0 1}\n       {x42da0000 xc2b7a2fa x40339b00 1 x40339b00 1}\n       {x42dc0000 xc2b1fa9a x404a1730 1 x404a1730 1}\n       {x42de0000 xc2ab0187 x40605220 1 x40605220 1}\n       {x42e00000 xc2a3f578 x407900d0 1 x407900d0 1}\n       {x42e20000 xc29b717a x40844d58 1 x40844d58 1}\n       {x42e40000 xc2936bcd x408aa5d0 1 x408aa5d0 1}\n       {x42e60000 xc28a1cc0 x40966468 1 x40966468 1}\n       {x42e80000 xc2809f40 x409a9bac 1 x409a9bac 1}\n       {x42ea0000 xc26d9295 x40a95f98 1 x40a95f98 1}\n       {x42ec0000 xc256e69a x40ba2368 1 x40ba2368 1}\n       {x42ee0000 xc23f09bb x40c2d9f8 1 x40c2d9f8 1}\n       {x42f00000 xc226301c x40cf6740 1 x40cf6740 1}\n       {x42f20000 xc20b2feb x40d49750 1 x40d49750 1}\n       {x42f40000 xc1e21490 x40e10df2 1 x40e10df2 1}\n       {x42f60000 xc1a5d8dd x40e6187c 1 x40e6187c 1}\n       {x42f80000 xc15e10a4 x40db55a0 1 x40db55a0 1}\n       {x42fa0000 xc0e0b833 x40de10a4 1 x40de10a4 1}\n       {x42fc0000 0 x40dc239c 1 x40dc239c 1}\n       {x42fe0000 x40d78f04 x40d7116e 1 x40d7116e 1}\n       {x43000000 x4157116e x40c7d614 1 x40c7d614 1}\n       {x43010000 x4199cecb x40ba482e 1 x40ba482e 1}\n       {x43020000 x41c8acce x40b60e3a 1 x40b60e3a 1}\n       {x43030000 x41f4d5e8 x40aa96bc 1 x40aa96bc 1}\n       {x43040000 x420efc16 x4098ede8 1 x4098ede8 1}\n       {x43050000 x4220a66e x4086cde0 1 x4086cde0 1}\n       {x43060000 x4230af8e x4068aec8 1 x4068aec8 1}\n       {x43070000 x423dbc47 x404b9540 1 x404b9540 1}\n       {x43080000 x424a2236 x403cdb90 1 x403cdb90 1}\n       {x43090000 x425557b9 x402d2920 1 x402d2920 1}\n       {x430a0000 x425fc75a x40290500 1 x40290500 1}\n       {x430b0000 x426a7859 x40266d58 1 x40266d58 1}\n       {x430c0000 x42749505 x401aa500 1 x401aa500 1}\n       {x430d0000 x427dccf9 x401eb368 1 x401eb368 1}\n       {x430e0000 x428435b9 x402f7778 1 x402f7778 1}\n       {x430f0000 x4289ddf4 x402e4990 1 x402e4990 1}\n       {x43100000 x428f1a52 x4026dd00 1 x4026dd00 1}\n       {x43110000 x42944bc4 x4024c670 1 x4024c670 1}\n       {x43120000 x429966b9 x40211720 1 x40211720 1}\n       {x43130000 x429e5d36 x401675a0 1 x401675a0 1}\n       {x43140000 x42a2ce13 x3fe3f1a0 1 x3fe3f1a0 1}\n       {x43150000 x42a57cc3 x3f609980 1 x3f609980 1}\n       {x43160000 x42a65079 x3e39ef00 1 0 1}}\n      {{x42540000 x4463c790 0 1 xc11730b0 1}\n       {x42580000 x446175d6 xc10eea20 1 xc10eea20 1}\n       {x425c0000 x445f503f xc112a720 1 xc112a720 1}\n       {x42600000 x445ce09d xc14ad5a0 1 xc14ad5a0 1}\n       {x42640000 x4458f992 xc17edc60 1 xc17edc60 1}\n       {x42680000 x4454e9ba xc1849130 1 xc1849130 1}\n       {x426c0000 x4450b07f xc17cb6c0 1 xc17cb6c0 1}\n       {x42700000 x444d0404 xc17c1880 1 xc17c1880 1}\n       {x42740000 x4448cfbb xc188cf60 1 xc188cf60 1}\n       {x42780000 x4444770e xc1878160 1 xc1878160 1}\n       {x427c0000 x444057a5 xc18c4570 1 xc18c4570 1}\n       {x42800000 x443bb2b7 xc19d8540 1 xc19d8540 1}\n       {x42820000 x44367f51 xc19fb740 1 xc19fb740 1}\n       {x42840000 x4431b743 xc19ca4f0 1 xc19ca4f0 1}\n       {x42860000 x442cb502 xc1a30be0 1 xc1a30be0 1}\n       {x42880000 x44278685 xc19c44c0 1 xc19c44c0 1}\n       {x428a0000 x4422f0b6 xc19bcd10 1 xc19bcd10 1}\n       {x428c0000 x441dc9b4 xc19a5eb0 1 xc19a5eb0 1}\n       {x428e0000 x44194acb xc1931680 1 xc1931680 1}\n       {x42900000 x4414984c xc1a6a0d0 1 xc1a6a0d0 1}\n       {x42920000 x440ee0be xc1b3d060 1 xc1b3d060 1}\n       {x42940000 x44095b46 xc1a90ce0 1 xc1a90ce0 1}\n       {x42960000 x44044ff0 xc19a3a00 1 xc19a3a00 1}\n       {x42980000 x43ff6f4c xc189df80 1 xc189df80 1}\n       {x429a0000 x43f763f0 xc178f460 1 xc178f460 1}\n       {x429c0000 x43efe006 xc16d33f0 1 xc16d33f0 1}\n       {x429e0000 x43e890b1 xc16e0520 1 xc16e0520 1}\n       {x42a00000 x43e0ffb4 xc18319f0 1 xc18319f0 1}\n       {x42a20000 x43d82d73 xc18fd920 1 xc18fd920 1}\n       {x42a40000 x43cf0490 xc18e3758 1 xc18e3758 1}\n       {x42a60000 x43c66688 xc1919360 1 xc1919360 1}\n       {x42a80000 x43bcd224 xc19b93d0 1 xc19b93d0 1}\n       {x42aa0000 x43b2f40e xc192cba0 1 xc192cba0 1}\n       {x42ac0000 x43aa78b0 xc1857a38 1 xc1857a38 1}\n       {x42ae0000 x43a244c7 xc18440f0 1 xc18440f0 1}\n       {x42b00000 x4399f092 xc1820be8 1 xc1820be8 1}\n       {x42b20000 x4392034a xc1830da8 1 xc1830da8 1}\n       {x42b40000 x43898edd xc18cf5f8 1 xc18cf5f8 1}\n       {x42b60000 x4380648b xc1921864 1 xc1921864 1}\n       {x42b80000 x436e97a1 xc192f99c 1 xc192f99c 1}\n       {x42ba0000 x435c0aaf xc18f7748 1 xc18f7748 1}\n       {x42bc0000 x434ab9cf xc182bc48 1 xc182bc48 1}\n       {x42be0000 x433b5b9d xc1640b48 1 xc1640b48 1}\n       {x42c00000 x432e3866 xc145f270 1 xc145f270 1}\n       {x42c20000 x43229d4f xc1307f48 1 xc1307f48 1}\n       {x42c40000 x4318287d xc12dcfb8 1 xc12dcfb8 1}\n       {x42c60000 x430ce358 xc13ca0e8 1 xc13ca0e8 1}\n       {x42c80000 x43009460 xc13c06d8 1 xc13c06d8 1}\n       {x42ca0000 x42eac4fa xc12d2110 1 xc12d2110 1}\n       {x42cc0000 x42d5e07c xc130b1e0 1 xc130b1e0 1}\n       {x42ce0000 x42be9882 xc12efae8 1 xc12efae8 1}\n       {x42d00000 x42aa21c2 xc118f83c 1 xc118f83c 1}\n       {x42d20000 x42985a73 xc1062ba8 1 xc1062ba8 1}\n       {x42d40000 x428896d8 xc0f79760 1 xc0f79760 1}\n       {x42d60000 x4272cf0e xc0eaa790 1 xc0eaa790 1}\n       {x42d80000 x425683cc xc0e20544 1 xc0e20544 1}\n       {x42da0000 x423a4dbd xc0e70768 1 xc0e70768 1}\n       {x42dc0000 x421cc1f2 xc0dd578c 1 xc0dd578c 1}\n       {x42de0000 x4202f7da xc0bc04f2 1 xc0bc04f2 1}\n       {x42e00000 x41db816b xc099979e 1 xc099979e 1}\n       {x42e20000 x41b923e5 xc07a4e8c 1 xc07a4e8c 1}\n       {x42e40000 x419cedc8 xc046bc44 1 xc046bc44 1}\n       {x42e60000 x418774d4 xc016421e 1 xc016421e 1}\n       {x42e80000 x416eba81 xbfda5300 1 xbfda5300 1}\n       {x42ea0000 x415854e8 xbfd2f310 1 xbfd2f310 1}\n       {x42ec0000 x4139fdbd xbfdd6f68 1 xbfdd6f68 1}\n       {x42ee0000 x4120f90e xbfd031c4 1 xbfd031c4 1}\n       {x42f00000 x4105f14c xbfe5193c 1 xbfe5193c 1}\n       {x42f20000 x40cf657e xbfefb256 1 xbfefb256 1}\n       {x42f40000 x4094096d xbfe49fc9 1 xbfe49fc9 1}\n       {x42f60000 x403a2b33 xbfbaface 1 xbfbaface 1}\n       {x42f80000 x3fda3019 xbf8c35d2 1 xbf8c35d2 1}\n       {x42fa0000 x3f37d582 xbf5a3019 1 xbf5a3019 1}\n       {x42fc0000 0 -}\n       {x42fe0000 x3d065002 -}\n       {x43000000 xbead6bbd -}\n       {x43010000 x3e7367c8 x3f15a810 1 x3f15a810 1}\n       {x43020000 x3f549a42 x3f463017 1 x3f463017 1}\n       {x43030000 x3fe49d10 x3f8c5bb2 1 x3f8c5bb2 1}\n       {x43040000 x40418243 x3fa4b434 1 x3fa4b434 1}\n       {x43050000 x408b815e x3fa42341 1 x3fa42341 1}\n       {x43060000 x40b2d2c2 x3fa51ef0 1 x3fa51ef0 1}\n       {x43070000 x40de10d6 x3fdb9e8c 1 x3fdb9e8c 1}\n       {x43080000 x41105104 x4001cc8e 1 x4001cc8e 1}\n       {x43090000 x412feeb2 x40047a1a 1 x40047a1a 1}\n       {x430a0000 x41528e11 x3febb2c0 1 x3febb2c0 1}\n       {x430b0000 x416adb62 x3fbb5074 1 x3fbb5074 1}\n       {x430c0000 x4180b117 x3fc73128 1 x3fc73128 1}\n       {x430d0000 x418e53d6 x3fdf6858 1 x3fdf6858 1}\n       {x430e0000 x419c9e22 x3fdd9450 1 x3fdd9450 1}\n       {x430f0000 x41aa0660 x3fda1370 1 x3fda1370 1}\n       {x43100000 x41b7e090 x3fe29338 1 x3fe29338 1}\n       {x43110000 x41c658c7 x3ffe6e80 1 x3ffe6e80 1}\n       {x43120000 x41d7ae60 x40050814 1 x40050814 1}\n       {x43130000 x41e79acc x3fb0e8e0 1 x3fb0e8e0 1}\n       {x43140000 x41edcb7c x3f292980 1 x3f292980 1}\n       {x43150000 x41f22d64 -}\n       {x43160000 x41e9ed19 xbfc60708 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke103 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448da0d5 x447d178d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke104 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448da0d5 x447d178d 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3e4f931 0 1 x40cce680 1}\n       {x42580000 xc3e1a411 x40e60b00 1 x40e60b00 1}\n       {x425c0000 xc3ddc8d9 x4105a2b0 1 x4105a2b0 1}\n       {x42600000 xc3d949e6 x411f6f90 1 x411f6f90 1}\n       {x42640000 xc3d3d1e0 x41398220 1 x41398220 1}\n       {x42680000 xc3cdb1c4 x413b7f60 1 x413b7f60 1}\n       {x426c0000 xc3c819ea x41336a80 1 x41336a80 1}\n       {x42700000 xc3c27b1c x41350430 1 x41350430 1}\n       {x42740000 xc3bcc9a7 x412f3170 1 x412f3170 1}\n       {x42780000 xc3b78805 x41261840 1 x41261840 1}\n       {x427c0000 xc3b26823 x41277c30 1 x41277c30 1}\n       {x42800000 xc3ad1042 x4121fb00 1 x4121fb00 1}\n       {x42820000 xc3a84873 x410cc460 1 x410cc460 1}\n       {x42840000 xc3a443fc x41004af0 1 x41004af0 1}\n       {x42860000 xc3a043c4 x4109c4f0 1 x4109c4f0 1}\n       {x42880000 xc39ba7ad x410b72f0 1 x410b72f0 1}\n       {x428a0000 xc3978c95 x40fa01a0 1 x40fa01a0 1}\n       {x428c0000 xc393d7a0 x40de8b80 1 x40de8b80 1}\n       {x428e0000 xc3909839 x40d62540 1 x40d62540 1}\n       {x42900000 xc38d2676 x40f09440 1 x40f09440 1}\n       {x42920000 xc3891397 x40efec80 1 x40efec80 1}\n       {x42940000 xc385a712 x40c93560 1 x40c93560 1}\n       {x42960000 xc382c9ec x40aa8420 1 x40aa8420 1}\n       {x42980000 xc38052f1 x409b2990 1 x409b2990 1}\n       {x429a0000 xc37be13f x4093cbc0 1 x4093cbc0 1}\n       {x429c0000 xc3776926 x4084c4f0 1 x4084c4f0 1}\n       {x429e0000 xc37394f0 x4076c840 1 x4076c840 1}\n       {x42a00000 xc36fb2e4 x408a6490 1 x408a6490 1}\n       {x42a20000 xc36aeea7 x40a4c080 1 x40a4c080 1}\n       {x42a40000 xc36566dc x40b58850 1 x40b58850 1}\n       {x42a60000 xc35f9622 x40af7de0 1 x40af7de0 1}\n       {x42a80000 xc35a6efe x40aa63b0 1 x40aa63b0 1}\n       {x42aa0000 xc354efe7 x409f4420 1 x409f4420 1}\n       {x42ac0000 xc3507abc x4084ca50 1 x4084ca50 1}\n       {x42ae0000 xc34ca342 x405b6160 1 x405b6160 1}\n       {x42b00000 xc3499fb1 x40216680 1 x40216680 1}\n       {x42b20000 xc347980e x3fcbf040 1 x3fcbf040 1}\n       {x42b40000 xc3466ff0 x3fa17100 1 x3fa17100 1}\n       {x42b60000 xc345124a x3fee9100 1 x3fee9100 1}\n       {x42b80000 xc342b5ac x401129e0 1 x401129e0 1}\n       {x42ba0000 xc34088fb x40102cc0 1 x40102cc0 1}\n       {x42bc0000 xc33e3446 x401179a0 1 x401179a0 1}\n       {x42be0000 xc33bfd2e x3fffc980 1 x3fffc980 1}\n       {x42c00000 xc33a3520 x3fe37ec0 1 x3fe37ec0 1}\n       {x42c20000 xc3386f33 x404a7f00 1 x404a7f00 1}\n       {x42c40000 xc333e128 x40981af0 1 x40981af0 1}\n       {x42c60000 xc32eed84 x40a538c0 1 x40a538c0 1}\n       {x42c80000 xc3298d9c x40a6e0c0 1 x40a6e0c0 1}\n       {x42ca0000 xc3247f78 x40a1d4a0 1 x40a1d4a0 1}\n       {x42cc0000 xc31f7052 x40a1d030 1 x40a1d030 1}\n       {x42ce0000 xc31a6275 x40997870 1 x40997870 1}\n       {x42d00000 xc315d8cb x4091d8b0 1 x4091d8b0 1}\n       {x42d20000 xc31144ea x408714d0 1 x408714d0 1}\n       {x42d40000 xc30d677e x4081d480 1 x4081d480 1}\n       {x42d60000 xc30927a2 x408a0380 1 x408a0380 1}\n       {x42d80000 xc304c746 x40905ac0 1 x40905ac0 1}\n       {x42da0000 xc30021f6 x409a8228 1 x409a8228 1}\n       {x42dc0000 xc2f63e47 x40a2e398 1 x40a2e398 1}\n       {x42de0000 xc2ebe779 x40b0c990 1 x40b0c990 1}\n       {x42e00000 xc2e02515 x40bb5d78 1 x40bb5d78 1}\n       {x42e20000 xc2d47bca x40bf0410 1 x40bf0410 1}\n       {x42e40000 xc2c84493 x40c74938 1 x40c74938 1}\n       {x42e60000 xc2bb92a3 x40cfb780 1 x40cfb780 1}\n       {x42e80000 xc2ae4da3 x40d7b448 1 x40d7b448 1}\n       {x42ea0000 xc2a09c1a x40e573d8 1 x40e573d8 1}\n       {x42ec0000 xc2919f28 x40fa2f00 1 x40fa2f00 1}\n       {x42ee0000 xc281563a x41028958 1 x41028958 1}\n       {x42f00000 xc261f9a4 x410c9246 1 x410c9246 1}\n       {x42f20000 xc23c6351 x41162ea2 1 x41162ea2 1}\n       {x42f40000 xc216e253 x4118bcd0 1 x4118bcd0 1}\n       {x42f60000 xc1e009d2 x411754ca 1 x411754ca 1}\n       {x42f80000 xc1966fdc x4116d78b 1 x4116d78b 1}\n       {x42fa0000 xc112648e x41166fdc 1 x41166fdc 1}\n       {x42fc0000 0 x411126c3 1 x411126c3 1}\n       {x42fe0000 x410fe8f8 x41136114 1 x41136114 1}\n       {x43000000 x41936114 x410ec066 1 x410ec066 1}\n       {x43010000 x41d6b4e2 x4104f344 1 x4104f344 1}\n       {x43020000 x420c2a2c x40fd2754 1 x40fd2754 1}\n       {x43030000 x422aa446 x40e7b1b8 1 x40e7b1b8 1}\n       {x43040000 x4246169a x40d32e6c 1 x40d32e6c 1}\n       {x43050000 x425f6fe1 x40bf0544 1 x40bf0544 1}\n       {x43060000 x4275d7eb x40adf23c 1 x40adf23c 1}\n       {x43070000 x42857638 x409e696c 1 x409e696c 1}\n       {x43080000 x428eb923 x409166c8 1 x409166c8 1}\n       {x43090000 x4297a311 x4080a6f0 1 x4080a6f0 1}\n       {x430a0000 x429ece01 x405e4be0 1 x405e4be0 1}\n       {x430b0000 x42a587cf x40537d40 1 x40537d40 1}\n       {x430c0000 x42ac05d5 x40465220 1 x40465220 1}\n       {x430d0000 x42b1ecf1 x40407bf0 1 x40407bf0 1}\n       {x430e0000 x42b80d94 x4049a080 1 x4049a080 1}\n       {x430f0000 x42be86f9 x40539e70 1 x40539e70 1}\n       {x43100000 x42c5477b x4059e1e0 1 x4059e1e0 1}\n       {x43110000 x42cc2517 x405385f0 1 x405385f0 1}\n       {x43120000 x42d27fda x404c6b70 1 x404c6b70 1}\n       {x43130000 x42d8ebce x40365aa0 1 x40365aa0 1}\n       {x43140000 x42dde584 x4005efd0 1 x4005efd0 1}\n       {x43150000 x42e14acb x3fa36420 1 x3fa36420 1}\n       {x43160000 x42e300a5 x3f24ff60 1 0 1}}\n      {{x42540000 x4483ac46 0 1 xc15e01a0 1}\n       {x42580000 x4481defc xc177ebc0 1 xc177ebc0 1}\n       {x425c0000 x447f992e xc186c860 1 xc186c860 1}\n       {x42600000 x447b5172 xc18814b0 1 xc18814b0 1}\n       {x42640000 x447717e3 xc18ae600 1 xc18ae600 1}\n       {x42680000 x4472a312 xc1916180 1 xc1916180 1}\n       {x426c0000 x446e01cb xc1897d40 1 xc1897d40 1}\n       {x42700000 x446a0b3e xc1879f50 1 xc1879f50 1}\n       {x42740000 x446587d6 xc196a120 1 xc196a120 1}\n       {x42780000 x4460a12c xc1a6b800 1 xc1a6b800 1}\n       {x427c0000 x445b1c56 xc1bdb8e0 1 xc1bdb8e0 1}\n       {x42800000 x4454c59e xc1c5d770 1 xc1c5d770 1}\n       {x42820000 x444ebedf xc1c0ab80 1 xc1c0ab80 1}\n       {x42840000 x4448bae6 xc1c45710 1 xc1c45710 1}\n       {x42860000 x4442796e xc1cc92c0 1 xc1cc92c0 1}\n       {x42880000 x443bf1ba xc1c7fdd0 1 xc1c7fdd0 1}\n       {x428a0000 x4435f991 xc1bbc800 1 xc1bbc800 1}\n       {x428c0000 x4430353a xc1b80330 1 xc1b80330 1}\n       {x428e0000 x442a795e xc1b912f0 1 xc1b912f0 1}\n       {x42900000 x4424a40b xc1c3c0b0 1 xc1c3c0b0 1}\n       {x42920000 x441e3d53 xc1c81f10 1 xc1c81f10 1}\n       {x42940000 x4418221a xc1c2a960 1 xc1c2a960 1}\n       {x42960000 x441212bd xc1bab2a0 1 xc1bab2a0 1}\n       {x42980000 x440c76f0 xc1abd030 1 xc1abd030 1}\n       {x429a0000 x440755ba xc19fe030 1 xc19fe030 1}\n       {x429c0000 x440278ed xc19e2a20 1 xc19e2a20 1}\n       {x429e0000 x43fae630 xc19fe590 1 xc19fe590 1}\n       {x42a00000 x43f0f528 xc1a2b0c0 1 xc1a2b0c0 1}\n       {x42a20000 x43e69018 xc1a3e200 1 xc1a3e200 1}\n       {x42a40000 x43dc78e8 xc19c9f40 1 xc19c9f40 1}\n       {x42a60000 x43d2fc30 xc19cdd28 1 xc19cdd28 1}\n       {x42a80000 x43c8dd43 xc1a25848 1 xc1a25848 1}\n       {x42aa0000 x43beb127 xc19afe00 1 xc19afe00 1}\n       {x42ac0000 x43b57d83 xc194ff08 1 xc194ff08 1}\n       {x42ae0000 x43ac1146 xc197c2e0 1 xc197c2e0 1}\n       {x42b00000 x43a28527 xc193b650 1 xc193b650 1}\n       {x42b20000 x43999a7c xc1955f58 1 xc1955f58 1}\n       {x42b40000 x438fd93c xc1a20878 1 xc1a20878 1}\n       {x42b60000 x4385596d xc1a9abe8 1 xc1a9abe8 1}\n       {x42b80000 x4375477e xc1aa8914 1 xc1aa8914 1}\n       {x42ba0000 x43601095 xc1a52b20 1 xc1a52b20 1}\n       {x42bc0000 x434bfcb6 xc1994cd0 1 xc1994cd0 1}\n       {x42be0000 x4339bd61 xc18ba1b4 1 xc18ba1b4 1}\n       {x42c00000 x43291449 xc17e2ee0 1 xc17e2ee0 1}\n       {x42c20000 x4319f785 xc168a4c0 1 xc168a4c0 1}\n       {x42c40000 x430bffb1 xc1609e34 1 xc1609e34 1}\n       {x42c60000 x42fbc77d xc164acac 1 xc164acac 1}\n       {x42c80000 x42ded437 xc164fc80 1 xc164fc80 1}\n       {x42ca0000 x42c2885d xc15ddd44 1 xc15ddd44 1}\n       {x42cc0000 x42a75ce6 xc15c5090 1 xc15c5090 1}\n       {x42ce0000 x428b7439 xc1571ee4 1 xc1571ee4 1}\n       {x42d00000 x42632a5a xc143a236 1 xc143a236 1}\n       {x42d20000 x42351757 xc12fce28 1 xc12fce28 1}\n       {x42d40000 x420b4346 xc120dd9a 1 xc120dd9a 1}\n       {x42d60000 x41c95114 xc112e9d8 1 xc112e9d8 1}\n       {x42d80000 x41839cb4 xc106e3d0 1 xc106e3d0 1}\n       {x42da0000 x4104da89 xc100c357 1 xc100c357 1}\n       {x42dc0000 x3eb65734 xc0eb9012 1 xc0eb9012 1}\n       {x42de0000 xc0cd6b12 xc0c33f95 1 xc0c33f95 1}\n       {x42e00000 xc13d8cdb xc08f1248 1 xc08f1248 1}\n       {x42e20000 xc175c7d1 xc01f0a92 1 xc01f0a92 1}\n       {x42e40000 xc1868912 xbf8267a4 1 xbf8267a4 1}\n       {x42e60000 xc18b30dd -}\n       {x42e80000 xc18552c0 x3f916260 1 x3f916260 1}\n       {x42ea0000 xc1720922 x3faa6af8 1 x3faa6af8 1}\n       {x42ec0000 xc1600ac2 x3faa021c 1 x3faa021c 1}\n       {x42ee0000 xc147889b x3fd65498 1 x3fd65498 1}\n       {x42f00000 xc12a759c x3fb6ab40 1 x3fb6ab40 1}\n       {x42f20000 xc119ddcb x3f922908 1 x3f922908 1}\n       {x42f40000 xc105eb5a x3f9bd1ac 1 x3f9bd1ac 1}\n       {x42f60000 xc0e5d2c0 x3fc9a2e4 1 x3fc9a2e4 1}\n       {x42f80000 xc0a70542 x400599ce 1 x400599ce 1}\n       {x42fa0000 xc04071e3 x40270542 1 x40270542 1}\n       {x42fc0000 0 x40497a36 1 x40497a36 1}\n       {x42fe0000 x4052828a x404c71f2 1 x404c71f2 1}\n       {x43000000 x40cc71f2 x4055128d 1 x4055128d 1}\n       {x43010000 x411f29e9 x40715490 1 x40715490 1}\n       {x43020000 x415ee341 x4088ff91 1 x4088ff91 1}\n       {x43030000 x419414bd x40938d29 1 x40938d29 1}\n       {x43040000 x41b93835 x409c9070 1 x409c9070 1}\n       {x43050000 x41e25cf5 x40a40c76 1 x40a40c76 1}\n       {x43060000 x42059f38 x40a5cb7e 1 x40a5cb7e 1}\n       {x43070000 x421aa15a x40b0b8b4 1 x40b0b8b4 1}\n       {x43080000 x4231cd65 x40c071c8 1 x40c071c8 1}\n       {x43090000 x424abdcc x40d0d1f8 1 x40d0d1f8 1}\n       {x430a0000 x426601e3 x40d026e8 1 x40d026e8 1}\n       {x430b0000 x427ec786 x40bdd0ac 1 x40bdd0ac 1}\n       {x430c0000 x428abb07 x40c14a88 1 x40c14a88 1}\n       {x430d0000 x42978d14 x40ca93f0 1 x40ca93f0 1}\n       {x430e0000 x42a40d85 x40cc8e60 1 x40cc8e60 1}\n       {x430f0000 x42b11ee0 x40c9f588 1 x40c9f588 1}\n       {x43100000 x42bd4c36 x40c3bc80 1 x40c3bc80 1}\n       {x43110000 x42c99670 x40bef700 1 x40bef700 1}\n       {x43120000 x42d52b16 x40b217c0 1 x40b217c0 1}\n       {x43130000 x42dfd968 x409e1418 1 x409e1418 1}\n       {x43140000 x42e8ed99 x4086b938 1 x4086b938 1}\n       {x43150000 x42f0b08f x403680f0 1 x403680f0 1}\n       {x43160000 x42f455a8 x3fa76870 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke105 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44a98019 x44835506 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke106 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44a98019 x44835506 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c5e580 0 1 x40f090f0 1}\n       {x42580000 xc3c203de x41040bd0 1 x41040bd0 1}\n       {x425c0000 xc3bda4c3 x411195f0 1 x411195f0 1}\n       {x42600000 xc3b8ea7f x411f6220 1 x411f6220 1}\n       {x42640000 xc3b3aea1 x4130fc60 1 x4130fc60 1}\n       {x42680000 xc3addab9 x412bbe30 1 x412bbe30 1}\n       {x426c0000 xc3a8f2be x41287280 1 x41287280 1}\n       {x42700000 xc3a35391 x4134cb20 1 x4134cb20 1}\n       {x42740000 xc39da60c x412e4320 1 x412e4320 1}\n       {x42780000 xc3986f5f x412661d0 1 x412661d0 1}\n       {x427c0000 xc3933fef x411df860 1 x411df860 1}\n       {x42800000 xc38e8fd9 x4110d6d0 1 x4110d6d0 1}\n       {x42820000 xc38a3282 x410797e0 1 x410797e0 1}\n       {x42840000 xc386165b x4102c450 1 x4102c450 1}\n       {x42860000 xc382063d x410c36f8 1 x410c36f8 1}\n       {x42880000 xc37aa5d7 x410fd830 1 x410fd830 1}\n       {x428a0000 xc3721174 x40ff9950 1 x40ff9950 1}\n       {x428c0000 xc36aac42 x40db06c0 1 x40db06c0 1}\n       {x428e0000 xc3646108 x40ca3b00 1 x40ca3b00 1}\n       {x42900000 xc35e0892 x40e53320 1 x40e53320 1}\n       {x42920000 xc3560dd6 x40f10d30 1 x40f10d30 1}\n       {x42940000 xc34ef7bf x40d1f170 1 x40d1f170 1}\n       {x42960000 xc348eebf x40ae5ff0 1 x40ae5ff0 1}\n       {x42980000 xc34411c0 x409e2ec0 1 x409e2ec0 1}\n       {x429a0000 xc33f0bd3 x40944e50 1 x40944e50 1}\n       {x429c0000 xc33accdb x40745700 1 x40745700 1}\n       {x429e0000 xc337691b x406bcf40 1 x406bcf40 1}\n       {x42a00000 xc3336e61 x4082fde0 1 x4082fde0 1}\n       {x42a20000 xc32f393d x40a2f890 1 x40a2f890 1}\n       {x42a40000 xc3293ed8 x40a92cb0 1 x40a92cb0 1}\n       {x42a60000 xc324a672 x409c74b0 1 x409c74b0 1}\n       {x42a80000 xc31f778d x40a89690 1 x40a89690 1}\n       {x42aa0000 xc31a1d09 x40988ec0 1 x40988ec0 1}\n       {x42ac0000 xc315eea1 x406fab00 1 x406fab00 1}\n       {x42ae0000 xc3129fb1 x403c5b40 1 x403c5b40 1}\n       {x42b00000 xc3100bc7 x3fdc6000 1 x3fdc6000 1}\n       {x42b20000 xc30f2e31 x3f262c80 1 x3f262c80 1}\n       {x42b40000 xc30ebf6e x3ee38300 1 x3ee38300 1}\n       {x42b60000 xc30e4aae x3f440700 1 x3f440700 1}\n       {x42b80000 xc30d3760 x3f629900 1 x3f629900 1}\n       {x42ba0000 xc30c857c x3f397400 1 x3f397400 1}\n       {x42bc0000 xc30bc478 x3f17b080 1 x3f17b080 1}\n       {x42be0000 xc30b561b x3eb2e600 1 x3eb2e600 1}\n       {x42c00000 xc30b1192 x3e5ec600 1 x3e5ec600 1}\n       {x42c20000 xc30ae6b8 x3f008e00 1 x3f008e00 1}\n       {x42c40000 xc3086511 x4028f700 1 x4028f700 1}\n       {x42c60000 xc3059f00 x4041c9a0 1 x4041c9a0 1}\n       {x42c80000 xc30256c4 x4045f530 1 x4045f530 1}\n       {x42ca0000 xc2fedead x403264c0 1 x403264c0 1}\n       {x42cc0000 xc2f9873c x403c2d40 1 x403c2d40 1}\n       {x42ce0000 xc2f31bd9 x40334630 1 x40334630 1}\n       {x42d00000 xc2ee52d9 x40198570 1 x40198570 1}\n       {x42d20000 xc2e98382 x400a5430 1 x400a5430 1}\n       {x42d40000 xc2e5ad96 x400769c0 1 x400769c0 1}\n       {x42d60000 xc2e10ce6 x40145220 1 x40145220 1}\n       {x42d80000 xc2dc6874 x40250ce0 1 x40250ce0 1}\n       {x42da0000 xc2d6bc18 x40449fc0 1 x40449fc0 1}\n       {x42dc0000 xc2d01e78 x406d0180 1 x406d0180 1}\n       {x42de0000 xc2c7ec00 x407f2190 1 x407f2190 1}\n       {x42e00000 xc2c02c5f x40862418 1 x40862418 1}\n       {x42e20000 xc2b7277d x4091a590 1 x4091a590 1}\n       {x42e40000 xc2adf7ad x4096fc80 1 x4096fc80 1}\n       {x42e60000 xc2a447ed x409ef330 1 x409ef330 1}\n       {x42e80000 xc29a1947 x40a4eb10 1 x40a4eb10 1}\n       {x42ea0000 xc28faa8b x40bdeea8 1 x40bdeea8 1}\n       {x42ec0000 xc2825b72 x40dc4b50 1 x40dc4b50 1}\n       {x42ee0000 xc2684242 x40dbb8b0 1 x40dbb8b0 1}\n       {x42f00000 xc24dc8b8 x40eaa47c 1 x40eaa47c 1}\n       {x42f20000 xc22d9923 x4103ba8e 1 x4103ba8e 1}\n       {x42f40000 xc20beb71 x410b04c8 1 x410b04c8 1}\n       {x42f60000 xc1d02d7e x410e4394 1 x410e4394 1}\n       {x42f80000 xc189934e x410ce80e 1 x410ce80e 1}\n       {x42fa0000 xc1068adf x4109934e 1 x4109934e 1}\n       {x42fc0000 0 x4107248e 1 x4107248e 1}\n       {x42fe0000 x4107be3e x4103ea19 1 x4103ea19 1}\n       {x43000000 x4183ea19 x40fc33d8 1 x40fc33d8 1}\n       {x43010000 x41c1f90b x40ebd7f2 1 x40ebd7f2 1}\n       {x43020000 x41f9d612 x40dbf66e 1 x40dbf66e 1}\n       {x43030000 x4217fa21 x40cf7418 1 x40cf7418 1}\n       {x43040000 x4230c80f x40b6b800 1 x40b6b800 1}\n       {x43050000 x4245a821 x409d9c34 1 x409d9c34 1}\n       {x43060000 x42582f1c x40916200 1 x40916200 1}\n       {x43070000 x426a00a1 x4088f32c 1 x4088f32c 1}\n       {x43080000 x427a6be7 x40794c28 1 x40794c28 1}\n       {x43090000 x42849513 x405610b8 1 x405610b8 1}\n       {x430a0000 x428a96ff x40289390 1 x40289390 1}\n       {x430b0000 x428f1e4c x40171b00 1 x40171b00 1}\n       {x430c0000 x429408af x4012a700 1 x4012a700 1}\n       {x430d0000 x429848bc x3fe56e20 1 x3fe56e20 1}\n       {x430e0000 x429b3420 x3fe21bc0 1 x3fe21bc0 1}\n       {x430f0000 x429f599a x40111300 1 x40111300 1}\n       {x43100000 x42a44550 x40120cc0 1 x40120cc0 1}\n       {x43110000 x42a87a66 x400b98e0 1 x400b98e0 1}\n       {x43120000 x42acfede x3ffdfb80 1 x3ffdfb80 1}\n       {x43130000 x42b06a42 x3fecc6e0 1 x3fecc6e0 1}\n       {x43140000 x42b46515 x3ff83aa0 1 x3ff83aa0 1}\n       {x43150000 x42b82c17 x3fd5a2a0 1 x3fd5a2a0 1}\n       {x43160000 x42bb122a x3fab75d0 1 0 1}}\n      {{x42540000 x446eba45 0 1 xc11ff2d0 1}\n       {x42580000 x446c3351 xc1255160 1 xc1255160 1}\n       {x425c0000 x44698fba xc149f680 1 xc149f680 1}\n       {x42600000 x4465e39d xc17aa4c0 1 xc17aa4c0 1}\n       {x42640000 x4461ba94 xc1884640 1 xc1884640 1}\n       {x42680000 x445d5f39 xc189fd80 1 xc189fd80 1}\n       {x426c0000 x44591abc xc183ab30 1 xc183ab30 1}\n       {x42700000 x44552486 xc182ac80 1 xc182ac80 1}\n       {x42740000 x4450eff4 xc18b11a0 1 xc18b11a0 1}\n       {x42780000 x444c736c xc194d110 1 xc194d110 1}\n       {x427c0000 x4447a2e3 xc1a0be70 1 xc1a0be70 1}\n       {x42800000 x44426785 xc1a74b00 1 xc1a74b00 1}\n       {x42820000 x443d2e33 xc1a89080 1 xc1a89080 1}\n       {x42840000 x4437de7d xc1afc7f0 1 xc1afc7f0 1}\n       {x42860000 x443231b4 xc1c26730 1 xc1c26730 1}\n       {x42880000 x442bb80a xc1c34340 1 xc1c34340 1}\n       {x428a0000 x4425fd80 xc1b7c140 1 xc1b7c140 1}\n       {x428c0000 x44203bf6 xc1a9fcf0 1 xc1a9fcf0 1}\n       {x428e0000 x441b5db1 xc19d8340 1 xc19d8340 1}\n       {x42900000 x441663c2 xc1ab82a0 1 xc1ab82a0 1}\n       {x42920000 x4410a587 xc1b70680 1 xc1b70680 1}\n       {x42940000 x440af35a xc1ac3b70 1 xc1ac3b70 1}\n       {x42960000 x4405e1d0 xc19a8ef0 1 xc19a8ef0 1}\n       {x42980000 x44014a6b xc189d408 1 xc189d408 1}\n       {x429a0000 x43fa891f xc178cfd0 1 xc178cfd0 1}\n       {x429c0000 x43f307d9 xc16e9420 1 xc16e9420 1}\n       {x429e0000 x43eb9fdd xc1788b80 1 xc1788b80 1}\n       {x42a00000 x43e37f21 xc18d17b0 1 xc18d17b0 1}\n       {x42a20000 x43d9fce7 xc19a6370 1 xc19a6370 1}\n       {x42a40000 x43d032b3 xc1958870 1 xc1958870 1}\n       {x42a60000 x43c74bd9 xc197bf38 1 xc197bf38 1}\n       {x42a80000 x43bd3acc xc19fb2c0 1 xc19fb2c0 1}\n       {x42aa0000 x43b35581 xc1938b58 1 xc1938b58 1}\n       {x42ac0000 x43aac961 xc18b3b60 1 xc18b3b60 1}\n       {x42ae0000 x43a1ee15 xc18f5ee0 1 xc18f5ee0 1}\n       {x42b00000 x4398dd85 xc1894170 1 xc1894170 1}\n       {x42b20000 x4390c5e7 xc18847a8 1 xc18847a8 1}\n       {x42b40000 x4387d490 xc1965de4 1 xc1965de4 1}\n       {x42b60000 x437bf455 xc19c3c68 1 xc19c3c68 1}\n       {x42b80000 x43689a06 xc19a31cc 1 xc19a31cc 1}\n       {x42ba0000 x435567e2 xc19241e4 1 xc19241e4 1}\n       {x42bc0000 x4344098d xc186e390 1 xc186e390 1}\n       {x42be0000 x4333aefe xc172e620 1 xc172e620 1}\n       {x42c00000 x4325acc9 xc1531210 1 xc1531210 1}\n       {x42c20000 x43194cbc xc1369c68 1 xc1369c68 1}\n       {x42c40000 x430ed93c xc1302e50 1 xc1302e50 1}\n       {x42c60000 x430346f2 xc1404cc4 1 xc1404cc4 1}\n       {x42c80000 x42ed9f47 xc13e0e20 1 xc13e0e20 1}\n       {x42ca0000 x42d70a5c xc12e7d80 1 xc12e7d80 1}\n       {x42cc0000 x42c1ffe7 xc1336124 1 xc1336124 1}\n       {x42ce0000 x42aa3213 xc1319e44 1 xc1319e44 1}\n       {x42d00000 x42959856 xc11971c4 1 xc11971c4 1}\n       {x42d20000 x4283d5a2 xc105e9e0 1 xc105e9e0 1}\n       {x42d40000 x42683bbc xc0f7b3b8 1 xc0f7b3b8 1}\n       {x42d60000 x4249be56 xc0eabe5c 1 xc0eabe5c 1}\n       {x42d80000 x422d8c25 xc0e61860 1 xc0e61860 1}\n       {x42da0000 x4210383e xc0eaa4c6 1 xc0eaa4c6 1}\n       {x42dc0000 x41e5c5e7 xc0dd41d6 1 xc0dd41d6 1}\n       {x42de0000 x41b1cf91 xc0b792c4 1 xc0b792c4 1}\n       {x42e00000 x4189fc85 xc08fa2da 1 xc08fa2da 1}\n       {x42e20000 x4153fc48 xc0642af2 1 xc0642af2 1}\n       {x42e40000 x4121e391 xc030b25d 1 xc030b25d 1}\n       {x42e60000 x40f74633 xbff2648c 1 xbff2648c 1}\n       {x42e80000 x40ca94dc xbf9ffe88 1 xbf9ffe88 1}\n       {x42ea0000 x40a746ef xbf8e992c 1 xbf8e992c 1}\n       {x42ec0000 x40834846 xbf828886 1 xbf828886 1}\n       {x42ee0000 x404c0558 xbf90db88 1 xbf90db88 1}\n       {x42f00000 x3feb6a08 xbfb9c540 1 xbfb9c540 1}\n       {x42f20000 x3e9200bc xbfbd6d48 1 xbfbd6d48 1}\n       {x42f40000 xbf8f7089 xbf67af3e 1 xbf67af3e 1}\n       {x42f60000 xbfc32f0f -}\n       {x42f80000 xbfb92eff x3e700180 1 x3e700180 1}\n       {x42fa0000 xbf8471e4 x3f392eff 1 x3f392eff 1}\n       {x42fc0000 0 x3f972c4a 1 x3f972c4a 1}\n       {x42fe0000 x3fa9e6b1 x3faa0b40 1 x3faa0b40 1}\n       {x43000000 x402a0b40 x3fb8e3d4 1 x3fb8e3d4 1}\n       {x43010000 x4086eb96 x3fec6b8a 1 x3fec6b8a 1}\n       {x43020000 x40cb3b65 x4015f824 1 x4015f824 1}\n       {x43030000 x410e71dd x40272f0b 1 x40272f0b 1}\n       {x43040000 x41393538 x3fd76f98 1 x3fd76f98 1}\n       {x43050000 x41444dc3 x3f9d0b08 1 x3f9d0b08 1}\n       {x43060000 x416077fa x3fea5080 1 x3fea5080 1}\n       {x43070000 x417ee1e3 x4009d024 1 x4009d024 1}\n       {x43080000 x4192b006 x40239ee6 1 x40239ee6 1}\n       {x43090000 x41a858ab x4016567c 1 x4016567c 1}\n       {x430a0000 x41b845a5 x3fc276e8 1 x3fc276e8 1}\n       {x430b0000 x41c0a788 x3f7a5070 1 x3f7a5070 1}\n       {x430c0000 x41c7eaac x3f877498 1 x3f877498 1}\n       {x430d0000 x41d1961b x3f9b5cb0 1 x3f9b5cb0 1}\n       {x430e0000 x41db5642 x3fa3e8b0 1 x3fa3e8b0 1}\n       {x430f0000 x41e61331 x3fa661b8 1 x3fa661b8 1}\n       {x43100000 x41f02279 x3fa3cb40 1 x3fa3cb40 1}\n       {x43110000 x41fa8c99 x3f9fc838 1 x3f9fc838 1}\n       {x43120000 x42020dc0 x3f8770f8 1 x3f8770f8 1}\n       {x43130000 x4205bd5c x3f47dee0 1 x3f47dee0 1}\n       {x43140000 x42084cb7 x3cd33800 1 x3cd33800 1}\n       {x43150000 x42085584 -}\n       {x43160000 x4201c137 xc01de738 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke107 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x449061c3 x44393af2 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke108 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x449061c3 x44393af2 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3eab038 0 1 x40e67e60 1}\n       {x42580000 xc3e708da x40f089c0 1 x40f089c0 1}\n       {x425c0000 xc3e32bea x4105dfb0 1 x4105dfb0 1}\n       {x42600000 xc3deaadf x411fdd90 1 x411fdd90 1}\n       {x42640000 xc3d92e11 x4139f180 1 x4139f180 1}\n       {x42680000 xc3d30bc7 x413bc300 1 x413bc300 1}\n       {x426c0000 xc3cd71e1 x413389c0 1 x413389c0 1}\n       {x42700000 xc3c7d32b x41350360 1 x41350360 1}\n       {x42740000 xc3c221ab x412f4600 1 x412f4600 1}\n       {x42780000 xc3bcdecb x412635d0 1 x412635d0 1}\n       {x427c0000 xc3b7be4e x41279ca0 1 x41279ca0 1}\n       {x42800000 xc3b26501 x41281980 1 x41281980 1}\n       {x42820000 xc3ad3cb6 x4112d8c0 1 x4112d8c0 1}\n       {x42840000 xc3a93775 x4105cdc0 1 x4105cdc0 1}\n       {x42860000 xc3a4dfda x410f40b0 1 x410f40b0 1}\n       {x42880000 xc3a0436a x410b7d50 1 x410b7d50 1}\n       {x428a0000 xc39c2805 x40fa1b00 1 x40fa1b00 1}\n       {x428c0000 xc3987292 x40de9800 1 x40de9800 1}\n       {x428e0000 xc3953345 x40d62340 1 x40d62340 1}\n       {x42900000 xc391c178 x40f07b40 1 x40f07b40 1}\n       {x42920000 xc38daf6b x40f01820 1 x40f01820 1}\n       {x42940000 xc38a40b7 x40ca1120 1 x40ca1120 1}\n       {x42960000 xc3875ee2 x40ab1b20 1 x40ab1b20 1}\n       {x42980000 xc384e7de x409b15a0 1 x409b15a0 1}\n       {x429a0000 xc3828635 x4093c260 1 x4093c260 1}\n       {x429c0000 xc38049cb x4084f860 1 x4084f860 1}\n       {x429e0000 xc37cbce4 x40779720 1 x40779720 1}\n       {x42a00000 xc378d6dd x408ae7d0 1 x408ae7d0 1}\n       {x42a20000 xc3740e67 x40a53760 1 x40a53760 1}\n       {x42a40000 xc36e8367 x40bcced0 1 x40bcced0 1}\n       {x42a60000 xc368417a x40b3cfe0 1 x40b3cfe0 1}\n       {x42a80000 xc3634669 x40a7bef0 1 x40a7bef0 1}\n       {x42aa0000 xc35dc58b x40a1c1e0 1 x40a1c1e0 1}\n       {x42ac0000 xc3592a4b x40876b80 1 x40876b80 1}\n       {x42ae0000 xc3554ed3 x4054a4c0 1 x4054a4c0 1}\n       {x42b00000 xc3528525 x401b74e0 1 x401b74e0 1}\n       {x42b20000 xc350732c x3fdf2540 1 x3fdf2540 1}\n       {x42b40000 xc34f0890 x3fd936c0 1 x3fd936c0 1}\n       {x42b60000 xc34d0e51 x40068880 1 x40068880 1}\n       {x42b80000 xc34ad44c x400d20e0 1 x400d20e0 1}\n       {x42ba0000 xc348a54a x40122440 1 x40122440 1}\n       {x42bc0000 xc346432a x401bd3c0 1 x401bd3c0 1}\n       {x42be0000 xc343c6ac x400f5aa0 1 x400f5aa0 1}\n       {x42c00000 xc341c855 x3ff95640 1 x3ff95640 1}\n       {x42c20000 xc33fe153 x40586d40 1 x40586d40 1}\n       {x42c40000 xc33b04eb x40a44f00 1 x40a44f00 1}\n       {x42c60000 xc3359c63 x40b3a780 1 x40b3a780 1}\n       {x42c80000 xc32fca73 x40b36820 1 x40b36820 1}\n       {x42ca0000 xc32a65e1 x40afc4c0 1 x40afc4c0 1}\n       {x42cc0000 xc324ce27 x40b4b7e0 1 x40b4b7e0 1}\n       {x42ce0000 xc31f1a63 x40b2c3f0 1 x40b2c3f0 1}\n       {x42d00000 xc319a1e8 x40a369d0 1 x40a369d0 1}\n       {x42d20000 xc314e3c6 x4095ac30 1 x4095ac30 1}\n       {x42d40000 xc3104725 x40980610 1 x40980610 1}\n       {x42d60000 xc30b6365 x409bb100 1 x409bb100 1}\n       {x42d80000 xc3068c15 x409b4630 1 x409b4630 1}\n       {x42da0000 xc301af02 x40a17708 1 x40a17708 1}\n       {x42dc0000 xc2f8e949 x40b25498 1 x40b25498 1}\n       {x42de0000 xc2ed1371 x40c059a0 1 x40c059a0 1}\n       {x42e00000 xc2e0de15 x40c7acc8 1 x40c7acc8 1}\n       {x42e20000 xc2d41dd8 x40ce6328 1 x40ce6328 1}\n       {x42e40000 xc2c711b0 x40d4a658 1 x40d4a658 1}\n       {x42e60000 xc2b9890d x40d80c38 1 x40d80c38 1}\n       {x42e80000 xc2ac1029 x40dff400 1 x40dff400 1}\n       {x42ea0000 xc29d8a8d x40e745d8 1 x40e745d8 1}\n       {x42ec0000 xc28f276e x40fab9ac 1 x40fab9ac 1}\n       {x42ee0000 xc27c66af x41019f54 1 x41019f54 1}\n       {x42f00000 xc25d7f32 x410d52f2 1 x410d52f2 1}\n       {x42f20000 xc235bd36 x4115b2f4 1 x4115b2f4 1}\n       {x42f40000 xc212a5b8 x4115f56d 1 x4115f56d 1}\n       {x42f60000 xc1d584ff x41125a5c 1 x41125a5c 1}\n       {x42f80000 xc192f114 x410df206 1 x410df206 1}\n       {x42fa0000 xc10f25f2 x4112f114 1 x4112f114 1}\n       {x42fc0000 0 x4111aab8 1 x4111aab8 1}\n       {x42fe0000 x41142f7f x4111f362 1 x4111f362 1}\n       {x43000000 x4191f362 x410a1e8e 1 x410a1e8e 1}\n       {x43010000 x41d4364d x4101f198 1 x4101f198 1}\n       {x43020000 x4209f27d x40f359aa 1 x40f359aa 1}\n       {x43030000 x4226f191 x40dead54 1 x40dead54 1}\n       {x43040000 x42419dd2 x40ced3a4 1 x40ced3a4 1}\n       {x43050000 x425aa67a x40b6177c 1 x40b6177c 1}\n       {x43060000 x426f23b1 x409bd918 1 x409bd918 1}\n       {x43070000 x4280ce60 x408e49fc 1 x408e49fc 1}\n       {x43080000 x42895b18 x40806060 1 x40806060 1}\n       {x43090000 x4290da6c x4067e930 1 x4067e930 1}\n       {x430a0000 x4297d9ab x40571530 1 x40571530 1}\n       {x430b0000 x429e4bbf x40492bb0 1 x40492bb0 1}\n       {x430c0000 x42a46c66 x403e19a0 1 x403e19a0 1}\n       {x430d0000 x42aa2d59 x403a0de0 1 x403a0de0 1}\n       {x430e0000 x42b00d44 x404008e0 1 x404008e0 1}\n       {x430f0000 x42b62de7 x404d7080 1 x404d7080 1}\n       {x43100000 x42bce44c x4052d180 1 x4052d180 1}\n       {x43110000 x42c35aff x404c5040 1 x404c5040 1}\n       {x43120000 x42c9a950 x40480d90 1 x40480d90 1}\n       {x43130000 x42cfdbd8 x402db530 1 x402db530 1}\n       {x43140000 x42d484a3 x4000bf00 1 x4000bf00 1}\n       {x43150000 x42d7e7c8 x3f90f280 1 x3f90f280 1}\n       {x43160000 x42d90c37 x3e94c180 1 0 1}}\n      {{x42540000 x4485a634 0 1 xc1561ac0 1}\n       {x42580000 x4483e581 xc174d700 1 xc174d700 1}\n       {x425c0000 x4481d2d8 xc186db20 1 xc186db20 1}\n       {x42600000 x447f5d50 xc1882cf0 1 xc1882cf0 1}\n       {x42640000 x447b22e1 xc18adf40 1 xc18adf40 1}\n       {x42680000 x4476af5c xc1915340 1 xc1915340 1}\n       {x426c0000 x44720dad xc1898640 1 xc1898640 1}\n       {x42700000 x446e16f8 xc187a630 1 xc187a630 1}\n       {x42740000 x4469934a xc196acc0 1 xc196acc0 1}\n       {x42780000 x4464ac2c xc1a6b6e0 1 xc1a6b6e0 1}\n       {x427c0000 x445f27dc xc1bdaf00 1 xc1bdaf00 1}\n       {x42800000 x4458d13c xc1c5e740 1 xc1c5e740 1}\n       {x42820000 x4452c968 xc1c0ba40 1 xc1c0ba40 1}\n       {x42840000 x444cc598 xc1c47eb0 1 xc1c47eb0 1}\n       {x42860000 x4446817d xc1ccb980 1 xc1ccb980 1}\n       {x42880000 x443ffa00 xc1c7ecc0 1 xc1c7ecc0 1}\n       {x428a0000 x443a02b1 xc1bbc260 1 xc1bbc260 1}\n       {x428c0000 x44343dda xc1b81bf0 1 xc1b81bf0 1}\n       {x428e0000 x442e80f2 xc1b92b40 1 xc1b92b40 1}\n       {x42900000 x4428ab26 xc1c3b570 1 xc1c3b570 1}\n       {x42920000 x4422459b xc1c7f080 1 xc1c7f080 1}\n       {x42940000 x441c2c1e xc1c24e90 1 xc1c24e90 1}\n       {x42960000 x441620b2 xc1ba0b30 1 xc1ba0b30 1}\n       {x42980000 x44108b6b xc1ab3c10 1 xc1ab3c10 1}\n       {x429a0000 x440b6cf1 xc19f7d40 1 xc19f7d40 1}\n       {x429c0000 x44069397 xc19e08f0 1 xc19e08f0 1}\n       {x429e0000 x44018c62 xc1a00368 1 xc1a00368 1}\n       {x42a00000 x43f926c1 xc1a2ad40 1 xc1a2ad40 1}\n       {x42a20000 x43eec31c xc1a61118 1 xc1a61118 1}\n       {x42a40000 x43e4649e xc1a0a948 1 xc1a0a948 1}\n       {x42a60000 x43daadf3 xc1a04450 1 xc1a04450 1}\n       {x42a80000 x43d05c14 xc1a3d900 1 xc1a3d900 1}\n       {x42aa0000 x43c632d3 xc19f5560 1 xc19f5560 1}\n       {x42ac0000 x43bc7168 xc199cb70 1 xc199cb70 1}\n       {x42ae0000 x43b2f965 xc19aa4b8 1 xc19aa4b8 1}\n       {x42b00000 x43a91cd1 xc19c88f8 1 xc19c88f8 1}\n       {x42b20000 x439f6846 xc1a19eb8 1 xc1a19eb8 1}\n       {x42b40000 x4394e8fa xc1ab2060 1 xc1ab2060 1}\n       {x42b60000 x438a043a xc1ad4f94 1 xc1ad4f94 1}\n       {x42b80000 x437e7e0f xc1aa7598 1 xc1aa7598 1}\n       {x42ba0000 x43696b0e xc1a49d1c 1 xc1a49d1c 1}\n       {x42bc0000 x435556c8 xc19ab6f0 1 xc19ab6f0 1}\n       {x42be0000 x4342bd52 xc18cb864 1 xc18cb864 1}\n       {x42c00000 x433228af xc180614c 1 xc180614c 1}\n       {x42c20000 x4322a4ff xc16de340 1 xc16de340 1}\n       {x42c40000 x43146c47 xc1652210 1 xc1652210 1}\n       {x42c60000 x430600bd xc168e374 1 xc168e374 1}\n       {x42c80000 x42ee9fb1 xc1687dbc 1 xc1687dbc 1}\n       {x42ca0000 x42d1e20b xc1638738 1 xc1638738 1}\n       {x42cc0000 x42b5bde3 xc161f150 1 xc161f150 1}\n       {x42ce0000 x429965b7 xc15df6ea 1 xc15df6ea 1}\n       {x42d00000 x427c8051 xc14bf13c 1 xc14bf13c 1}\n       {x42d20000 x424cd2d0 xc1371142 1 xc1371142 1}\n       {x42d40000 x4220f7b0 xc12a08ed 1 xc12a08ed 1}\n       {x42d60000 x41ef9cb3 xc119213c 1 xc119213c 1}\n       {x42d80000 x41a8ce24 xc109dbc2 1 xc109dbc2 1}\n       {x42da0000 x414b81e2 xc1028650 1 xc1028650 1}\n       {x42dc0000 x40991f4e xc0edf9f8 1 xc0edf9f8 1}\n       {x42de0000 xc009e05a xc0c18837 1 xc0c18837 1}\n       {x42e00000 xc0e9f120 xc08980e2 1 xc08980e2 1}\n       {x42e20000 xc12bf8f9 xc03998ec 1 xc03998ec 1}\n       {x42e40000 xc151c506 xbff08bb4 1 xbff08bb4 1}\n       {x42e60000 xc1681be6 -}\n       {x42e80000 xc167b7a1 x3d966780 1 x3d966780 1}\n       {x42ea0000 xc15b91f7 -}\n       {x42ec0000 xc162f967 -}\n       {x42ee0000 xc1539571 x3fa83720 1 x3fa83720 1}\n       {x42f00000 xc138eb9f x3f803630 1 x3f803630 1}\n       {x42f20000 xc13387e5 x3f70b5f8 1 x3f70b5f8 1}\n       {x42f40000 xc11ad4e0 x3fa478a0 1 x3fa478a0 1}\n       {x42f60000 xc10a69bd x3ff55448 1 x3ff55448 1}\n       {x42f80000 xc0baff9c x40233c8e 1 x40233c8e 1}\n       {x42fa0000 xc0632dd7 x403aff9c 1 x403aff9c 1}\n       {x42fc0000 0 x4066fdf0 1 x4066fdf0 1}\n       {x42fe0000 x406ace09 x406e9092 1 x406e9092 1}\n       {x43000000 x40ee9092 x40810e71 1 x40810e71 1}\n       {x43010000 x413bc1f3 x4091f1d1 1 x4091f1d1 1}\n       {x43020000 x41849d0d x40a84f57 1 x40a84f57 1}\n       {x43030000 x41b208a5 x40b7eebc 1 x40b7eebc 1}\n       {x43040000 x41e0946b x40ba1242 1 x40ba1242 1}\n       {x43050000 x420788e3 x40bfee32 1 x40bfee32 1}\n       {x43060000 x422045c2 x40c8262c 1 x40c8262c 1}\n       {x43070000 x4239926e x40d5cbd0 1 x40d5cbd0 1}\n       {x43080000 x4255b8b6 x40e54ad0 1 x40e54ad0 1}\n       {x43090000 x4272e522 x40e53be0 1 x40e53be0 1}\n       {x430a0000 x428783d7 x40d82d10 1 x40d82d10 1}\n       {x430b0000 x42947833 x40c945a0 1 x40c945a0 1}\n       {x430c0000 x42a0ac8b x40c849d0 1 x40c849d0 1}\n       {x430d0000 x42ad816d x40cd2ee8 1 x40cd2ee8 1}\n       {x430e0000 x42ba5268 x40ccdd78 1 x40ccdd78 1}\n       {x430f0000 x42c71d1c x40c93f20 1 x40c93f20 1}\n       {x43100000 x42d37a4c x40c5d7b0 1 x40c5d7b0 1}\n       {x43110000 x42dfd812 x40c046d0 1 x40c046d0 1}\n       {x43120000 x42eb8326 x40b3d668 1 x40b3d668 1}\n       {x43130000 x42f652df x409f7830 1 x409f7830 1}\n       {x43140000 x42ff722c x408616d8 1 x408616d8 1}\n       {x43150000 x43038add x40339d40 1 x40339d40 1}\n       {x43160000 x43055600 x3fa4bd00 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke109 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4481af4c x43f87354 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke110 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4481af4c x43f87354 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3dd1052 0 1 x40cd5bc0 1}\n       {x42580000 xc3d9b8f1 x40e6d140 1 x40e6d140 1}\n       {x425c0000 xc3d5d9c8 x41062e80 1 x41062e80 1}\n       {x42600000 xc3d15609 x412022d0 1 x412022d0 1}\n       {x42640000 xc3cbd79b x4139d6f0 1 x4139d6f0 1}\n       {x42680000 xc3c5b89a x41371630 1 x41371630 1}\n       {x426c0000 xc3c06638 x4129fe70 1 x4129fe70 1}\n       {x42700000 xc3bb18b3 x412ff990 1 x412ff990 1}\n       {x42740000 xc3b5669f x41356680 1 x41356680 1}\n       {x42780000 xc3afc24b x412c2bd0 1 x412c2bd0 1}\n       {x427c0000 xc3aaa3e2 x4127c6c0 1 x4127c6c0 1}\n       {x42800000 xc3a545df x4124f2e0 1 x4124f2e0 1}\n       {x42820000 xc3a054b4 x410dc310 1 x410dc310 1}\n       {x42840000 xc39c69ae x40fcfea0 1 x40fcfea0 1}\n       {x42860000 xc3986cbf x41056be0 1 x41056be0 1}\n       {x42880000 xc39412f0 x41074890 1 x41074890 1}\n       {x428a0000 xc38ff836 x40fc9240 1 x40fc9240 1}\n       {x428c0000 xc38c2e5e x40e730e0 1 x40e730e0 1}\n       {x428e0000 xc388beaf x40dad7c0 1 x40dad7c0 1}\n       {x42900000 xc38557a0 x40f34880 1 x40f34880 1}\n       {x42920000 xc381246b x40fa4100 1 x40fa4100 1}\n       {x42940000 xc37b0b30 x40d34f90 1 x40d34f90 1}\n       {x42960000 xc37513dd x40ac4720 1 x40ac4720 1}\n       {x42980000 xc37046be x40969450 1 x40969450 1}\n       {x429a0000 xc36baa98 x408b2fb0 1 x408b2fb0 1}\n       {x429c0000 xc36793c3 x4080bc80 1 x4080bc80 1}\n       {x429e0000 xc3639ed0 x408300e0 1 x408300e0 1}\n       {x42a00000 xc35f63b5 x4090a800 1 x4090a800 1}\n       {x42a20000 xc35a9450 x40ac00c0 1 x40ac00c0 1}\n       {x42a40000 xc354a3a9 x40c97dc0 1 x40c97dc0 1}\n       {x42a60000 xc34dfc74 x40bf8f60 1 x40bf8f60 1}\n       {x42a80000 xc348aab3 x40a92d30 1 x40a92d30 1}\n       {x42aa0000 xc34369a1 x40a26b30 1 x40a26b30 1}\n       {x42ac0000 xc33e8400 x408e34c0 1 x408e34c0 1}\n       {x42ae0000 xc33a8655 x405d2a40 1 x405d2a40 1}\n       {x42b00000 xc3379aae x4022fd20 1 x4022fd20 1}\n       {x42b20000 xc3356e6c x4000a7e0 1 x4000a7e0 1}\n       {x42b40000 xc333956f x3ffce400 1 x3ffce400 1}\n       {x42b60000 xc3317adc x400c33a0 1 x400c33a0 1}\n       {x42b80000 xc32f33d2 x400cc400 1 x400cc400 1}\n       {x42ba0000 xc32d14bc x400a98e0 1 x400a98e0 1}\n       {x42bc0000 xc32adf0b x400c8980 1 x400c8980 1}\n       {x42be0000 xc328b070 x4006a420 1 x4006a420 1}\n       {x42c00000 xc326a9ea x4002ec60 1 x4002ec60 1}\n       {x42c20000 xc324990d x40609c20 1 x40609c20 1}\n       {x42c40000 xc31fa509 x40a5a540 1 x40a5a540 1}\n       {x42c60000 xc31a3eb9 x40aefe90 1 x40aefe90 1}\n       {x42c80000 xc314b520 x40ae1fa0 1 x40ae1fa0 1}\n       {x42ca0000 xc30f5cbf x40b156d0 1 x40b156d0 1}\n       {x42cc0000 xc3099fb3 x40b00b20 1 x40b00b20 1}\n       {x42ce0000 xc3045c0d x409fec10 1 x409fec10 1}\n       {x42d00000 xc2ff41e4 x408a4fb0 1 x408a4fb0 1}\n       {x42d20000 xc2f76e24 x40812c08 1 x40812c08 1}\n       {x42d40000 xc2ef1c63 x4085beb0 1 x4085beb0 1}\n       {x42d60000 xc2e6b64e x4086a3f0 1 x4086a3f0 1}\n       {x42d80000 xc2de47e5 x40873930 1 x40873930 1}\n       {x42da0000 xc2d5cf28 x408971b8 1 x408971b8 1}\n       {x42dc0000 xc2cd19ae x408f7b78 1 x408f7b78 1}\n       {x42de0000 xc2c3dfb9 x4099b908 1 x4099b908 1}\n       {x42e00000 xc2b9e28d x40a1c170 1 x40a1c170 1}\n       {x42e20000 xc2afa78b x40a64838 1 x40a64838 1}\n       {x42e40000 xc2a51986 x40a87750 1 x40a87750 1}\n       {x42e60000 xc29a98a1 x40ad26d8 1 x40ad26d8 1}\n       {x42e80000 xc28f74ab x40b4c5c0 1 x40b4c5c0 1}\n       {x42ea0000 xc283ffe9 x40b1b42c 1 x40b1b42c 1}\n       {x42ec0000 xc2727c4b x40c0d71c 1 x40c0d71c 1}\n       {x42ee0000 xc257ca0b x40cf03bc 1 x40cf03bc 1}\n       {x42f00000 xc23ebb5c x40e55c98 1 x40e55c98 1}\n       {x42f20000 xc21e72e5 x40f8da94 1 x40f8da94 1}\n       {x42f40000 xc20084b7 x4100dc96 1 x4100dc96 1}\n       {x42f60000 xc1bc0934 x40ff07b0 1 x40ff07b0 1}\n       {x42f80000 xc1818596 x40fa5332 1 x40fa5332 1}\n       {x42fa0000 xc0fb7e6b x41018596 1 x41018596 1}\n       {x42fc0000 0 x41022571 1 x41022571 1}\n       {x42fe0000 x41068bac x4103a35e 1 x4103a35e 1}\n       {x43000000 x4183a35e x40fce342 1 x40fce342 1}\n       {x43010000 x41c1b777 x40f29cd0 1 x40f29cd0 1}\n       {x43020000 x41fcf1c6 x40e6754e 1 x40e6754e 1}\n       {x43030000 x421a790f x40d6ac54 1 x40d6ac54 1}\n       {x43040000 x423423f8 x40c47dbc 1 x40c47dbc 1}\n       {x43050000 x424b987e x40af242c 1 x40af242c 1}\n       {x43060000 x425fed03 x40971f28 1 x40971f28 1}\n       {x43070000 x42716048 x4080af5c 1 x4080af5c 1}\n       {x43080000 x42800c6d x40660d40 1 x40660d40 1}\n       {x43090000 x428710f8 x40553d90 1 x40553d90 1}\n       {x430a0000 x428d6046 x4042ca60 1 x4042ca60 1}\n       {x430b0000 x42933d9e x403233b0 1 x403233b0 1}\n       {x430c0000 x42988381 x4022cb20 1 x4022cb20 1}\n       {x430d0000 x429d6a50 x401c6df0 1 x401c6df0 1}\n       {x430e0000 x42a24a60 x40226a30 1 x40226a30 1}\n       {x430f0000 x42a790f3 x403040c0 1 x403040c0 1}\n       {x43100000 x42ad4e6c x403990e0 1 x403990e0 1}\n       {x43110000 x42b32a01 x40391c10 1 x40391c10 1}\n       {x43120000 x42b8e02d x4033c6d0 1 x4033c6d0 1}\n       {x43130000 x42be666e x401bd4d0 1 x401bd4d0 1}\n       {x43140000 x42c29d7a x3fd699c0 1 x3fd699c0 1}\n       {x43150000 x42c51b3c x3f408d80 1 x3f408d80 1}\n       {x43160000 x42c59fb0 x3c441000 1 0 1}}\n      {{x42540000 x44876974 0 1 xc15e0120 1}\n       {x42580000 x44859c0b xc1781b40 1 xc1781b40 1}\n       {x425c0000 x44838907 xc186f420 1 xc186f420 1}\n       {x42600000 x4481646a xc1883f90 1 xc1883f90 1}\n       {x42640000 x447e8e15 xc185d150 1 xc185d150 1}\n       {x42680000 x447a6bbf xc1889fe0 1 xc1889fe0 1}\n       {x426c0000 x44760417 xc18811e0 1 xc18811e0 1}\n       {x42700000 x4471eaa1 xc18a1490 1 xc18a1490 1}\n       {x42740000 x446d62ce xc19b1090 1 xc19b1090 1}\n       {x42780000 x44683998 xc1aaf380 1 xc1aaf380 1}\n       {x427c0000 x4462b396 xc1be9760 1 xc1be9760 1}\n       {x42800000 x445c5022 xc1cb5f70 1 xc1cb5f70 1}\n       {x42820000 x4455fd9f xc1c7f940 1 xc1c7f940 1}\n       {x42840000 x444fd08e xc1c6fc80 1 xc1c6fc80 1}\n       {x42860000 x44498dd7 xc1cf6770 1 xc1cf6770 1}\n       {x42880000 x4442da17 xc1ce4ab0 1 xc1ce4ab0 1}\n       {x428a0000 x443ca92c xc1c8a180 1 xc1c8a180 1}\n       {x428c0000 x44364fff xc1cb3d10 1 xc1cb3d10 1}\n       {x428e0000 x442ff55b xc1ce5470 1 xc1ce5470 1}\n       {x42900000 x44296ab8 xc1d654d0 1 xc1d654d0 1}\n       {x42920000 x4422900e xc1d70e10 1 xc1d70e10 1}\n       {x42940000 x441bf9d7 xc1d06af0 1 xc1d06af0 1}\n       {x42960000 x4415895f xc1c915e0 1 xc1c915e0 1}\n       {x42980000 x440f6879 xc1bc9cf0 1 xc1bc9cf0 1}\n       {x429a0000 x4409bf90 xc1b17d20 1 xc1b17d20 1}\n       {x429c0000 x440450a7 xc1ac9528 1 xc1ac9528 1}\n       {x429e0000 x43fdec7b xc1a9bcf8 1 xc1a9bcf8 1}\n       {x42a00000 x43f369af xc1a7e5e0 1 xc1a7e5e0 1}\n       {x42a20000 x43e8efbf xc1a858c8 1 xc1a858c8 1}\n       {x42a40000 x43de5e96 xc1a6a778 1 xc1a6a778 1}\n       {x42a60000 x43d41ad0 xc1a51e78 1 xc1a51e78 1}\n       {x42a80000 x43c9bac7 xc1a33938 1 xc1a33938 1}\n       {x42aa0000 x43bfb3a9 xc1a25550 1 xc1a25550 1}\n       {x42ac0000 x43b5701d xc1a48050 1 xc1a48050 1}\n       {x42ae0000 x43ab239f xc1a35ff0 1 xc1a35ff0 1}\n       {x42b00000 x43a1041f xc1a31f18 1 xc1a31f18 1}\n       {x42b20000 x4396bfbc xc1a524d0 1 xc1a524d0 1}\n       {x42b40000 x438c5f85 xc1a78080 1 xc1a78080 1}\n       {x42b60000 x4381cfac xc1aa8314 1 xc1aa8314 1}\n       {x42b80000 x436e1e45 xc1a90378 1 xc1a90378 1}\n       {x42ba0000 x43595e7a xc1a30fd4 1 xc1a30fd4 1}\n       {x42bc0000 x43455a50 xc19a80f8 1 xc19a80f8 1}\n       {x42be0000 x4332be3c xc18f2960 1 xc18f2960 1}\n       {x42c00000 x43218ff8 xc1844244 1 xc1844244 1}\n       {x42c20000 x4311adab xc1736c30 1 xc1736c30 1}\n       {x42c40000 x43032272 xc16794a8 1 xc16794a8 1}\n       {x42c60000 x42e9762c xc1635b10 1 xc1635b10 1}\n       {x42c80000 x42cd6e20 xc1611538 1 xc1611538 1}\n       {x42ca0000 x42b130de xc162f810 1 xc162f810 1}\n       {x42cc0000 x4294b01c xc1581ff0 1 xc1581ff0 1}\n       {x42ce0000 x427651c4 xc1450e7c 1 xc1450e7c 1}\n       {x42d00000 x4246d8fa xc12fa018 1 xc12fa018 1}\n       {x42d20000 x421e81b8 xc1210116 1 xc1210116 1}\n       {x42d40000 x41ecb0de xc11a44bc 1 xc11a44bc 1}\n       {x42d60000 x41a2beb4 xc10d2a20 1 xc10d2a20 1}\n       {x42d80000 x413f0d7d xc101a3a8 1 xc101a3a8 1}\n       {x42da0000 x40846c31 xc0f5eb3a 1 xc0f5eb3a 1}\n       {x42dc0000 xc05b76f2 xc0de1e40 1 xc0de1e40 1}\n       {x42de0000 xc11be828 xc0addc66 1 xc0addc66 1}\n       {x42e00000 xc164ba22 xc06eed28 1 xc06eed28 1}\n       {x42e20000 xc189af5e xc01c8878 1 xc01c8878 1}\n       {x42e40000 xc1997f2f xbfa81900 1 xbfa81900 1}\n       {x42e60000 xc19eb27e -}\n       {x42e80000 xc19ad997 x3f5fe320 1 x3f5fe320 1}\n       {x42ea0000 xc190b44c x3fa52e98 1 x3fa52e98 1}\n       {x42ec0000 xc18633c4 x3faf1740 1 x3faf1740 1}\n       {x42ee0000 xc175a2c8 x3fd570cc 1 x3fd570cc 1}\n       {x42f00000 xc1570b55 x3fc66240 1 x3fc66240 1}\n       {x42f20000 xc1440a38 x3fc12244 1 x3fc12244 1}\n       {x42f40000 xc126c2c4 x3fcfaf7c 1 x3fcfaf7c 1}\n       {x42f60000 xc1101e59 x400c47c8 1 x400c47c8 1}\n       {x42f80000 xc0c13dc0 x402aae28 1 x402aae28 1}\n       {x42fa0000 xc06b1d15 x40413dc0 1 x40413dc0 1}\n       {x42fc0000 0 x4064b80f 1 x4064b80f 1}\n       {x42fe0000 x405e5309 x406c2f3e 1 x406c2f3e 1}\n       {x43000000 x40ec2f3e x4081e0ae 1 x4081e0ae 1}\n       {x43010000 x41397570 x408e7b19 1 x408e7b19 1}\n       {x43020000 x4182495c x409f64b0 1 x409f64b0 1}\n       {x43030000 x41ac6d10 x40ad51ee 1 x40ad51ee 1}\n       {x43040000 x41d8f253 x40b50c94 1 x40b50c94 1}\n       {x43050000 x420379ad x40beead2 1 x40beead2 1}\n       {x43060000 x421c33de x40d42b10 1 x40d42b10 1}\n       {x43070000 x42388471 x40e68cfc 1 x40e68cfc 1}\n       {x43080000 x4255d71d x40ef25cc 1 x40ef25cc 1}\n       {x43090000 x42744de4 x40ef0024 1 x40ef0024 1}\n       {x430a0000 x4288cb93 x40e23608 1 x40e23608 1}\n       {x430b0000 x42966db3 x40d63910 1 x40d63910 1}\n       {x430c0000 x42a392b5 x40d64360 1 x40d64360 1}\n       {x430d0000 x42b1361f x40db2c10 1 x40db2c10 1}\n       {x430e0000 x42bef837 x40d90c40 1 x40d90c40 1}\n       {x430f0000 x42cc57a7 x40d75b00 1 x40d75b00 1}\n       {x43100000 x42d9e397 x40d61b28 1 x40d61b28 1}\n       {x43110000 x42e71b0c x40ce7e08 1 x40ce7e08 1}\n       {x43120000 x42f3b358 x40c32940 1 x40c32940 1}\n       {x43130000 x42ff8034 x40afd1e0 1 x40afd1e0 1}\n       {x43140000 x4304d6ca x409752d0 1 x409752d0 1}\n       {x43150000 x43093547 x4055df80 1 x4055df80 1}\n       {x43160000 x430b85c6 x3fe67fc0 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke111 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4440877d x43fa7a5f 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke112 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x4440877d x43fa7a5f 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3c45925 0 1 x408d4b80 1}\n       {x42580000 xc3c1cf9f x40cc8d80 1 x40cc8d80 1}\n       {x425c0000 xc3bdf4b9 x410596a0 1 x410596a0 1}\n       {x42600000 xc3b97635 x41140450 1 x41140450 1}\n       {x42640000 xc3b4b474 x4116aa10 1 x4116aa10 1}\n       {x42680000 xc3b00b94 x411715c0 1 x411715c0 1}\n       {x426c0000 xc3ab4318 x411418f0 1 x411418f0 1}\n       {x42700000 xc3a6ca05 x411986b0 1 x411986b0 1}\n       {x42740000 xc3a1aaad x41216d00 1 x41216d00 1}\n       {x42780000 xc39cb335 x41183d20 1 x41183d20 1}\n       {x427c0000 xc39826db x4116d1c0 1 x4116d1c0 1}\n       {x42800000 xc3934619 x411c70e0 1 x411c70e0 1}\n       {x42820000 xc38e5fcd x410c1570 1 x410c1570 1}\n       {x42840000 xc38a84c2 x40f13240 1 x40f13240 1}\n       {x42860000 xc386d63b x40cd2ce0 1 x40cd2ce0 1}\n       {x42880000 xc3841b5b x40d837c0 1 x40d837c0 1}\n       {x428a0000 xc380147d x40f26e40 1 x40f26e40 1}\n       {x428c0000 xc3790fd2 x40da4180 1 x40da4180 1}\n       {x428e0000 xc37284e2 x40d990f0 1 x40d990f0 1}\n       {x42900000 xc36b76c3 x40e11e50 1 x40e11e50 1}\n       {x42920000 xc36472fd x40c73060 1 x40c73060 1}\n       {x42940000 xc35f03bd x40ac24d0 1 x40ac24d0 1}\n       {x42960000 xc359b0b0 x40a3cfa0 1 x40a3cfa0 1}\n       {x42980000 xc354c6c3 x409b67f0 1 x409b67f0 1}\n       {x429a0000 xc34ffa31 x4090bb40 1 x4090bb40 1}\n       {x429c0000 xc34bbb0f x40815bc0 1 x40815bc0 1}\n       {x429e0000 xc347e475 x40776b00 1 x40776b00 1}\n       {x42a00000 xc343ffb7 x4085f890 1 x4085f890 1}\n       {x42a20000 xc33f84ec x4096edd0 1 x4096edd0 1}\n       {x42a40000 xc33a90da x40a73b60 1 x40a73b60 1}\n       {x42a60000 xc3351136 x40a05fa0 1 x40a05fa0 1}\n       {x42a80000 xc3308ae0 x4092e360 1 x4092e360 1}\n       {x42aa0000 xc32be300 x4096ce90 1 x4096ce90 1}\n       {x42ac0000 xc3271df7 x4089b480 1 x4089b480 1}\n       {x42ae0000 xc32347b8 x4053fcc0 1 x4053fcc0 1}\n       {x42b00000 xc3207e11 x401d8f00 1 x401d8f00 1}\n       {x42b20000 xc31e5b40 x3ff91880 1 x3ff91880 1}\n       {x42b40000 xc31c99af x3fecaa00 1 x3fecaa00 1}\n       {x42b60000 xc31aa898 x3ff64c40 1 x3ff64c40 1}\n       {x42b80000 xc318c07e x3ff30a80 1 x3ff30a80 1}\n       {x42ba0000 xc316dc6e x3fed7bc0 1 x3fed7bc0 1}\n       {x42bc0000 xc3150a8f x3ff03c40 1 x3ff03c40 1}\n       {x42be0000 xc3131b7d x3ff84b80 1 x3ff84b80 1}\n       {x42c00000 xc3112961 x3ff3aec0 1 x3ff3aec0 1}\n       {x42c20000 xc30f4cc2 x40511300 1 x40511300 1}\n       {x42c40000 xc30aa0c9 x40986770 1 x40986770 1}\n       {x42c60000 xc305c64b x40a0cc00 1 x40a0cc00 1}\n       {x42c80000 xc3009409 x40a357d0 1 x40a357d0 1}\n       {x42ca0000 xc2f7219c x40a1ee10 1 x40a1ee10 1}\n       {x42cc0000 xc2ecea50 x409f62e0 1 x409f62e0 1}\n       {x42ce0000 xc2e33540 x40943498 1 x40943498 1}\n       {x42d00000 xc2da63bd x4087aef8 1 x4087aef8 1}\n       {x42d20000 xc2d23f61 x4077f840 1 x4077f840 1}\n       {x42d40000 xc2cae439 x406ab930 1 x406ab930 1}\n       {x42d60000 xc2c393ce x406246e0 1 x406246e0 1}\n       {x42d80000 xc2bcbfcb x4056c610 1 x4056c610 1}\n       {x42da0000 xc2b6276d x40554080 1 x40554080 1}\n       {x42dc0000 xc2af6bc3 x405f0400 1 x405f0400 1}\n       {x42de0000 xc2a8372d x406bd210 1 x406bd210 1}\n       {x42e00000 xc2a0aea2 x406f9750 1 x406f9750 1}\n       {x42e20000 xc2993db8 x40703190 1 x40703190 1}\n       {x42e40000 xc291ab89 x4074a680 1 x4074a680 1}\n       {x42e60000 xc289f350 x407c5040 1 x407c5040 1}\n       {x42e80000 xc281e685 x4086942c 1 x4086942c 1}\n       {x42ea0000 xc2724195 x4092e8d4 1 x4092e8d4 1}\n       {x42ec0000 xc25f12d5 x40a68324 1 x40a68324 1}\n       {x42ee0000 xc248a0cc x40b7fd44 1 x40b7fd44 1}\n       {x42f00000 xc2311384 x40c9c204 1 x40c9c204 1}\n       {x42f20000 xc216304b x40dbd348 1 x40dbd348 1}\n       {x42f40000 xc1f43d64 x40e89668 1 x40e89668 1}\n       {x42f60000 xc1b81562 x40eea25a 1 x40eea25a 1}\n       {x42f80000 xc179d86e x40f57e32 1 x40f57e32 1}\n       {x42fa0000 xc0f55924 x40f9d86e 1 x40f9d86e 1}\n       {x42fc0000 0 x40fae8fb 1 x40fae8fb 1}\n       {x42fe0000 x41003c69 x40fd7eb7 1 x40fd7eb7 1}\n       {x43000000 x417d7eb7 x40f898f1 1 x40f898f1 1}\n       {x43010000 x41bc6aad x40efa8f5 1 x40efa8f5 1}\n       {x43020000 x41f693d6 x40e326fa 1 x40e326fa 1}\n       {x43030000 x4216ff15 x40d63230 1 x40d63230 1}\n       {x43040000 x4230d677 x40c52bb0 1 x40c52bb0 1}\n       {x43050000 x42484a01 x40b44188 1 x40b44188 1}\n       {x43060000 x425de6d9 x40a51d7c 1 x40a51d7c 1}\n       {x43070000 x42719160 x408de314 1 x408de314 1}\n       {x43080000 x4280afcf x40707d90 1 x40707d90 1}\n       {x43090000 x4287d089 x405948e0 1 x405948e0 1}\n       {x430a0000 x428e445d x40475830 1 x40475830 1}\n       {x430b0000 x4294460c x4035bc70 1 x4035bc70 1}\n       {x430c0000 x4299a024 x40269950 1 x40269950 1}\n       {x430d0000 x429eafa1 x402107a0 1 x402107a0 1}\n       {x430e0000 x42a3b09e x4026cef0 1 x4026cef0 1}\n       {x430f0000 x42a91c90 x4037b710 1 x4037b710 1}\n       {x43100000 x42af2c0f x4041e650 1 x4041e650 1}\n       {x43110000 x42b53af5 x403f4900 1 x403f4900 1}\n       {x43120000 x42bb209f x403c4290 1 x403c4290 1}\n       {x43130000 x42c0ff1e x402690e0 1 x402690e0 1}\n       {x43140000 x42c589ad x3fe3d6e0 1 x3fe3d6e0 1}\n       {x43150000 x42c81dd5 x3f5c5600 1 x3f5c5600 1}\n       {x43160000 x42c8fb05 x3e5ee400 1 0 1}}\n      {{x42540000 x4485c411 0 1 xc15291a0 1}\n       {x42580000 x44840915 xc17356c0 1 xc17356c0 1}\n       {x425c0000 x4481f6b6 xc186c670 1 xc186c670 1}\n       {x42600000 x447fa5c3 xc186d800 1 xc186d800 1}\n       {x42640000 x447b7fec xc184c8f0 1 xc184c8f0 1}\n       {x42680000 x44775934 xc1863720 1 xc1863720 1}\n       {x426c0000 x44731c7a xc18adcd0 1 xc18adcd0 1}\n       {x42700000 x446eab67 xc193a6e0 1 xc193a6e0 1}\n       {x42740000 x4469e20c xc1a44600 1 xc1a44600 1}\n       {x42780000 x44646707 xc1b43120 1 xc1b43120 1}\n       {x427c0000 x445e9efa xc1c3c250 1 xc1c3c250 1}\n       {x42800000 x44582ae2 xc1cc5480 1 xc1cc5480 1}\n       {x42820000 x4451d9b2 xc1cb8c90 1 xc1cb8c90 1}\n       {x42840000 x444b7219 xc1cb4150 1 xc1cb4150 1}\n       {x42860000 x4445259d xc1ce9200 1 xc1ce9200 1}\n       {x42880000 x443e88f9 xc1d314f0 1 xc1d314f0 1}\n       {x428a0000 x4437f44e xc1d3a8c0 1 xc1d3a8c0 1}\n       {x428c0000 x44314e6d xc1ce5e10 1 xc1ce5e10 1}\n       {x428e0000 x442b0e6d xc1cae2d0 1 xc1cae2d0 1}\n       {x42900000 x4424a040 xc1d2f400 1 xc1d2f400 1}\n       {x42920000 x441ddf2d xc1d60970 1 xc1d60970 1}\n       {x42940000 x44173fa9 xc1cfb860 1 xc1cfb860 1}\n       {x42960000 x4410e3a7 xc1c701d0 1 xc1c701d0 1}\n       {x42980000 x440acf8c xc1ba9760 1 xc1ba9760 1}\n       {x429a0000 x44053a31 xc1af4848 1 xc1af4848 1}\n       {x429c0000 x43ffb60f xc1ac5d68 1 xc1ac5d68 1}\n       {x429e0000 x43f4e8b5 xc1a9a100 1 xc1a9a100 1}\n       {x42a00000 x43ea81ef xc1a526a8 1 xc1a526a8 1}\n       {x42a20000 x43e043e0 xc1a88a00 1 xc1a88a00 1}\n       {x42a40000 x43d570af xc1af9a68 1 xc1af9a68 1}\n       {x42a60000 x43ca5093 xc1a793f0 1 xc1a793f0 1}\n       {x42a80000 x43c07e31 xc19ac808 1 xc19ac808 1}\n       {x42aa0000 x43b6f792 xc19ba680 1 xc19ba680 1}\n       {x42ac0000 x43ad0961 xc19fcf90 1 xc19fcf90 1}\n       {x42ae0000 x43a2fda0 xc19f3830 1 xc19f3830 1}\n       {x42b00000 x4399225b xc19eb970 1 xc19eb970 1}\n       {x42b20000 x438f2672 xc1a0d450 1 xc1a0d450 1}\n       {x42b40000 x438507d1 xc1a34730 1 xc1a34730 1}\n       {x42b60000 x43757b18 xc1a6bdc0 1 xc1a6bdc0 1}\n       {x42b80000 x43606032 xc1a4bc80 1 xc1a4bc80 1}\n       {x42ba0000 x434c4bf8 xc19f2ec8 1 xc19f2ec8 1}\n       {x42bc0000 x43389480 xc1974230 1 xc1974230 1}\n       {x42be0000 x43267b6c xc18b62a8 1 xc18b62a8 1}\n       {x42c00000 x4315bbd6 xc1801094 1 xc1801094 1}\n       {x42c20000 x43067747 xc16b4420 1 xc16b4420 1}\n       {x42c40000 x42f0a6a4 xc160b090 1 xc160b090 1}\n       {x42c60000 x42d4c26a xc1592a1c 1 xc1592a1c 1}\n       {x42c80000 x42ba5c1d xc154f52c 1 xc154f52c 1}\n       {x42ca0000 x429f851f xc15a5510 1 xc15a5510 1}\n       {x42cc0000 x4283c6d9 xc14517fa 1 xc14517fa 1}\n       {x42ce0000 x425c7e41 xc130d54c 1 xc130d54c 1}\n       {x42d00000 x422f230c xc137278a 1 xc137278a 1}\n       {x42d20000 x4200ea7c xc130e604 1 xc130e604 1}\n       {x42d40000 x41ad6014 xc12074de 1 xc12074de 1}\n       {x42d60000 x4142c033 xc10f22ec 1 xc10f22ec 1}\n       {x42d80000 x4071e93c xc101c221 1 xc101c221 1}\n       {x42da0000 xc081881d xc0f0d7f2 1 xc0f0d7f2 1}\n       {x42dc0000 xc1345da3 xc0d4ec2e 1 xc0d4ec2e 1}\n       {x42de0000 xc18ad81e xc0a4e0ed 1 xc0a4e0ed 1}\n       {x42e00000 xc1ac9f48 xc057d7c8 1 xc057d7c8 1}\n       {x42e20000 xc1c0ce10 xbff5f130 1 xbff5f130 1}\n       {x42e40000 xc1cb5d6e xbf4afe90 1 xbf4afe90 1}\n       {x42e60000 xc1cd7df9 -}\n       {x42e80000 xc1c32903 x3fca8b10 1 x3fca8b10 1}\n       {x42ea0000 xc1b42c97 x3fe805a0 1 x3fe805a0 1}\n       {x42ec0000 xc1a6284f x3fe17c58 1 x3fe17c58 1}\n       {x42ee0000 xc197fd0c x3ff67578 1 x3ff67578 1}\n       {x42f00000 xc18759a0 x3ff27cec 1 x3ff27cec 1}\n       {x42f20000 xc1735add x3fe83b90 1 x3fe83b90 1}\n       {x42f40000 xc154a45c x3ffb17a4 1 x3ffb17a4 1}\n       {x42f60000 xc13494f4 x402a07f0 1 x402a07f0 1}\n       {x42f80000 xc0ff40c8 x4058d815 1 x4058d815 1}\n       {x42fa0000 xc09051d3 x407f40c8 1 x407f40c8 1}\n       {x42fc0000 0 x408fded3 1 x408fded3 1}\n       {x42fe0000 x408f6bd3 x4092733a 1 x4092733a 1}\n       {x43000000 x4112733a x4096f8e6 1 x4096f8e6 1}\n       {x43010000 x415eaed0 x40a103d8 1 x40a103d8 1}\n       {x43020000 x4199bb89 x40aeae8c 1 x40aeae8c 1}\n       {x43030000 x41c6aeae x40b9f06c 1 x40b9f06c 1}\n       {x43040000 x41f6b3bf x40c3ced4 1 x40c3ced4 1}\n       {x43050000 x42144b0c x40c5c122 1 x40c5c122 1}\n       {x43060000 x422cca28 x40d61328 1 x40d61328 1}\n       {x43070000 x4249cfd6 x40f359c4 1 x40f359c4 1}\n       {x43080000 x4269a099 x41000f00 1 x41000f00 1}\n       {x43090000 x4284ebab x40fb4884 1 x40fb4884 1}\n       {x430a0000 x4294395d x40f0d5c0 1 x40f0d5c0 1}\n       {x430b0000 x42a30663 x40e72660 1 x40e72660 1}\n       {x430c0000 x42b11e29 x40e8ada8 1 x40e8ada8 1}\n       {x430d0000 x42c01c18 x40ef3e08 1 x40ef3e08 1}\n       {x430e0000 x42cf05ea x40ea6140 1 x40ea6140 1}\n       {x430f0000 x42dd6840 x40e8b5f0 1 x40e8b5f0 1}\n       {x43100000 x42ec1ca8 x40e64fb8 1 x40e64fb8 1}\n       {x43110000 x42fa3237 x40ddda60 1 x40ddda60 1}\n       {x43120000 x4303ebfa x40d47d28 1 x40d47d28 1}\n       {x43130000 x430a60ee x40c23270 1 x40c23270 1}\n       {x43140000 x43100f21 x40a8e8a0 1 x40a8e8a0 1}\n       {x43150000 x4314ef78 x4076cee0 1 x4076cee0 1}\n       {x43160000 x4317c598 x4014e490 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke113 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448ce89c x443a18f6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke114 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x448ce89c x443a18f6 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3ea7123 0 1 x40cd2310 1}\n       {x42580000 xc3e71af5 x40e65c60 1 x40e65c60 1}\n       {x425c0000 xc3e33e40 x4105d750 1 x4105d750 1}\n       {x42600000 xc3debd80 x411fc480 1 x411fc480 1}\n       {x42640000 xc3d941f8 x4139c4b0 1 x4139c4b0 1}\n       {x42680000 xc3d32135 x413b9d60 1 x413b9d60 1}\n       {x426c0000 xc3cd8822 x41337bb0 1 x41337bb0 1}\n       {x42700000 xc3c7e97a x41350390 1 x41350390 1}\n       {x42740000 xc3c237e9 x412f5430 1 x412f5430 1}\n       {x42780000 xc3bcf437 x41263bf0 1 x41263bf0 1}\n       {x427c0000 xc3b7d42a x412781e0 1 x412781e0 1}\n       {x42800000 xc3b27c19 x41220520 1 x41220520 1}\n       {x42820000 xc3adb3d8 x410cc100 1 x410cc100 1}\n       {x42840000 xc3a9b009 x410056d0 1 x410056d0 1}\n       {x42860000 xc3a5ae6b x4109ddc0 1 x4109ddc0 1}\n       {x42880000 xc3a1122d x410b7a10 1 x410b7a10 1}\n       {x428a0000 xc39cf6ca x40fa2800 1 x40fa2800 1}\n       {x428c0000 xc39940ed x40dea5e0 1 x40dea5e0 1}\n       {x428e0000 xc396019b x40d641e0 1 x40d641e0 1}\n       {x42900000 xc3928ede x40f05360 1 x40f05360 1}\n       {x42920000 xc38e7f00 x40ef3cc0 1 x40ef3cc0 1}\n       {x42940000 xc38b14f8 x40c8d9c0 1 x40c8d9c0 1}\n       {x42960000 xc3883832 x40aa7a00 1 x40aa7a00 1}\n       {x42980000 xc385c128 x409af460 1 x409af460 1}\n       {x429a0000 xc383608f x40934aa0 1 x40934aa0 1}\n       {x429c0000 xc38126d3 x4084a8b0 1 x4084a8b0 1}\n       {x429e0000 xc37e7693 x40780360 1 x40780360 1}\n       {x42a00000 xc37a8d8b x408adf50 1 x408adf50 1}\n       {x42a20000 xc375c89e x40a52d40 1 x40a52d40 1}\n       {x42a40000 xc3703ab7 x40bd6af0 1 x40bd6af0 1}\n       {x42a60000 xc369f1ef x40b45a40 1 x40b45a40 1}\n       {x42a80000 xc364f513 x40a5baf0 1 x40a5baf0 1}\n       {x42aa0000 xc35f9640 x409fb130 1 x409fb130 1}\n       {x42ac0000 xc35afa00 x4085fd80 1 x4085fd80 1}\n       {x42ae0000 xc3573668 x4051b800 1 x4051b800 1}\n       {x42b00000 xc3546c40 x401b9b20 1 x401b9b20 1}\n       {x42b20000 xc352598f x3fe04d80 1 x3fe04d80 1}\n       {x42b40000 xc350eb0a x3fd8f1c0 1 x3fd8f1c0 1}\n       {x42b60000 xc34ef5c8 x400a2960 1 x400a2960 1}\n       {x42b80000 xc34c99bf x4015e680 1 x4015e680 1}\n       {x42ba0000 xc34a4694 x401ad500 1 x401ad500 1}\n       {x42bc0000 xc347c317 x401f5a80 1 x401f5a80 1}\n       {x42be0000 xc3454bc0 x40129520 1 x40129520 1}\n       {x42c00000 xc3432e6e x4001c7e0 1 x4001c7e0 1}\n       {x42c20000 xc3413d81 x405b6b20 1 x405b6b20 1}\n       {x42c40000 xc33c5315 x40a7bdf0 1 x40a7bdf0 1}\n       {x42c60000 xc336c1a2 x40b5b810 1 x40b5b810 1}\n       {x42c80000 xc330f794 x40b50400 1 x40b50400 1}\n       {x42ca0000 xc32b7162 x40b15b70 1 x40b15b70 1}\n       {x42cc0000 xc325e1dd x40b54ed0 1 x40b54ed0 1}\n       {x42ce0000 xc3201c75 x40b4f000 1 x40b4f000 1}\n       {x42d00000 xc31a92dd x40a4ba20 1 x40a4ba20 1}\n       {x42d20000 xc315d0d3 x40963590 1 x40963590 1}\n       {x42d40000 xc3112f84 x4099a230 1 x4099a230 1}\n       {x42d60000 xc30c36b0 x409e7560 1 x409e7560 1}\n       {x42d80000 xc307482e x409c8f90 1 x409c8f90 1}\n       {x42da0000 xc3026db7 x40a1dc18 1 x40a1dc18 1}\n       {x42dc0000 xc2fa54d9 x40b31258 1 x40b31258 1}\n       {x42de0000 xc2ee7923 x40c1eb48 1 x40c1eb48 1}\n       {x42e00000 xc2e21770 x40c96808 1 x40c96808 1}\n       {x42e20000 xc2d54c22 x40cf2658 1 x40cf2658 1}\n       {x42e40000 xc2c832a5 x40d5ef30 1 x40d5ef30 1}\n       {x42e60000 xc2ba8e3c x40d9c8b0 1 x40d9c8b0 1}\n       {x42e80000 xc2acf98f x40e0c148 1 x40e0c148 1}\n       {x42ea0000 xc29e7613 x40e7e9d0 1 x40e7e9d0 1}\n       {x42ec0000 xc28ffc55 x40fb4ec0 1 x40fb4ec0 1}\n       {x42ee0000 xc27e1876 x41025650 1 x41025650 1}\n       {x42f00000 xc25ecd82 x410e2ea6 1 x410e2ea6 1}\n       {x42f20000 xc2370123 x411651ce 1 x411651ce 1}\n       {x42f40000 xc213a49b x4117321b 1 x4117321b 1}\n       {x42f60000 xc1d6d02b x4113421c 1 x4113421c 1}\n       {x42f80000 xc194071a x410eb604 1 x410eb604 1}\n       {x42fa0000 xc110344d x4114071a 1 x4114071a 1}\n       {x42fc0000 0 x411226d5 1 x411226d5 1}\n       {x42fe0000 x4114195d x411272e0 1 x411272e0 1}\n       {x43000000 x419272e0 x410afb90 1 x410afb90 1}\n       {x43010000 x41d5083f x4102de80 1 x4102de80 1}\n       {x43020000 x420aa8b0 x40f4c532 1 x40f4c532 1}\n       {x43030000 x4227b56c x40dfdcf4 1 x40dfdcf4 1}\n       {x43040000 x42429fed x40cffa74 1 x40cffa74 1}\n       {x43050000 x425bb409 x40b6a860 1 x40b6a860 1}\n       {x43060000 x42704a05 x409d0734 1 x409d0734 1}\n       {x43070000 x42817aeb x408e10f4 1 x408e10f4 1}\n       {x43080000 x4289e721 x408059e0 1 x408059e0 1}\n       {x43090000 x42918627 x406a04d0 1 x406a04d0 1}\n       {x430a0000 x4298876e x405730e0 1 x405730e0 1}\n       {x430b0000 x429ef935 x404a0a70 1 x404a0a70 1}\n       {x430c0000 x42a52815 x403dc890 1 x403dc890 1}\n       {x430d0000 x42aad5be x403a2950 1 x403a2950 1}\n       {x430e0000 x42b0caaa x40408430 1 x40408430 1}\n       {x430f0000 x42b6de01 x4049b760 1 x4049b760 1}\n       {x43100000 x42bd6620 x4050c230 1 x4050c230 1}\n       {x43110000 x42c3ea24 x404e17e0 1 x404e17e0 1}\n       {x43120000 x42ca479e x40456f30 1 x40456f30 1}\n       {x43130000 x42d04117 x402aa6f0 1 x402aa6f0 1}\n       {x43140000 x42d4f20d x3fffa820 1 x3fffa820 1}\n       {x43150000 x42d83e58 x3f8de720 1 x3f8de720 1}\n       {x43160000 x42d96146 x3e9896c0 1 0 1}}\n      {{x42540000 x4485f4a7 0 1 xc15e0580 1}\n       {x42580000 x4484274b xc177ff00 1 xc177ff00 1}\n       {x425c0000 x448214ab xc186d8b0 1 xc186d8b0 1}\n       {x42600000 x447fe10b xc1882800 1 xc1882800 1}\n       {x42640000 x447ba6d6 xc18acbf0 1 xc18acbf0 1}\n       {x42680000 x4477344c xc19137f0 1 xc19137f0 1}\n       {x426c0000 x44729357 xc1897b60 1 xc1897b60 1}\n       {x42700000 x446e9c96 xc187ae70 1 xc187ae70 1}\n       {x42740000 x446a1870 xc196c5b0 1 xc196c5b0 1}\n       {x42780000 x4465303b xc1a6ce20 1 xc1a6ce20 1}\n       {x427c0000 x445fab8e xc1bdb890 1 xc1bdb890 1}\n       {x42800000 x445954b2 xc1c5da20 1 xc1c5da20 1}\n       {x42820000 x44534dec xc1c0ade0 1 xc1c0ade0 1}\n       {x42840000 x444d49d4 xc1c45cf0 1 xc1c45cf0 1}\n       {x42860000 x4447081d xc1cc9890 1 xc1cc9890 1}\n       {x42880000 x4440804b xc1c80000 1 xc1c80000 1}\n       {x428a0000 x443a881d xc1bbd880 1 xc1bbd880 1}\n       {x428c0000 x4434c2c3 xc1b88310 1 xc1b88310 1}\n       {x428e0000 x442effec xc1b9f800 1 xc1b9f800 1}\n       {x42900000 x44292343 xc1c469f0 1 xc1c469f0 1}\n       {x42920000 x4422b94d xc1c86c60 1 xc1c86c60 1}\n       {x42940000 x441c9c7d xc1c2c820 1 xc1c2c820 1}\n       {x42960000 x44168ccb xc1bac320 1 xc1bac320 1}\n       {x42980000 x4410f04b xc1ac34a0 1 xc1ac34a0 1}\n       {x429a0000 x440bc981 xc1a08f20 1 xc1a08f20 1}\n       {x429c0000 x4406e759 xc19eeb80 1 xc19eeb80 1}\n       {x429e0000 x4401dac9 xc1a0ab58 1 xc1a0ab58 1}\n       {x42a00000 x43f9b947 xc1a31820 1 xc1a31820 1}\n       {x42a20000 x43ef528e xc1a63f60 1 xc1a63f60 1}\n       {x42a40000 x43e4f15b xc1a0df78 1 xc1a0df78 1}\n       {x42a60000 x43db369f xc1a07a88 1 xc1a07a88 1}\n       {x42a80000 x43d0e20a xc1a64cd8 1 xc1a64cd8 1}\n       {x42aa0000 x43c66d04 xc1a20158 1 xc1a20158 1}\n       {x42ac0000 x43bca1df xc19ddb88 1 xc19ddb88 1}\n       {x42ae0000 x43b2b193 xc19e8ac0 1 xc19e8ac0 1}\n       {x42b00000 x43a8d087 xc19cfe88 1 xc19cfe88 1}\n       {x42b20000 x439f11c2 xc1a23150 1 xc1a23150 1}\n       {x42b40000 x43948a5d xc1ab3310 1 xc1ab3310 1}\n       {x42b60000 x4389ab60 xc1adc060 1 xc1adc060 1}\n       {x42b80000 x437da4a2 xc1ab37c4 1 xc1ab37c4 1}\n       {x42ba0000 x436888cf xc1a4f940 1 xc1a4f940 1}\n       {x42bc0000 x43546652 xc19b1c50 1 xc19b1c50 1}\n       {x42be0000 x4341c1bb xc18dbce0 1 xc18dbce0 1}\n       {x42c00000 x4330f71a xc1819b3c 1 xc1819b3c 1}\n       {x42c20000 x43215aec xc16eeb10 1 xc16eeb10 1}\n       {x42c40000 x431319b8 xc1657900 1 xc1657900 1}\n       {x42c60000 x4304abcc xc168fcd4 1 xc168fcd4 1}\n       {x42c80000 x42ebf43b xc169359c 1 xc169359c 1}\n       {x42ca0000 x42cf0a31 xc1646bec 1 xc1646bec 1}\n       {x42cc0000 x42b2d940 xc162f00c 1 xc162f00c 1}\n       {x42ce0000 x42964e2e xc15e4b20 1 xc15e4b20 1}\n       {x42d00000 x42768cf0 xc14bb726 1 xc14bb726 1}\n       {x42d20000 x4246c0c9 xc137e50c 1 xc137e50c 1}\n       {x42d40000 x421a9a6a xc12aba7f 1 xc12aba7f 1}\n       {x42d60000 x41e2c713 xc1192f54 1 xc1192f54 1}\n       {x42d80000 x419c0580 xc1099f28 1 xc1099f28 1}\n       {x42da0000 x41324fd5 xc102a0c4 1 xc102a0c4 1}\n       {x42dc0000 x404b25e0 xc0ed502a 1 xc0ed502a 1}\n       {x42de0000 xc06c0156 xc0bed662 1 xc0bed662 1}\n       {x42e00000 xc10c0cea xc0868138 1 xc0868138 1}\n       {x42e20000 xc141818e xc0332e7c 1 xc0332e7c 1}\n       {x42e40000 xc165a428 xbfe2b810 1 xbfe2b810 1}\n       {x42e60000 xc17a2f92 -}\n       {x42e80000 xc177f612 x3ed59000 1 x3ed59000 1}\n       {x42ea0000 xc16a8d26 -}\n       {x42ec0000 xc16e8af8 -}\n       {x42ee0000 xc15da828 x3fb5b878 1 x3fb5b878 1}\n       {x42f00000 xc1411cda x3f8f7ff8 1 x3f8f7ff8 1}\n       {x42f20000 xc139c82a x3f85f864 1 x3f85f864 1}\n       {x42f40000 xc11f9ec1 x3fb14da8 1 x3fb14da8 1}\n       {x42f60000 xc10d74c0 x3fff6f98 1 x3fff6f98 1}\n       {x42f80000 xc0bf85b6 x4026fed7 1 x4026fed7 1}\n       {x42fa0000 xc067d552 x403f85b6 1 x403f85b6 1}\n       {x42fc0000 0 x406c8a97 1 x406c8a97 1}\n       {x42fe0000 x40713fdc x407462c6 1 x407462c6 1}\n       {x43000000 x40f462c6 x4083c552 1 x4083c552 1}\n       {x43010000 x41401549 x4094cdaf 1 x4094cdaf 1}\n       {x43020000 x41877f89 x40aaae47 1 x40aaae47 1}\n       {x43030000 x41b561c8 x40ba4f1a 1 x40ba4f1a 1}\n       {x43040000 x41e4a716 x40bcd390 1 x40bcd390 1}\n       {x43050000 x4209e5c8 x40c24f04 1 x40c24f04 1}\n       {x43060000 x4222e74c x40caaa50 1 x40caaa50 1}\n       {x43070000 x423c905c x40d8188c 1 x40d8188c 1}\n       {x43080000 x4258ed6f x40e7c390 1 x40e7c390 1}\n       {x43090000 x42768140 x40e8b2dc 1 x40e8b2dc 1}\n       {x430a0000 x42898d13 x40db5750 1 x40db5750 1}\n       {x430b0000 x4296ab8a x40cc8440 1 x40cc8440 1}\n       {x430c0000 x42a31d9b x40cbeeb0 1 x40cbeeb0 1}\n       {x430d0000 x42b02960 x40d3f640 1 x40d3f640 1}\n       {x430e0000 x42bd9c63 x40d5cf90 1 x40d5cf90 1}\n       {x430f0000 x42cae352 x40d1b268 1 x40d1b268 1}\n       {x43100000 x42d7d2b0 x40cef510 1 x40cef510 1}\n       {x43110000 x42e4c1f4 x40c9bc60 1 x40c9bc60 1}\n       {x43120000 x42f10a3c x40bc61c8 1 x40bc61c8 1}\n       {x43130000 x42fc4e2d x40a72c90 1 x40a72c90 1}\n       {x43140000 x4302f7e7 x408f4bb8 1 x408f4bb8 1}\n       {x43150000 x43071bd2 x4044c6c0 1 x4044c6c0 1}\n       {x43160000 x43091e1d x3fbcf180 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke115 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x446f88e5 x43c8de98 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke116 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x446f88e5 x43c8de98 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3d3324b 0 1 x40cd06b0 1}\n       {x42580000 xc3cfdbbe x40e6dc60 1 x40e6dc60 1}\n       {x425c0000 xc3cbfb68 x41065810 1 x41065810 1}\n       {x42600000 xc3c7763d x411ffa60 1 x411ffa60 1}\n       {x42640000 xc3c1fbc2 x412ff9d0 1 x412ff9d0 1}\n       {x42680000 xc3bc76a0 x412d2d20 1 x412d2d20 1}\n       {x426c0000 xc3b728f0 x4123fb40 1 x4123fb40 1}\n       {x42700000 xc3b236ec x412638e0 1 x412638e0 1}\n       {x42740000 xc3acc562 x41316710 1 x41316710 1}\n       {x42780000 xc3a7207b x412bf600 1 x412bf600 1}\n       {x427c0000 xc3a20602 x41272320 1 x41272320 1}\n       {x42800000 xc39cae49 x41243720 1 x41243720 1}\n       {x42820000 xc397c290 x410fb400 1 x410fb400 1}\n       {x42840000 xc393b309 x40f80d80 1 x40f80d80 1}\n       {x42860000 xc3900224 x40f6f8c0 1 x40f6f8c0 1}\n       {x42880000 xc38bfb43 x41026200 1 x41026200 1}\n       {x428a0000 xc387dc04 x40fb8c20 1 x40fb8c20 1}\n       {x428c0000 xc3841ee2 x40e58ea0 1 x40e58ea0 1}\n       {x428e0000 xc380af8f x40e1ca30 1 x40e1ca30 1}\n       {x42900000 xc37a2121 x40efd0f0 1 x40efd0f0 1}\n       {x42920000 xc372620f x40ed15a0 1 x40ed15a0 1}\n       {x42940000 xc36b4fc7 x40ce54e0 1 x40ce54e0 1}\n       {x42960000 xc3657cc1 x40a9b820 1 x40a9b820 1}\n       {x42980000 xc360b445 x40965180 1 x40965180 1}\n       {x429a0000 xc35c17a9 x408b3640 1 x408b3640 1}\n       {x429c0000 xc35800e1 x407861a0 1 x407861a0 1}\n       {x429e0000 xc354549c x40716dc0 1 x40716dc0 1}\n       {x42a00000 xc3507573 x40841380 1 x40841380 1}\n       {x42a20000 xc34c1364 x409b9600 1 x409b9600 1}\n       {x42a40000 xc346bc13 x40bbccc0 1 x40bbccc0 1}\n       {x42a60000 xc3405698 x40b50470 1 x40b50470 1}\n       {x42a80000 xc33b6bcc x409eb150 1 x409eb150 1}\n       {x42aa0000 xc3366b83 x409888d0 1 x409888d0 1}\n       {x42ac0000 xc331e33f x40810440 1 x40810440 1}\n       {x42ae0000 xc32e5b3f x40459bc0 1 x40459bc0 1}\n       {x42b00000 xc32bb661 x400c6680 1 x400c6680 1}\n       {x42b20000 xc329f80b x3fd1c4c0 1 x3fd1c4c0 1}\n       {x42b40000 xc3286f4e x3fca47c0 1 x3fca47c0 1}\n       {x42b60000 xc326ceec x3fd76c40 1 x3fd76c40 1}\n       {x42b80000 xc325119d x3fd88c80 1 x3fd88c80 1}\n       {x42ba0000 xc3236cba x3fccc640 1 x3fccc640 1}\n       {x42bc0000 xc321de84 x3fcebe40 1 x3fcebe40 1}\n       {x42be0000 xc32031c1 x3fce4940 1 x3fce4940 1}\n       {x42c00000 xc31ea55f x3fc90240 1 x3fc90240 1}\n       {x42c20000 xc31d0db8 x403e9780 1 x403e9780 1}\n       {x42c40000 xc318b0a3 x40902770 1 x40902770 1}\n       {x42c60000 xc3140b41 x409890d0 1 x409890d0 1}\n       {x42c80000 xc30f2796 x409b7040 1 x409b7040 1}\n       {x42ca0000 xc30a543d x409c7f20 1 x409c7f20 1}\n       {x42cc0000 xc3055fa4 x409cfb80 1 x409cfb80 1}\n       {x42ce0000 xc3008485 x4094a608 1 x4094a608 1}\n       {x42d00000 xc2f82a87 x4092ad98 1 x4092ad98 1}\n       {x42d20000 xc2eeb357 x408f3da8 1 x408f3da8 1}\n       {x42d40000 xc2e642d2 x4089ca88 1 x4089ca88 1}\n       {x42d60000 xc2dd7a06 x408713e8 1 x408713e8 1}\n       {x42d80000 xc2d56055 x407f89d0 1 x407f89d0 1}\n       {x42da0000 xc2cd8169 x407f5050 1 x407f5050 1}\n       {x42dc0000 xc2c56b50 x40860e38 1 x40860e38 1}\n       {x42de0000 xc2bcbfa2 x4093adc0 1 x4093adc0 1}\n       {x42e00000 xc2b2f598 x409f5ab0 1 x409f5ab0 1}\n       {x42e20000 xc2a8d44c x40a1bc28 1 x40a1bc28 1}\n       {x42e40000 xc29ebe13 x409fba58 1 x409fba58 1}\n       {x42e60000 xc294dd01 x40a0e1b0 1 x40a0e1b0 1}\n       {x42e80000 xc28aa1dd x40a4c430 1 x40a4c430 1}\n       {x42ea0000 xc280447b x40a623b0 1 x40a623b0 1}\n       {x42ec0000 xc26bbace x40bad6cc 1 x40bad6cc 1}\n       {x42ee0000 xc251d343 x40c9fd38 1 x40c9fd38 1}\n       {x42f00000 xc2393b80 x40dfc3fc 1 x40dfc3fc 1}\n       {x42f20000 xc219e244 x40f4d4f2 1 x40f4d4f2 1}\n       {x42f40000 xc1f80c87 x40fe420a 1 x40fe420a 1}\n       {x42f60000 xc1b4a383 x40f955e6 1 x40f955e6 1}\n       {x42f80000 xc176c328 x40f1561e 1 x40f1561e 1}\n       {x42fa0000 xc0efe1cf x40f6c328 1 x40f6c328 1}\n       {x42fc0000 0 x40f94334 1 x40f94334 1}\n       {x42fe0000 x4101524c x40fde5ef 1 x40fde5ef 1}\n       {x43000000 x417de5ef x40f586ba 1 x40f586ba 1}\n       {x43010000 x41bb6c83 x40ec6b91 1 x40ec6b91 1}\n       {x43020000 x41f528c0 x40e048f6 1 x40e048f6 1}\n       {x43030000 x4215c87f x40d13c44 1 x40d13c44 1}\n       {x43040000 x422ee371 x40c0793c 1 x40c0793c 1}\n       {x43050000 x4245e6ce x40a99f24 1 x40a99f24 1}\n       {x43060000 x42594b3a x408fd0e4 1 x408fd0e4 1}\n       {x43070000 x4269db07 x4071e050 1 x4071e050 1}\n       {x43080000 x42778744 x4057a028 1 x4057a028 1}\n       {x43090000 x42826786 x404a6980 1 x404a6980 1}\n       {x430a0000 x42886a3a x4039ad60 1 x4039ad60 1}\n       {x430b0000 x428e025c x402ac920 1 x402ac920 1}\n       {x430c0000 x429316cc x4019eef0 1 x4019eef0 1}\n       {x430d0000 x4297a14b x400d6c90 1 x400d6c90 1}\n       {x430e0000 x429bed95 x4010ba10 1 x4010ba10 1}\n       {x430f0000 x42a0acec x40249430 1 x40249430 1}\n       {x43100000 x42a636d8 x4031ce70 1 x4031ce70 1}\n       {x43110000 x42abc9d3 x40315690 1 x40315690 1}\n       {x43120000 x42b14c41 x40303750 1 x40303750 1}\n       {x43130000 x42b6cd48 x4017bd90 1 x4017bd90 1}\n       {x43140000 x42bac81a x3fc9b9a0 1 x3fc9b9a0 1}\n       {x43150000 x42bd1b15 x3f082180 1 x3f082180 1}\n       {x43160000 x42bd75d6 -}}\n      {{x42540000 x4487f427 0 1 xc15de220 1}\n       {x42580000 x448626e6 xc1781d40 1 xc1781d40 1}\n       {x425c0000 x448413b2 xc1870140 1 xc1870140 1}\n       {x42600000 x4481eedc xc1883b70 1 xc1883b70 1}\n       {x42640000 x447fa3ad xc1848620 1 xc1848620 1}\n       {x42680000 x447b9556 xc1874a20 1 xc1874a20 1}\n       {x426c0000 x44772f0b xc18a51d0 1 xc18a51d0 1}\n       {x42700000 x4472f039 xc18f0740 1 xc18f0740 1}\n       {x42740000 x446e3e97 xc19e01b0 1 xc19e01b0 1}\n       {x42780000 x4469101e xc1ab7c60 1 xc1ab7c60 1}\n       {x427c0000 x446386d1 xc1becd00 1 xc1becd00 1}\n       {x42800000 x445d234e xc1cb5520 1 xc1cb5520 1}\n       {x42820000 x4456d17f xc1c97da0 1 xc1c97da0 1}\n       {x42840000 x44508b74 xc1c958b0 1 xc1c958b0 1}\n       {x42860000 x444a3bf4 xc1cf5df0 1 xc1cf5df0 1}\n       {x42880000 x44439595 xc1d11920 1 xc1d11920 1}\n       {x428a0000 x443d2a62 xc1ce45e0 1 xc1ce45e0 1}\n       {x428c0000 x4436b137 xc1d287b0 1 xc1d287b0 1}\n       {x428e0000 x443001e7 xc1d87ac0 1 xc1d87ac0 1}\n       {x42900000 x4429298b xc1df6c50 1 xc1df6c50 1}\n       {x42920000 x44220b22 xc1dc8360 1 xc1dc8360 1}\n       {x42940000 x441b6155 xc1d1c230 1 xc1d1c230 1}\n       {x42960000 x4414eeff xc1c95600 1 xc1c95600 1}\n       {x42980000 x440ecbf5 xc1bcbdd0 1 xc1bcbdd0 1}\n       {x429a0000 x44092322 xc1b17e70 1 xc1b17e70 1}\n       {x429c0000 x4403b40e xc1ac1d70 1 xc1ac1d70 1}\n       {x429e0000 x43fcc296 xc1a9d0a0 1 xc1a9d0a0 1}\n       {x42a00000 x43f22e08 xc1a9d660 1 xc1a9d660 1}\n       {x42a20000 x43e787ca xc1a85528 1 xc1a85528 1}\n       {x42a40000 x43dd2363 xc19f3cd8 1 xc19f3cd8 1}\n       {x42a60000 x43d3a02f xc1a08460 1 xc1a08460 1}\n       {x42a80000 x43c912d7 xc1ab2450 1 xc1ab2450 1}\n       {x42aa0000 x43be3ba5 xc1aa8cc8 1 xc1aa8cc8 1}\n       {x42ac0000 x43b3c13e xc1a698d0 1 xc1a698d0 1}\n       {x42ae0000 x43a9688b xc1a45f00 1 xc1a45f00 1}\n       {x42b00000 x439f355e xc1a42f08 1 xc1a42f08 1}\n       {x42b20000 x4394e2aa xc1a66098 1 xc1a66098 1}\n       {x42b40000 x438a694b xc1a89a08 1 xc1a89a08 1}\n       {x42b60000 x437f9ed2 xc1aa21d4 1 xc1aa21d4 1}\n       {x42b80000 x436a4a21 xc1a7c5fc 1 xc1a7c5fc 1}\n       {x42ba0000 x4355ad53 xc1a0b538 1 xc1a0b538 1}\n       {x42bc0000 x43421cd3 xc1987144 1 xc1987144 1}\n       {x42be0000 x432f9102 xc18e9af0 1 xc18e9af0 1}\n       {x42c00000 x431e7617 xc183a814 1 xc183a814 1}\n       {x42c20000 x430ea6fd xc170da80 1 xc170da80 1}\n       {x42c40000 x43005ac7 xc160bba0 1 xc160bba0 1}\n       {x42c60000 x42e51f12 xc15ce0bc 1 xc15ce0bc 1}\n       {x42c80000 x42c97d5f xc15dbbc4 1 xc15dbbc4 1}\n       {x42ca0000 x42adb021 xc15a1ed8 1 xc15a1ed8 1}\n       {x42cc0000 x4292f5a9 xc13ec888 1 xc13ec888 1}\n       {x42ce0000 x427bfbfe xc13029a6 1 xc13029a6 1}\n       {x42d00000 x424dd67f xc13f2b82 1 xc13f2b82 1}\n       {x42d20000 x421c663d xc1387233 1 xc1387233 1}\n       {x42d40000 x41e33acb xc12519f6 1 xc12519f6 1}\n       {x42d60000 x4193b284 xc1140884 1 xc1140884 1}\n       {x42d80000 x411e648f xc1028889 1 xc1028889 1}\n       {x42da0000 x40094fda xc0ef65ca 1 xc0ef65ca 1}\n       {x42dc0000 xc0a20275 xc0d6d186 1 xc0d6d186 1}\n       {x42de0000 xc1347d8f xc0abd680 1 xc0abd680 1}\n       {x42e00000 xc17cd7ba xc06a48de 1 xc06a48de 1}\n       {x42e20000 xc194d0ff xc00aa084 1 xc00aa084 1}\n       {x42e40000 xc1a113fe xbf8be0f0 1 xbf8be0f0 1}\n       {x42e60000 xc1a64d1d -}\n       {x42e80000 xc19ee819 x3f9afaf0 1 x3f9afaf0 1}\n       {x42ea0000 xc192edbf x3fb70a10 1 x3fb70a10 1}\n       {x42ec0000 xc18806d7 x3fc9cb48 1 x3fc9cb48 1}\n       {x42ee0000 xc17368ac x3fde7118 1 x3fde7118 1}\n       {x42f00000 xc1587168 x3fd00818 1 x3fd00818 1}\n       {x42f20000 xc13f66a6 x3fc1cd90 1 x3fc1cd90 1}\n       {x42f40000 xc127fe04 x3fc54d68 1 x3fc54d68 1}\n       {x42f60000 xc10e134c x3ffd1812 1 x3ffd1812 1}\n       {x42f80000 xc0d16fff x4029acd3 1 x4029acd3 1}\n       {x42fa0000 xc064f38a x40516fff 1 x40516fff 1}\n       {x42fc0000 0 x407708e3 1 x407708e3 1}\n       {x42fe0000 x40848f1e x4081e40d 1 x4081e40d 1}\n       {x43000000 x4101e40d x408173f4 1 x408173f4 1}\n       {x43010000 x4143bb83 x408c0b05 1 x408c0b05 1}\n       {x43020000 x4186f789 x409a7ea3 1 x409a7ea3 1}\n       {x43030000 x41af1d13 x40a5d9ca 1 x40a5d9ca 1}\n       {x43040000 x41d9e46e x40ad1492 1 x40ad1492 1}\n       {x43050000 x4202d3ae x40c1dcd0 1 x40c1dcd0 1}\n       {x43060000 x421d696b x40edbc78 1 x40edbc78 1}\n       {x43070000 x423e42cc x40eccc38 1 x40eccc38 1}\n       {x43080000 x42589c79 x40dbf70c 1 x40dbf70c 1}\n       {x43090000 x4275408f x40e44694 1 x40e44694 1}\n       {x430a0000 x4288d70f x40db6c24 1 x40db6c24 1}\n       {x430b0000 x42960dcc x40d00318 1 x40d00318 1}\n       {x430c0000 x42a2d772 x40d301d8 1 x40d301d8 1}\n       {x430d0000 x42b06e07 x40e1f3d0 1 x40e1f3d0 1}\n       {x430e0000 x42bf15ec x40e87950 1 x40e87950 1}\n       {x430f0000 x42cd7d31 x40e2b340 1 x40e2b340 1}\n       {x43100000 x42db6c54 x40dcd840 1 x40dcd840 1}\n       {x43110000 x42e91839 x40d56a50 1 x40d56a50 1}\n       {x43120000 x42f6199e x40c59bd8 1 x40c59bd8 1}\n       {x43130000 x4300e5da x40b45ea0 1 x40b45ea0 1}\n       {x43140000 x430652b9 x40a1b7a0 1 x40a1b7a0 1}\n       {x43150000 x430b0154 x406a3300 1 x406a3300 1}\n       {x43160000 x430da451 x40080560 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke117 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44643dc3 x43fe5f5c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke118 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44643dc3 x43fe5f5c 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3cea921 0 1 x40cc20e0 1}\n       {x42580000 xc3cb5607 x40e611c0 1 x40e611c0 1}\n       {x425c0000 xc3c77893 x4105f1a0 1 x4105f1a0 1}\n       {x42600000 xc3c2f6ed x411f6eb0 1 x411f6eb0 1}\n       {x42640000 xc3bd81a8 x412f3c00 1 x412f3c00 1}\n       {x42680000 xc3b8032d x412c9370 1 x412c9370 1}\n       {x426c0000 xc3b2b871 x41238e60 1 x41238e60 1}\n       {x42700000 xc3adca47 x4125bc30 1 x4125bc30 1}\n       {x42740000 xc3a85cae x412971e0 1 x412971e0 1}\n       {x42780000 xc3a33329 x411c82f0 1 x411c82f0 1}\n       {x427c0000 xc39e947f x411f6ba0 1 x411f6ba0 1}\n       {x42800000 xc3993c6f x41244260 1 x41244260 1}\n       {x42820000 xc3945059 x410fe830 1 x410fe830 1}\n       {x42840000 xc3903dec x40f86280 1 x40f86280 1}\n       {x42860000 xc38c8d45 x40f6ae40 1 x40f6ae40 1}\n       {x42880000 xc388887a x41026d00 1 x41026d00 1}\n       {x428a0000 xc3846675 x40fbcbc0 1 x40fbcbc0 1}\n       {x428c0000 xc380aa1c x40e62f50 1 x40e62f50 1}\n       {x428e0000 xc37a69f5 x40e29360 1 x40e29360 1}\n       {x42900000 xc3732b02 x40f0be40 1 x40f0be40 1}\n       {x42920000 xc36b5e11 x40ea8e50 1 x40ea8e50 1}\n       {x42940000 xc364821d x40c7b260 1 x40c7b260 1}\n       {x42960000 xc35ee2eb x40a6f7e0 1 x40a6f7e0 1}\n       {x42980000 xc35a129f x409604a0 1 x409604a0 1}\n       {x429a0000 xc35582a1 x4089e700 1 x4089e700 1}\n       {x429c0000 xc351742f x40770b40 1 x40770b40 1}\n       {x429e0000 xc34dca47 x406b96e0 1 x406b96e0 1}\n       {x42a00000 xc34a1778 x407b2060 1 x407b2060 1}\n       {x42a20000 xc345f144 x40947b50 1 x40947b50 1}\n       {x42a40000 xc340cfc3 x40ba9860 1 x40ba9860 1}\n       {x42a60000 xc33a47be x40b26440 1 x40b26440 1}\n       {x42a80000 xc335a97f x40956560 1 x40956560 1}\n       {x42aa0000 xc330f168 x4092f680 1 x4092f680 1}\n       {x42ac0000 xc32c7a17 x407a8520 1 x407a8520 1}\n       {x42ae0000 xc3291d3f x403d5660 1 x403d5660 1}\n       {x42b00000 xc3268f64 x400dfa20 1 x400dfa20 1}\n       {x42b20000 xc324ad6e x3fe10bc0 1 x3fe10bc0 1}\n       {x42b40000 xc3230b35 x3fd77cc0 1 x3fd77cc0 1}\n       {x42b60000 xc3214f7b x3febe040 1 x3febe040 1}\n       {x42b80000 xc31f5bb4 x3ff016c0 1 x3ff016c0 1}\n       {x42ba0000 xc31d8f20 x3fe638c0 1 x3fe638c0 1}\n       {x42bc0000 xc31bc2d1 x3fea0bc0 1 x3fea0bc0 1}\n       {x42be0000 xc319e6f1 x3fe50d40 1 x3fe50d40 1}\n       {x42c00000 xc3182e9c x3fe29e00 1 x3fe29e00 1}\n       {x42c20000 xc3165c79 x404e8380 1 x404e8380 1}\n       {x42c40000 xc311ba80 x409ada90 1 x409ada90 1}\n       {x42c60000 xc30caed0 x40a3e3f0 1 x40a3e3f0 1}\n       {x42c80000 xc3077c41 x40a53e20 1 x40a53e20 1}\n       {x42ca0000 xc3025aee x40a67388 1 x40a67388 1}\n       {x42cc0000 xc2fa2a11 x40a4d0d0 1 x40a4d0d0 1}\n       {x42ce0000 xc2f01bc2 x4098f580 1 x4098f580 1}\n       {x42d00000 xc2e70b61 x4087a0f8 1 x4087a0f8 1}\n       {x42d20000 xc2df27a3 x40771cb0 1 x40771cb0 1}\n       {x42d40000 xc2d79996 x4074bed0 1 x4074bed0 1}\n       {x42d60000 xc2cfdbb6 x40702190 1 x40702190 1}\n       {x42d80000 xc2c8977d x4067c5c0 1 x4067c5c0 1}\n       {x42da0000 xc2c15f5a x406a5c50 1 x406a5c50 1}\n       {x42dc0000 xc2b9f1b8 x4075dea0 1 x4075dea0 1}\n       {x42de0000 xc2b20170 x40826400 1 x40826400 1}\n       {x42e00000 xc2a9a538 x40874398 1 x40874398 1}\n       {x42e20000 xc2a118fd x40883318 1 x40883318 1}\n       {x42e40000 xc2989ed5 x40896360 1 x40896360 1}\n       {x42e60000 xc28fec91 x408ed980 1 x408ed980 1}\n       {x42e80000 xc286c3a5 x4098b4b0 1 x4098b4b0 1}\n       {x42ea0000 xc279abf6 x40a3f458 1 x40a3f458 1}\n       {x42ec0000 xc2648a34 x40b7433c 1 x40b7433c 1}\n       {x42ee0000 xc24bdb27 x40c4cc8c 1 x40c4cc8c 1}\n       {x42f00000 xc2335711 x40d6b334 1 x40d6b334 1}\n       {x42f20000 xc2162e5a x40e8b6a8 1 x40e8b6a8 1}\n       {x42f40000 xc1f252ce x40f35aca 1 x40f35aca 1}\n       {x42f60000 xc1b2af4f x40f48952 1 x40f48952 1}\n       {x42f80000 xc1701c4a x40ee4dbb 1 x40ee4dbb 1}\n       {x42fa0000 xc0ee21c6 x40f01c4a 1 x40f01c4a 1}\n       {x42fc0000 0 x40f5b92c 1 x40f5b92c 1}\n       {x42fe0000 x40fd5093 x40f90e29 1 x40f90e29 1}\n       {x43000000 x41790e29 x40f04118 1 x40f04118 1}\n       {x43010000 x41b774b1 x40e6b19b 1 x40e6b19b 1}\n       {x43020000 x41efdfe2 x40dbfb36 1 x40dbfb36 1}\n       {x43030000 x4212b926 x40ce6918 1 x40ce6918 1}\n       {x43040000 x422b8a37 x40bce4f4 1 x40bce4f4 1}\n       {x43050000 x4241f263 x40afd658 1 x40afd658 1}\n       {x43060000 x42577fcd x40a4fd00 1 x40a4fd00 1}\n       {x43070000 x426b31a3 x4087ca60 1 x4087ca60 1}\n       {x43080000 x42797265 x405f8dd8 1 x405f8dd8 1}\n       {x43090000 x428391af x4051ee48 1 x4051ee48 1}\n       {x430a0000 x4289d817 x403dea60 1 x403dea60 1}\n       {x430b0000 x428f7055 x402af010 1 x402af010 1}\n       {x430c0000 x42948718 x401f42b0 1 x401f42b0 1}\n       {x430d0000 x42996480 x401b1150 1 x401b1150 1}\n       {x430e0000 x429e382d x40222be0 1 x40222be0 1}\n       {x430f0000 x42a3873e x40306590 1 x40306590 1}\n       {x43100000 x42a93e86 x40383320 1 x40383320 1}\n       {x43110000 x42af0a70 x403707c0 1 x403707c0 1}\n       {x43120000 x42b4af02 x40304d30 1 x40304d30 1}\n       {x43130000 x42ba0f43 x401a7af0 1 x401a7af0 1}\n       {x43140000 x42be56b1 x3fd60080 1 x3fd60080 1}\n       {x43150000 x42c0bf47 x3f3bcc80 1 x3f3bcc80 1}\n       {x43160000 x42c145e3 x3ce1d800 1 0 1}}\n      {{x42540000 x4487f54d 0 1 xc15dbf20 1}\n       {x42580000 x4486285b xc177ecc0 1 xc177ecc0 1}\n       {x425c0000 x4484159a xc186e1a0 1 xc186e1a0 1}\n       {x42600000 x4481f14e xc1881ac0 1 xc1881ac0 1}\n       {x42640000 x447fa988 xc1847fc0 1 xc1847fc0 1}\n       {x42680000 x447b9aa0 xc18745b0 1 xc18745b0 1}\n       {x426c0000 x4477352d xc18a5e80 1 xc18a5e80 1}\n       {x42700000 x4472f4b8 xc18f23e0 1 xc18f23e0 1}\n       {x42740000 x446e42ef xc19fec90 1 xc19fec90 1}\n       {x42780000 x4468f5ef xc1b0db60 1 xc1b0db60 1}\n       {x427c0000 x44633539 xc1c24320 1 xc1c24320 1}\n       {x42800000 x445cd1bd xc1cb5710 1 xc1cb5710 1}\n       {x42820000 x44567fc8 xc1c98df0 1 xc1c98df0 1}\n       {x42840000 x445038de xc1c95e50 1 xc1c95e50 1}\n       {x42860000 x4449e9e3 xc1cf49c0 1 xc1cf49c0 1}\n       {x42880000 x44434442 xc1d11d10 1 xc1d11d10 1}\n       {x428a0000 x443cd812 xc1ce56f0 1 xc1ce56f0 1}\n       {x428c0000 x44365ed3 xc1d21220 1 xc1d21220 1}\n       {x428e0000 x442fb6f0 xc1d730e0 1 xc1d730e0 1}\n       {x42900000 x4428ebc5 xc1de6410 1 xc1de6410 1}\n       {x42920000 x4421d0af xc1dc36e0 1 xc1dc36e0 1}\n       {x42940000 x441b2857 xc1d13530 1 xc1d13530 1}\n       {x42960000 x4414bd5c xc1c8a710 1 xc1c8a710 1}\n       {x42980000 x440e9de6 xc1bccdb0 1 xc1bccdb0 1}\n       {x429a0000 x4408f081 xc1b1ef80 1 xc1b1ef80 1}\n       {x429c0000 x44037eee xc1ac4020 1 xc1ac4020 1}\n       {x429e0000 x43fc58fe xc1aa02b0 1 xc1aa02b0 1}\n       {x42a00000 x43f1bd86 xc1aa47e0 1 xc1aa47e0 1}\n       {x42a20000 x43e71002 xc1a95988 1 xc1a95988 1}\n       {x42a40000 x43dc9255 xc1a18d78 1 xc1a18d78 1}\n       {x42a60000 x43d2de53 xc1a13808 1 xc1a13808 1}\n       {x42a80000 x43c86b54 xc1aab528 1 xc1aab528 1}\n       {x42aa0000 x43bd87ae xc1aa0480 1 xc1aa0480 1}\n       {x42ac0000 x43b32ac4 xc1a5e300 1 xc1a5e300 1}\n       {x42ae0000 x43a8cb4e xc1a43948 1 xc1a43948 1}\n       {x42b00000 x439ea39b xc1a39368 1 xc1a39368 1}\n       {x42b20000 x439458e1 xc1a581b0 1 xc1a581b0 1}\n       {x42b40000 x4389f365 xc1a78ed0 1 xc1a78ed0 1}\n       {x42b60000 x437ece0e xc1a9f71c 1 xc1a9f71c 1}\n       {x42b80000 x43696903 xc1a80774 1 xc1a80774 1}\n       {x42ba0000 x4354cc31 xc1a1779c 1 xc1a1779c 1}\n       {x42bc0000 x43410b1c xc1993c5c 1 xc1993c5c 1}\n       {x42be0000 x432e7d1a xc18e8e70 1 xc18e8e70 1}\n       {x42c00000 x431d6780 xc1837628 1 xc1837628 1}\n       {x42c20000 x430d9f90 xc1714ef8 1 xc1714ef8 1}\n       {x42c40000 x42fe7b42 xc1630358 1 xc1630358 1}\n       {x42c60000 x42e27e4a xc15e2204 1 xc15e2204 1}\n       {x42c80000 x42c6f2c1 xc15d96d4 1 xc15d96d4 1}\n       {x42ca0000 x42ab1895 xc15c6db4 1 xc15c6db4 1}\n       {x42cc0000 x428fd754 xc143af06 1 xc143af06 1}\n       {x42ce0000 x427459a7 xc1311c14 1 xc1311c14 1}\n       {x42d00000 x4247209e xc133b770 1 xc133b770 1}\n       {x42d20000 x421a7def xc12c1c92 1 xc12c1c92 1}\n       {x42d40000 x41e224aa xc11e47b5 1 xc11e47b5 1}\n       {x42d60000 x4196b429 xc10ed292 1 xc10ed292 1}\n       {x42d80000 x4126a431 xc1028148 1 xc1028148 1}\n       {x42da0000 x4021970a xc0f4bf70 1 xc0f4bf70 1}\n       {x42dc0000 xc09c367d xc0d97702 1 xc0d97702 1}\n       {x42de0000 xc1311140 xc0a7f77c 1 xc0a7f77c 1}\n       {x42e00000 xc17612ba xc05f42cc 1 xc05f42cc 1}\n       {x42e20000 xc1905953 xc00365ac 1 xc00365ac 1}\n       {x42e40000 xc19be2c8 xbf40d140 1 xbf40d140 1}\n       {x42e60000 xc19de4f6 -}\n       {x42e80000 xc196d061 x3f96d608 1 x3f96d608 1}\n       {x42ea0000 xc18b0a35 x3fb3e900 1 x3fb3e900 1}\n       {x42ec0000 xc1805341 x3fac6e04 1 x3fac6e04 1}\n       {x42ee0000 xc16af8e9 x3fcf9278 1 x3fcf9278 1}\n       {x42f00000 xc14cc1e4 x3fc2c064 1 x3fc2c064 1}\n       {x42f20000 xc13a48d0 x3fb6e658 1 x3fb6e658 1}\n       {x42f40000 xc11f084e x3fcabf00 1 x3fcabf00 1}\n       {x42f60000 xc1079910 x3fff81e2 1 x3fff81e2 1}\n       {x42f80000 xc0be4fab x401f76a6 1 x401f76a6 1}\n       {x42fa0000 xc05f76f3 x403e4fab 1 x403e4fab 1}\n       {x42fc0000 0 x40643fe5 1 x40643fe5 1}\n       {x42fe0000 x406908d7 x406aca73 1 x406aca73 1}\n       {x43000000 x40eaca73 x40711210 1 x40711210 1}\n       {x43010000 x4132cb3e x4082ce96 1 x4082ce96 1}\n       {x43020000 x417833cf x4090fb82 1 x4090fb82 1}\n       {x43030000 x41a1e360 x409c3f81 1 x409c3f81 1}\n       {x43040000 x41ca39a8 x40a473ba 1 x40a473ba 1}\n       {x43050000 x41f41d3d x40bd8fa0 1 x40bd8fa0 1}\n       {x43060000 x421480bc x40e9991e 1 x40e9991e 1}\n       {x43070000 x423474e6 x40e80234 1 x40e80234 1}\n       {x43080000 x424e8149 x40d4cd60 1 x40d4cd60 1}\n       {x43090000 x4269a83e x40d74d7c 1 x40d74d7c 1}\n       {x430a0000 x42822a54 x40ceecc0 1 x40ceecc0 1}\n       {x430b0000 x428eb1b7 x40c502a8 1 x40c502a8 1}\n       {x430c0000 x429acaa9 x40c78d90 1 x40c78d90 1}\n       {x430d0000 x42a7a369 x40d2bc30 1 x40d2bc30 1}\n       {x430e0000 x42b5222f x40d63310 1 x40d63310 1}\n       {x430f0000 x42c269cb x40d1a070 1 x40d1a070 1}\n       {x43100000 x42cf563d x40cdb3a8 1 x40cdb3a8 1}\n       {x43110000 x42dc2040 x40c773d8 1 x40c773d8 1}\n       {x43120000 x42e844b8 x40ba8650 1 x40ba8650 1}\n       {x43130000 x42f3710a x40aa25d8 1 x40aa25d8 1}\n       {x43140000 x42fd8973 x4096d540 1 x4096d540 1}\n       {x43150000 x430325d9 x4053c390 1 x4053c390 1}\n       {x43160000 x430562d6 x3fd9fa30 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke119 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44bd1b2b x4450e71b 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke120 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44bd1b2b x4450e71b 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc3a84fdc 0 1 x40dea120 1}\n       {x42580000 xc3a4b273 x40f8cc80 1 x40f8cc80 1}\n       {x425c0000 xc3a08978 x40e88ac0 1 x40e88ac0 1}\n       {x42600000 xc39d6e1d x40fef5a0 1 x40fef5a0 1}\n       {x42640000 xc39891cb x41173710 1 x41173710 1}\n       {x42680000 xc393faac x410b3940 1 x410b3940 1}\n       {x426c0000 xc38fde37 x410ef310 1 x410ef310 1}\n       {x42700000 xc38b0b7b x4118eae0 1 x4118eae0 1}\n       {x42740000 xc3864f89 x410d2b30 1 x410d2b30 1}\n       {x42780000 xc38238c8 x4104dcd8 1 x4104dcd8 1}\n       {x427c0000 xc37c0377 x41062b18 1 x41062b18 1}\n       {x42800000 xc373ac2d x41017070 1 x41017070 1}\n       {x42820000 xc36bd569 x40ef5680 1 x40ef5680 1}\n       {x42840000 xc364b6c5 x40d384f0 1 x40d384f0 1}\n       {x42860000 xc35e9d1a x40d7ee70 1 x40d7ee70 1}\n       {x42880000 xc35737de x40d9b160 1 x40d9b160 1}\n       {x428a0000 xc3510204 x40d5e9d0 1 x40d5e9d0 1}\n       {x428c0000 xc349d941 x40cbd690 1 x40cbd690 1}\n       {x428e0000 xc344449b x40b33e90 1 x40b33e90 1}\n       {x42900000 xc33ea558 x40d85c80 1 x40d85c80 1}\n       {x42920000 xc336bed3 x40e46a30 1 x40e46a30 1}\n       {x42940000 xc3305eb5 x40bc9710 1 x40bc9710 1}\n       {x42960000 xc32af562 x40a229c0 1 x40a229c0 1}\n       {x42980000 xc3263c19 x409bf480 1 x409bf480 1}\n       {x429a0000 xc321361a x408cafa0 1 x408cafa0 1}\n       {x429c0000 xc31d711f x406a22a0 1 x406a22a0 1}\n       {x429e0000 xc319e505 x4056b0c0 1 x4056b0c0 1}\n       {x42a00000 xc316bb99 x404aeea0 1 x404aeea0 1}\n       {x42a20000 xc3138d90 x40849a90 1 x40849a90 1}\n       {x42a40000 xc30e71f0 x408b54d0 1 x408b54d0 1}\n       {x42a60000 xc30ad843 x407a8c20 1 x407a8c20 1}\n       {x42a80000 xc3069d8f x40973280 1 x40973280 1}\n       {x42aa0000 xc301651b x4089baf8 1 x4089baf8 1}\n       {x42ac0000 xc2fc03bf x402b4600 1 x402b4600 1}\n       {x42ae0000 xc2f815d6 x3fd217c0 1 x3fd217c0 1}\n       {x42b00000 xc2f57301 -}\n       {x42b20000 xc2f5969a -}\n       {x42b40000 xc2f4ce27 -}\n       {x42b60000 xc2f50443 -}\n       {x42b80000 xc2f4d0f0 x3e8bba80 1 x3e8bba80 1}\n       {x42ba0000 xc2f3ecce x3eb7f480 1 x3eb7f480 1}\n       {x42bc0000 xc2f36107 x3dfc6c00 1 x3dfc6c00 1}\n       {x42be0000 xc2f34bfe -}\n       {x42c00000 xc2f3a830 xbe942f00 1 xbe942f00 1}\n       {x42c20000 xc2f4745c -}\n       {x42c40000 xc2ef9372 x401b85a0 1 x401b85a0 1}\n       {x42c60000 xc2eabc02 x40350640 1 x40350640 1}\n       {x42c80000 xc2e4430e x403fa530 1 x403fa530 1}\n       {x42ca0000 xc2dec1af x402c57f0 1 x402c57f0 1}\n       {x42cc0000 xc2d97d8f x40301ed0 1 x40301ed0 1}\n       {x42ce0000 xc2d3bfc2 x402a6850 1 x402a6850 1}\n       {x42d00000 xc2ced70a x401e6a90 1 x401e6a90 1}\n       {x42d20000 xc2c9d919 x400ea770 1 x400ea770 1}\n       {x42d40000 xc2c5ec93 x400b8b80 1 x400b8b80 1}\n       {x42d60000 xc2c12061 x4021a7c0 1 x4021a7c0 1}\n       {x42d80000 xc2bbd217 x4034b1e0 1 x4034b1e0 1}\n       {x42da0000 xc2b5d543 x404c1050 1 x404c1050 1}\n       {x42dc0000 xc2af1112 x405ef860 1 x405ef860 1}\n       {x42de0000 xc2a7e5bd x40772c10 1 x40772c10 1}\n       {x42e00000 xc29f9e51 x4085d9e0 1 x4085d9e0 1}\n       {x42e20000 xc2972a81 x408ab188 1 x408ab188 1}\n       {x42e40000 xc28e4820 x4090f7a8 1 x4090f7a8 1}\n       {x42e60000 xc2850b8c x4098a538 1 x4098a538 1}\n       {x42e80000 xc27666f2 x40982ef8 1 x40982ef8 1}\n       {x42ea0000 xc2640b5a x40a36524 1 x40a36524 1}\n       {x42ec0000 xc24d8da9 x40b5a3b8 1 x40b5a3b8 1}\n       {x42ee0000 xc236a26c x40b64ca4 1 x40b64ca4 1}\n       {x42f00000 xc21ffa80 x40c7542c 1 x40c7542c 1}\n       {x42f20000 xc204cd61 x40d28c4e 1 x40d28c4e 1}\n       {x42f40000 xc1d6aed9 x40daa652 1 x40daa652 1}\n       {x42f60000 xc19c4799 x40da7f43 1 x40da7f43 1}\n       {x42f80000 xc152de6f x40d66e28 1 x40d66e28 1}\n       {x42fa0000 xc0c44215 x40d2de6f 1 x40d2de6f 1}\n       {x42fc0000 0 x40d1105c 1 x40d1105c 1}\n       {x42fe0000 x40dddea4 x40d40b0b 1 x40d40b0b 1}\n       {x43000000 x41540b0b x40c4223a 1 x40c4223a 1}\n       {x43010000 x419988c6 x40b74553 1 x40b74553 1}\n       {x43020000 x41c5a82f x40a8cde4 1 x40a8cde4 1}\n       {x43030000 x41edefb8 x409b8a52 1 x409b8a52 1}\n       {x43040000 x4209b6ac x408d44f0 1 x408d44f0 1}\n       {x43050000 x421a4918 x40769150 1 x40769150 1}\n       {x43060000 x422888d6 x40502348 1 x40502348 1}\n       {x43070000 x42344d81 x4034b4e8 1 x4034b4e8 1}\n       {x43080000 x423f1f73 x40213b78 1 x40213b78 1}\n       {x43090000 x424874f0 x40179260 1 x40179260 1}\n       {x430a0000 x425211bf x402316c0 1 x402316c0 1}\n       {x430b0000 x425cd7c8 x401ede10 1 x401ede10 1}\n       {x430c0000 x4265ed81 x400dee50 1 x400dee50 1}\n       {x430d0000 x426e9592 x400f65b0 1 x400f65b0 1}\n       {x430e0000 x4277da37 x4023e860 1 x4023e860 1}\n       {x430f0000 x4281894f x40289ce8 1 x40289ce8 1}\n       {x43100000 x428676ea x40207a90 1 x40207a90 1}\n       {x43110000 x428b90f8 x40249040 1 x40249040 1}\n       {x43120000 x4290bfee x40191500 1 x40191500 1}\n       {x43130000 x42952248 x40098630 1 x40098630 1}\n       {x43140000 x42995851 x3fbda6e0 1 x3fbda6e0 1}\n       {x43150000 x429b0f7f -}\n       {x43160000 x429aaeff xbe90c000 1 0 1}}\n      {{x42540000 x44647d33 0 1 xc1172750 1}\n       {x42580000 x44622bb9 xc10ecce0 1 xc10ecce0 1}\n       {x425c0000 x446006cc xc112c920 1 xc112c920 1}\n       {x42600000 x445d9570 xc14aea80 1 xc14aea80 1}\n       {x42640000 x4459af78 xc17e9e00 1 xc17e9e00 1}\n       {x42680000 x4455a080 xc1847a10 1 xc1847a10 1}\n       {x426c0000 x445167d7 xc17d2ac0 1 xc17d2ac0 1}\n       {x42700000 x444db72a xc1712460 1 xc1712460 1}\n       {x42740000 x4449deb4 xc1770000 1 xc1770000 1}\n       {x42780000 x4445ff2a xc17fe940 1 xc17fe940 1}\n       {x427c0000 x4441df6a xc18c4cc0 1 xc18c4cc0 1}\n       {x42800000 x443d3a5e xc195de40 1 xc195de40 1}\n       {x42820000 x44388186 xc1980fe0 1 xc1980fe0 1}\n       {x42840000 x4433b960 xc19ca530 1 xc19ca530 1}\n       {x42860000 x442eb733 xc1a2e1b0 1 xc1a2e1b0 1}\n       {x42880000 x44298b45 xc19bf510 1 xc19bf510 1}\n       {x428a0000 x4424f7e2 xc19b85b0 1 xc19b85b0 1}\n       {x428c0000 x441fd2ea xc19a32c0 1 xc19a32c0 1}\n       {x428e0000 x441b54b6 xc1930670 1 xc1930670 1}\n       {x42900000 x4416a283 xc1a67f70 1 xc1a67f70 1}\n       {x42920000 x4410ecbf xc1b39ca0 1 xc1b39ca0 1}\n       {x42940000 x440b68b9 xc1a65e90 1 xc1a65e90 1}\n       {x42960000 x440686d6 xc197b550 1 xc197b550 1}\n       {x42980000 x4401ed64 xc189ef48 1 xc189ef48 1}\n       {x429a0000 x43fbcfc3 xc17aa5d0 1 xc17aa5d0 1}\n       {x429c0000 x43f4306b xc16be900 1 xc16be900 1}\n       {x429e0000 x43ed1133 xc16b0ab0 1 xc16b0ab0 1}\n       {x42a00000 x43e57fc0 xc1831d18 1 xc1831d18 1}\n       {x42a20000 x43dcad90 xc18fd400 1 xc18fd400 1}\n       {x42a40000 x43d38540 xc18e3168 1 xc18e3168 1}\n       {x42a60000 x43cae763 xc1918bb0 1 xc1918bb0 1}\n       {x42a80000 x43c153ca xc19b6df0 1 xc19b6df0 1}\n       {x42aa0000 x43b779a5 xc192b768 1 xc192b768 1}\n       {x42ac0000 x43aefcdd xc185b230 1 xc185b230 1}\n       {x42ae0000 x43a6c35f xc1849618 1 xc1849618 1}\n       {x42b00000 x439e6a1a xc182ae70 1 xc182ae70 1}\n       {x42b20000 x43966d91 xc18696a8 1 xc18696a8 1}\n       {x42b40000 x438d9745 xc1900650 1 xc1900650 1}\n       {x42b60000 x43846cc7 xc192295c 1 xc192295c 1}\n       {x42b80000 x4376a433 xc192bcb8 1 xc192bcb8 1}\n       {x42ba0000 x43642a60 xc18f1d08 1 xc18f1d08 1}\n       {x42bc0000 x4352dcf1 xc182a04c 1 xc182a04c 1}\n       {x42be0000 x4343824d xc163f2c8 1 xc163f2c8 1}\n       {x42c00000 x43365e98 xc145cf90 1 xc145cf90 1}\n       {x42c20000 x432ac85b xc1300198 1 xc1300198 1}\n       {x42c40000 x43205e65 xc12d4758 1 xc12d4758 1}\n       {x42c60000 x43151f70 xc13c69a0 1 xc13c69a0 1}\n       {x42c80000 x4308d131 xc13be3b8 1 xc13be3b8 1}\n       {x42ca0000 x42fb45f2 xc12ce160 1 xc12ce160 1}\n       {x42cc0000 x42e66a0a xc1305e58 1 xc1305e58 1}\n       {x42ce0000 x42cf2e5c xc13161e0 1 xc13161e0 1}\n       {x42d00000 x42ba1192 xc11b8300 1 xc11b8300 1}\n       {x42d20000 x42a84d9c xc10585f0 1 xc10585f0 1}\n       {x42d40000 x4298b016 xc0f8df30 1 xc0f8df30 1}\n       {x42d60000 x428931b6 xc0efb23c 1 xc0efb23c 1}\n       {x42d80000 x4275739d xc0ea0498 1 xc0ea0498 1}\n       {x42da0000 x4257e246 xc0eec88c 1 xc0eec88c 1}\n       {x42dc0000 x4239c17a xc0ec35c4 1 xc0ec35c4 1}\n       {x42de0000 x421cd4d5 xc0d3c1fc 1 xc0d3c1fc 1}\n       {x42e00000 x4204d0fb xc0b2795c 1 xc0b2795c 1}\n       {x42e20000 x41e06cfc xc09812be 1 xc09812be 1}\n       {x42e40000 x41bd9897 xc0815250 1 xc0815250 1}\n       {x42e60000 x419fc3d4 xc04b2e78 1 xc04b2e78 1}\n       {x42e80000 x418accf9 xc013c79a 1 xc013c79a 1}\n       {x42ea0000 x4175a3db xc010dc74 1 xc010dc74 1}\n       {x42ec0000 x414d2bb8 xc0144f4a 1 xc0144f4a 1}\n       {x42ee0000 x412b7c36 xbff79c20 1 xbff79c20 1}\n       {x42f00000 x410f44b0 xc001f0bc 1 xc001f0bc 1}\n       {x42f20000 x40d507b0 xc0043b49 1 xc0043b49 1}\n       {x42f40000 x409a4e17 xbff43181 1 xbff43181 1}\n       {x42f60000 x4035dddf xbfbec50d 1 xbfbec50d 1}\n       {x42f80000 x3febae42 xbf8ec282 1 xbf8ec282 1}\n       {x42fa0000 x3f1c6d75 xbf6bae42 1 xbf6bae42 1}\n       {x42fc0000 0 xbf0ba33e 1 xbf0ba33e 1}\n       {x42fe0000 xbef5b210 xbee094ac 1 xbee094ac 1}\n       {x43000000 xbf6094ac -}\n       {x43010000 xbf340f89 x3ea8e710 1 x3ea8e710 1}\n       {x43020000 xbe5eb66e x3f5982fa 1 x3f5982fa 1}\n       {x43030000 x3f7ef66c x3fb17cfa 1 x3fb17cfa 1}\n       {x43040000 x40239193 x3fbd09f2 1 x3fbd09f2 1}\n       {x43050000 x407cc78d x3ff04479 1 x3ff04479 1}\n       {x43060000 x40c9eb06 x3ffc22ab 1 x3ffc22ab 1}\n       {x43070000 x40fc751c x4000bf76 1 x4000bf76 1}\n       {x43080000 x4125553e x401d2c4e 1 x401d2c4e 1}\n       {x43090000 x414cd0b5 x401a6b7e 1 x401a6b7e 1}\n       {x430a0000 x41728afd x40078872 1 x40078872 1}\n       {x430b0000 x41884a77 x3feb454c 1 x3feb454c 1}\n       {x430c0000 x4196ae28 x400060cc 1 x400060cc 1}\n       {x430d0000 x41a862aa x4005d620 1 x4005d620 1}\n       {x430e0000 x41b823b0 x3fec8348 1 x3fec8348 1}\n       {x430f0000 x41c5f313 x3ffcd510 1 x3ffcd510 1}\n       {x43100000 x41d7be52 x40052d18 1 x40052d18 1}\n       {x43110000 x41e73e59 x400c2704 1 x400c2704 1}\n       {x43120000 x41fac813 x40021224 1 x40021224 1}\n       {x43130000 x4203e171 x3fa0fbd8 1 x3fa0fbd8 1}\n       {x43140000 x420773c7 x3f2bdb20 1 x3f2bdb20 1}\n       {x43150000 x4209404a -}\n       {x43160000 x4206b8f4 xbf72c040 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke121 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44cef960 x441d8396 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke122 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x44cef960 x441d8396 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc34802f8 0 1 x40dc2a80 1}\n       {x42580000 xc340db52 x40f68940 1 x40f68940 1}\n       {x425c0000 xc3389a64 x40e65040 1 x40e65040 1}\n       {x42600000 xc332764e x40c60850 1 x40c60850 1}\n       {x42640000 xc32c39df x40d96d60 1 x40d96d60 1}\n       {x42680000 xc324df78 x40df1da0 1 x40df1da0 1}\n       {x426c0000 xc31e4805 x40cf6770 1 x40cf6770 1}\n       {x42700000 xc317e901 x40cb0410 1 x40cb0410 1}\n       {x42740000 xc31197c4 x40be6fc0 1 x40be6fc0 1}\n       {x42780000 xc30c0205 x40c70c70 1 x40c70c70 1}\n       {x427c0000 xc30526fd x40de4368 1 x40de4368 1}\n       {x42800000 xc2fc3b9d x40db3cf0 1 x40db3cf0 1}\n       {x42820000 xc2eee65c x40bf9088 1 x40bf9088 1}\n       {x42840000 xc2e4498c x40a1e200 1 x40a1e200 1}\n       {x42860000 xc2daaa1c x409ba2d0 1 x409ba2d0 1}\n       {x42880000 xc2d0d532 x409d7628 1 x409d7628 1}\n       {x428a0000 xc2c6fb57 x4099b7e0 1 x4099b7e0 1}\n       {x428c0000 xc2bd9e36 x40986750 1 x40986750 1}\n       {x428e0000 xc2b3ee6d x409e6aa8 1 x409e6aa8 1}\n       {x42900000 xc2a9d0e1 x40a73d38 1 x40a73d38 1}\n       {x42920000 xc29f06c6 x40a4cd38 1 x40a4cd38 1}\n       {x42940000 xc295373a x409657f0 1 x409657f0 1}\n       {x42960000 xc28c3bc8 x408ee780 1 x408ee780 1}\n       {x42980000 xc2835a4a x40886b4c 1 x40886b4c 1}\n       {x429a0000 xc2765cbd x4077f158 1 x4077f158 1}\n       {x429c0000 xc267b669 x40313778 1 x40313778 1}\n       {x429e0000 xc26035ce x3fc8fe70 1 x3fc8fe70 1}\n       {x42a00000 xc25b2682 x3fdbde40 1 x3fdbde40 1}\n       {x42a20000 xc25277ea x400230d8 1 x400230d8 1}\n       {x42a40000 xc24ae067 x3ff4c110 1 x3ff4c110 1}\n       {x42a60000 xc2432bd9 x3fd22dd0 1 x3fd22dd0 1}\n       {x42a80000 xc23dbd8a x3fb663c0 1 x3fb663c0 1}\n       {x42aa0000 xc237c59d x3f954160 1 x3f954160 1}\n       {x42ac0000 xc2346974 -}\n       {x42ae0000 xc234e0c3 xbeb2f680 1 xbeb2f680 1}\n       {x42b00000 xc238b245 xbf88f150 1 xbf88f150 1}\n       {x42b20000 xc23d6fd8 xbfa5f4b0 1 xbfa5f4b0 1}\n       {x42b40000 xc2431190 xbfc273f0 1 xbfc273f0 1}\n       {x42b60000 xc2499717 xbfc24bb0 1 xbfc24bb0 1}\n       {x42b80000 xc24f364b xbfb93220 1 xbfb93220 1}\n       {x42ba0000 xc2552a39 xbfc069a0 1 xbfc069a0 1}\n       {x42bc0000 xc25b3ce5 xbfc50010 1 xbfc50010 1}\n       {x42be0000 xc2617a3a xbfc6fa80 1 xbfc6fa80 1}\n       {x42c00000 xc267ac8d xbfe3ec00 1 xbfe3ec00 1}\n       {x42c20000 xc26fb8fa -}\n       {x42c40000 xc26d0c30 x3f405040 1 x3f405040 1}\n       {x42c60000 xc269b678 x3f63c780 1 x3f63c780 1}\n       {x42c80000 xc265edf4 x3f702ea0 1 x3f702ea0 1}\n       {x42ca0000 xc2623503 x3f7728c0 1 x3f7728c0 1}\n       {x42cc0000 xc25e34ae x3f940330 1 x3f940330 1}\n       {x42ce0000 xc258f4d0 x3f84c710 1 x3f84c710 1}\n       {x42d00000 xc255e83d x3f2e8b00 1 x3f2e8b00 1}\n       {x42d20000 xc2538078 x3f160fc0 1 x3f160fc0 1}\n       {x42d40000 xc25137bf x3f2a2fc0 1 x3f2a2fc0 1}\n       {x42d60000 xc24e2efa x3cfdf800 1 x3cfdf800 1}\n       {x42d80000 xc24e2465 x3cfdf800 1 x3cfdf800 1}\n       {x42da0000 xc24d307d x3eeda2c0 1 x3eeda2c0 1}\n       {x42dc0000 xc24a6dda x3f5f6440 1 x3f5f6440 1}\n       {x42de0000 xc246355b x3fa60f10 1 x3fa60f10 1}\n       {x42e00000 xc2400ce9 x3fd27360 1 x3fd27360 1}\n       {x42e20000 xc2390e25 x3ffe8430 1 x3ffe8430 1}\n       {x42e40000 xc23024a6 x400d4a18 1 x400d4a18 1}\n       {x42e60000 xc22764e2 x40157480 1 x40157480 1}\n       {x42e80000 xc21d7616 x401a5ff8 1 x401a5ff8 1}\n       {x42ea0000 xc21418e3 x402ae120 1 x402ae120 1}\n       {x42ec0000 xc20819f2 x404a53c4 1 x404a53c4 1}\n       {x42ee0000 xc1f59cd5 x405deb7c 1 x405deb7c 1}\n       {x42f00000 xc1d8b905 x407d70a0 1 x407d70a0 1}\n       {x42f20000 xc1b640ad x40839d78 1 x40839d78 1}\n       {x42f40000 xc196ea49 x40880502 1 x40880502 1}\n       {x42f60000 xc1647c58 x4092aa9d 1 x4092aa9d 1}\n       {x42f80000 xc11b29f5 x4091a5e0 1 x4091a5e0 1}\n       {x42fa0000 xc0a5acef x409b29f5 1 x409b29f5 1}\n       {x42fc0000 0 x40a93002 1 x40a93002 1}\n       {x42fe0000 x40acb314 x40a482e2 1 x40a482e2 1}\n       {x43000000 x412482e2 x409d812c 1 x409d812c 1}\n       {x43010000 x4173dab6 x4099ba5a 1 x4099ba5a 1}\n       {x43020000 x419f1e9e x408ffa9a 1 x408ffa9a 1}\n       {x43030000 x41c1eaa8 x4084345e 1 x4084345e 1}\n       {x43040000 x41e138cd x406cca8c 1 x406cca8c 1}\n       {x43050000 x41fd1d4b x4053fd5c 1 x4053fd5c 1}\n       {x43060000 x420b1c12 x402b13fc 1 x402b13fc 1}\n       {x43070000 x4213f125 x40069700 1 x40069700 1}\n       {x43080000 x421beef2 x3fef9940 1 x3fef9940 1}\n       {x43090000 x4222eab9 x3fd6d9f0 1 x3fd6d9f0 1}\n       {x430a0000 x42295c91 x3fbea4d0 1 x3fbea4d0 1}\n       {x430b0000 x422ed506 x3fc05760 1 x3fc05760 1}\n       {x430c0000 x42356207 x3fd24de0 1 x3fd24de0 1}\n       {x430d0000 x423bf9e4 x3fbb5ca0 1 x3fbb5ca0 1}\n       {x430e0000 x424117d1 x3fd5dc70 1 x3fd5dc70 1}\n       {x430f0000 x424957ab x3fff7d20 1 x3fff7d20 1}\n       {x43100000 x42510fa3 x40020ce8 1 x40020ce8 1}\n       {x43110000 x42599948 x40097550 1 x40097550 1}\n       {x43120000 x42623e4d x3fff51c0 1 x3fff51c0 1}\n       {x43130000 x42698e64 x3fc35ce0 1 x3fc35ce0 1}\n       {x43140000 x426e741b x3f76e680 1 x3f76e680 1}\n       {x43150000 x42714598 -}\n       {x43160000 x426e54e3 xbf8d21f0 1 0 1}}\n      {{x42540000 x444ca886 0 1 xc116f840 1}\n       {x42580000 x444a568f xc10f88c0 1 xc10f88c0 1}\n       {x425c0000 x44482c40 xc112f480 1 xc112f480 1}\n       {x42600000 x4445beeb xc1336d20 1 xc1336d20 1}\n       {x42640000 x444290d7 xc1598540 1 xc1598540 1}\n       {x42680000 x443ef2c1 xc16df8e0 1 xc16df8e0 1}\n       {x426c0000 x443b2110 xc15fa5e0 1 xc15fa5e0 1}\n       {x42700000 x4437f592 xc14db440 1 xc14db440 1}\n       {x42740000 x4434b36e xc1583cc0 1 xc1583cc0 1}\n       {x42780000 x443133ac xc16bdd00 1 xc16bdd00 1}\n       {x427c0000 x442d5486 xc17d2540 1 xc17d2540 1}\n       {x42800000 x44294a82 xc18210b0 1 xc18210b0 1}\n       {x42820000 x4425337b xc182f4b0 1 xc182f4b0 1}\n       {x42840000 x44211b37 xc1828000 1 xc1828000 1}\n       {x42860000 x441d0b7b xc17f2580 1 xc17f2580 1}\n       {x42880000 x4419220b xc1774340 1 xc1774340 1}\n       {x428a0000 x44155161 xc1763340 1 xc1763340 1}\n       {x428c0000 x44117071 xc1816350 1 xc1816350 1}\n       {x428e0000 x440d3b2c xc189f7e0 1 xc189f7e0 1}\n       {x42900000 x4408d0f3 xc18f9100 1 xc18f9100 1}\n       {x42920000 x4404421c xc191d6b8 1 xc191d6b8 1}\n       {x42940000 x43ff670f xc18f4170 1 xc18f4170 1}\n       {x42960000 x43f69c0a xc18ae2e8 1 xc18ae2e8 1}\n       {x42980000 x43ee0ab2 xc17f6cd0 1 xc17f6cd0 1}\n       {x429a0000 x43e6a53d xc1698a20 1 xc1698a20 1}\n       {x429c0000 x43df7210 xc1619ed0 1 xc1619ed0 1}\n       {x429e0000 x43d88b50 xc16034b0 1 xc16034b0 1}\n       {x42a00000 x43d16ec5 xc16ef130 1 xc16ef130 1}\n       {x42a20000 x43c99c3d xc1782820 1 xc1782820 1}\n       {x42a40000 x43c1ec43 xc17a3bf0 1 xc17a3bf0 1}\n       {x42a60000 x43b9f87e xc17fdc60 1 xc17fdc60 1}\n       {x42a80000 x43b1ee7d xc17f3660 1 xc17f3660 1}\n       {x42aa0000 x43aa0518 xc17836f0 1 xc17836f0 1}\n       {x42ac0000 x43a26b0e xc16ccaf0 1 xc16ccaf0 1}\n       {x42ae0000 x439b3869 xc167a270 1 xc167a270 1}\n       {x42b00000 x4393f0e7 xc169d6d0 1 xc169d6d0 1}\n       {x42b20000 x438c9afc xc16ae9e0 1 xc16ae9e0 1}\n       {x42b40000 x43854249 xc16e3108 1 xc16e3108 1}\n       {x42b60000 x437b6fd7 xc174d6b0 1 xc174d6b0 1}\n       {x42b80000 x436be9bc xc17822a8 1 xc17822a8 1}\n       {x42ba0000 x435c6b82 xc1728eb8 1 xc1728eb8 1}\n       {x42bc0000 x434d97e5 xc163ebd0 1 xc163ebd0 1}\n       {x42be0000 x433fee08 xc14a83a8 1 xc14a83a8 1}\n       {x42c00000 x43344770 xc1376778 1 xc1376778 1}\n       {x42c20000 x43290119 xc1241980 1 xc1241980 1}\n       {x42c40000 x431fc440 xc1154720 1 xc1154720 1}\n       {x42c60000 x43165835 xc118d028 1 xc118d028 1}\n       {x42c80000 x430caa3b xc114efd8 1 xc114efd8 1}\n       {x42ca0000 x4303ba3a xc112c568 1 xc112c568 1}\n       {x42cc0000 x42f4a31c xc111bdd4 1 xc111bdd4 1}\n       {x42ce0000 x42e304ff xc10966dc 1 xc10966dc 1}\n       {x42d00000 x42d24965 xc0fc3340 1 xc0fc3340 1}\n       {x42d20000 x42c37e97 xc0e55f70 1 xc0e55f70 1}\n       {x42d40000 x42b59d77 xc0d631d0 1 xc0d631d0 1}\n       {x42d60000 x42a8b85d xc0c3d2f0 1 xc0c3d2f0 1}\n       {x42d80000 x429d2319 xc0bc26c0 1 xc0bc26c0 1}\n       {x42da0000 x42913385 xc0cd15f8 1 xc0cd15f8 1}\n       {x42dc0000 x4283805a xc0d52fb0 1 xc0d52fb0 1}\n       {x42de0000 x426d1b1e xc0c3ba4c 1 xc0c3ba4c 1}\n       {x42e00000 x42561221 xc0aa3560 1 xc0aa3560 1}\n       {x42e20000 x42428dc6 xc0982f6c 1 xc0982f6c 1}\n       {x42e40000 x42300646 xc0935654 1 xc0935654 1}\n       {x42e60000 x421db831 xc086ab34 1 xc086ab34 1}\n       {x42e80000 x420e5b79 xc0655aa0 1 xc0655aa0 1}\n       {x42ea0000 x42010cdd xc05dd974 1 xc05dd974 1}\n       {x42ec0000 x41e54095 xc065d770 1 xc065d770 1}\n       {x42ee0000 x41c8a3de xc05c0e6c 1 xc05c0e6c 1}\n       {x42f00000 x41ae3cfa xc075cfec 1 xc075cfec 1}\n       {x42f20000 x418b2fe3 xc07b7b3c 1 xc07b7b3c 1}\n       {x42f40000 x415ebc56 xc069b7be 1 xc069b7be 1}\n       {x42f60000 x412183e7 xc07981f2 1 xc07981f2 1}\n       {x42f80000 x40c3f6ba xc07303ea 1 xc07303ea 1}\n       {x42fa0000 x402007c8 xc043f6ba 1 xc043f6ba 1}\n       {x42fc0000 0 xc02a4fbe 1 xc02a4fbe 1}\n       {x42fe0000 xc03497b4 xc025697d 1 xc025697d 1}\n       {x43000000 xc0a5697d xc0212a30 1 xc0212a30 1}\n       {x43010000 xc0fb760a xc012d5c3 1 xc012d5c3 1}\n       {x43020000 xc11c1fa0 xbfd9ca98 1 xbfd9ca98 1}\n       {x43030000 xc1342dab xbfa149a8 1 xbfa149a8 1}\n       {x43040000 xc144720a xbf6e50d0 1 xbf6e50d0 1}\n       {x43050000 xc151f7c5 xbf4d3138 1 xbf4d3138 1}\n       {x43060000 xc15e1831 xbf3a0b88 1 xbf3a0b88 1}\n       {x43070000 xc1693936 xbf1e1290 1 xbf1e1290 1}\n       {x43080000 xc171da83 -}\n       {x43090000 xc166b3ba -}\n       {x430a0000 xc1716ebb xbf223298 1 xbf223298 1}\n       {x430b0000 xc17afa0d -}\n       {x430c0000 xc1757aba x3e9a3800 1 x3e9a3800 1}\n       {x430d0000 xc171568d -}\n       {x430e0000 xc171963b -}\n       {x430f0000 xc16e983f -}\n       {x43100000 xc171db83 -}\n       {x43110000 xc167e8cd x3f20b5e0 1 x3f20b5e0 1}\n       {x43120000 xc15dc4c7 x3f164420 1 x3f164420 1}\n       {x43130000 xc1552049 -}\n       {x43140000 xc15a9ef9 xbf18a118 1 xbf18a118 1}\n       {x43150000 xc168346c xbffcdadc 1 xbffcdadc 1}\n       {x43160000 xc18cead8 xc06a90e1 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke123 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42036e98 x4439f927 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42fc0000 0}}\n      {{x42fc0000 0}}\n      {{x429e0000 0 0 1 x40082b93 1}\n       {x42fc0000 x42c80000 x40082b93 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}\n    {cubiccurve Stroke124 262656 bezier\n     {cc\n      {f 8224}\n      {p\n       {0 0 1}\n       {x42036e98 x4439f927 1}\n       {0 0 1}}}\n     {t\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x42540000 xc32424e8 0 1 x4080eaf8 1}\n       {x42580000 xc31fcdf6 x409ec4d0 1 x409ec4d0 1}\n       {x425c0000 xc31a389b x40c56a50 1 x40c56a50 1}\n       {x42600000 xc3137751 x40d488c0 1 x40d488c0 1}\n       {x42640000 xc30cf00f x40cd9180 1 x40cd9180 1}\n       {x42680000 xc3069e39 x40cb9e60 1 x40cb9e60 1}\n       {x426c0000 xc3003629 x40ccdc20 1 x40ccdc20 1}\n       {x42700000 xc2f3a0ee x40d07938 1 x40d07938 1}\n       {x42740000 xc2e65d2b x40e1a3c0 1 x40e1a3c0 1}\n       {x42780000 xc2d76c76 x40ed7490 1 x40ed7490 1}\n       {x427c0000 xc2c8ae99 x40f883e0 1 x40f883e0 1}\n       {x42800000 xc2b85bfa x40fdcfd0 1 x40fdcfd0 1}\n       {x42820000 xc2a8f49f x40f0adb8 1 x40f0adb8 1}\n       {x42840000 xc29a4643 x40e9da30 1 x40e9da30 1}\n       {x42860000 xc28bb959 x40c6cb38 1 x40c6cb38 1}\n       {x42880000 xc2816cdc x40cfa96c 1 x40cfa96c 1}\n       {x428a0000 xc2638857 x40bb7110 1 x40bb7110 1}\n       {x428c0000 xc253fd74 x406ee5a0 1 x406ee5a0 1}\n       {x428e0000 xc245aba3 x4071a7a8 1 x4071a7a8 1}\n       {x42900000 xc235c87f x40361928 1 x40361928 1}\n       {x42920000 xc22ee87e x3f758a40 1 x3f758a40 1}\n       {x42940000 xc22da11b x3eb05300 1 x3eb05300 1}\n       {x42960000 xc22c2732 x3f08ee40 1 x3f08ee40 1}\n       {x42980000 xc22959a9 x3fad7830 1 x3fad7830 1}\n       {x429a0000 xc2214faf x3fa8d630 1 x3fa8d630 1}\n       {x429c0000 xc21ecc46 -}\n       {x429e0000 xc22171d3 xbf0e94a0 1 xbf0e94a0 1}\n       {x42a00000 xc22340eb xbca68000 1 xbca68000 1}\n       {x42a20000 xc22347db -}\n       {x42a40000 xc222df79 x3d7bfa00 1 x3d7bfa00 1}\n       {x42a60000 xc222c9de -}\n       {x42a80000 xc2233cfb xbe2fbb80 1 xbe2fbb80 1}\n       {x42aa0000 xc2242955 xbea15ac0 1 xbea15ac0 1}\n       {x42ac0000 xc225c266 xbec24080 1 xbec24080 1}\n       {x42ae0000 xc2273257 xbf2551c0 1 xbf2551c0 1}\n       {x42b00000 xc22aecf4 xbf92dbc0 1 xbf92dbc0 1}\n       {x42b20000 xc2306013 xbfb5f7e0 1 xbfb5f7e0 1}\n       {x42b40000 xc2364c72 xbfb5b2b0 1 xbfb5b2b0 1}\n       {x42b60000 xc23bbb3e xbfa9ddf0 1 xbfa9ddf0 1}\n       {x42b80000 xc240ea51 xbfb75150 1 xbfb75150 1}\n       {x42ba0000 xc2473053 xbfd1a060 1 xbfd1a060 1}\n       {x42bc0000 xc24e0457 xbfd02dc0 1 xbfd02dc0 1}\n       {x42be0000 xc254332f xbfc30f00 1 xbfc30f00 1}\n       {x42c00000 xc25a3547 xbfeeba90 1 xbfeeba90 1}\n       {x42c20000 xc2631ed8 xbfdd4360 1 xbfdd4360 1}\n       {x42c40000 xc268097d xbf3f7600 1 xbf3f7600 1}\n       {x42c60000 xc2691a88 xbebbe940 1 xbebbe940 1}\n       {x42c80000 xc26af922 -}\n       {x42ca0000 xc266d0f9 x3f935140 1 x3f935140 1}\n       {x42cc0000 xc261c40e x3f7ef8c0 1 x3f7ef8c0 1}\n       {x42ce0000 xc25ed933 x3f2fc720 1 x3f2fc720 1}\n       {x42d00000 xc25c45d5 x3f042760 1 x3f042760 1}\n       {x42d20000 xc25ab7f8 x3ed3a700 1 x3ed3a700 1}\n       {x42d40000 xc258f739 x3edcc540 1 x3edcc540 1}\n       {x42d60000 xc25744e3 x3e90dac0 1 x3e90dac0 1}\n       {x42d80000 xc256b3ce x3ec86d40 1 x3ec86d40 1}\n       {x42da0000 xc254232e x3f2031a0 1 x3f2031a0 1}\n       {x42dc0000 xc251b241 x3f6be400 1 x3f6be400 1}\n       {x42de0000 xc24cc40e x3f9fb3e0 1 x3f9fb3e0 1}\n       {x42e00000 xc247b703 x3f97abc0 1 x3f97abc0 1}\n       {x42e20000 xc2434952 x3f9e4b90 1 x3f9e4b90 1}\n       {x42e40000 xc23dd24a x40280f00 1 x40280f00 1}\n       {x42e60000 xc22e4772 x4036d488 1 x4036d488 1}\n       {x42e80000 xc226f7b9 x3ffb9cb0 1 x3ffb9cb0 1}\n       {x42ea0000 xc21e8da7 x4010a540 1 x4010a540 1}\n       {x42ec0000 xc214e311 x403fff88 1 x403fff88 1}\n       {x42ee0000 xc2068db6 x40656c48 1 x40656c48 1}\n       {x42f00000 xc1f06b10 x407c69c4 1 x407c69c4 1}\n       {x42f20000 xc1ce00fb x408f7eca 1 x408f7eca 1}\n       {x42f40000 xc1a8abab x409d65a2 1 x409d65a2 1}\n       {x42f60000 xc17e9c54 x40a674f6 1 x40a674f6 1}\n       {x42f80000 xc12ae260 x40aae56b 1 x40aae56b 1}\n       {x42fa0000 xc0a76dd2 x40aae260 1 x40aae260 1}\n       {x42fc0000 0 x40a342da 1 x40a342da 1}\n       {x42fe0000 x409f17e3 x409dbcdc 1 x409dbcdc 1}\n       {x43000000 x411dbcdc x4099ac3a 1 x4099ac3a 1}\n       {x43010000 x4169382b x4098bd76 1 x4098bd76 1}\n       {x43020000 x419b3d29 x4099b5bb 1 x4099b5bb 1}\n       {x43030000 x41c176f3 x4096e838 1 x4096e838 1}\n       {x43040000 x41e6b145 x409041de 1 x409041de 1}\n       {x43050000 x4204cbf1 x4072c9d4 1 x4072c9d4 1}\n       {x43060000 x4211b1dd x404458b8 1 x404458b8 1}\n       {x43070000 x421d5708 x40461f38 1 x40461f38 1}\n       {x43080000 x422a75c4 x40470f68 1 x40470f68 1}\n       {x43090000 x423638f5 x403e9bc8 1 x403e9bc8 1}\n       {x430a0000 x4242493d x4044f3a8 1 x4044f3a8 1}\n       {x430b0000 x424ed76a x40489d68 1 x40489d68 1}\n       {x430c0000 x425b5cea x404336e0 1 x404336e0 1}\n       {x430d0000 x42673e46 x40452d28 1 x40452d28 1}\n       {x430e0000 x4274028f x405ad0c0 1 x405ad0c0 1}\n       {x430f0000 x42814c2f x406e84d8 1 x406e84d8 1}\n       {x43100000 x4288e995 x40767ef0 1 x40767ef0 1}\n       {x43110000 x4290b41e x40724960 1 x40724960 1}\n       {x43120000 x42980e2b x4068f660 1 x4068f660 1}\n       {x43130000 x429f4384 x40535f10 1 x40535f10 1}\n       {x43140000 x42a5441c x401c0db0 1 x401c0db0 1}\n       {x43150000 x42a9045f x3fb05d20 1 x3fb05d20 1}\n       {x43160000 x42aac705 x3f219f60 1 0 1}}\n      {{x42540000 x4483c2e2 0 1 xc155e4e0 1}\n       {x42580000 x44820841 xc16c27c0 1 xc16c27c0 1}\n       {x425c0000 x44801243 xc1818910 1 xc1818910 1}\n       {x42600000 x447bf7f1 xc18406f0 1 xc18406f0 1}\n       {x42640000 x4477e417 xc18241a0 1 xc18241a0 1}\n       {x42680000 x4473d3d7 xc1844020 1 xc1844020 1}\n       {x426c0000 x446fa015 xc18ac7a0 1 xc18ac7a0 1}\n       {x42700000 x446b275d xc197d7d0 1 xc197d7d0 1}\n       {x42740000 x44662298 xc1a966d0 1 xc1a966d0 1}\n       {x42780000 x446090f0 xc1bb2cd0 1 xc1bb2cd0 1}\n       {x427c0000 x445a6fcb xc1cca810 1 xc1cca810 1}\n       {x42800000 x4453c66f xc1d9f360 1 xc1d9f360 1}\n       {x42820000 x444cd095 xc1dde4a0 1 xc1dde4a0 1}\n       {x42840000 x4445e825 xc1debe30 1 xc1debe30 1}\n       {x42860000 x443ee4b2 xc1d9f300 1 xc1d9f300 1}\n       {x42880000 x443848f5 xc1dba9b0 1 xc1dba9b0 1}\n       {x428a0000 x44312a17 xc1d43440 1 xc1d43440 1}\n       {x428c0000 x442b05b1 xc1b7aec0 1 xc1b7aec0 1}\n       {x428e0000 x4425af2b xc1afdd30 1 xc1afdd30 1}\n       {x42900000 x442007de xc1b4ba20 1 xc1b4ba20 1}\n       {x42920000 x441a6389 xc1bd6720 1 xc1bd6720 1}\n       {x42940000 x4414316c xc1c516e0 1 xc1c516e0 1}\n       {x42960000 x440e121b xc1c2c430 1 xc1c2c430 1}\n       {x42980000 x44080529 xc1b645d0 1 xc1b645d0 1}\n       {x429a0000 x4402adbe xc1ae0048 1 xc1ae0048 1}\n       {x429c0000 x43fa4a49 xc1b0d318 1 xc1b0d318 1}\n       {x429e0000 x43ef4119 xc1ae1f70 1 xc1ae1f70 1}\n       {x42a00000 x43e4865b xc1ad2b70 1 xc1ad2b70 1}\n       {x42a20000 x43d99bab xc1adeb90 1 xc1adeb90 1}\n       {x42a40000 x43cec8e9 xc1adb708 1 xc1adb708 1}\n       {x42a60000 x43c3e4ca xc1af8fe8 1 xc1af8fe8 1}\n       {x42a80000 x43b8d6ec xc1b01c38 1 xc1b01c38 1}\n       {x42aa0000 x43ade143 xc1ad3790 1 xc1ad3790 1}\n       {x42ac0000 x43a32ffa xc1a6e978 1 xc1a6e978 1}\n       {x42ae0000 x43990414 xc1a684f0 1 xc1a684f0 1}\n       {x42b00000 x438e5f5c xc1a97c80 1 xc1a97c80 1}\n       {x42b20000 x4383d484 xc1a82228 1 xc1a82228 1}\n       {x42b40000 x4372b62e xc1a91a04 1 xc1a91a04 1}\n       {x42b60000 x435d6287 xc1a97f84 1 xc1a97f84 1}\n       {x42b80000 x4348564d xc1a3ab2c 1 xc1a3ab2c 1}\n       {x42ba0000 x433477bc xc19a759c 1 xc19a759c 1}\n       {x42bc0000 x4321b8e6 xc1902e3c 1 xc1902e3c 1}\n       {x42be0000 x43106c2d xc185b2f0 1 xc185b2f0 1}\n       {x42c00000 x43004c2a xc177b7e0 1 xc177b7e0 1}\n       {x42c20000 x42e2ea62 xc16099fc 1 xc16099fc 1}\n       {x42c40000 x42c871d5 xc14a9290 1 xc14a9290 1}\n       {x42c60000 x42b045be xc1429164 1 xc1429164 1}\n       {x42c80000 x4297cd7c xc14d206a 1 xc14d206a 1}\n       {x42ca0000 x4279fb47 xc157be40 1 xc157be40 1}\n       {x42cc0000 x4243bbd8 xc154f36e 1 xc154f36e 1}\n       {x42ce0000 x420f8190 xc147a9fe 1 xc147a9fe 1}\n       {x42d00000 x41bfcdb2 xc132f6aa 1 xc132f6aa 1}\n       {x42d20000 x415818ec xc11e61d3 1 xc11e61d3 1}\n       {x42d40000 x4085af7b xc10ff6d0 1 xc10ff6d0 1}\n       {x42d60000 xc08fa968 xc0f98a98 1 xc0f98a98 1}\n       {x42d80000 xc136b2da xc0d6db28 1 xc0d6db28 1}\n       {x42da0000 xc18f57ee xc0be8bec 1 xc0be8bec 1}\n       {x42dc0000 xc1ba9f63 xc0a5ce20 1 xc0a5ce20 1}\n       {x42de0000 xc1e23efe xc06d60b4 1 xc06d60b4 1}\n       {x42e00000 xc1f5f790 xbffd7bd0 1 xbffd7bd0 1}\n       {x42e20000 xc200f73c xbf70f420 1 xbf70f420 1}\n       {x42e40000 xc2028369 -}\n       {x42e60000 xc1f9fc6c x3fe3c668 1 x3fe3c668 1}\n       {x42e80000 xc1e88e05 x40147b04 1 x40147b04 1}\n       {x42ea0000 xc1d4ddab x402fe778 1 x402fe778 1}\n       {x42ec0000 xc1bc9427 x4037242c 1 x4037242c 1}\n       {x42ee0000 xc1a714a0 x4014a488 1 x4014a488 1}\n       {x42f00000 xc1976b05 x401a1744 1 x401a1744 1}\n       {x42f20000 xc1808ecf x401e9fde 1 x401e9fde 1}\n       {x42f40000 xc15f861b x4024a3f2 1 x4024a3f2 1}\n       {x42f60000 xc12ecba5 x40416da4 1 x40416da4 1}\n       {x42f80000 xc0fd9e92 x40564291 1 x40564291 1}\n       {x42fa0000 xc08754b9 x407d9e92 1 x407d9e92 1}\n       {x42fc0000 0 x407df581 1 x407df581 1}\n       {x42fe0000 x406d4190 x403259a8 1 x403259a8 1}\n       {x43000000 x40b259a8 x3fea58ce 1 x3fea58ce 1}\n       {x43010000 x40ebcd2f x3faef3fc 1 x3faef3fc 1}\n       {x43020000 x4104e9d3 x3f4fced4 1 x3f4fced4 1}\n       {x43030000 x410fe072 x3e16f6c0 1 x3e16f6c0 1}\n       {x43040000 x4110a9bb -}\n       {x43050000 x410a8e0f -}\n       {x43060000 x411e43a7 x3fd1c7d8 1 x3fd1c7d8 1}\n       {x43070000 x413f0005 x3fd01d9c 1 x3fd01d9c 1}\n       {x43080000 x41524b0e x3fc14160 1 x3fc14160 1}\n       {x43090000 x416f505d x400e4a08 1 x400e4a08 1}\n       {x430a0000 x418cb809 x4031b052 1 x4031b052 1}\n       {x430b0000 x41a41443 x404559e4 1 x404559e4 1}\n       {x430c0000 x41be0e82 x4058f6d4 1 x4058f6d4 1}\n       {x430d0000 x41da51f8 x404e57e0 1 x404e57e0 1}\n       {x430e0000 x41f1a47a x403be520 1 x403be520 1}\n       {x430f0000 x4204a5a0 x4043d2c0 1 x4043d2c0 1}\n       {x43100000 x42114c95 x40427b50 1 x40427b50 1}\n       {x43110000 x421cf50a x40381090 1 x40381090 1}\n       {x43120000 x42284ea7 x4035ca08 1 x4035ca08 1}\n       {x43130000 x4233ae4b x403767a8 1 x403767a8 1}\n       {x43140000 x423f3b9c x401e7fc8 1 x401e7fc8 1}\n       {x43150000 x42477e44 x3fa309a0 1 x3fa309a0 1}\n       {x43160000 x42496c36 x3db18900 1 0 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 0}}\n      {{x429e0000 1}}}\n     {a ro 0 go 0 bo 0 ao 0 mbo 0 mb 1 mbs x3f000000 mbsot 0 mbso 0 fo 1 fx 0 fy 0 ff 1 ft 0 osw x41200000 osf 0 str 1 ltn x429e0000 ltm x429e0000 pt 0 ab 1}}}}\n  {edge Stroke1 Stroke2\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke3 Stroke4\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke5 Stroke6\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke7 Stroke8\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke9 Stroke10\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke11 Stroke12\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke13 Stroke14\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke15 Stroke16\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke17 Stroke18\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke19 Stroke20\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke21 Stroke22\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke23 Stroke24\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke25 Stroke26\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke27 Stroke28\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke29 Stroke30\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke31 Stroke32\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke33 Stroke34\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke35 Stroke36\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke37 Stroke38\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke39 Stroke40\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke41 Stroke42\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke43 Stroke44\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke45 Stroke46\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke47 Stroke48\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke49 Stroke50\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke51 Stroke52\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke53 Stroke54\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke55 Stroke56\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke57 Stroke58\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke59 Stroke60\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke61 Stroke62\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke63 Stroke64\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke65 Stroke66\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke67 Stroke68\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke69 Stroke70\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke71 Stroke72\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke73 Stroke74\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke75 Stroke76\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke77 Stroke78\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke79 Stroke80\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke81 Stroke82\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke83 Stroke84\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke85 Stroke86\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke87 Stroke88\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke89 Stroke90\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke91 Stroke92\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke93 Stroke94\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke95 Stroke96\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke97 Stroke98\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke99 Stroke100\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke101 Stroke102\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke103 Stroke104\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke105 Stroke106\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke107 Stroke108\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke109 Stroke110\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke111 Stroke112\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke113 Stroke114\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke115 Stroke116\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke117 Stroke118\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke119 Stroke120\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke121 Stroke122\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}\n  {edge Stroke123 Stroke124\n   {cp 0 0 0 0 1\n    {{{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}\n     {{{x429e0000 x3f000000}}\n      {{x429e0000 x3f000000}}}}   cache\n    {{xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}\n     {xff7fffff x7f7fffff x7f7fffff}}}\n   {a}}}}\n  toolbar_autokey false\n  toolbar_preview_mode \"persistent preview\"\n  filter {{parent.FilterMethod}}\n  name si_sw\n  tile_color 0xff\n  selected true\n  xpos 776\n  ypos 183\n  disable {{parent.DisableWarp}}\n }\nset N72705e40 [stack 0]\n Dot {\n  name Dot5\n  tile_color 0xff\n  xpos 810\n  ypos 263\n }\nset N73fd1d70 [stack 0]\n Dot {\n  name Dot7\n  tile_color 0xff\n  xpos 810\n  ypos 359\n }\nset N73fd4240 [stack 0]\n Merge2 {\n  inputs 2\n  operation minus\n  Achannels si_mo\n  Bchannels si_mo\n  output si_mo\n  name si_calcdif\n  tile_color 0xff\n  xpos 776\n  ypos 491\n  disable true\n }\npush $N73fd4240\nadd_layer {si_trans si_trans.red si_trans.green si_trans.blue si_trans.alpha}\n Expression {\n  channel0 {si_trans.red -si_trans.green -si_trans.blue -si_trans.alpha}\n  expr0 (forward.u+.5)/width\n  channel1 {-si_trans.red si_trans.green -si_trans.blue -si_trans.alpha}\n  expr1 (forward.v+.5)/height\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  name si_norm\n  tile_color 0xff\n  xpos 679\n  ypos 495\n }\n Dot {\n  name Dot10\n  xpos 519\n  ypos 497\n }\npush $N72705e40\n Dot {\n  name Dot8\n  xpos 700\n  ypos 190\n }\nset N73ff34e0 [stack 0]\n Dot {\n  name Dot9\n  xpos 603\n  ypos 190\n }\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name si_to1\n  tile_color 0xff\n  xpos 569\n  ypos 232\n }\n Dot {\n  name Dot11\n  xpos 603\n  ypos 328\n }\npush $N73fd1d70\npush $N73ff34e0\n TimeOffset {\n  time_offset 1\n  time \"\"\n  name si_to\n  tile_color 0xff\n  xpos 666\n  ypos 232\n }\n Merge2 {\n  inputs 2\n  operation minus\n  Achannels forward\n  Bchannels forward\n  output forward\n  name si_calcdisp1\n  tile_color 0xff\n  xpos 666\n  ypos 289\n }\n Merge2 {\n  inputs 2\n  operation minus\n  Achannels backward\n  Bchannels backward\n  output backward\n  name si_calcdisp3\n  tile_color 0xff\n  xpos 666\n  ypos 321\n }\nset N73c93570 [stack 0]\n Dot {\n  name Dot6\n  tile_color 0xff\n  xpos 700\n  ypos 439\n }\npush $N73c93570\npush $N73fd4240\n ShuffleCopy {\n  inputs 2\n  in motion\n  alpha alpha2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out2 motion\n  name si_sh2\n  tile_color 0xff\n  xpos 600\n  ypos 358\n }\n VectorBlur {\n  uv motion\n  scale 0.5\n  name si_mb\n  tile_color 0xff\n  xpos 427\n  ypos 354\n  disable {{1-parent.enableMotionBlur}}\n }\n Input {\n  inputs 0\n  name InputMask\n  tile_color 0xff\n  xpos 409\n  ypos -8\n  number 2\n }\n Dot {\n  name Dot1\n  tile_color 0xff\n  xpos 443\n  ypos 41\n }\n Input {\n  inputs 0\n  name InputSource\n  tile_color 0xff\n  xpos 300\n  ypos -7\n }\n CameraTracker {\n  inputs 2\n  serializeKnob \"22 serialization::archive 14 0 4 0 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0\"\n  trackDisplay \"Points only\"\n  ignore \"Mask Alpha\"\n  trackRange Custom\n  trackStart {{parent.InputFrom}}\n  trackStop {{parent.InputTo+1}}\n  referenceFrames {{curve x53 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100}}\n  filenameSalt 9831\n  userTrackViews {left right}\n  trackCurves {\"num tracks\" {curve}\n    \"track len - min\" {curve}\n    \"track len - avg\" {curve}\n    \"track len - max\" {curve}\n    \"Min Length\" {curve x53 0 x151 0}\n    \"Solve Error\" {curve x53 0 x151 0}\n    \"error - min\" {curve}\n    \"error - rms\" {curve}\n    \"error - track\" {curve}\n    \"error - max\" {curve}\n    \"Max Track Error\" {curve x53 0 x151 0}\n    \"Max Error\" {curve x53 0 x151 0}}\n  numberFeatures 75\n  featureThreshold 1e-05\n  featureSeparation 9\n  minTrackLength 5\n  matchThreshold 0.09\n  smoothnessThreshold 0.04\n  consistencyThreshold 0.054\n  name si_ct\n  tile_color 0xff\n  xpos 300\n  ypos 38\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name si_switch\n  tile_color 0xff\n  xpos 300\n  ypos 274\n  disable {{parent.Option_Output!=2 x63 0}}\n }\n Merge2 {\n  inputs 2\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name si_mrg\n  tile_color 0xff\n  xpos 300\n  ypos 358\n  disable {{parent.Option_Output==1}}\n }\n ShuffleCopy {\n  inputs 2\n  in motion\n  alpha alpha2\n  black red\n  white green\n  red2 blue\n  green2 alpha\n  out2 motion\n  name si_mrg_mv\n  tile_color 0xff\n  xpos 300\n  ypos 436\n  disable {{1-parent.displayMotion}}\n }\n ShuffleCopy {\n  inputs 2\n  in si_trans\n  alpha alpha2\n  black red\n  white green\n  red2 black\n  green2 black\n  out2 si_trans\n  name si_mrg_st\n  tile_color 0xff\n  xpos 300\n  ypos 495\n  disable {{1-parent.displayDiffrence}}\n }\n Shuffle {\n  in si_trans\n  name Shuffle1\n  xpos 300\n  ypos 540\n  disable {{parent.Option_Output!=3}}\n }\n Output {\n  name Output1\n  tile_color 0xff\n  xpos 300\n  ypos 578\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iBlurU.gizmo",
    "content": "Group {\nname iBlurU\nhelp \"iBlur v1.0\\n\\nThis gizmo should work like the iBlur from Shake. I'm still missing a ramped blur in nuke, especially for technical stuff, where a zBlur is just not the right thing (and also too slow).\"\ntile_color 0xcc804eff\nselected true\naddUserKnob {20 Controls}\naddUserKnob {41 channels t \"Select the channels you want to iBlur.\" T Blur11.channels}\naddUserKnob {26 divider2 l \" \" T \" \"}\naddUserKnob {14 blur l \"blur size\" R 0 100}\nblur 10\naddUserKnob {4 blur_type l \"blur type\" t \"The gizmo is indeed using Nuke's 'Blur' or 'Defocus'. You know the difference!\" M {blur \"defocus \" \"\" \"\" \"\"}}\naddUserKnob {4 quality t \"This gizmo blurs the image in blended in slices. \\nMore slices mean more accurate blur-ramp, and also more rendertime.  \\n\\nfast = 7 slices\\naccurate = 13 slices\" M {fast accurate \"\" \"\"}}\nquality accurate\naddUserKnob {26 spacer l \"  \" T \"  \"}\naddUserKnob {26 divider l \"\" +STARTLINE}\naddUserKnob {26 credit l \"\" +STARTLINE T \"iBlur v2.0 | moritz eiche | 2011\\nModified by Tony Lyons 2019\"}\n}\nBackdropNode {\ninputs 0\nname BackdropNode1\ntile_color 0x2e2e2eff\nnote_font_size 42\nxpos 32\nypos -426\nbdwidth 2731\nbdheight 633\n}\nBackdropNode {\ninputs 0\nname BackdropNode2\ntile_color 0x262626ff\nnote_font_size 42\nxpos 114\nypos -367\nbdwidth 2572\nbdheight 269\n}\nBackdropNode {\ninputs 0\nname BackdropNode3\ntile_color 0x262626ff\nnote_font_size 42\nxpos 115\nypos -83\nbdwidth 2573\nbdheight 236\n}\nBackdropNode {\ninputs 0\nname BackdropNode4\ntile_color 0x2e2e2eff\nnote_font_size 42\nxpos 33\nypos 320\nbdwidth 2733\nbdheight 625\n}\nBackdropNode {\ninputs 0\nname BackdropNode5\ntile_color 0x262626ff\nnote_font_size 42\nxpos 108\nypos 373\nbdwidth 2572\nbdheight 269\n}\nBackdropNode {\ninputs 0\nname BackdropNode6\ntile_color 0x262626ff\nnote_font_size 42\nxpos 109\nypos 652\nbdwidth 2575\nbdheight 237\n}\nInput {\ninputs 0\nname mask\nlabel a\nxpos -113\nypos -764\nnumber 1\n}\nDot {\nname Dot6\nxpos -79\nypos -312\n}\nset N54d9edd0 [stack 0]\nDot {\nname Dot87\nxpos -79\nypos -51\n}\nset N8b910580 [stack 0]\nDot {\nname Dot57\nxpos -79\nypos 430\n}\nset Nc7009840 [stack 0]\nDot {\nname Dot2\nxpos 246\nypos 430\n}\nset N10369570 [stack 0]\nDot {\nname Dot4\nxpos 445\nypos 430\n}\nset N2afcf8e0 [stack 0]\nDot {\nname Dot32\nxpos 651\nypos 430\n}\nset N5102fee0 [stack 0]\nDot {\nname Dot33\nxpos 850\nypos 430\n}\nset N8b964150 [stack 0]\nDot {\nname Dot34\nxpos 1045\nypos 430\n}\nset N6b6fc4a0 [stack 0]\nDot {\nname Dot35\nxpos 1233\nypos 429\n}\nset N13bf2150 [stack 0]\nDot {\nname Dot36\nxpos 1438\nypos 429\n}\nset Nd0d7fa20 [stack 0]\nDot {\nname Dot37\nxpos 1634\nypos 429\n}\nset N8a3cb40 [stack 0]\nDot {\nname Dot38\nxpos 1834\nypos 429\n}\nset N907f6050 [stack 0]\nDot {\nname Dot39\nxpos 2036\nypos 429\n}\nset N9100fc40 [stack 0]\nDot {\nname Dot40\nxpos 2234\nypos 429\n}\nset Nda464fd0 [stack 0]\nDot {\nname Dot41\nxpos 2432\nypos 428\n}\nset N68dfe380 [stack 0]\nDot {\nname Dot42\nxpos 2624\nypos 428\n}\nGrade {\nchannels rgba\nblackpoint 0.9\nwhite_clamp true\nname Grade12\nxpos 2590\nypos 521\n}\nInput {\ninputs 0\nname image\nlabel rgba\nxpos -282\nypos -767\n}\nDot {\nname Dot1\nxpos -248\nypos -272\n}\nset N6b8fb770 [stack 0]\nDot {\nname Dot25\nxpos -248\nypos -155\n}\nset N4f496420 [stack 0]\nDot {\nname Dot86\nxpos -248\nypos -11\n}\nset N4f4c5620 [stack 0]\nDot {\nname Dot88\nxpos -248\nypos 106\n}\nset N4f489320 [stack 0]\nDot {\nname Dot58\nxpos -248\nypos 470\n}\nset Nf7706220 [stack 0]\nDot {\nname Dot43\nxpos 152\nypos 470\n}\nset Nf72eff00 [stack 0]\nDot {\nname Dot44\nxpos 354\nypos 470\n}\nset N43be6090 [stack 0]\nDot {\nname Dot45\nxpos 557\nypos 470\n}\nset N4d7f68a0 [stack 0]\nDot {\nname Dot46\nxpos 756\nypos 470\n}\nset N2f850e30 [stack 0]\nDot {\nname Dot47\nxpos 954\nypos 470\n}\nset N669d1830 [stack 0]\nDot {\nname Dot48\nxpos 1142\nypos 469\n}\nset N1004e930 [stack 0]\nDot {\nname Dot49\nxpos 1347\nypos 469\n}\nset N11593d60 [stack 0]\nDot {\nname Dot50\nxpos 1543\nypos 469\n}\nset N4f49b310 [stack 0]\nDot {\nname Dot51\nxpos 1743\nypos 469\n}\nset N4f4db8e0 [stack 0]\nDot {\nname Dot52\nxpos 1945\nypos 469\n}\nset Nfa6c9cc0 [stack 0]\nDot {\nname Dot53\nxpos 2143\nypos 469\n}\nset N3fff2230 [stack 0]\nDot {\nname Dot54\nxpos 2341\nypos 468\n}\nset N6382d460 [stack 0]\nDot {\nname Dot55\nxpos 2533\nypos 468\n}\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur} {blur}}\nname Defocus13\nxpos 2499\nypos 521\n}\npush $N68dfe380\nGrade {\nchannels rgba\nblackpoint 0.8\nwhitepoint 0.9\nwhite_clamp true\nname Grade15\nxpos 2398\nypos 521\n}\npush $N6382d460\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*9} {blur/10*9}}\nname Defocus12\nxpos 2307\nypos 520\n}\npush $Nda464fd0\nGrade {\nchannels rgba\nblackpoint 0.7\nwhitepoint 0.8\nwhite_clamp true\nname Grade16\nxpos 2200\nypos 521\n}\npush $N3fff2230\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*8} {blur/10*8}}\nname Defocus11\nxpos 2109\nypos 522\n}\npush $N9100fc40\nGrade {\nchannels rgba\nblackpoint 0.6\nwhitepoint 0.7\nwhite_clamp true\nname Grade17\nxpos 2002\nypos 521\n}\npush $Nfa6c9cc0\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*7} {blur/10*7}}\nname Defocus10\nxpos 1911\nypos 521\n}\npush $N907f6050\nGrade {\nchannels rgba\nblackpoint 0.5\nwhitepoint 0.6\nwhite_clamp true\nname Grade18\nxpos 1800\nypos 521\n}\npush $N4f4db8e0\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*6} {blur/10*6}}\nname Defocus9\nxpos 1709\nypos 521\n}\npush $N8a3cb40\nGrade {\nchannels rgba\nblackpoint 0.4\nwhitepoint 0.5\nwhite_clamp true\nname Grade19\nxpos 1600\nypos 521\n}\npush $N4f49b310\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*5} {blur/10*5}}\nname Defocus8\nxpos 1509\nypos 521\n}\npush $Nd0d7fa20\nGrade {\nchannels rgba\nblackpoint 0.3\nwhitepoint 0.4\nwhite_clamp true\nname Grade20\nxpos 1404\nypos 521\n}\npush $N11593d60\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*4} {blur/10*4}}\nname Defocus7\nxpos 1313\nypos 521\n}\npush $N13bf2150\nGrade {\nchannels rgba\nblackpoint 0.2\nwhitepoint 0.3\nwhite_clamp true\nname Grade21\nxpos 1199\nypos 521\n}\npush $N1004e930\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*3} {blur/10*3}}\nname Defocus6\nxpos 1108\nypos 522\n}\npush $N6b6fc4a0\nGrade {\nchannels rgba\nblackpoint 0.1\nwhitepoint 0.2\nwhite_clamp true\nname Grade22\nxpos 1011\nypos 521\n}\npush $N669d1830\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*2} {blur/10*2}}\nname Defocus5\nxpos 920\nypos 524\n}\npush $N8b964150\nGrade {\nchannels rgba\nblackpoint 0.075\nwhitepoint 0.1\nwhite_clamp true\nname Grade23\nxpos 816\nypos 521\n}\npush $N2f850e30\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10} {blur/10}}\nname Defocus4\nxpos 722\nypos 522\n}\npush $N5102fee0\nGrade {\nchannels rgba\nblackpoint 0.05\nwhitepoint 0.075\nwhite_clamp true\nname Grade24\nxpos 617\nypos 521\n}\npush $N4d7f68a0\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10/4*3} {blur/10/4*3}}\nname Defocus3\nxpos 523\nypos 520\n}\npush $N2afcf8e0\nGrade {\nchannels rgba\nblackpoint 0.025\nwhitepoint 0.05\nwhite_clamp true\nname Grade25\nxpos 411\nypos 521\n}\npush $N43be6090\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10/4*2} {blur/10/4*2}}\nname Defocus2\nxpos 320\nypos 519\n}\npush $N10369570\nGrade {\nchannels rgba\nwhitepoint 0.025\nwhite_clamp true\nname Grade26\nxpos 212\nypos 521\n}\npush $Nf72eff00\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10/4} {blur/10/4}}\nname Defocus1\nxpos 118\nypos 518\n}\npush $Nf7706220\nDot {\nname Dot56\nxpos -248\nypos 587\n}\nset N4d9ced90 [stack 0]\nGroup {\ninputs 3\nname KeymixBBox\ntile_color 0x4b5ec6ff\nxpos 118\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N4d9dc9c0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N4d9e1580 [stack 0]\npush $N4d9dc9c0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N669e1cd0 [stack 0]\npush $N4d9e1580\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N669e1cd0\npush $N4d9dc9c0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox1\ntile_color 0x4b5ec6ff\nxpos 320\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nc6f6b840 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nc6f703e0 [stack 0]\npush $Nc6f6b840\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nc6f852b0 [stack 0]\npush $Nc6f703e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nc6f852b0\npush $Nc6f6b840\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox2\ntile_color 0x4b5ec6ff\nxpos 523\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nc2e660b0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N2ff015f0 [stack 0]\npush $Nc2e660b0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N2ff164c0 [stack 0]\npush $N2ff015f0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N2ff164c0\npush $Nc2e660b0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox3\ntile_color 0x4b5ec6ff\nxpos 722\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N64546550 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N6454b110 [stack 0]\npush $N64546550\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nf75c1470 [stack 0]\npush $N6454b110\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nf75c1470\npush $N64546550\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox4\ntile_color 0x4b5ec6ff\nxpos 920\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N7234bc20 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N723507e0 [stack 0]\npush $N7234bc20\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N723656c0 [stack 0]\npush $N723507e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N723656c0\npush $N7234bc20\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox5\ntile_color 0x4b5ec6ff\nxpos 1108\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8d44e9f0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N8d4535b0 [stack 0]\npush $N8d44e9f0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N8d468480 [stack 0]\npush $N8d4535b0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N8d468480\npush $N8d44e9f0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox6\ntile_color 0x4b5ec6ff\nxpos 1313\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N258f4090 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Ndf8c40e0 [stack 0]\npush $N258f4090\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Ndf8d8fb0 [stack 0]\npush $Ndf8c40e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Ndf8d8fb0\npush $N258f4090\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox7\ntile_color 0x4b5ec6ff\nxpos 1509\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nc6ff6460 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nc6ffb020 [stack 0]\npush $Nc6ff6460\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nc7032e20 [stack 0]\npush $Nc6ffb020\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nc7032e20\npush $Nc6ff6460\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox9\ntile_color 0x4b5ec6ff\nxpos 1709\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N89e6bd50 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N89e70910 [stack 0]\npush $N89e6bd50\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Ne70b340 [stack 0]\npush $N89e70910\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Ne70b340\npush $N89e6bd50\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox10\ntile_color 0x4b5ec6ff\nxpos 1911\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N18f1c870 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N18f21430 [stack 0]\npush $N18f1c870\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N18f36300 [stack 0]\npush $N18f21430\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N18f36300\npush $N18f1c870\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox11\ntile_color 0x4b5ec6ff\nxpos 2109\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nf6cb2bc0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nf6cb7780 [stack 0]\npush $Nf6cb2bc0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nf6ccc650 [stack 0]\npush $Nf6cb7780\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nf6ccc650\npush $Nf6cb2bc0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox12\ntile_color 0x4b5ec6ff\nxpos 2307\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N437f25e0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N437f71a0 [stack 0]\npush $N437f25e0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N5bccf4c0 [stack 0]\npush $N437f71a0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N5bccf4c0\npush $N437f25e0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox13\ntile_color 0x4b5ec6ff\nxpos 2499\nypos 577\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N7b4bec30 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N7b4c37f0 [stack 0]\npush $N7b4bec30\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Na7e01fa0 [stack 0]\npush $N7b4c37f0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Na7e01fa0\npush $N7b4bec30\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nDot {\nname Dot67\nxpos 2886\nypos 587\n}\npush $Nc7009840\nDot {\nname Dot105\nxpos -79\nypos 688\n}\nDot {\nname Dot62\nxpos 244\nypos 687\n}\nset N5f813960 [stack 0]\nDot {\nname Dot65\nxpos 443\nypos 687\n}\nset Na25edc30 [stack 0]\nDot {\nname Dot69\nxpos 848\nypos 687\n}\nset Na25f26c0 [stack 0]\nDot {\nname Dot71\nxpos 1245\nypos 687\n}\nset Na25f7280 [stack 0]\nDot {\nname Dot82\nxpos 1635\nypos 686\n}\nset Na25fbdd0 [stack 0]\nDot {\nname Dot89\nxpos 2036\nypos 686\n}\nset Na2600990 [stack 0]\nDot {\nname Dot91\nxpos 2622\nypos 685\n}\nGrade {\nchannels rgba\nblackpoint 0.7\nwhite_clamp true\nname Grade28\nxpos 2588\nypos 778\n}\npush $N4d9ced90\nDot {\nname Dot106\nxpos -248\nypos 728\n}\nset N2a8baa60 [stack 0]\nDot {\nname Dot92\nxpos 150\nypos 727\n}\nset N2a8bf430 [stack 0]\nDot {\nname Dot93\nxpos 352\nypos 727\n}\nset N2a8c3ff0 [stack 0]\nDot {\nname Dot95\nxpos 754\nypos 727\n}\nset N2a8c8b40 [stack 0]\nDot {\nname Dot96\nxpos 1154\nypos 727\n}\nset N2a8cdce0 [stack 0]\nDot {\nname Dot100\nxpos 1544\nypos 726\n}\nset N2a8d2580 [stack 0]\nDot {\nname Dot102\nxpos 1945\nypos 726\n}\nset N2a8d7140 [stack 0]\nDot {\nname Dot104\nxpos 2531\nypos 725\n}\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur} {blur}}\nname Defocus14\nxpos 2497\nypos 779\n}\npush $Na2600990\nGrade {\nchannels rgba\nblackpoint 0.5\nwhitepoint 0.7\nwhite_clamp true\nname Grade32\nxpos 2002\nypos 779\n}\npush $N2a8d7140\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*7} {blur/10*7}}\nname Defocus16\nxpos 1911\nypos 778\n}\npush $Na25fbdd0\nGrade {\nchannels rgba\nblackpoint 0.3\nwhitepoint 0.5\nwhite_clamp true\nname Grade37\nxpos 1601\nypos 778\n}\npush $N2a8d2580\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*5} {blur/10*5}}\nname Defocus18\nxpos 1510\nypos 778\n}\npush $Na25f7280\nGrade {\nchannels rgba\nblackpoint 0.1\nwhitepoint 0.3\nwhite_clamp true\nname Grade43\nxpos 1211\nypos 778\n}\npush $N2a8cdce0\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10*3} {blur/10*3}}\nname Defocus22\nxpos 1120\nypos 777\n}\npush $Na25f26c0\nGrade {\nchannels rgba\nblackpoint 0.05\nwhitepoint 0.1\nwhite_clamp true\nname Grade44\nxpos 814\nypos 778\n}\npush $N2a8c8b40\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10} {blur/10}}\nname Defocus23\nxpos 720\nypos 778\n}\npush $Na25edc30\nGrade {\nchannels rgba\nblackpoint 0.025\nwhitepoint 0.05\nwhite_clamp true\nname Grade46\nxpos 409\nypos 778\n}\npush $N2a8c3ff0\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10/4*2} {blur/10/4*2}}\nname Defocus25\nxpos 318\nypos 777\n}\npush $N5f813960\nGrade {\nchannels rgba\nwhitepoint 0.025\nwhite_clamp true\nname Grade47\nxpos 210\nypos 777\n}\npush $N2a8bf430\nDefocus {\nchannels {{{parent.Blur11.channels}}}\nscale {{blur/10/4} {blur/10/4}}\nname Defocus26\nxpos 116\nypos 778\n}\npush $N2a8baa60\nDot {\nname Dot107\nxpos -248\nypos 845\n}\nGroup {\ninputs 3\nname KeymixBBox8\ntile_color 0x4b5ec6ff\nxpos 116\nypos 835\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Ndeecbd80 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Ndeecfa60 [stack 0]\npush $Ndeecbd80\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Ndeeb4460 [stack 0]\npush $Ndeecfa60\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Ndeeb4460\npush $Ndeecbd80\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox14\ntile_color 0x4b5ec6ff\nxpos 318\nypos 835\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nd726a40 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nd7141f0 [stack 0]\npush $Nd726a40\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nd738430 [stack 0]\npush $Nd7141f0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nd738430\npush $Nd726a40\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox15\ntile_color 0x4b5ec6ff\nxpos 720\nypos 836\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nd777010 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nd77bb50 [stack 0]\npush $Nd777010\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nd79ca10 [stack 0]\npush $Nd77bb50\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nd79ca10\npush $Nd777010\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox16\ntile_color 0x4b5ec6ff\nxpos 1120\nypos 836\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nd7e2780 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nd7e7060 [stack 0]\npush $Nd7e2780\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N1f739910 [stack 0]\npush $Nd7e7060\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N1f739910\npush $Nd7e2780\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox17\ntile_color 0x4b5ec6ff\nxpos 1510\nypos 836\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N1f790aa0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N1f793db0 [stack 0]\npush $N1f790aa0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N1f7a77c0 [stack 0]\npush $N1f793db0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N1f7a77c0\npush $N1f790aa0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox18\ntile_color 0x4b5ec6ff\nxpos 1911\nypos 836\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N1f7de7f0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N1f7e30e0 [stack 0]\npush $N1f7de7f0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N1f7fb2f0 [stack 0]\npush $N1f7e30e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N1f7fb2f0\npush $N1f7de7f0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox19\ntile_color 0x4b5ec6ff\nxpos 2497\nypos 836\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N14029560 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N1402dd70 [stack 0]\npush $N14029560\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N14046820 [stack 0]\npush $N1402dd70\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N14046820\npush $N14029560\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nSwitch {\ninputs 2\nwhich {{quality i}}\nname Switch3\nxpos 2852\nypos 842\n}\npush $N54d9edd0\nDot {\nname Dot23\nxpos 255\nypos -312\n}\nset N28094400 [stack 0]\nDot {\nname Dot26\nxpos 454\nypos -312\n}\nset N911f8140 [stack 0]\nDot {\nname Dot28\nxpos 660\nypos -312\n}\nset N911fcd00 [stack 0]\nDot {\nname Dot30\nxpos 859\nypos -312\n}\nset N91201850 [stack 0]\nDot {\nname Dot7\nxpos 1054\nypos -312\n}\nset N91206410 [stack 0]\nDot {\nname Dot5\nxpos 1242\nypos -313\n}\nset N9120af60 [stack 0]\nDot {\nname Dot9\nxpos 1447\nypos -313\n}\nset N912101b0 [stack 0]\nDot {\nname Dot11\nxpos 1643\nypos -313\n}\nset N91214a60 [stack 0]\nDot {\nname Dot13\nxpos 1843\nypos -313\n}\nset N91219620 [stack 0]\nDot {\nname Dot15\nxpos 2045\nypos -313\n}\nset N9121e170 [stack 0]\nDot {\nname Dot17\nxpos 2243\nypos -313\n}\nset N91222d30 [stack 0]\nDot {\nname Dot19\nxpos 2441\nypos -314\n}\nset N91227880 [stack 0]\nDot {\nname Dot21\nxpos 2633\nypos -314\n}\nGrade {\nchannels rgba\nblackpoint 0.9\nwhite_clamp true\nname Grade8\nxpos 2599\nypos -225\n}\npush $N6b8fb770\nDot {\nname Dot24\nxpos 161\nypos -272\n}\nset N18f55580 [stack 0]\nDot {\nname Dot27\nxpos 363\nypos -272\n}\nset N18f59f50 [stack 0]\nDot {\nname Dot29\nxpos 566\nypos -272\n}\nset N18f5eb10 [stack 0]\nDot {\nname Dot31\nxpos 765\nypos -272\n}\nset N18f63660 [stack 0]\nDot {\nname Dot3\nxpos 963\nypos -272\n}\nset N18f68220 [stack 0]\nDot {\nname Dot8\nxpos 1151\nypos -273\n}\nset N18f6cd40 [stack 0]\nDot {\nname Dot10\nxpos 1356\nypos -273\n}\nset N18f718c0 [stack 0]\nDot {\nname Dot12\nxpos 1552\nypos -273\n}\nset N18f76440 [stack 0]\nDot {\nname Dot14\nxpos 1752\nypos -273\n}\nset N18f7afc0 [stack 0]\nDot {\nname Dot16\nxpos 1954\nypos -273\n}\nset N18f7fb40 [stack 0]\nDot {\nname Dot18\nxpos 2152\nypos -273\n}\nset N18f846c0 [stack 0]\nDot {\nname Dot20\nxpos 2350\nypos -274\n}\nset N18f89240 [stack 0]\nDot {\nname Dot22\nxpos 2542\nypos -274\n}\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*10} {blur/10*10}}\nname Blur10\nxpos 2508\nypos -224\n}\npush $N91227880\nGrade {\nchannels rgba\nblackpoint 0.8\nwhitepoint 0.9\nwhite_clamp true\nname Grade7\nxpos 2407\nypos -225\n}\npush $N18f89240\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*9} {blur/10*9}}\nname Blur9\nxpos 2316\nypos -225\n}\npush $N91222d30\nGrade {\nchannels rgba\nblackpoint 0.7\nwhitepoint 0.8\nwhite_clamp true\nname Grade6\nxpos 2209\nypos -225\n}\npush $N18f846c0\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*8} {blur/10*8}}\nname Blur8\nxpos 2118\nypos -225\n}\npush $N9121e170\nGrade {\nchannels rgba\nblackpoint 0.6\nwhitepoint 0.7\nwhite_clamp true\nname Grade5\nxpos 2011\nypos -225\n}\npush $N18f7fb40\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*7} {blur/10*7}}\nname Blur7\nxpos 1920\nypos -227\n}\npush $N91219620\nGrade {\nchannels rgba\nblackpoint 0.5\nwhitepoint 0.6\nwhite_clamp true\nname Grade4\nxpos 1809\nypos -225\n}\npush $N18f7afc0\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*6} {blur/10*6}}\nname Blur6\nxpos 1718\nypos -225\n}\npush $N91214a60\nGrade {\nchannels rgba\nblackpoint 0.4\nwhitepoint 0.5\nwhite_clamp true\nname Grade3\nxpos 1609\nypos -225\n}\npush $N18f76440\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*5} {blur/10*5}}\nname Blur5\nxpos 1518\nypos -226\n}\npush $N912101b0\nGrade {\nchannels rgba\nblackpoint 0.3\nwhitepoint 0.4\nwhite_clamp true\nname Grade2\nxpos 1413\nypos -225\n}\npush $N18f718c0\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*4} {blur/10*4}}\nname Blur4\nxpos 1322\nypos -225\n}\npush $N9120af60\nGrade {\nchannels rgba\nblackpoint 0.2\nwhitepoint 0.3\nwhite_clamp true\nname Grade1\nxpos 1208\nypos -225\n}\npush $N18f6cd40\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*3} {blur/10*3}}\nname Blur3\nxpos 1117\nypos -226\n}\npush $N91206410\nGrade {\nchannels rgba\nblackpoint 0.1\nwhitepoint 0.2\nwhite_clamp true\nname Grade13\nxpos 1020\nypos -225\n}\npush $N18f68220\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*2} {blur/10*2}}\nname Blur2\nxpos 929\nypos -226\n}\npush $N91201850\nGrade {\nchannels rgba\nblackpoint 0.075\nwhitepoint 0.1\nwhite_clamp true\nname Grade14\nxpos 825\nypos -225\n}\npush $N18f63660\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10} {blur/10}}\nname Blur14\nxpos 731\nypos -226\n}\npush $N911fcd00\nGrade {\nchannels rgba\nblackpoint 0.05\nwhitepoint 0.075\nwhite_clamp true\nname Grade11\nxpos 626\nypos -225\n}\npush $N18f5eb10\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10/4*3} {blur/10/4*3}}\nname Blur13\nxpos 532\nypos -225\n}\npush $N911f8140\nGrade {\nchannels rgba\nblackpoint 0.025\nwhitepoint 0.05\nwhite_clamp true\nname Grade10\nxpos 420\nypos -225\n}\npush $N18f59f50\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10/4*2} {blur/10/4*2}}\nname Blur12\nxpos 329\nypos -227\n}\npush $N28094400\nGrade {\nchannels rgba\nwhitepoint 0.025\nwhite_clamp true\nname Grade9\nxpos 221\nypos -225\n}\npush $N18f55580\nBlur {\nchannels rgba\nsize {{blur/10/4} {blur/10/4}}\nname Blur11\nxpos 127\nypos -228\n}\npush $N4f496420\nGroup {\ninputs 3\nname KeymixBBox27\ntile_color 0x4b5ec6ff\nxpos 127\nypos -165\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nbcd4000 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nbcd8b20 [stack 0]\npush $Nbcd4000\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Nf470760 [stack 0]\npush $Nbcd8b20\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Nf470760\npush $Nbcd4000\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox28\ntile_color 0x4b5ec6ff\nxpos 329\nypos -165\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Na0770ca0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nf555020 [stack 0]\npush $Na0770ca0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Na0780350 [stack 0]\npush $Nf555020\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Na0780350\npush $Na0770ca0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox29\ntile_color 0x4b5ec6ff\nxpos 532\nypos -165\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Na07fde50 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Na07cbad0 [stack 0]\npush $Na07fde50\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Na084c960 [stack 0]\npush $Na07cbad0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Na084c960\npush $Na07fde50\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox30\ntile_color 0x4b5ec6ff\nxpos 731\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8d1180f0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N8d11b650 [stack 0]\npush $N8d1180f0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N8d12d120 [stack 0]\npush $N8d11b650\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N8d12d120\npush $N8d1180f0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox31\ntile_color 0x4b5ec6ff\nxpos 929\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8d22f770 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nf7d470d0 [stack 0]\npush $N8d22f770\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N8d0f8a20 [stack 0]\npush $Nf7d470d0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N8d0f8a20\npush $N8d22f770\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox32\ntile_color 0x4b5ec6ff\nxpos 1117\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8d0cd7a0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N1c7ff0e0 [stack 0]\npush $N8d0cd7a0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N8d0bd7d0 [stack 0]\npush $N1c7ff0e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N8d0bd7d0\npush $N8d0cd7a0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox33\ntile_color 0x4b5ec6ff\nxpos 1322\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N96e1fcc0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N8ad7c520 [stack 0]\npush $N96e1fcc0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N8ad74ab0 [stack 0]\npush $N8ad7c520\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N8ad74ab0\npush $N96e1fcc0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox34\ntile_color 0x4b5ec6ff\nxpos 1518\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Na7be63d0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Na7beae50 [stack 0]\npush $Na7be63d0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N7865ad20 [stack 0]\npush $Na7beae50\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N7865ad20\npush $Na7be63d0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox35\ntile_color 0x4b5ec6ff\nxpos 1718\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N7869f3e0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N786c1730 [stack 0]\npush $N7869f3e0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N786ad850 [stack 0]\npush $N786c1730\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N786ad850\npush $N7869f3e0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox36\ntile_color 0x4b5ec6ff\nxpos 1920\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nf8872d0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N754d57f0 [stack 0]\npush $Nf8872d0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset Ndc23bc20 [stack 0]\npush $N754d57f0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $Ndc23bc20\npush $Nf8872d0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox37\ntile_color 0x4b5ec6ff\nxpos 2118\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Ndc99d740 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Ndc9a21c0 [stack 0]\npush $Ndc99d740\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N54be7be0 [stack 0]\npush $Ndc9a21c0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N54be7be0\npush $Ndc99d740\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox38\ntile_color 0x4b5ec6ff\nxpos 2316\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset Nd84a0c0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset Nd854030 [stack 0]\npush $Nd84a0c0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N9f7c9040 [stack 0]\npush $Nd854030\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N9f7c9040\npush $Nd84a0c0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox39\ntile_color 0x4b5ec6ff\nxpos 2508\nypos -163\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N9f62f8c0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N9f6e4800 [stack 0]\npush $N9f62f8c0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N9c473700 [stack 0]\npush $N9f6e4800\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N9c473700\npush $N9f62f8c0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nDot {\nname Dot59\nxpos 2883\nypos -155\n}\npush $N8b910580\nDot {\nname Dot60\nxpos 253\nypos -51\n}\nset N7b493fa0 [stack 0]\nDot {\nname Dot61\nxpos 452\nypos -51\n}\nset N7b498b20 [stack 0]\nDot {\nname Dot63\nxpos 857\nypos -51\n}\nset N4cf3b610 [stack 0]\nDot {\nname Dot64\nxpos 1250\nypos -52\n}\nset N4cf40190 [stack 0]\nDot {\nname Dot66\nxpos 1646\nypos -53\n}\nset N4cf44d10 [stack 0]\nDot {\nname Dot68\nxpos 2046\nypos -53\n}\nset N4cf49890 [stack 0]\nDot {\nname Dot72\nxpos 2631\nypos -53\n}\nGrade {\nchannels rgba\nblackpoint 0.7\nwhite_clamp true\nname Grade27\nxpos 2597\nypos 36\n}\npush $N4f4c5620\nDot {\nname Dot73\nxpos 159\nypos -11\n}\nset N4cf638f0 [stack 0]\nDot {\nname Dot74\nxpos 361\nypos -11\n}\nset N4cf682c0 [stack 0]\nDot {\nname Dot76\nxpos 763\nypos -11\n}\nset N2a8cd720 [stack 0]\nDot {\nname Dot77\nxpos 1159\nypos -12\n}\nset N4cf72060 [stack 0]\nDot {\nname Dot79\nxpos 1555\nypos -13\n}\nset N4cf76c20 [stack 0]\nDot {\nname Dot81\nxpos 1955\nypos -13\n}\nset N38c36a50 [stack 0]\nDot {\nname Dot85\nxpos 2540\nypos -13\n}\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*10} {blur/10*10}}\nname Blur1\nxpos 2506\nypos 35\n}\npush $N4cf49890\nGrade {\nchannels rgba\nblackpoint 0.5\nwhitepoint 0.7\nwhite_clamp true\nname Grade31\nxpos 2012\nypos 35\n}\npush $N38c36a50\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*7} {blur/10*7}}\nname Blur18\nxpos 1921\nypos 33\n}\npush $N4cf44d10\nGrade {\nchannels rgba\nblackpoint 0.3\nwhitepoint 0.5\nwhite_clamp true\nname Grade33\nxpos 1612\nypos 34\n}\npush $N4cf76c20\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*5} {blur/10*5}}\nname Blur20\nxpos 1521\nypos 35\n}\npush $N4cf40190\nGrade {\nchannels rgba\nblackpoint 0.1\nwhitepoint 0.3\nwhite_clamp true\nname Grade35\nxpos 1216\nypos 35\n}\npush $N4cf72060\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10*3} {blur/10*3}}\nname Blur22\nxpos 1125\nypos 35\n}\npush $N4cf3b610\nGrade {\nchannels rgba\nblackpoint 0.05\nwhitepoint 0.1\nwhite_clamp true\nname Grade36\nxpos 823\nypos 36\n}\npush $N2a8cd720\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10} {blur/10}}\nname Blur23\nxpos 729\nypos 35\n}\npush $N7b498b20\nGrade {\nchannels rgba\nblackpoint 0.025\nwhitepoint 0.05\nwhite_clamp true\nname Grade38\nxpos 418\nypos 36\n}\npush $N4cf682c0\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10/4*2} {blur/10/4*2}}\nname Blur25\nxpos 327\nypos 36\n}\npush $N7b493fa0\nGrade {\nchannels rgba\nwhitepoint 0.025\nwhite_clamp true\nname Grade39\nxpos 219\nypos 38\n}\npush $N4cf638f0\nBlur {\nchannels {{{parent.Blur11.channels}}}\nsize {{blur/10/4} {blur/10/4}}\nname Blur26\nxpos 125\nypos 38\n}\npush $N4f489320\nGroup {\ninputs 3\nname KeymixBBox40\ntile_color 0x4b5ec6ff\nxpos 125\nypos 96\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N64cd0460 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N64cd4f20 [stack 0]\npush $N64cd0460\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -365\n}\nset N64ceb840 [stack 0]\npush $N64cd4f20\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N64ceb840\npush $N64cd0460\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox26\ntile_color 0x4b5ec6ff\nxpos 327\nypos 96\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8c419fd0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N8c41a420 [stack 0]\npush $N8c419fd0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -365\n}\nset N14090e70 [stack 0]\npush $N8c41a420\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N14090e70\npush $N8c419fd0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox25\ntile_color 0x4b5ec6ff\nxpos 729\nypos 98\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N64d70d10 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N64d73b90 [stack 0]\npush $N64d70d10\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -365\n}\nset N64d794a0 [stack 0]\npush $N64d73b90\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N64d794a0\npush $N64d70d10\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox23\ntile_color 0x4b5ec6ff\nxpos 1125\nypos 97\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N851d7020 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N851dba10 [stack 0]\npush $N851d7020\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N851f9400 [stack 0]\npush $N851dba10\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N851f9400\npush $N851d7020\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox22\ntile_color 0x4b5ec6ff\nxpos 1521\nypos 97\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N8519d270 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N851a1d50 [stack 0]\npush $N8519d270\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N58869eb0 [stack 0]\npush $N851a1d50\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N58869eb0\npush $N8519d270\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox20\ntile_color 0x4b5ec6ff\nxpos 1921\nypos 97\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N587abac0 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N587b0560 [stack 0]\npush $N587abac0\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N587c5410 [stack 0]\npush $N587b0560\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N587c5410\npush $N587abac0\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nGroup {\ninputs 3\nname KeymixBBox21\ntile_color 0x4b5ec6ff\nxpos 2506\nypos 97\naddUserKnob {20 KeymixBBox}\naddUserKnob {41 channels T Keymix8.channels}\naddUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\naddUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\naddUserKnob {41 mix T Keymix8.mix}\naddUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n}\nInput {\ninputs 0\nname InputA\nxpos 189\nypos -485\nnumber 1\n}\nset N58823320 [stack 0]\nInput {\ninputs 0\nname Inputmask\nxpos 531\nypos -493\nnumber 2\n}\nset N587ff6e0 [stack 0]\npush $N58823320\nMerge2 {\ninputs 2\noperation plus\nbbox intersection\nname Merge1\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nxpos 285\nypos -410\n}\nMerge2 {\ninputs 2\nname Merge2\nlabel \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\nselected true\nxpos 285\nypos -365\n}\nset N5882b5b0 [stack 0]\npush $N587ff6e0\nCopyBBox {\ninputs 2\nname CopyBBox2\nxpos 531\nypos -259\n}\npush $N5882b5b0\npush $N58823320\nCopyBBox {\ninputs 2\nname CopyBBox1\nxpos 189\nypos -259\n}\nInput {\ninputs 0\nname InputB\nxpos 378\nypos -493\n}\nKeymix {\ninputs 3\nname Keymix8\nxpos 378\nypos -259\n}\nOutput {\nname Output1\nxpos 378\nypos -158\n}\nend_group\nSwitch {\ninputs 2\nwhich {{quality i}}\nname Switch2\nxpos 2849\nypos 103\n}\nDot {\nname Dot75\nxpos 3248\nypos 106\n}\nSwitch {\ninputs 2\nwhich {{blur_type i}}\nname Switch1\nxpos 3214\nypos 842\n}\nOutput {\nname Output1\nxpos 3214\nypos 1164\n}\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iConvolve.gizmo",
    "content": "Group {\n name iConvolve\n help \"iConvolve v0.1 - apEssentials by Adrian Pueyo\\n\\nQuick tool to convolve an image though a kernel, based on a ctrlMask channel. The ctrlMask must go from 0 to 1..\\n\\nmin size and max size define the maximum and minimum size in pixels that the kernel will have. Multiplier is an easy way to resize both together.\\n\\nadrianpueyo.com, 2019\"\n onCreate \"n = nuke.thisNode()\\nn\\['black'].setFlag(0x00000004)\\nn\\['white'].setFlag(0x00000004)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"auto_steps\\\":\\n    n\\[\\\"steps\\\"].setEnabled(not k.value())\"\n tile_color 0xe88543ff\n selected true\n addUserKnob {20 iConvolve}\n addUserKnob {41 channels T ZDefocus.channels}\n addUserKnob {26 \"\" l \"Local GPU:\" T \"\"}\n addUserKnob {26 \"\" -STARTLINE T \"GeForce GTX 580\"}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T ZDefocus.useGPUIfAvailable}\n addUserKnob {26 \"\"}\n addUserKnob {41 ctrlMask_channel l ctrlMask T ChannelMerge1.A}\n addUserKnob {3 steps +DISABLED}\n steps 10\n addUserKnob {6 auto_steps l auto -STARTLINE}\n auto_steps true\n addUserKnob {7 black l \"min size (black)\" R 0 100}\n black 1\n addUserKnob {7 white l \"max size (white)\" R 0 100}\n white 20\n addUserKnob {41 multiplier T ZDefocus.size}\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {26 version_author l \" \" t \"iConvolve v0.1\\n2019\" T \"<span style=\\\"color:#666\\\"><br/><b>iConvolve v0.1</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2019</span>\"}\n}\n Input {\n  inputs 0\n  name Inputfilter\n  xpos -152\n  ypos 64\n  number 1\n }\n Input {\n  inputs 0\n  name InputctrlMask\n  xpos -152\n  ypos -141\n  number 2\n }\nset Nd1202bf0 [stack 0]\npush $Nd1202bf0\n ChannelMerge {\n  inputs 2\n  B none\n  output rgba.red\n  bbox A\n  name ChannelMerge1\n  xpos -152\n  ypos -115\n }\nadd_layer {iConvolve iConvolve.red iConvolve.green iConvolve.blue iConvolve.alpha}\n Shuffle {\n  green red\n  blue red\n  alpha red\n  out iConvolve\n  name ShuffleI\n  xpos -152\n  ypos -65\n }\n Clamp {\n  channels iConvolve\n  name ClampI\n  xpos -152\n  ypos -39\n }\n Grade {\n  channels iConvolve\n  black {{parent.black}}\n  white {{parent.white}}\n  name GradeI\n  xpos -152\n  ypos -1\n }\n Input {\n  inputs 0\n  name Inputimage\n  xpos 0\n  ypos -58\n }\n Copy {\n  inputs 2\n  from0 iConvolve.red\n  to0 iConvolve.red\n  bbox B\n  name CopyI\n  xpos 0\n  ypos -1\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  z_channel iConvolve.red\n  math direct\n  focal_point {350 260}\n  size 1\n  max_size {{parent.white*size.w} {parent.white*size.h}}\n  filter_type {{\"\\[exists parent.input1] ? 2 : 0\"}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  name ZDefocus\n  onCreate \"n = nuke.thisNode()\\nn.knob('focal_point').setFlag(0x00008000)\\n\"\n  selected true\n  xpos 0\n  ypos 60\n }\n Remove {\n  channels iConvolve\n  name RemoveI\n  xpos 0\n  ypos 98\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 161\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iErode.gizmo",
    "content": "Group {\n name iErode\n onCreate \"n = nuke.thisNode()\\nn.knob('blur').setRange(-100, 100)\"\n tile_color 0xcc804e00\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 controls l Controls}\n addUserKnob {41 channels T Erode_master.channels}\n addUserKnob {14 blur l size R -100 100}\n addUserKnob {41 filter T Erode_master.filter}\n addUserKnob {26 \"\"}\n addUserKnob {3 quality l Quality}\n quality 12\n addUserKnob {6 exp l Expo +STARTLINE}\n exp true\n addUserKnob {20 info}\n addUserKnob {26 author l Author: T \"Phil Prates - pratesphil@gmail.com\"}\n addUserKnob {26 ver l Version: T 1.0}\n addUserKnob {26 changelog l \"\" +STARTLINE +INVISIBLE T \"1.0 - First \\npublic release of pp_erode\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -992\n  ypos 451\n  number 1\n }\n Shuffle {\n  alpha white\n  name add_alpha\n  xpos -992\n  ypos 643\n  disable {{\"\\[string first \\\".a\\\" \\[channels \\[input this 0]]]>-1\"}}\n }\n Dot {\n  name Dot8\n  xpos -961\n  ypos 797\n }\n Dot {\n  name Dot6\n  xpos -642\n  ypos 797\n }\nset N7ea400 [stack 0]\n Dot {\n  name Dot1\n  xpos -453\n  ypos 797\n }\nset N7e9d00 [stack 0]\n Dot {\n  name Dot7\n  xpos -251\n  ypos 797\n }\nset N7e9600 [stack 0]\n Dot {\n  name Dot10\n  xpos -51\n  ypos 797\n }\nset N7e8f00 [stack 0]\n Dot {\n  name Dot16\n  xpos 133\n  ypos 797\n }\nset N7e8800 [stack 0]\n Dot {\n  name Dot15\n  xpos 333\n  ypos 797\n }\nset N7e8100 [stack 0]\n Dot {\n  name Dot13\n  xpos 535\n  ypos 797\n }\nset Nf4ce7900 [stack 0]\n Dot {\n  name Dot12\n  xpos 724\n  ypos 797\n }\nset Nf4ce7200 [stack 0]\n Dot {\n  name Dot28\n  xpos 918\n  ypos 797\n }\nset Nf4ce6b00 [stack 0]\n Dot {\n  name Dot27\n  xpos 1107\n  ypos 797\n }\nset Nf4ce6400 [stack 0]\n Dot {\n  name Dot26\n  xpos 1309\n  ypos 797\n }\nset Nf4ce5d00 [stack 0]\n Dot {\n  name Dot25\n  xpos 1509\n  ypos 797\n }\nset Nf4ce5600 [stack 0]\n Dot {\n  name Dot24\n  xpos 1693\n  ypos 797\n }\nset Nf4ce4f00 [stack 0]\n Dot {\n  name Dot23\n  xpos 1893\n  ypos 797\n }\nset Nf4ce4800 [stack 0]\n Dot {\n  name Dot22\n  xpos 2095\n  ypos 797\n }\nset Nf4ce4100 [stack 0]\n Dot {\n  name Dot21\n  xpos 2284\n  ypos 797\n }\nset Nf4ccf900 [stack 0]\n Dot {\n  name Dot37\n  xpos 2465\n  ypos 797\n }\nset Nf4ccf200 [stack 0]\n Dot {\n  name Dot39\n  xpos 2654\n  ypos 797\n }\nset Nf4cceb00 [stack 0]\n Dot {\n  name Dot41\n  xpos 2856\n  ypos 797\n }\nset Nf4cce400 [stack 0]\n Dot {\n  name Dot43\n  xpos 3056\n  ypos 797\n }\nset Nf4ccdd00 [stack 0]\n Dot {\n  name Dot45\n  xpos 3240\n  ypos 797\n }\nset Nf4ccd600 [stack 0]\n Dot {\n  name Dot47\n  xpos 3440\n  ypos 797\n }\nset Nf4cccf00 [stack 0]\n Dot {\n  name Dot49\n  xpos 3642\n  ypos 797\n }\nset Nf4ccc800 [stack 0]\n Dot {\n  name Dot51\n  xpos 3831\n  ypos 797\n }\nset Nf4ccc100 [stack 0]\n Dot {\n  name Dot53\n  xpos 4013\n  ypos 797\n }\nset Nf4cab900 [stack 0]\n Dot {\n  name Dot55\n  xpos 4202\n  ypos 797\n }\nset Nf4cab200 [stack 0]\n Dot {\n  name Dot57\n  xpos 4404\n  ypos 797\n }\nset Nf4caab00 [stack 0]\n Dot {\n  name Dot59\n  xpos 4604\n  ypos 797\n }\nset Nf4caa400 [stack 0]\n Dot {\n  name Dot61\n  xpos 4788\n  ypos 797\n }\nset Nf4ca9d00 [stack 0]\n Dot {\n  name Dot63\n  xpos 4988\n  ypos 797\n }\nset Nf4ca9600 [stack 0]\n Dot {\n  name Dot65\n  xpos 5190\n  ypos 797\n }\nset Nf4ca8f00 [stack 0]\n Dot {\n  name Dot67\n  xpos 5379\n  ypos 797\n }\nset Nf4ca8800 [stack 0]\n Dot {\n  name Dot76\n  xpos 5562\n  ypos 797\n }\nset Nf4ca8100 [stack 0]\n Dot {\n  name Dot75\n  xpos 5751\n  ypos 797\n }\nset Nf4c93900 [stack 0]\n Dot {\n  name Dot74\n  xpos 5953\n  ypos 797\n }\nset Nf4c93200 [stack 0]\n Dot {\n  name Dot73\n  xpos 6153\n  ypos 797\n }\nset Nf4c92b00 [stack 0]\n Dot {\n  name Dot72\n  xpos 6337\n  ypos 797\n }\nset Nf4c92400 [stack 0]\n Dot {\n  name Dot71\n  xpos 6537\n  ypos 797\n }\nset Nf4c91d00 [stack 0]\n Dot {\n  name Dot70\n  xpos 6739\n  ypos 797\n }\nset Nf4c91600 [stack 0]\n Dot {\n  name Dot69\n  xpos 6928\n  ypos 797\n }\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_40\n  xpos 6897\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\n Input {\n  inputs 0\n  name Input\n  xpos -815\n  ypos 452\n }\n Dot {\n  name Dot2\n  xpos -784\n  ypos 704\n }\nset Nf4df0800 [stack 0]\n Dot {\n  name Dot3\n  xpos -593\n  ypos 704\n }\nset Nf4df0100 [stack 0]\n Dot {\n  name Dot5\n  xpos -404\n  ypos 704\n }\nset Nf4de3900 [stack 0]\n Dot {\n  name Dot9\n  xpos -202\n  ypos 704\n }\nset Nf4de3200 [stack 0]\n Dot {\n  name Dot11\n  xpos -2\n  ypos 704\n }\nset Nf4de2b00 [stack 0]\n Dot {\n  name Dot20\n  xpos 170\n  ypos 704\n }\nset Nf4de2400 [stack 0]\n Dot {\n  name Dot19\n  xpos 370\n  ypos 704\n }\nset Nf4de1d00 [stack 0]\n Dot {\n  name Dot18\n  xpos 572\n  ypos 704\n }\nset Nf4de1600 [stack 0]\n Dot {\n  name Dot17\n  xpos 761\n  ypos 704\n }\nset Nf4de0f00 [stack 0]\n Dot {\n  name Dot36\n  xpos 937\n  ypos 704\n }\nset Nf4de0800 [stack 0]\n Dot {\n  name Dot35\n  xpos 1126\n  ypos 704\n }\nset Nf4de0100 [stack 0]\n Dot {\n  name Dot34\n  xpos 1328\n  ypos 704\n }\nset Nf4dcb900 [stack 0]\n Dot {\n  name Dot33\n  xpos 1528\n  ypos 704\n }\nset Nf4dcb200 [stack 0]\n Dot {\n  name Dot32\n  xpos 1700\n  ypos 704\n }\nset Nf4dcab00 [stack 0]\n Dot {\n  name Dot31\n  xpos 1900\n  ypos 704\n }\nset Nf4dca400 [stack 0]\n Dot {\n  name Dot30\n  xpos 2102\n  ypos 704\n }\nset Nf4dc9d00 [stack 0]\n Dot {\n  name Dot29\n  xpos 2291\n  ypos 704\n }\nset Nf4dc9600 [stack 0]\n Dot {\n  name Dot38\n  xpos 2514\n  ypos 704\n }\nset Nf4dc8f00 [stack 0]\n Dot {\n  name Dot40\n  xpos 2703\n  ypos 704\n }\nset Nf4dc8800 [stack 0]\n Dot {\n  name Dot42\n  xpos 2905\n  ypos 704\n }\nset Nf4dc8100 [stack 0]\n Dot {\n  name Dot44\n  xpos 3105\n  ypos 704\n }\nset Nf4db3900 [stack 0]\n Dot {\n  name Dot46\n  xpos 3277\n  ypos 704\n }\nset Nf4db3200 [stack 0]\n Dot {\n  name Dot48\n  xpos 3477\n  ypos 704\n }\nset Nf4db2b00 [stack 0]\n Dot {\n  name Dot50\n  xpos 3679\n  ypos 704\n }\nset Nf4db2400 [stack 0]\n Dot {\n  name Dot52\n  xpos 3868\n  ypos 704\n }\nset Nf4db1d00 [stack 0]\n Dot {\n  name Dot54\n  xpos 4062\n  ypos 704\n }\nset Nf4db1600 [stack 0]\n Dot {\n  name Dot56\n  xpos 4251\n  ypos 704\n }\nset Nf4db0f00 [stack 0]\n Dot {\n  name Dot58\n  xpos 4453\n  ypos 704\n }\nset Nf4db0800 [stack 0]\n Dot {\n  name Dot60\n  xpos 4653\n  ypos 704\n }\nset Nf4db0100 [stack 0]\n Dot {\n  name Dot62\n  xpos 4825\n  ypos 704\n }\nset Nf4d9f900 [stack 0]\n Dot {\n  name Dot64\n  xpos 5025\n  ypos 704\n }\nset Nf4d9f200 [stack 0]\n Dot {\n  name Dot66\n  xpos 5227\n  ypos 704\n }\nset Nf4d9eb00 [stack 0]\n Dot {\n  name Dot68\n  xpos 5416\n  ypos 704\n }\nset Nf4d9e400 [stack 0]\n Dot {\n  name Dot84\n  xpos 5589\n  ypos 704\n }\nset Nf4d9dd00 [stack 0]\n Dot {\n  name Dot83\n  xpos 5778\n  ypos 704\n }\nset Nf4d9d600 [stack 0]\n Dot {\n  name Dot82\n  xpos 5980\n  ypos 704\n }\nset Nf4d9cf00 [stack 0]\n Dot {\n  name Dot81\n  xpos 6180\n  ypos 704\n }\nset Nf4d9c800 [stack 0]\n Dot {\n  name Dot80\n  xpos 6352\n  ypos 704\n }\nset Nf4d9c100 [stack 0]\n Dot {\n  name Dot79\n  xpos 6552\n  ypos 704\n }\nset Nf4d7b900 [stack 0]\n Dot {\n  name Dot78\n  xpos 6754\n  ypos 704\n }\nset Nf4d7b200 [stack 0]\n Dot {\n  name Dot77\n  xpos 6943\n  ypos 704\n }\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_40\n  xpos 6975\n  ypos 737\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c91600\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_39\n  xpos 6708\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d7b200\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_39\n  xpos 6786\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c91d00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_38\n  xpos 6506\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d7b900\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_38\n  xpos 6584\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c92400\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_37\n  xpos 6306\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9c100\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_37\n  xpos 6384\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c92b00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_36\n  xpos 6122\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9c800\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_36\n  xpos 6211\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c93200\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_35\n  xpos 5922\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9cf00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_35\n  xpos 6011\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4c93900\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_34\n  xpos 5720\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9d600\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_34\n  xpos 5809\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ca8100\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_33\n  xpos 5531\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9dd00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_33\n  xpos 5620\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ca8800\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_32\n  xpos 5348\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9e400\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_32\n  xpos 5440\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ca8f00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_31\n  xpos 5159\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9eb00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_31\n  xpos 5251\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ca9600\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_30\n  xpos 4957\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9f200\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_30\n  xpos 5049\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ca9d00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_29\n  xpos 4757\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4d9f900\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_29\n  xpos 4849\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4caa400\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_28\n  xpos 4573\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db0100\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_28\n  xpos 4676\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4caab00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_27\n  xpos 4373\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db0800\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_27\n  xpos 4476\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4cab200\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_26\n  xpos 4171\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db0f00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_26\n  xpos 4274\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4cab900\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_25\n  xpos 3982\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db1600\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_25\n  xpos 4085\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccc100\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_24\n  xpos 3800\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db1d00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_24\n  xpos 3892\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccc800\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_23\n  xpos 3611\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db2400\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_23\n  xpos 3703\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4cccf00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_22\n  xpos 3409\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db2b00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_22\n  xpos 3501\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccd600\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_21\n  xpos 3209\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db3200\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_21\n  xpos 3301\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccdd00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_20\n  xpos 3025\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4db3900\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_20\n  xpos 3128\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4cce400\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_19\n  xpos 2825\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dc8100\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_19\n  xpos 2928\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4cceb00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_18\n  xpos 2623\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dc8800\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_18\n  xpos 2726\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccf200\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_17\n  xpos 2434\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dc8f00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_17\n  xpos 2537\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ccf900\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_16\n  xpos 2253\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dc9600\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_16\n  xpos 2334\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce4100\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_15\n  xpos 2064\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dc9d00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_15\n  xpos 2145\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce4800\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_14\n  xpos 1862\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dca400\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_14\n  xpos 1943\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce4f00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_13\n  xpos 1662\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dcab00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_13\n  xpos 1743\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce5600\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_12\n  xpos 1478\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dcb200\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_12\n  xpos 1570\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce5d00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_11\n  xpos 1278\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4dcb900\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_11\n  xpos 1370\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce6400\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_10\n  xpos 1076\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de0100\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_10\n  xpos 1168\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce6b00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_9\n  xpos 887\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de0800\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_9\n  xpos 979\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce7200\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_8\n  xpos 693\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de0f00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_8\n  xpos 785\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4ce7900\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_7\n  xpos 504\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de1600\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_7\n  xpos 596\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7e8100\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_6\n  xpos 302\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de1d00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_6\n  xpos 394\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7e8800\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_5\n  xpos 102\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de2400\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_5\n  xpos 194\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7e8f00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_4\n  xpos -82\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de2b00\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_4\n  xpos 21\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7e9600\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_3\n  xpos -282\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de3200\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_3\n  xpos -179\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7e9d00\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_2\n  xpos -484\n  ypos 850\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4de3900\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_2\n  xpos -381\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $N7ea400\n Grade {\n  channels alpha\n  blackpoint {{parent.exp==1?expAmnt.x:linAmnt.x}}\n  whitepoint {{parent.exp==1?expAmnt.y:linAmnt.y}}\n  name Grade_1\n  xpos -676\n  ypos 851\n  addUserKnob {20 User}\n  addUserKnob {12 linAmnt l \"\" +STARTLINE}\n  linAmnt {{(ittNum-1)/parent.Erode_master.quality} {ittNum/parent.Erode_master.quality}}\n  addUserKnob {12 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum-1)/pow2(parent.Erode_master.quality)} {pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4df0100\n FilterErode {\n  channels {{{parent.Erode_master.channels}}}\n  size {{parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt} {parent.exp==1?-parent.blur*expAmnt:-parent.blur*linAmnt}}\n  filter {{parent.Erode_master.filter}}\n  name FilterErode_1\n  xpos -570\n  ypos 738\n  addUserKnob {20 User}\n  addUserKnob {7 linAmnt l \"\" +STARTLINE}\n  linAmnt {{ittNum/parent.Erode_master.quality}}\n  addUserKnob {7 expAmnt l \"\" +STARTLINE}\n  expAmnt {{pow2(ittNum)/pow2(parent.Erode_master.quality)}}\n  addUserKnob {3 ittNum l \"\" +STARTLINE}\n  ittNum {{\"\\[lrange \\[split \\[value name] _] 1 1]\"}}\n }\npush $Nf4df0800\n Dot {\n  name Dot4\n  xpos -784\n  ypos 939\n }\nset Nf4898100 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix1\n  xpos -570\n  ypos 932\n }\nset Nf4883900 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix2\n  xpos -381\n  ypos 932\n }\nset Nf4883200 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix3\n  xpos -179\n  ypos 932\n }\nset Nf4882b00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix4\n  xpos 21\n  ypos 932\n }\nset Nf4882400 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix8\n  xpos 194\n  ypos 932\n }\nset Nf4881d00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix7\n  xpos 394\n  ypos 932\n }\nset Nf4881600 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix6\n  xpos 596\n  ypos 932\n }\nset Nf4880f00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix5\n  xpos 785\n  ypos 932\n }\nset Nf4880800 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix16\n  xpos 979\n  ypos 932\n }\nset Nf4880100 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix15\n  xpos 1168\n  ypos 932\n }\nset Nf4853900 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix14\n  xpos 1370\n  ypos 932\n }\nset Nf4853200 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix13\n  xpos 1570\n  ypos 932\n }\nset Nf4852b00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix12\n  xpos 1743\n  ypos 932\n }\nset Nf4852400 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix11\n  xpos 1943\n  ypos 932\n }\nset Nf4851d00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix10\n  xpos 2145\n  ypos 932\n }\nset Nf4851600 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix9\n  xpos 2334\n  ypos 932\n }\nset Nf4850f00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix17\n  xpos 2537\n  ypos 932\n }\nset Nf4850800 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix18\n  xpos 2726\n  ypos 932\n }\nset Nf4850100 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix19\n  xpos 2928\n  ypos 932\n }\nset Nf482b900 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix20\n  xpos 3128\n  ypos 932\n }\nset Nf482b200 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix21\n  xpos 3301\n  ypos 932\n }\nset Nf482ab00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix22\n  xpos 3501\n  ypos 932\n }\nset Nf482a400 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix23\n  xpos 3703\n  ypos 932\n }\nset Nf4829d00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix24\n  xpos 3892\n  ypos 932\n }\nset Nf4829600 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix25\n  xpos 4085\n  ypos 932\n }\nset Nf4828f00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix26\n  xpos 4274\n  ypos 932\n }\nset Nf4828800 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix27\n  xpos 4476\n  ypos 932\n }\nset Nf4828100 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix28\n  xpos 4676\n  ypos 932\n }\nset Nf49f3900 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix29\n  xpos 4849\n  ypos 932\n }\nset Nf49f3200 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix30\n  xpos 5049\n  ypos 932\n }\nset Nf49f2b00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix31\n  xpos 5251\n  ypos 932\n }\nset Nf49f2400 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix32\n  xpos 5440\n  ypos 932\n }\nset Nf49f1d00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix40\n  xpos 5620\n  ypos 932\n }\nset Nf49f1600 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix39\n  xpos 5809\n  ypos 932\n }\nset Nf49f0f00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix38\n  xpos 6011\n  ypos 932\n }\nset Nf49f0800 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix37\n  xpos 6211\n  ypos 932\n }\nset Nf49f0100 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix36\n  xpos 6384\n  ypos 932\n }\nset Nf49c3900 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix35\n  xpos 6584\n  ypos 932\n }\nset Nf49c3200 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix34\n  xpos 6786\n  ypos 932\n }\nset Nf49c2b00 [stack 0]\n Keymix {\n  inputs 3\n  bbox A\n  name Keymix33\n  xpos 6975\n  ypos 932\n }\npush $Nf49c2b00\npush $Nf49c3200\npush $Nf49c3900\npush $Nf49f0100\npush $Nf49f0800\npush $Nf49f0f00\npush $Nf49f1600\npush $Nf49f1d00\npush $Nf49f2400\npush $Nf49f2b00\npush $Nf49f3200\npush $Nf49f3900\npush $Nf4828100\npush $Nf4828800\npush $Nf4828f00\npush $Nf4829600\npush $Nf4829d00\npush $Nf482a400\npush $Nf482ab00\npush $Nf482b200\npush $Nf482b900\npush $Nf4850100\npush $Nf4850800\npush $Nf4850f00\npush $Nf4851600\npush $Nf4851d00\npush $Nf4852400\npush $Nf4852b00\npush $Nf4853200\npush $Nf4853900\npush $Nf4880100\npush $Nf4880800\npush $Nf4880f00\npush $Nf4881600\npush $Nf4881d00\npush $Nf4882400\npush $Nf4882b00\npush $Nf4883200\npush 0\npush $Nf4883900\npush $Nf4898100\n Dot {\n  name Dot14\n  xpos -784\n  ypos 1002\n }\n Dissolve {\n  inputs 41+1\n  which {{parent.Erode_master.quality}}\n  name Dissolve1\n  xpos 3128\n  ypos 2149\n }\n Output {\n  name Output1\n  xpos 3128\n  ypos 2338\n }\n FilterErode {\n  inputs 0\n  channels rgba\n  filter gaussian\n  name Erode_master\n  xpos 2876\n  ypos -169\n  addUserKnob {20 User}\n  addUserKnob {7 quality l Qualitty}\n  quality {{parent.add_alpha.disable==1?parent.quality:1}}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iMorph.gizmo",
    "content": "Group {\n name iMorph\n tile_color 0x890074ff\n note_font \"Bitstream Vera Sans Bold Bold\"\n selected true\n addUserKnob {20 iMorph}\n addUserKnob {41 maskChannel T TimeMachine_v02_4.maskChannel}\n addUserKnob {26 \"\"}\n addUserKnob {41 method l \"<font color=skyblue><b>Morph Method </b></font color=skyblue>\" T Morph_Dissolve_v01_5.method}\n addUserKnob {41 vectorDetail l \"Vector Detail\" T Morph_Dissolve_v01_5.vectorDetail}\n addUserKnob {41 strength l Strength T Morph_Dissolve_v01_5.strength}\n addUserKnob {26 TransitionBlend l \"<font color=skyblue><b>Transition Blend</b></font color=skyblue>\" T \" \"}\n addUserKnob {41 method_1 l \"\" -STARTLINE T TimeMachine_v02_4.method}\n addUserKnob {26 \"\"}\n addUserKnob {41 numpixels l AdjustBBox T AdjBBox3.numpixels}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode18\n  tile_color 0x46313d00\n  label \"Amazing Morph Disolve\"\n  note_font_size 50\n  note_font_color 0xffffffff\n  xpos 147\n  ypos -310\n  bdwidth 681\n  bdheight 464\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 675\n  ypos -97\n  number 2\n }\n Dot {\n  name Dot236\n  label mask\n  note_font_size 41\n  xpos 709\n  ypos -3\n }\n TimeWarp {\n  lookup {{floor(frame/10) C x1001 1001 x1092 1092}}\n  time \"\"\n  filter none\n  name TimeWarp6\n  xpos 555\n  ypos -7\n }\n Input {\n  inputs 0\n  name InputB\n  xpos 296\n  ypos -370\n  number 1\n }\n AddChannels {\n  channels rgba\n  color 1\n  name AddChannels1\n  xpos 296\n  ypos -234\n }\n Dot {\n  name Dot242\n  label B\n  note_font_size 41\n  xpos 330\n  ypos -192\n }\n TimeWarp {\n  lookup {{floor(frame/10) C x1001 1001 x1092 1092}}\n  time \"\"\n  filter none\n  name TimeWarp2\n  xpos 296\n  ypos -150\n }\nset N1a221110 [stack 0]\n AdjBBox {\n  numpixels 100\n  name AdjBBox3\n  xpos 296\n  ypos -47\n }\npush $N1a221110\n Input {\n  inputs 0\n  name InputA\n  xpos 531\n  ypos -362\n }\n AddChannels {\n  channels rgba\n  color 1\n  name AddChannels2\n  xpos 531\n  ypos -234\n }\n Dot {\n  name Dot237\n  label A\n  note_font_size 41\n  xpos 565\n  ypos -198\n }\n TimeWarp {\n  lookup {{floor(frame/10) C x1001 1001 x1092 1092}}\n  time \"\"\n  filter none\n  name TimeWarp3\n  xpos 531\n  ypos -152\n }\n Group {\n  inputs 2\n  name Morph_Dissolve_v01_5\n  help \"Allows to morph between two moving plates automatically, or can be used to improve manual Morphs.\"\n  tile_color 0x890074ff\n  label \"(Plate \\[value morph])\"\n  xpos 420\n  ypos -79\n  addUserKnob {20 User}\n  addUserKnob {7 morph l Morph t \"Morphs between input 0 and input 1\"}\n  morph {{((frame%10)/(1-1/10))/10}}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 method l \"Morph Method\" t \"Pick which method to use. They may both display artifacts in different areas, try both to see which one produces the best results for your specific morph.\" M {iDistort Kronos \"\"}}\n  method Kronos\n  addUserKnob {7 vectorDetail l \"Vector Detail\" t \"Use this to adjust the density of the calculated motion vector field. Higher details capture finer movements, but take will longer to calculate.\" R 0.01 1}\n  vectorDetail 0.75\n  addUserKnob {7 strength l Strength t \"Match Strength : Stonger values will match larger differences between the two plates.\" R 0 1.5}\n  strength 1.5\n  addUserKnob {26 \"\"}\n  addUserKnob {26 copyright l \"\" +STARTLINE T \"v1.0 - by Erwan Leroy - 2017\"}\n }\n  BackdropNode {\n   inputs 0\n   name Backdrop1\n   tile_color 0x5b4e5658\n   label Zipping\n   note_font_size 40\n   xpos 600\n   ypos -55\n   bdwidth 180\n   bdheight 241\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos 1355\n   ypos -123\n   number 1\n  }\n  Dot {\n   name Dot3\n   tile_color 0xcccccc00\n   xpos 1389\n   ypos -72\n  }\nset N1a2022a0 [stack 0]\n  Dot {\n   name Dot8\n   tile_color 0xcccccc00\n   xpos 1389\n   ypos 1115\n  }\npush $N1a2022a0\n  Dot {\n   name Dot13\n   tile_color 0xcccccc00\n   xpos 1247\n   ypos -72\n  }\n  NoTimeBlur {\n   rounding floor\n   single false\n   name NoTimeBlur2\n   xpos 1213\n   ypos -15\n  }\n  Retime {\n   input.first 1001\n   input.first_lock true\n   output.first 1001\n   output.last 1002\n   speed 0.5\n   before continue\n   after continue\n   filter none\n   time \"\"\n   name Retime2\n   label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n   xpos 1213\n   ypos 23\n  }\n  Input {\n   inputs 0\n   name Input0\n   xpos -24\n   ypos -121\n  }\n  Dot {\n   name Dot4\n   tile_color 0xcccccc00\n   xpos 10\n   ypos -75\n  }\nset N1a28d430 [stack 0]\n  Dot {\n   name Dot14\n   tile_color 0xcccccc00\n   xpos 155\n   ypos -75\n  }\n  NoTimeBlur {\n   rounding floor\n   single false\n   name NoTimeBlur1\n   xpos 121\n   ypos -13\n  }\n  Retime {\n   input.first 1001\n   input.first_lock true\n   input.last 1218\n   output.first 1001\n   output.last 1436\n   speed 0.5\n   before continue\n   after continue\n   filter none\n   time \"\"\n   name Retime1\n   label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n   xpos 121\n   ypos 23\n  }\n  Switch {\n   inputs 2\n   which {{(frame-1001)%2}}\n   name Switch1\n   xpos 650\n   ypos 35\n  }\n  Dot {\n   name Dot9\n   tile_color 0xcccccc00\n   xpos 684\n   ypos 124\n  }\nset N1a2b56c0 [stack 0]\n  Dot {\n   name Dot2\n   tile_color 0xcccccc00\n   xpos 985\n   ypos 124\n  }\n  Kronos {\n   retimedChannels all\n   timing2 Frame\n   timingFrame2 {{(frame-1001)*2+1001+parent.morph}}\n   showLegacyMode false\n   motionEstimation Regularized\n   vectorDetailReg {{parent.vectorDetail}}\n   strengthReg {{parent.strength}}\n   legacyModeNuke9 false\n   name Kronos1\n   xpos 951\n   ypos 273\n  }\n  Dot {\n   name Dot12\n   tile_color 0xcccccc00\n   xpos 985\n   ypos 858\n  }\npush $N1a2b56c0\n  Dot {\n   name Dot10\n   tile_color 0xcccccc00\n   xpos 415\n   ypos 124\n  }\n  VectorGenerator {\n   motionEstimation Regularized\n   vectorDetailReg {{parent.vectorDetail}}\n   strengthReg {{parent.strength}}\n   name VectorGenerator1\n   xpos 381\n   ypos 276\n  }\n  Dot {\n   name Dot1\n   tile_color 0xcccccc00\n   xpos 415\n   ypos 350\n  }\nset N1e550e80 [stack 0]\n  Shuffle {\n   in backward\n   blue black\n   alpha black\n   name Shuffle2\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 217\n   ypos 340\n  }\n  TimeOffset {\n   time_offset -1\n   time \"\"\n   name TimeOffset2\n   label \"\\[value time_offset]\"\n   xpos 217\n   ypos 484\n  }\npush $N1e550e80\n  Shuffle {\n   in forward\n   blue black\n   alpha black\n   name Shuffle1\n   label \"in \\[value in]-->out \\[value out]\"\n   xpos 560\n   ypos 340\n  }\n  TimeOffset {\n   time_offset 1\n   time \"\"\n   name TimeOffset1\n   label \"\\[value time_offset]\"\n   xpos 560\n   ypos 414\n  }\npush $N1e550e80\n  Copy {\n   inputs 2\n   from0 forward.u\n   to0 forward.u\n   from1 forward.v\n   to1 forward.v\n   bbox B\n   name Copy1\n   xpos 381\n   ypos 408\n  }\n  Copy {\n   inputs 2\n   from0 backward.u\n   to0 backward.u\n   from1 backward.v\n   to1 backward.v\n   bbox B\n   name Copy2\n   xpos 381\n   ypos 478\n  }\nset N1e5965d0 [stack 0]\n  Retime {\n   input.first 1000\n   input.first_lock true\n   input.last 1002\n   output.first 1000\n   output.last 1001\n   speed 2\n   before continue\n   after continue\n   filter none\n   time \"\"\n   name Retime4\n   label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n   xpos 459\n   ypos 559\n  }\n  IDistort {\n   uv forward\n   uv_scale {{1-parent.morph}}\n   name IDistort2\n   xpos 459\n   ypos 628\n  }\npush $N1e5965d0\n  Retime {\n   input.first 1001\n   input.first_lock true\n   input.last 1436\n   output.first 1001\n   output.last 1218\n   speed 2\n   before continue\n   after continue\n   filter none\n   time \"\"\n   name Retime3\n   label \"x\\[value input.first]-->x\\[value output.first]\\n\\[if \\{\\[value speed] == 1\\} then \\{return \\\"\\\"\\} else \\{return \\\"spd \\[value speed]\\\"\\}]\"\n   xpos 308\n   ypos 559\n  }\n  IDistort {\n   uv backward\n   uv_scale {{parent.morph}}\n   name IDistort1\n   xpos 308\n   ypos 624\n  }\n  Dissolve {\n   inputs 2\n   which {{parent.morph}}\n   name Dissolve1\n   xpos 379\n   ypos 710\n  }\n  Dot {\n   name Dot11\n   tile_color 0xcccccc00\n   xpos 413\n   ypos 858\n  }\n  Switch {\n   inputs 2\n   which {{parent.method}}\n   name Switch3\n   xpos 627\n   ypos 854\n  }\npush $N1a28d430\n  Dot {\n   name Dot7\n   tile_color 0xcccccc00\n   xpos 10\n   ypos 1115\n  }\n  Switch {\n   inputs 3\n   which {{parent.morph<=0?0:parent.morph>=1?2:1}}\n   name Switch2\n   xpos 627\n   ypos 1111\n  }\n  Output {\n   name Output1\n   xpos 627\n   ypos 1205\n  }\n end_group\n CopyBBox {\n  inputs 2\n  name CopyBBox3\n  xpos 420\n  ypos -47\n }\n Group {\n  inputs 2\n  name TimeMachine_v02_4\n  help \"Does a per-pixel time offset on the image, based on a secondary mask input.\\n\\nPixels with a mask value of 1 will be offset by the number of frames set in \\\"frames\\\".\\nMask values of 0 will return the image at the current frame. Values between 0-1 will return an interpolated offset.\"\n  knobChanged \"\\n\\ng = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() in \\[\\\"frames\\\",\\\"method\\\"]:\\n    \\n    i = nuke.toNode(\\\"img\\\")\\n    i2 = nuke.toNode(\\\"mask\\\")\\n    o = nuke.toNode(\\\"Output1\\\")\\n    c = nuke.toNode(\\\"Copy1\\\")\\n\\n    if k.name() == \\\"frames\\\":\\n    \\n        defaultNodes = \\[i,i2,o,c]\\n        for n in nuke.allNodes():\\n           if n not in defaultNodes:\\n               nuke.delete(n)\\n        \\n        fvalue = g\\['frames'].value()\\n        step = 1\\n        if fvalue < 0:\\n           step = -1\\n          \\n        for f in range(0,int(fvalue)+step,step):\\n           t = nuke.nodes.TimeOffset()\\n           t\\['time_offset'].setValue(-f)\\n           t.setInput(0,i)\\n        \\n           if f == 0 :\\n               lastnode = t\\n        \\n           else :\\n               slice = nuke.nodes.Grade()\\n               slice\\['channels'].setValue(\\\"alpha\\\")\\n               slice\\['blackpoint'].setValue(abs((1/(fvalue+1))*abs(f)))\\n               slice\\['whitepoint'].setValue(abs((1/(fvalue+1))*(abs(f)+1)))\\n               slice.setInput(0,c)\\n               exp = nuke.nodes.Expression()\\n               if g\\['method'].value() == \\\"average\\\":\\n                   exp\\['expr3'].setValue('a>1?1:a')\\n               else:\\n                   exp\\['expr3'].setValue('a>0?1:0')\\n               exp.setInput(0,slice)\\n               km = nuke.nodes.Keymix()\\n               km.setInput(1,t)\\n               km.setInput(0,lastnode)\\n               km.setInput(2,exp)\\n               lastnode = km\\n        \\n        sw = nuke.nodes.Switch()\\n        sw.setInput(0,i)\\n        sw.setInput(1,lastnode)\\n        sw\\['which'].setExpression('parent.maskChannel!=0')\\n        o.setInput(0,sw)\\n            \\n        for n in nuke.allNodes():\\n           nuke.autoplace(n)\\n\\n    elif k.name() == \\\"method\\\":\\n\\n        for e in nuke.allNodes('Expression'):\\n               if g\\['method'].value() == \\\"average\\\":\\n                   e\\['expr3'].setValue('a>1?1:a')\\n               else:\\n                   e\\['expr3'].setValue('a>0?1:0')\\n\\n\"\n  xpos 420\n  ypos -7\n  addUserKnob {20 User}\n  addUserKnob {41 maskChannel T Copy1.from0}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 method M {nearest average}}\n  method average\n  addUserKnob {3 frames}\n  frames 9\n }\n  Input {\n   inputs 0\n   name mask\n   xpos 400\n   ypos -228\n   number 1\n  }\nset N1e613b20 [stack 0]\npush $N1e613b20\n  Copy {\n   inputs 2\n   from0 rgba.alpha\n   name Copy1\n   xpos 400\n   ypos -80\n  }\nset N1e618660 [stack 0]\n  Grade {\n   channels alpha\n   blackpoint 0.9\n   name Grade9\n   xpos 1280\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression9\n   xpos 1280\n   ypos -4\n  }\n  Input {\n   inputs 0\n   name img\n   xpos 154\n   ypos -369\n  }\nset N1e644ce0 [stack 0]\n  TimeOffset {\n   time_offset -9\n   time \"\"\n   name TimeOffset10\n   xpos 1012\n   ypos -124\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.8\n   whitepoint 0.9\n   name Grade8\n   xpos 1170\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression8\n   xpos 1170\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -8\n   time \"\"\n   name TimeOffset9\n   xpos 902\n   ypos -124\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.7\n   whitepoint 0.8\n   name Grade7\n   xpos 1060\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression7\n   xpos 1060\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -7\n   time \"\"\n   name TimeOffset8\n   xpos 792\n   ypos -124\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.6\n   whitepoint 0.7\n   name Grade6\n   xpos 950\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression6\n   xpos 950\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -6\n   time \"\"\n   name TimeOffset7\n   xpos 682\n   ypos -124\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.5\n   whitepoint 0.6\n   name Grade5\n   xpos 840\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression5\n   xpos 840\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -5\n   time \"\"\n   name TimeOffset6\n   xpos 572\n   ypos -124\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.4\n   whitepoint 0.5\n   name Grade4\n   xpos 730\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression4\n   xpos 730\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -4\n   time \"\"\n   name TimeOffset5\n   xpos 470\n   ypos -123\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.3\n   whitepoint 0.4\n   name Grade3\n   xpos 620\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression3\n   xpos 620\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -3\n   time \"\"\n   name TimeOffset4\n   xpos 350\n   ypos -121\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.2\n   whitepoint 0.3\n   name Grade2\n   xpos 510\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression2\n   xpos 510\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -2\n   time \"\"\n   name TimeOffset3\n   xpos 249\n   ypos -126\n  }\npush $N1e618660\n  Grade {\n   channels alpha\n   blackpoint 0.1\n   whitepoint 0.2\n   name Grade1\n   xpos 400\n   ypos -42\n  }\n  Expression {\n   expr3 a>1?1:a\n   name Expression1\n   xpos 400\n   ypos -4\n  }\npush $N1e644ce0\n  TimeOffset {\n   time_offset -1\n   time \"\"\n   name TimeOffset2\n   xpos 154\n   ypos -125\n  }\npush $N1e644ce0\n  TimeOffset {\n   time \"\"\n   name TimeOffset1\n   xpos 45\n   ypos -127\n  }\n  Group {\n   inputs 3\n   name KeymixBBox\n   tile_color 0x4b5ec6ff\n   xpos 400\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e79f450 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e7a4000 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e7b1460 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e7a4000\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1e7d6de0 [stack 0]\npush $N1e7b1460\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1e7d6de0\npush $N1e79f450\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox1\n   tile_color 0x4b5ec6ff\n   xpos 510\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e81b790 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e820340 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e82d7a0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e820340\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1e84b0f0 [stack 0]\npush $N1e82d7a0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1e84b0f0\npush $N1e81b790\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox2\n   tile_color 0x4b5ec6ff\n   xpos 620\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e88f9c0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e8944e0 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e8a19f0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e8944e0\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1e8bf340 [stack 0]\npush $N1e8a19f0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1e8bf340\npush $N1e88f9c0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox3\n   tile_color 0x4b5ec6ff\n   xpos 730\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e903c00 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e9087b0 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e915c10 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e9087b0\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1e933560 [stack 0]\npush $N1e915c10\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1e933560\npush $N1e903c00\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox4\n   tile_color 0x4b5ec6ff\n   xpos 840\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e977e10 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e97c980 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e989e40 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e97c980\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1e9a77a0 [stack 0]\npush $N1e989e40\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1e9a77a0\npush $N1e977e10\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox5\n   tile_color 0x4b5ec6ff\n   xpos 950\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1e9ec060 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1e9f0c10 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1e9fdfe0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1e9f0c10\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1ea1b9e0 [stack 0]\npush $N1e9fdfe0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1ea1b9e0\npush $N1e9ec060\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox6\n   tile_color 0x4b5ec6ff\n   xpos 1060\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1ea60260 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1ea64e60 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1ea722c0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1ea64e60\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1ea8fc10 [stack 0]\npush $N1ea722c0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1ea8fc10\npush $N1ea60260\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox7\n   tile_color 0x4b5ec6ff\n   xpos 1170\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1ead44d0 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1ead9080 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1eae6450 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1ead9080\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1eb03e50 [stack 0]\npush $N1eae6450\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1eb03e50\npush $N1ead44d0\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\n  Group {\n   inputs 3\n   name KeymixBBox8\n   tile_color 0x4b5ec6ff\n   xpos 1280\n   ypos 319\n   addUserKnob {20 KeymixBBox}\n   addUserKnob {41 channels T Keymix8.channels}\n   addUserKnob {41 maskChannel l \"mask channel\" T Keymix8.maskChannel}\n   addUserKnob {41 invertMask l invert -STARTLINE T Keymix8.invertMask}\n   addUserKnob {41 mix T Keymix8.mix}\n   addUserKnob {41 bbox l \"Set BBox to\" T Keymix8.bbox}\n  }\n   Input {\n    inputs 0\n    name InputA\n    xpos 56\n    ypos -508\n    number 1\n   }\nset N1eb48700 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove2\n    xpos 184\n    ypos -403\n   }\nset N1eb4d2b0 [stack 0]\n   Input {\n    inputs 0\n    name Inputmask\n    xpos 531\n    ypos -493\n    number 2\n   }\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos 565\n    ypos -393\n   }\nset N1eb5a710 [stack 0]\n   Remove {\n    operation keep\n    channels alpha\n    name Remove1\n    xpos 448\n    ypos -403\n   }\npush $N1eb4d2b0\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge1\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 294\n    ypos -397\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    name Merge2\n    label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n    xpos 184\n    ypos -344\n   }\nset N1eb78060 [stack 0]\npush $N1eb5a710\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion1\n    xpos 531\n    ypos -344\n   }\n   Dot {\n    name Dot3\n    note_font_size 41\n    xpos 565\n    ypos -255\n   }\npush $N1eb78060\npush $N1eb48700\n   CopyBBox {\n    inputs 2\n    name CopyBBoxUnion\n    xpos 56\n    ypos -344\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 90\n    ypos -255\n   }\n   Input {\n    inputs 0\n    name InputB\n    xpos 378\n    ypos -493\n   }\n   Keymix {\n    inputs 3\n    channels rgba\n    name Keymix8\n    selected true\n    xpos 378\n    ypos -259\n   }\n   Output {\n    name Output1\n    xpos 378\n    ypos -158\n   }\n  end_group\npush $N1e644ce0\n  Switch {\n   inputs 2\n   which {{parent.maskChannel!=0}}\n   name Switch1\n   xpos 1257\n   ypos 412\n  }\n  Output {\n   name Output1\n   xpos 1280\n   ypos 538\n  }\n end_group\n TimeWarp {\n  lookup {{frame*10 C x1001 1001 x1092 1092}}\n  time \"\"\n  filter none\n  name TimeWarp4\n  xpos 420\n  ypos 62\n }\n Output {\n  name Output1\n  xpos 420\n  ypos 162\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iMorph_v2.gizmo",
    "content": "Group {\n name iMorph\n help \"iMorph v1.0 by adrianpueyo\\n\\nBlinkscript-accelerated morph between two inputs based on the vectors calculated by a VectorGenerator, with an optional input mask to drive the morph amount. Useful to create morphing transitions between two plates.\\n\\nMorphing method based on the awesome MorphDissolve from Erwan Leroy. Tool concept and fun developed with Tony Lyons.\\n\\nadrianpueyo.com, 2020\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"inputChange\\\":\\n    n\\[\\\"morph\\\"].setEnabled(not n.input(2))\\n    \"\n tile_color 0x890074ff\n note_font \"Bitstream Vera Sans Bold\"\n selected true\n addUserKnob {20 iMorph}\n addUserKnob {26 gpuName l \"Local GPU:\" T \"GeForce GT 750M\"}\n addUserKnob {41 useGPUIfAvailable l \"Use GPU if available\" T iMorphKernel.useGPUIfAvailable}\n addUserKnob {41 vectorize l \"Vectorize on CPU\" -STARTLINE T iMorphKernel.vectorize}\n addUserKnob {26 \"\"}\n addUserKnob {4 outMode l output M {\"A warped\" \"B warped\" \"AB morph\"}}\n outMode \"AB morph\"\n addUserKnob {7 morph t \"Morphing amount between A and B (0=A, 1=B).\\n\\n<b>If a mask Input is supplied, this knob gets ignored.\"}\n morph 1\n addUserKnob {41 mask_channel l \"mask channel\" T CopyMask.from0}\n addUserKnob {26 \"\"}\n addUserKnob {4 motionEstimation l Motion M {Regularized Local \"\" \"\"}}\n addUserKnob {7 vectorDetailReg l \"Vector Detail\" R 0.01 1}\n vectorDetailReg 0.3\n addUserKnob {7 strengthReg l Strength R 0 1.5}\n strengthReg 1.5\n addUserKnob {26 version_author l \" \" t \"iMorph v1.0\\n2020\" T \"<span style=\\\"color:#666\\\"><br/><b>iMorph v1.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2020</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos -49\n  ypos 358\n  number 2\n }\n Input {\n  inputs 0\n  name InputA\n  xpos 240\n  ypos -45\n }\n Shuffle {\n  name Shuffle2\n  xpos 240\n  ypos 3\n }\nset N4d33070 [stack 0]\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 274\n  ypos 227\n }\nset N8bb00080 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 113\n  ypos 227\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos 79\n  ypos 270\n }\n Grade {\n  channels rgba\n  white 0\n  add {{parent.morph}}\n  white_clamp true\n  name Grade1\n  xpos 79\n  ypos 294\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyMask\n  label \"\\[value from0]\"\n  xpos 79\n  ypos 349\n  disable {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1]] \\[value from0]] >= 0\\} \\{\\n    return 0\\n\\} else \\{\\n    if \\{ \\[lsearch -exact \\[channels \\[input this 1]] rgba.\\[value from0]] >= 0\\} \\{\\n        return 0\\n    \\} else \\{\\n        return 1\\n\\}\\n\\}\\n]\"}}\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 113\n  ypos 427\n }\n Input {\n  inputs 0\n  name InputB\n  xpos 342\n  ypos -175\n  number 1\n }\n Shuffle {\n  name Shuffle3\n  xpos 342\n  ypos -37\n }\nset N71c81eb0 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 611\n  ypos -34\n }\n TimeWarp {\n  lookup {{floor(frame/2)}}\n  length 0\n  time \"\"\n  filter none\n  name TimeWarp2\n  xpos 577\n  ypos 23\n }\npush $N4d33070\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos 492\n  ypos 6\n }\n TimeWarp {\n  lookup {{floor(frame/2)}}\n  length 0\n  time \"\"\n  filter none\n  name TimeWarp1\n  xpos 458\n  ypos 44\n }\n Switch {\n  inputs 2\n  which {{frame%2}}\n  name SwitchInputs\n  xpos 516\n  ypos 107\n }\n VectorGenerator {\n  useGPUIfAvailable {{parent.iMorphKernel.useGPUIfAvailable}}\n  motionEstimation {{parent.motionEstimation}}\n  vectorDetailReg {{parent.vectorDetailReg}}\n  strengthReg {{parent.strengthReg}}\n  name VectorGenerator1\n  xpos 516\n  ypos 157\n }\nset N268df2c0 [stack 0]\n TimeOffset {\n  time_offset -1\n  time \"\"\n  name TimeOffset3\n  xpos 623\n  ypos 224\n }\npush $N268df2c0\n Shuffle {\n  in forward\n  blue black\n  alpha black\n  name ShuffleVec1\n  label \"\\[value in]\"\n  xpos 516\n  ypos 223\n }\n Copy {\n  inputs 2\n  from0 backward.u\n  to0 rgba.blue\n  from1 backward.v\n  to1 rgba.alpha\n  name CopyVec2\n  xpos 516\n  ypos 277\n }\n TimeWarp {\n  lookup {{frame*2}}\n  length 0\n  time \"\"\n  filter none\n  name TimeWarp3\n  xpos 516\n  ypos 338\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 550\n  ypos 427\n }\npush $N71c81eb0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 376\n  ypos 346\n }\npush $N8bb00080\n BlinkScript {\n  inputs 4\n  recompileCount 39\n  ProgramGroup 1\n  KernelDescription \"2 \\\"iMorphKernel\\\" iterate pixelWise f73cb735e959d6b7677ca59a811ae605a17d00706c4cd292f2677544fd90aa0a 5 \\\"src1\\\" Read Random \\\"src2\\\" Read Random \\\"vec\\\" Read Random \\\"mask\\\" Read Random \\\"dst\\\" Write Point 3 \\\"useMask\\\" Int 1 AAAAAA== \\\"weight\\\" Float 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== 3 \\\"useMask\\\" 1 1 \\\"weight\\\" 1 1 \\\"mode\\\" 1 1 0\"\n  kernelSource \"//---------------------------------------------------------\\n// iMorphKernel - iMorph v1.0 by Adrian Pueyo\\n// adrianpueyo.com, 2020\\n// ---------------------------------------------------------\\nkernel iMorphKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessRandom, eEdgeClamped> src1;\\n  Image<eRead, eAccessRandom, eEdgeClamped> src2;\\n  Image<eRead, eAccessRandom, eEdgeClamped> vec;\\n  Image<eRead, eAccessRandom, eEdgeClamped> mask;\\n  Image<eWrite> dst;\\n  param:\\n    int useMask;\\n    float weight;\\n    int mode; //0=A,1=B,2=morph\\n\\n  void process(int2 pos) \\{\\n    SampleType(vec) vectors = vec(pos.x,pos.y);\\n    float which;\\n    if(useMask==0)\\{\\n      which = weight;\\n    \\}else\\{\\n      which = clamp(bilinear(mask,pos.x,pos.y).w,0.0f,1.0f); //alpha channel\\n    \\}\\n    SampleType(src1) src1_warped, src2_warped;\\n    if(mode!=1)\\{\\n      src1_warped = bilinear(src1,pos.x+vectors.z*which,pos.y+vectors.w*which);\\n    \\}\\n    if(mode!=0)\\{\\n      src2_warped = bilinear(src2,pos.x+vectors.x*(1-which),pos.y+vectors.y*(1-which));\\n    \\}\\n\\n    if(mode==0)\\{\\n      dst() = src1_warped;\\n    \\}else if(mode==1)\\{\\n      dst() = src2_warped;\\n    \\}else\\{\\n      dst() = src1_warped*(1-which)+src2_warped*which;\\n    \\}\\n  \\}\\n\\};\"\n  rebuild \"\"\n  iMorphKernel_useMask {{!CopyMask.disable}}\n  iMorphKernel_weight {{parent.morph}}\n  iMorphKernel_mode {{parent.outMode}}\n  rebuild_finalise \"\"\n  name iMorphKernel\n  selected true\n  xpos 240\n  ypos 420\n }\n Output {\n  name Output1\n  xpos 240\n  ypos 518\n }\nend_group\n\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_iTransform_ae.gizmo",
    "content": "Group {\n name iTransform_ae\n onCreate \"n = nuke.thisNode()\\nif n.knob('create').value() == False:\\n    format = n.format()\\n    center = \\[format.width() / 2, format.height() / 2]\\n    n.knob('center').setValue(center)\\n    n.knob('create').setValue(1)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"smart\\\":\\n    s = n.knob('smart').getValue()\\n    if s == 0: \\n        groupNode = nuke.thisNode()\\n        with groupNode:\\n            m = nuke.toNode('mask')\\n            s = nuke.toNode('STMap')\\n            s.setInput(2, m)\\n    else:\\n        groupNode = nuke.thisNode()\\n        with groupNode:\\n            m = nuke.toNode('no_filter')\\n            s = nuke.toNode('STMap')\\n            s.setInput(2, m)\"\n tile_color 0xa57aaaff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 iTransform}\n addUserKnob {41 channels T STMap.channels}\n addUserKnob {26 \"\"}\n addUserKnob {6 blackoutsideBefore l \"black outside before\" +STARTLINE}\n addUserKnob {41 translate T inTransform2.translate}\n addUserKnob {41 rotate_1 l rotate T inTransform2.rotate}\n addUserKnob {41 scale_1 l scale T inTransform2.scale}\n addUserKnob {41 skewX_1 l \"skew X\" T inTransform2.skewX}\n addUserKnob {41 skewY_1 l \"skew Y\" T inTransform2.skewY}\n addUserKnob {4 skewOrder l \"skew order\" M {XY YX}}\n addUserKnob {41 center T inTransform2.center}\n addUserKnob {22 set_center l \"set center\" -STARTLINE T \"n = nuke.thisNode()\\nw= n.width()\\nh=n.height()\\nn\\['center'].setValue(\\[w/2,h/2])\"}\n addUserKnob {4 filterN l filter M {impulse cubic keys Simon Rifman Mitchell Parzen Notch Lanczos4 Lanczos6 sinc4 \"\" \"\" \"\" \"\"}}\n filterN cubic\n addUserKnob {26 text_5_1 l \"\" -STARTLINE T \"  \"}\n addUserKnob {26 text_5_1_1 l \"\" -STARTLINE T \"  \"}\n addUserKnob {41 clamp -STARTLINE T inTransform2.clamp}\n addUserKnob {26 \"\"}\n addUserKnob {6 cropformat l \"crop to format\" +STARTLINE}\n addUserKnob {26 text_5_2 l \"\" -STARTLINE T \"     \"}\n addUserKnob {6 blackoutsideafter l \"black outside after\" -STARTLINE}\n addUserKnob {14 addpixels R 0 100}\n addUserKnob {7 mix}\n mix 1\n addUserKnob {26 text_5 l \"\" -STARTLINE T \"    \"}\n addUserKnob {6 smart l \"smart mask  \" -STARTLINE}\n smart true\n addUserKnob {26 \"\"}\n addUserKnob {6 create +INVISIBLE +STARTLINE}\n create true\n addUserKnob {26 about_1 l \"\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>iTransform v2.0</b> - <a  style=\\\"color:#666;text-decoration: none;\\\">Aitor Echeveste</a>  © 2021</span>\"}\n addUserKnob {20 About}\n addUserKnob {26 text_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_2 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 text_4 l \"\" +STARTLINE T \"<font color=#ffffff><font size=\\\"7\\\">iTransform </font><font size=\\\"6\\\"> v2.0</font>\\n\"}\n addUserKnob {26 about_1_1 l \"\" +STARTLINE T \"by Aitor Echeveste Izquierdo © 2021\"}\n addUserKnob {26 text_1_1 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 \"\"}\n addUserKnob {26 text_3 l \"\" +STARTLINE T \"   \"}\n addUserKnob {26 website l \"\" +STARTLINE T \"<b><a href=\\\"http://www.aitorecheveste.com\\\"><span style=\\\"color:#C8C8C8;\\\">www.aitorecheveste.com</span></a><b>\"}\n}\n Input {\n  inputs 0\n  name crtlMask\n  xpos 606\n  ypos 531\n  number 1\n }\nset Na054ab00 [stack 0]\n NoOp {\n  name mattebbox\n  xpos 606\n  ypos 555\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\n Expression {\n  temp_name0 alpha_an\n  temp_expr0 a!=0?1:0\n  expr0 alpha_an\n  expr1 alpha_an\n  expr2 alpha_an\n  expr3 alpha_an\n  name no_filter\n  xpos 606\n  ypos 579\n }\n Dot {\n  name Dot1\n  xpos 640\n  ypos 727\n }\n Input {\n  inputs 0\n  name mask\n  xpos 221\n  ypos 507\n  number 2\n }\n Expression {\n  expr3 (1-a)\n  name invert\n  xpos 221\n  ypos 531\n }\n Input {\n  inputs 0\n  name img\n  xpos 121\n  ypos 344\n }\n BlackOutside {\n  name BlackOutsideBefore\n  xpos 121\n  ypos 370\n  disable {{!blackoutsideBefore}}\n }\nset Ncbcf900 [stack 0]\n Crop {\n  box {{-input.format.width} {-input.format.height} {(input.format.width*2)} {(input.format.height*2)}}\n  crop false\n  name Crop1\n  xpos 474\n  ypos 370\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Expression {\n  expr0 (x+0.5)/width\n  expr1 (y+.5)/height\n  name Expression1\n  xpos 474\n  ypos 418\n }\nset Ncbceb00 [stack 0]\n Dot {\n  name Dot2\n  xpos 343\n  ypos 421\n }\npush $Na054ab00\npush $Ncbceb00\n Transform {\n  translate {{parent.inTransform2.translate} {parent.inTransform2.translate}}\n  rotate {{parent.inTransform2.rotate}}\n  scale {{parent.inTransform2.scale} {parent.inTransform2.scale}}\n  skewX {{parent.inTransform2.skewX}}\n  skewY {{parent.inTransform2.skewY}}\n  skew_order {{parent.skewOrder}}\n  center {{parent.inTransform2.center} {parent.inTransform2.center}}\n  invert_matrix {{parent.inTransform2.invert_matrix}}\n  filter {{parent.filterN}}\n  clamp {{parent.inTransform2.clamp}}\n  shutteroffset centred\n  name inTransform1\n  xpos 599\n  ypos 418\n }\npush $Ncbceb00\n Keymix {\n  inputs 3\n  name Keymix1\n  xpos 474\n  ypos 525\n }\n Keymix {\n  inputs 3\n  name Keymix2\n  xpos 309\n  ypos 525\n  disable {{\"\\[exists parent.input2]==1?smart==1?0:1:1\" x1 0 x1001 1}}\n }\n Expression {\n  expr0 ((x+0.5)/width)\n  expr1 ((y+0.5)/height)\n  mix {{1-parent.mix}}\n  name mix\n  xpos 309\n  ypos 563\n }\npush $Ncbcf900\n NoOp {\n  name inputbbox\n  xpos 126\n  ypos 723\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\n STMap {\n  inputs 2+1\n  channels rgba\n  uv rgb\n  name STMap\n  xpos 309\n  ypos 723\n }\n Crop {\n  box {{\"inputbbox.bbox<mattebbox.bbox?\\n\\ninputbbox.bbox-addpixels\\n\\n:inputbbox.bbox+(mattebbox.bbox- inputbbox.bbox)-addpixels\\n\\n\"} {\"inputbbox.bbox<mattebbox.bbox?\\n\\ninputbbox.bbox-addpixels\\n\\n:inputbbox.bbox+(mattebbox.bbox- inputbbox.bbox)-addpixels\"} {\"inputbbox.bbox>mattebbox.bbox?\\n\\ninputbbox.bbox+addpixels\\n\\n:inputbbox.bbox+(mattebbox.bbox- inputbbox.bbox)+addpixels\"} {\"inputbbox.bbox>mattebbox.bbox?\\n\\ninputbbox.bbox+addpixels\\n:inputbbox.bbox+(mattebbox.bbox- inputbbox.bbox)+addpixels\"}}\n  name Crop3\n  xpos 309\n  ypos 747\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Reformat {\n  name Reformat2\n  xpos 309\n  ypos 771\n  disable {{!cropformat}}\n }\n BlackOutside {\n  name BlackOutsideAfter\n  xpos 309\n  ypos 797\n  disable {{!blackoutsideafter}}\n }\n Output {\n  name Output1\n  xpos 309\n  ypos 823\n }\n Transform {\n  inputs 0\n  skew_order {{parent.skewOrder}}\n  center {1203 568}\n  filter {{parent.filterN}}\n  shutteroffset centred\n  name inTransform2\n  xpos 715\n  ypos 417\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_mScatterGeo.gizmo",
    "content": "Group { \n name mScatterGeo\n onCreate \"\\nnuke.thisGroup()\\['max_instance'].setFlag(0x00000100)\\n\"\n tile_color 0x194e7fff\n note_font Verdana\n addUserKnob {20 general}\n addUserKnob {26 title_snap l \"<b>SNAP SETUP</b>\"}\n addUserKnob {41 snap_type l \"snap type\" t \"<u>selected vertices/faces</u>\\nCreate instance(s) from selected vertices/faces. 'RGB texture' sampling does not support this snap type.\\n\\n<u>density map (alpha)</u>\\nUse alpha channel of sampleGeo as density map. 'RGB texture' sampling supported this snap type.\" T menu02.snap_type}\n addUserKnob {26 title_vf_setting l \"<b>vertices/faces setting</b>\"}\n addUserKnob {7 random_percentage l \"random percentage\" t \"Setup the percentage of the random will apply. The value clipped between 0 to 100.\" R 0.01 100}\n random_percentage 100\n addUserKnob {3 random_seed l seed}\n addUserKnob {26 title_dmap_setting l \"<b>density map setting</b>\" +DISABLED}\n addUserKnob {4 uv_type l UV t \"<u>single tile</u>\\nprocess faster.\\n\\n<u>udim</u>\\nwill scan through all the UV tiles before process.\\n\\n*if not sure what type of UV set in geo, recommend to use 'udim' to scan through all the tiles. Or use my another tool, 'UVEditor', to check.\" +DISABLED M {\"single tile (fast)\" udim \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {3 sample_res l \"sample resolution\" t \"This resolution setting to control the spacing between each instance. Higher solution will get more sample points in UV. Lower solution will get less sample points in UV.\" -STARTLINE +DISABLED}\n sample_res 1024\n addUserKnob {78 max_instance l \"max instance(s)\" t \"This can control the maximun instance(s) will be generated, to speed up the process if user only need to generate few instance(s).\" +DISABLED n 1}\n max_instance 1000\n addUserKnob {3 dmap_seed l seed -STARTLINE +DISABLED}\n addUserKnob {3 fail_attempts l \"fail attempts\" t \"set how many times to retry if they fail on sampling. When max instances are larger than available samples, then the sample process will fall into a loop hole. So value limited the retry attempts.\\n\\n\\n- lower value can get faster but may not meet the max instances value.\\n\\n\\n- higher value can meet the max instance value but might take longer time to retry the sampling.\\n\\n\\nWhat makes the sampling fail?\\nposition+range size already existing in the sample data.\\n\\n\" +DISABLED}\n fail_attempts 500\n addUserKnob {4 rgb_color l \"RGB texture color\" t \"Sample color from 'sampleGeo' texture input and generated with instance(s).\\n\\n<u>sample premult RGB</u>\\nsemi-transparent pixels will get darker color on generated instance, but the color is 100% match to the sampled texture color.\\n\\n<u>sample unpremult RGB</u>\\nThis can avoid dark color on semi-transparent pixels.\" +DISABLED M {\"not selected\" \"sample premult RGB\" \"sample unpremult RGB\" \"\" \"\" \"\"}}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_rotate l \"<b>ROTATION SETUP</b>\"}\n addUserKnob {4 rotation_type l type t \"Rotation type of the snap geo.\\n\\n<u>lookAt axis/camera</u>\\ninstance rotation base on the input axis/camera direction. Axis/Camera input will be created in the generate group.\\n\\n<u>face normal</u>\\ninstance rotation base on the geo surface.\" M {\"lookAt axis/camera\" \"vertices/faces normal\" \"\" \"\" \"\" \"\" \"\"}}\n rotation_type \"vertices/faces normal\"\n addUserKnob {26 title_input l \"<b>INPUT SETUP</b>\"}\n addUserKnob {41 var_type l \"variation type\" t \"select the input variation type.\\n\\n<u>Framehold</u>\\nrandom pick a still frame of texture & geo.\\n\\n<u>Timeoffset</u>\\nrandom pick the start frame of texture sequence and animated geo.\" T menu01.var_type}\n addUserKnob {3 frame_start l \"frame range\"}\n frame_start 1001\n addUserKnob {3 frame_end l \"\" -STARTLINE}\n frame_end 1100\n addUserKnob {3 offset_start l \"offset range\" +HIDDEN}\n offset_start -20\n addUserKnob {3 offset_end l \"\" -STARTLINE +HIDDEN}\n offset_end 20\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {22 generate l \"<b>\\[--- GENERATE ---]</b>\" t \"Generate group named 'mSnap'\" T \"thisGRP = nuke.thisGroup()\\n\\ntry :\\n\\t##### get functions\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn01'].execute()\\n\\tgoStore\\['fn02'].execute()\\n\\n\\tfilterCheck = goStore\\['filterNonReverse'].getValue().split(',')\\n\\tfilter3DNodes = goStore\\['filter3DNodes'].value().split(',')\\n\\tfilterPrimitives = goStore\\['filterPrimitives'].value().split(',')\\n\\n\\tif thisGRP\\['snap_type'].getValue() :\\n\\t\\t##### density map type\\n\\t\\tuvStart = nuke.toNode('uv_dot')\\n\\t\\t##### remove prep nodes\\n\\t\\trmNodes( uvStart )\\n\\n\\t\\tcurveTool = nuke.toNode('CurveTool')\\n\\t\\ttexRes = int( thisGRP\\['sample_res'].value() )\\n\\t\\tmaxIns = thisGRP\\['max_instance'].getValue()\\n\\n\\t\\tif texRes > 32 :\\n\\t\\t\\t##### find map data on tile\\n\\t\\t\\tsamNodes = scanTile( thisGRP, uvStart, curveTool, texRes )\\n\\n\\t\\t\\tif len(samNodes) :\\n\\t\\t\\t\\t##### find the sum of area\\n\\t\\t\\t\\ttotalArea = 0\\n\\t\\t\\t\\tfor samNode in samNodes :\\n\\t\\t\\t\\t\\ttotalArea += samNode.width() * samNode.height()\\n\\n\\t\\t\\t\\tif maxIns < totalArea :\\n\\t\\t\\t\\t\\t##### find tile proportion\\n\\t\\t\\t\\t\\ttileData = \\{\\}\\n\\t\\t\\t\\t\\tfor samNode in samNodes :\\n\\t\\t\\t\\t\\t\\tsamCount = int( round( ( samNode.width() * samNode.height() ) / totalArea * maxIns ) )\\n\\t\\t\\t\\t\\t\\ttileData\\[samNode.name()] = \\[ samNode, samCount ]\\n\\n\\t\\t\\t\\t\\t##### process\\n\\t\\t\\t\\t\\tptsID = samID( thisGRP ,  tileData )\\n\\n\\t\\t\\t\\t\\tif thisGRP\\['with_animation'].value() :\\n\\t\\t\\t\\t\\t\\t##### snap with animation\\n\\t\\t\\t\\t\\t\\tprojRange = str( int( nuke.root()\\['first_frame'].getValue() ) ) + '-' + str( int( nuke.root()\\['last_frame'].getValue() ) )\\n\\t\\t\\t\\t\\t\\tp = nuke.Panel('frame range')\\n\\t\\t\\t\\t\\t\\tp.addSingleLineInput('set frame range', projRange)\\n\\t\\t\\t\\t\\t\\tif p.show() == 1 :\\n\\t\\t\\t\\t\\t\\t\\tcrange = p.value('set frame range').replace(' ', '')\\n\\t\\t\\t\\t\\t\\t\\tif '-' in crange :\\n\\t\\t\\t\\t\\t\\t\\t\\tfRNG = \\[ int( crange.split('-')\\[0] ) , int( crange.split('-')\\[1] ) ]\\n\\t\\t\\t\\t\\t\\t\\t\\tgenDMap( thisGRP , ptsID , samNodes , fRNG )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tgenDMap( thisGRP , ptsID , samNodes )\\n\\n\\t\\t\\t\\t\\t##### remove prep nodes\\n\\t\\t\\t\\t\\trmNodes( uvStart )\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tnuke.message(\\\"'max instance(s)'' <font color='red'>larger</font> than detected sample area.<br><br>Try to <font color=orange>reduce</font> 'max instance(s)' or <font color=orange>increase</font> 'sample resolution' to process again.<br><br>Process denied...\\\")\\n\\t\\t\\t\\t\\t##### remove prep nodes\\n\\t\\t\\t\\t\\trmNodes( uvStart )\\n\\t\\t\\telse :\\n\\t\\t\\t\\tnuke.message('No UV data detected.<br><br>Process denied...')\\n\\t\\telse :\\n\\t\\t\\tnuke.message('sample resolution cannot set lower than 32.<br><br>Process denied...')\\n\\telse :\\n\\t\\t##### selected vertices/faces type\\n\\t\\tmainstream = upstreamNodes( thisGRP , filter3DNodes )\\n\\n\\t\\tdisabledNodes = \\[]\\n\\t\\tfor lvl01 in mainstream :\\n\\t\\t\\tfor lvl02 in lvl01 :\\n\\t\\t\\t\\tif lvl02\\['disable'].getValue() :\\n\\t\\t\\t\\t\\tdisabledNodes.append( lvl02.name() )\\n\\n\\t\\t##### check disable nodes\\n\\t\\tif len( disabledNodes ) :\\n\\t\\t\\tnuke.message( 'Disabled node(s) :<p><font color=red>\\{0\\}</font><p>Please disconnect these transformation nodes from the tree.<br><br>Process denied...'.format( '<br>'.join(disabledNodes) ) )\\n\\n\\t\\telse :\\n\\t\\t\\tif failCHK( thisGRP , \\['EditGeo','ProcGeo'] ) :\\n\\t\\t\\t\\tnuke.message(\\\"<font color=orange>'EditGeo' & 'ProceduralNoise'</font> detected in upstream which are not support 'selected vertices/faces' at this moment.<br><br>Recommend to use 'WriteGeo' export it, and then bring it back with 'ReadGeo to process, or use density map.<br><br>Process denied...\\\")\\n\\t\\t\\telse :\\n\\t\\t\\t\\t##### find primary geo\\n\\t\\t\\t\\tmainGeo = primaryGeo( mainstream , filterPrimitives )\\n\\n\\t\\t\\t\\t##### get selected ID\\n\\t\\t\\t\\tptsID = selID()\\n\\n\\t\\t\\t\\tif len( ptsID ) == 0 :\\n\\t\\t\\t\\t\\tfacesVTX = \\[]\\n\\t\\t\\t\\t\\tfor key,value in enumerate( mainGeo\\['geo_select'].getSelectedFaces()\\[0] ) :\\n\\t\\t\\t\\t\\t\\tif value :\\n\\t\\t\\t\\t\\t\\t\\tfacesVTX.append( geoPrims( mainGeo )\\[key] )\\n\\t\\t\\t\\t\\tptsID = facesVTX\\n\\t\\t\\t\\t\\tselType = 'face'\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tselType = 'vertex'\\n\\t\\t\\t\\t\\tif thisGRP\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\tif mainGeo.Class() == 'ReadGeo' or mainGeo.Class() == 'ReadGeo2' :\\n\\t\\t\\t\\t\\t\\t\\tif nuke.ask(\\\"vertex normal on 'ReadGeo' might wonky in some certain cases.<br><br><font color=orange>'ok'</font> - to keep rotate by vertex normal.<br><font color=orange>'cancel'</font> - rotate by faces normal instead.\\\") :\\n\\t\\t\\t\\t\\t\\t\\t\\tselType = 'vertex'\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tselType = 'vertexFaces'\\n\\n\\t\\t\\t\\t##### random selection\\n\\t\\t\\t\\tptsID = randSelID( ptsID , thisGRP )\\n\\n\\t\\t\\t\\t##### snap vertex\\n\\t\\t\\t\\tif ptsID :\\n\\n\\t\\t\\t\\t\\tif thisGRP\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\tgonType = len( nuke.toNode('PythonGeo')\\['geo'].getGeometry()\\[0].primitives() )\\n\\n\\t\\t\\t\\t\\tif thisGRP\\['with_animation'].value() :\\n\\t\\t\\t\\t\\t\\t##### snap with animation\\n\\t\\t\\t\\t\\t\\tprojRange = str( int( nuke.root()\\['first_frame'].getValue() ) ) + '-' + str( int( nuke.root()\\['last_frame'].getValue() ) )\\n\\t\\t\\t\\t\\t\\tp = nuke.Panel('frame range')\\n\\t\\t\\t\\t\\t\\tp.addSingleLineInput('set frame range', projRange)\\n\\t\\t\\t\\t\\t\\tif p.show() == 1 :\\n\\t\\t\\t\\t\\t\\t\\tcrange = p.value('set frame range').replace(' ', '')\\n\\t\\t\\t\\t\\t\\t\\tif '-' in crange :\\n\\t\\t\\t\\t\\t\\t\\t\\tfRNG = \\[ int( crange.split('-')\\[0] ) , int( crange.split('-')\\[1] ) ]\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t##### Rotation Type\\n\\t\\t\\t\\t\\t\\t\\t\\tif thisGRP\\['rotation_type'].getValue() :\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif gonType > 1 :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t##### tris with animation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgenFaceNor( thisGRP, mainstream, mainGeo, ptsID, selType, fRNG )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t##### quads with animation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgenFaceNor( thisGRP, mainstream, mainGeo, ptsID, selType, fRNG )\\n\\n\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgenSelVtx( thisGRP, mainstream, ptsID, selType, fRNG )\\n\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t##### message of incorrect frame range format\\n\\t\\t\\t\\t\\t\\t\\t\\tnuke.message('Frame range format incorrect.<br>It should be :<br>\\[start frame]-\\[last frame]<br>spacing allowed.<br><br>e.g.<br>1001-1100<br>1001 - 1100')\\n\\n\\t\\t\\t\\t\\telse :\\n\\n\\t\\t\\t\\t\\t\\t##### snap static\\n\\t\\t\\t\\t\\t\\tif thisGRP\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\t\\tif gonType > 1 :\\n\\t\\t\\t\\t\\t\\t\\t\\t##### tris static\\n\\t\\t\\t\\t\\t\\t\\t\\tgenFaceNor( thisGRP, mainstream, mainGeo, ptsID, selType )\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t##### quads static\\n\\t\\t\\t\\t\\t\\t\\t\\tgenFaceNor( thisGRP, mainstream, mainGeo, ptsID, selType )\\n\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tgenSelVtx( thisGRP, mainstream, ptsID, selType )\\n\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tnuke.message( 'Please select <font color=orange>vertex/face</font> to start.' )\\n\\nexcept UnboundLocalError :\\n\\tnuke.message('No available input found. Input required 3D geo.<br><br>Process denied...')\" +STARTLINE}\n addUserKnob {6 with_animation l \"with animated geo\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {22 selected_vertex_info l \"selected vertex info\" t \"get the vertices/faces info.\" T \"thisGRP = nuke.thisGroup()\\npyg = nuke.toNode('PythonGeo')\\n\\n##### get functions\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn01'].execute()\\ngoStore\\['fn02'].execute()\\n\\nfilter3DNodes = goStore\\['filter3DNodes'].value().split(',')\\nfilterPrimitives = goStore\\['filterPrimitives'].value().split(',')\\n\\nmainstream = upstreamNodes( thisGRP , filter3DNodes )\\n\\ndisabledNodes = \\[]\\nfor lvl01 in mainstream :\\n  for lvl02 in lvl01 :\\n    if lvl02\\['disable'].getValue() :\\n      disabledNodes.append( lvl02.name() )\\n\\n##### check disable nodes\\nif len( disabledNodes ) :\\n  nuke.message( 'Disabled node(s) :<p><font color=red>\\{0\\}</font><p>Please disconnect these transformation nodes from the tree.'.format( '<br>'.join(disabledNodes) ) )\\n\\nelse :\\n  ##### find primary geo\\n  mainGeo = primaryGeo( mainstream , filterPrimitives )\\n\\n  ##### get selected ID\\n  ptsID = selID()\\n\\n  if len( ptsID ) == 0 :\\n    facesVTX = \\[]\\n    for key,value in enumerate( mainGeo\\['geo_select'].getSelectedFaces()\\[0] ) :\\n      if value :\\n        facesVTX.append( geoPrims( mainGeo )\\[key] )\\n    ptsID = facesVTX\\n    selType = 1\\n  else :\\n    selType = 0\\n\\n  ptsID = randSelID( ptsID , thisGRP )\\n\\n  gData = geoData( pyg , 0 ) ##### get geo data\\n\\n  info = \\['<b><font color=orange>geo total vertex : </font></b>' + str( len(gData) ) , '<b><font color=orange>total selected vertex : </font></b>' + str( len(ptsID) ) , '' ]\\n  print ('total vertex : ' + str(len(gData)))\\n  for i in ptsID :\\n    if type(i) == str :\\n      info.append( '<b><font color=orange>selected geo type : </font></b>vertex' )\\n      info.append( '<b><font color=orange>primitives : </font></b>' + str( i.split('_')\\[1:]\\[0] ) )\\n      info.append( '<b><font color=orange>vertex (pos|nor) : </font></b>' + str( gData\\[i] ) )\\n    else :\\n      if len(i) == 3 :\\n        info.append( '<b><font color=orange>selected geo type : </font></b>3-sides' )\\n      elif len(i) == 4 :\\n        info.append( '<b><font color=orange>selected geo type : </font></b>4-sides' )\\n      else :\\n        info.append( '<b><font color=orange>selected geo type : </font></b>N-sides' )\\n\\n      for prim in i :\\n        info.append( '<b><font color=orange>vertex ID : </font></b>' + str( prim ) )\\n        info.append( '<b><font color=orange>vertex (pos|nor) : </font></b>' + str( gData\\['0_' + str( prim )] ) )\\n\\n    info.append( '' )\\n    info.append( '===================' )\\n    info.append( '' )\\n\\np = nuke.Panel( 'Selected vertex info :' )\\np.addNotepad( '', '<br>'.join( info ) )\\np.setWidth(1200)\\np.show()\" +STARTLINE}\n addUserKnob {26 title_selection l \"<i>( optional )</i>\" T \"<b>save selected vertices / faces</b>\"}\n addUserKnob {41 geo T GeoSelect.geo}\n addUserKnob {22 save_selection l \"save selection\" T \"if nuke.thisGroup().inputs() :\\n\\tnuke.thisGroup()\\['hidden_btn'].execute()\\n\\tnuke.thisGroup()\\['savedata'].setValue( nuke.thisGroup()\\['geo'].toScript() )\\nelse :\\n\\tnuke.message('Save selection fail.<br>No inputs found.<br>Please connect this node to geo.')\" +STARTLINE}\n addUserKnob {41 hidden_btn l \"\" +STARTLINE +INVISIBLE T GeoSelect.save_selection}\n addUserKnob {41 restore_selection l \"restore selection\" -STARTLINE T GeoSelect.restore_selection}\n addUserKnob {22 reset_selection l \"reset selection\" -STARTLINE T \"nuke.thisGroup()\\['geo'].fromScript('')\\nnuke.thisGroup()\\['savedata'].setValue('')\"}\n addUserKnob {20 selection_data l \"selection data\" n 1}\n selection_data 0\n addUserKnob {43 savedata l \"saved data\" +DISABLED}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-03-23}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;added&nbsp;'fail&nbsp;attempts'&nbsp;knob.&nbsp;(check&nbsp;tooltips)<br>-&nbsp;UV&nbsp;type&nbsp;set&nbsp;'single&nbsp;tile'&nbsp;by&nbsp;default<br><br>1.3<br>-&nbsp;compatible&nbsp;with&nbsp;python3<br>-&nbsp;fix&nbsp;'selected&nbsp;vertex&nbsp;info'&nbsp;button&nbsp;(it&nbsp;broke&nbsp;on&nbsp;last&nbsp;version)<br>-&nbsp;panel&nbsp;UI&nbsp;update<br><br>1.2<br>-&nbsp;Since&nbsp;generated&nbsp;group&nbsp;changed&nbsp;to&nbsp;'mSnap',&nbsp;<br>&nbsp;&nbsp;it&nbsp;breaks&nbsp;the&nbsp;unique&nbsp;name&nbsp;check,&nbsp;fixed&nbsp;on&nbsp;1.2&nbsp;.<br>-&nbsp;Added&nbsp;density&nbsp;map&nbsp;feature&nbsp;(alpha).<br>-&nbsp;Added&nbsp;RGB&nbsp;as&nbsp;texture&nbsp;color&nbsp;feature.<br>-&nbsp;Correct&nbsp;title&nbsp;name&nbsp;on&nbsp;tool's&nbsp;panel&nbsp;('texture&nbsp;setup'&nbsp;to&nbsp;input&nbsp;'setup').<br>-&nbsp;Minor&nbsp;fix&nbsp;normal&nbsp;to&nbsp;rotate&nbsp;algorithm&nbsp;(x&nbsp;rotation&nbsp;when&nbsp;-y&-z).<br>-&nbsp;Removed&nbsp;random&nbsp;selection&nbsp;checkbox.<br>&nbsp;&nbsp;&nbsp;*If&nbsp;don't&nbsp;need&nbsp;random&nbsp;selection,&nbsp;just&nbsp;keep&nbsp;random&nbsp;percentage=100.<br>-&nbsp;Adjust&nbsp;some&nbsp;backend&nbsp;code.<br>-&nbsp;'mScap'&nbsp;group&nbsp;added&nbsp;group&nbsp;info&nbsp;tab.<br>-&nbsp;Input&nbsp;of&nbsp;'mScatterGeo'&nbsp;changed&nbsp;name&nbsp;from&nbsp;'Geo'&nbsp;to&nbsp;'sampleGeo'.<br>-&nbsp;Fix&nbsp;rotation&nbsp;X&nbsp;under&nbsp;snap&nbsp;with&nbsp;normal&nbsp;rotation.<br>&nbsp;&nbsp;So&nbsp;it&nbsp;match&nbsp;to&nbsp;input&nbsp;geo&nbsp;origin.<br>-&nbsp;Fix&nbsp;ReadGeo's&nbsp;vertex&nbsp;normal&nbsp;rotation.<br>-&nbsp;Added&nbsp;delete&nbsp;instance&nbsp;on&nbsp;'mSnap'&nbsp;group.<br>-&nbsp;Added&nbsp;'select&nbsp;all'&nbsp;button&nbsp;on&nbsp;'mSnap'&nbsp;group.<br><br>1.1<br>-&nbsp;'MassiveSnapGeo'&nbsp;generated&nbsp;group&nbsp;renamed&nbsp;to&nbsp;'mSnap'<br>-&nbsp;fix&nbsp;slider&nbsp;UI&nbsp;after&nbsp;re-open&nbsp;nuke&nbsp;script&nbsp;on&nbsp;'mSnap'<br>-&nbsp;added&nbsp;display&nbsp;snap&nbsp;axis<br>-&nbsp;added&nbsp;extract&nbsp;axis<br><br>1.0<br>-&nbsp;re-work&nbsp;the&nbsp;unrelease&nbsp;version&nbsp;in&nbsp;2018\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -510\n  ypos -41\n  bdwidth 232\n  bdheight 407\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x848484ff\n  label bin\n  note_font_size 42\n  xpos -241\n  ypos -42\n  bdwidth 307\n  bdheight 637\n }\n Input {\n  inputs 0\n  name sampleGeo\n  xpos 138\n  ypos -38\n }\n Dot {\n  name Dot1\n  xpos 172\n  ypos 64\n }\nset N1e37b800 [stack 0]\n Normals {\n  display off\n  selectable false\n  action build\n  threshold 0\n  name Normals\n  xpos 292\n  ypos 61\n }\n Dot {\n  name Dot2\n  xpos 326\n  ypos 141\n }\nset N1e37b000 [stack 0]\n PythonGeo {\n  name PythonGeo\n  xpos 292\n  ypos 215\n }\n CurveTool {\n  inputs 0\n  operation \"Auto Crop\"\n  channels alpha\n  ROI {0 0 32 32}\n  name CurveTool\n  xpos -130\n  ypos 128\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nif nuke.thisGroup()\\['var_type'].value().lower() == 'framehold' :\\n    nuke.thisGroup()\\['frame_start'].setVisible(True)\\n    nuke.thisGroup()\\['frame_end'].setVisible(True)\\n    nuke.thisGroup()\\['offset_start'].setVisible(False)\\n    nuke.thisGroup()\\['offset_end'].setVisible(False)\\nelif nuke.thisGroup()\\['var_type'].value().lower() == 'timeoffset' :\\n    nuke.thisGroup()\\['frame_start'].setVisible(False)\\n    nuke.thisGroup()\\['frame_end'].setVisible(False)\\n    nuke.thisGroup()\\['offset_start'].setVisible(True)\\n    nuke.thisGroup()\\['offset_end'].setVisible(True)\\nelse :\\n    nuke.thisGroup()\\['frame_start'].setVisible(False)\\n    nuke.thisGroup()\\['frame_end'].setVisible(False)\\n    nuke.thisGroup()\\['offset_start'].setVisible(False)\\n    nuke.thisGroup()\\['offset_end'].setVisible(False)\\n\"\n  xpos -444\n  ypos 64\n  addUserKnob {20 User}\n  addUserKnob {4 var_type l \"variation type\" M {Framehold TimeOffset}}\n }\npush $N1e37b000\n Dot {\n  name Dot3\n  xpos 491\n  ypos 141\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{\"\\[value parent.sample_res]\"}}\n  box_height {{\"\\[value parent.sample_res]\"}}\n  box_fixed true\n  name Reformat1\n  xpos 567\n  ypos 322\n }\nadd_layer {pos pos.red pos.green pos.blue}\nadd_layer {nor nor.red nor.green nor.blue}\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  projection_mode uv\n  overscan {{\"\\[value parent.sample_res] * 9\"}}\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pos\n  N_channel nor\n  name uvRender\n  xpos 457\n  ypos 322\n }\n Remove {\n  operation keep\n  channels rgba\n  channels2 pos\n  channels3 nor\n  name Remove\n  xpos 457\n  ypos 402\n }\n Unpremult {\n  name Unpremult1\n  xpos 457\n  ypos 482\n  disable {{\"parent.rgb_color == 1 ? 1 : 0\"}}\n }\n Crop {\n  box {0 0 {\"\\[value parent.sample_res] * 10\"} {\"\\[value parent.sample_res] * 10\"}}\n  name UV1010\n  xpos 457\n  ypos 562\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos 457\n  ypos 642\n }\n Dot {\n  name uv_dot\n  tile_color 0xff0000ff\n  xpos 491\n  ypos 722\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -130\n  ypos 52\n  addUserKnob {20 User}\n  addUserKnob {22 fn01 T \"import math\\nimport random\\nimport time\\n\\n##### mode 0 = lookAt camera || 1 = vertices/faces normal || 2 = density map\\n\\ndef failCHK( _thisG , _failClass ) :\\n\\tcurNode = thisGRP\\n\\tfail = 0\\n\\twhile curNode :\\n\\t\\tif curNode.Class() in _failClass :\\n\\t\\t\\tfail = 1\\n\\t\\tcurNode = curNode.input(0)\\n\\treturn fail\\n\\n##########\\n\\ndef grouper( _n , _iterable ) :\\n\\timport itertools\\n\\targs = \\[iter(_iterable)] * _n\\n\\ttry :\\n\\t\\treturn itertools.zip_longest( *args )\\n\\texcept AttributeError:\\n\\t\\treturn itertools.izip_longest( *args )\\n\\n##########\\n\\ndef geoData( _pyNode , _objnum ) :\\n\\tptsID = \\[]\\n\\tfor i in _pyNode\\['geo'].getGeometry()\\[_objnum].primitives() :\\n\\t\\tfor j in i :\\n\\t\\t\\tif ptsID.count( j ) == 0 :\\n\\t\\t\\t\\tptsID.append( j )\\n\\n\\tptsID.sort()\\n\\n\\tvtxPos = list( grouper( 3 , list( _pyNode\\['geo'].getGeometry()\\[_objnum].points() ) ) )\\n\\tvtxNor = list( grouper( 3 , list( _pyNode\\['geo'].getGeometry()\\[_objnum].normals() ) ) )\\n\\n\\tgeoFullset = \\{\\}\\n\\tfor i in ptsID :\\n\\t\\tgeoFullset\\[ str(_objnum) + '_' + str(i) ] = \\[ vtxPos\\[i] , vtxNor\\[i] ]\\n\\t\\n\\treturn geoFullset\\n\\n##########\\n\\ndef findAvailableName( _name ) :\\n\\tfindName = 0\\n\\tdetectName = \\[]\\n\\n\\tfor node in nuke.allNodes():\\n\\t\\tif node.name().split('_')\\[0] == _name :\\n\\t\\t\\tdetectName.append(int(node.name().split('_')\\[1]))\\n\\tdetectName.sort()\\n\\twhile detectName.count(findName) != 0 :\\n\\t\\tfindName += 1\\n\\n\\treturn findName\\n\\n##########\\n\\ndef makePackage( _name , _thisG ) :\\n\\tavailableName = findAvailableName( _name )\\n\\txspace = int( nuke.toNode('preferences')\\['GridWidth'].getValue() )\\n\\n\\tif _thisG\\['var_type'].value().lower() == 'framehold' :\\n\\t\\ttexRNG = \\[ _thisG\\['frame_start'].getValue() , _thisG\\['frame_end'].getValue() ]\\n\\telif _thisG\\['var_type'].value().lower() == 'timeoffset' :\\n\\t\\ttexRNG = \\[ _thisG\\['offset_start'].getValue() , _thisG\\['offset_end'].getValue() ]\\n\\n\\t##### make group\\n\\tnewName = _name + '_' + str(availableName)\\n\\trandom.seed( int(time.time()) )\\n\\tsnapGRP = nuke.nodes.Group(\\n\\t\\tname = newName , \\n\\t\\ttile_color = int(thisGRP\\['tile_color'].getValue()) , \\n\\t\\txpos = thisGRP.xpos()+(xspace+random.randint(0,xspace)) , \\n\\t\\typos = thisGRP.ypos()\\n\\t\\t)\\n\\n\\tsnapGRP.addKnob( nuke.Tab_Knob( 'tab_general', 'General' ) )\\n\\n\\tsnapGRP.addKnob( nuke.Link_Knob( 'display_geo', 'display' ) )\\n\\tsnapGRP\\['display_geo'].setLink('MassiveScene.display')\\n\\tsnapGRP.addKnob( nuke.Link_Knob( 'render_geo', 'render' ) )\\n\\tsnapGRP\\['render_geo'].setLink('MassiveScene.render_mode')\\n\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'title_random_tex', '<b>RANDOM INPUT</b>', '<i>( \\{0\\} )</i>'.format( _thisG\\['var_type'].value() )  ) )\\n\\tsnapGRP.addKnob( nuke.Int_Knob( 'range_start', 'range' ) )\\n\\tsnapGRP\\['range_start'].setValue( int( texRNG\\[0] ) )\\n\\tsnapGRP.addKnob( nuke.Int_Knob( 'range_end', '' ) )\\n\\tsnapGRP\\['range_end'].setValue( int( texRNG\\[1] ) )\\n\\tsnapGRP\\['range_end'].clearFlag( nuke.STARTLINE )\\n\\tsnapGRP.addKnob( nuke.Int_Knob( 'tex_seed', 'seed' ) )\\n\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'title_random_trans', '<b>RANDOM FORMATION</b>' ) )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateX_range', 'rotate X range' ) )\\n\\tsnapGRP\\['rotateX_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateX_seed', 'seed' ) )\\n\\tsnapGRP\\['rotateX_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateY_range', 'rotate Y range' ) )\\n\\tsnapGRP\\['rotateY_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateY_seed', 'seed' ) )\\n\\tsnapGRP\\['rotateY_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateZ_range', 'rotate Z range' ) )\\n\\tsnapGRP\\['rotateZ_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'rotateZ_seed', 'seed' ) )\\n\\tsnapGRP\\['rotateZ_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleX_range', 'scale X range' ) )\\n\\tsnapGRP\\['scaleX_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleX_seed', 'seed' ) )\\n\\tsnapGRP\\['scaleX_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleY_range', 'scale Y range' ) )\\n\\tsnapGRP\\['scaleY_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleY_seed', 'seed' ) )\\n\\tsnapGRP\\['scaleY_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleZ_range', 'scale Z range' ) )\\n\\tsnapGRP\\['scaleZ_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'scaleZ_seed', 'seed' ) )\\n\\tsnapGRP\\['scaleZ_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'uniform_scale_range', 'uniform scale range' ) )\\n\\tsnapGRP\\['uniform_scale_range'].setFlag(0x00000002)\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'uniform_scale_seed', 'seed' ) )\\n\\tsnapGRP\\['uniform_scale_seed'].clearFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Tab_Knob( 'tab_misc', 'Misc' ) )\\n\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'title_axis', '<b>SNAP AXIS</b>' ) )\\n\\tsnapGRP.addKnob( nuke.Boolean_Knob( 'display_axis', 'display snap axis' ) )\\n\\tsnapGRP\\['display_axis'].setFlag( nuke.STARTLINE )\\n\\tsnapGRP.addKnob( nuke.Array_Knob( 'display_size', 'display size' ) )\\n\\tsnapGRP\\['display_size'].setFlag(0x00000002)\\n\\tsnapGRP\\['display_size'].setFlag( nuke.STARTLINE )\\n\\tsnapGRP\\['display_size'].setValue( 1 )\\n\\tsnapGRP.addKnob( nuke.Link_Knob( 'display_color', 'color' ) )\\n\\tsnapGRP\\['display_color'].setLink('menu01.display_color')\\n\\tsnapGRP\\['display_color'].clearFlag( nuke.STARTLINE )\\n\\tsnapGRP.addKnob( nuke.PyScript_Knob( 'invert_selection', 'invert selection', \\\"for node in nuke.allNodes(\\\\'Axis\\\\') :\\\\n\\\\tif node.name()\\[:3] == \\\\'ax_\\\\' :\\\\n\\\\t\\\\tnode\\[\\\\'selected\\\\'].setValue( not node\\[\\\\'selected\\\\'].value() )\\\" ) )\\n\\tsnapGRP\\['invert_selection'].setFlag( nuke.STARTLINE )\\n\\tsnapGRP.addKnob( nuke.PyScript_Knob( 'deselect_all', 'de-select all', 'for node in nuke.allNodes() :\\\\n\\\\tnode.setSelected( False )' ) )\\n\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'title_tools', '<b>TOOLS</b>' ) )\\n\\tsnapGRP.addKnob( nuke.Boolean_Knob( 'exTranslate', 'translate' ) )\\n\\tsnapGRP\\['exTranslate'].setValue(True)\\n\\tsnapGRP.addKnob( nuke.Boolean_Knob( 'exRotate', 'rotate' ) )\\n\\tsnapGRP\\['exRotate'].setValue(True)\\n\\tsnapGRP.addKnob( nuke.Boolean_Knob( 'exScale', 'scale' ) )\\n\\tsnapGRP\\['exScale'].setValue(True)\\n\\tsnapGRP\\['exTranslate'].setFlag( nuke.STARTLINE )\\n\\n\\tif _thisG\\['snap_type'].getValue() and _thisG\\['rgb_color'].getValue() :\\n\\t\\tsnapGRP.addKnob( nuke.Boolean_Knob( 'exColor', 'color' ) )\\n\\t\\tsnapGRP\\['exColor'].setFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.PyScript_Knob( 'extract_ins', 'extract selected instance', goStore\\['cpCode02'].value() ) )\\n\\tsnapGRP\\['extract_ins'].setFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'spacer', '', '<br>' ) )\\n\\t\\n\\tsnapGRP.addKnob( nuke.PyScript_Knob( 'remove_ins', 'remove selected instance', goStore\\['cpCode03'].value() ) )\\n\\tsnapGRP\\['remove_ins'].setFlag( nuke.STARTLINE )\\n\\n\\tsnapGRP.addKnob( nuke.Tab_Knob( 'tab_info', 'Info', ) )\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_snap', '<font color=cyan>snap type :</font>', _thisG\\['snap_type'].value() ) )\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_rot', '<font color=cyan>rotation type :</font>', _thisG\\['rotation_type'].value() ) )\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_var', '<font color=cyan>input type :</font>', _thisG\\['var_type'].value() ) )\\n\\tif _thisG\\['snap_type'].getValue() and _thisG\\['rgb_color'].getValue() :\\n\\t\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_tex', '<font color=cyan>texture :</font>', 'sample RGB color' ) )\\n\\telse :\\n\\t\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_tex', '<font color=cyan>texture :</font>', 'instance geo texture' ) )\\n\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_inst', '<font color=cyan>total instance :</font>', '' ) )\\n\\tif _thisG\\['with_animation'].getValue() :\\n\\t\\tsnapGRP.addKnob( nuke.Text_Knob( 'info_aniRange', '<font color=cyan>anim frame range :</font>', '' ) )\\n\\n\\tsnapGRP\\['onCreate'].setValue( \\\"thisGRP = nuke.thisGroup()\\\\nknobs = \\[\\\\'rotateX_range\\\\',\\\\'rotateY_range\\\\',\\\\'rotateZ_range\\\\',\\\\'scaleX_range\\\\',\\\\'scaleY_range\\\\',\\\\'scaleZ_range\\\\',\\\\'uniform_scale_range\\\\',\\\\'display_size\\\\']\\\\nfor knob in knobs :\\\\n\\\\tthisGRP\\[knob].setFlag(0x00000002)\\\" )\\n\\n\\treturn snapGRP\\n\\n##########\\n\\ndef selGons( _ptsID , _mainGeo ) :\\n\\t##### get quads prim group\\n\\tprim = geoPrims( _mainGeo )\\n\\n\\tselVtxIDOnly = \\[ int( i\\[2:] ) for i in _ptsID ]\\n\\n\\tgonsID = \\[]\\n\\tfor ptsGRP in prim :\\n\\t\\ttemp = 0\\n\\t\\tfor i in ptsGRP :\\n\\t\\t\\ttemp += selVtxIDOnly.count( i )\\n\\t\\tif temp != 0 :\\n\\t\\t\\tgonsID.append( '0_' + '_'.join( \\[ str(j) for j in ptsGRP ] ) )\\n\\n\\treturn gonsID\\n\\n##########\\n\\ndef sfvConvert( _svlist ) :\\n\\tprimNameList = \\[]\\n\\tfor grp in _svlist :\\n\\t\\ttemp = \\[]\\n\\t\\tfor vtx in range( len( grp ) ) :\\n\\t\\t\\ttemp.append( str( grp\\[vtx] ) )\\n\\t\\tprimNameList.append( '0_' + '_'.join( temp ) )\\n\\n\\treturn primNameList\\n\\n##########\\n\\ndef genFaceNor( _thisG , _mainstream , _mainGeo , _svlist , _selType , _fRNG=\\[0,0] ) :\\n\\tpyg = nuke.toNode('PythonGeo')\\n\\n\\t##### get selected prims\\n\\tif _selType =='face' :\\n\\t\\tprimID = sfvConvert( _svlist )\\n\\telif _selType == 'vertex' :\\n\\t\\tprimID = _svlist\\n\\telif _selType == 'vertexFaces' :\\n\\t\\tprimID = selGons( _svlist, _mainGeo )\\n\\n\\t##### find available name and create global group\\n\\twith getLevel() :\\n\\t\\tsnapGRP = makePackage( 'mSnap', _thisG )\\n\\n\\t##### prep\\n\\twith snapGRP :\\n\\t\\tgrpBasic( primID, _thisG )\\n\\n\\t\\t##### snap faces\\n\\t\\t_mainstream.reverse()\\n\\n\\t\\tif _thisG\\['with_animation'].value() :\\n\\t\\t\\tnuke.toNode('store')\\['aniRNG'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\t\\t\\tnuke.thisGroup()\\['info_aniRange'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\n\\t\\t\\tct_hack = nuke.nodes.CurveTool()\\n\\t\\t\\tprogBar = nuke.ProgressTask('Sampling vertices')\\n\\t\\t\\tjobCount = 0\\n\\t\\t\\tjobTotal = ( _fRNG\\[1] + 1 )- _fRNG\\[0]\\n\\t\\t\\tfor ctime in range( _fRNG\\[0] , _fRNG\\[1] + 1 , 1 ) :\\n\\t\\t\\t\\tnuke.execute(ct_hack, ctime, ctime)\\n\\t\\t\\t\\t### progress bar\\n\\t\\t\\t\\tjobCount += 1\\n\\t\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t\\t#################\\n\\n\\t\\t\\t\\tgData = geoData( pyg , 0 ) ##### get geo data\\n\\t\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\t\\tkname = node.name().split('_')\\[2:]\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif ctime == _fRNG\\[0] :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setAnimated()\\n\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setAnimated()\\n\\n\\t\\t\\t\\t\\t\\tif _selType == 'face' or _selType == 'vertexFaces' :\\n\\t\\t\\t\\t\\t\\t\\tvec1 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\tvec2 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\tvec3 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValueAt( nukescripts.snap3d.calcAveragePosition( convertIter( gData, kname ) )\\[i], ctime, i )\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValueAt( math.degrees(nukescripts.snap3d.planeRotation( (vec1, vec2, vec3) , norm=None)\\[i]), ctime, i )\\n\\n\\t\\t\\t\\t\\t\\t\\tdel vec1, vec2, vec3\\n\\t\\t\\t\\t\\t\\telif _selType == 'vertex' :\\n\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValueAt( gData\\['0_' + kname\\[0]]\\[0]\\[i], ctime, i )\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValueAt( norToRot3D( gData , '0_' + kname\\[0] )\\[i], ctime, i )\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tif node.name() == 'worldTransform' :\\n\\t\\t\\t\\t\\t\\twTrans = unify( _mainstream , ctime ) ##### get world transformation\\n\\t\\t\\t\\t\\t\\tnode\\['useMatrix'].setValue(True)\\n\\t\\t\\t\\t\\t\\tnode\\['matrix'].setAnimated()\\n\\t\\t\\t\\t\\t\\tfor mtx in range(16) :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['matrix'].setValueAt( wTrans\\[mtx] , ctime , mtx )\\n\\n\\t\\t\\tnuke.delete( ct_hack )\\n\\t\\t\\tdel progBar, jobCount, jobTotal, progShow\\n\\n\\t\\telse :\\n\\t\\t\\tgData = geoData( pyg , 0 ) ##### get geo data\\n\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\tkname = node.name().split('_')\\[2:]\\n\\n\\t\\t\\t\\t\\tif _selType == 'face' or _selType == 'vertexFaces' :\\n\\t\\t\\t\\t\\t\\tvec1 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[0]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\tvec2 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[1]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\tvec3 = nuke.math.Vector3( \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[0] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[1] , \\n\\t\\t\\t\\t\\t\\t\\tgData\\[ '0_' + str(kname\\[2]) ]\\[0]\\[2] \\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValue( nukescripts.snap3d.calcAveragePosition( convertIter( gData, kname ) )\\[i], i )\\n\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValue( math.degrees(nukescripts.snap3d.planeRotation( (vec1, vec2, vec3), norm=None)\\[i]), i )\\n\\t\\t\\t\\t\\telif _selType == 'vertex' :\\n\\t\\t\\t\\t\\t\\tnode\\['translate'].setValue( gData\\['0_' + kname\\[0]]\\[0] )\\n\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValue( norToRot3D( gData , '0_' + kname\\[0] ) )\\n\\n\\t\\t\\t\\tif node.name() == 'worldTransform' :\\n\\t\\t\\t\\t\\twTrans = unify( _mainstream , nuke.frame() ) ##### get world transformation\\n\\t\\t\\t\\t\\tnode\\['useMatrix'].setValue(True)\\n\\t\\t\\t\\t\\tfor mtx in range(16) :\\n\\t\\t\\t\\t\\t\\tnode\\['matrix'].setValue( wTrans\\[mtx] , mtx )\\n\\n\\tdel primID, gData, kname, snapGRP, wTrans, _thisG, _mainstream, _mainGeo, _svlist, _selType, _fRNG\\n\\n##########\\n\\ndef genSelVtx( _thisG , _mainstream , _svlist , _selType , _fRNG=\\[0,0] ) :\\n\\tpyg = nuke.toNode('PythonGeo')\\n\\n\\t##### find available name and create global group\\n\\twith getLevel() :\\n\\t\\tsnapGRP = makePackage( 'mSnap', _thisG )\\n\\n\\t##### prep\\n\\twith snapGRP :\\n\\t\\tif _selType == 'face' :\\n\\t\\t\\tgrpBasic( sfvConvert( _svlist ), _thisG )\\n\\t\\telif _selType == 'vertex' :\\n\\t\\t\\tgrpBasic( _svlist, _thisG )\\n\\n\\t\\t##### snap points\\n\\t\\t_mainstream.reverse()\\n\\n\\t\\tif _thisG\\['with_animation'].value() :\\n\\t\\t\\tnuke.toNode('store')\\['aniRNG'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\t\\t\\tnuke.thisGroup()\\['info_aniRange'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\n\\t\\t\\tct_hack = nuke.nodes.CurveTool()\\n\\t\\t\\tprogBar = nuke.ProgressTask('Sampling vertices')\\n\\t\\t\\tjobCount = 0\\n\\t\\t\\tjobTotal = ( _fRNG\\[1] + 1 )- _fRNG\\[0]\\n\\n\\t\\t\\tfor ctime in range( _fRNG\\[0] , _fRNG\\[1] + 1 ) :\\n\\t\\t\\t\\tnuke.execute(ct_hack, ctime, ctime)\\n\\t\\t\\t\\t### progress bar\\n\\t\\t\\t\\tjobCount += 1\\n\\t\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t\\t#################\\n\\n\\t\\t\\t\\tgData = geoData( pyg , 0 ) ##### get geo data\\n\\t\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\t\\tkname = node.name().split('_')\\[2:]\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif _selType == 'face' :\\n\\t\\t\\t\\t\\t\\t\\tif ctime == _fRNG\\[0] :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setAnimated()\\n\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValueAt(nukescripts.snap3d.calcAveragePosition( convertIter( gData, kname ) )\\[i], ctime, i)\\n\\t\\t\\t\\t\\t\\telif _selType == 'vertex' :\\n\\t\\t\\t\\t\\t\\t\\tif ctime == _fRNG\\[0] :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setAnimated()\\n\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValueAt( gData\\['0_' + kname\\[0]]\\[0]\\[i] , ctime , i )\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tif node.name() == 'worldTransform' :\\n\\t\\t\\t\\t\\t\\twTrans = unify( _mainstream , ctime ) ##### get world transformation\\n\\t\\t\\t\\t\\t\\tnode\\['useMatrix'].setValue(True)\\n\\t\\t\\t\\t\\t\\tnode\\['matrix'].setAnimated()\\n\\t\\t\\t\\t\\t\\tfor mtx in range(16) :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['matrix'].setValueAt( wTrans\\[mtx] , ctime , mtx )\\n\\n\\t\\t\\tnuke.delete( ct_hack )\\n\\t\\t\\tdel progBar, jobCount, jobTotal, progShow\\n\\n\\t\\telse :\\n\\t\\t\\tgData = geoData( pyg , 0 ) ##### get geo data\\n\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\tkname = node.name().split('_')\\[2:]\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tif _selType == 'face' :\\n\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValue(nukescripts.snap3d.calcAveragePosition( convertIter( gData, kname ) )\\[i], i)\\n\\t\\t\\t\\t\\telif _selType == 'vertex' :\\n\\t\\t\\t\\t\\t\\tnode\\['translate'].setValue( gData\\['0_' + kname\\[0]]\\[0] )\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tif node.name() == 'worldTransform' :\\n\\t\\t\\t\\t\\twTrans = unify( _mainstream , nuke.frame() ) ##### get world transformation\\n\\t\\t\\t\\t\\tnode\\['useMatrix'].setValue(True)\\n\\t\\t\\t\\t\\tfor mtx in range(16) :\\n\\t\\t\\t\\t\\t\\tnode\\['matrix'].setValue( wTrans\\[mtx] , mtx )\\n\\n\\tdel gData, kname, snapGRP, wTrans, _thisG, _mainstream, _svlist, _selType, _fRNG\\n\\n##########\\n\\ndef convertIter( _gd , _prim ) :\\n\\tloopNum = len( _prim )\\n\\tfor i in range( loopNum ) :\\n\\t\\ttPos = nuke.math.Vector4( \\n\\t\\t\\t_gd\\[ '0_' + str(_prim\\[i]) ]\\[0]\\[0] , \\n\\t\\t\\t_gd\\[ '0_' + str(_prim\\[i]) ]\\[0]\\[1] , \\n\\t\\t\\t_gd\\[ '0_' + str(_prim\\[i]) ]\\[0]\\[2] , \\n\\t\\t\\t1.0\\n\\t\\t\\t)\\n\\t\\tyield nukescripts.snap3d.VertexInfo(0, 0, 1, nuke.math.Vector3(tPos.x, tPos.y, tPos.z))\\n\\n##########\\n\\ndef grpBasic( _data , _thisG ) :\\n\\tglColor = int('%02x%02x%02x%02x' % (1*255,0*255,0*255,1),16)\\n\\n\\tgeoInput = nuke.nodes.Input( name = 'geo')\\n\\n\\tif _thisG\\['rotation_type'].getValue() == 0 :\\n\\t\\tcamInput = nuke.nodes.Input( name = 'axis_cam')\\n\\n\\tgeoDot = nuke.nodes.Dot()\\n\\tgeoDot.setInput(0, geoInput)\\n\\n\\tsceneAll = nuke.nodes.Scene( name = 'MassiveScene' )\\n\\tnuke.nodes.Output( inputs=\\[sceneAll] )\\n\\n\\tmenu01 = nuke.nodes.NoOp( name = 'menu01' )\\n\\tmenu01.addKnob( nuke.ColorChip_Knob( 'display_color', 'color' ) )\\n\\tmenu01\\['knobChanged'].setValue( goStore\\['cpCode01'].value() )\\n\\tmenu01\\['display_color'].setValue( glColor )\\n\\n\\t##### copy function\\n\\tcopyStore = nuke.nodes.NoOp( name = 'store' )\\n\\tcopyStore.addKnob( nuke.PyScript_Knob( 'fn', 'fn', goStore\\['fn02'].value() ) )\\n\\tcopyStore.addKnob( nuke.Multiline_Eval_String_Knob( 'filterNonReverse', 'filterNonReverse', goStore\\['filterNonReverse'].value() ) )\\n\\tcopyStore\\['filterNonReverse'].setEnabled( False )\\n\\tcopyStore.addKnob( nuke.Multiline_Eval_String_Knob( 'filter3DNodes', 'filter3DNodes', goStore\\['filter3DNodes'].value() ) )\\n\\tcopyStore\\['filter3DNodes'].setEnabled( False )\\n\\tif _thisG\\['with_animation'].value() :\\n\\t\\tcopyStore.addKnob( nuke.EvalString_Knob( 'aniRNG', 'aniRNG' , '1001-1100' ) )\\n\\n\\t##### apply geo's transformation\\n\\tworldTrans = nuke.nodes.Axis(\\n\\t\\tname = 'worldTransform' , \\n\\t\\tdisplay = 'off' , \\n\\t\\tselectable = 0\\n\\t\\t)\\n\\n\\t##### RGB color setup\\n\\tif _thisG\\['snap_type'].getValue() and _thisG\\['rgb_color'].getValue() :\\n\\t\\tcolorRes = nuke.nodes.Reformat(\\n\\t\\t\\t\\t\\ttype = 1 ,\\n\\t\\t\\t\\t\\tbox_fixed = True ,\\n\\t\\t\\t\\t\\tbox_width = 32 , box_height = 32\\n\\t\\t\\t\\t\\t)\\n\\t\\tcolorBasic = nuke.nodes.Expression(\\n\\t\\t\\t\\t\\tchannel0 = 'red' , channel1 = 'green' , channel2 = 'blue' , channel3 = 'alpha' , \\n\\t\\t\\t\\t\\texpr0 = '1' , expr1 = '1' , expr2 = '1' , expr3 = '1' , \\n\\t\\t\\t\\t\\tinputs = \\[colorRes]\\n\\t\\t\\t\\t\\t)\\n\\n\\t##### mass generate\\n\\tfor key in range (0, len(_data)) :\\n\\t\\trandTexEX = 'trunc( ( random(tex_seed, \\{0\\}) * (range_end-range_start) ) + range_start )'.format( key ) \\n\\t\\tif _thisG\\['var_type'].getValue() == 0 :\\n\\t\\t\\trandomVar = nuke.nodes.FrameHold()\\n\\t\\t\\trandomVar\\['first_frame'].setExpression( randTexEX )\\n\\t\\telse :\\n\\t\\t\\trandomVar = nuke.nodes.TimeOffset()\\n\\t\\t\\trandomVar\\['time_offset'].setExpression( randTexEX )\\n\\t\\trandomVar.setInput(0, geoDot)\\n\\n\\t\\tscatterAX = nuke.nodes.Axis(\\n\\t\\t\\tname = 'ax_' + _data\\[key] , \\n\\t\\t\\tgl_color = glColor , \\n\\t\\t\\tinputs = \\[worldTrans]\\n\\t\\t\\t)\\n\\n\\t\\t##### axis setting\\n\\t\\tscatterAX\\['display'].setExpression( 'parent.display_axis' )\\n\\t\\tscatterAX\\['scaling'].setExpression( 'random( \\{2\\}, \\{0\\} ) * parent.\\{1\\} + (1-parent.\\{1\\})'.format( key , 'scaleX_range' , 'scaleX_seed' ) , 0 )\\n\\t\\tscatterAX\\['scaling'].setExpression( 'random( \\{2\\}, \\{0\\} ) * parent.\\{1\\} + (1-parent.\\{1\\})'.format( key , 'scaleY_range' , 'scaleY_seed' ) , 1 )\\n\\t\\tscatterAX\\['scaling'].setExpression( 'random( \\{2\\}, \\{0\\} ) * parent.\\{1\\} + (1-parent.\\{1\\})'.format( key , 'scaleZ_range' , 'scaleZ_seed' ) , 2 )\\n\\t\\tscatterAX\\['uniform_scale'].setExpression( '( random(\\{2\\},\\{0\\}) * parent.\\{1\\} + (1-parent.\\{1\\}) ) * parent.\\{3\\}'.format( key , 'uniform_scale_range' , 'uniform_scale_seed', 'display_size' ) )\\n\\n\\t\\tscatterAX.addKnob( nuke.Array_Knob( 'axid' , 'axid' ) )\\n\\t\\tscatterAX\\['axid'].setValue( key )\\n\\t\\tscatterAX.addKnob( nuke.XYZ_Knob( 'orig_rot' , 'orig_rot' ) )\\n\\t\\tscatterAX\\['rotate'].setExpression( 'random( \\{2\\}, \\{0\\} ) * 360 * \\{1\\} + \\{3\\}'.format( 'axid' , 'rotateX_range' , 'rotateX_seed' , 'orig_rot' ) , 0 )\\n\\t\\tscatterAX\\['rotate'].setExpression( 'random( \\{2\\}, \\{0\\} ) * 360 * \\{1\\} + \\{3\\}'.format( 'axid' , 'rotateY_range' , 'rotateY_seed' , 'orig_rot' ) , 1 )\\n\\t\\tscatterAX\\['rotate'].setExpression( 'random( \\{2\\}, \\{0\\} ) * 360 * \\{1\\} + \\{3\\}'.format( 'axid' , 'rotateZ_range' , 'rotateZ_seed' , 'orig_rot' ) , 2 )\\n\\n\\t\\tgenTransGeo = nuke.nodes.TransformGeo()\\n\\t\\tgenTransGeo\\['uniform_scale'].setExpression( '1 / \\{0\\}'.format( 'display_size' ) )\\n\\t\\tgenTransGeo.setInput(0, randomVar)\\n\\t\\tgenTransGeo.setInput(1, scatterAX)\\n\\n\\t\\tif _thisG\\['rotation_type'].getValue() == 0 :\\n\\t\\t\\tgenTransGeo.setInput(2, camInput)\\n\\n\\t\\t##### RGB color setup\\n\\t\\tif _thisG\\['snap_type'].getValue() and _thisG\\['rgb_color'].getValue() :\\n\\t\\t\\tappColor = nuke.nodes.Multiply(\\n\\t\\t\\t\\t\\t\\t\\tname = 'cc_' + _data\\[key] , \\n\\t\\t\\t\\t\\t\\t\\tinputs = \\[colorBasic]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\tappColor\\['value'].setSingleValue(False)\\n\\t\\t\\tappMat = nuke.nodes.ApplyMaterial(\\n\\t\\t\\t\\t\\t\\tinputs = \\[genTransGeo , appColor]\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\tsceneAll.setInput( key, appMat )\\n\\t\\telse :\\n\\t\\t\\tsceneAll.setInput( key, genTransGeo )\\n\\n\\tnuke.thisGroup()\\['info_inst'].setValue( str(len(_data)) )\\n\\n##########\\n\\ndef selID() :\\n\\tchkid = \\[]\\n\\tselobj = \\[]\\n\\tselidx = \\[]\\n\\tselpos = \\[]\\n\\trm = \\[]\\n\\tcount = 0\\n\\n\\tfor vtx in nukescripts.snap3d.selectedVertexInfos() :\\n\\t\\ttemp = str( vtx.objnum ) + '_' + str( vtx.index )\\n\\t\\tif not chkid.count( temp ) :\\n\\t\\t\\tchkid.append( temp )\\n\\n\\t\\t\\tif selidx.count( vtx.index ) :\\n\\t\\t\\t\\tplace = selidx.index( vtx.index )\\n\\t\\t\\t\\tif selpos\\[place] == vtx.position :\\n\\t\\t\\t\\t\\tif selobj\\[place] < vtx.objnum :\\n\\t\\t\\t\\t\\t\\trm.append( place )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\trm.append( count )\\n\\n\\t\\t\\tselobj.append( vtx.objnum )\\n\\t\\t\\tselidx.append( vtx.index )\\n\\t\\t\\tselpos.append( vtx.position )\\n\\t\\t\\tcount += 1\\n\\n\\tselPts = \\[]\\n\\n\\tfor i in range( len(selpos) ) :\\n\\t\\tif i not in rm :\\n\\t\\t\\tselPts.append( str(selobj\\[i]) + '_' + str(selidx\\[i]) )\\n\\n\\tdel chkid, selobj, selidx, selpos, rm, count\\n\\n\\treturn selPts\\n\\n##########\\n\\ndef randSelID( _slist , _thisG ) :\\n\\trandMax = round( max( 0 , min( 1 , _thisG\\['random_percentage'].getValue()/100 ) ) * len( _slist ) )\\n\\trandID = \\[]\\n\\trandom.seed( int( _thisG\\['random_seed'].getValue() ) )\\n\\twhile len( randID ) < randMax :\\n\\t\\tchoosenOne = _slist\\[ random.randint( 0, len( _slist )-1 ) ]\\n\\t\\tif not choosenOne in randID :\\n\\t\\t\\trandID.append( choosenOne )\\n\\n\\treturn randID\\n\\n##########\\n\\ndef primaryGeo( _mainstream , _filterPrimitives ) :\\n\\tfor sub in _mainstream :\\n\\t\\tfor node in sub :\\n\\t\\t\\tif node.Class() in _filterPrimitives :\\n\\t\\t\\t\\treturn node\\n\\n##########\\n\\ndef geoPrims( _mainGeo ) :\\n\\tgonType = len( nuke.toNode('PythonGeo')\\['geo'].getGeometry()\\[0].primitives() )\\n\\tif gonType > 1 :\\n\\t\\t##### tris\\n\\t\\tgPrims = list( nuke.toNode('PythonGeo')\\['geo'].getGeometry()\\[0].primitives() )\\n\\telse :\\n\\t\\tif _mainGeo.Class() == 'ReadGeo' or _mainGeo.Class() == 'ReadGeo2' :\\n\\t\\t\\t##### custom geo\\n\\t\\t\\tgPrims = \\[]\\n\\t\\t\\tprims = nuke.toNode('PythonGeo')\\['geo'].getGeometry()\\[0].primitives()\\n\\t\\t\\tfor prim in grouper( 4, prims\\[0] ) :\\n\\t\\t\\t\\tgPrims.append( prim )\\n\\t\\telse :\\n\\t\\t\\t##### quads\\n\\t\\t\\tgPrims = \\[]\\n\\t\\t\\tfor prim in _mainGeo\\['geo_select'].getGeometry().__getitem__(0).primitives() :\\n\\t\\t\\t\\tfor face in range(0, prim.faces()):\\n\\t\\t\\t\\t\\tgPrims.append( prim.faceVertices( face ) )\\n\\n\\treturn gPrims\\n\\n##########\\n\\ndef norToRot3D( _gData , _vid ) :\\n\\t##### rotate x\\n\\trx = -math.asin( _gData\\[ _vid ]\\[1]\\[1] )\\n\\n\\t##### rotate y\\n\\ttry :\\n\\t\\tif _gData\\[ _vid ]\\[1]\\[2] < 0 and _gData\\[ _vid ]\\[1]\\[0] < 0 :\\n\\t\\t\\try = -( math.pi + math.asin( _gData\\[ _vid ]\\[1]\\[0] / math.cos( -math.asin( _gData\\[ _vid ]\\[1]\\[1] ) ) ) )\\n\\t\\telif _gData\\[ _vid ]\\[1]\\[2] < 0 and _gData\\[ _vid ]\\[1]\\[0] > 0 :\\n\\t\\t\\try = math.pi - math.asin( _gData\\[ _vid ]\\[1]\\[0] / math.cos( -math.asin( _gData\\[ _vid ]\\[1]\\[1] ) ) )\\n\\t\\telse :\\n\\t\\t\\try = math.asin( _gData\\[ _vid ]\\[1]\\[0] / math.cos( -math.asin( _gData\\[ _vid ]\\[1]\\[1] ) ) )\\n\\texcept ValueError :\\n\\t\\tif _gData\\[ _vid ]\\[1]\\[0] > 0 :\\n\\t\\t\\try = 90\\n\\t\\telse :\\n\\t\\t\\try = -90\\n\\n\\tdel _gData , _vid\\n\\n\\trot3 = \\[ math.degrees( rx )%360+90 , math.degrees( ry )%360 , 0]\\n\\treturn rot3\\n\\n##########\\n\\ndef norToRotMap( _nor ) :\\n\\t##### rotate x\\n\\trx = -math.asin( _nor\\[1] )\\n\\n\\t##### rotate y\\n\\ttry :\\n\\t\\tif _nor\\[2] < 0 and _nor\\[0] < 0 :\\n\\t\\t\\try = -( math.pi + math.asin( _nor\\[0] / math.cos( -math.asin( _nor\\[1] ) ) ) )\\n\\t\\telif _nor\\[2] < 0 and _nor\\[0] > 0 :\\n\\t\\t\\try = math.pi - math.asin( _nor\\[0] / math.cos( -math.asin( _nor\\[1] ) ) )\\n\\t\\telse :\\n\\t\\t\\try = math.asin( _nor\\[0] / math.cos( -math.asin( _nor\\[1] ) ) )\\n\\texcept ValueError :\\n\\t\\tif _nor\\[0] > 0 :\\n\\t\\t\\try = 90\\n\\t\\telse :\\n\\t\\t\\try = -90\\n\\n\\tdel _nor\\n\\n\\trot3 = \\[ math.degrees( rx )%360+90 , math.degrees( ry )%360 , 0]\\n\\treturn rot3\\n\\n##########\\n\\ndef scanTile( _thisG , _startNode , _ctNode, _res ) :\\n\\t##### setup curveTool node\\n\\tscanCropSize = 32\\n\\t_ctNode\\['operation'].setValue( 'Auto Crop')\\n\\t_ctNode\\['channels'].setValue( 'alpha')\\n\\t_ctNode\\['ROI'].setValue( \\[ 0 , 0 , scanCropSize , scanCropSize ] )\\n\\n\\tsNodes = \\[]\\n\\tuvShift = nuke.nodes.Transform( inputs = \\[_startNode] )\\n\\tcrop32 = nuke.nodes.Crop( inputs = \\[uvShift] )\\n\\tcrop32\\['box'].setValue( \\[ 0 , 0 , _res , _res ] )\\n\\tscan32 = nuke.nodes.Reformat(\\n\\t\\t\\t\\t\\t\\ttype = 1 , box_fixed = True , box_width = scanCropSize , box_height = scanCropSize ,\\n\\t\\t\\t\\t\\t\\tinputs = \\[crop32]\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\tif _thisG\\['uv_type'].getValue() == 0 :\\n\\t\\t_ctNode.setInput( 0, scan32 )\\n\\t\\tnuke.execute( _ctNode, nuke.frame(), nuke.frame() )\\n\\t\\tcropResult = _ctNode\\['autocropdata'].getValue()\\n\\t\\tif ( cropResult\\[2] - cropResult\\[0] ) > 0 or ( cropResult\\[3] - cropResult\\[1] ) > 0 :\\n\\t\\t\\tuvCrop = nuke.nodes.Crop( \\n\\t\\t\\t\\t\\t\\tname = 'crop_00' ,\\n\\t\\t\\t\\t\\t\\treformat = True , \\n\\t\\t\\t\\t\\t\\tinputs = \\[uvShift] \\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\tfor i in range(4) :\\n\\t\\t\\t\\tuvCrop\\['box'].setValue( cropResult\\[i] * _res/scanCropSize , i )\\n\\t\\t\\tsNodes.append( uvCrop )\\n\\t\\telse :\\n\\t\\t\\tnuke.delete( uvShift )\\n\\telse :\\n\\t\\tfor y in range(10) :\\n\\t\\t\\tfor x in range(10) :\\n\\t\\t\\t\\tuvShift\\['translate'].setValue( -(_res*x) , 0 )\\n\\t\\t\\t\\tuvShift\\['translate'].setValue( -(_res*y) , 1 )\\n\\t\\t\\t\\t#uvShift\\['label'].setValue( 'tile : \\{0\\} | \\{1\\}' .format( str(x), str(y) ) )\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t_ctNode.setInput( 0, scan32 )\\n\\t\\t\\t\\tnuke.execute( _ctNode, nuke.frame(), nuke.frame() )\\n\\t\\t\\t\\tcropResult = _ctNode\\['autocropdata'].getValue()\\n\\n\\t\\t\\t\\tif ( cropResult\\[2] - cropResult\\[0] ) > 0 or ( cropResult\\[3] - cropResult\\[1] ) > 0 :\\n\\t\\t\\t\\t\\tnuke.delete( crop32 )\\n\\t\\t\\t\\t\\tnuke.delete( scan32 )\\n\\t\\t\\t\\t\\tuvCrop = nuke.nodes.Crop( \\n\\t\\t\\t\\t\\t\\t\\t\\tname = 'crop_\\{0\\}\\{1\\}'.format( str(y) , str(x) ) ,\\n\\t\\t\\t\\t\\t\\t\\t\\treformat = True , \\n\\t\\t\\t\\t\\t\\t\\t\\tinputs = \\[uvShift] \\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\tfor i in range(4) :\\n\\t\\t\\t\\t\\t\\tuvCrop\\['box'].setValue( cropResult\\[i] * _res/scanCropSize , i )\\n\\t\\t\\t\\t\\tsNodes.append( uvCrop )\\n\\t\\t\\t\\t\\tuvShift = nuke.nodes.Transform( inputs = \\[_startNode] )\\n\\t\\t\\t\\t\\tcrop32 = nuke.nodes.Crop( inputs = \\[uvShift] )\\n\\t\\t\\t\\t\\tcrop32\\['box'].setValue( \\[0,0,512,512] )\\n\\t\\t\\t\\t\\tscan32 = nuke.nodes.Reformat(\\n\\t\\t\\t\\t\\t\\t\\ttype = 1 , box_fixed = True , box_width = scanCropSize , box_height = scanCropSize ,\\n\\t\\t\\t\\t\\t\\t\\tinputs = \\[crop32]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\telif x == 9 and y == 9 :\\n\\t\\t\\t\\t\\tnuke.delete( uvShift )\\n\\n\\tnuke.delete( crop32 )\\n\\tnuke.delete( scan32 )\\n\\t_ctNode\\['autocropdata'].clearAnimated()\\n\\t_ctNode.setInput( 0, None )\\n\\n\\treturn sNodes\\n\\n##########\\n\\ndef rmNodes( _uvST ) :\\n\\tfollowNodes = _uvST.dependent()\\n\\tfor node in followNodes :\\n\\t\\tcheck = 0\\n\\t\\tcNodes = \\[node]\\n\\t\\twhile check < 1 :\\n\\t\\t\\tif len(cNodes\\[-1:]\\[0].dependent()) != 0 :\\n\\t\\t\\t\\tcNodes.append( cNodes\\[-1:]\\[0].dependent()\\[0] )\\n\\t\\t\\telse :\\n\\t\\t\\t\\tcheck = 1\\n\\t\\tfor rm in cNodes :\\n\\t\\t\\tnuke.delete( rm )\\n\\n##########\\n\\ndef genDMap( _thisG , _svlist , _sNodes , _fRNG=\\[0,0] ) :\\n\\t##### find available name and create global group\\n\\twith getLevel() :\\n\\t\\tsnapGRP = makePackage( 'mSnap', _thisG )\\n\\n\\t##### prep\\n\\twith snapGRP :\\n\\t\\tgrpBasic( _svlist, _thisG )\\n\\n\\t\\t##### RGB color\\n\\t\\tif _thisG\\['rgb_color'].value() :\\n\\t\\t\\tfor node in nuke.allNodes( 'Multiply' ) :\\n\\t\\t\\t\\tkname = node.name().split('_')\\[1:]\\n\\n\\t\\t\\t\\tfor cropNode in _sNodes :\\n\\t\\t\\t\\t\\tif cropNode.name() == 'crop_\\{0\\}'.format(kname\\[0]) :\\n\\t\\t\\t\\t\\t\\trgb = \\[ cropNode.sample('red', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('green', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('blue', int(kname\\[1]), int(kname\\[2])) ]\\n\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\tnuke.toNode( 'cc_\\{0\\}'.format( '_'.join(kname) ) )\\['value'].setValue( rgb\\[i], i )\\n\\n\\t\\t##### snap\\n\\t\\tif _thisG\\['with_animation'].value() :\\n\\t\\t\\tnuke.toNode('store')\\['aniRNG'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\t\\t\\tnuke.thisGroup()\\['info_aniRange'].setValue( '-'.join(\\[str(i) for i in _fRNG]) )\\n\\n\\t\\t\\tct_hack = nuke.nodes.CurveTool()\\n\\t\\t\\tprogBar = nuke.ProgressTask('Sampling Position')\\n\\t\\t\\tjobCount = 0\\n\\t\\t\\tjobTotal = ( _fRNG\\[1] + 1 )- _fRNG\\[0]\\n\\t\\t\\tfor ctime in range( _fRNG\\[0] , _fRNG\\[1] + 1 , 1 ) :\\n\\t\\t\\t\\tnuke.execute(ct_hack, ctime, ctime)\\n\\t\\t\\t\\t### progress bar\\n\\t\\t\\t\\tjobCount += 1\\n\\t\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t\\t#################\\n\\t\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\t\\tkname = node.name().split('_')\\[1:]\\n\\n\\t\\t\\t\\t\\t\\tif ctime == _fRNG\\[0] :\\n\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setAnimated()\\n\\t\\t\\t\\t\\t\\t\\tif _thisG\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setAnimated()\\n\\n\\t\\t\\t\\t\\t\\tfor cropNode in _sNodes :\\n\\t\\t\\t\\t\\t\\t\\tif cropNode.name() == 'crop_\\{0\\}'.format(kname\\[0]) :\\n\\t\\t\\t\\t\\t\\t\\t\\tpos = \\[ cropNode.sample('pos.red', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('pos.green', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('pos.blue', int(kname\\[1]), int(kname\\[2])) ]\\n\\t\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValueAt( pos\\[i], ctime, i )\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t##### snap rotation\\n\\t\\t\\t\\t\\t\\t\\t\\tif _thisG\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnor = \\[ cropNode.sample('nor.red', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('nor.green', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('nor.blue', int(kname\\[1]), int(kname\\[2])) ]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValueAt( norToRotMap( nor )\\[i], ctime, i )\\n\\t\\t\\t\\n\\t\\t\\tnuke.delete( ct_hack )\\n\\t\\t\\tdel progBar, jobCount, jobTotal, progShow\\n\\n\\t\\telse :\\n\\t\\t\\tfor node in nuke.allNodes( 'Axis' ) :\\n\\t\\t\\t\\tif node.name() != 'worldTransform' :\\n\\t\\t\\t\\t\\tkname = node.name().split('_')\\[1:]\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tfor cropNode in _sNodes :\\n\\t\\t\\t\\t\\t\\tif cropNode.name() == 'crop_\\{0\\}'.format(kname\\[0]) :\\n\\t\\t\\t\\t\\t\\t\\tpos = \\[ cropNode.sample('pos.red', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('pos.green', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('pos.blue', int(kname\\[1]), int(kname\\[2])) ]\\n\\t\\t\\t\\t\\t\\t\\tnode\\['translate'].setValue( pos )\\n\\n\\t\\t\\t\\t\\t\\t\\t##### snap rotation\\n\\t\\t\\t\\t\\t\\t\\tif _thisG\\['rotation_type'].getValue() :\\n\\t\\t\\t\\t\\t\\t\\t\\tnor = \\[ cropNode.sample('nor.red', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('nor.green', int(kname\\[1]), int(kname\\[2])) , cropNode.sample('nor.blue', int(kname\\[1]), int(kname\\[2])) ]\\n\\t\\t\\t\\t\\t\\t\\t\\tfor i in range(3) :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnode\\['orig_rot'].setValue( norToRotMap( nor )\\[i], i )\\n\\n##########\\n\\ndef samID( _thisG , _tileData ) :\\n\\t#print (_tileData)\\n\\tpos2D = \\[]\\n\\trandom.seed( int( _thisG\\['dmap_seed'].getValue() ) )\\n\\tfor key, value in _tileData.items() :\\n\\t\\tcount = 0\\n\\t\\tsubCount = 0\\n\\t\\tp2Data = \\[]\\n\\t\\twhile count < value\\[1] :\\n\\t\\t\\tsamXY = \\[ random.randint( 0 , value\\[0].width() ) , random.randint( 0 , value\\[0].height() ) ]\\n\\t\\t\\talpha = value\\[0].sample('alpha', samXY\\[0], samXY\\[1])\\n\\t\\t\\tpos = \\[ value\\[0].sample('pos.red', samXY\\[0], samXY\\[1]) , value\\[0].sample('pos.green', samXY\\[0], samXY\\[1]) , value\\[0].sample('pos.blue', samXY\\[0], samXY\\[1]) ]\\n\\t\\t\\tif alpha > 0 and samXY not in p2Data and pos != \\[0,0,0] :\\n\\t\\t\\t\\tcoRNG = int( ( 1 - max( min ( value\\[0].sample('alpha', samXY\\[0], samXY\\[1]) , 1.0 ) , 0.01 ) ) * 50 )\\n\\t\\t\\t\\txRNG = \\[ samXY\\[0]-int(coRNG/2)+i for i in range( int(coRNG/2) ) ]\\n\\t\\t\\t\\tyRNG = \\[ samXY\\[1]-int(coRNG/2)+i for i in range( int(coRNG/2) ) ]\\n\\t\\t\\t\\tif not len( list( set( \\[ i\\[0] for i in p2Data ] ).intersection( xRNG ) ) ) :\\n\\t\\t\\t\\t\\tif not len( list( set( \\[ i\\[1] for i in p2Data ] ).intersection( yRNG ) ) ) :\\n\\t\\t\\t\\t\\t\\tp2Data.append( samXY )\\n\\t\\t\\t\\t\\t\\tcount += 1\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tif subCount > _thisG\\['fail_attempts'].getValue() :\\n\\t\\t\\t\\t\\t\\t\\tcount = value\\[1]\\n\\t\\t\\t\\t\\t\\tsubCount += 1\\n\\t\\t\\t\\t\\t#print (count)\\n\\n\\t\\tp2Data = \\[ str( key.split('_')\\[1] ) + '_' + str( p\\[0] ) + '_' + str( p\\[1] ) for p in p2Data ]\\n\\t\\tpos2D += p2Data\\n\\n\\tdel p2Data , coRNG , xRNG , yRNG , _thisG , _tileData\\n\\n\\treturn pos2D\" +STARTLINE}\n  addUserKnob {22 fn02 -STARTLINE T \"import math\\n\\ndef getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n##########\\n\\ndef upstreamNodes( _startNode , _filterClass ) :\\n\\tmainStream = \\[]\\n\\tcurNode = _startNode\\n\\twhile curNode :\\n\\t\\tif curNode.knob('matrix') :\\n\\t\\t\\tif curNode.Class() in _filterClass :\\n\\t\\t\\t\\tsubStream = \\[curNode]\\n\\n\\t\\t\\t\\tfor x in range ( 1 , curNode.inputs() ) :\\n\\t\\t\\t\\t\\tsubNode = curNode.input(x)\\n\\t\\t\\t\\t\\tif subNode.knob('matrix') :\\n\\t\\t\\t\\t\\t\\tsubStream.append( subNode )\\n\\n\\t\\t\\t\\t\\twhile subNode :\\n\\t\\t\\t\\t\\t\\tfor y in range ( 0 , subNode.inputs() ) :\\n\\t\\t\\t\\t\\t\\t\\tif subNode.input(y).knob('matrix') :\\n\\t\\t\\t\\t\\t\\t\\t\\tsubStream.append( subNode.input(y) )\\n\\t\\t\\t\\t\\t\\tsubNode = subNode.input( 0 )\\n\\n\\t\\t\\t\\tmainStream.append( subStream )\\n\\t\\tcurNode = curNode.input( 0 )\\n\\n\\tdel subStream , curNode, _startNode , _filterClass\\n\\n\\treturn mainStream\\n\\n##########\\n\\ndef unify( _mainstream , _vtime ) :\\n\\n\\t# check input node type ##########################################\\n\\tif _mainstream\\[ len(_mainstream) - 1 ]\\[0] in filterCheck :\\n\\t\\t_mainstream.reverse()\\n\\n\\toutMTX = nuke.math.Matrix4()\\n\\tfor a in range (0, len( _mainstream )) :\\n\\t\\tfor b in range (0, len( _mainstream\\[a] )) :\\n\\n\\t\\t\\tgetMTX = nuke.math.Matrix4()\\n\\t\\t\\tfocusNode = _mainstream\\[a]\\[b]\\n\\n\\t\\t\\tfor q in range (0,16) :\\n\\t\\t\\t\\tgetMTX\\[q] = focusNode.knob('matrix').getValueAt( _vtime )\\[q]\\n\\n\\t\\t\\tif a != 0 :\\n\\t\\t\\t\\toutMTX = outMTX * getMTX\\n\\t\\t\\telse :\\n\\t\\t\\t\\toutMTX = getMTX\\n\\n\\treturn outMTX\\n\\n##########\\n\\ndef autoBackdrop_mod( _name , _tileC) : \\n\\tselNodes = nuke.selectedNodes() \\n\\t\\n\\t# Calculate bounds for the backdrop node. \\n\\tbdX = min(\\[node.xpos() for node in selNodes]) \\n\\tbdY = min(\\[node.ypos() for node in selNodes]) \\n\\tbdW = max(\\[node.xpos() + node.screenWidth() for node in selNodes]) - bdX \\n\\tbdH = max(\\[node.ypos() + node.screenHeight() for node in selNodes]) - bdY \\n\\n\\t# Expand the bounds to leave a little border. Elements are offsets for left, top, right and bottom edges respectively \\n\\tleft, top, right, bottom = (-10, -80, 10, 10) \\n\\tbdX += left \\n\\tbdY += top \\n\\tbdW += (right - left) \\n\\tbdH += (bottom - top) \\n\\t\\n\\tn = nuke.nodes.BackdropNode(\\n\\t\\t\\tlabel = _name ,\\n\\t\\t\\txpos = bdX , \\n\\t\\t\\tbdwidth = bdW , \\n\\t\\t\\typos = bdY , \\n\\t\\t\\tbdheight = bdH , \\n\\t\\t\\ttile_color = _tileC , \\n\\t\\t\\tnote_font_size=42 , \\n\\t\\t\\t) \\n\\t\\n\\t# revert to previous selection \\n\\tn\\['selected'].setValue(False) \\n\\t\\n\\treturn n\\n\\n##########\\n\\ndef mtx2value( _uMTX ) :\\n\\t_uMTX.transpose()\\n\\n\\tmTranslate = nuke.math.Matrix4( _uMTX )\\n\\tmTranslate.translationOnly()\\n\\ttranslate = (mTranslate\\[12], mTranslate\\[13], mTranslate\\[14])\\n\\n\\tmRotate = nuke.math.Matrix4( _uMTX )\\n\\tmRotate.rotationOnly()\\n\\trotateRad = mRotate.rotationsZXY()\\n\\trotate = (math.degrees(rotateRad\\[0]), math.degrees(rotateRad\\[1]), math.degrees(rotateRad\\[2]))\\n\\n\\tmScale = nuke.math.Matrix4( _uMTX )\\n\\tmScale.scaleOnly()\\n\\tscale = (mScale.xAxis().x, mScale.yAxis().y, mScale.zAxis().z)\\n\\n\\treturn ( translate, rotate, scale )\"}\n  addUserKnob {22 cpCode01 T \"for node in nuke.allNodes() :\\n    if node.name()\\[0:3] == 'ax_' :\\n        node\\['gl_color'].setValue( int( nuke.thisGroup()\\['display_color'].getValue() ) )\" +STARTLINE}\n  addUserKnob {22 cpCode02 -STARTLINE T \"import math\\n\\nthisGRP = nuke.thisGroup()\\n\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nif thisGRP\\['exTranslate'].value() or thisGRP\\['exRotate'].value() or thisGRP\\['exScale'].value() :\\n\\n\\t##### get selected axis\\n\\tselAX = \\[]\\n\\twith thisGRP :\\n\\t\\tfor node in nuke.allNodes() :\\n\\t\\t\\tif node.name()\\[0:3] == 'ax_' and node\\['selected'].getValue() == 1 :\\n\\t\\t\\t\\tselAX.append( node )\\n\\n\\tif len(selAX) :\\n\\t\\tspace = \\[ int(nuke.toNode('preferences')\\['GridWidth'].getValue()) , int(nuke.toNode('preferences')\\['GridHeight'].getValue()) ]\\n\\n\\t\\tfilterCheck = goStore\\['filterNonReverse'].getValue().split(',')\\n\\t\\tfilter3DNodes = goStore\\['filter3DNodes'].value().split(',')\\n\\t\\texNodes = \\[]\\n\\n\\t\\txportSC = nuke.nodes.Scene()\\n\\t\\texNodes.append( xportSC )\\n\\n\\t\\tprogBar = nuke.ProgressTask('Extracting instances...')\\n\\t\\tjobCount = 0\\n\\t\\tjobTotal = len( selAX )\\n\\n\\t\\tcount = 0\\n\\t\\tfor node in selAX :\\n\\t\\t\\t### progress bar\\n\\t\\t\\tjobCount += 1\\n\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t#################\\n\\n\\t\\t\\ttry :\\n\\t\\t\\t\\texColor = thisGRP\\['exColor'].value()\\n\\t\\t\\texcept :\\n\\t\\t\\t\\texColor = False\\n\\n\\t\\t\\tif exColor :\\n\\t\\t\\t\\txportAX = nuke.nodes.Axis(\\n\\t\\t\\t\\t\\t\\t\\t\\txpos = int( thisGRP.xpos() + space\\[0] * ( count + 1 ) ) , \\n\\t\\t\\t\\t\\t\\t\\t\\typos = int( thisGRP.ypos() + space\\[1] )\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\txportMULT = nuke.nodes.Multiply(\\n\\t\\t\\t\\t\\t\\t\\t\\tchannels = 'rgb' ,\\n\\t\\t\\t\\t\\t\\t\\t\\txpos = int( thisGRP.xpos() + space\\[0] * ( count + 1 ) ) , \\n\\t\\t\\t\\t\\t\\t\\t\\typos = int( thisGRP.ypos() )\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\txportMULT\\['value'].setSingleValue(False)\\n\\t\\t\\t\\twith thisGRP :\\n\\t\\t\\t\\t\\txportMULT\\['value'].setValue( nuke.toNode( 'cc_\\{0\\}'.format(node.name()\\[3:]) )\\['value'].getValue() )\\n\\t\\t\\t\\texNodes.append( xportAX )\\n\\t\\t\\t\\texNodes.append( xportMULT )\\n\\t\\t\\telse :\\n\\t\\t\\t\\txportAX = nuke.nodes.Axis(\\n\\t\\t\\t\\t\\txpos = int( thisGRP.xpos() + space\\[0] * ( count + 1 ) ) , \\n\\t\\t\\t\\t\\typos = int( thisGRP.ypos() )\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\texNodes.append( xportAX )\\n\\n\\t\\t\\txportSC.setInput( count, xportAX )\\n\\t\\t\\tcount += 1\\n\\n\\t\\t\\ttry :\\n\\t\\t\\t\\twith thisGRP :\\n\\t\\t\\t\\t\\tAnimRange = \\[int(i) for i in goStore\\['aniRNG'].value().split('-')]\\n\\n\\t\\t\\t\\tif thisGRP\\['exTranslate'].value() :\\n\\t\\t\\t\\t\\txportAX\\['translate'].setAnimated()\\n\\t\\t\\t\\tif thisGRP\\['exRotate'].value() :\\n\\t\\t\\t\\t\\txportAX\\['rotate'].setAnimated()\\n\\t\\t\\t\\tif thisGRP\\['exScale'].value() :\\n\\t\\t\\t\\t\\txportAX\\['scaling'].setAnimated()\\n\\n\\t\\t\\t\\tfor ctime in range( int(AnimRange\\[0]) , int(AnimRange\\[1]+1) , 1  ) :\\n\\t\\t\\t\\t\\tmainstream = upstreamNodes( node , filter3DNodes )\\n\\t\\t\\t\\t\\tmMTX = unify( mainstream , ctime )\\n\\t\\t\\t\\t\\tform = mtx2value( mMTX )\\n\\n\\t\\t\\t\\t\\tif thisGRP\\['exTranslate'].value() :\\n\\t\\t\\t\\t\\t\\tfor i in range( 3 ) :\\n\\t\\t\\t\\t\\t\\t\\txportAX\\['translate'].setValueAt( form\\[0]\\[i] , ctime, i )\\n\\t\\t\\t\\t\\tif thisGRP\\['exRotate'].value() :\\n\\t\\t\\t\\t\\t\\tfor i in range( 3 ) :\\n\\t\\t\\t\\t\\t\\t\\txportAX\\['rotate'].setValueAt( form\\[1]\\[i] , ctime, i )\\n\\t\\t\\t\\t\\tif thisGRP\\['exScale'].value() :\\n\\t\\t\\t\\t\\t\\tfor i in range( 3 ) :\\n\\t\\t\\t\\t\\t\\t\\txportAX\\['scaling'].setValueAt( form\\[2]\\[i] , ctime, i )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tmainstream = upstreamNodes( node , filter3DNodes )\\n\\t\\t\\t\\tmMTX = unify( mainstream , nuke.frame() )\\n\\t\\t\\t\\tform = mtx2value( mMTX )\\n\\n\\t\\t\\t\\tif thisGRP\\['exTranslate'].value() :\\n\\t\\t\\t\\t\\txportAX\\['translate'].setValue( form\\[0] )\\n\\t\\t\\t\\tif thisGRP\\['exRotate'].value() :\\n\\t\\t\\t\\t\\txportAX\\['rotate'].setValue( form\\[1] )\\n\\t\\t\\t\\tif thisGRP\\['exScale'].value() :\\n\\t\\t\\t\\t\\txportAX\\['scaling'].setValue( form\\[2] )\\n\\n\\t\\t##### deselect all Nodes\\n\\t\\twith getLevel() :\\n\\t\\t\\tsavedSelected = \\[]\\n\\t\\t\\tfor node in nuke.allNodes() :\\n\\t\\t\\t\\tif node\\['selected'].value()\\t:\\n\\t\\t\\t\\t\\tsavedSelected.append( node )\\n\\t\\t\\t\\tnode.setSelected( False )\\n\\n\\t\\t##### set backdrop\\n\\t\\tfor node in exNodes :\\n\\t\\t\\tnode.setSelected( True )\\n\\n\\t\\tautoBackdrop_mod( thisGRP.name() , int( thisGRP\\['tile_color'].getValue() ) )\\n\\n\\t\\tfor node in exNodes :\\n\\t\\t\\tnode.setSelected( False )\\n\\n\\t\\t##### restore selected node\\n\\t\\tfor node in savedSelected :\\n\\t\\t\\tnode.setSelected( True )\\n\\n\\t\\tdel progBar, jobCount, jobTotal, progShow\\n\\t\\t\\n\\telse :\\n\\t\\tnuke.message('No selected axis found.<br><br>Process denied...')\\n\\nelse :\\n\\tnuke.message('No translate, rotate and scale checked, no axis will be extract.<br><br>Process denied...')\"}\n  addUserKnob {22 cpCode03 T \"selAX = \\[]\\nfor node in nuke.allNodes('Axis') :\\n\\tif node.name()\\[:3] == 'ax_' and node\\['selected'].getValue() :\\n\\t\\tfor link in node.dependent()\\[0].dependencies() :\\n\\t\\t\\tif link.Class() != 'Input' :\\n\\t\\t\\t\\tselAX.append( link )\\n\\t\\tif node.dependent()\\[0].dependent()\\[0].Class() == 'ApplyMaterial' :\\n\\t\\t\\tfor link in node.dependent()\\[0].dependent()\\[0].dependencies() :\\n\\t\\t\\t\\tselAX.append( link )\\n\\t\\t\\tselAX.append( node.dependent()\\[0].dependent()\\[0] )\\n\\t\\telse :\\n\\t\\t\\tselAX.append( node.dependent()\\[0] )\\n\\nif len( selAX ) :\\n\\tprogBar = nuke.ProgressTask('Removing instances...')\\n\\tjobCount = 0\\n\\tjobTotal = len( selAX )\\n\\n\\tfor rmNode in selAX :\\n\\t\\t### progress bar\\n\\t\\tjobCount += 1\\n\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\tif progBar.isCancelled() :\\n\\t\\t\\tbreak;\\n\\t\\tprogBar.setProgress(progShow)\\n\\t\\t#################\\n\\n\\t\\tfor i in range( rmNode.inputs() ) :\\n\\t\\t\\trmNode.setInput( i, None )\\n\\t\\tif rmNode.Class() == 'Axis' :\\n\\t\\t\\tnuke.thisGroup()\\['info_inst'].setValue( str( int( nuke.thisGroup()\\['info_inst'].value() ) -1 ) )\\n\\t\\tnuke.delete( rmNode )\\n\\n\\tdel progBar, jobCount, jobTotal, progShow\\nelse :\\n\\tnuke.message('No instance selected. Nothing deleted.')\" +STARTLINE}\n  addUserKnob {43 filterNonReverse +DISABLED}\n  filterNonReverse Camera,Camera2,Light,Light2,DirectLight,Environment,Axis,Axis2\n  addUserKnob {43 filter3DNodes +DISABLED}\n  filter3DNodes Axis,Axis2,Card,Card2,Cube,Cylinder,Sphere,ReadGeo,ReadGeo2,Light,Light2,DirectLight,Spotlight,Environment,TransformGeo,EditGeo,Camera,Camera2\n  addUserKnob {43 filterPrimitives +DISABLED}\n  filterPrimitives Card,Card2,Cube,Cylinder,Sphere,ReadGeo,ReadGeo2\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\ndmapknobs = \\['title_dmap_setting','uv_type','sample_res','max_instance','dmap_seed','rgb_color','fail_attempts']\\nvtxknobs = \\['title_vf_setting','random_percentage','random_seed']\\nif thisGRP\\['snap_type'].getValue() :\\n    for knob in dmapknobs :\\n        thisGRP\\[knob].setEnabled( True )\\n    for knob in vtxknobs :\\n        thisGRP\\[knob].setEnabled( False )\\n    thisGRP\\['selected_vertex_info'].setEnabled( False )\\nelse :\\n    for knob in dmapknobs :\\n        thisGRP\\[knob].setEnabled( False )\\n    for knob in vtxknobs :\\n        thisGRP\\[knob].setEnabled( True )\\n    thisGRP\\['selected_vertex_info'].setEnabled( True )\\n\"\n  xpos -447\n  ypos 127\n  addUserKnob {20 User}\n  addUserKnob {4 snap_type l \"snap type\" M {\"selected vertices/faces\" \"density map (alpha)\"}}\n }\npush $N1e37b800\n GeoSelect {\n  selectable false\n  geo {  }\n  name GeoSelect\n  xpos 138\n  ypos 215\n }\n Output {\n  name Output1\n  xpos 138\n  ypos 724\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_origami.gizmo",
    "content": "Group {\n inputs 2\n name Origami\n onCreate \"\\nnuke.toNode('store')\\['fn'].execute()\\n\"\n tile_color 0xd2d794ff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 frame_range l \"frame range\" t \"The frame range setting will applied on <b>'create target set'</b> and <b>'Deform with animation'</b>\\n\\nproject setting : frame range will be set to project setting of the script.\\n\\ncustom : will enable custom range knobs.\" T menu01.frame_range}\n addUserKnob {3 firstFR l \"custom range\" t \"First frame of the custom frame range.\" +DISABLED}\n firstFR 1001\n addUserKnob {3 lastFR l \"\" t \"Last frame of the custom frame range.\" -STARTLINE +DISABLED}\n lastFR 1100\n addUserKnob {20 origamiTabStart l \"\" +STARTLINE n -2}\n addUserKnob {20 tab_set l Set}\n addUserKnob {26 title_target l \"<b>Target Geo Setup</b>\"}\n addUserKnob {41 tgt_gl_color l \"Target Display Color\" T targetView3d.tgt_gl_color}\n addUserKnob {7 tgt_scale l scale t \"Scale of the target set in 3D view. Update in real-time.\" R 0.001 4}\n tgt_scale 0.5\n addUserKnob {22 create_tgt_set l \"Create Target Set\" t \"Create target set from selected vertex. Required geo connected to <b>target input</b>. This is the first step of the using the this tool.\" T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\ntemp = \\[]\\nselv =\\[]\\nfor i in nukescripts.snap3d.selectedVertexInfos () :\\n\\ttemp = \\[i.index, i.position]\\n\\tif selv.count(temp) == 0 :\\n\\t\\tselv.append(temp)\\ndel temp\\n\\nif len(selv) < 1 or thisGRP.input(0) == None :\\n\\tnuke.message('Please connect the target geo to this node and select vertex first.')\\nelse :\\n\\tthisGRP\\['reset_tgt'].execute()\\n\\n\\tFRsetting = thisGRP\\['frame_range'].getValue()\\n\\n\\tif FRsetting == 1 :\\n\\t\\tframeST = int(thisGRP\\['firstFR'].getValue())\\n\\t\\tframeED = int(thisGRP\\['lastFR'].getValue())\\n\\telse :\\n\\t\\tframeST = nuke.root().firstFrame()\\n\\t\\tframeED = nuke.root().lastFrame()\\n\\n\\tgetColor = thisGRP\\['tgt_gl_color'].getValue()\\n\\n\\toSC = nuke.toNode('oScene')\\n\\n\\ttgtGRP = nuke.nodes.Group(name='t')\\n\\n\\ttgtGRP.begin()\\n\\ttgtSC = nuke.nodes.Scene()\\n\\ttgtOUT = nuke.nodes.Output()\\n\\ttgtOUT.setInput(0, tgtSC)\\n\\n\\tfor i in range (0, len(selv)) :\\n\\t\\ttgtAX = nuke.nodes.Axis(name='x' + str(i))\\n\\t\\ttgtAX.addKnob(nuke.XYZ_Knob('origin'))\\n\\t\\ttgtAX\\['origin'].setAnimated()\\n\\t\\ttgtAX\\['translate'].setAnimated()\\n\\t\\ttgtAX\\['gl_color'].fromScript('0x%02x%02x%02x%02x' % ( int(getColor\\[0]*255) , int(getColor\\[1]*255), int(getColor\\[2]*255), int(255) ) )\\n\\t\\ttgtAX\\['scaling'].setExpression('parent.parent.tgt_scale')\\n\\t\\ttgtSC.setInput(i, tgtAX)\\n\\n\\thack_ct = nuke.nodes.CurveTool()\\n\\n\\tprogBar = nuke.ProgressTask('Sampling vertex')\\n\\tjobCount = 0\\n\\tjobTotal = (frameED+1)-frameST\\n\\n\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\t\\tnuke.execute(hack_ct, time, time)\\n\\t\\t### progress bar\\n\\t\\tjobCount += 1\\n\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\tif progBar.isCancelled() :\\n\\t\\t\\tbreak;\\n\\t\\tprogBar.setProgress(progShow)\\n\\t\\t#################\\n\\n\\t\\tselv = \\[]\\n\\t\\tg = 0\\n\\t\\tfor i in nukescripts.snap3d.selectedVertexInfos () :\\n\\t\\t\\ttemp = \\[i.index, i.position]\\n\\t\\t\\tif selv.count(temp) == 0 :\\n\\t\\t\\t\\tselv.append(temp)\\n\\n\\t\\t\\t\\tfocusNODE = nuke.toNode('x' + str(g))\\n\\t\\t\\t\\tfocusNODE\\['origin'].setValue(i.position)\\n\\t\\t\\t\\tfocusNODE\\['translate'].setValue(i.position)\\n\\t\\t\\t\\tif time == int(frameED) :\\n\\t\\t\\t\\t\\tfocusNODE\\['knobChanged'].setValue('axLock(nuke.thisNode(), 1)')\\n\\t\\t\\t\\tg += 1\\n\\n\\tdel progBar\\n\\tdel temp\\n\\tnuke.delete(hack_ct)\\n\\ttgtGRP.end()\\n\\toSC.setInput(3, tgtGRP)\\ndel selv\" +STARTLINE}\n addUserKnob {22 add_ex_tgt l \"Add Extra Target\" t \"User can add extra target set after the set created. The extra target can be any 3D nodes or vertex selected in viewer.\\n\\nnode : select all the 3D nodes you want to add and click this button. It will import the animated nodes into the target set.\\n\\nvertex : select vertex in viewer and click this button. It will scan through the frame range and import the vertex into the target set.\" T \"if nuke.toNode('t') == None :\\n\\tnuke.message('No Target Selection found. Please create target selection first before add extra target.')\\nelse :\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\texfr = thisGRP\\['extra_from'].getValue()\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tfilter3DNodes = goStore\\['filter3DNodes'].getValue()\\n\\troot = getLevel()\\n\\n\\tselEx = \\[]\\n\\n\\troot.begin()\\n\\tif exfr == 0 :\\n\\t\\tfor node in nuke.selectedNodes() :\\n\\t\\t\\tif filter3DNodes.count(node.Class()) != 0 :\\n\\t\\t\\t\\tselEx.append(node)\\n\\t\\tif len(selEx) == 0 :\\n\\t\\t\\tnuke.message('No available node selected. Only 3D nodes supported.')\\n\\telse :\\n\\t\\tfor i in nukescripts.snap3d.selectedVertexInfos () :\\n\\t\\t\\ttemp = \\[i.index, i.position]\\n\\t\\t\\tif selEx.count(temp) == 0 :\\n\\t\\t\\t\\tselEx.append(temp)\\n\\t\\tif len(selEx) == 0 :\\n\\t\\t\\tnuke.message('No vertex selected.')\\n\\troot.end()\\n\\n\\tthisGRP.begin()\\n\\tif len(selEx) != 0 :\\n\\t\\ttgtGRP = nuke.toNode('t')\\n\\t\\tgetColor = thisGRP\\['tgt_gl_color'].getValue()\\n\\n\\t\\tFRsetting = thisGRP\\['frame_range'].getValue()\\n\\n\\t\\tif FRsetting == 1 :\\n\\t\\t\\tframeST = int(thisGRP\\['firstFR'].getValue())\\n\\t\\t\\tframeED = int(thisGRP\\['lastFR'].getValue())\\n\\t\\telse :\\n\\t\\t\\tframeST = nuke.root().firstFrame()\\n\\t\\t\\tframeED = nuke.root().lastFrame()\\n\\n\\t\\t##########################################\\n\\n\\t\\tnumName = \\[]\\n\\n\\t\\ttgtGRP.begin()\\n\\t\\tfor node in nuke.allNodes() :\\n\\t\\t\\tif node.Class()\\[0:4] == 'Axis' :\\n\\t\\t\\t\\tnumName.append(int(node.name()\\[1:]))\\n\\t\\t\\tif node.Class()\\[0:5] == 'Scene' :\\n\\t\\t\\t\\tscNode = node\\n\\n\\t\\t##########################################\\n\\n\\t\\tcountCheck = 0\\n\\t\\ttempKeep = 0\\n\\t\\tnumNameNew = \\[]\\n\\n\\t\\twhile countCheck < len(selEx) :\\n\\t\\t\\twhile numName.count(tempKeep) != 0 :\\n\\t\\t\\t\\ttempKeep += 1\\n\\t\\t\\tnumName.append(tempKeep)\\n\\t\\t\\tnumNameNew.append(tempKeep)\\n\\t\\t\\tcountCheck += 1\\n\\n\\t\\tdel tempKeep\\n\\t\\tdel numName\\n\\n\\t\\t##########################################\\n\\n\\t\\tfor i in range (0, len(selEx)) :\\n\\t\\t\\tnewAX = nuke.nodes.Axis(name='x' + str(numNameNew\\[i]))\\n\\t\\t\\tnewAX.addKnob(nuke.XYZ_Knob('origin'))\\n\\t\\t\\tnewAX\\['origin'].setAnimated()\\n\\t\\t\\tnewAX\\['translate'].setAnimated()\\n\\t\\t\\tnewAX\\['gl_color'].fromScript('0x%02x%02x%02x%02x' % ( int(getColor\\[0]*255) , int(getColor\\[1]*255) , int(getColor\\[2]*255) , int(255) ) )\\n\\t\\t\\tnewAX\\['scaling'].setExpression('parent.parent.tgt_scale')\\n\\t\\t\\tscNode.setInput(scNode.inputs()+1+i, newAX)\\n\\n\\t\\tif exfr == 0 :\\n\\t\\t\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\n\\t\\t\\t\\tfor i in range (0, len(numNameNew)) :\\n\\t\\t\\t\\t\\tfocusNODE = nuke.toNode('x' + str(numNameNew\\[i]))\\n\\t\\t\\t\\t\\tfocusNODE\\['origin'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[0], time, 0)\\n\\t\\t\\t\\t\\tfocusNODE\\['origin'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[1], time, 1)\\n\\t\\t\\t\\t\\tfocusNODE\\['origin'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[2], time, 2)\\n\\t\\t\\t\\t\\tfocusNODE\\['translate'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[0], time, 0)\\n\\t\\t\\t\\t\\tfocusNODE\\['translate'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[1], time, 1)\\n\\t\\t\\t\\t\\tfocusNODE\\['translate'].setValueAt(selEx\\[i]\\['translate'].getValueAt(time)\\[2], time, 2)\\n\\t\\t\\t\\t\\tif time == int(frameED) :\\n\\t\\t\\t\\t\\t\\tfocusNODE\\['knobChanged'].setValue('axLock(nuke.thisNode(), 1)')\\n\\t\\telse :\\n\\t\\t\\thack_ct = nuke.nodes.CurveTool()\\n\\n\\t\\t\\tprogBar = nuke.ProgressTask('Sampling vertex')\\n\\t\\t\\tjobCount = 0\\n\\t\\t\\tjobTotal = (frameED+1)-frameST\\n\\n\\t\\t\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\t\\t\\t\\tnuke.execute(hack_ct, time, time)\\n\\t\\t\\t\\t### progress bar\\n\\t\\t\\t\\tjobCount += 1\\n\\t\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t\\t#################\\n\\n\\t\\t\\t\\tselv = \\[]\\n\\t\\t\\t\\tg = 0\\n\\t\\t\\t\\tfor i in nukescripts.snap3d.selectedVertexInfos () :\\n\\t\\t\\t\\t\\ttemp = \\[i.index, i.position]\\n\\t\\t\\t\\t\\tif selv.count(temp) == 0 :\\n\\t\\t\\t\\t\\t\\tselv.append(temp)\\n\\n\\t\\t\\t\\t\\t\\tfocusNODE = nuke.toNode('x' + str(numNameNew\\[g]))\\n\\t\\t\\t\\t\\t\\tfocusNODE\\['origin'].setValue(i.position)\\n\\t\\t\\t\\t\\t\\tfocusNODE\\['translate'].setValue(i.position)\\n\\t\\t\\t\\t\\t\\tif time == int(frameED) :\\n\\t\\t\\t\\t\\t\\t\\tfocusNODE\\['knobChanged'].setValue('axLock(nuke.thisNode(), 1)')\\n\\t\\t\\t\\t\\t\\tg += 1\\n\\n\\t\\t\\tdel progBar, temp\\n\\t\\t\\tnuke.delete(hack_ct)\\n\\n\\t\\ttgtGRP.end()\\n\\n\\tdel selEx\" +STARTLINE}\n addUserKnob {4 extra_from l \"Extra from\" -STARTLINE M {nodes vertex \"\" \"\" \"\" \"\"}}\n addUserKnob {22 reset_tgt l Remove t \"Remove any exisiting target set.\" T \"try :\\n\\tnuke.delete(nuke.toNode('t'))\\n\\tnuke.thisGroup()\\['metadata'].fromScript('')\\n\\tthisGRP\\['reset_deform'].execute()\\nexcept :\\n\\tpass\" +STARTLINE}\n addUserKnob {26 title_source l \"<b>Source Geo Setup</b>\"}\n addUserKnob {41 src_gl_color l \"Source Display Color\" T sourceView3d.src_gl_color}\n addUserKnob {7 src_scale l scale t \"Scale of the source set in 3D view. Update in real-time.\" R 0.001 4}\n src_scale 1\n addUserKnob {6 use_card_deform l \"use card deform\" t \"Use card deform function. Source input MUST be <b>'Card2'</b> node (nuke default card node).\\n\\nDuring create source set, will confirm with user of the control points detected from the source input. <b>Required at least 3x3 size.</b>\\n\\nAfter source set created, this knob will be locked and not changable unless remove the source set again. The tool will take over the setting of the card. If change any setting of the source geo, the function will not work properly.\" +STARTLINE}\n addUserKnob {22 create_src_set l \"Create Source Set\" t \"If <b>'use card deform'</b> is uncheck, the tool will create source set base on the vertex of the source geo.\\n\\nIf <b>'use card deform'</b> is checked, the tool will confirm the amount of control points with user. And create the source set base on control point had been set.\" T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nif thisGRP.input(1) == None :\\n  nuke.message('Please connect the source geo to this node first.')\\nelse :\\n  inMTX = thisGRP.input(1)\\['matrix'].getValue()\\n\\n  vertexT = \\{\\}\\n\\n  srcGeo = thisGRP.input(1)\\n\\n  if thisGRP\\['use_card_deform'].getValue() != 1 :\\n    thisGRP\\['reset_src'].execute()\\n\\n    nuke.toNode('EditGeo_deform')\\['disable'].setValue(0)\\n    if thisGRP.input(1).Class() == 'Card2' :\\n      srcGeo\\['type'].setValue('none')\\n\\n    pgeoSGet = nuke.toNode('pgeoSGet')\\n    vertexT = pgVertexPack(pgeoSGet)\\n\\n    ##############################################\\n\\n    createSRCset(vertexT, inMTX, thisGRP)\\n    thisGRP\\['use_card_deform'].setEnabled(False)\\n  else :\\n    if srcGeo.Class() == 'Card2' :\\n      thisGRP\\['reset_src'].execute()\\n\\n      thisGRP\\['export'].setEnabled(False)\\n      nuke.toNode('EditGeo_deform')\\['disable'].setValue(1)\\n      \\n      srcGeo\\['type'].setValue('bicubic')\\n      srcGeo\\['break_tangent'].setValue(True)\\n      rawData = srcGeo\\['control_points'].toScript()\\n\\n      wSub = int(rawData.split(' ')\\[2])\\n      hSub = int(rawData.split(' ')\\[1])\\n\\n      p = nuke.Panel('Control Points Confirm')\\n      p.addSingleLineInput('x points', str(wSub))\\n      p.addSingleLineInput('y points', str(hSub))\\n\\n      if p.show() == 1 :\\n        xInput = int(p.value('x points'))\\n        yInput = int(p.value('y points'))\\n        if xInput == wSub and yInput == hSub :\\n          nuke.toNode('dataset')\\['raw_cdd'].setValue( rawData )\\n\\n          import re\\n          originData = re.split( '\\{|\\}', rawData )\\n          if originData.count('curve') != 0 :\\n            srcGeo\\['del_anim_shape'].execute()\\n\\n          ctrlpts = getCTRLPTS(rawData)\\n\\n          for i in range (0, len(ctrlpts)) :\\n            vertexT\\[i] = ctrlpts\\[i]\\n\\n          ##############################################\\n\\n          createSRCset(vertexT, inMTX, thisGRP)\\n        else :\\n          srcGeo\\['x_points'].setValue( xInput )\\n          srcGeo\\['y_points'].setValue( yInput )\\n          srcGeo.showControlPanel()\\n          srcGeo\\['new_shape'].execute()\\n          srcGeo.hideControlPanel()\\n\\n          rawData = srcGeo\\['control_points'].toScript()\\n          nuke.toNode('dataset')\\['raw_cdd'].setValue( rawData )\\n\\n          import re\\n          originData = re.split( '\\{|\\}', rawData )\\n          if originData.count('curve') != 0 :\\n            srcGeo\\['del_anim_shape'].execute()\\n\\n          ctrlpts = getCTRLPTS(rawData)\\n\\n          for i in range (0, len(ctrlpts)) :\\n            vertexT\\[i] = ctrlpts\\[i]\\n\\n          ##############################################\\n\\n          createSRCset(vertexT, inMTX, thisGRP)\\n\\n        thisGRP\\['use_card_deform'].setEnabled(False)\\n        thisGRP\\['rows'].setValue( srcGeo\\['rows'].value() )\\n        thisGRP\\['columns'].setValue( srcGeo\\['columns'].value() )\\n    else :\\n      nuke.message('Source input no Card2 found.')\" +STARTLINE}\n addUserKnob {22 reset_src l Remove t \"Remove any exisiting source set, reset all the deform value and release 'use card deform' knob.\" T \"try :\\n\\tthisGRP = nuke.thisGroup()\\n\\tnuke.delete(nuke.toNode('s'))\\n\\tthisGRP\\['metadata'].fromScript('')\\n\\tthisGRP\\['use_card_deform'].setEnabled(True)\\n\\tthisGRP\\['reset_deform'].execute()\\n\\tnuke.toNode('dataset')\\['raw_cdd'].setValue('')\\n\\tthisGRP\\['export'].setEnabled(True)\\nexcept :\\n\\tpass\" +STARTLINE}\n addUserKnob {26 title_p2p l \"<b>Point-to-Point Setup</b>\"}\n addUserKnob {22 snap l \"Snap Source to Target\" t \"Required select one target and one source under view and snap them together. All data will store into <b>'Point-to-Point data'</b> (metadata).\" T \"if nuke.toNode('t') == None :\\n\\tnuke.message('Missing Target selection. Please process \\\"Create Target Selection\\\" first.')\\nelse :\\n\\tif nuke.toNode('s') == None :\\n\\t\\tnuke.message('Missing Source UI. Please process \\\"Create Source UI\\\" first.')\\n\\telse :\\n\\t\\ttry :\\n\\t\\t\\tthisGRP = nuke.thisGroup()\\n\\t\\t\\tgoStore = nuke.toNode('store')\\n\\t\\t\\tgoStore\\['fn'].execute()\\n\\n\\t\\t\\ttgtGRP = nuke.toNode('t')\\n\\t\\t\\tsrcGRP = nuke.toNode('s')\\n\\n\\t\\t\\ttgtGRP.begin()\\n\\t\\t\\tfor node in nuke.allNodes() :\\n\\t\\t\\t\\tif node\\['selected'].getValue() == 1 :\\n\\t\\t\\t\\t\\ttgtSel = node\\n\\t\\t\\ttgtGRP.end()\\n\\n\\t\\t\\tsrcGRP.begin()\\n\\t\\t\\tfor node in nuke.allNodes() :\\n\\t\\t\\t\\tif node\\['selected'].getValue() == 1 :\\n\\t\\t\\t\\t\\tsrcSel = node\\n\\t\\t\\tsrcGRP.end()\\n\\n\\t\\t\\tsrcSel\\['translate'].setValue(tgtSel\\['translate'].getValue())\\n\\n\\t\\t\\t#######################################################\\n\\n\\t\\t\\tpathLength = len(srcSel.fullName().split('.'))\\n\\t\\t\\tsrcName = '.'.join(srcSel.fullName().split('.')\\[pathLength-2:pathLength])\\n\\t\\t\\ttgtName = '.'.join(tgtSel.fullName().split('.')\\[pathLength-2:pathLength])\\n\\n\\t\\t\\texistDataset = getData(thisGRP)\\n\\n\\t\\t\\texistDataset\\[srcName] = tgtName\\n\\n\\t\\t\\tnewData = \\[]\\n\\t\\t\\tfor key in existDataset :\\n\\t\\t\\t\\tnewData.append('\\{set ' + str(key) + ' ' + str(existDataset\\[key]) + '\\}')\\n\\n\\t\\t\\tthisGRP\\['metadata'].fromScript('\\\\n'.join(newData))\\n\\t\\t\\tdel existDataset\\n\\t\\texcept :\\n\\t\\t\\tnuke.message('Process fail. Please select 1 target and 1 source first.')\" +STARTLINE}\n addUserKnob {22 deselect_all l \"De-select All\" t \"This tool designed to only able select one target and one source only. User cannot de-select under viewer. Use this button to de-select any target or source.\" -STARTLINE T \"try :\\n\\taxGRP = nuke.toNode('t')\\n\\taxGRP.begin()\\n\\tfor node in nuke.allNodes() :\\n\\t\\tnode\\['selected'].setValue(0)\\n\\taxGRP.end()\\n\\taxGRP = nuke.toNode('s')\\n\\taxGRP.begin()\\n\\tfor node in nuke.allNodes() :\\n\\t\\tnode\\['selected'].setValue(0)\\n\\taxGRP.end()\\nexcept :\\n\\tpass\"}\n addUserKnob {20 pts2pts l \"Point-to-Point data\" n 1}\n pts2pts 0\n addUserKnob {41 metadata l \"\" t \"<b>*If not sure how this work, don't change it manually. Let the tool handle this.*</b>\\nThis store the point-to-point data after trigger snap function. It store the full path of the target set and the source set. User can find those full path name under viewer.\\n\\nFor example :\\norigami.s.y.1 - for the source\\norigami.t.x.1 - for the target\\n\\nIf these appear in the same line, which means s.y.1 linked to t.x.1 . Once triggered deform, the deformation will base on this point-to-point data to deform the point.\\n\\nSorting order will not affect anyting on the result. If add the data manually, need to be sure the full path name is existing in the set. Otherwise that will break the function.\" -STARTLINE T dataset.metadata}\n addUserKnob {20 endGroup n -1}\n addUserKnob {20 tab_cardDeform l \"Card Deform\"}\n addUserKnob {26 title_subd l <b>Subdivision</b>}\n addUserKnob {41 rows l rows/columns T menu04.rows}\n addUserKnob {41 columns l \"\" -STARTLINE T menu04.columns}\n addUserKnob {26 title_tangent l <b>Tangent</b>}\n addUserKnob {41 live_update l \"live update\" T menu02.live_update}\n addUserKnob {41 t1angle l \"tangent +x\" T menu03.t1angle}\n addUserKnob {41 t1scale l scale -STARTLINE T menu03.t1scale}\n addUserKnob {41 t2angle l \"tangent -x\" T menu03.t2angle}\n addUserKnob {41 t2scale l scale -STARTLINE T menu03.t2scale}\n addUserKnob {41 t3angle l \"tangent +y\" T menu03.t3angle}\n addUserKnob {41 t3scale l scale -STARTLINE T menu03.t3scale}\n addUserKnob {41 t4angle l \"tangent -y\" T menu03.t4angle}\n addUserKnob {41 t4scale l scale -STARTLINE T menu03.t4scale}\n addUserKnob {41 edge_tangent l \"edge tangent\" T menu03.edge_tangent}\n addUserKnob {26 title_animT l \"Animate Tangent\"}\n addUserKnob {41 anim_type_tangent l \"anim type\" t \"Anim type of tangent will ONLY apply on <b>deform with animation</b> .\\n\\n<b>dynamic</b>\\nCalculate every tangent angle and length on every frame.\\n\\n<b>static</b>\\nOnly apply the tangent angle and length from the reference frame set in this tool.\\n\\nWhen the type set to static, <b>reference frame</b> knob will be enable.\\n\\nThis knob will not trigger 'live update' due to static option require within frame range.\" T menu05.anim_type_tangent}\n addUserKnob {3 ref_frame l \"reference frame\" t \"This knob will be enable when tangent anim type set to <b>static</b>. And the tangle calculation will only apply from reference frame. The value has to be inside the frame range. \" +DISABLED}\n ref_frame 1001\n addUserKnob {20 origamiTabEnd l \"\" +STARTLINE n -3}\n addUserKnob {26 \"\"}\n addUserKnob {6 deform_anim l \"with Animation\" t \"Deform with animation.\" +STARTLINE}\n addUserKnob {22 deform l \"                          Deform                           \" t \"Deform the source geo. It can be use as preview during process and also final deform.\" T \"thisGRP = nuke.thisGroup()\\nwAnim = thisGRP\\['deform_anim'].getValue()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\nthisGRP\\['deform_status'].setValue(1)\\n\\nif thisGRP\\['use_card_deform'].getValue() != 1 :\\n\\tegDeform = nuke.toNode('EditGeo_deform')\\n\\n\\tmd = getData(thisGRP)\\n\\n\\tdkeys = \\[]\\n\\tdvalues = \\[]\\n\\n\\tif wAnim == 0 :\\n\\t\\tfor key in md :\\n\\t\\t\\tdkeys.append(str(key\\[3:]))\\n\\t\\t\\tfor i in range (0, 3) :\\n\\t\\t\\t\\tdiff = nuke.toNode(md\\[key])\\['translate'].getValue()\\[i] - nuke.toNode(key)\\['origin'].getValue()\\[i]\\n\\t\\t\\t\\tdvalues.append(str(diff))\\n\\n\\t\\tegDeform\\['keys'].fromScript('\\{ ' + ' '.join(dkeys) + ' \\}')\\n\\t\\tegDeform\\['values'].fromScript('\\{ ' + ' '.join(dvalues) + ' \\}')\\n\\n\\telse :\\n\\t\\tFRsetting = thisGRP\\['frame_range'].getValue()\\n\\n\\t\\tif FRsetting == 1 :\\n\\t\\t\\tframeST = int(thisGRP\\['firstFR'].getValue())\\n\\t\\t\\tframeED = int(thisGRP\\['lastFR'].getValue())\\n\\t\\telse :\\n\\t\\t\\tframeST = nuke.root().firstFrame()\\n\\t\\t\\tframeED = nuke.root().lastFrame()\\n\\n\\t\\t##########################################\\n\\n\\t\\ttempKeys01 = \\[]\\n\\t\\tfor key in md :\\n\\t\\t\\ttempKeys01.append(str(key\\[3:]))\\n\\n\\t\\ttempKeys02 = \\[]\\n\\t\\tfor i in range (0, len(tempKeys01)) :\\n\\t\\t\\ttempKeep = \\[]\\n\\t\\t\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\t\\t\\t\\ttempKeep.append('x' + str(time) + ' ' + tempKeys01\\[i])\\n\\t\\t\\ttempKeys02.append(tempKeep)\\n\\t\\t\\tdel tempKeep\\n\\t\\tdel tempKeys01\\n\\t\\ttempKeys01 = \\[]\\n\\t\\tfor i in range (0, len(tempKeys02)) :\\n\\t\\t\\ttempKeys01.append('\\{curve ' + ' '.join(tempKeys02\\[i]) + '\\}')\\n\\t\\tdel tempKeys02\\n\\n\\t\\tdkeys = '\\{' + ' '.join(tempKeys01) + '\\}'\\n\\n\\t\\t##########################################\\n\\n\\t\\ttempValue01 = \\[]\\n\\t\\tfor key in md :\\n\\t\\t\\ttempValue03 = \\[]\\n\\t\\t\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\t\\t\\t\\ttempValue02 = \\[]\\n\\t\\t\\t\\tfor i in range (0, 3) :\\n\\t\\t\\t\\t\\tdiff = nuke.toNode(md\\[key])\\['translate'].getValueAt(time)\\[i] - nuke.toNode(key)\\['origin'].getValue()\\[i]\\n\\t\\t\\t\\t\\ttempValue02.append('x' + str(time) + ' ' + str(diff))\\n\\t\\t\\t\\ttempValue03.append(tempValue02)\\n\\t\\t\\ttempValue01.append(tempValue03)\\n\\t\\ttempValue02 = \\[]\\n\\t\\tfor i in range (0, len(tempValue01)) :\\n\\t\\t\\ttempX = \\[]\\n\\t\\t\\ttempY = \\[]\\n\\t\\t\\ttempZ = \\[]\\n\\t\\t\\tfor t in range (0, len(tempValue01\\[i])) :\\n\\t\\t\\t\\ttempX.append(tempValue01\\[i]\\[t]\\[0])\\n\\t\\t\\t\\ttempY.append(tempValue01\\[i]\\[t]\\[1])\\n\\t\\t\\t\\ttempZ.append(tempValue01\\[i]\\[t]\\[2])\\n\\t\\t\\ttempValue02.append('\\{curve ' + ' '.join(tempX) + '\\} \\{curve ' + ' '.join(tempY) + '\\} \\{curve ' + ' '.join(tempZ) + '\\}')\\n\\n\\t\\tdvalues = '\\{' + ' '.join(tempValue02) + '\\}'\\n\\n\\t\\tegDeform\\['keys'].fromScript(dkeys)\\n\\t\\tegDeform\\['values'].fromScript(dvalues)\\nelse :\\n\\tcardCenter(thisGRP, thisGRP.input(1))\" +STARTLINE}\n addUserKnob {22 export l \"     Export EditGeo     \" t \"Deformation can be export to EditGeo node but not for card deform.\" T \"thisGRP = nuke.thisGroup()\\negDeform = nuke.toNode('EditGeo_deform')\\nroot = getLevel()\\n\\nroot.begin()\\nexEG = nuke.nodes.EditGeo()\\nexEG\\['xpos'].setValue(thisGRP.xpos()+120)\\nexEG\\['ypos'].setValue(thisGRP.ypos())\\nexEG\\['label'].setValue('Export by Origami')\\nexEG\\['keys'].fromScript(egDeform\\['keys'].toScript())\\nexEG\\['values'].fromScript(egDeform\\['values'].toScript())\\nexEG\\['tile_color'].fromScript(thisGRP\\['tile_color'].toScript())\\nroot.end()\" +STARTLINE}\n addUserKnob {22 reset_deform l \"     Reset Deform     \" t \"Remove all the applied deformation data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nnuke.toNode('EditGeo_deform')\\['keys'].fromScript('')\\nnuke.toNode('EditGeo_deform')\\['values'].fromScript('')\\ntry :\\n\\tif thisGRP\\['use_card_deform'].getValue() == 1 :\\n\\t\\tthisGRP.input(1)\\['useMatrix'].setValue(0)\\n\\t\\tthisGRP.input(1)\\['control_points'].fromScript(nuke.toNode('dataset')\\['raw_cdd'].getValue())\\n\\t\\tthisGRP.input(1)\\['label'].setValue('')\\n\\t\\tthisGRP.input(1)\\['tile_color'].fromScript('0')\\n\\t\\tthisGRP\\['deform_status'].setValue(0)\\nexcept :\\n\\tpass\"}\n addUserKnob {3 deform_status l \"\" t \"not for user\" +STARTLINE +INVISIBLE}\n addUserKnob {20 tab_menu l Feature}\n addUserKnob {22 create_origami_menu l \"Create Menu\" t \"Create a temporary tool menu. Support hotkey. It's not a permanent tool menu. The main purpose is get all the functions with hotkey support.\" T \"p = nuke.Panel('Alert')\\np.addNotepad('', 'This menu is temporary and will not override any of personal setting.\\\\n\\\\nWhen you \\\\'Create Menu\\\\', it might temporary override current hotkey. Please double check \\\\'Define Hotkey\\\\' section.\\\\n\\\\nUser always able revert hotkey after \\\\'Remove Menu\\\\' or restart nuke again.\\\\n\\\\nAre you sure to process?')\\n\\nif p.show() == 1 :\\n\\toriNAME = nuke.thisGroup()\\n\\thkCrTgt = oriNAME\\['hk_cr_tgt'].getValue()\\n\\thkRmTgt = oriNAME\\['hk_rm_tgt'].getValue()\\n\\thkCrSrcUI = oriNAME\\['hk_cr_srcUI'].getValue()\\n\\thkRmSrcUI = oriNAME\\['hk_rm_srcUI'].getValue()\\n\\thkSnap = oriNAME\\['hk_snap'].getValue()\\n\\thkDesel = oriNAME\\['hk_deselect_all'].getValue()\\n\\thkDeform = oriNAME\\['hk_deform'].getValue()\\n\\thkResetD = oriNAME\\['hk_reset_d'].getValue()\\n\\n\\tmenubar = nuke.menu('Nuke')\\n\\tori = menubar.addMenu(oriNAME.name())\\n\\n\\tori.addCommand('Target/Create Target Selection', 'crTgt(oriNAME)', hkCrTgt)\\n\\tori.addCommand('Target/Remove Target Selection', 'rmTgt(oriNAME)', hkRmTgt)\\n\\tori.addCommand('Source/Create Source UI', 'crSrcUI(oriNAME)', hkCrSrcUI)\\n\\tori.addCommand('Source/Remove Source UI', 'rmSrcUI(oriNAME)', hkRmSrcUI)\\n\\tori.addCommand('Snap Source to Target', 'snap(oriNAME)', hkSnap)\\n\\tori.addCommand('Deselect All', 'desel(oriNAME)', hkDesel)\\n\\tori.addCommand('Deform/Deform', 'orideform(oriNAME)', hkDeform)\\n\\tori.addCommand('Deform/Reset Deform', 'resetD(oriNAME)', hkResetD)\\n\\n\\tdef crTgt(origami) :\\n\\t\\torigami\\['create_tgt_set'].execute()\\n\\n\\tdef rmTgt(origami) :\\n\\t\\torigami\\['reset_tgt'].execute()\\n\\n\\tdef crSrcUI(origami) :\\n\\t\\torigami\\['create_src_set'].execute()\\n\\n\\tdef rmSrcUI(origami) :\\n\\t\\torigami\\['reset_src'].execute()\\n\\n\\tdef snap(origami) :\\n\\t\\torigami\\['snap'].execute()\\n\\n\\tdef desel(origami) :\\n\\t\\torigami\\['deselect_all'].execute()\\n\\n\\tdef orideform(origami) :\\n\\t\\torigami\\['deform'].execute()\\n\\n\\tdef resetD(origami) :\\n\\t\\torigami\\['reset_deform'].execute()\" +STARTLINE}\n addUserKnob {22 remove_origami_menu l \"Remove Menu\" t \"Remove the tool menu\" -STARTLINE T \"thisNAME = nuke.thisGroup().name()\\nnuke.menu('Nuke').removeItem(thisNAME)\"}\n addUserKnob {26 title_hotkey l \"Define Hotkey\"}\n addUserKnob {1 hk_cr_tgt l \"Create Target Set\"}\n hk_cr_tgt \";\"\n addUserKnob {1 hk_rm_tgt l \"Remove Target Set\"}\n hk_rm_tgt \"shift+;\"\n addUserKnob {1 hk_cr_srcUI l \"Create Source Set\"}\n hk_cr_srcUI '\n addUserKnob {1 hk_rm_srcUI l \"Remove Source Set\"}\n hk_rm_srcUI shift+'\n addUserKnob {1 hk_snap l \"Snap Source to Target\"}\n hk_snap alt+n\n addUserKnob {1 hk_deselect_all l \"Deselect All\"}\n hk_deselect_all \"\\\\\"\n addUserKnob {1 hk_deform l Deform}\n hk_deform \"\\[\"\n addUserKnob {1 hk_reset_d l \"Reset Deform\"}\n hk_reset_d \"]\"\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.5}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2021-03-26}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.5<br>-&nbsp;compatible&nbsp;python3<br>-&nbsp;fix&nbsp;broken&nbsp;function&nbsp;by&nbsp;missing&nbsp;knob&nbsp;on&nbsp;'live_update'<br>-&nbsp;default&nbsp;Snap&nbsp;hotkeys&nbsp;set&nbsp;to&nbsp;'alt+n'<br>-&nbsp;minor&nbsp;fix<br>-&nbsp;'use&nbsp;card&nbsp;deform'&nbsp;uncheck&nbsp;by&nbsp;default<br><br>1.4<br>-&nbsp;fix&nbsp;the&nbsp;error&nbsp;message&nbsp;on&nbsp;<br>&nbsp;&nbsp;first&nbsp;time&nbsp;run&nbsp;'Create&nbsp;Target&nbsp;Set'<br>&nbsp;&nbsp;when&nbsp;there&nbsp;has&nbsp;no&nbsp;target&nbsp;input.<br>-&nbsp;update&nbsp;warning&nbsp;message<br>&nbsp;&nbsp;for&nbsp;'Create&nbsp;Menu'<br><br>1.3<br>-&nbsp;added&nbsp;the&nbsp;function&nbsp;onCreate,<br>&nbsp;&nbsp;when&nbsp;open&nbsp;a&nbsp;script&nbsp;already&nbsp;deform<br>&nbsp;&nbsp;live&nbsp;update&nbsp;will&nbsp;still&nbsp;function.<br><br>1.2<br>-&nbsp;added&nbsp;card&nbsp;deform&nbsp;option,<br>&nbsp;&nbsp;can&nbsp;get&nbsp;smooth&nbsp;shape&nbsp;of<br>&nbsp;&nbsp;deform&nbsp;with&nbsp;tangent.<br>-&nbsp;optimize&nbsp;the&nbsp;tool.<br>-&nbsp;added&nbsp;tooltips.<br>-&nbsp;layout&nbsp;of&nbsp;panel&nbsp;change.<br>-&nbsp;bug&nbsp;fix.<br><br>1.1<br>-&nbsp;rework&nbsp;entire&nbsp;tool&nbsp;workflow<br>&nbsp;&nbsp;to&nbsp;have&nbsp;better&nbsp;ui&nbsp;and&nbsp;ux\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://youtube.com/c/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -2060\n  ypos -208\n  bdwidth 1011\n  bdheight 247\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 42\n  xpos -2055\n  ypos 108\n  bdwidth 281\n  bdheight 213\n }\n Input {\n  inputs 0\n  name target\n  xpos -370\n  ypos -96\n }\n Dot {\n  name Dot2\n  xpos -336\n  ypos 103\n }\n Input {\n  inputs 0\n  name source\n  xpos -526\n  ypos -94\n  number 1\n }\n Dot {\n  name Dot1\n  xpos -492\n }\nset N5c8f2c00 [stack 0]\n EditGeo {\n  translate {1.379999995 0.7799999714 1.700000167}\n  name EditGeo_deform\n  xpos -526\n  ypos 74\n  disable true\n }\n Scene {\n  inputs 2\n  name oScene\n  xpos -516\n  ypos 182\n }\n Output {\n  name Output1\n  xpos -526\n  ypos 345\n }\npush $N5c8f2c00\n PythonGeo {\n  name pgeoSGet\n  xpos -654\n  ypos -3\n }\n NoOp {\n  inputs 0\n  name targetView3d\n  onCreate \"\\nfor knob in nuke.thisNode().knobs() :\\n    try :\\n        if knob.split('_')\\[3] == 'panelDropped' :\\n            nuke.thisNode().removeKnob(nuke.thisNode()\\[knob])\\n    except :\\n        pass\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\ngetColor = thisGRP\\['tgt_gl_color'].getValue()\\ncolorConvert = '0x%02x%02x%02x%02x' % (getColor\\[0]*255 , getColor\\[1]*255, getColor\\[2]*255, 255)\\ntry :\\n    axGRP = nuke.toNode('t')\\n    axGRP.begin()\\n    for node in nuke.allNodes() :\\n      if node.Class()\\[0:4] == 'Axis' :\\n        node\\['gl_color'].fromScript(colorConvert)\\n    axGRP.end()\\nexcept :\\n    pass\\nfor knob in nuke.thisNode().knobs() :\\n    try :\\n        if knob.split('_')\\[3] == 'panelDropped' :\\n            nuke.thisNode().removeKnob(nuke.thisNode()\\[knob])\\n    except :\\n        pass\\n\"\n  xpos -1870\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {18 tgt_gl_color l \"Target Display Color\" t \"Display color of the target set in 3D view. Update in real-time.\"}\n  tgt_gl_color {0.1999998093 0 1}\n }\n NoOp {\n  inputs 0\n  name menu04\n  knobChanged \"\\nif nuke.thisGroup().input(1).Class() == 'Card2' and nuke.thisGroup()\\['deform_status'].getValue() == 1 :\\n    subdUpdate(nuke.thisGroup(), nuke.thisGroup().input(1))\\n\"\n  xpos -1445\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {3 rows l rows/columns t \"Increase subdivsion will smooth the geo with curvature shape. The value is applied between each control point. For example, if control points is 3x3, row set to 10. The entire geo subdivision in row will be 30 in total.\\n\\nThis value will update in real-time after deformed. It will take the control of the source geo, but not adding any custom function.\"}\n  rows 10\n  addUserKnob {3 columns l \"\" t \"Increase subdivsion will smooth the geo with curvature shape. The value is applied between each control point. For example, if control points is 3x3, columns set to 10. The entire geo subdivision in columns will be 30 in total.\\n\\nThis value will update in real-time after deformed. It will take the control of the source geo, but not adding any custom function.\" -STARTLINE}\n  columns 10\n }\n NoOp {\n  inputs 0\n  name menu05\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['anim_type_tangent'].getValue() == 0 :\\n    thisGRP\\['ref_frame'].setEnabled(False)\\nelse :\\n    thisGRP\\['ref_frame'].setEnabled(True)\\n\"\n  xpos -1339\n  ypos -88\n  addUserKnob {20 User}\n  addUserKnob {4 anim_type_tangent l \"anim type\" t \"Anim type of tangent will ONLY apply on <b>deform with animation</b> .\\n\\n<b>dynamic</b>\\nCalculate every tangent angle and length on every frame.\\n\\n<b>static</b>\\nOnly apply the tangent angle and length from the reference frame set in this tool.\\n\\nWhen the type set to static, <b>reference frame</b> knob will be enable.\\n\\nThis knob will not trigger 'live update' due to static option require within frame range.\" M {dynamic static \"\" \"\" \"\" \"\" \"\" \"\"}}\n }\n NoOp {\n  inputs 0\n  name sourceView3d\n  onCreate \"\\nfor knob in nuke.thisNode().knobs() :\\n    try :\\n        if knob.split('_')\\[3] == 'panelDropped' :\\n            nuke.thisNode().removeKnob(nuke.thisNode()\\[knob])\\n    except :\\n        pass\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\ngetColor = thisGRP\\['src_gl_color'].getValue()\\ncolorConvert = '0x%02x%02x%02x%02x' % (getColor\\[0]*255 , getColor\\[1]*255, getColor\\[2]*255, 255)\\ntry :\\n    axGRP = nuke.toNode('s')\\n    axGRP.begin()\\n    for node in nuke.allNodes() :\\n      if node.Class()\\[0:4] == 'Axis' :\\n        node\\['gl_color'].fromScript(colorConvert)\\n    axGRP.end()\\nexcept :\\n    pass\\nfor knob in nuke.thisNode().knobs() :\\n    try :\\n        if knob.split('_')\\[3] == 'panelDropped' :\\n            nuke.thisNode().removeKnob(nuke.thisNode()\\[knob])\\n    except :\\n        pass\\n\"\n  xpos -1981\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {18 src_gl_color l \"Source Display Color\" t \"Display color of the source set in 3D view. Update in real-time.\"}\n  src_gl_color {1 0.6000000238 0}\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['frame_range'].getValue() == 0 :\\n    thisGRP\\['firstFR'].setEnabled(False)\\n    thisGRP\\['lastFR'].setEnabled(False)\\nelse :\\n    thisGRP\\['firstFR'].setEnabled(True)\\n    thisGRP\\['lastFR'].setEnabled(True)\\n\"\n  xpos -1760\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {4 frame_range l \"frame range\" M {\"project setting\" custom}}\n }\n NoOp {\n  inputs 0\n  name menu03\n  knobChanged \"\\nif nuke.thisGroup().input(1).Class() == 'Card2' and nuke.thisGroup()\\['deform_status'].getValue(1) and nuke.thisGroup()\\['live_update'].getValue() == 1 :\\n    cardCenter( nuke.thisGroup(), nuke.thisGroup().input(1))\\n\"\n  xpos -1554\n  ypos -86\n  addUserKnob {20 User}\n  addUserKnob {7 t1angle l \"tangent +x\" t \"When place the card at origin (0,0,0) , this tangent is control the angle of +x vector direction.\\n\\n0 is no any tangent angle\\n1 is the smoothness angle\\n\\nValue can be negative or any above 1.\"}\n  t1angle 1\n  addUserKnob {7 t1scale l scale t \"When place the card at origin (0,0,0) , this tangent is control the scale of +x vector direction.\\n\\n1 is the normal length of the tangent.\" -STARTLINE}\n  t1scale 1\n  addUserKnob {7 t2angle l \"tangent -x\" t \"When place the card at origin (0,0,0) , this tangent is control the angle of -x vector direction.\\n\\n0 is no any tangent angle\\n1 is the smoothness angle\\n\\nValue can be negative or any above 1.\"}\n  t2angle 1\n  addUserKnob {7 t2scale l scale t \"When place the card at origin (0,0,0) , this tangent is control the scale of -x vector direction.\\n\\n1 is the normal length of the tangent.\" -STARTLINE}\n  t2scale 1\n  addUserKnob {7 t3angle l \"tangent +y\" t \"When place the card at origin (0,0,0) , this tangent is control the angle of +y vector direction.\\n\\n0 is no any tangent angle\\n1 is the smoothness angle\\n\\nValue can be negative or any above 1.\"}\n  t3angle 1\n  addUserKnob {7 t3scale l scale t \"When place the card at origin (0,0,0) , this tangent is control the scale of +y vector direction.\\n\\n1 is the normal length of the tangent.\" -STARTLINE}\n  t3scale 1\n  addUserKnob {7 t4angle l \"tangent -y\" t \"When place the card at origin (0,0,0) , this tangent is control the angle of -y vector direction.\\n\\n0 is no any tangent angle\\n1 is the smoothness angle\\n\\nValue can be negative or any above 1.\"}\n  t4angle 1\n  addUserKnob {7 t4scale l scale t \"When place the card at origin (0,0,0) , this tangent is control the scale of -y vector direction.\\n\\n1 is the normal length of the tangent.\" -STARTLINE}\n  t4scale 1\n  addUserKnob {7 edge_tangent l \"edge tangent\" t \"Tangent on the edge can be have a separate value.\\n\\nIf value = 0 :\\nTangent on the edge will not separate than the other. It will take the control from tangent +x/-x/+y/-y\\n\\nif the value above 0 :\\nTangent on the edge will take the value from this knob.\\n\\nIf want to separate the tangent on the edge but don't want to smooth the geo. User can put 0.01 value to get this work.\"}\n  edge_tangent 0.01\n }\n NoOp {\n  inputs 0\n  name menu02\n  xpos -1660\n  ypos -87\n  addUserKnob {20 User}\n  addUserKnob {6 live_update l \"live update\" t \"If this knob checked, the tangent value change will update in real-time. Please note that the function works great with static deform. For animated deform, it might take some time to re-calculate every changes.\\n\\n<b>Recommend :</b>\\nTurn this on when looking at reference frame with animation off. Once the deform shape is good, turn this off and deform with animation on again to speed up the process.\" +STARTLINE}\n }\n ModifyMetaData {\n  inputs 0\n  name dataset\n  xpos -2020\n  ypos 230\n  addUserKnob {20 User}\n  addUserKnob {43 raw_cdd l \"raw CDD\"}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1905\n  ypos 231\n  addUserKnob {20 User}\n  addUserKnob {1 filter3DNodes}\n  filter3DNodes Axis,Axis2,Axis3,Card,Card2,Cube,Cylinder,Sphere,ReadGeo,ReadGeo2,Light,Light2,Light3,DirectLight,Spotlight,Environment,TransformGeo,EditGeo,Camera,Camera2\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t\\tnodePath.pop()\\n\\t\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n#######################################################\\n\\ndef pgVertexPack(pgNode) :\\n\\tpygeoNODE = pgNode\\n\\tvertexKeys = \\[]\\n\\tvertexValues = \\[]\\n\\n\\tfor i in pygeoNODE\\['geo'].getGeometry()\\[0].primitives() :\\n\\t\\tfor h in range (0, len(i)) :\\n\\t\\t\\tif vertexKeys.count(i\\[h]) == 0 :\\n\\t\\t\\t\\tvertexKeys.append(i\\[h])\\n\\n\\tfor i in range\\t(0, int(len(pygeoNODE\\['geo'].getGeometry()\\[0].points())/3)) :\\n\\t\\tvertexValues.append(pygeoNODE\\['geo'].getGeometry()\\[0].points()\\[3*i:3*(i+1)])\\n\\n\\treturn dict(zip(vertexKeys, vertexValues))\\n\\n#######################################################\\n\\ndef getData(metaNODE) :\\n\\timport re\\n\\ttempKeep = re.split('\\{set|\\}| |\\\\n',metaNODE\\['metadata'].toScript())\\n\\ttempKeep2 = \\[]\\n\\tfor i in range (0, len(tempKeep), 1) :\\n\\t\\tif len(tempKeep\\[i]) != 0 :\\n\\t\\t\\ttempKeep2.append(tempKeep\\[i])\\n\\n\\tdataset = \\{\\}\\n\\tfor i in range (0, int(len(tempKeep2)/2)) :\\n\\t\\tdataset\\[tempKeep2\\[2*i]] = tempKeep2\\[(2*i)+1]\\n\\treturn dataset\\n\\n#######################################################\\n\\ndef getCTRLPTS(cdd) :\\n\\timport re\\n\\ttempData01 = re.split('\\{|\\}|\\\\\\\\n| ', cdd)\\[6:]\\n\\ttempData02 = \\[]\\n\\tfor i in tempData01 :\\n\\t\\t\\tif len(i) != 0 :\\n\\t\\t\\t\\t\\ttempData02.append(float(i))\\n\\tdel tempData01\\n\\n\\ttempData01 = \\[]\\n\\tfor i in range (0, len(tempData02)) :\\n\\t\\tif i%24 > 0 and i%24 < 4 :\\n\\t\\t\\ttempData01.append(tempData02\\[i])\\n\\n\\tdel tempData02\\n\\n\\tcpt = \\[]\\n\\tfor i in range (0, int(len(tempData01)/3) ) :\\n\\t\\tcpt.append(tempData01\\[i*3:(i*3)+3])\\n\\n\\treturn cpt\\n\\n#######################################################\\n\\ndef axLock(tgtNODE, mode) :\\n\\t#thisNODE = nuke.thisNode()\\n\\tthisNAME = tgtNODE.fullName()\\n\\tgrpPath = '.'.join(thisNAME.split('.')\\[:-1])\\n\\tif mode :\\n\\t\\tpos = tgtNODE\\['origin'].getValue()\\n\\tgrpNODE = nuke.toNode(grpPath)\\n\\tgrpNODE.begin()\\n\\tfor node in nuke.allNodes() :\\n\\t\\tif node.fullName() != thisNAME :\\n\\t\\t\\tnode\\['selected'].setValue(0)\\n\\t\\t\\tif mode :\\n\\t\\t\\t\\ttgtNODE\\['translate'].setValue(pos)\\n\\tgrpNODE.end()\\n\\n#######################################################\\n\\ndef createSRCset(vdata, mtx, getColorNode) :\\n\\tsrcGRP = nuke.nodes.Group(name='s')\\n\\tgetColor = getColorNode\\['src_gl_color'].getValue()\\n\\n\\tdeform = nuke.toNode('EditGeo_deform')\\n\\toScene = nuke.toNode('oScene')\\n\\n\\tsrcGRP.begin()\\n\\tsrcSC = nuke.nodes.Scene()\\n\\tsrcOUT = nuke.nodes.Output()\\n\\tsrcOUT.setInput(0, srcSC)\\n\\n\\tfor key in vdata :\\n\\t\\tsrcAX = nuke.nodes.Axis(name='y' + str(key))\\n\\t\\tsrcAX.addKnob(nuke.XYZ_Knob('origin'))\\n\\t\\tsrcAX\\['translate'].setValue((vdata\\[key]\\[0]*mtx\\[0]+vdata\\[key]\\[1]*mtx\\[1]+vdata\\[key]\\[2]*mtx\\[2])+mtx\\[3], 0)\\n\\t\\tsrcAX\\['translate'].setValue((vdata\\[key]\\[0]*mtx\\[4]+vdata\\[key]\\[1]*mtx\\[5]+vdata\\[key]\\[2]*mtx\\[6])+mtx\\[7], 1)\\n\\t\\tsrcAX\\['translate'].setValue((vdata\\[key]\\[0]*mtx\\[8]+vdata\\[key]\\[1]*mtx\\[9]+vdata\\[key]\\[2]*mtx\\[10])+mtx\\[11], 2)\\n\\t\\tsrcAX\\['origin'].setValue((vdata\\[key]\\[0]*mtx\\[0]+vdata\\[key]\\[1]*mtx\\[1]+vdata\\[key]\\[2]*mtx\\[2])+mtx\\[3], 0)\\n\\t\\tsrcAX\\['origin'].setValue((vdata\\[key]\\[0]*mtx\\[4]+vdata\\[key]\\[1]*mtx\\[5]+vdata\\[key]\\[2]*mtx\\[6])+mtx\\[7], 1)\\n\\t\\tsrcAX\\['origin'].setValue((vdata\\[key]\\[0]*mtx\\[8]+vdata\\[key]\\[1]*mtx\\[9]+vdata\\[key]\\[2]*mtx\\[10])+mtx\\[11], 2)\\n\\t\\tsrcAX\\['scaling'].setExpression('parent.parent.src_scale')\\n\\t\\tsrcAX\\['gl_color'].fromScript('0x%02x%02x%02x%02x' % ( int(getColor\\[0]*255) , int(getColor\\[1]*255) , int(getColor\\[2]*255) , int(255) ) )\\n\\t\\tsrcAX\\['knobChanged'].setValue('axLock(nuke.thisNode(), 0)')\\n\\t\\tsrcSC.setInput(key, srcAX)\\n\\tsrcGRP.end()\\n\\n\\tdel mtx\\n\\n\\toScene.setInput(2, srcGRP)\\n\\n\\tdkeys = \\[]\\n\\tdvalues = \\[] \\n\\n\\tfor key in vdata :\\n\\t\\tdkeys.append(str(key))\\n\\t\\tfor i in range (0, 3) :\\n\\t\\t\\tdvalues.append(str(0.0))\\n\\n\\tdeform\\['keys'].fromScript('\\{' + ' '.join(dkeys) + '\\}')\\n\\tdeform\\['values'].fromScript('\\{' + ' '.join(dvalues) + '\\}')\\n\\n#######################################################\\n\\ndef sssAngle(vec1, vec2, vec3) :\\n\\timport math\\n\\t### get 3 sides length ###\\n\\tlA = math.sqrt( math.pow(vec3\\[0] - vec1\\[0], 2) + math.pow(vec3\\[1] - vec1\\[1], 2) + math.pow(vec3\\[2] - vec1\\[2], 2) )\\n\\tlB = math.sqrt( math.pow(vec2\\[0] - vec1\\[0], 2) + math.pow(vec2\\[1] - vec1\\[1], 2) + math.pow(vec2\\[2] - vec1\\[2], 2) )\\n\\tlC = math.sqrt( math.pow(vec2\\[0] - vec3\\[0], 2) + math.pow(vec2\\[1] - vec3\\[1], 2) + math.pow(vec2\\[2] - vec3\\[2], 2) )\\n\\n\\ttry :\\n\\t\\toutput = math.degrees( math.acos( ( math.pow(lA,2) + math.pow(lB,2) - math.pow(lC,2) ) / (2 * lA * lB) ) )\\n\\texcept ValueError :\\n\\t\\toutput = 0\\n\\n\\treturn output\\n\\n#######################################################\\n\\ndef modPRot(tri) :\\n\\timport math\\n\\ta = tri\\[1] - tri\\[0] \\n\\tb = tri\\[2] - tri\\[0] \\n\\t\\n\\tu = nuke.math.Vector3(a) \\n\\tu.normalize() \\n\\tw = a.cross(b) \\n\\tw.normalize() \\n\\tv = w.cross(u)\\n\\n\\tbias = 0.01\\n\\n\\tm = ( (u\\[0], v\\[0], w\\[0]), (u\\[1], v\\[1], w\\[1]), (u\\[2], v\\[2], w\\[2]) ) \\n\\tif abs(m\\[1]\\[2]) > 1-bias and abs(m\\[1]\\[2]) < 1+bias :\\n\\t\\try = 0.0 \\n\\t\\trx = (math.pi / 2.0) * -m\\[1]\\[2] \\n\\t\\trz = math.atan2(-m\\[0]\\[1], m\\[0]\\[0])\\t\\t\\t\\n\\telse: \\n\\t\\tcosx = math.sqrt(m\\[0]\\[2] ** 2 + m\\[2]\\[2] ** 2) \\n\\t\\tif cosx == 0: \\n\\t\\t\\tcosx = 1.0 \\n\\t\\trx = math.atan2(-m\\[1]\\[2], cosx) \\n\\t\\trz = math.atan2(m\\[1]\\[0] / cosx, m\\[1]\\[1] / cosx) \\n\\t\\try = math.atan2(m\\[0]\\[2] / cosx, m\\[2]\\[2] / cosx)\\n\\n\\treturn nuke.math.Vector3(rx, ry, rz) \\n\\n#######################################################\\n\\ndef tvar(vec1, vec2, vec3, calangle, tangle, tscale) :\\n\\timport math\\n\\ttangentLength = vec1.distanceBetween(vec2)/3 * tscale\\n\\trot = \\[ math.degrees(modPRot((vec1, vec2, vec3))\\[0]), math.degrees(modPRot((vec1, vec2, vec3))\\[1]), math.degrees(modPRot((vec1, vec2, vec3))\\[2]) + (calangle*-tangle) ]\\n\\n\\treturn \\[ tangentLength * ( math.cos(math.radians(rot\\[1])) * math.cos(math.radians(rot\\[2])) + math.sin(math.radians(rot\\[1])) * math.sin(math.radians(rot\\[0])) * math.sin(math.radians(rot\\[2])) ), tangentLength * ( math.cos(math.radians(rot\\[0])) * math.sin(math.radians(rot\\[2])) ), tangentLength * ( -math.sin(math.radians(rot\\[1])) * math.cos(math.radians(rot\\[2])) + math.cos(math.radians(rot\\[1])) * math.sin(math.radians(rot\\[0])) * math.sin(math.radians(rot\\[2])) ) ]\\n\\n#######################################################\\n\\ndef cardCenter(getNode, srcNode) :\\n\\ttry :\\n\\t\\tdatasetNODE = nuke.toNode('dataset')\\n\\n\\t\\twSub = int(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[2])\\n\\t\\thSub = int(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[1])\\n\\t\\ttotalcpts = wSub*hSub\\n\\n\\t\\tif wSub <= 2 or hSub <= 2 :\\n\\t\\t\\tnuke.message('Please set deform points at least 3x3.')\\n\\t\\telse :\\n\\t\\t\\tsrcNode\\['useMatrix'].setValue(0)\\n\\t\\t\\tsrcMTX = srcNode\\['matrix'].getValue()\\n\\t\\t\\tsrcNode\\['useMatrix'].setValue(1)\\n\\t\\t\\tsrcNode\\['matrix'].setValue(\\[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])\\n\\t\\t\\t\\n\\t\\t\\timport re\\n\\t\\t\\traw_cdd = re.split( '\\{|\\}', datasetNODE\\['raw_cdd'].toScript() )\\n\\n\\t\\t\\tFRsetting = getNode\\['frame_range'].getValue()\\n\\n\\t\\t\\tif FRsetting == 1 :\\n\\t\\t\\t\\tframeST = int(getNode\\['firstFR'].getValue())\\n\\t\\t\\t\\tframeED = int(getNode\\['lastFR'].getValue())\\n\\t\\t\\telse :\\n\\t\\t\\t\\tframeST = nuke.root().firstFrame()\\n\\t\\t\\t\\tframeED = nuke.root().lastFrame()\\n\\n\\t\\t\\twAnim = getNode\\['deform_anim'].getValue()\\n\\n\\t\\t\\tmd = getData(getNode)\\n\\t\\t\\tmetaNum = \\[]\\n\\t\\t\\tfor key in md :\\n\\t\\t\\t\\tmetaNum.append( int(key\\[3:]) )\\n\\n\\t\\t\\t##########################################\\n\\n\\t\\t\\tcptsData = \\{\\n\\t\\t\\t\\t'newPosX': \\[], \\n\\t\\t\\t\\t'newPosY': \\[], \\n\\t\\t\\t\\t'newPosZ': \\[], \\n\\t\\t\\t\\t't1X': \\[], \\n\\t\\t\\t\\t't1Y': \\[], \\n\\t\\t\\t\\t't1Z': \\[], \\n\\t\\t\\t\\t't2X': \\[], \\n\\t\\t\\t\\t't2Y': \\[], \\n\\t\\t\\t\\t't2Z': \\[], \\n\\t\\t\\t\\t't3X': \\[], \\n\\t\\t\\t\\t't3Y': \\[], \\n\\t\\t\\t\\t't3Z': \\[], \\n\\t\\t\\t\\t't4X': \\[], \\n\\t\\t\\t\\t't4Y': \\[], \\n\\t\\t\\t\\t't4Z': \\[], \\n\\t\\t\\t\\t'uvX': \\[], \\n\\t\\t\\t\\t'uvY': \\[], \\n\\t\\t\\t\\t'uvZ': \\[],\\n\\t\\t\\t\\t\\}\\n\\n\\t\\t\\tif wAnim == 0 :\\n\\t\\t\\t\\tfor i in range(totalcpts) :\\n\\t\\t\\t\\t\\tif metaNum.count(i) == 1 :\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosX'].append(str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValue()\\[0]))\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosY'].append(str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValue()\\[1]))\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosZ'].append(str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValue()\\[2]))\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosX'].append(str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[0] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[1] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[2])+srcMTX\\[3]))\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosY'].append(str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[4] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[5] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[6])+srcMTX\\[7]))\\n\\t\\t\\t\\t\\t\\tcptsData\\['newPosZ'].append(str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[8] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[9] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[10])+srcMTX\\[11]))\\n\\t\\t\\n\\t\\t\\t\\tfor i in range(totalcpts) :\\n\\t\\t\\t\\t\\tvec1 = nuke.math.Vector3()\\n\\t\\t\\t\\t\\tvec2 = nuke.math.Vector3()\\n\\t\\t\\t\\t\\tvec3 = nuke.math.Vector3()\\n\\n\\t\\t\\t\\t### t1 ###\\n\\n\\t\\t\\t\\t\\tvec1.set( float(cptsData\\['newPosX']\\[i]), float(cptsData\\['newPosY']\\[i]), float(cptsData\\['newPosZ']\\[i]) )\\n\\n\\t\\t\\t\\t\\tif i%wSub != wSub-1 :\\n\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+1]), float(cptsData\\['newPosY']\\[i+1]), float(cptsData\\['newPosZ']\\[i+1]) )\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif i%wSub == 0 :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+2]), float(cptsData\\['newPosY']\\[i+2]), float(cptsData\\['newPosZ']\\[i+2]) )\\n\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValue() == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValue()\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i-1]), float(cptsData\\['newPosY']\\[i-1]), float(cptsData\\['newPosZ']\\[i-1]) )\\n\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1X'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValue(), getNode\\['t1scale'].getValue())\\[0] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1Y'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValue(), getNode\\['t1scale'].getValue())\\[1] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1Z'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValue(), getNode\\['t1scale'].getValue())\\[2] ) )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1X'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1Y'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t1Z'].append('0')\\n\\n\\t\\t\\t\\t### t2 ###\\n\\n\\t\\t\\t\\t\\tif i%wSub != 0 :\\n\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i-1]), float(cptsData\\['newPosY']\\[i-1]), float(cptsData\\['newPosZ']\\[i-1]) )\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif i%wSub == wSub-1 :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i-2]), float(cptsData\\['newPosY']\\[i-2]), float(cptsData\\['newPosZ']\\[i-2]) )\\n\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValue() == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValue()\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+1]), float(cptsData\\['newPosY']\\[i+1]), float(cptsData\\['newPosZ']\\[i+1]) )\\n\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2X'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValue(), getNode\\['t2scale'].getValue())\\[0] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2Y'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValue(), getNode\\['t2scale'].getValue())\\[1] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2Z'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValue(), getNode\\['t2scale'].getValue())\\[2] ) )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2X'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2Y'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t2Z'].append('0')\\n\\n\\t\\t\\t\\t### t3 ###\\n\\n\\t\\t\\t\\t\\tif i < totalcpts-wSub :\\n\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+wSub]), float(cptsData\\['newPosY']\\[i+wSub]), float(cptsData\\['newPosZ']\\[i+wSub]) )\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif i < wSub :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+wSub*2]), float(cptsData\\['newPosY']\\[i+wSub*2]), float(cptsData\\['newPosZ']\\[i+wSub*2]) )\\n\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValue() == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValue()\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i-wSub]), float(cptsData\\['newPosY']\\[i-wSub]), float(cptsData\\['newPosZ']\\[i-wSub]) )\\n\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3X'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValue(), getNode\\['t3scale'].getValue())\\[0] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3Y'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValue(), getNode\\['t3scale'].getValue())\\[1] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3Z'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValue(), getNode\\['t3scale'].getValue())\\[2] ) )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3X'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3Y'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t3Z'].append('0')\\n\\n\\t\\t\\t\\t### t4 ###\\n\\n\\t\\t\\t\\t\\tif i >= wSub :\\n\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i-wSub]), float(cptsData\\['newPosY']\\[i-wSub]), float(cptsData\\['newPosZ']\\[i-wSub]) )\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif i >= totalcpts-wSub :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i-wSub*2]), float(cptsData\\['newPosY']\\[i-wSub*2]), float(cptsData\\['newPosZ']\\[i-wSub*2]) )\\n\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValue() == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValue()\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+wSub]), float(cptsData\\['newPosY']\\[i+wSub]), float(cptsData\\['newPosZ']\\[i+wSub]) )\\n\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4X'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValue(), getNode\\['t4scale'].getValue())\\[0] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4Y'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValue(), getNode\\['t4scale'].getValue())\\[1] ) )\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4Z'].append( str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValue(), getNode\\['t4scale'].getValue())\\[2] ) )\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4X'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4Y'].append('0')\\n\\t\\t\\t\\t\\t\\tcptsData\\['t4Z'].append('0')\\n\\n\\t\\t\\t\\t### UV ###\\t\\n\\n\\t\\t\\t\\tfor i in range (0, int(len(raw_cdd)/12) ) :\\n\\t\\t\\t\\t\\tcptsData\\['uvX'].append(str(raw_cdd\\[(i*12)+11].split(' ')\\[0]) )\\n\\t\\t\\t\\t\\tcptsData\\['uvY'].append(str(raw_cdd\\[(i*12)+11].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\tcptsData\\['uvZ'].append(str(raw_cdd\\[(i*12)+11].split(' ')\\[2]) )\\n\\n\\t\\t\\t\\t##########################################\\n\\t\\t\\n\\t\\t\\t\\tposData = \\['1 \\{' + cptsData\\['newPosX']\\[i] + ' ' + cptsData\\['newPosY']\\[i] + ' ' + cptsData\\['newPosZ']\\[i] + '\\} 1 \\{' + cptsData\\['t1X']\\[i] + ' ' + cptsData\\['t1Y']\\[i] + ' ' + cptsData\\['t1Z']\\[i] + '\\} 1 \\{' + cptsData\\['t2X']\\[i] + ' ' + cptsData\\['t2Y']\\[i] + ' ' + cptsData\\['t2Z']\\[i] + '\\} 1 \\{' + cptsData\\['t3X']\\[i] + ' ' + cptsData\\['t3Y']\\[i] + ' ' + cptsData\\['t3Z']\\[i] + '\\} 1 \\{' + cptsData\\['t4X']\\[i] + ' ' + cptsData\\['t4Y']\\[i] + ' ' + cptsData\\['t4Z']\\[i] + '\\} 0 \\{' + cptsData\\['uvX']\\[i] + ' ' + cptsData\\['uvY']\\[i] + ' ' + cptsData\\['uvZ']\\[i] + '\\}' for i in range(totalcpts)]\\n\\t\\t\\t\\tposData.insert(0, str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[0]) + ' ' + str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[1]) + ' ' + str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[2]) + ' ' +str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[3]) + '\\\\n')\\n\\n\\t\\t\\t\\tsrcNode\\['control_points'].fromScript( '\\\\n'.join(posData) )\\n\\t\\t\\t\\tsrcNode\\['label'].setValue('Deform by Origami')\\n\\t\\t\\t\\tsrcNode\\['tile_color'].fromScript(getNode\\['tile_color'].toScript())\\n\\n\\t\\t\\t\\tdel cptsData, vec1, vec2, vec3, angle, posData\\n\\n\\t\\t\\telse :\\n\\n\\t\\t\\t\\tprogBar = nuke.ProgressTask('Calculating')\\n\\t\\t\\t\\tjobCount = 0\\n\\t\\t\\t\\tjobTotal = (frameED-frameST) + 1\\n\\n\\t\\t\\t\\tfor time in range (int(frameST), int(frameED+1), 1) :\\n\\n\\t\\t\\t\\t\\t### progress bar\\n\\t\\t\\t\\t\\tjobCount += 1\\n\\t\\t\\t\\t\\tprogShow = int(jobCount/jobTotal * 100)\\n\\t\\t\\t\\t\\tif progBar.isCancelled() :\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tprogBar.setProgress(progShow)\\n\\t\\t\\t\\t\\t#################\\n\\n\\t\\t\\t\\t\\ttRange = (totalcpts*(time-frameST))\\n\\n\\t\\t\\t\\t\\tfor i in range(totalcpts) :\\n\\t\\t\\t\\t\\t\\tif metaNum.count(i) == 1 : \\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosX'].append('x' + str(time) + ' ' + str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValueAt(time)\\[0]))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosY'].append('x' + str(time) + ' ' + str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValueAt(time)\\[1]))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosZ'].append('x' + str(time) + ' ' + str(nuke.toNode(md\\['s.y'+str(i)])\\['translate'].getValueAt(time)\\[2]))\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosX'].append('x' + str(time) + ' ' + str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[0] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[1] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[2])+srcMTX\\[3]))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosY'].append('x' + str(time) + ' ' + str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[4] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[5] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[6])+srcMTX\\[7]))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['newPosZ'].append('x' + str(time) + ' ' + str((float(raw_cdd\\[1::12]\\[i].split(' ')\\[0])*srcMTX\\[8] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[1])*srcMTX\\[9] + float(raw_cdd\\[1::12]\\[i].split(' ')\\[2])*srcMTX\\[10])+srcMTX\\[11]))\\n\\n\\t\\t\\t\\t\\tfor i in range(totalcpts) :\\n\\t\\t\\t\\t\\t\\tvec1 = nuke.math.Vector3()\\n\\t\\t\\t\\t\\t\\tvec2 = nuke.math.Vector3()\\n\\t\\t\\t\\t\\t\\tvec3 = nuke.math.Vector3()\\n\\n\\t\\t\\t\\t\\t### t1 ###\\n\\n\\t\\t\\t\\t\\t\\tvec1.set( float(cptsData\\['newPosX']\\[i+tRange].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange].split(' ')\\[1]) )\\n\\n\\t\\t\\t\\t\\t\\tif i%wSub != wSub-1 :\\n\\t\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+tRange+1].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+1].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+1].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tif i%wSub == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange+2].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+2].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+2].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValueAt(time) == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValueAt(time)\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange-1].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-1].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-1].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1X'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValueAt(time), getNode\\['t1scale'].getValueAt(time))\\[0] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1Y'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValueAt(time), getNode\\['t1scale'].getValueAt(time))\\[1] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1Z'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t1angle'].getValueAt(time), getNode\\['t1scale'].getValueAt(time))\\[2] ))\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1X'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1Y'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t1Z'].append('x' + str(time) + ' 0')\\n\\n\\t\\t\\t\\t\\t### t2 ###\\n\\n\\t\\t\\t\\t\\t\\tif i%wSub != 0 :\\n\\t\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+tRange-1].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-1].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-1].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tif i%wSub == wSub-1 :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange-2].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-2].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-2].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValueAt(time) == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValueAt(time)\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange+1].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+1].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+1].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2X'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValueAt(time), getNode\\['t2scale'].getValueAt(time))\\[0] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2Y'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValueAt(time), getNode\\['t2scale'].getValueAt(time))\\[1] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2Z'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t2angle'].getValueAt(time), getNode\\['t2scale'].getValueAt(time))\\[2] ))\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2X'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2Y'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t2Z'].append('x' + str(time) + ' 0')\\n\\n\\t\\t\\t\\t\\t### t3 ###\\n\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tif i < totalcpts-wSub :\\n\\t\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+tRange+wSub].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+wSub].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+wSub].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tif i < wSub :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange+wSub*2].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+wSub*2].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+wSub*2].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValueAt(time) == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValueAt(time)\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange-wSub].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-wSub].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-wSub].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3X'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValueAt(time), getNode\\['t3scale'].getValueAt(time))\\[0] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3Y'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValueAt(time), getNode\\['t3scale'].getValueAt(time))\\[1] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3Z'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t3angle'].getValueAt(time), getNode\\['t3scale'].getValueAt(time))\\[2] ))\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3X'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3Y'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t3Z'].append('x' + str(time) + ' 0')\\n\\n\\t\\t\\t\\t\\t### t4 ###\\n\\n\\t\\t\\t\\t\\t\\tif i >= wSub :\\n\\t\\t\\t\\t\\t\\t\\tvec2.set( float(cptsData\\['newPosX']\\[i+tRange-wSub].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-wSub].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-wSub].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tif i >= totalcpts-wSub :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange-wSub*2].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange-wSub*2].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange-wSub*2].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tif getNode\\['edge_tangent'].getValueAt(time) == 0 :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45\\n\\t\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle = 45 * getNode\\['edge_tangent'].getValueAt(time)\\n\\t\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\t\\tvec3.set( float(cptsData\\['newPosX']\\[i+tRange+wSub].split(' ')\\[1]), float(cptsData\\['newPosY']\\[i+tRange+wSub].split(' ')\\[1]), float(cptsData\\['newPosZ']\\[i+tRange+wSub].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\t\\tangle = sssAngle(vec2, vec3, vec1)\\n\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4X'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValueAt(time), getNode\\['t4scale'].getValueAt(time))\\[0] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4Y'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValueAt(time), getNode\\['t4scale'].getValueAt(time))\\[1] ))\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4Z'].append('x' + str(time) + ' ' + str( tvar(vec1, vec2, vec3, angle, getNode\\['t4angle'].getValueAt(time), getNode\\['t4scale'].getValueAt(time))\\[2] ))\\n\\t\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4X'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4Y'].append('x' + str(time) + ' 0')\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['t4Z'].append('x' + str(time) + ' 0')\\n\\n\\t\\t\\t\\t\\t### UV ###\\t\\n\\n\\t\\t\\t\\t\\tif time == frameST :\\n\\t\\t\\t\\t\\t\\tfor i in range (0, int(len(raw_cdd)/12) ) :\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['uvX'].append( 'x' + str(time) + ' ' + str(raw_cdd\\[(i*12)+11].split(' ')\\[0]) )\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['uvY'].append( 'x' + str(time) + ' ' + str(raw_cdd\\[(i*12)+11].split(' ')\\[1]) )\\n\\t\\t\\t\\t\\t\\t\\tcptsData\\['uvZ'].append( 'x' + str(time) + ' ' + str(raw_cdd\\[(i*12)+11].split(' ')\\[2]) )\\n\\n\\t\\t\\t\\t##########################################\\n\\n\\t\\t\\t\\tif getNode\\['anim_type_tangent'].getValue() == 0 :\\n\\t\\t\\t\\t\\tposData = \\['1 \\{\\{curve ' + ' '.join(cptsData\\['newPosX']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['newPosY']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['newPosZ']\\[i::totalcpts]) + '\\}\\} 1 \\{\\{curve ' + ' '.join(cptsData\\['t1X']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t1Y']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t1Z']\\[i::totalcpts]) + '\\}\\} 1 \\{\\{curve ' + ' '.join(cptsData\\['t2X']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t2Y']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t2Z']\\[i::totalcpts]) + '\\}\\} 1 \\{\\{curve ' + ' '.join(cptsData\\['t3X']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t3Y']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t3Z']\\[i::totalcpts]) + '\\}\\} 1 \\{\\{curve ' + ' '.join(cptsData\\['t4X']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t4Y']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['t4Z']\\[i::totalcpts]) + '\\}\\} 0 \\{\\{curve ' + cptsData\\['uvX']\\[i] + '\\} \\{curve ' + cptsData\\['uvY']\\[i] + '\\} \\{curve ' + cptsData\\['uvZ']\\[i] + '\\}\\}' for i in range(totalcpts)]\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\tselFR = totalcpts*(int(getNode\\['ref_frame'].getValue()-frameST))\\n\\t\\t\\t\\t\\tposData = \\['1 \\{\\{curve ' + ' '.join(cptsData\\['newPosX']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['newPosY']\\[i::totalcpts]) + '\\} \\{curve ' + ' '.join(cptsData\\['newPosZ']\\[i::totalcpts]) + '\\}\\} 1 \\{\\{curve ' + cptsData\\['t1X']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t1Y']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t1Z']\\[i+selFR] + '\\}\\} 1 \\{\\{curve ' + cptsData\\['t2X']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t2Y']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t2Z']\\[i+selFR] + '\\}\\} 1 \\{\\{curve ' + cptsData\\['t3X']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t3Y']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t3Z']\\[i+selFR] + '\\}\\} 1 \\{\\{curve ' + cptsData\\['t4X']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t4Y']\\[i+selFR] + '\\} \\{curve ' + cptsData\\['t4Z']\\[i+selFR] + '\\}\\} 0 \\{\\{curve ' + cptsData\\['uvX']\\[i] + '\\} \\{curve ' + cptsData\\['uvY']\\[i] + '\\} \\{curve ' + cptsData\\['uvZ']\\[i] + '\\}\\}' for i in range(totalcpts)]\\n\\t\\t\\t\\t\\tdel selFR\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tposData.insert(0, str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[0]) + ' ' + str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[1]) + ' ' + str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[2]) + ' ' +str(datasetNODE\\['raw_cdd'].getValue().split(' ')\\[3]) + '\\\\n')\\n\\n\\t\\t\\t\\tsrcNode\\['control_points'].fromScript( '\\\\n'.join(posData) )\\n\\t\\t\\t\\tsrcNode\\['label'].setValue('Deform by Origami')\\n\\t\\t\\t\\tsrcNode\\['tile_color'].fromScript(getNode\\['tile_color'].toScript())\\n\\n\\t\\t\\t\\tdel progBar\\n\\t\\t\\t\\tdel cptsData, vec1, vec2, vec3, angle, #posData\\n\\texcept IndexError :\\n\\t\\tnuke.message('Cannot process. The <font color=orange>reference frame</font> of static tangent animation is not within the frame range.\\\\n\\\\nSuggestion:\\\\n- fix the reference frame within frame range.\\\\n- change anim type of tangent to dynamic.')\\n\\n#######################################################\\n\\ndef subdUpdate(getNode, srcNode) :\\n\\ttry :\\n\\t\\tsrcNode\\['rows'].setValue(getNode\\['rows'].getValue())\\n\\t\\tsrcNode\\['columns'].setValue(getNode\\['columns'].getValue())\\n\\texcept TypeError :\\n\\t\\tnuke.message('Missing source input.')\\n\\n#######################################################\\n\\ndef cardTest(id, mainPts, roX, roY, roZ) :\\n\\troot = nuke.root()\\n\\n\\troot.begin()\\n\\tca = nuke.nodes.Card(name='x' + str(id))\\n\\tca\\['translate'].setValue(mainPts)\\n\\tca\\['rotate'].setValue( roX, 0)\\n\\tca\\['rotate'].setValue( roY, 1)\\n\\tca\\['rotate'].setValue( roZ, 2)\\n\\tca\\['uniform_scale'].setValue(2)\\n\\troot.end()\" +STARTLINE}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_renameChannels.gizmo",
    "content": "Group {\n name renameChannels\n tile_color 0x9e3c6300\n addUserKnob {20 Rename}\n addUserKnob {26 message01 l \"\" +STARTLINE T \"<i><font color=\\\"Aqua\\\">1. Select old Layer and enter a new one\"}\n addUserKnob {41 oldLayer l \"old Layer\" T Copy1.channels}\n addUserKnob {1 newLayer l \"new Layer\"}\n addUserKnob {22 clear -STARTLINE T \"nuke.thisNode()\\['newLayer'].setValue('')\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 message02 l \"\" +STARTLINE T \"<i><font color=\\\"DeepSkyBlue\\\">2. Select channels and populate list\"}\n addUserKnob {22 rgba l \"<i><font color=\\\"yellow\\\">rgba\" T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['red', 'green', 'blue', 'alpha'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewRed = str(newLayer) + \\\".red\\\"\\nnewGreen = str(newLayer) + \\\".green\\\"\\nnewBlue = str(newLayer) + \\\".blue\\\"\\nnewAlpha = str(newLayer) + \\\".alpha\\\"\\n\\noldRed = str(oldLayer) + \\\".red\\\"\\noldGreen = str(oldLayer) + \\\".green\\\"\\noldBlue = str(oldLayer) + \\\".blue\\\"\\noldAlpha = str(oldLayer) + \\\".alpha\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldRed)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(oldGreen)\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(oldBlue)\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(oldAlpha)\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newRed)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(newGreen)\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(newBlue)\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(newAlpha)\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\" +STARTLINE}\n addUserKnob {22 rgb l \"<i><font color=\\\"gold\\\">rgb\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['red', 'green', 'blue'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewRed = str(newLayer) + \\\".red\\\"\\nnewGreen = str(newLayer) + \\\".green\\\"\\nnewBlue = str(newLayer) + \\\".blue\\\"\\n\\noldRed = str(oldLayer) + \\\".red\\\"\\noldGreen = str(oldLayer) + \\\".green\\\"\\noldBlue = str(oldLayer) + \\\".blue\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldRed)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(oldGreen)\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(oldBlue)\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newRed)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(newGreen)\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(newBlue)\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 a l \"<i><font color=\\\"orange\\\">a\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['alpha'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewAlpha =  str(newLayer) + \\\".a\\\"\\n\\noldAlpha = str(oldLayer) + \\\".a\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(oldAlpha)\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(newAlpha)\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 uv l \"<i><font color=\\\"coral\\\">u v\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['u', 'v'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewRed = str(newLayer) + \\\".u\\\"\\nnewGreen = str(newLayer) + \\\".v\\\"\\n\\noldRed = str(oldLayer) + \\\".u\\\"\\noldGreen = str(oldLayer) + \\\".v\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldRed)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(oldGreen)\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newRed)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(newGreen)\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 N l \"<i><font color=\\\"orangered\\\">nx ny nz\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['NX', 'NY', 'NZ'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewRed = str(newLayer) + \\\".NX\\\"\\nnewGreen = str(newLayer) + \\\".NY\\\"\\nnewBlue = str(newLayer) + \\\".NZ\\\"\\n\\noldRed = str(oldLayer) + \\\".NX\\\"\\noldGreen = str(oldLayer) + \\\".NY\\\"\\noldBlue = str(oldLayer) + \\\".NZ\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldRed)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(oldGreen)\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(oldBlue)\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newRed)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(newGreen)\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(newBlue)\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 front l \"<i><font color=\\\"red\\\">front back\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['red', 'green', 'blue', 'alpha'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewRed = str(newLayer) + \\\".front\\\"\\nnewGreen = str(newLayer) + \\\".back\\\"\\n\\noldRed = str(oldLayer) + \\\".front\\\"\\noldGreen = str(oldLayer) + \\\".back\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldRed)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(oldGreen)\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newRed)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(newGreen)\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 z l \"<i><font color=\\\"maroon\\\">Z\" -STARTLINE T \"newLayer = nuke.thisNode()\\[\\\"newLayer\\\"].value()\\n#nuke.Layer(newLayer,  \\['red', 'green', 'blue', 'alpha'] )\\n\\noldLayer = nuke.thisNode()\\[\\\"oldLayer\\\"].value()\\n\\nnewZ = str(newLayer) + \\\".Z\\\"\\n\\noldZ = str(oldLayer) + \\\".Z\\\"\\n\\nif (newLayer != \\\"\\\"):\\n    nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(oldZ)\\n    nuke.thisNode()\\[\\\"from_channel02\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")\\n    \\n    nuke.thisNode()\\[\\\"to_channel01\\\"].setValue(newZ)\\n    nuke.thisNode()\\[\\\"to_channel02\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel03\\\"].setValue(\\\"\\\")\\n    nuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\\nelse:\\n    nuke.message(\\\"Insert the name of new Layer\\\")\"}\n addUserKnob {22 clearAll l \"Clear All\" T \"nuke.thisNode()\\[\\\"from_channel01\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"from_channel02\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"from_channel03\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"from_channel04\\\"].setValue(\\\"\\\")    \\nnuke.thisNode()\\[\\\"to_channel01\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"to_channel02\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"to_channel03\\\"].setValue(\\\"\\\")\\nnuke.thisNode()\\[\\\"to_channel04\\\"].setValue(\\\"\\\")\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 message03 l \"\" +STARTLINE T \"<i><font color=\\\"RoyalBlue\\\">3. Create Copy and Remove nodes\"}\n addUserKnob {1 from_channel01 l \"Channel 1\"}\n addUserKnob {1 to_channel01 l --> -STARTLINE}\n addUserKnob {1 from_channel02 l \"Channel 2\"}\n addUserKnob {1 to_channel02 l --> -STARTLINE}\n addUserKnob {1 from_channel03 l \"Channel 3\"}\n addUserKnob {1 to_channel03 l --> -STARTLINE}\n addUserKnob {1 from_channel04 l \"Channel 4\"}\n addUserKnob {1 to_channel04 l --> -STARTLINE}\n addUserKnob {22 createNodes l \"<i><font color=\\\"indianred\\\">Create Copy and Remove Nodes\" T \"def generate():\\n    toList = \\['to0', 'to1', 'to2', 'to3'] ## List of Copy Node to variables\\n    fromList = \\[ 'from0', 'from1', 'from2', 'from3'] ## List of Copy Node knobs\\n      \\n    fromKnob = \\['from_channel01', 'from_channel02', 'from_channel03', 'from_channel04']\\n    toKnob = \\['to_channel01', 'to_channel02', 'to_channel03', 'to_channel04']\\n    \\n\\n\\t## Grab group node name\\t\\n    group = nuke.thisNode()\\n    group.end()\\n    \\n    #read position\\n    x_pos = group\\['xpos'].value()\\n    y_pos = group\\['ypos'].value()\\n\\t\\n\\t## Deselect all nodes\\n    nuke.selectAll()\\n    nuke.invertSelection()\\n    \\n    listChannels = \\[]\\n    newLayer = group\\['newLayer'].value()\\n    oldLayer = group\\['oldLayer'].value()\\n\\n    #layers = list( set(\\[c.split('.')\\[0] for c in channels]) )\\n    for name_knob in toKnob:\\n        value_knob = group\\[name_knob].value()\\n        value_knob = value_knob.replace( ' ', '_')\\n        #value_knob = value_knob.lower()\\n        if value_knob != \\\"\\\":\\n            value_knob = value_knob.split('.')\\[1]\\n            listChannels.append(newLayer + '.' + value_knob)\\n            \\n    if newLayer != \\\"\\\":\\n        nuke.Layer( newLayer, listChannels)\\n        \\n        \\n        ##Create Dots\\n        dot01 = nuke.createNode('Dot')\\n        dot01.setYpos( int(y_pos) + 80 )\\n        \\n        \\n        \\n\\t    ## Create Copy Node\\n        copyNode = nuke.createNode('Copy')\\n        #copyNode.setYpos( int(y_pos) + 160 )\\n        \\n        copyNode.connectInput(0, dot01)\\n    \\n        for i in range(4):\\n            copyNode\\[fromList\\[i]].setValue(group\\[fromKnob\\[i]].value())\\n        \\n        for i in range(4):\\n            copyNode\\[toList\\[i]].setValue(group\\[toKnob\\[i]].value())\\n        \\n        #Create Remove Node\\n        removeNode = nuke.createNode('Remove')\\n        removeNode\\['channels'].setValue(oldLayer)\\n        \\n        \\n\\n\\ngenerate()\" +STARTLINE}\n addUserKnob {20 help_1 l ?}\n addUserKnob {26 message02_1 l \"\" +STARTLINE T \"<b><font color=\\\"RED\\\">HELP:\"}\n addUserKnob {26 message l \"\" +STARTLINE T \"1. Connect renameChannels node to your script.\\n2. Select the oldLayer and insert the name of the newLayer. Basically you want to rename the old name with the new one. \\n3. Select the Channels you want to create. They depend from the oldLayer \\n4. Click on button \\\"Create Copy and Remove Nodes\\\" \\n5. Connect the nodes created to your script.\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {22 info l Info T \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial.html')\" +STARTLINE}\n addUserKnob {26 gizmo l \"\" +STARTLINE T \"Gizmo created by Andrea Geremia\\n\\nwww.andreageremia.it\\nandrea.geremia89@gmail.com\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 170\n  ypos -176\n }\n Shuffle {\n  in forward\n  name Shuffle1\n  xpos 170\n  ypos -136\n  disable true\n }\n Dot {\n  name Dot1\n  xpos 204\n  ypos -112\n }\nset N22951c40 [stack 0]\npush $N22951c40\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  channels rgba\n  name Copy1\n  xpos 170\n  ypos -77\n }\n Output {\n  name Output1\n  xpos 170\n  ypos -36\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_streamCart.gizmo",
    "content": "Group {\n name streamCart\n tile_color 0xd1ffff\n addUserKnob {20 tab_general l General}\n addUserKnob {22 get_items l \"get channels / geo\" t \"Run get items first, it will check the input type  (e.g. Deep, 2D, or Geo) and what items/channels available from upstream.\" T \"import re\\n\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\n### cleanup ###\\n\\ncleanKnobs(thisGRP)\\n\\n### init ###\\n\\ncount = 0\\nchans_ls = \\[]\\nchans_dict = \\{\\}\\ninType = \\['Deep','2D','Geo','Unsupport','No Input']\\n\\n### input check ###\\n\\nif thisGRP.inputs() :\\n  inDetect = nuke.toNode('inDetect')\\n  tempD = nuke.nodes.DeepSample( inputs=\\[inDetect] )\\n  if tempD.inputs() > 0 :\\n    temp2D = nuke.nodes.Blur( inputs=\\[inDetect] )\\n    if temp2D.inputs() > 0 :\\n      p = nuke.Panel('select input type :')\\n      p.addEnumerationPulldown( '' , '2D Deep' )\\n      if p.show() :\\n        if p.value('') == 'Deep' :\\n          status = 0\\n        else :\\n          status = 1\\n    else :\\n      status = 0\\n    nuke.delete( tempD )\\n    nuke.delete( temp2D )\\n  else :\\n    nuke.delete( tempD )\\n    tempD = nuke.nodes.Blur( inputs=\\[inDetect] )\\n    if tempD.inputs() > 0 :\\n      status = 1\\n      nuke.delete( tempD )\\n    else :\\n      nuke.delete( tempD )\\n      tempD = nuke.nodes.Scene( inputs=\\[inDetect] )\\n      if tempD.inputs() > 0 :\\n        status = 2\\n        nuke.delete( tempD )\\n      else :\\n        status = 3\\n        nuke.delete( tempD )\\nelse :\\n  status = 4\\n\\n### panel setting ###\\n\\nif inType\\[status] == '2D' :\\n  thisGRP\\['shuffle_method'].setVisible(True)\\nelse :\\n  thisGRP\\['shuffle_method'].setVisible(False)\\n\\nif inType\\[status] == 'Deep' or inType\\[status] == '2D' :\\n  thisGRP\\['alpha_type'].setVisible(True)\\nelse :\\n  thisGRP\\['alpha_type'].setVisible(False)\\n\\nif inType\\[status] ==  'Geo' :\\n  thisGRP\\['import_method'].setVisible(True)\\nelse :\\n  thisGRP\\['import_method'].setVisible(False)\\n\\n### proc ###\\n\\nif inType\\[status] == 'Deep' :\\n  thisGRP\\['input_type'].setValue( '<font color=cyan>' + inType\\[status] + '</font>' )\\n  d2img = nuke.nodes.DeepToImage( inputs=\\[nuke.toNode('inDetect')] )\\n  for i in d2img.channels() :\\n    try :\\n      chans_dict\\[ i.split('.')\\[0] ].append( i.split('.')\\[1] )\\n    except :\\n      chans_dict\\[ i.split('.')\\[0] ] = \\[ i.split('.')\\[1] ]\\n      chans_ls.append( i.split('.')\\[0] )\\n  nuke.delete( d2img )\\n\\n  for key,value in enumerate( chans_ls ) :\\n    nknob = nuke.PyScript_Knob( 'cs_\\{0\\}'.format( value ) , '\\{0\\}'.format( value ) , 'thisGRP = nuke.thisGroup()\\\\ngoSTORE = nuke.toNode(\\\\'store\\\\')\\\\ngoSTORE\\[\\\\'fn\\\\'].execute()\\\\nwith getLevel() :\\\\n\\\\tgen = extract(\\\\'\\{0\\}\\\\',\\{1\\},\\{2\\},\\{3\\},\\{4\\},\\{5\\})\\\\n\\\\tgen.setInput(0, thisGRP)'.format(value, chans_dict\\[value] , 'int( thisGRP\\[\\\\'shuffle_method\\\\'].getValue() )', 'int( thisGRP\\[\\\\'alpha_type\\\\'].getValue() )', '\\[thisGRP\\[\\\\'tile_color\\\\'].getValue()]', status))\\n    thisGRP.addKnob( nknob )\\n    if count%3 == 0 :\\n      thisGRP\\['cs_' + value].setFlag(0x00001000)\\n    count += 1\\n\\nif inType\\[status] == '2D' :\\n  thisGRP\\['input_type'].setValue( '<font color=cyan>' + inType\\[status] + '</font>' )\\n  for i in thisGRP.channels() :\\n    try :\\n      chans_dict\\[ i.split('.')\\[0] ].append( i.split('.')\\[1] )\\n    except :\\n      chans_dict\\[ i.split('.')\\[0] ] = \\[ i.split('.')\\[1] ]\\n      chans_ls.append( i.split('.')\\[0] )\\n\\n  for key,value in enumerate( chans_ls ) :\\n    nknob = nuke.PyScript_Knob( 'cs_\\{0\\}'.format( value ) , '\\{0\\}'.format( value ) , 'thisGRP = nuke.thisGroup()\\\\ngoSTORE = nuke.toNode(\\\\'store\\\\')\\\\ngoSTORE\\[\\\\'fn\\\\'].execute()\\\\nwith getLevel() :\\\\n\\\\tgen = extract(\\\\'\\{0\\}\\\\',\\{1\\},\\{2\\},\\{3\\},\\{4\\},\\{5\\})\\\\n\\\\tgen.setInput(0, thisGRP)'.format(value, chans_dict\\[value] , 'int( thisGRP\\[\\\\'shuffle_method\\\\'].getValue() )', 'int( thisGRP\\[\\\\'alpha_type\\\\'].getValue() )', '\\[thisGRP\\[\\\\'tile_color\\\\'].getValue()]', status))\\n    thisGRP.addKnob( nknob )\\n    if count%3 == 0 :\\n      thisGRP\\['cs_' + value].setFlag(0x00001000)\\n    count += 1\\n\\nif inType\\[status] == 'Geo' :\\n  readg = thisGRP.dependencies()\\[0]\\n  if readg.Class() != 'ReadGeo2' :\\n    thisGRP\\['import_method'].setVisible(False)\\n    nuke.message(\\\"This function only support 'ReadGeo2' class node direct from input.\\\")\\n  else :\\n    thisGRP\\['import_method'].setVisible(True)\\n    thisGRP\\['input_type'].setValue( '<font color=cyan>' + inType\\[status] + '</font>' )\\n    allshapes = readg\\['scene_view'].getAllItems()\\n    for i in allshapes :\\n      nknob = nuke.Boolean_Knob( 'cs_\\{0\\}'.format( '_'.join( re.split('/|\\\\.', i)\\[2:] ) ) , '\\{0\\}'.format( '/'.join( i.split('/')\\[2:] ) ) )\\n      thisGRP.addKnob( nknob )\\n      thisGRP\\['cs_' + '_'.join( re.split('/|\\\\.', i)\\[2:] )].setFlag(0x00001000)\\n    nknob = nuke.Text_Knob( 'cs_spacer' , ' ' )\\n    thisGRP.addKnob( nknob )\\n    nknob = nuke.PyScript_Knob( 'cs_invert_selection' , '\\[---invert selection---]' , 'thisGRP = nuke.thisGroup()\\\\ngoSTORE = nuke.toNode(\\\\'store\\\\')\\\\ngoSTORE\\[\\\\'fn\\\\'].execute()\\\\ninvSelGeo( \\{0\\} )'.format( 'thisGRP' ) )\\n    thisGRP.addKnob( nknob )\\n    thisGRP\\['cs_invert_selection'].setFlag(0x00001000)\\n    nknob = nuke.PyScript_Knob( 'cs_checkout' , '\\[---READGEO CHECKOUT---]' , 'thisGRP = nuke.thisGroup()\\\\ngoSTORE = nuke.toNode(\\\\'store\\\\')\\\\ngoSTORE\\[\\\\'fn\\\\'].execute()\\\\nwith getLevel() :\\\\n\\\\tgeoCheckout( \\\\'\\{0\\}\\\\' , \\{1\\} , \\{2\\} , \\{3\\} )'.format( readg\\['file'].value() , int(readg\\['range_first'].getValue()) , int(readg\\['range_last'].getValue()) , 'thisGRP' ) )\\n    thisGRP.addKnob( nknob )\\n    thisGRP\\['cs_checkout'].setFlag(0x00001000)\\n\\nif inType\\[status] == 'Unsupport' :\\n  thisGRP\\['input_type'].setValue( \\\"connect your input and run 'get channels / geo' first.\\\" )\\n  nuke.message(\\\"Input type does not support. Only work with 2D, Deep and Geo from upstream.\\\")\\n\\nif inType\\[status] == 'No Input' :\\n  thisGRP\\['input_type'].setValue( \\\"connect your input and run 'get channels / geo' first.\\\" )\\n  nuke.message(\\\"connect your input and run 'get channels / geo' first.\\\")\" +STARTLINE}\n addUserKnob {22 reset -STARTLINE T \"thisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\n### cleanup ###\\n\\ncleanKnobs(thisGRP)\\nthisGRP\\['input_type'].setValue( \\\"connect your input and run 'get channels / geo' first.\\\" )\\nthisGRP\\['shuffle_method'].setVisible(False)\\nthisGRP\\['alpha_type'].setVisible(False)\\nthisGRP\\['import_method'].setVisible(False)\"}\n addUserKnob {20 shuffle_define l \"shuffle define setting\" n 1}\n shuffle_define 0\n addUserKnob {1 r_clist l red t \"name in this text field will shuffle to red channel.\\n\\nrules :\\n- Split the item with \\\" , \\\"\\n- no space\\n- not a matter of upper/lower cases\"}\n r_clist red,r,front,z,u,x\n addUserKnob {1 g_clist l green t \"name in this text field will shuffle to red channel.\\n\\nrules :\\n- Split the item with \\\" , \\\"\\n- no space\\n- not a matter of upper/lower cases\"}\n g_clist green,g,back,v,y\n addUserKnob {1 b_clist l blue t \"name in this text field will shuffle to red channel.\\n\\nrules :\\n- Split the item with \\\" , \\\"\\n- no space\\n- not a matter of upper/lower cases\"}\n b_clist blue,b\n addUserKnob {1 a_clist l alpha t \"name in this text field will shuffle to red channel.\\n\\nrules :\\n- Split the item with \\\" , \\\"\\n- no space\\n- not a matter of upper/lower cases\"}\n a_clist alpha,a\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {26 input_type l \"input type\" T \"connect your input and run 'get channels / geo' first.\"}\n addUserKnob {4 shuffle_method l \"shuffle method\" +HIDDEN M {\"shuffle node\" \"expression node\"}}\n addUserKnob {4 alpha_type l alpha +HIDDEN M {rgba.alpha self.alpha \"alpha = 0\" \"alpha = 1\" \"\" \"\" \"\" \"\"}}\n addUserKnob {4 import_method l \"import method\" +HIDDEN M {\"import & activate only selected geo\" \"import all, activate only selected geo\"}}\n addUserKnob {26 title_extract l \"extraction items\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"Dont touch\"\n  note_font_size 42\n  xpos -385\n  ypos 7\n  bdwidth 512\n  bdheight 186\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x575757ff\n  label bin\n  note_font_size 42\n  xpos -386\n  ypos 220\n  bdwidth 220\n  bdheight 167\n }\n Input {\n  inputs 0\n  name input\n  xpos 0\n  ypos -95\n }\n Dot {\n  name inDetect\n  xpos 34\n  ypos 91\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 300\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nstatus = nuke.thisGroup()\\['view_LayerContactSheet'].getValue()\\nstDot = nuke.toNode('start_dot')\\nedDot = nuke.toNode('end_dot')\\n\\nfor node in nuke.allNodes() :\\n    if node.Class() == 'LayerContactSheet' :\\n        nuke.delete( node )\\n\\nif status :\\n    LCS = nuke.nodes.LayerContactSheet( roworder=0 , colorder=0 , showLayerNames=1 , inputs=\\[stDot] )\\n    edDot.setInput( 0 , LCS )\\nelse :\\n    edDot.setInput( 0 , stDot )\\n\"\n  xpos -311\n  ypos 131\n  addUserKnob {20 User}\n  addUserKnob {6 view_LayerContactSheet l \"view LayerContactSheet\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -313\n  ypos 301\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n#########\\n\\ndef cleanKnobs(node) :\\n\\tfor knob in node.knobs() :\\n\\t\\tif knob\\[0:3] == 'cs_' :\\n\\t\\t\\tnode.removeKnob( node\\[knob] )\\n\\n#########\\n\\ndef invSelGeo( thisG ) :\\n\\tfor i in thisG.knobs() :\\n\\t\\tif thisG\\[i].Class() == 'Boolean_Knob' and i\\[:3] == 'cs_' :\\n\\t\\t\\tif thisG\\[i].getValue() == 0 :\\n\\t\\t\\t\\tthisG\\[i].setValue(1)\\n\\t\\t\\telse :\\n\\t\\t\\t\\tthisG\\[i].setValue(0)\\n\\n#########\\n\\ndef extract(chans, color, shuffle_method, alpha_mode, mainSet, code) :\\n\\twhitelist = \\{\\n\\t\\t\\t'cr' : thisGRP\\['r_clist'].value().split(',') ,\\n\\t\\t\\t'cg' : thisGRP\\['g_clist'].value().split(',') ,\\n\\t\\t\\t'cb' : thisGRP\\['b_clist'].value().split(','),\\n\\t\\t\\t'ca' : thisGRP\\['a_clist'].value().split(',')\\n\\t\\t\\}\\n\\n\\taset = ''\\n\\n\\tif code == 0 :\\n\\t\\tnewnode = nuke.nodes.DeepExpression( chans0='rgba', tile_color=mainSet\\[0] )\\n\\t\\tnewnode\\['rgba.red'].setValue( '0' )\\n\\t\\tnewnode\\['rgba.green'].setValue( '0' )\\n\\t\\tnewnode\\['rgba.blue'].setValue( '0' )\\n\\t\\tnewnode\\['rgba.alpha'].setValue( '0' )\\n\\n\\t\\tfor i in color :\\n\\t\\t\\tif i.lower() in whitelist\\['cr'] :\\n\\t\\t\\t\\tnewnode\\['rgba.red'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\tif i.lower() in whitelist\\['cg'] :\\n\\t\\t\\t\\tnewnode\\['rgba.green'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\tif i.lower() in whitelist\\['cb'] :\\n\\t\\t\\t\\tnewnode\\['rgba.blue'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\tif alpha_mode == 0 :\\n\\t\\t\\t\\tnewnode\\['rgba.alpha'].setValue( 'rgba.alpha' )\\n\\t\\t\\t\\taset = 'rgba.alpha'\\n\\t\\t\\telif alpha_mode == 1 :\\n\\t\\t\\t\\tif i.lower() in whitelist\\['ca'] :\\n\\t\\t\\t\\t\\tnewnode\\['rgba.alpha'].setValue( '\\{0\\}.\\{1\\}'.format(chans , i ) )\\n\\t\\t\\t\\t\\taset = chans + '.alpha'\\n\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\taset = chans + ' no alpha found'\\n\\t\\t\\telif alpha_mode == 2 :\\n\\t\\t\\t\\tnewnode\\['rgba.alpha'].setValue( '0' )\\n\\t\\t\\t\\taset = '0'\\n\\t\\t\\telif alpha_mode == 3 :\\n\\t\\t\\t\\tnewnode\\['rgba.alpha'].setValue( '1' )\\n\\t\\t\\t\\taset = '1'\\n\\n\\tif code == 1 :\\n\\t\\tif shuffle_method == 0 :\\n\\t\\t\\tnewnode = nuke.nodes.Shuffle( red='black', green='black', blue='black', alpha='black', tile_color=mainSet\\[0] )\\n\\t\\t\\tnewnode\\['in'].setValue( chans )\\n\\t\\t\\tfor i in color :\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cr'] :\\n\\t\\t\\t\\t\\tnewnode\\['red'].setValue( 'red' )\\n\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cg'] :\\n\\t\\t\\t\\t\\tnewnode\\['green'].setValue( 'green' )\\n\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cb'] :\\n\\t\\t\\t\\t\\tnewnode\\['blue'].setValue( 'blue' )\\n\\n\\t\\t\\t\\tif alpha_mode == 0 :\\n\\t\\t\\t\\t\\tnewnode\\['in2'].setValue( 'alpha' )\\n\\t\\t\\t\\t\\tnewnode\\['alpha'].setValue( 7 )\\n\\t\\t\\t\\t\\taset = 'rgba.alpha'\\n\\t\\t\\t\\telif alpha_mode == 1 :\\n\\t\\t\\t\\t\\tif i.lower() in whitelist\\['ca'] :\\n\\t\\t\\t\\t\\t\\tnewnode\\['alpha'].setValue( '\\{0\\}'.format( i ) )\\n\\t\\t\\t\\t\\t\\taset = chans + '.alpha'\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\taset = chans + ' no alpha found'\\n\\t\\t\\t\\telif alpha_mode == 2 :\\n\\t\\t\\t\\t\\tnewnode\\['alpha'].setValue( 'black' )\\n\\t\\t\\t\\t\\taset = '0'\\n\\t\\t\\t\\telif alpha_mode == 3 :\\n\\t\\t\\t\\t\\tnewnode\\['alpha'].setValue( 'white' )\\n\\t\\t\\t\\t\\taset = '1'\\n\\t\\telse :\\n\\t\\t\\tnewnode = nuke.nodes.Expression( channel0='red' , channel1='green' , channel2='blue' , channel3='alpha' , expr0='0' , expr1='0', expr2='0' , expr3='0' , tile_color=mainSet\\[0] )\\n\\t\\t\\tfor i in color :\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cr'] :\\n\\t\\t\\t\\t\\tnewnode\\['expr0'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cg'] :\\n\\t\\t\\t\\t\\tnewnode\\['expr1'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\t\\tif i.lower() in whitelist\\['cb'] :\\n\\t\\t\\t\\t\\tnewnode\\['expr2'].setValue( '\\{0\\}.\\{1\\}'.format( chans , i ) )\\n\\n\\t\\t\\t\\tif alpha_mode == 0 :\\n\\t\\t\\t\\t\\tnewnode\\['expr3'].setValue( 'rgba.alpha' )\\n\\t\\t\\t\\t\\taset = 'rgba.alpha'\\n\\t\\t\\t\\telif alpha_mode == 1 :\\n\\t\\t\\t\\t\\tif i.lower() in whitelist\\['ca'] :\\n\\t\\t\\t\\t\\t\\tnewnode\\['expr3'].setValue( '\\{0\\}.\\{1\\}'.format(chans , i ) )\\n\\t\\t\\t\\t\\t\\taset = chans + '.alpha'\\n\\t\\t\\t\\t\\telse :\\n\\t\\t\\t\\t\\t\\taset = chans + ' no alpha found'\\n\\t\\t\\t\\telif alpha_mode == 2 :\\n\\t\\t\\t\\t\\tnewnode\\['expr3'].setValue( '0' )\\n\\t\\t\\t\\t\\taset = '0'\\n\\t\\t\\t\\telif alpha_mode == 3 :\\n\\t\\t\\t\\t\\tnewnode\\['expr3'].setValue( '1' )\\n\\t\\t\\t\\t\\taset = '1'\\n\\n\\tnewnode\\['label'].setValue( '<b><font size=4>' + chans + '</font></b><br>alpha : ' + aset)\\n\\t\\n\\treturn newnode\\n\\n#########\\n\\ndef geoCheckout( filepath, frameST, frameED, thisG ) :\\n\\timport random\\n\\txspace = nuke.toNode('preferences')\\['GridWidth'].getValue() + random.randint(0,nuke.toNode('preferences')\\['GridWidth'].getValue()*3)\\n\\n\\titem_ls = \\[]\\n\\tfor i in thisG.knobs() :\\n\\t\\tif thisG\\[i].Class() == 'Boolean_Knob' and i\\[:3] == 'cs_' :\\n\\t\\t\\tif thisG\\[i].getValue() == 1 :\\n\\t\\t\\t\\titem_ls.append( '/root/' + thisG\\[i].label() )\\n\\n\\tnewRG = nuke.nodes.ReadGeo2( file=filepath , range_first=frameST , range_last=frameED , tile_color=int(thisG\\['tile_color'].getValue()) , xpos=int(thisG.xpos()+xspace) , ypos=int(thisG.ypos()) )\\n\\tnewRG.showControlPanel()\\n\\tif thisG\\['import_method'].getValue() == 0 :\\n\\t\\tnewRG\\['scene_view'].setImportedItems( item_ls )\\n\\telse :\\n\\t\\tnewRG\\['scene_view'].setImportedItems( newRG\\['scene_view'].getAllItems() )\\n\\tnewRG\\['scene_view'].setSelectedItems( item_ls )\\n\\tnewRG.hideControlPanel()\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name version_tag\n  tile_color 0xffb700ff\n  xpos -546\n  ypos 127\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.1}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2020-01-07}\n  addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.1<br>-&nbsp;when&nbsp;input&nbsp;support&nbsp;2D&nbsp;or&nbsp;Deep,&nbsp;it&nbsp;will&nbsp;prompt&nbsp;up&nbsp;selection&nbsp;for&nbsp;user<br>&nbsp;&nbsp;(e.g.&nbsp;input&nbsp;from&nbsp;scanlineRender)<br>-&nbsp;input&nbsp;type&nbsp;-&nbsp;Geo<br>&nbsp;&nbsp;changed&nbsp;knobs&nbsp;to&nbsp;checkbox&nbsp;instead&nbsp;of&nbsp;button<br>-&nbsp;exposed&nbsp;r,g,b,a&nbsp;define&nbsp;setting,<br>&nbsp;&nbsp;so&nbsp;user&nbsp;can&nbsp;setup&nbsp;their&nbsp;own&nbsp;rgba&nbsp;naming&nbsp;list.<br>-&nbsp;unblock&nbsp;deep&nbsp;&&nbsp;depth&nbsp;channel&nbsp;when&nbsp;input&nbsp;is&nbsp;deep,<br>&nbsp;&nbsp;so&nbsp;user&nbsp;can&nbsp;shuffle&nbsp;these&nbsp;2&nbsp;channels&nbsp;out&nbsp;if&nbsp;input&nbsp;is&nbsp;deep.<br><br>1.0<br>-&nbsp;quickly&nbsp;create&nbsp;shuffle&nbsp;nodes<br>-&nbsp;quickly&nbsp;generate&nbsp;ReadGeo&nbsp;with&nbsp;selection<br>-&nbsp;input&nbsp;support&nbsp;2D&nbsp;data,&nbsp;deep&nbsp;data&nbsp;and&nbsp;ReadGeo&nbsp;data.\\\"\\nnuke.message( log )\" +STARTLINE}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_vector3DMathExpression.gizmo",
    "content": "NoOp {\n name vector3DMathExpression\n help \"Can be used to calculate a vector between 2 points in 3D space.\\nAlso the distance between these points.\\nCan be used along reconcile3d nodes.\"\n selected true\n addUserKnob {20 User}\n addUserKnob {13 v1 l \"Vector 1\" t Point1}\n addUserKnob {13 v2 l \"Vector 2\" t Point2}\n addUserKnob {26 \"\"}\n addUserKnob {13 v4 l \"v4 = v1 - v2\"}\n v4 {{v1-v2} {v1-v2} {v1-v2}}\n addUserKnob {7 mag_v4 l Magnitude_v4 R 0 100}\n mag_v4 {{sqrt(pow(v4.x,2)+pow(v4.y,2)+pow(v4.z,2))}}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_viewer_render.gizmo",
    "content": "Group {\n name viewer_render\n inputs 0\n tile_color 0xb7a939ff\n addUserKnob {20 User}\n addUserKnob {1 viewer_node l \"viewer node\"}\n viewer_node Viewer1\n addUserKnob {2 filepath l \"file path\"}\n addUserKnob {26 remarks l \"\" -STARTLINE T \"- only support *.jpg\"}\n addUserKnob {41 set_type l \"set type\" T menu1.set_type}\n addUserKnob {3 select_frame l \"select frame\" +DISABLED}\n select_frame 1001\n addUserKnob {3 frameST l \"frame range\" +DISABLED}\n frameST 1001\n addUserKnob {3 frameED l \"\" -STARTLINE +DISABLED}\n frameED 1010\n addUserKnob {26 \"\"}\n addUserKnob {22 render T \"thisGRP = nuke.thisGroup()\\nnode = thisGRP\\['viewer_node'].getValue()\\npath = thisGRP\\['filepath'].value()\\ngetType = thisGRP\\['set_type'].getValue()\\ncheck = 0\\n\\nerror = \\['Invalid file extension, only <b>*.jpg</> support.','Invalid frame padding.','file path is empty']\\n\\nif len(path) != 0 :\\n    if getType < 2 :\\n        if getType == 0 :\\n            frameSet = int(nuke.frame())\\n        if getType == 1 :\\n            frameSet = int(thisGRP\\['select_frame'].getValue())\\n\\n        if path\\[len(path)-4:-3] == '.' :\\n            if path\\[len(path)-3:].lower() != 'jpg' :\\n                nuke.message(error\\[0])\\n            else :\\n                newPath = path\\n                check += 1\\n        else :\\n            newPath = path + '.jpg'\\n            check += 1\\n\\n        if check == 1 :\\n            nuke.toNode(node)\\['file'].setValue(newPath)\\n            nuke.render(node, frameSet, frameSet)\\n            nuke.toNode(node)\\['file'].setValue('')\\n    else :\\n        if getType == 2 :\\n            frameST = int(nuke.root().firstFrame())\\n            frameED = int(nuke.root().lastFrame())\\n        else :\\n            frameST = int(thisGRP\\['frameST'].getValue())\\n            frameED = int(thisGRP\\['frameED'].getValue())\\n\\n        if path\\[len(path)-4:-3] == '.' :\\n            if path\\[len(path)-3:].lower() != 'jpg' :\\n                nuke.message('Invalid file extension, only <b>*.jpg</> support.')\\n            else :\\n                newPath = path\\n                check += 1\\n        else :\\n            newPath = path + '.jpg'\\n            check += 1\\n\\n        if check == 1 :\\n            if newPath\\[-5:].lower() == 'd.jpg' :\\n                if newPath\\[-8:-7] == '%' :\\n                    if len(newPath\\[newPath.find('%')+1:newPath.find('d.jpg')]) == 2 :\\n                        if newPath\\[newPath.find('%')+1:newPath.find('d.jpg')]\\[:-1] == 0 :\\n                            padding = int(newPath\\[newPath.find('%')+1:newPath.find('d.jpg')]\\[1:])\\n                        else :\\n                            padding = int(newPath\\[newPath.find('%')+1:newPath.find('d.jpg')])\\n\\n                        for time in range (frameST, frameED+1, 1) :\\n                            filePadding = list(str(time))\\n                            while len(filePadding) < padding :\\n                                filePadding.insert(0, '0')\\n                            \\n                            frameFilepath = newPath\\[:newPath.find('%')] + ''.join(filePadding) + newPath\\[newPath.find('.jpg'):]\\n                            nuke.toNode(node)\\['file'].setValue(frameFilepath)\\n                            nuke.render(node, time, time)\\n                            nuke.toNode(node)\\['file'].setValue('')\\n                    else :\\n                        nuke.message(error\\[1])\\n                else :\\n                    nuke.message(error\\[1])\\n            else :\\n                nuke.message(error\\[1])\\nelse :\\n    nuke.message(error\\[2])\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.0}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2018/06/23}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.0\\n- render viewer with all UI\\n  like playblast in maya\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['set_type'].getValue() == 0 or thisGRP\\['set_type'].getValue() == 2 :\\n    thisGRP\\['select_frame'].setEnabled(False)\\n    thisGRP\\['frameST'].setEnabled(False)\\n    thisGRP\\['frameED'].setEnabled(False)\\nif thisGRP\\['set_type'].getValue() == 1 :\\n    thisGRP\\['select_frame'].setEnabled(True)\\n    thisGRP\\['frameST'].setEnabled(False)\\n    thisGRP\\['frameED'].setEnabled(False)\\nif thisGRP\\['set_type'].getValue() == 3 :\\n    thisGRP\\['select_frame'].setEnabled(False)\\n    thisGRP\\['frameST'].setEnabled(True)\\n    thisGRP\\['frameED'].setEnabled(True)\\n\"\n  selected true\n  xpos -47\n  ypos 2\n  addUserKnob {20 User}\n  addUserKnob {4 set_type l \"set type\" M {\"current still frame\" \"another still frame\" \"frame sequence (project setting range)\" \"frame sequence (custom range)\" \"\" \"\" \"\"}}\n  set_type \"frame sequence (project setting range)\"\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waterSchmutz.gizmo",
    "content": "Group {\n name waterSchmutz\n tile_color 0x421010ff\n selected true\n addUserKnob {20 User l waterSchmutz}\n addUserKnob {41 cube l boundaries T Cube1.cube}\n addUserKnob {26 \"\"}\n addUserKnob {41 translate T Cube1.translate}\n addUserKnob {41 rotate T Cube1.rotate}\n addUserKnob {26 \"\"}\n addUserKnob {6 spriteView +STARTLINE}\n addUserKnob {6 customSpriteSwitch l \"custom sprite\" -STARTLINE}\n addUserKnob {41 start_frame l \"start at\" T ParticleEmitter3.start_frame}\n addUserKnob {7 particleDensity l \"particle density\"}\n particleDensity 1\n addUserKnob {41 size T ParticleEmitter3.size}\n addUserKnob {41 size_variation l \"size range\" T ParticleEmitter3.size_variation}\n addUserKnob {22 update l \"Refresh Particles\" T \"import random\\nnuke.thisNode().knob('seed').setValue( random.randint(1,16384) )\" +STARTLINE}\n addUserKnob {3 seed -STARTLINE}\n seed 4191\n addUserKnob {41 to l \"wind direction\" T ParticleWind1.to}\n addUserKnob {6 wrapPart l \"wrap particles\" +STARTLINE}\n wrapPart true\n addUserKnob {7 edgefade l \"edge fade\"}\n edgefade 0.4\n addUserKnob {26 \"\"}\n addUserKnob {7 tScale l \"turbulence scale\" R 0 10}\n tScale 8\n addUserKnob {7 tStrength l \"turbulence stregth\"}\n tStrength 1\n addUserKnob {26 \"\"}\n addUserKnob {26 lbl l \"\" +STARTLINE T \"waterSchmutz v1.5\"}\n addUserKnob {22 btn l DerekVFX.ca T \"import os\\nimport sys\\n\\ntry:\\n    import subprocess\\n    def _run(cmd, shell, wait):\\n        opener = subprocess.Popen(cmd, shell=shell)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\nexcept ImportError:\\n    import popen2\\n    def _run(cmd, shell, wait):\\n        opener = popen2.Popen3(cmd)\\n        if wait:\\n            opener.wait()\\n        return opener.pid\\n\\ndef _open(url, wait=0):\\n    if sys.platform == \\\"darwin\\\":\\n        cmd = \\[\\\"open\\\", url]\\n    elif hasattr(os, \\\"startfile\\\"):\\n        return os.startfile(url)\\n    elif os.environ.has_key(\\\"KDE_FULL_SESSION\\\") or os.environ.has_key(\\\"KDE_MULTIHEAD\\\") or \\\\\\n        os.environ.has_key(\\\"GNOME_DESKTOP_SESSION_ID\\\") or os.environ.has_key(\\\"GNOME_KEYRING_SOCKET\\\"):\\n        cmd = \\[\\\"xdg-open\\\", url]\\n    else:\\n        raise OSError, \\\"Desktop not supported.\\\"\\n\\n    return _run(cmd, 0, wait)\\n\\n_open('http://www.derekvfx.ca/')\" +STARTLINE}\n addUserKnob {20 render l renderSettings}\n addUserKnob {41 format l \"output format\" T Reformat3.format}\n addUserKnob {41 antialiasing T ScanlineRender1.antialiasing}\n addUserKnob {41 overscan T ScanlineRender1.overscan}\n addUserKnob {6 proxyRender l \"proxy mode\" +STARTLINE}\n proxyRender true\n addUserKnob {6 guiDisable l \"GUI Disable\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 samples T ScanlineRender1.samples}\n addUserKnob {41 shutter T ScanlineRender1.shutter}\n addUserKnob {41 stochastic_samples l \"stochastic samples\" T ScanlineRender1.stochastic_samples}\n addUserKnob {20 particleSettings}\n addUserKnob {41 format_1 l format T Constant1.format}\n addUserKnob {41 first l \"frame range\" T Constant1.first}\n addUserKnob {41 last l \"\" -STARTLINE T Constant1.last}\n addUserKnob {41 start_frame_animation l \"start at\" T ParticleEmitter3.start_frame_animation}\n addUserKnob {41 start_wrap l \"limit to range\" -STARTLINE T ParticleEmitter3.start_wrap}\n addUserKnob {41 frame_advance l advance T ParticleEmitter3.frame_advance}\n addUserKnob {41 max_clip_length l \"max clip length\" -STARTLINE T ParticleEmitter3.max_clip_length}\n addUserKnob {26 div l \"\" +STARTLINE T \" \"}\n addUserKnob {20 spriteSettings n 1}\n addUserKnob {41 type T Noise1.type}\n addUserKnob {41 size_1 l x/ysize T Noise1.size}\n addUserKnob {41 zoffset l z T Noise1.zoffset}\n addUserKnob {41 gain T Noise1.gain}\n addUserKnob {20 endGroup n -1}\n}\n Cube {\n  inputs 0\n  display wireframe\n  render_mode wireframe\n  rows 1\n  columns 1\n  cube {-500 0 -500 500 500 500}\n  pivot {{\"abs(cube.x-cube.r)/2+((cube.x<cube.r) ? cube.x : cube.r)\"} {\"abs(cube.y-cube.t)/2+((cube.y<cube.t) ? cube.y : cube.t)\"} {\"abs(cube.n-cube.f)/2+((cube.n<cube.f) ? cube.n : cube.f)\"}}\n  name Cube1\n  tile_color 0xffcc00ff\n  gl_color 0xff3b00ff\n  xpos -870\n  ypos 484\n  hide_input true\n  addUserKnob {20 User}\n  addUserKnob {7 volume}\n  volume {{abs(cube.x-cube.r)*abs(cube.y-cube.t)*abs(cube.n-cube.f)}}\n }\n Input {\n  inputs 0\n  name customSprite\n  xpos -879\n  ypos 210\n }\n Reformat {\n  format {{{parent.Constant1.format}}}\n  resize distort\n  name Reformat1\n  xpos -879\n  ypos 313\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"128 128 0 0 128 128 1 texture\"\n  last 100\n  name Constant1\n  xpos -714\n  ypos 8\n }\n Noise {\n  size 82\n  zoffset 3.12\n  gain 0.57\n  center {1024 576}\n  name Noise1\n  xpos -714\n  ypos 135\n }\n Roto {\n  output alpha\n  replace true\n  curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44100000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Ellipse1 512 bezier\n     {{cc\n       {f 8192}\n       {px x4483e000\n        {xc1db2587 0}\n        {x42833332 x4179999c}\n        {x41db2586 0}\n        {0 xc1db2588}\n        {x42e66664 x42826666}\n        {0 x41db2588}\n        {x41db2586 0}\n        {x42833332 x42e59999}\n        {xc1db2587 0}\n        {0 x41db2588}\n        {x417ffff4 x42826666}\n        {0 xc1db2588}}}\n      {cc\n       {f 8192}\n       {px x4483e000\n        {xc1db2587 0}\n        {0 0}\n        {x41db2586 0}\n        {0 xc1db2588}\n        {0 0}\n        {0 x41db2588}\n        {x41db2586 0}\n        {0 0}\n        {xc1db2587 0}\n        {0 x41db2588}\n        {0 0}\n        {0 xc1db2588}}}}\n     {tx x4483e000 x4260cccc x4280cccd}\n     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44100000 sb 1 ltn x4483e000 ltm x4483e000 tt x40e00000}}}}}}\n  toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n  toolbar_brush_hardness 0.200000003\n  toolbar_source_transform_scale {1 1}\n  toolbar_source_transform_center {1024 576}\n  colorOverlay {0 0 0 0}\n  lifetime_type \"all frames\"\n  lifetime_start 1055\n  lifetime_end 1055\n  motionblur_shutter_offset_type centred\n  source_black_outside true\n  name Roto1\n  xpos -714\n  ypos 169\n }\n Blur {\n  channels alpha\n  size 23.4\n  name Blur1\n  xpos -714\n  ypos 207\n }\n Premult {\n  name Premult2\n  xpos -714\n  ypos 245\n }\n Crop {\n  box {0 0 128 128}\n  softness 25.8\n  name Crop1\n  xpos -714\n  ypos 271\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Switch {\n  inputs 2\n  which {{customSpriteSwitch}}\n  name Switch1\n  xpos -714\n  ypos 319\n }\nset N1eee8c30 [stack 0]\n Dot {\n  name Dot1\n  xpos -422\n  ypos 323\n }\n Dot {\n  name Dot2\n  xpos -422\n  ypos 928\n }\n Input {\n  inputs 0\n  name camera\n  xpos -886\n  ypos 802\n  number 1\n }\npush $N1eee8c30\n BlendMat {\n  operation plus\n  surfaceblend modulate\n  name BlendMat1\n  xpos -714\n  ypos 369\n }\npush 0\npush 0\n ParticleEmitter {\n  inputs 3\n  emit_from faces\n  rate {{\"frame-start_frame > 0 & frame-start_frame < 2 ? ((Cube1.volume/1000000)*particleDensity) : 0\"}}\n  lifetime inf\n  velocity 0\n  size 1\n  size_variation 4\n  start_wrap true\n  seed {{parent.seed}}\n  name ParticleEmitter3\n  knobChanged 5\n  xpos -714\n  ypos 461\n  disable {{\"guiDisable ? \\$gui : 0\"}}\n }\n ParticleExpression {\n  temp_name1 c\n  temp_expr1 \"v(\\[value Cube1.cube.x],\\[value Cube1.cube.y],\\[value Cube1.cube.n])\"\n  temp_name2 b\n  temp_expr2 \"v(\\[value Cube1.cube.r],\\[value Cube1.cube.t],\\[value Cube1.cube.f])\"\n  posexpr v(random*abs(x(c)-x(b))+x(c),random*abs(y(c)-y(b))+y(c),random*abs(z(c)-z(b))+z(c))\n  posexpr_onlynew true\n  name spread\n  xpos -714\n  ypos 487\n  disable {{\"guiDisable ? \\$gui : 0\"}}\n }\n ParticleTurbulence {\n  strength {{waterSchmutz.tStrength} {strength.x} {strength.x}}\n  scale {{waterSchmutz.tScale} {scale.x} {scale.x}}\n  name ParticleTurbulence1\n  xpos -714\n  ypos 525\n  disable {{\"guiDisable ? \\$gui : 0\"}}\n }\n ParticleWind {\n  to {5 0 0}\n  name ParticleWind1\n  xpos -714\n  ypos 563\n  disable {{\"guiDisable ? \\$gui : 0\"}}\n }\n ParticleExpression {\n  temp_name1 f\n  temp_expr1 \"v(\\[value Cube1.cube.x],\\[value Cube1.cube.y],\\[value Cube1.cube.n])\"\n  temp_name2 b\n  temp_expr2 \"v(\\[value Cube1.cube.r],\\[value Cube1.cube.t],\\[value Cube1.cube.f])\"\n  temp_name3 poz\n  temp_expr3 pos\n  posexpr v(x(poz)>x(b)?x(f):(x(poz)<x(f)?x(b):x(poz)),y(poz)>y(b)?y(f):(y(poz)<y(f)?y(b):y(poz)),z(poz)>z(b)?z(f):(z(poz)<z(f)?z(b):z(poz)))\n  name ParticleWrapper\n  xpos -714\n  ypos 601\n  disable {{\"wrapPart == 0\"}}\n }\n ParticleExpression {\n  temp_name0 f\n  temp_expr0 \"v(\\[value Cube1.cube.x],\\[value Cube1.cube.y],\\[value Cube1.cube.n])\"\n  temp_name1 b\n  temp_expr1 \"v(\\[value Cube1.cube.r],\\[value Cube1.cube.t],\\[value Cube1.cube.f])\"\n  temp_name2 m\n  temp_expr2 (abs((v(x(f),y(f),z(f))-v(x(b),y(b),z(b))))/2)+f\n  temp_name3 fade\n  temp_expr3 (1-(abs(x(pos)-x(m)))/abs(x(f)-x(m)))*(1-(abs(y(pos)-y(m)))/abs(y(f)-y(m)))*(1-(abs(z(pos)-z(m)))/abs(z(f)-z(m)))\n  opacityexpr \"\\[value edgefade] <=0 ? 1 : fade*(1/\\[value edgefade])\"\n  name ParticleExpression1\n  xpos -714\n  ypos 639\n  disable {{\"edgefade == 0 \"}}\n }\n TransformGeo {\n  translate {{parent.Cube1.translate} {parent.Cube1.translate} {parent.Cube1.translate}}\n  rotate {{parent.Cube1.rotate} {parent.Cube1.rotate} {parent.Cube1.rotate}}\n  pivot {{parent.Cube1.pivot} {parent.Cube1.pivot} {parent.Cube1.pivot}}\n  name TransformGeo1\n  xpos -714\n  ypos 712\n }\n Constant {\n  inputs 0\n  channels rgb\n  format \"128 128 0 0 128 128 1 128x128\"\n  name Constant2\n  xpos -592\n  ypos 657\n }\n Reformat {\n  resize distort\n  name Reformat3\n  xpos -592\n  ypos 729\n }\n Reformat {\n  type scale\n  scale 0.5\n  name Reformat2\n  xpos -592\n  ypos 802\n  disable {{\"proxyRender == 0\"}}\n }\nadd_layer {P P.red P.green P.blue}\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing medium\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  name ScanlineRender1\n  xpos -714\n  ypos 802\n }\n Reformat {\n  format {{{parent.Reformat3.format}}}\n  pbb true\n  name Reformat4\n  xpos -714\n  ypos 868\n }\n Switch {\n  inputs 2\n  which {{spriteView}}\n  name Switch2\n  xpos -714\n  ypos 924\n }\n Output {\n  name Output1\n  xpos -714\n  ypos 976\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waveCustom.gizmo",
    "content": "Group {\n inputs 0\n name WaveCustom\n tile_color 0xb73e3eff\n addUserKnob {20 User}\n addUserKnob {7 custom t \"Animate this value to create your custom curve\"}\n addUserKnob {7 output +INVISIBLE}\n output {{\"disable ? 0 : custom\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 credits l \"\" +STARTLINE T \"waveCustom v1.0 | Fynn Laue 2020\"}\n}\n Output {\n  inputs 0\n  name Output1\n  xpos 0\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waveGrade.gizmo",
    "content": "Group {\n name WaveGrade\n tile_color 0x7c9eb5ff\n addUserKnob {20 User}\n addUserKnob {41 inp1 +INVISIBLE T upstreamValue3.output}\n addUserKnob {7 avgcurve +INVISIBLE}\n avgcurve {{(inp1(frame-1)+inp1(frame)+inp1(frame+1))/3 i}}\n addUserKnob {7 amplify t \"Multiply the average input value with this and add the input curve on top:\\n\\n((inp1 - avgcurve) * amplify) + inp1\" R -50 50}\n addUserKnob {7 multiply t \"multiply the curve by this\" R 0 10}\n multiply 1\n addUserKnob {7 offset t \"Add this to the output value\" R -10 10}\n addUserKnob {7 output t \"Operation are carried out in this order\\n- amplify\\n- multiply\\n- offset\\n----------\"}\n output {{\"disable ? inp1 : ((((inp1-avgcurve)*amplify)+inp1)*multiply)+(offset)\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"WaveGrade v1.0 | Fynn Laue\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -40\n  ypos -9\n }\n Group {\n  name upstreamValue3\n  onCreate \"n = nuke.thisNode()\\n# Hide these knobs from the curve editor\\nn.knob(\\\"output\\\").setFlag(0x20000000)\"\n  label v005\n  xpos -40\n  ypos 148\n  addUserKnob {20 User}\n  addUserKnob {43 pNode t \"this script finds the upstream value. Or rather the name of the node and appends a .\\nThis is then used in an expression appended by a knob name to get that knob's value.\" +INVISIBLE}\n  pNode \"\\[\\n    # This throws error 'Nothing is named \\\"Nothing\\\"' when node has no input0\\n    # set x \\[node this.input0]\\n    set starting_point \\\"this.input0\\\"\\n    set default \\\"this.d_\\\"\\n\\n    # Set x to input if it exists, otherwise return default\\n    if \\{\\[exists \\$starting_point]\\} \\{\\n        set x \\[node \\$starting_point]\\n    \\} \\{\\n        return \\$default\\n    \\}\\n\\n    set finished 0\\n    while \\{\\$finished != 1\\} \\{\\n        # First look for a specific node type\\n        set skip_node 1\\n        while \\{\\$skip_node == 1\\} \\{\\n            # TODO: Make better grouping to reduce nested if statements\\n            if \\{(\\[class \\$x] != \\\"Group\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x])\\} \\{\\n                set x \\[node \\$x.input0]\\n            \\} \\{\\n                # Stop at first enabled Group node\\n                if \\{(\\[class \\$x] == \\\"Group\\\") || (\\[class \\$x] == \\\"Input\\\")\\} \\{\\n                    set skip_node 0\\n                \\} \\{\\n                    if \\{\\$x == \\[topnode \\$x]\\} \\{\\n                        return \\$default\\n                    \\} \\{\\n                        set x \\[node \\$x.input0]\\n                    \\}\\n                \\}\\n            \\}\\n        \\}\\n        # Return Group node if it has an output knob\\n        if \\{\\[class \\$x] == \\\"Group\\\" && \\[exists \\$x.output]\\} \\{\\n            set x \\[append x \\\".\\\"]\\n            return \\$x\\n        \\} \\{\\n            # If node is an Input node (of a Group node), return its parent\\n            if \\{\\[class \\$x]==\\\"Input\\\"\\} \\{\\n                set inp \\\"\\$x.parent.input\\\"\\n                set inputNum \\[value \\$x.number]\\n                set inp \\[append inp \\$inputNum]\\n                if \\{\\[exists \\$inp]\\} \\{\\n                    set x \\[node \\$inp]\\n                \\} \\{\\n                    set finished 1\\n                \\}\\n            \\} \\{\\n                set finished 1\\n            \\}\\n        \\}\\n    \\}\\n    return \\$default\\n]\"\n  addUserKnob {7 d_output t \"if no upstream value is found, default to this value\"}\n  addUserKnob {7 output}\n  output {{\"\\[value knob.pNode]output\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 credit l \"\" +STARTLINE T \"upstreamValue v1.0 | Fynn Laue 2020\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 300\n  }\n end_group\n Output {\n  name Output1\n  xpos -40\n  ypos 423\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waveMaker.gizmo",
    "content": "Group {\n inputs 0\n name WaveMaker\n onCreate \"#========================================\\n# onCreate\\n#========================================\\nimport nuke\\ndef getRoot():\\n    root = None\\n    try:\\n        root = nuke.root()\\n        if root.name():\\n            pass\\n    except:\\n        root = None\\n    return root\\n\\ndef onCreate():\\n    node = nuke.thisNode()\\n    knob = node.knob(\\\"firstFrame\\\")\\n    root = getRoot()\\n    if not root:\\n        return\\n    # Prevent node from throwing python error on comp open\\n    knob.setValue(root.knob(\\\"first_frame\\\").value())\\nonCreate()\"\n knobChanged \"#========================================\\n# knobChanged\\n#========================================\\nimport nuke\\ndef knobChanged():\\n    node = nuke.thisNode()\\n    knob = nuke.thisKnob()\\n    knobName = knob.name()\\n    waves = \\[\\n        \\\"(sin(pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(2*pi)))+1)/2\\\", # sin\\n        \\\"(asin(sin(pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(2*pi))))+pi/2)/pi\\\", # triangle\\n        \\\"(ceil(sin(pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(2*pi)))))\\\", # square\\n        \\\"(abs(sin(pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(pi)))))\\\", # bounce\\n        \\\"((random(evolution, pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(pi)))))\\\", # random\\n        \\\"((((frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))%(waveLength)))/waveLength)\\\", # sawtooth\\n        \\\"(sin(((pow(pi,2)/2)*(frame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(pi*waveLength)) % (pi/2)))\\\", # sawtooth parabolic\\n        \\\"(cos(((pow(pi,2)/2)*(frame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(pi*waveLength)) % (pi/2)))\\\",  # sawtooth parabolic reversed\\n        \\\"((exp(((2*pi)*(frame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))%(waveLength*(pi*2)))/waveLength)-1)/exp(2*pi))\\\",  # sawtooth exponential\\n    ]\\n    if knobName in \\[\\\"wave0\\\", \\\"wave1\\\"]:\\n        # Build output expression\\n        expr0 = waves\\[int(node.knob(\\\"wave0\\\").getValue())]\\n        expr1 = waves\\[int(node.knob(\\\"wave1\\\").getValue())]\\n        exprOut = \\\"disable ? 0 : (((\\{0\\}*(1-waveMix)) + (\\{1\\}*waveMix))*(maxValue-minValue)+minValue)*power\\\".format(expr0, expr1)\\n        node.knob(\\\"output\\\").setExpression(exprOut)\\n        # Enable evolution knob if random wave selected\\n        node.knob(\\\"evolution\\\").setEnabled(any(\\[i.value().lower() == \\\"random\\\" for i in \\[node.knob(\\\"wave0\\\"), node.knob(\\\"wave1\\\")]]))\\nknobChanged()\"\n tile_color 0x3aff71ff\n note_font Verdana\n addUserKnob {20 User}\n addUserKnob {3 firstFrame l \"First Frame\"}\n firstFrame 1000\n addUserKnob {7 minValue l \"Min Value\" t \"lowest possible value\"}\n addUserKnob {7 maxValue l \"Max Value\" t \"highest possible value\" -STARTLINE}\n maxValue 1\n addUserKnob {7 waveLength l Length t \"Higher values are slower. Values below 2 may produce undesirable results when using even waves like sine\" R 2 50}\n waveLength 25\n addUserKnob {7 phase l Phase t \"Not counted in frames but in cycles:\\n1 'phase' is half a cycle (or evolution) of the wave.\"}\n phase 0.5\n addUserKnob {6 invPhase l invert t \"inverts the curves' phase\" -STARTLINE}\n addUserKnob {7 evolution t \"evolution for the random curve\"}\n addUserKnob {68 wave0 l Wave M {Sine Triangle Square Bounce Random Sawtooth/Sawtooth \"Sawtooth/Sawtooth (Parabolic)\" \"Sawtooth/Sawtooth (Parabolic Reversed)\" \"Sawtooth/Sawtooth (Exponential)\" \"\" \"\" \"\"}}\n addUserKnob {68 wave1 l \"Wave 1\" -STARTLINE M {Sine Triangle Square Bounce Random Sawtooth/Sawtooth \"Sawtooth/Sawtooth (Parabolic)\" \"Sawtooth/Sawtooth (Parabolic Reversed)\" \"Sawtooth/Sawtooth (Exponential)\" \"\" \"\"}}\n wave1 Random\n addUserKnob {7 waveMix l \"Wave Mix\" t \"0 = Only Wave 0\\n1 = Only Wave 1\"}\n addUserKnob {26 \"\"}\n addUserKnob {7 power}\n power 1\n addUserKnob {7 output}\n output {{\"disable ? 0 : ((((sin(pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(2*pi)))+1)/2*(1-waveMix)) + (((random(evolution, pi/2+(frame-firstFrame-((phase+(invPhase ? 0.5 : 0))*waveLength*(0.5)))/(waveLength/(pi)))))*waveMix))*(maxValue-minValue)+minValue)*power\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"WaveMaker v1.0 | Fynn Laue 2020\"}\n}\n Output {\n  inputs 0\n  name Output1\n  xpos 0\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waveMerge.gizmo",
    "content": "Group {\n name WaveMerge\n tile_color 0x4d6ba0ff\n addUserKnob {20 User}\n addUserKnob {4 operation t \"Add (input0 + input1 * power)\\nDissolve ((input0 * (1 - power)) + (input1 * power))\\nMax (max(input0, input1 * power + (1 - power) * input0))\\nMin (min(input0, input1 * power + input0 * (1 - power)))\\nMultiply ((input0 * (input1 * power)))\\nMinus ((input0 - (input1 * power)))\\nUnion ((input0 * (1 - power)) + ((input0 + input1) - (input0 * input1)) * power)\" M {Add Dissolve Max Min Multiply Minus Union \"\" \"\" \"\" \"\" \"\" \"\"}}\n operation Dissolve\n addUserKnob {41 inp1 +INVISIBLE T upstreamValue3.output}\n addUserKnob {41 inp2 +INVISIBLE T upstreamValue1.output}\n addUserKnob {7 power}\n power 1\n addUserKnob {7 output}\n output {{\"disable ? inp1 : operation==0 ? inp1+inp2*power : operation==1 ? (inp1*(1-power))+(inp2*power) : operation==2 ? max(inp1, inp2*power+(1-power)*inp1) : operation==3 ? min(inp1, inp2*power+inp1*(1-power)) : operation==4 ? inp1*(1-power)+(inp1*(inp2*power)) : operation==5 ? (inp1-(inp2*power)) : operation==6 ? (inp1*(1-power))+((inp1+inp2)-(inp1*inp2))*power : inp1\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 credit l \"\" +STARTLINE T \"WaveMerge v1.0 | Fynn Laue 2020\"}\n}\n Input {\n  inputs 0\n  name Input0\n  xpos -40\n  ypos -9\n }\n Group {\n  name upstreamValue3\n  onCreate \"n = nuke.thisNode()\\n# Hide these knobs from the curve editor\\nn.knob(\\\"output\\\").setFlag(0x20000000)\"\n  label v005\n  xpos -40\n  ypos 76\n  addUserKnob {20 User}\n  addUserKnob {43 pNode t \"this script finds the upstream value. Or rather the name of the node and appends a .\\nThis is then used in an expression appended by a knob name to get that knob's value.\" +INVISIBLE}\n  pNode \"\\[\\n    # This throws error 'Nothing is named \\\"Nothing\\\"' when node has no input0\\n    # set x \\[node this.input0]\\n    set starting_point \\\"this.input0\\\"\\n    set default \\\"this.d_\\\"\\n\\n    # Set x to input if it exists, otherwise return default\\n    if \\{\\[exists \\$starting_point]\\} \\{\\n        set x \\[node \\$starting_point]\\n    \\} \\{\\n        return \\$default\\n    \\}\\n\\n    set finished 0\\n    while \\{\\$finished != 1\\} \\{\\n        # First look for a specific node type\\n        set skip_node 1\\n        while \\{\\$skip_node == 1\\} \\{\\n            # TODO: Make better grouping to reduce nested if statements\\n            if \\{(\\[class \\$x] != \\\"Group\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x])\\} \\{\\n                set x \\[node \\$x.input0]\\n            \\} \\{\\n                # Stop at first enabled Group node\\n                if \\{(\\[class \\$x] == \\\"Group\\\") || (\\[class \\$x] == \\\"Input\\\")\\} \\{\\n                    set skip_node 0\\n                \\} \\{\\n                    if \\{\\$x == \\[topnode \\$x]\\} \\{\\n                        return \\$default\\n                    \\} \\{\\n                        set x \\[node \\$x.input0]\\n                    \\}\\n                \\}\\n            \\}\\n        \\}\\n        # Return Group node if it has an output knob\\n        if \\{\\[class \\$x] == \\\"Group\\\" && \\[exists \\$x.output]\\} \\{\\n            set x \\[append x \\\".\\\"]\\n            return \\$x\\n        \\} \\{\\n            # If node is an Input node (of a Group node), return its parent\\n            if \\{\\[class \\$x]==\\\"Input\\\"\\} \\{\\n                set inp \\\"\\$x.parent.input\\\"\\n                set inputNum \\[value \\$x.number]\\n                set inp \\[append inp \\$inputNum]\\n                if \\{\\[exists \\$inp]\\} \\{\\n                    set x \\[node \\$inp]\\n                \\} \\{\\n                    set finished 1\\n                \\}\\n            \\} \\{\\n                set finished 1\\n            \\}\\n        \\}\\n    \\}\\n    return \\$default\\n]\"\n  addUserKnob {7 d_output t \"if no upstream value is found, default to this value\"}\n  addUserKnob {7 output}\n  output {{\"\\[value knob.pNode]output\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 credit l \"\" +STARTLINE T \"upstreamValue v1.0 | Fynn Laue 2020\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 300\n  }\n end_group\n Output {\n  name Output1\n  xpos -40\n  ypos 423\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 180\n  ypos -9\n  number 1\n }\n Group {\n  name upstreamValue1\n  onCreate \"n = nuke.thisNode()\\n# Hide these knobs from the curve editor\\nn.knob(\\\"output\\\").setFlag(0x20000000)\"\n  label v005\n  xpos 180\n  ypos 76\n  addUserKnob {20 User}\n  addUserKnob {43 pNode t \"this script finds the upstream value. Or rather the name of the node and appends a .\\nThis is then used in an expression appended by a knob name to get that knob's value.\" +INVISIBLE}\n  pNode \"\\[\\n    # This throws error 'Nothing is named \\\"Nothing\\\"' when node has no input0\\n    # set x \\[node this.input0]\\n    set starting_point \\\"this.input0\\\"\\n    set default \\\"this.d_\\\"\\n\\n    # Set x to input if it exists, otherwise return default\\n    if \\{\\[exists \\$starting_point]\\} \\{\\n        set x \\[node \\$starting_point]\\n    \\} \\{\\n        return \\$default\\n    \\}\\n\\n    set finished 0\\n    while \\{\\$finished != 1\\} \\{\\n        # First look for a specific node type\\n        set skip_node 1\\n        while \\{\\$skip_node == 1\\} \\{\\n            # TODO: Make better grouping to reduce nested if statements\\n            if \\{(\\[class \\$x] != \\\"Group\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x])\\} \\{\\n                set x \\[node \\$x.input0]\\n            \\} \\{\\n                # Stop at first enabled Group node\\n                if \\{(\\[class \\$x] == \\\"Group\\\") || (\\[class \\$x] == \\\"Input\\\")\\} \\{\\n                    set skip_node 0\\n                \\} \\{\\n                    if \\{\\$x == \\[topnode \\$x]\\} \\{\\n                        return \\$default\\n                    \\} \\{\\n                        set x \\[node \\$x.input0]\\n                    \\}\\n                \\}\\n            \\}\\n        \\}\\n        # Return Group node if it has an output knob\\n        if \\{\\[class \\$x] == \\\"Group\\\" && \\[exists \\$x.output]\\} \\{\\n            set x \\[append x \\\".\\\"]\\n            return \\$x\\n        \\} \\{\\n            # If node is an Input node (of a Group node), return its parent\\n            if \\{\\[class \\$x]==\\\"Input\\\"\\} \\{\\n                set inp \\\"\\$x.parent.input\\\"\\n                set inputNum \\[value \\$x.number]\\n                set inp \\[append inp \\$inputNum]\\n                if \\{\\[exists \\$inp]\\} \\{\\n                    set x \\[node \\$inp]\\n                \\} \\{\\n                    set finished 1\\n                \\}\\n            \\} \\{\\n                set finished 1\\n            \\}\\n        \\}\\n    \\}\\n    return \\$default\\n]\"\n  addUserKnob {7 d_output t \"if no upstream value is found, default to this value\"}\n  addUserKnob {7 output}\n  output {{\"\\[value knob.pNode]output\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 credit l \"\" +STARTLINE T \"upstreamValue v1.0 | Fynn Laue 2020\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 300\n  }\n end_group\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_waveRetime.gizmo",
    "content": "Group {\n name WaveRetime\n onCreate \"#========================================\\n# ON CREATE\\n#========================================\\nimport nuke\\ndef onCreate():\\n    n = nuke.thisNode()\\n    # Set LOG sliders\\n    n.knob(\\\"speed\\\").setFlag(0x00000004)\\nonCreate()\"\n knobChanged \"#========================================\\n# KNOB CHANGED\\n#========================================\\nimport nuke\\ndef knobChanged():\\n    node = nuke.thisNode()\\n    knob = nuke.thisKnob()\\n    k_before = node.knob(\\\"before\\\")\\n    k_after = node.knob(\\\"after\\\")\\n    k_output = node.knob(\\\"output\\\")\\n    # Cancel if other frame than before/after curve was changed\\n    if knob not in \\[k_before, k_after]:\\n        return\\n    # Loop modes \\[before, after]\\n    loopModes = \\[\\n        \\[\\\"tmp2\\\", \\\"tmp2\\\"], # loop\\n        \\[\\\"tmp2(firstFrameOut)\\\", \\\"tmp2(lastFrameOut)\\\"], # hold\\n    ]\\n    modeBeforeIndex = int(k_before.getValue())\\n    modeAfterIndex = int(k_after.getValue())\\n    modeBefore = loopModes\\[modeBeforeIndex]\\[0]\\n    modeAfter = loopModes\\[modeAfterIndex]\\[1]\\n    expression = \\\"disable ? inp1 : frame <= firstFrameOut ? \\{\\} : frame >= lastFrameOut ? \\{\\} : tmp2\\\".format(modeBefore, modeAfter)\\n    k_output.setExpression(expression)\\nknobChanged()\"\n tile_color 0xb09549ff\n note_font Verdana\n addUserKnob {20 User}\n addUserKnob {41 inp1 +INVISIBLE T upstreamValue5.output}\n addUserKnob {3 firstFrame l \"input range\" t \"First frame of input to use\"}\n firstFrame 1001\n addUserKnob {3 lastFrame l \"\" t \"Last frame of input to use\" -STARTLINE}\n lastFrame 1101\n addUserKnob {22 getInputFromParentRange l \"From Input\" -STARTLINE T \"#========================================\\n# getInputFromParentRange\\n#========================================\\nimport nuke\\ndef getAnimationRange(knob):\\n    frameRange = \\[0, 0]\\n    anims = knob.animations()\\[0:]\\n    if anims:\\n        anim = knob.animation(0)\\n        keys = anim.keys()\\n        frameRange\\[0] = int(keys\\[0].x)\\n        frameRange\\[1] = int(keys\\[-1].x)\\n    return frameRange\\n\\ndef main():\\n    node = nuke.thisNode()\\n    frameRange = \\[]\\n    if node.inputs():\\n        pNode = node.input(0)\\n        knob = pNode.knob(\\\"custom\\\")\\n        if knob:\\n            # 1) waveCustom : Get first and last keyframe\\n            frameRange = getAnimationRange(knob)\\n        if not knob:\\n            knob = pNode.knob(\\\"waveLength\\\")\\n            if knob:\\n                rootFirst = nuke.root().knob(\\\"first_frame\\\").value()\\n                frameRange = \\[int(rootFirst), int(knob.value()-1+rootFirst)]\\n        if not knob:\\n            knob = pNode.knob(\\\"firstFrameOut\\\")\\n            if knob:\\n                knob2 = pNode.knob(\\\"lastFrameOut\\\")\\n                frameRange = \\[int(knob.value()), int(knob2.value())]\\n    if frameRange:\\n        node.knob(\\\"firstFrame\\\").setValue(frameRange\\[0])\\n        node.knob(\\\"lastFrame\\\").setValue(frameRange\\[1])\\n    else:\\n        nuke.alert(\\\"<b>Can't get input range</b>\\\\n\\\\nNeeds a <b>waveRetime</b> <b>waveCustom</b> or <b>waveMaker</b> node as input to be able to fetch range\\\")\\nmain()\"}\n addUserKnob {3 firstFrameOut l \"output range\" t \"First frame of output\"}\n firstFrameOut 1001\n addUserKnob {3 lastFrameOut l \"\" t \"Last frame of output\" -STARTLINE}\n lastFrameOut 1101\n addUserKnob {22 setOutputFromInputRange l \"From Input\" -STARTLINE T \"import nuke\\n\\ndef main():\\n    node = nuke.thisNode()\\n    firstFrame = node.knob(\\\"firstFrame\\\").value()\\n    lastFrame = node.knob(\\\"lastFrame\\\").value()\\n    node.knob(\\\"firstFrameOut\\\").setValue(firstFrame)\\n    node.knob(\\\"lastFrameOut\\\").setValue(lastFrame)\\nmain()\"}\n addUserKnob {22 getOutputFromProjectRange l \"From Project\" -STARTLINE T \"import nuke\\n\\ndef main():\\n    node = nuke.thisNode()\\n    root = nuke.root()\\n    firstFrame = root.knob(\\\"first_frame\\\").value()\\n    lastFrame = root.knob(\\\"last_frame\\\").value()\\n    node.knob(\\\"firstFrameOut\\\").setValue(firstFrame)\\n    node.knob(\\\"lastFrameOut\\\").setValue(lastFrame)\\nmain()\"}\n addUserKnob {7 speed R 0.1 10}\n speed 1\n addUserKnob {4 before M {loop hold}}\n before hold\n addUserKnob {4 after M {loop hold}}\n after hold\n addUserKnob {7 loopCount +INVISIBLE}\n loopCount {{floor((frame-firstFrame)/(lastFrame-firstFrame))}}\n addUserKnob {7 frm t \"Which frame of the original frame to show\" +INVISIBLE}\n frm {{frame-((lastFrame-firstFrame+1)*loopCount)}}\n addUserKnob {7 tmp t \"inpValue at frm\" +INVISIBLE}\n tmp {{\"loopCount < 0 ? (before == 1 ? inp1(firstFrame) : inp1(frm)) : loopCount > 0 ? (after == 1 ? inp1(lastFrame) : inp1(frm)) : inp1(frm)\"}}\n addUserKnob {7 tmp2 t \"show tmp at frame+(firstFrameOut-firstFrame)\" +INVISIBLE}\n tmp2 {{tmp((frame+(firstFrame-firstFrameOut)-firstFrameOut)*speed+firstFrameOut)}}\n addUserKnob {7 output}\n output {{\"disable ? inp1 : frame <= firstFrameOut ? tmp2(firstFrameOut) : frame >= lastFrameOut ? tmp2(lastFrameOut) : tmp2\"}}\n addUserKnob {26 \"\"}\n addUserKnob {26 credits l \"\" +STARTLINE T \"WaveRetime v1.0 | Fynn Laue 2020\"}\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -40\n  ypos 39\n }\n Group {\n  name upstreamValue5\n  onCreate \"n = nuke.thisNode()\\n# Hide these knobs from the curve editor\\nn.knob(\\\"output\\\").setFlag(0x20000000)\"\n  label v005\n  xpos -40\n  ypos 150\n  addUserKnob {20 User}\n  addUserKnob {43 pNode t \"this script finds the upstream value. Or rather the name of the node and appends a .\\nThis is then used in an expression appended by a knob name to get that knob's value.\" +INVISIBLE}\n  pNode \"\\[\\n    # This throws error 'Nothing is named \\\"Nothing\\\"' when node has no input0\\n    # set x \\[node this.input0]\\n    set starting_point \\\"this.input0\\\"\\n    set default \\\"this.d_\\\"\\n\\n    # Set x to input if it exists, otherwise return default\\n    if \\{\\[exists \\$starting_point]\\} \\{\\n        set x \\[node \\$starting_point]\\n    \\} \\{\\n        return \\$default\\n    \\}\\n\\n    set finished 0\\n    while \\{\\$finished != 1\\} \\{\\n        # First look for a specific node type\\n        set skip_node 1\\n        while \\{\\$skip_node == 1\\} \\{\\n            # TODO: Make better grouping to reduce nested if statements\\n            if \\{(\\[class \\$x] != \\\"Group\\\" && \\[class \\$x] != \\\"Input\\\" && \\$x != \\[topnode \\$x])\\} \\{\\n                set x \\[node \\$x.input0]\\n            \\} \\{\\n                # Stop at first enabled Group node\\n                if \\{(\\[class \\$x] == \\\"Group\\\") || (\\[class \\$x] == \\\"Input\\\")\\} \\{\\n                    set skip_node 0\\n                \\} \\{\\n                    if \\{\\$x == \\[topnode \\$x]\\} \\{\\n                        return \\$default\\n                    \\} \\{\\n                        set x \\[node \\$x.input0]\\n                    \\}\\n                \\}\\n            \\}\\n        \\}\\n        # Return Group node if it has an output knob\\n        if \\{\\[class \\$x] == \\\"Group\\\" && \\[exists \\$x.output]\\} \\{\\n            set x \\[append x \\\".\\\"]\\n            return \\$x\\n        \\} \\{\\n            # If node is an Input node (of a Group node), return its parent\\n            if \\{\\[class \\$x]==\\\"Input\\\"\\} \\{\\n                set inp \\\"\\$x.parent.input\\\"\\n                set inputNum \\[value \\$x.number]\\n                set inp \\[append inp \\$inputNum]\\n                if \\{\\[exists \\$inp]\\} \\{\\n                    set x \\[node \\$inp]\\n                \\} \\{\\n                    set finished 1\\n                \\}\\n            \\} \\{\\n                set finished 1\\n            \\}\\n        \\}\\n    \\}\\n    return \\$default\\n]\"\n  addUserKnob {7 d_output t \"if no upstream value is found, default to this value\"}\n  addUserKnob {7 output}\n  output {{\"\\[value knob.pNode]output\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 credit l \"\" +STARTLINE T \"upstreamValue v1.0 | Fynn Laue 2020\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 0\n  }\n  Output {\n   name Output1\n   xpos 0\n   ypos 300\n  }\n end_group\n Output {\n  name Output1\n  xpos -40\n  ypos 303\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/init.py",
    "content": "'''\n@author: Tony Lyons (creativelyons@gmail.com)\n# init.py\n'''\n# import os\n# import nuke\n"
  },
  {
    "path": "NukeSurvivalToolkit/menu.py",
    "content": "#*****************************************************************\n#*****************************************************************\n# This file will setup the NukeSurvivalToolkit Menu on your Toolbar\n# Written by Tony Lyons 09/2020 | www.CreativeLyons.com | www.CompositingMentor.com\n#*****************************************************************\n#*****************************************************************\n\n# Imports\nimport nuke\nimport sys\nimport os\nfrom pathlib import Path\n\n############################################################################################################\n\n# Add PluginPaths to tools and icons\nnuke.pluginAddPath('./gizmos')\nnuke.pluginAddPath('./python')\nnuke.pluginAddPath('./icons')\nnuke.pluginAddPath('./images')\nnuke.pluginAddPath('./nk_files')\n\n# Import some helpful functions for the NST\nimport NST_helper\n\n# This is the prefix being used to customize the gizmo's in this toolkit\nglobal prefixNST\nprefixNST = \"NST_\"\n\n# Store the location of this menu.py to help with nuke.nodePaste() which requires a filepath to paste\n# Use Path.as_posix() to ensure forward slashes on all platforms (fixes Windows path issues)\nNST_FolderPath = Path(__file__).parent.as_posix()\nNST_helper.NST_FolderPath = NST_FolderPath\n\n############################################################################################################\n# Helpers to keep code readable\n\ndef nk_path(filename, prefix=False):\n    \"\"\"Return full path to an .nk file in nk_files folder.\"\"\"\n    name = f\"{prefixNST}{filename}\" if prefix else filename\n    return f\"{NST_FolderPath}/nk_files/{name}\"\n\ndef icon_path(filename):\n    \"\"\"Return full path to an icon file.\"\"\"\n    return f\"{NST_FolderPath}/icons/{filename}\"\n\n############################################################################################################\n# User Configuration Variables\n############################################################################################################\n\n# Documentation behavior/config (kept in menu.py for explicit user editing)\nNST_helper.NST_DOCS_ONLINE_URL = \"https://creativelyons.github.io/NukeSurvivalToolkit_Wiki/\"\nNST_helper.NST_DOCS_ONLINE_TIMEOUT_SECONDS = 1.5\nNST_helper.NST_DOCS_PDF_NAME = \"NukeSurvivalToolkit_Documentation_Release_v2.2.0.pdf\"\nNST_helper.NST_DOCS_OFFLINE_INDEX = Path(\"NST_Documentation/index.html\")\n\n# Set to True to load the Expression Nodes AG submenu under Draw; set to False to skip it\nLOAD_EXPRESSION_MENU = False\n\n############################################################################################################\n# End of User Configuration Variables\n############################################################################################################\n\n############################################################################################################\n# Start of Menu Creation\n############################################################################################################\n\n# Create NukeSurivalToolkit Menu\ntoolbar = nuke.menu('Nodes')\nNST_menu = toolbar.addMenu('NukeSurvivalToolkit', icon = \"SurvivalToolkit.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Documentation Submenu\ndocumentationMenu = NST_menu.addMenu(\"Documentation\", icon=\"info_icon.png\", index=00)\ndocumentationMenu.addCommand(\"Wiki\\\\/Docs (Auto)\", \"NST_helper.openNSTDocumentationDefault()\", icon=\"wiki_default.png\")\ndocumentationMenu.addCommand(\"Wiki (Online)\", \"NST_helper.openNSTDocumentationOnline()\", icon=\"wiki_online.png\")\ndocumentationMenu.addCommand(\"Wiki (Offline)\", \"NST_helper.openNSTDocumentationOffline()\", icon=\"wiki_offline.png\")\ndocumentationMenu.addCommand(\"Docs (PDF)\", \"NST_helper.openNSTDocumentationPDF()\", icon=\"StickyNote.png\")\n\n############################################################################################################\n############################################################################################################\n\n\n# Create Image Menu\nimageMenu = NST_menu.addMenu('Image', icon = 'ToolbarImage.png', index = 10)\n\nimageMenu.addCommand('LabelFromRead TL', f\"nuke.createNode('{prefixNST}LabelFromRead')\", icon=\"LabelFromRead.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Draw Menu\ndrawMenu = NST_menu.addMenu('Draw', icon = 'ToolbarDraw.png', index = 20)\n\nif LOAD_EXPRESSION_MENU:\n    expressionMenu = drawMenu.addMenu(\"Expression Nodes AG\", icon=icon_path(\"expr.png\"), index=000)\n    expressionMenu.addMenu('Creations', icon=icon_path(\"expr_01.png\"))\n    expressionMenu.addMenu('Alpha', icon=icon_path(\"expr_02.png\"))\n    expressionMenu.addMenu('Pixel', icon=icon_path(\"expr_03.png\"))\n    expressionMenu.addMenu('Keying and Despill', icon=icon_path(\"expr_04.png\"))\n    expressionMenu.addMenu('Transform', icon=icon_path(\"expr_05.png\"))\n    expressionMenu.addMenu('3D and Deep', icon=icon_path(\"expr_06.png\"))\n\n    #CREATIONS\n    expressionMenu.addCommand('Creations/Random/Random Colors', f'nuke.nodePaste(\"{nk_path(\"Random_colors.nk\")}\")')\n    expressionMenu.addCommand('Creations/Random/Random every Frame', f'nuke.nodePaste(\"{nk_path(\"Random_every_frame.nk\")}\")')\n    expressionMenu.addCommand('Creations/Random/Random every Pixel', f'nuke.nodePaste(\"{nk_path(\"Random_every_pixel.nk\")}\")')\n    #expressionMenu.addCommand('Creations/Noise/Noise', f'nuke.nodePaste(\"{nk_path(\"Noise.nk\")}\")')\n    #expressionMenu.addCommand('Creations/Noise/fBm', f'nuke.nodePaste(\"{nk_path(\"fBm.nk\")}\")')\n    #expressionMenu.addCommand('Creations/Noise/Turbulence', f'nuke.nodePaste(\"{nk_path(\"turbulence.nk\")}\")')\n    expressionMenu.addCommand('Creations/lines vertical', f'nuke.nodePaste(\"{nk_path(\"Lines_Vertical.nk\")}\")')\n    expressionMenu.addCommand('Creations/lines horizontal', f'nuke.nodePaste(\"{nk_path(\"Lines_Horizontal.nk\")}\")')\n    expressionMenu.addCommand('Creations/lines vertical animated', f'nuke.nodePaste(\"{nk_path(\"Lines_Vertical_Animated.nk\")}\")')\n    expressionMenu.addCommand('Creations/lines horizontal animated', f'nuke.nodePaste(\"{nk_path(\"Lines_Horizontal_Animated.nk\")}\")')\n    expressionMenu.addCommand('Creations/circles', f'nuke.nodePaste(\"{nk_path(\"circles.nk\")}\")')\n    expressionMenu.addCommand('Creations/circles user', f'nuke.nodePaste(\"{nk_path(\"circles_user.nk\")}\")')\n    expressionMenu.addCommand('Creations/points', f'nuke.nodePaste(\"{nk_path(\"points.nk\")}\")')\n    expressionMenu.addCommand('Creations/points advanced', f'nuke.nodePaste(\"{nk_path(\"points_advanced.nk\")}\")')\n    expressionMenu.addCommand('Creations/bricks', f'nuke.nodePaste(\"{nk_path(\"bricks.nk\")}\")')\n    expressionMenu.addCommand('Creations/gradient horizontal', f'nuke.nodePaste(\"{nk_path(\"gradient_horizontal.nk\")}\")')\n    expressionMenu.addCommand('Creations/gradient horizontal invert', f'nuke.nodePaste(\"{nk_path(\"gradient_horizontal_invert.nk\")}\")')\n    expressionMenu.addCommand('Creations/gradient vertical', f'nuke.nodePaste(\"{nk_path(\"gradient_vertical.nk\")}\")')\n    expressionMenu.addCommand('Creations/gradient vertical invert', f'nuke.nodePaste(\"{nk_path(\"gradient_vertical_invert.nk\")}\")')\n    expressionMenu.addCommand('Creations/gradient 4 corners', f'nuke.nodePaste(\"{nk_path(\"GradientCorner.nk\")}\")')\n    expressionMenu.addCommand('Creations/radial', f'nuke.nodePaste(\"{nk_path(\"radial.nk\")}\")')\n    expressionMenu.addCommand('Creations/radial gradient', f'nuke.nodePaste(\"{nk_path(\"radial_gradient.nk\")}\")')\n    expressionMenu.addCommand('Creations/radial rays', f'nuke.nodePaste(\"{nk_path(\"radial_rays.nk\")}\")')\n    expressionMenu.addCommand('Creations/Trunc', f'nuke.nodePaste(\"{nk_path(\"Trunc.nk\")}\")')\n\n    #ALPHA\n    expressionMenu.addCommand('Alpha/alpha binary', f'nuke.nodePaste(\"{nk_path(\"alpha_binary.nk\")}\")')\n    expressionMenu.addCommand('Alpha/alpha comparison', f'nuke.nodePaste(\"{nk_path(\"alpha_comparison.nk\")}\")')\n    expressionMenu.addCommand('Alpha/alpha exists?', f'nuke.nodePaste(\"{nk_path(\"alpha_exists.nk\")}\")')\n    expressionMenu.addCommand('Alpha/alpha sum', f'nuke.nodePaste(\"{nk_path(\"alpha_sum.nk\")}\")')\n\n    #PIXEL\n    expressionMenu.addCommand('Pixel/absolute value', f'nuke.nodePaste(\"{nk_path(\"abs.nk\")}\")')\n    expressionMenu.addCommand('Pixel/check negative', f'nuke.nodePaste(\"{nk_path(\"check_negative.nk\")}\")')\n    expressionMenu.addCommand('Pixel/check nan inf pixels', f'nuke.nodePaste(\"{nk_path(\"check_nan_inf.nk\")}\")')\n    expressionMenu.addCommand('Pixel/create nan pixel', f'nuke.nodePaste(\"{nk_path(\"create_nan.nk\")}\")')\n    expressionMenu.addCommand('Pixel/kill nan pixel', f'nuke.nodePaste(\"{nk_path(\"kill_nan.nk\")}\")')\n    expressionMenu.addCommand('Pixel/create inf pixel', f'nuke.nodePaste(\"{nk_path(\"create_inf.nk\")}\")')\n    expressionMenu.addCommand('Pixel/kill inf pixel', f'nuke.nodePaste(\"{nk_path(\"kill_inf.nk\")}\")')\n\n    #TRANSFORM\n    expressionMenu.addCommand('Transform/Coordinates', f'nuke.nodePaste(\"{nk_path(\"coordinates.nk\")}\")')\n    expressionMenu.addCommand('Transform/UV to Vector', f'nuke.nodePaste(\"{nk_path(\"UV_to_Vector.nk\")}\")')\n    expressionMenu.addCommand('Transform/Vector to UV', f'nuke.nodePaste(\"{nk_path(\"Vector_to_UV.nk\")}\")')\n    expressionMenu.addCommand('Transform/transform', f'nuke.nodePaste(\"{nk_path(\"transform.nk\")}\")')\n    expressionMenu.addCommand('Transform/transform advanced', f'nuke.nodePaste(\"{nk_path(\"transform_advanced.nk\")}\")')\n    expressionMenu.addCommand('Transform/twist', f'nuke.nodePaste(\"{nk_path(\"twist.nk\")}\")')\n    expressionMenu.addCommand('Transform/STMap_invert', f'nuke.nodePaste(\"{nk_path(\"STMap_invert.nk\")}\")')\n\n    #3D and DEEP\n    expressionMenu.addCommand('3D and Deep/Normal Pass - Relight', f'nuke.nodePaste(\"{nk_path(\"normalPass_relight.nk\")}\")')\n    expressionMenu.addCommand('3D and Deep/C4x4', f'nuke.nodePaste(\"{nk_path(\"C4x4.nk\")}\")')\n    expressionMenu.addCommand('3D and Deep/Deep to Depth', f'nuke.nodePaste(\"{nk_path(\"deepToDepth.nk\")}\")')\n    expressionMenu.addCommand('3D and Deep/Depth normalize', f'nuke.nodePaste(\"{nk_path(\"depth_normalize.nk\")}\")')\n\n    #KEYING and DESPILL\n    expressionMenu.addCommand('Keying and Despill/despill green', f'nuke.nodePaste(\"{nk_path(\"despill_green.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/despill green list', f'nuke.nodePaste(\"{nk_path(\"despill_green_list.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/despill blue', f'nuke.nodePaste(\"{nk_path(\"despill_blue.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/despill blue list', f'nuke.nodePaste(\"{nk_path(\"despill_blue_list.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/keying', f'nuke.nodePaste(\"{nk_path(\"keying.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/differenceKey', f'nuke.nodePaste(\"{nk_path(\"differenceKey.nk\")}\")')\n    expressionMenu.addCommand('Keying and Despill/IBKGizmo_Expression', f'nuke.nodePaste(\"{nk_path(\"IBKGizmo_Expression.nk\")}\")')\n\n    expressionMenu.addSeparator()\n\n    #INFO\n    expressionMenu.addCommand('Info e Tutorial', \"nuke.tcl('start', 'http://www.andreageremia.it/tutorial_expression_node.html')\", icon=icon_path(\"question_mark.png\"))\n\ndrawMenu.addSeparator()\n\ndrawMenu.addCommand('ConstantPro TL', f\"nuke.createNode('{prefixNST}ConstantPro')\", icon=\"Constant.png\")\ndrawMenu.addCommand('HexColor NW', f\"nuke.createNode('{prefixNST}HexColor')\", icon=\"Constant.png\")\ndrawMenu.addCommand('GradMagic TL', f\"nuke.createNode('{prefixNST}GradMagic')\", icon=\"GradMagic.png\")\ndrawMenu.addCommand('NoiseAdvanced TL', f\"nuke.createNode('{prefixNST}NoiseAdvanced')\", icon=\"Noise.png\")\ndrawMenu.addCommand('RadialAdvanced TL', f\"nuke.createNode('{prefixNST}RadialAdvanced')\", icon=\"Radial.png\")\ndrawMenu.addCommand('UV Map AG', f\"nuke.createNode('{prefixNST}UV_Map')\", icon=\"AG_UVMap.png\")\ndrawMenu.addCommand(\"SpotLight TL\", f\"nuke.createNode('{prefixNST}SpotLight')\", icon=\"Radial.png\")\ndrawMenu.addCommand(\"Rings of Power TL\", f\"nuke.createNode('{prefixNST}Rings_of_Power')\", icon=\"MergeIn.png\")\n\ndrawMenu.addSeparator()\n\ndrawMenu.addCommand('WaterLens MJT', f\"nuke.createNode('{prefixNST}WaterLens')\", icon=\"WaterLens.png\")\ndrawMenu.addCommand(\"Silk MHD\", f\"nuke.createNode('{prefixNST}h_silk')\", icon=\"h_silk.png\")\n\n# Try to add GradientEditor\ntry:\n    import ColorGradientUi\n    drawMenu.addCommand(\"GradientEditor MHD\", f\"nuke.createNode('{prefixNST}h_gradienteditor')\", icon=\"h_gradienteditor.png\")\nexcept ImportError as e:\n    print(f\"Could not load ColorGradientUi from HagbarthTools folder: {e}\")\n    pass\n\ndrawMenu.addSeparator()\n\ndrawMenu.addCommand('VoronoiGradient NW', f\"nuke.createNode('{prefixNST}VoronoiGradient')\", icon=\"GradMagic.png\")\ndrawMenu.addCommand('CellNoise NKPD', f\"nuke.createNode('{prefixNST}CellNoise')\", icon=\"Noise.png\")\ndrawMenu.addCommand('LineTool NKPD', f\"nuke.createNode('{prefixNST}LineTool')\", icon=\"nukepedia_icon.png\")\ndrawMenu.addCommand('PlotScanline NKPD', f\"nuke.createNode('{prefixNST}PlotScanline')\", icon=\"nukepedia_icon.png\")\ndrawMenu.addCommand('SliceTool FR', f\"nuke.createNode('{prefixNST}SliceTool')\", icon=\"Histogram.png\")\ndrawMenu.addCommand('PerspectiveGuide NKPD', f\"nuke.createNode('{prefixNST}PerspectiveGuide')\", icon=\"nukepedia_icon.png\")\n\ndrawMenu.addSeparator()\n\ndrawMenu.addCommand('DasGrain FH', f\"nuke.createNode('{prefixNST}DasGrain')\", icon=\"Grain.png\")\ndrawMenu.addCommand('LumaGrain LUMA', f\"nuke.createNode('{prefixNST}LumaGrain')\", icon=\"nukepedia_icon.png\")\ndrawMenu.addCommand('Grain_Advanced SPIN', f\"nuke.createNode('{prefixNST}Grain_Advanced')\", icon=\"spin_tools.png\")\n\ndrawMenu.addSeparator()\n\ndrawMenu.addCommand(\"X_Tesla XM\", f\"nuke.createNode('{prefixNST}X_Tesla')\", icon=\"X_Tesla.png\")\ndrawMenu.addCommand('SpotFlare MHD', f\"nuke.createNode('{prefixNST}SpotFlare')\", icon=\"Flare.png\")\ndrawMenu.addCommand('FlareSuperStar NKPD', f\"nuke.createNode('{prefixNST}FlareSuperStar')\", icon=\"nukepedia_icon.png\")\ndrawMenu.addCommand('AutoFlare NKPD', f\"NST_helper.filepathCreateNode('{prefixNST}AutoFlare2')\", icon=\"Flare.png\")\ndrawMenu.addCommand(\"BokehBuilder KB\", f\"nuke.createNode('{prefixNST}BokehBuilder')\", icon=\"K_BokehBuilder.png\")\ndrawMenu.addCommand(\"LensEngine KB\", f\"nuke.createNode('{prefixNST}LensEngine')\", icon=\"K_LensEngine.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Time Menu\ntimeMenu = NST_menu.addMenu('Time', icon = 'ToolbarTime.png', index = 30)\n\ntimeMenu.addCommand('apLoop AP', f'nuke.createNode(\"{prefixNST}apLoop\")', icon='apLoop.png')\n\ntimeMenu.addSeparator()\n\ntimeMenu.addCommand('FrameHold Special AG', f\"nuke.createNode('{prefixNST}FrameHoldSpecial')\", icon=\"FrameHold.png\")\ntimeMenu.addCommand('Looper DB', f\"nuke.createNode('{prefixNST}Looper')\", icon=\"nukepedia_icon.png\")\ntimeMenu.addCommand('FrameMedian MHD', f\"nuke.createNode('{prefixNST}FrameMedian')\", icon=\"FrameBlend.png\")\ntimeMenu.addCommand('TimeMachine NKPD', f\"nuke.createNode('{prefixNST}TimeMachine')\", icon=\"nukepedia_icon.png\")\ntimeMenu.addCommand('FrameFiller MJT', f\"nuke.createNode('{prefixNST}FrameFiller')\", icon=\"FrameFiller.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Channel Menu\nchannelMenu = NST_menu.addMenu('Channel', icon = 'ToolbarChannel.png', index = 40)\n\nchannelMenu.addCommand('BinaryAlpha TL', f\"nuke.createNode('{prefixNST}BinaryAlpha')\", icon=\"BumpBoss.png\")\nchannelMenu.addCommand('ChannelCombiner TL', f\"nuke.createNode('{prefixNST}ChannelCombiner')\", icon=\"ChannelMerge.png\")\nchannelMenu.addCommand('ChannelControl TL', f\"nuke.createNode('{prefixNST}ChannelControl')\", icon=\"LayerChannel.png\")\nchannelMenu.addCommand('ChannelCreator TL', f\"nuke.createNode('{prefixNST}ChannelCreator')\", icon=\"Add.png\")\nchannelMenu.addCommand('InjectMatteChannel TL', f\"nuke.createNode('{prefixNST}InjectMatteChannel')\", icon=\"ChannelMerge.png\")\nchannelMenu.addCommand('ID_Extractor TL', f\"nuke.createNode('{prefixNST}ID_Extractor')\", icon=\"Shuffle.png\")\n\nchannelMenu.addSeparator()\n\nchannelMenu.addCommand('streamCart MJT', f\"nuke.createNode('{prefixNST}streamCart')\", icon=\"streamCart.png\")\nchannelMenu.addCommand('renameChannels AG', f\"nuke.createNode('{prefixNST}renameChannels')\", icon=\"nukepedia_icon.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Color Menu\ncolorMenu = NST_menu.addMenu('Color', icon = 'ToolbarColor.png', index = 50)\n\ncolorMenu.addCommand('BlacksMatch TL', f\"nuke.createNode('{prefixNST}BlacksMatch')\", icon=\"BlacksMatch.png\")\ncolorMenu.addCommand('ColorCopy TL', f\"nuke.createNode('{prefixNST}ColorCopy')\", icon=\"Crosstalk.png\")\ncolorMenu.addCommand('Contrast TL', f\"nuke.createNode('{prefixNST}Contrast')\", icon=\"ColorCorrect.png\")\ncolorMenu.addCommand('GradeLayerPass TL', f\"nuke.createNode('{prefixNST}GradeLayerPass')\", icon=\"Grade.png\")\ncolorMenu.addCommand('HighlightSuppress TL', f\"nuke.createNode('{prefixNST}HighlightSuppress')\", icon=\"ColorLookup.png\")\ncolorMenu.addCommand('ShadowMult TL', f\"nuke.createNode('{prefixNST}ShadowMult')\", icon=\"SpotLight.png\")\ncolorMenu.addCommand('WhiteSoftClip TL', f\"nuke.createNode('{prefixNST}WhiteSoftClip')\", icon=\"SoftClip.png\")\ncolorMenu.addCommand('WhiteBalance TL', f\"nuke.createNode('{prefixNST}WhiteBalance')\", icon=\"HueShift.png\")\n\n\ncolorMenu.addSeparator()\n\ncolorMenu.addCommand('apColorSampler AP', f'nuke.createNode(\"{prefixNST}ColorSampler\")', icon='ColorSampler.png')\ncolorMenu.addCommand('apVignette AP', f'nuke.createNode(\"{prefixNST}apVignette\")', icon='apeVignette.png')\ncolorMenu.addCommand('GammaPlus MJT', f\"nuke.createNode('{prefixNST}GammaPlus')\", icon=\"GammaPlus.png\")\ncolorMenu.addCommand('MonochromePlus CF', f\"nuke.createNode('{prefixNST}MonochromePlus')\", icon=\"Saturation.png\")\ncolorMenu.addCommand('aeRelight2D AE', f\"nuke.createNode('{prefixNST}aeRelight2D')\", icon=\"ReLight.png\")\n\ncolorMenu.addSeparator()\n\ncolorMenu.addCommand('Suppress_RGBCMY SPIN', f'nuke.createNode(\"{prefixNST}Suppress_RGBCMY\")', icon='spin_tools.png')\ncolorMenu.addCommand('BiasedSaturation NKPD', f\"nuke.createNode('{prefixNST}BiasedSaturation')\", icon=\"Saturation.png\")\ncolorMenu.addCommand('HSL_Tool NKPD', f\"nuke.createNode('{prefixNST}HSL_Tool')\", icon=\"HSVTool.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Filter Menu\n\nfilterMenu = NST_menu.addMenu('Filter', icon = 'ToolbarFilter.png', index = 60)\n\nglowMenu = filterMenu.addMenu(\"Glows\", icon=\"Glow.png\")\nglowMenu.addCommand('apGlow AP', f'nuke.createNode(\"{prefixNST}apeGlow\")', icon='apGlow.png')\nglowMenu.addCommand('ExponGlow TL', f'nuke.createNode(\"{prefixNST}ExponGlow\")', icon='Glow.png')\nglowMenu.addCommand('Glow_Exponential SPIN', f'nuke.createNode(\"{prefixNST}Glow_Exponential\")', icon=\"spin_tools.png\")\nglowMenu.addCommand('bm_OpticalGlow BM', f\"nuke.createNode('{prefixNST}bm_OpticalGlow')\", icon='bm_OpticalGlow_icon.png')\n\nfilterMenu.addSeparator()\n\nBlurMenu = filterMenu.addMenu(\"Blurs\", icon=\"Median.png\")\n\nBlurMenu.addCommand('ExponBlurSimple TL', f\"nuke.createNode('{prefixNST}ExponBlurSimple')\", icon=\"Glow.png\")\nBlurMenu.addCommand('DirectionalBlur TL', f\"nuke.createNode('{prefixNST}DirectionalBlur')\", icon=\"DirBlur.png\")\nBlurMenu.addCommand('MotionBlurPaint AG', f\"nuke.createNode('{prefixNST}MotionBlurPaint')\", icon=\"MotionBlur2D.png\")\nBlurMenu.addCommand('iBlur NKPD', f\"nuke.createNode('{prefixNST}iBlurU')\", icon=\"Blur.png\")\nBlurMenu.addCommand(\"WaveletBlur MHD\", f\"nuke.createNode('{prefixNST}WaveletBlur')\", icon=\"h_tools.png\")\n\nfilterMenu.addSeparator()\n\nEdgesMenu = filterMenu.addMenu(\"Edges\", icon=\"FilterErode.png\")\nEdgesMenu.addCommand('apEdgePush AP', f'nuke.createNode(\"{prefixNST}apEdgePush\")', icon='apEdgePush.png')\nEdgesMenu.addCommand('apEdgeCrush AP', f'nuke.createNode(\"{prefixNST}apEdgeCrush\")', icon='Dither.png')\nEdgesMenu.addCommand('EdgeDetectAlias TL', f\"nuke.createNode('{prefixNST}EdgeDetectAlias')\", icon=\"EdgeDetect.png\")\nEdgesMenu.addCommand('AntiAliasingFilter AG', f\"nuke.createNode('{prefixNST}AntiAliasingFilter')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('ErodeSmooth TL', f\"nuke.createNode('{prefixNST}ErodeSmooth')\", icon=\"FilterErode.png\")\nEdgesMenu.addCommand('iErode PP', f\"nuke.createNode('{prefixNST}iErode')\", icon=\"FilterErode.png\")\nEdgesMenu.addCommand('Edge_RimLight AG', f\"nuke.createNode('{prefixNST}Edge_RimLight')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('EdgeDetectPRO AG', f\"nuke.createNode('{prefixNST}EdgeDetectPRO')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('Erode_Fine SPIN', f\"nuke.createNode('{prefixNST}Erode_Fine')\", icon=\"spin_tools.png\")\nEdgesMenu.addCommand('Edge_Expand SPIN', f\"nuke.createNode('{prefixNST}Edge_Expand')\", icon=\"spin_tools.png\")\nEdgesMenu.addCommand('Edge RB', f\"nuke.createNode('{prefixNST}Edge')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('KillOutline NKPD', f\"nuke.createNode('{prefixNST}KillOutline')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('ColorSmear NKPD', f\"nuke.createNode('{prefixNST}ColorSmear')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('EdgeFromAlpha FR', f\"nuke.createNode('{prefixNST}EdgeFromAlpha')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('VectorExtendEdge NKPD', f\"nuke.createNode('{prefixNST}VectorExtendEdge')\", icon=\"nukepedia_icon.png\")\nEdgesMenu.addCommand('GuidedBlur RP', f\"nuke.createNode('{prefixNST}GuidedBlur')\", icon=\"EdgeBlur.png\")\nEdgesMenu.addSeparator()\nEdgesMenu.addCommand('FractalBlur NKPD', f\"nuke.createNode('{prefixNST}FractalBlur')\", icon=\"nukepedia_icon.png\")\n\nfilterMenu.addSeparator()\n\ndistortMenu = filterMenu.addMenu(\"Distortions\", icon=\"IDistort.png\")\ndistortMenu.addCommand('Glass FR', f\"nuke.createNode('{prefixNST}Glass')\", icon=\"nukepedia_icon.png\")\ndistortMenu.addCommand('HeatWave DB', f\"nuke.createNode('{prefixNST}HeatWave')\", icon=\"HeatWave_Icon.png\")\ndistortMenu.addCommand(\"X_Distort XM\", f\"nuke.createNode('{prefixNST}X_Distort')\", icon=\"X_Distort.png\")\ndistortMenu.addCommand('FastComplexityDistort MHD', f\"nuke.createNode('{prefixNST}FastComplexityDistort')\", icon=\"IDistort.png\")\n\nfilterMenu.addSeparator()\n\nX_ToolsMenu = filterMenu.addMenu(\"X_Tools XM\", icon=\"X_Tools.png\")\nX_ToolsMenu.addCommand(\"X_Aton_Volumetrics XM\", f\"nuke.createNode('{prefixNST}X_Aton_Volumetrics')\", icon=\"X_Aton.png\")\nX_ToolsMenu.addCommand(\"X_Denoise XM\", f\"nuke.createNode('{prefixNST}X_Denoise')\", icon=\"X_Denoise.png\")\nX_ToolsMenu.addCommand(\"X_Sharpen XM\", f\"nuke.createNode('{prefixNST}X_Sharpen')\", icon=\"X_Sharpen.png\")\nX_ToolsMenu.addCommand(\"X_Soften XM\", f\"nuke.createNode('{prefixNST}X_Soften')\", icon=\"X_Soften.png\")\n\nfilterMenu.addSeparator()\n\nfilterMenu.addCommand('BeautifulSkin TL', f\"nuke.createNode('{prefixNST}BeautifulSkin')\", icon=\"Median.png\")\nfilterMenu.addCommand('BlacksExpon TL', f\"nuke.createNode('{prefixNST}BlacksExpon')\", icon=\"Toe.png\")\nfilterMenu.addCommand('aeShadows AE', f\"nuke.createNode('{prefixNST}aeShadows')\", icon=\"aeShadows_icon.png\")\nfilterMenu.addCommand('Halation TL', f\"nuke.createNode('{prefixNST}Halation')\", icon=\"EdgeBlur.png\")\nfilterMenu.addCommand('HighPass TL', f\"nuke.createNode('{prefixNST}HighPass')\", icon=\"Invert.png\")\nfilterMenu.addCommand('Diffusion TL', f\"nuke.createNode('{prefixNST}Diffusion')\", icon=\"Spark.png\")\n\nfilterMenu.addSeparator()\n\nfilterMenu.addCommand('LightWrapPro TL', f\"nuke.createNode('{prefixNST}LightWrapPro')\", icon=\"LightWrap.png\")\nfilterMenu.addCommand('bm_OpticalLightwrap BM', f\"nuke.createNode('{prefixNST}bm_OpticalLightwrap')\", icon=\"bm_OpticalLightwrap_icon.png\")\n\nfilterMenu.addSeparator()\n\nfilterMenu.addCommand('iConvolve AP', f'nuke.createNode(\"{prefixNST}iConvolve\")', icon='ap_tools.png')\nfilterMenu.addCommand('ConvolutionMatrix AG', f'nuke.createNode(\"{prefixNST}ConvolutionMatrix\")', icon=\"ColorMatrix.png\")\n\n#Add apChroma submenu\napChromaMenu = filterMenu.addMenu(\"apChroma Tools AP\", icon=\"apChroma.png\")\napChromaMenu.addCommand('apChroma AP', f'nuke.createNode(\"{prefixNST}apChroma\")', icon='apChroma.png')\napChromaMenu.addCommand('apChromaMerge AP', f'nuke.createNode(\"{prefixNST}apChromaMergeNew\")', icon='apChroma.png')\napChromaMenu.addCommand('apChromaBlur AP', f'nuke.createNode(\"{prefixNST}apChromaBlurNew\")', icon='apChroma.png')\napChromaMenu.addCommand('apChromaTransform AP', f'nuke.createNode(\"{prefixNST}apChromaTransformNew\")', icon='apChroma.png')\napChromaMenu.addCommand('apChromaUnpremult AP', f'nuke.createNode(\"{prefixNST}apChromaUnpremult\")', icon='apChroma.png')\napChromaMenu.addCommand('apChromaPremult AP', f'nuke.createNode(\"{prefixNST}apChromaPremult\")', icon='apChroma.png')\n\nfilterMenu.addSeparator()\n\nfilterMenu.addCommand('Chromatik SPIN', f\"nuke.createNode('{prefixNST}Chromatik')\", icon='spin_tools.png')\nfilterMenu.addCommand('ChromaticAberration fxT', f\"nuke.createNode('{prefixNST}fxT_ChromaticAberration')\", icon='ColorLookup.png')\nfilterMenu.addCommand(\"ChromaSmear LJ\", f\"nuke.createNode('{prefixNST}ChromaSmear')\", icon=\"ColorLookup.png\")\n\nfilterMenu.addSeparator()\n\nfilterMenu.addCommand('CatsEyeDefocus NKPD', f\"nuke.createNode('{prefixNST}CatsEyeDefocus')\", icon=\"nukepedia_icon.png\")\nfilterMenu.addCommand('DefocusSwirlyBokeh NKPD', f\"nuke.createNode('{prefixNST}DefocusSwirlyBokeh')\", icon=\"nukepedia_icon.png\")\nfilterMenu.addCommand('deHaze NKPD', f\"nuke.createNode('{prefixNST}deHaze')\", icon=\"nukepedia_icon.png\")\nfilterMenu.addCommand('RankFilter JP', f\"nuke.createNode('{prefixNST}RankFilter')\", icon=\"Median.png\")\nfilterMenu.addCommand('RadialDilate CF', f\"nuke.createNode('{prefixNST}RadialDilate')\", icon=\"ErodeFast.png\")\nfilterMenu.addCommand('DeflickerVelocity NKPD', f\"nuke.createNode('{prefixNST}DeflickerVelocity')\", icon=\"nukepedia_icon.png\")\nfilterMenu.addCommand('FillSampler NKPD', f\"nuke.createNode('{prefixNST}FillSampler')\", icon=\"nukepedia_icon.png\")\nfilterMenu.addCommand('MECfiller NKPD', f\"nuke.createNode('{prefixNST}MECfiller')\", icon=\"nukepedia_icon.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Keyer Menu\nkeyerMenu = NST_menu.addMenu('Keyer', icon = 'ToolbarKeyer.png', index = 70)\n\nkeyerMenu.addCommand('apDespill AP', f'nuke.createNode(\"{prefixNST}apDespill\")', icon='apDespill.png')\nkeyerMenu.addCommand('SpillCorrect SPIN', f\"nuke.createNode('{prefixNST}Spill_Correct')\", icon='spin_tools.png')\nkeyerMenu.addCommand('DespillToColor NKPD', f\"nuke.createNode('{prefixNST}DespillToColor')\", icon=\"nukepedia_icon.png\")\n\nkeyerMenu.addSeparator()\n\nkeyerMenu.addCommand('AdditiveKeyerPro TL', f\"nuke.createNode('{prefixNST}AdditiveKeyerPro')\", icon=\"Bilateral.png\")\nkeyerMenu.addCommand('apScreenClean AP', f'nuke.createNode(\"{prefixNST}apeScreenClean\")', icon='apScreenClean.png')\nkeyerMenu.addCommand('apScreenGrow AP', f'nuke.createNode(\"{prefixNST}apeScreenGrow\")', icon='apScreenGrow.png')\n\nkeyerMenu.addSeparator()\n\nkeyerMenu.addCommand('KeyChew NKPD', f\"nuke.createNode('{prefixNST}KeyChew')\", icon=\"Keyer.png\")\nkeyerMenu.addCommand('LumaKeyer DR', f\"nuke.createNode('{prefixNST}LumaKeyer')\", icon=\"Keyer.png\")\nkeyerMenu.addCommand('PointCloudKeyer IS', f\"nuke.createNode('{prefixNST}PointCloudKeyer')\", icon=\"PointCloudGenerator.png\")\nkeyerMenu.addCommand('SkyMatte CF', f\"nuke.createNode('{prefixNST}SkyMatte')\", icon=\"nukepedia_icon.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Merge Menu\nmergeMenu = NST_menu.addMenu('Merge', icon = 'ToolbarMerge.png', index = 80)\n\nmergeMenu.addCommand('ContactSheetAuto TL', f\"nuke.createNode('{prefixNST}ContactSheetAuto')\", icon=\"ContactSheet.png\")\nmergeMenu.addCommand('KeymixBBox TL', f\"nuke.createNode('{prefixNST}KeymixBBox')\", icon=\"Keymix.png\")\nmergeMenu.addCommand('MergeAtmos TL', f\"nuke.createNode('{prefixNST}MergeAtmos')\", icon=\"PointCloudMesh.png\")\nmergeMenu.addCommand('MergeBlend TL', f\"nuke.createNode('{prefixNST}MergeBlend')\", icon=\"Dissolve.png\")\n\nmergeMenu.addSeparator()\n\nmergeMenu.addCommand('MergeAll AP', f\"nuke.createNode('{prefixNST}MergeAll')\", icon=\"Merge.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Transform Menu\ntransformMenu = NST_menu.addMenu('Transform', icon = 'ToolbarTransform.png', index = 90)\n\n# Add Vector Tools SubMenu\nVMTmenu = transformMenu.addMenu('Vector Math Tools VM', icon = 'Math.png')\n\nVMT_mathMenu = VMTmenu.addMenu('Math', icon = 'Math.png')\nVMT_mathAxisMenu = VMT_mathMenu.addMenu('Axis', icon = 'Axis.png')\nVMT_mathMatrixFourMenu = VMT_mathMenu.addMenu('Matrix4', icon = 'Matrix4.png')\nVMT_mathVectorTwoMenu = VMT_mathMenu.addMenu('Vector2', icon = 'Vector2.png')\nVMT_mathVectorThreeMenu = VMT_mathMenu.addMenu('Vector3', icon = 'Vector3.png')\n\nVMT_mathAxisMenu.addCommand('Invert Axis', f\"nuke.createNode('{prefixNST}InvertAxis')\", icon = 'Axis.png')\nVMT_mathAxisMenu.addCommand('Zero Axis', f\"nuke.createNode('{prefixNST}ZeroAxis')\", icon = 'Axis.png')\n\nVMT_mathMatrixFourMenu.addCommand('Invert Matrix4', f\"nuke.createNode('{prefixNST}InvertMatrix4')\", icon = 'InvertMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Product Matrix4', f\"nuke.createNode('{prefixNST}ProductMatrix4')\", icon = 'ProductMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Rotate Matrix4', f\"nuke.createNode('{prefixNST}RotateMatrix4')\", icon = 'RotateMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Scale Matrix4', f\"nuke.createNode('{prefixNST}ScaleMatrix4')\", icon = 'ScaleMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Transform Matrix4', f\"nuke.createNode('{prefixNST}TransformMatrix4')\", icon = 'TransformMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Translate Matrix4', f\"nuke.createNode('{prefixNST}TranslateMatrix4')\", icon = 'TranslateMatrix4.png')\nVMT_mathMatrixFourMenu.addCommand('Transpose Matrix4', f\"nuke.createNode('{prefixNST}TransposeMatrix4')\", icon = 'TransposeMatrix4.png')\n\nVMT_mathVectorTwoMenu.addCommand('Cross Product Vector2', f\"nuke.createNode('{prefixNST}CrossProductVector2')\", icon = 'CrossProductVector3.png')\nVMT_mathVectorTwoMenu.addCommand('Dot Product Vector2', f\"nuke.createNode('{prefixNST}DotProductVector2')\", icon = 'DotProductVector3.png')\nVMT_mathVectorTwoMenu.addCommand('Magnitude Vector2', f\"nuke.createNode('{prefixNST}MagnitudeVector2')\", icon = 'MagnitudeVector3.png')\nVMT_mathVectorTwoMenu.addCommand('Normalize Vector2', f\"nuke.createNode('{prefixNST}NormalizeVector2')\", icon = 'NormalizeVector3.png')\nVMT_mathVectorTwoMenu.addCommand('Rotate Vector2', f\"nuke.createNode('{prefixNST}RotateVector2')\", icon = 'RotateVector3.png')\nVMT_mathVectorTwoMenu.addCommand('Transform Vector2', f\"nuke.createNode('{prefixNST}TransformVector2')\", icon = 'TransformVector3.png')\n\nVMT_mathVectorThreeMenu.addCommand('Cross Product Vector3', f\"nuke.createNode('{prefixNST}CrossProductVector3')\", icon = 'CrossProductVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Dot Product Vector3', f\"nuke.createNode('{prefixNST}DotProductVector3')\", icon = 'DotProductVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Magnitude Vector3', f\"nuke.createNode('{prefixNST}MagnitudeVector3')\", icon = 'MagnitudeVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Multiply Vector3 Matrix3', f\"nuke.createNode('{prefixNST}MultiplyVector3Matrix3')\", icon = 'ProductVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Normalize Vector3', f\"nuke.createNode('{prefixNST}NormalizeVector3')\", icon = 'NormalizeVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Rotate Vector3', f\"nuke.createNode('{prefixNST}RotateVector3')\", icon = 'RotateVector3.png')\nVMT_mathVectorThreeMenu.addCommand('Transform Vector3', f\"nuke.createNode('{prefixNST}TransformVector3')\", icon = 'TransformVector3.png')\n\nVMT_generateMenu = VMTmenu.addMenu('Generate', icon = 'IdentityMatrix4.png')\nVMT_generateMenu.addCommand('Generate Matrix4', f\"nuke.createNode('{prefixNST}GenerateMatrix4')\", icon = 'IdentityMatrix4.png')\nVMT_generateMenu.addCommand('Generate STMap', f\"nuke.createNode('{prefixNST}GenerateSTMap')\", icon = 'AG_UVMap.png')\n\nVMT_convertMenu = VMTmenu.addMenu('Convert', icon = 'ProductVector3.png')\nVMT_convertMenu.addCommand('Luma To Vector3', f\"nuke.createNode('{prefixNST}LumaToVector3')\", icon = 'vectorToolsBW.png')\nVMT_convertMenu.addCommand('STMap To Vector2', f\"nuke.createNode('{prefixNST}STMapToVector2')\", icon = 'Vector2.png')\nVMT_convertMenu.addCommand('Vector2 To STMap', f\"nuke.createNode('{prefixNST}Vector2ToSTMap')\", icon = 'AG_UVMap.png')\nVMT_convertMenu.addCommand('Vector3 To Matrix4', f\"nuke.createNode('{prefixNST}Vector3ToMatrix4')\", icon = 'ProductVector3.png')\n\ntransformMenu.addCommand('vector3DMathExpression EL', f\"nuke.createNode('{prefixNST}vector3DMathExpression')\", icon = 'vectorTools.png')\ntransformMenu.addCommand('Vectors_Direction EL', f\"nuke.createNode('{prefixNST}Vectors_Direction')\", icon = 'vectorTools.png')\ntransformMenu.addCommand('Vectors_to_Degrees EL', f\"nuke.createNode('{prefixNST}Vectors_to_Degrees')\", icon = 'vectorTools.png')\n\n# Add VectorTracker python file\ntry:\n    nuke.load(f'{prefixNST}VectorTracker.py')\n    transformMenu.addCommand('VectorTracker NKPD', f\"nuke.createNode('{prefixNST}VectorTracker.gizmo')\", icon = 'vectorTools.png')\nexcept RuntimeError as e:\n    print(f\"Could not load VectorTracker.py: {e}\")\n    pass\n\ntransformMenu.addSeparator()\n\n\ntransformMenu.addCommand('AutoCropTool TL', f\"nuke.createNode('{prefixNST}AutoCropTool')\", icon=\"AutoCrop.png\")\ntransformMenu.addCommand('BBoxToFormat TL', f\"nuke.createNode('{prefixNST}BBoxToFormat')\", icon=\"Rectangle.png\")\ntransformMenu.addCommand('ImagePlane3D TL', f\"nuke.createNode('{prefixNST}ImagePlane3D')\", icon=\"Card.png\")\ntransformMenu.addCommand('Matrix_Inverse TL', f\"nuke.createNode('{prefixNST}Matrix4x4_Inverse')\", icon=\"ColorMatrix.png\")\ntransformMenu.addCommand('Matrix4x4Math TL', f\"nuke.createNode('{prefixNST}Matrix4x4Math')\", icon=\"ColorMath.png\")\ntransformMenu.addCommand('MirrorBorder TL', f\"nuke.createNode('{prefixNST}MirrorBorder')\", icon=\"AdjBBox.png\")\ntransformMenu.addCommand('TransformCutOut TL', f\"nuke.createNode('{prefixNST}TransformCutOut')\", icon=\"MergeOut.png\")\ntransformMenu.addCommand('iMorph AP', f\"nuke.createNode('{prefixNST}iMorph')\", icon=\"VectorDistort.png\")\ntransformMenu.addCommand('Symmetry TL', f\"nuke.createNode('{prefixNST}Symmetry')\", icon=\"Convolve.png\")\n\ntransformMenu.addSeparator()\n\ntransformMenu.addCommand('RP_Reformat MJT', f\"nuke.createNode('{prefixNST}RP_Reformat')\", icon='RP_Reformat.png')\ntransformMenu.addCommand('InverseMatrix3x3 MJT', f\"nuke.createNode('{prefixNST}InverseMatrix33')\", icon='iMatrix33.png')\ntransformMenu.addCommand('InverseMatrix4x4 MJT', f\"nuke.createNode('{prefixNST}InverseMatrix44')\", icon='iMatrix44.png')\n\ntransformMenu.addSeparator()\n\ntry:\n    import NST_cardToTrack\n    transformMenu.addCommand('CardToTrack_v7 AK', f\"nuke.createNode('{prefixNST}CardToTrack')\", icon='Card.png')\nexcept ImportError as e:\n    print(f\"Could not load NST_cardToTrack.py: {e}\")\n    pass\n\ntry:\n    import NST_cardToTrack_v9\n    transformMenu.addCommand('CardToTrack_v9 AK', f\"nuke.createNode('{prefixNST}CardToTrack2')\", icon='Card.png')\nexcept ImportError as e:\n    print(f\"Could not load NST_cardToTrack_v9.py: {e}\")\n    pass\n\ntransformMenu.addCommand('CProject AK', f\"nuke.createNode('{prefixNST}CProject')\", icon='CornerPin.png')\ntransformMenu.addCommand('CProject2 AK', f\"nuke.createNode('{prefixNST}CProject2')\", icon='CornerPin.png')\ntransformMenu.addCommand('TProject AK', f\"nuke.createNode('{prefixNST}TProject')\", icon='Transform.png')\ntransformMenu.addCommand('TProject2 AK', f\"nuke.createNode('{prefixNST}TProject2')\", icon='Transform.png')\n\ntransformMenu.addCommand(\"StickIt MHD\", f\"nuke.createNode('{prefixNST}h_stickit')\", icon=\"h_stickit.png\")\ntransformMenu.addSeparator()\n\ntransformMenu.addCommand('TransformMatrix AG', f\"nuke.createNode('{prefixNST}TransformMatrix')\", icon=\"Transform.png\")\ntransformMenu.addCommand('CornerPin2D_Matrix AG', f\"nuke.createNode('{prefixNST}CornerPin2D_Matrix')\", icon=\"CornerPin.png\")\ntransformMenu.addCommand('RotoPaintTransform AG', f\"nuke.createNode('{prefixNST}RotoPaintTransform')\", icon=\"RotoPaint.png\")\n\ntransformMenu.addSeparator()\n\ntransformMenu.addCommand('IIDistort EL', f\"nuke.createNode('{prefixNST}IIDistort')\", icon=\"nukepedia_icon.png\")\ntransformMenu.addCommand('bm_CameraShake BM', f\"nuke.createNode('{prefixNST}bm_CameraShake')\", icon=\"bm_CameraShake_icon.png\")\ntransformMenu.addCommand('ITransform AE', f\"nuke.createNode('{prefixNST}iTransform_ae')\", icon=\"STMap.png\")\ntransformMenu.addCommand('MorphDissolve SPIN', f\"nuke.createNode('{prefixNST}MorphDissolve')\", icon=\"spin_tools.png\")\ntransformMenu.addCommand('RotoCentroid NKPD', f\"nuke.createNode('{prefixNST}RotoCentroid')\", icon=\"nukepedia_icon.png\")\ntransformMenu.addCommand('STmapInverse NKPD', f\"nuke.createNode('{prefixNST}STmapInverse')\", icon=\"nukepedia_icon.png\")\ntransformMenu.addCommand('TransformMix NKPD', f\"nuke.createNode('{prefixNST}TransformMix')\", icon=\"Transform.png\")\ntransformMenu.addCommand('PlanarProjection NKPD', f\"nuke.createNode('{prefixNST}PlanarProjection')\", icon=\"nukepedia_icon.png\")\ntransformMenu.addCommand('Reconcile3DFast DR', f\"nuke.createNode('{prefixNST}Reconcile3DFast')\", icon=\"Reconcile3D.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create 3D Menu\n\nThreeDMenu = NST_menu.addMenu('3D', icon = 'Toolbar3D.png', index = 100)\n\nThreeDMenu.addCommand('aPCard AP', f'nuke.createNode(\"{prefixNST}aPCard\")', icon='ap_tools.png')\nThreeDMenu.addCommand('DummyCam', f'nuke.createNode(\"{prefixNST}DummyCam\")', icon='DummyCam.png')\n\nThreeDMenu.addSeparator()\n\nThreeDMenu.addCommand('mScatterGeo MJT', f'nuke.createNode(\"{prefixNST}mScatterGeo\")', icon='mScatterGeo.png')\nThreeDMenu.addCommand('GeoToPoints MHD', f\"nuke.createNode('{prefixNST}GeoToPoints')\", icon=\"nukepedia_icon.png\")\nThreeDMenu.addCommand('origami MJT', f'nuke.createNode(\"{prefixNST}origami\")', icon='origami.png')\nThreeDMenu.addCommand('RayDeepAO MJT', f'nuke.createNode(\"{prefixNST}RayDeepAO\")', icon='RayDeepAO.png')\nThreeDMenu.addCommand('SceneDepthCalculator MJT', f'nuke.createNode(\"{prefixNST}SceneDepthCalculator\")', icon='SceneDepthCalculator.png')\nThreeDMenu.addCommand('SSMesh MJT', f'nuke.createNode(\"{prefixNST}SSMesh\")', icon='SSMesh.png')\nThreeDMenu.addCommand('Unify3DCoordinate MJT', f'nuke.createNode(\"{prefixNST}Unify3DCoordinate\")', icon='Unify3DCoordinate.png')\nThreeDMenu.addCommand('UVEditor MJT', f'nuke.createNode(\"{prefixNST}UVEditor\")', icon='UVEditor.png')\n\nThreeDMenu.addSeparator()\n\nThreeDMenu.addCommand('Distance3D NKPD', f\"nuke.createNode('{prefixNST}Distance3D')\", icon=\"nukepedia_icon.png\")\nThreeDMenu.addCommand('DistanceBetween_CS NKPD', f\"nuke.createNode('{prefixNST}DistanceBetween_CS')\", icon=\"nukepedia_icon.png\")\nThreeDMenu.addCommand('Lightning3D EL', f\"nuke.createNode('{prefixNST}Lightning3D')\", icon=\"nukepedia_icon.png\")\nThreeDMenu.addCommand('Noise3DTexture NKPD', f\"nuke.createNode('{prefixNST}Noise3DTexture')\", icon=\"noise3dicon.png\")\nThreeDMenu.addCommand('GodRaysProjector CF', f\"nuke.createNode('{prefixNST}GodRaysProjector')\", icon=\"VolumeRays.png\")\nThreeDMenu.addCommand('MirrorDimension TL', f\"nuke.createNode('{prefixNST}MirrorDimension')\", icon=\"Mirror.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Paricles Menu\n\nparticlesMenu = NST_menu.addMenu('Particles', icon = 'ToolbarParticles.png', index = 110)\n\nparticlesMenu.addCommand('waterSchmutz DR', f\"nuke.createNode('{prefixNST}waterSchmutz')\", icon=\"WaterLens.png\")\nparticlesMenu.addCommand('RainMaker MR', f\"nuke.createNode('{prefixNST}RainMaker')\", icon=\"ParticleDrag.png\")\nparticlesMenu.addCommand('Sparky DB', f\"nuke.createNode('{prefixNST}Sparky')\", icon=\"Sparky.png\")\nparticlesMenu.addCommand('ParticleLights MHD', f\"nuke.createNode('{prefixNST}ParticleLights')\", icon=\"ToolbarParticles.png\")\nparticlesMenu.addCommand('ParticleKiller NKPD', f\"nuke.createNode('{prefixNST}ParticleKiller')\", icon=\"ToolbarParticles.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Deep Menu\n\ndeepMenu = NST_menu.addMenu('Deep', icon = 'ToolbarDeep.png', index = 120)\n\ndeep2VP_suite = deepMenu.addMenu(\"Deep2VP Suite MJT\", icon='Deep2VP.png')\n\ndeep2VP_suite.addCommand('Deep2VP MJT', f\"nuke.createNode('{prefixNST}Deep2VP')\", icon=\"Deep2VP.png\")\ndeep2VP_suite.addCommand('Deep2VPosition MJT', f\"nuke.createNode('{prefixNST}Deep2VPosition')\", icon=\"Deep2VP.png\")\ndeep2VP_suite.addCommand('DVPColorCorrect MJT', f\"nuke.createNode('{prefixNST}DVPColorCorrect')\", icon=\"DVPColorCorrect.png\")\ndeep2VP_suite.addCommand('DVPortal MJT', f\"nuke.createNode('{prefixNST}DVPortal')\", icon=\"DVPortal.png\")\ndeep2VP_suite.addCommand('DVPToImage MJT', f\"nuke.createNode('{prefixNST}DVPToImage')\", icon=\"DVPToImage.png\")\n\ndeep2VP_suite.addSeparator()\n\ndeep2VP_suite.addCommand('DVPfresnel MJT', f\"nuke.createNode('{prefixNST}DVPfresnel')\", icon=\"DVPfresnel.png\")\ndeep2VP_suite.addCommand('DVPrelight MJT', f\"nuke.createNode('{prefixNST}DVPrelight')\", icon=\"DVPrelight.png\")\ndeep2VP_suite.addCommand('DVPrelightPT MJT', f\"nuke.createNode('{prefixNST}DVPrelightPT')\", icon=\"DVPrelightPT.png\")\ndeep2VP_suite.addCommand('DVPscene MJT', f\"nuke.createNode('{prefixNST}DVPscene')\", icon=\"DVPscene.png\")\ndeep2VP_suite.addCommand('DVPsetLight MJT', f\"nuke.createNode('{prefixNST}DVPsetLight')\", icon=\"DVPsetLight.png\")\n\ndeep2VP_suite.addSeparator()\n\ndeep2VP_suite.addCommand('DVPattern MJT', f\"nuke.createNode('{prefixNST}DVPattern')\", icon=\"DVPattern.png\")\ndeep2VP_suite.addCommand('DVPmatte MJT', f\"nuke.createNode('{prefixNST}DVPmatte')\", icon=\"DVPmatte.png\")\ndeep2VP_suite.addCommand('DVProjection MJT', f\"nuke.createNode('{prefixNST}DVProjection')\", icon=\"DVProjection.png\")\n\ndeep2VP_suite.addSeparator()\n\ndeep2VP_suite.addCommand('DVP_ToonShader MJT', f\"nuke.createNode('{prefixNST}DVP_ToonShader')\", icon=\"DVP_ToonShader.png\")\ndeep2VP_suite.addCommand('DVP_Shader MJT', f\"nuke.createNode('{prefixNST}DVP_Shader')\", icon=\"DVP_Shader.png\")\n\ndeepMenu.addSeparator()\n\ndeepMenu.addCommand('DeepBoolean MJT', f\"nuke.createNode('{prefixNST}DeepBoolean')\", icon=\"DeepBoolean.png\")\ndeepMenu.addCommand('DeepFromPosition MJT', f\"nuke.createNode('{prefixNST}DeepFromPosition')\", icon=\"DeepFromPosition.png\")\ndeepMenu.addCommand('DeepSampleCount MJT', f\"nuke.createNode('{prefixNST}DeepSampleCount')\", icon=\"DeepSampleCount.png\")\ndeepMenu.addCommand('DeepSer MJT', f\"nuke.createNode('{prefixNST}DeepSer')\", icon=\"DeepSer.png\")\n\ndeepMenu.addSeparator()\n\ndeepMenu.addCommand('DeepFromDepth AG', f\"nuke.createNode('{prefixNST}DeepFromDepth')\", icon=\"DeepRecolor.png\")\ndeepMenu.addCommand('DeepRecolorMatte TL', f\"nuke.createNode('{prefixNST}DeepRecolorMatte')\", icon=\"DeepRecolor.png\")\n\ndeepMenu.addSeparator()\ndeepMenu.addCommand('Deep Thickness AG', f'nuke.nodePaste(\"{nk_path(\"deepThickness.nk\")}\")')\ndeepMenu.addCommand('DeepMerge_Advanced BM', f\"nuke.createNode('{prefixNST}DeepMerge_Advanced')\", icon=\"DeepMerge.png\")\ndeepMenu.addCommand('DeepCropSoft NKPD', f\"nuke.createNode('{prefixNST}DeepCropSoft')\", icon=\"DeepCrop.png\")\ndeepMenu.addCommand('DeepKeyMix NKPD', f\"nuke.createNode('{prefixNST}DeepKeyMix')\", icon=\"DeepMerge.png\")\ndeepMenu.addCommand('DeepHoldoutSmoother NKPD', f\"nuke.createNode('{prefixNST}DeepHoldoutSmoother')\", icon=\"DeepHoldout.png\")\ndeepMenu.addCommand('DeepCopyBBox NKPD', f\"nuke.createNode('{prefixNST}DeepCopyBBox')\", icon=\"DeepMerge.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create CG Menu\n\ncgMenu = NST_menu.addMenu('CG', icon = 'RenderManShader.png', index = 130)\n\ncgMenu.addCommand('UV Mapper TL', f\"nuke.createNode('{prefixNST}UV_Mapper')\", icon=\"Tile.png\")\n\ncgMenu.addSeparator()\n\nPNZsuite = cgMenu.addMenu('PNZsuite MJT', icon = 'ConvertPNZ.png')\nPNZsuite.addCommand('ConvertPNZ MJT', f'nuke.createNode(\"{prefixNST}ConvertPNZ\")', icon='ConvertPNZ.png')\nPNZsuite.addCommand('P2N MJT', f'nuke.createNode(\"{prefixNST}P2N\")', icon='P2N.png')\nPNZsuite.addCommand('P2Z MJT', f'nuke.createNode(\"{prefixNST}P2Z\")', icon='P2Z.png')\nPNZsuite.addCommand('Z2N MJT', f'nuke.createNode(\"{prefixNST}Z2N\")', icon='Z2N.png')\nPNZsuite.addCommand('Z2P MJT', f'nuke.createNode(\"{prefixNST}Z2P\")', icon='Z2P.png')\n\nPosToolkit = cgMenu.addMenu('PosToolkit MJT', icon = 'PosMatte_MJ.png')\nPosToolkit.addCommand('PosMatte MJT', f'nuke.createNode(\"{prefixNST}PosMatte_MJ\")', icon='PosMatte_MJ.png')\nPosToolkit.addCommand('PosPattern MJT', f'nuke.createNode(\"{prefixNST}PosPattern_MJ\")', icon='PosPattern_MJ.png')\nPosToolkit.addCommand('PosProjection MJT', f'nuke.createNode(\"{prefixNST}PosProjection_MJ\")', icon='PosProjection_MJ.png')\n\ncgMenu.addSeparator()\n\ncgMenu.addCommand('Noise_3D SPIN', f'nuke.createNode(\"{prefixNST}Noise3D_spin\")', icon='spin_tools.png')\ncgMenu.addCommand('Noise4D MHD', f'nuke.nodePaste(\"{nk_path(\"Noise4D.nk\", prefix=True)}\")', icon='Noise.png')\ncgMenu.addCommand('Relight_Simple SPIN', f'nuke.createNode(\"{prefixNST}Relight_Simple\")', icon='spin_tools.png')\ncgMenu.addCommand('ReProject_3D SPIN', f'nuke.createNode(\"{prefixNST}ReProject_3D\")', icon='spin_tools.png')\n\n\ncgMenu.addSeparator()\n\ncgMenu.addCommand('C44Kernel AP', f'nuke.createNode(\"{prefixNST}C44Kernel\")', icon='C44Kernel.png')\ncgMenu.addCommand('apDirLight AP', f'nuke.createNode(\"{prefixNST}apDirLight\")', icon='apDirLight.png')\ncgMenu.addCommand('apFresnel AP', f'nuke.createNode(\"{prefixNST}apFresnel\")', icon='ap_tools.png')\ncgMenu.addCommand('CameraNormals NKPD', f\"nuke.createNode('{prefixNST}CameraNormals')\", icon=\"Camera.png\")\ncgMenu.addCommand('NormalsRotate NKPD', f\"nuke.createNode('{prefixNST}NormalsRotate')\", icon=\"SpotLight.png\")\ncgMenu.addCommand('Relight_bb NKPD', f\"nuke.createNode('{prefixNST}Relight_bb')\", icon=\"SpotLight.png\")\ncgMenu.addCommand('EnvReflect_bb NKPD', f\"nuke.createNode('{prefixNST}EnvReflect_BB')\", icon=\"Sphere.png\")\ncgMenu.addCommand('N_Reflection NKPD', f\"nuke.createNode('{prefixNST}N_Reflection')\", icon=\"Sphere.png\")\ncgMenu.addCommand('aeRefracTHOR AE', f\"nuke.createNode('{prefixNST}aeRefracTHOR')\", icon=\"aeRefracTHOR_icon.png\")\ncgMenu.addCommand('Emission NW', f\"nuke.createNode('{prefixNST}Emission')\", icon=\"Light.png\")\ncgMenu.addCommand('SimpleSSS MHD', f\"nuke.createNode('{prefixNST}SimpleSSS')\", icon=\"Toolbar3D.png\")\n\ncgMenu.addSeparator()\n\ncgMenu.addCommand('aPmatte AP', f'nuke.createNode(\"{prefixNST}aPMatte_v2\")', icon='aPmatte.png')\ncgMenu.addCommand('P_Ramp NKPD', f\"nuke.createNode('{prefixNST}F_P_Ramp')\", icon=\"F_pramp.png\")\ncgMenu.addCommand('P_Project NKPD', f\"nuke.createNode('{prefixNST}F_P_Project')\", icon=\"F_pproject.png\")\ncgMenu.addCommand('Glue_P LS', f\"nuke.createNode('{prefixNST}GlueP')\", icon=\"PosProjection_MJ.png\")\ncgMenu.addCommand('P_Noise_Advanced NKPD', f\"nuke.createNode('{prefixNST}P_Noise_Advanced')\", icon=\"Noise.png\")\n\ncgMenu.addSeparator()\n\ncgMenu.addCommand('LightSwitch TL', f\"nuke.createNode('{prefixNST}LightSwitch')\", icon=\"Switch.png\")\ncgMenu.addCommand('LightSwitchPuppet TL', f'nuke.nodePaste(\"{nk_path(\"LightSwitchPuppet.nk\", prefix=True)}\")', icon=\"Switch.png\")\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Curves Menu\n\ncurvesMenu = NST_menu.addMenu('Curves', icon = 'ParticleCurve.png', index = 140)\n\nwaveMachineMenu = curvesMenu.addMenu(\"Wave Machine FL\", icon='waveMachine.png')\nwaveMachineMenu.addCommand('WaveMaker FL', f\"nuke.createNode('{prefixNST}waveMaker')\", icon=\"waveMaker.png\")\nwaveMachineMenu.addCommand('WaveCustom FL', f\"nuke.createNode('{prefixNST}waveCustom')\", icon=\"waveCustom.png\")\nwaveMachineMenu.addCommand('WaveGrade FL', f\"nuke.createNode('{prefixNST}waveGrade')\", icon=\"waveGrade.png\")\nwaveMachineMenu.addCommand('WaveRetime FL', f\"nuke.createNode('{prefixNST}waveRetime')\", icon=\"waveRetime.png\")\nwaveMachineMenu.addCommand('WaveMerge FL', f\"nuke.createNode('{prefixNST}waveMerge')\", icon=\"waveMerge.png\")\n\ncurvesMenu.addSeparator()\n\ncurvesMenu.addCommand('Randomizer TL', f\"nuke.createNode('{prefixNST}Randomizer')\", icon=\"RenderMan.png\")\ncurvesMenu.addCommand('AnimationCurve AG', f\"nuke.createNode('{prefixNST}AnimationCurve')\", icon=\"nukepedia_icon.png\")\ncurvesMenu.addCommand('bm_CurveRemapper BM', f\"nuke.createNode('{prefixNST}bm_CurveRemapper')\", icon=\"bm_CurveRemapper_icon.png\")\ncurvesMenu.addCommand('bm_NoiseGen BM', f\"nuke.createNode('{prefixNST}bm_NoiseGen')\", icon=\"bm_NoiseGen_icon.png\")\n\n############################################################################################################\n############################################################################################################\n\n# Create Utilities Menu\n\nutilitiesMenu = NST_menu.addMenu('Utilities', icon = 'Modify.png', index = 150)\n\nutilitiesMenu.addCommand('GUI Switch TL', f\"nuke.createNode('{prefixNST}GUI_Switch')\", icon=\"Switch.png\")\nutilitiesMenu.addCommand('NAN INF Killer TL', f\"nuke.createNode('{prefixNST}NAN_INF_Killer')\", icon=\"Assert.png\")\n\nutilitiesMenu.addSeparator()\n\nutilitiesMenu.addCommand('apViewerBlocker AP', f'nuke.createNode(\"{prefixNST}apViewerBlocker\")', icon='ap_tools.png')\nutilitiesMenu.addCommand('Python_and_TCL AG', f'nuke.createNode(\"{prefixNST}Python_and_TCL\")', icon=\"nukepedia_icon.png\")\n\nutilitiesMenu.addCommand('RotoQC NKPD', f\"nuke.createNode('{prefixNST}RotoQC')\", icon=\"Roto.png\")\nutilitiesMenu.addCommand('bm_MatteCheck BM', f\"nuke.createNode('{prefixNST}bm_MatteCheck')\", icon=\"bm_MatteCheck_icon.png\")\n\nutilitiesMenu.addSeparator()\n\nutilitiesMenu.addCommand('viewer_render MJT', f'nuke.createNode(\"{prefixNST}viewer_render\")', icon='viewer_render.png')\nutilitiesMenu.addCommand('NukeZ MJT', f'nuke.createNode(\"{prefixNST}NukeZ\")', icon='NukeZ.png')\nutilitiesMenu.addCommand('Pyclopedia MJT', f'nuke.createNode(\"{prefixNST}Pyclopedia\")', icon='Pyclopedia.png')\n\n\n############################################################################################################\n############################################################################################################\n\n# Create Templates Menu\n\ntemplatesMenu = NST_menu.addMenu('Templates', icon = 'PointsTo3D.png', index = 200)\n\ntemplatesMenu.addCommand('Advanced Keying Template Stamps TL', f'nuke.nodePaste(\"{nk_path(\"AdvancedKeyingTemplate_Stamps.nk\", prefix=True)}\")', icon=\"Keyer.png\")\ntemplatesMenu.addCommand('Advanced Keying Template TL', f'nuke.nodePaste(\"{nk_path(\"AdvancedKeyingTemplate.nk\", prefix=True)}\")', icon=\"Keyer.png\")\ntemplatesMenu.addCommand('STMap Keyer Setup EL', f'nuke.nodePaste(\"{nk_path(\"STMap_Keying_Setup.nk\", prefix=True)}\")', icon=\"HueKeyer.png\")\n\ntemplatesMenu.addSeparator()\n\ngizmoDemoMenu = templatesMenu.addMenu(\"Gizmo Demo Scripts\", icon='Group.png')\n\ngizmoDemoMenu.addCommand('WaterLens Demo MJT', f'NST_helper.filepathCreateNode(\"{nk_path(\"WaterLens_sampleScript.nk\", prefix=True)}\")', icon=\"WaterLens.png\")\ngizmoDemoMenu.addCommand('SSMesh Demo MJT', f'nuke.nodePaste(\"{nk_path(\"SSMesh_demo.nk\", prefix=True)}\")', icon=\"SSMesh.png\")\ngizmoDemoMenu.addCommand('UVEditor Demo MJT', f'nuke.nodePaste(\"{nk_path(\"UVEditor_demo_clean.nk\", prefix=True)}\")', icon=\"UVEditor.png\")\ngizmoDemoMenu.addCommand('Sparky Demo DB', f'nuke.nodePaste(\"{nk_path(\"SparkyExampleScene.nk\", prefix=True)}\")', icon=\"Sparky.png\")\ngizmoDemoMenu.addCommand('ParticleLights Demo MHD', f'nuke.nodePaste(\"{nk_path(\"ParticleLights_ExampleScript.nk\", prefix=True)}\")', icon=\"ToolbarParticles.png\")\ngizmoDemoMenu.addCommand(\"X_Aton Volumetric Demo XM\", f'nuke.nodePaste(\"{nk_path(\"X_Aton_Examples.nk\", prefix=True)}\")', icon=\"X_Aton.png\")\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/C4x4.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nBackdropNode {\n inputs 0\n name BackdropNode7\n tile_color 0xaaaaaa00\n label C4x4\n note_font_size 42\n selected true\n xpos 2847\n ypos -267\n bdwidth 427\n bdheight 322\n}\npush $cut_paste_input\nSphere {\n translate {0 0 -4}\n name Sphere2\n selected true\n xpos 2942\n ypos -177\n}\npush 0\nScanlineRender {\n inputs 2\n conservative_shader_sampling false\n motion_vectors_type distance\n output_shader_vectors true\n P_channel rgb\n name ScanlineRender2\n selected true\n xpos 2942\n ypos -113\n}\nExpression {\n expr0 \"r * Axis1.world_matrix.0 + g * Axis1.world_matrix.1 + b * Axis1.world_matrix.2 + Axis1.world_matrix.3\"\n expr1 \"r * Axis1.world_matrix.4 + g * Axis1.world_matrix.5 + b * Axis1.world_matrix.6 + Axis1.world_matrix.7\"\n expr2 \"r * Axis1.world_matrix.8 + g * Axis1.world_matrix.9 + b * Axis1.world_matrix.10+ Axis1.world_matrix.11\"\n name Expression3\n selected true\n xpos 2942\n ypos -54\n}\nPositionToPoints2 {\n display textured\n render_mode textured\n P_channel rgb\n name PositionToPoints1\n selected true\n xpos 2942\n ypos -4\n}\nAxis2 {\n inputs 0\n rotate {0 32 0}\n name Axis1\n selected true\n xpos 3102\n ypos -95\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/GradientCorner.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nConstant {\n inputs 0\n channels rgb\n name Constant1\n selected true\n xpos 327\n ypos -56\n}\nExpression {\n temp_name0 DownLeftCorner\n temp_expr0 (1-x/width)*(1-y/height)\n temp_name1 DownRightCorner\n temp_expr1 (x/width)*(1-y/height)\n temp_name2 UpRightCorner\n temp_expr2 (x/width)*(y/height)\n temp_name3 UpLeftCorner\n temp_expr3 (1-x/width)*(y/height)\n expr0 DownLeftColor.r*DownLeftCorner+DownRightColor.r*DownRightCorner+UpRightColor.r*UpRightCorner+UpLeftColor.r*UpLeftCorner\n expr1 DownLeftColor.g*DownLeftCorner+DownRightColor.g*DownRightCorner+UpRightColor.g*UpRightCorner+UpLeftColor.g*UpLeftCorner\n expr2 DownLeftColor.b*DownLeftCorner+DownRightColor.b*DownRightCorner+UpRightColor.b*UpRightCorner+UpLeftColor.b*UpLeftCorner\n name GradientCorner\n selected true\n xpos 327\n ypos 16\n addUserKnob {20 User}\n addUserKnob {18 UpLeftColor}\n UpLeftColor {1 0 1}\n addUserKnob {6 UpLeftColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 UpRightColor}\n UpRightColor {0 0 1}\n addUserKnob {6 UpRightColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {18 DownLeftColor}\n DownLeftColor {1 0 0}\n addUserKnob {6 DownLeftColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 DownRightColor}\n DownRightColor {0 1 0}\n addUserKnob {6 DownRightColor_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/IBKGizmo_Expression.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nMergeExpression {\n expr3 (Ab-Ar*rw-Ag*gbw)>=0?1:clamp(1-(Ab-Ar*rw-Ag*gbw)/(Bb-Br*rw-Bg*gbw))\n name MergeExpression5\n tile_color 0xff01\n label \"IBKGizmo\\nBLUE\"\n selected true\n xpos 2219\n ypos 427\n addUserKnob {20 IBKGizmo}\n addUserKnob {26 message l \"<i>Connect B to clean plate, A to fg\"}\n addUserKnob {7 rw l \"red weight\"}\n rw 0.5\n addUserKnob {7 gbw l \"green/blue weight\"}\n gbw 0.5\n}\nMergeExpression {\n inputs 0\n expr3 (Ag-Ar*rw-Ab*gbw)>=0?1:clamp(1-(Ag-Ar*rw-Ab*gbw)/(Bg-Br*rw-Bb*gbw))\n name MergeExpression4\n tile_color 0x990000\n label \"IBKGizmo\\nGREEN\"\n selected true\n xpos 2114\n ypos 428\n addUserKnob {20 IBKGizmo}\n addUserKnob {26 message l \"<i>Connect B to clean plate, A to fg\"}\n addUserKnob {7 rw l \"red weight\"}\n rw 0.5\n addUserKnob {7 gbw l \"green/blue weight\"}\n gbw 0.5\n}\nMergeExpression {\n inputs 0\n expr3 \"screen_Type==0 ? (Ag-Ar*rw-Ab*gbw)>=0?1:clamp(1-(Ag-Ar*rw-Ab*gbw)/(Bg-Br*rw-Bb*gbw)) : (Ab-Ar*rw-Ag*gbw)>=0?1:clamp(1-(Ab-Ar*rw-Ag*gbw)/(Bb-Br*rw-Bg*gbw))\"\n name MergeExpression6\n tile_color 0x990000\n label IBKGizmo\n selected true\n xpos 2163\n ypos 510\n addUserKnob {20 IBKGizmo}\n addUserKnob {4 screen_Type l \"screen type\" M {Green Blue}}\n addUserKnob {26 message l \"<i>Connect B to clean plate, A to fg\"}\n addUserKnob {7 rw l \"red weight\"}\n rw 0.5\n addUserKnob {7 gbw l \"green/blue weight\"}\n gbw 0.5\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Lines_Horizontal.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 thickness\n temp_expr0 1\n temp_name1 wide\n temp_expr1 3\n expr0 \"( cos(y / wide ) + thickness ) / 2\"\n expr1 \"( cos(y / wide ) + thickness ) / 2\"\n expr2 \"( cos(y / wide ) + thickness ) / 2\"\n expr3 \"( cos(y / wide ) + thickness ) / 2\"\n name Lines_Horizontal\n selected true\n xpos 117\n ypos 34\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Lines_Horizontal_Animated.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 cos((y-height)*((y+height)/(size*1000))+(frame*speed))\n expr1 cos((y-height)*((y+height)/(size*1000))+(frame*speed))\n expr2 cos((y-height)*((y+height)/(size*1000))+(frame*speed))\n expr3 cos((y-height)*((y+height)/(size*1000))+(frame*speed))\n name Lines_Horizontal_Animated\n selected true\n xpos 254\n ypos -33\n addUserKnob {20 User}\n addUserKnob {7 size R 0 10}\n size 30\n addUserKnob {7 speed R 0 10}\n speed 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Lines_Vertical.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 thickness\n temp_expr0 1\n temp_name1 wide\n temp_expr1 3\n expr0 \"( sin(x / wide ) + thickness ) / 2\"\n expr1 \"( sin(x / wide ) + thickness ) / 2\"\n expr2 \"( sin(x / wide ) + thickness ) / 2\"\n expr3 \"( sin(x / wide ) + thickness ) / 2\"\n name Lines_Vertical\n selected true\n xpos 140\n ypos 34\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Lines_Vertical_Animated.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 sin((x-width)*((x+width)/(size*1000))+(frame*speed))\n expr1 sin((x-width)*((x+width)/(size*1000))+(frame*speed))\n expr2 sin((x-width)*((x+width)/(size*1000))+(frame*speed))\n expr3 sin((x-width)*((x+width)/(size*1000))+(frame*speed))\n name Lines_Vertical_Animated\n selected true\n xpos 224\n ypos 26\n addUserKnob {20 User}\n addUserKnob {7 size R 0 10}\n size 30\n addUserKnob {7 speed R 0 10}\n speed 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_AdvancedKeyingTemplate.nk",
    "content": "set cut_paste_input [stack 0]\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0x3b4245ff\n label \"Advanced Keying Template\"\n note_font_size 200\n note_font_color 0xffffffff\n selected true\n xpos -6592\n ypos -5899\n bdwidth 8480\n bdheight 9896\n z_order -2\n}\nBackdropNode {\n inputs 0\n name BackdropNode18\n tile_color 0x41354dff\n label \"Util\\nChannels\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -5843\n ypos -4182\n bdwidth 595\n bdheight 3417\n z_order -1\n}\nBackdropNode {\n inputs 0\n name BackdropNode100\n tile_color 0x667c7c00\n label \"BG Element\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 3975\n ypos -4951\n bdwidth 507\n bdheight 401\n}\nBackdropNode {\n inputs 0\n name BackdropNode101\n tile_color 0x374935ff\n label \"Green\\nScreen Footage\"\n note_font_size 112\n selected true\n xpos -3513\n ypos -5551\n bdwidth 1252\n bdheight 795\n}\nBackdropNode {\n inputs 0\n name BackdropNode102\n tile_color 0x5c5539ff\n label \"Edge Matte\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -713\n ypos -3799\n bdwidth 1346\n bdheight 1554\n}\nBackdropNode {\n inputs 0\n name BackdropNode103\n tile_color 0x61454f00\n label Cleanplate\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 756\n ypos -3796\n bdwidth 864\n bdheight 1018\n}\nBackdropNode {\n inputs 0\n name BackdropNode105\n tile_color 0x6b506800\n label \"inject alpha\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3075\n ypos -833\n bdwidth 514\n bdheight 240\n}\nBackdropNode {\n inputs 0\n name BackdropNode106\n tile_color 0x5a3f6200\n label \"inject cleanplate\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3077\n ypos -537\n bdwidth 511\n bdheight 299\n}\nBackdropNode {\n inputs 0\n name BackdropNode107\n tile_color 0x5b7179ff\n label \"optional,\\ngenerally \\nuseful\"\n note_font_size 42\n selected true\n xpos -2119\n ypos -1931\n bdwidth 310\n bdheight 295\n}\nBackdropNode {\n inputs 0\n name BackdropNode109\n tile_color 0x60485e00\n label CC\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3141\n ypos 320\n bdwidth 433\n bdheight 480\n}\nBackdropNode {\n inputs 0\n name BackdropNode110\n tile_color 0x666d6500\n label LightWrap\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3120\n ypos 2648\n bdwidth 541\n bdheight 312\n}\nBackdropNode {\n inputs 0\n name BackdropNode111\n tile_color 0x47633eff\n label \"Additive Keyer\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 3740\n ypos 2726\n bdwidth 770\n bdheight 433\n}\nBackdropNode {\n inputs 0\n name BackdropNode112\n tile_color 0x6a5353ff\n label \"Keep Util Channels\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3508\n ypos -1133\n bdwidth 666\n bdheight 245\n}\nBackdropNode {\n inputs 0\n name BackdropNode113\n tile_color 0x535a6bff\n label \"Comine Despill\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3461\n ypos -1964\n bdwidth 998\n bdheight 509\n}\nBackdropNode {\n inputs 0\n name BackdropNode114\n tile_color 0x454e4d00\n label premult\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3041\n ypos 2353\n bdwidth 160\n bdheight 160\n}\nBackdropNode {\n inputs 0\n name BackdropNode94\n tile_color 0x645c38ff\n label \"BG despill edge blending\"\n note_font_size 62\n note_font_color 0xffffffff\n selected true\n xpos -3278\n ypos 1545\n bdwidth 1211\n bdheight 711\n}\nBackdropNode {\n inputs 0\n name BackdropNode95\n tile_color 0x39525cff\n label \"Core Despill\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -4834\n ypos -3722\n bdwidth 1205\n bdheight 1295\n}\nBackdropNode {\n inputs 0\n name BackdropNode96\n tile_color 0x4b6648ff\n label \"creating GS channel\\nfor review at bottom of key\"\n note_font_size 42\n note_font_color 0xffffffff\n selected true\n xpos -3188\n ypos -4626\n bdwidth 566\n bdheight 331\n}\nBackdropNode {\n inputs 0\n name BackdropNode97\n tile_color 0x472e5500\n label Transforms\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3190\n ypos 919\n bdwidth 478\n bdheight 481\n}\nBackdropNode {\n inputs 0\n name BackdropNode98\n tile_color 0x39525cff\n label \"Core Matte\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1886\n ypos -3783\n bdwidth 1097\n bdheight 1475\n}\nBackdropNode {\n inputs 0\n name BackdropNode99\n tile_color 0x5c5539ff\n label \"Edge Despill\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -3475\n ypos -3743\n bdwidth 1482\n bdheight 1258\n}\npush $cut_paste_input\nDot {\n name Dot1\n label BG_ELEMENT\n note_font_size 41\n selected true\n xpos 4243\n ypos -4663\n}\nDot {\n name Dot4\n label BG\n note_font_size 71\n selected true\n xpos 4243\n ypos 1765\n}\nset N95f7f190 [stack 0]\nDot {\n name Dot6\n note_font_size 41\n selected true\n xpos -2237\n ypos 1765\n}\nset N9680d780 [stack 0]\nDot {\n name Dot7\n label BG\n note_font_size 101\n selected true\n xpos -2237\n ypos 2160\n}\nDot {\n name Dot8\n label BG\n note_font_size 101\n selected true\n xpos -2237\n ypos 2799\n}\nDot {\n name Dot9\n label \"BG input\\n for lightwrap\"\n note_font_size 60\n selected true\n xpos -2790\n ypos 2799\n}\nDot {\n inputs 0\n name Dot2\n label GS_DenoisePlate\n note_font_size 41\n selected true\n xpos -2967\n ypos -5155\n}\nAddChannels {\n channels rgba\n name AddChannels3\n selected true\n xpos -3001\n ypos -5086\n}\nDot {\n name Dot26\n selected true\n xpos -2967\n ypos -4509\n}\nadd_layer {GS GS.red GS.green GS.blue GS.alpha}\nShuffle {\n black red\n white green\n red2 blue\n green2 black\n out2 GS\n name Shuffle33\n label \"\\[value in] --> \\[value out2]\"\n selected true\n xpos -3001\n ypos -4416\n}\nDot {\n name Dot34\n selected true\n xpos -2967\n ypos -4004\n}\nset N96837240 [stack 0]\nDot {\n name Dot38\n selected true\n xpos -1379\n ypos -4004\n}\nset N9683b040 [stack 0]\nDot {\n name Dot46\n selected true\n xpos -115\n ypos -4004\n}\nset N95cb1e90 [stack 0]\nRemove {\n operation keep\n channels rgb\n name Remove30\n selected true\n xpos -149\n ypos -3883\n}\nDot {\n name Dot47\n note_font_size 41\n selected true\n xpos -115\n ypos -3598\n}\nset N95cbd2d0 [stack 0]\nIBKColourV3 {\n name IBKColourV3_1\n selected true\n xpos 11\n ypos -3601\n}\nDot {\n name Dot48\n note_font_size 41\n selected true\n xpos 45\n ypos -3463\n}\nset N95d95140 [stack 0]\nDot {\n name Dot49\n label Cleanplate\n note_font_size 60\n selected true\n xpos 1263\n ypos -3463\n}\nDot {\n name Dot51\n label Cleanplate\n note_font_size 60\n selected true\n xpos 1263\n ypos -1809\n}\nDot {\n name Dot53\n label Cleanplate\n note_font_size 60\n selected true\n xpos 1263\n ypos -330\n}\nadd_layer {cleanplate cleanplate.red cleanplate.green cleanplate.blue cleanplate.alpha}\nShuffle {\n black red\n white green\n red2 blue\n green2 black\n out2 cleanplate\n name Shuffle34\n label \"\\[value in] → \\[value out2]\"\n selected true\n xpos -2765\n ypos -340\n}\npush $N9683b040\nRemove {\n operation keep\n channels rgb\n name Remove31\n selected true\n xpos -1413\n ypos -3883\n}\nPrimatte3 {\n data { 5\n    0 0 0\n    65552\n    0 5\n    30234 30234 30234 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n primEdgedata { 5\n    0 0 0\n    65552\n    0 5\n    30234 30234 30234 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n primBodydata { 5\n    0 0 0\n    65552\n    0 5\n    30234 30234 30234 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n bg_color_selected false\n crop {0 0 {input.width} {input.height}}\n \"Adjust Lighting\" 0\n \"Hybrid Matte\" 0\n \"Fine Tuning\" 0\n name Primatte4\n selected true\n xpos -1413\n ypos -3445\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle35\n tile_color 0xffffffff\n selected true\n xpos -1413\n ypos -3194\n}\nDot {\n name Dot54\n label \"Core\\nMatte\"\n note_font_size 60\n selected true\n xpos -1379\n ypos -2075\n}\nDot {\n name Dot57\n selected true\n xpos -1379\n ypos -1982\n}\nset N94e1af50 [stack 0]\nDot {\n name Dot58\n note_font_size 41\n selected true\n xpos -1379\n ypos -1522\n}\npush $N95d95140\npush $N95cbd2d0\nIBKGizmoV3 {\n inputs 2\n name IBKGizmoV3_1\n xpos -149\n ypos -3466\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle36\n tile_color 0xffffffff\n selected true\n xpos -149\n ypos -3201\n}\nDot {\n name Dot59\n label \"Edge\\nMatte\"\n note_font_size 60\n selected true\n xpos -115\n ypos -1755\n}\nMerge2 {\n inputs 2\n operation screen\n bbox B\n name Merge2\n selected true\n xpos -149\n ypos -1526\n disable true\n}\nDot {\n name Dot60\n label \"Combined\\nMatte\"\n note_font_size 60\n selected true\n xpos -115\n ypos -692\n}\nDot {\n name Dot61\n label \"Combined\\nMatte\"\n note_font_size 60\n selected true\n xpos -2667\n ypos -692\n}\npush $N96837240\nDot {\n name Dot67\n selected true\n xpos -4615\n ypos -4004\n}\nset N9780eca0 [stack 0]\nDot {\n name Dot123\n note_font_size 41\n selected true\n xpos -5664\n ypos -4005\n}\nDot {\n name Dot283\n label \"Keep \\nChannels\"\n note_font_size 60\n selected true\n xpos -5664\n ypos -3697\n}\nDot {\n name Dot284\n note_font_size 41\n selected true\n xpos -5664\n ypos -1004\n}\nDot {\n name Dot285\n label \"Keep \\nChannels\"\n note_font_size 60\n selected true\n xpos -5426\n ypos -1004\n}\nRemove {\n channels rgba\n name Remove32\n selected true\n xpos -3361\n ypos -1007\n}\nDot {\n name Dot286\n note_font_size 41\n selected true\n xpos -3136\n ypos -1003\n}\nset N97873570 [stack 0]\nDot {\n name Dot287\n note_font_size 41\n selected true\n xpos -3136\n ypos -946\n}\npush $N97873570\npush $N94e1af50\nDot {\n name Dot288\n note_font_size 41\n selected true\n xpos -1929\n ypos -1982\n}\nGroup {\n name ExponBlurSimple\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n        \\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n        \\nelif k.name() == \\\"steps\\\":\\n    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        \\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n        \\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('mult').getValue()\\n        \\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, b1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n            b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n            merge.setInput(i if i<2 else i+1, b)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n            \\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n        \\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n        \\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n            \\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n        \\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\n tile_color 0xcc804eff\n label \"(\\[value output2])\"\n note_font \"Verdana Bold Bold Bold Bold\"\n note_font_color 0xffffffff\n selected true\n xpos -1963\n ypos -1731\n addUserKnob {20 ExponBlurSimple}\n addUserKnob {41 channels T Remove1.channels}\n addUserKnob {41 maskChannelMask_1 l area T Multiply1.maskChannelMask}\n addUserKnob {41 inject_1 l inject -STARTLINE T Multiply1.inject}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T Multiply1.invert_mask}\n addUserKnob {41 fringe_1 l fringe -STARTLINE T Multiply1.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n steps 4\n addUserKnob {26 text l \" \" -STARTLINE T \" \"}\n addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n includeOriginal true\n addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n addUserKnob {14 size l Size R -100 100}\n size -3\n addUserKnob {7 mult l Multiplier R 1 5}\n mult -3\n addUserKnob {6 clamp +STARTLINE}\n addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {20 bboxControl l \"BBox Control\" n 1}\n bboxControl 0\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\n safeBBox true\n addUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\n addUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n safetyBBoxMethod percent\n addUserKnob {14 safeBBoxPixels l \"\" -STARTLINE +HIDDEN R 0 400}\n safeBBoxPixels 100\n addUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\n safeBBoxPercent 1.1\n addUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\n addUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n adjustBBoxPercent 1\n addUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n addUserKnob {26 desc l Description: T ExponBlurSimple}\n addUserKnob {26 ver l Version: T v03}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x535e5a00\n  label \"BBox Management\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos -529\n  ypos 492\n  bdwidth 341\n  bdheight 525\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 0\n  ypos -969\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 34\n  ypos -802\n }\nset N95cd3be0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -367\n  ypos -802\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -367\n  ypos 434\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -367\n  ypos 623\n }\nset N95cdf8d0 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -367\n  ypos 675\n }\nset N95ce37d0 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -463\n  ypos 675\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -463\n  ypos 831\n }\npush $N95cd3be0\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 461\n  ypos -802\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 427\n  ypos -718\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 461\n  ypos -597\n }\nset N94866cb0 [stack 0]\n Invert {\n  name Invert1\n  xpos 695\n  ypos -604\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\nset N94f5db20 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 540\n  ypos -543\n }\n NoOp {\n  name Original\n  xpos 506\n  ypos -327\n }\nset N94f37740 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 540\n  ypos 14\n }\n Crop {\n  inputs 0\n  box {{\"!\\[exists parent.input0] ? 0 : input.format.x\"} {\"!\\[exists parent.input0] ? 0 : input.format.y\"} {\"!\\[exists parent.input0] ? 0 : input.format.r\"} {\"!\\[exists parent.input0] ? 0 : input.format.t\"}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 210\n  ypos -750\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 210\n  ypos -724\n }\npush $N95cd3be0\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 83\n  ypos -671\n }\n NoOp {\n  name BBoxInput\n  xpos 83\n  ypos -628\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\npush $N94f37740\n Input {\n  inputs 0\n  name Inputarea\n  xpos 289\n  ypos -638\n  number 2\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 289\n  ypos -580\n }\n Invert {\n  channels rgba\n  name Invert3\n  xpos 289\n  ypos -503\n }\npush $N94f5db20\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 695\n  ypos -512\n }\n NoOp {\n  name Start\n  xpos 695\n  ypos -450\n }\nset N94fce200 [stack 0]\n Blur {\n  size {{(Blur1.size)*(mult)**3} {(Blur1.size)*(mult)**3}}\n  crop false\n  name Blur4\n  label \"\\[value size]\"\n  xpos 995\n  ypos -370\n }\npush $N94fce200\n Blur {\n  size {{(Blur1.size)*(mult)**2} {(Blur1.size)*(mult)**2}}\n  crop false\n  name Blur3\n  label \"\\[value size]\"\n  xpos 895\n  ypos -370\n }\npush 0\npush $N94fce200\n Blur {\n  size {{(Blur1.size)*(mult)**1} {(Blur1.size)*(mult)**1}}\n  crop false\n  name Blur2\n  label \"\\[value size]\"\n  xpos 795\n  ypos -370\n }\npush $N94fce200\n Blur {\n  size {{parent.size.w} {parent.size.h}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos 695\n  ypos -370\n }\n Merge2 {\n  inputs 5+1\n  operation {{mergeNumber.mergeNumber}}\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos -273\n }\n NoOp {\n  name End\n  xpos 695\n  ypos -230\n }\nset N949d9830 [stack 0]\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 585\n  ypos -175\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold Bold Bold Bold Bold\"\n  note_font_color 0xffffffff\n  xpos 585\n  ypos -151\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType {{parent.safetyBBoxMethod}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  overscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N949f3560 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N949f7480 [stack 0]\npush $N949f3560\n  Crop {\n   box {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N949fb360 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N959300f0 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n   shutteroffset centred\n   name Transform1\n   selected true\n   xpos 120\n   ypos 553\n  }\npush $N959300f0\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N949f7480\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N949fb360\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N95f93ca0 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N95f93ca0\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\npush $N949d9830\n Merge2 {\n  inputs 2\n  bbox intersection\n  also_merge all\n  name Merge4\n  xpos 585\n  ypos -127\n }\npush $N949d9830\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos 585\n  ypos -101\n }\npush $N949d9830\n Switch {\n  inputs 2\n  which {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos 695\n  ypos -106\n }\n Grade {\n  channels all\n  whitepoint 5\n  black_clamp false\n  name AverageMult\n  xpos 695\n  ypos -37\n  disable {{\"output2 == 4 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos 10\n  disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n }\n Clamp {\n  name Clamp1\n  selected true\n  xpos 695\n  ypos 50\n  disable {{!parent.clamp}}\n }\n Blur {\n  size {{postBlur} {postBlur}}\n  name BlurOriginal\n  label \"\\[value size]\"\n  xpos 695\n  ypos 102\n }\n Invert {\n  name Invert2\n  xpos 695\n  ypos 144\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\npush $N94866cb0\n Switch {\n  inputs 2\n  which {{\"parent.size == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 427\n  ypos 190\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 455\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 579\n }\nset N94e557a0 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -260\n  ypos 579\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -260\n  ypos 799\n }\npush $N95cdf8d0\n Input {\n  inputs 0\n  name Inputmask\n  xpos 512\n  ypos 322\n  number 1\n }\n Dot {\n  name Dot19\n  label Mask\n  note_font_size 41\n  xpos 546\n  ypos 435\n }\nset N94e652a0 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 436\n  ypos 435\n }\npush $N94e557a0\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeIntersection\n  xpos 402\n  ypos 572\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeUnion\n  xpos 402\n  ypos 610\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot6\n  label \"intersection\\nof (Mask and A) + B\"\n  note_font_size 14\n  note_font_color 0xffffffff\n  xpos 436\n  ypos 770\n }\npush $N94e652a0\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 546\n  ypos 672\n }\npush $N94e557a0\npush $N95ce37d0\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge {{{parent.Remove1.channels}}}\n  name MergeKeymix\n  xpos 0\n  ypos 665\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 34\n  ypos 747\n }\nset N95d27470 [stack 0]\npush $N95ce37d0\n CopyBBox {\n  inputs 2\n  name CopyBBoxUnion\n  xpos -401\n  ypos 743\n  disable {{parent.bbox==0?0:1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxIntersection\n  xpos -401\n  ypos 769\n  disable {{\"parent.bbox==1 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxA\n  xpos -401\n  ypos 795\n  disable {{\"parent.bbox==2 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxB\n  xpos -401\n  ypos 827\n  disable {{\"parent.bbox==3 ? 0 : 1\"}}\n }\n Crop {\n  box {0 0 {parent.width} {parent.height}}\n  crop false\n  name CopyBBoxFormat\n  xpos -401\n  ypos 853\n  disable {{\"parent.bbox==4 ? 0 : 1\"}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset N96b1c1d0 [stack 0]\n Transform {\n  scale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\n  center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n  black_outside false\n  shutteroffset centred\n  name TransformBBoxAdjustPercent\n  xpos -516\n  ypos 898\n }\npush $N96b1c1d0\n AdjBBox {\n  numpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\n  name AdjBBoxPixels\n  xpos -401\n  ypos 901\n }\n Switch {\n  inputs 2\n  which {{adjustBBoxExtra}}\n  name Switch3\n  xpos -401\n  ypos 940\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -367\n  ypos 993\n }\npush $N95d27470\n CopyBBox {\n  inputs 2\n  name CopyBBox\n  xpos 0\n  ypos 989\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 0\n  ypos 1015\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1155\n }\n NoOp {\n  inputs 0\n  name mergeNumber\n  xpos 229\n  ypos -862\n  addUserKnob {20 User}\n  addUserKnob {3 mergeNumber}\n  mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n }\npush $N949d9830\n NoOp {\n  name BBoxResult\n  xpos 585\n  ypos -230\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\nend_group\nDot {\n name Dot289\n note_font_size 41\n selected true\n xpos -1929\n ypos -1575\n}\nDot {\n name Dot290\n label \"Core\\nMatte\"\n note_font_size 60\n selected true\n xpos -2627\n ypos -1575\n}\nDot {\n name Dot291\n note_font_size 41\n selected true\n xpos -2737\n ypos -1575\n}\nset N95af3ff0 [stack 0]\npush $N9780eca0\nRemove {\n operation keep\n channels rgb\n name Remove33\n selected true\n xpos -4649\n ypos -3883\n}\nDot {\n name Dot292\n selected true\n xpos -4615\n ypos -3571\n}\nset N95b033b0 [stack 0]\nDot {\n name Dot293\n selected true\n xpos -4033\n ypos -3571\n}\npush $N95b033b0\nOFXuk.co.thefoundry.keylight.keylight_v201 {\n show \"Final Result\"\n unPreMultiply false\n screenColour {0 1 0}\n screenGain 1\n screenBalance 0.5\n alphaBias {0.5 0.5 0.5}\n despillBias {0.5 0.5 0.5}\n gangBiases true\n preBlur 0\n \"Screen Matte\" 0\n screenClipMin 0\n screenClipMax 1\n screenClipRollback 0\n screenGrowShrink 0\n screenSoftness 0\n screenDespotBlack 0\n screenDespotWhite 0\n screenReplaceMethod \"Soft Colour\"\n screenReplaceColour {0.5 0.5 0.5}\n Tuning 0\n midPoint 0.5\n lowGain 1\n midGain 1\n highGain 1\n \"Inside Mask\" 0\n sourceAlphaHandling Ignore\n insideReplaceMethod \"Soft Colour\"\n insideReplaceColour {0.5 0.5 0.5}\n Crops 0\n SourceXMethod Colour\n SourceYMethod Colour\n SourceEdgeColour 0\n SourceCropL 0\n SourceCropR 1\n SourceCropB 0\n SourceCropT 1\n balanceSet false\n insideComponent None\n outsideComponent None\n cacheBreaker true\n name Keylight4\n selected true\n xpos -4649\n ypos -3444\n}\nDot {\n name Dot294\n selected true\n xpos -4615\n ypos -3053\n}\nset N96ca65b0 [stack 0]\nMerge2 {\n inputs 2\n operation minus\n name Merge3\n selected true\n xpos -4067\n ypos -3057\n}\nSaturation {\n saturation 0\n name Saturation1\n selected true\n xpos -4067\n ypos -3015\n}\nDot {\n name Dot295\n selected true\n xpos -4033\n ypos -2952\n}\nDot {\n name Dot296\n label \"Restore Lum\"\n note_font_size 41\n selected true\n xpos -4488\n ypos -2952\n}\npush $N96ca65b0\nMerge2 {\n inputs 2\n operation plus\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge5\n selected true\n xpos -4649\n ypos -2956\n}\nDot {\n name Dot297\n label \"core \\ndespill\"\n note_font_size 60\n selected true\n xpos -4615\n ypos -2596\n}\nDot {\n name Dot298\n selected true\n xpos -4615\n ypos -1575\n}\nDot {\n name Dot299\n label \"core \\ndespill\"\n note_font_size 60\n selected true\n xpos -3266\n ypos -1575\n}\npush $N95af3ff0\nDot {\n name Dot300\n note_font_size 41\n selected true\n xpos -2737\n ypos -1698\n}\npush $N96837240\nRemove {\n operation keep\n channels rgb\n name Remove34\n selected true\n xpos -3001\n ypos -3883\n}\nDot {\n name Dot301\n selected true\n xpos -2967\n ypos -3618\n}\nset N96cee310 [stack 0]\nDot {\n name Dot302\n selected true\n xpos -2210\n ypos -3618\n}\npush $N96cee310\nOFXuk.co.thefoundry.keylight.keylight_v201 {\n show \"Final Result\"\n unPreMultiply false\n screenColour {0 1 0}\n screenGain 1\n screenBalance 0.5\n alphaBias {0.5 0.5 0.5}\n despillBias {0.5 0.5 0.5}\n gangBiases true\n preBlur 0\n \"Screen Matte\" 0\n screenClipMin 0\n screenClipMax 1\n screenClipRollback 0\n screenGrowShrink 0\n screenSoftness 0\n screenDespotBlack 0\n screenDespotWhite 0\n screenReplaceMethod \"Soft Colour\"\n screenReplaceColour {0.5 0.5 0.5}\n Tuning 0\n midPoint 0.5\n lowGain 1\n midGain 1\n highGain 1\n \"Inside Mask\" 0\n sourceAlphaHandling Ignore\n insideReplaceMethod \"Soft Colour\"\n insideReplaceColour {0.5 0.5 0.5}\n Crops 0\n SourceXMethod Colour\n SourceYMethod Colour\n SourceEdgeColour 0\n SourceCropL 0\n SourceCropR 1\n SourceCropB 0\n SourceCropT 1\n balanceSet false\n insideComponent None\n outsideComponent None\n cacheBreaker true\n name Keylight5\n selected true\n xpos -3001\n ypos -3450\n}\nDot {\n name Dot303\n selected true\n xpos -2967\n ypos -3004\n}\nset N96be3cd0 [stack 0]\nMerge2 {\n inputs 2\n operation minus\n name Merge10\n selected true\n xpos -2244\n ypos -3008\n}\nSaturation {\n saturation 0\n name Saturation2\n selected true\n xpos -2244\n ypos -2959\n}\nClamp {\n channels rgba\n maximum_enable false\n name Clamp3\n selected true\n xpos -2244\n ypos -2933\n}\nDot {\n name Dot304\n label \"despill\\nmatte\"\n note_font_size 60\n selected true\n xpos -2210\n ypos -2841\n}\nset N94dc52f0 [stack 0]\nDot {\n name Dot305\n label \"despill\\nMatte\"\n note_font_size 60\n selected true\n xpos -2210\n ypos -2644\n}\npush $N96be3cd0\nDot {\n name Dot306\n selected true\n xpos -2967\n ypos -2841\n}\nset N94d07a10 [stack 0]\nadd_layer {despill despill.red}\nCopy {\n inputs 2\n from0 rgba.red\n to0 despill.red\n name Copy7\n selected true\n xpos -3001\n ypos -2654\n}\nDot {\n name Dot307\n label \"edge\\ndespill\"\n note_font_size 60\n selected true\n xpos -2967\n ypos -1852\n}\nMultiply {\n inputs 1+1\n channels despill\n value 0\n name Multiply2\n label \"\\[value value]\"\n selected true\n xpos -3001\n ypos -1710\n}\nKeymix {\n inputs 3\n channels rgb\n name Keymix3\n selected true\n xpos -3001\n ypos -1579\n}\nCopy {\n inputs 2\n channels all\n bbox A\n name Copy12\n selected true\n xpos -3001\n ypos -1015\n}\nCopyBBox {\n inputs 2\n name CopyBBox3\n selected true\n xpos -3001\n ypos -950\n}\nCopy {\n inputs 2\n from0 rgba.alpha\n to0 rgba.alpha\n bbox B\n name Copy14\n selected true\n xpos -3001\n ypos -699\n}\nCopy {\n inputs 2\n channels cleanplate\n bbox B\n name Copy15\n selected true\n xpos -3001\n ypos -344\n}\nDot {\n name Dot313\n note_font_size 41\n selected true\n xpos -2967\n ypos 403\n}\nDot {\n name Dot314\n note_font_size 41\n selected true\n xpos -2967\n ypos 864\n}\nDot {\n name Dot315\n note_font_size 41\n selected true\n xpos -2967\n ypos 1138\n}\nDot {\n name Dot316\n note_font_size 41\n selected true\n xpos -2967\n ypos 1439\n}\nDot {\n name Dot317\n selected true\n xpos -2967\n ypos 1685\n}\nset N968f6be0 [stack 0]\nShuffle {\n in despill\n name Shuffle39\n label \"\\[value in]\"\n selected true\n xpos -2689\n ypos 1676\n}\nRemove {\n operation keep\n channels rgba\n name Remove35\n selected true\n xpos -2689\n ypos 1726\n}\nGrade {\n channels rgba\n black_clamp false\n name Grade4\n selected true\n xpos -2689\n ypos 1766\n}\nset N9499f520 [stack 0]\nDot {\n name Dot318\n label \"despill\\nmatte\"\n note_font_size 41\n selected true\n xpos -2655\n ypos 1902\n}\nset N949ab640 [stack 0]\nDot {\n name Dot319\n note_font_size 41\n selected true\n xpos -2822\n ypos 1902\n}\nDot {\n name Dot320\n note_font_size 41\n selected true\n xpos -2822\n ypos 2144\n}\npush $N9680d780\nDot {\n name Dot321\n label BG\n note_font_size 101\n selected true\n xpos -2441\n ypos 1765\n}\nGrade {\n black_clamp false\n name Grade6\n label \"BG Prep\"\n selected true\n xpos -2475\n ypos 1835\n}\nDot {\n name Dot322\n selected true\n xpos -2441\n ypos 1989\n}\npush $N949ab640\nMerge2 {\n inputs 2\n operation multiply\n name Merge36\n selected true\n xpos -2689\n ypos 1985\n}\nShuffle {\n alpha black\n name Shuffle40\n label \"\\[value in]\"\n selected true\n xpos -2689\n ypos 2030\n}\npush $N9499f520\nShuffle {\n green red\n blue red\n alpha red\n name Shuffle41\n label \"\\[value in]\"\n selected true\n xpos -2832\n ypos 1762\n}\nGrade {\n channels rgba\n whitepoint 0.5\n black_clamp false\n name Grade7\n selected true\n xpos -2832\n ypos 1816\n}\npush $N968f6be0\nSaturation {\n inputs 1+1\n name Saturation3\n label \"change if necessary\"\n selected true\n xpos -3001\n ypos 1812\n}\nMerge2 {\n inputs 2\n operation plus\n bbox B\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge49\n selected true\n xpos -3001\n ypos 2036\n}\nGroup {\n inputs 2\n name BlacksMatch\n help \"Choose a black point color or plug an image /constant you wish to be your blackpoint into BlackColor input.\\n\\nUse Mult Range to control how far above the blackpoint color to affect the lows\\n\\nUse the RollOff gamma to add fall off to the bottom of the curve\\n\\nTurn on the preview Plotscan and move the sampler over a region to see what your settings are doing to a linear 0-1 ramp.  This will help you see if you have weird curves, clamping or other funky problems as you adjust settings\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"inputChange\\\":\\n    nsd = nuke.toNode(\\\"SwitchDefault\\\")\\n    n\\[\\\"defaultBlack\\\"].setEnabled(nsd\\[\\\"which\\\"].getValue()==1)\\n\\nif k.name() == \\\"previewPlotScan\\\":\\n    p = n.knob(\\\"previewPlotScan\\\").value()\\n    if p == True:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(True)\\n    else:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(False)\"\n tile_color 0x1c1c1cff\n note_font \"Helvetica Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n selected true\n xpos -3001\n ypos 2141\n addUserKnob {20 BlacksMatch}\n addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 premultInput l \"Premultiplied Input\" +STARTLINE}\n addUserKnob {4 mergeOp l Operation: t \"Plus and Screen do the same thing with our operation, so I only included a hypot between plus/screen and hypot.  Hypot raises the mult by x2 because I thought that gave more pleasising results.  It will probably be a harsher curve (more towards clamp) than the plus/screen result).\" M {Plus/Screen Hypot \"\" \"\"}}\n addUserKnob {18 defaultBlack l \"Default Black\" +DISABLED}\n defaultBlack {0.05 0.05 0.05}\n addUserKnob {6 defaultBlack_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 multBase l \"Mult Low Range\" t \"This is the Multiplier for the top of the \\\"toe\\\" curve.  It is multiplying the BlackPoint color by this number and setting it as the highest point weird the curve will influence the midtones and the highlights\" R 1.5 10}\n multBase 4\n addUserKnob {7 rolloffGamma l \"Rolloff Gamma\" t \"This controls the bottom of the curve, the falloff to where it is bending toward the \\\"cut off point\\\" which is out black color.  A lower value will act more like a clamp and a higher value will act more like a plus.\" R 0.1 1}\n rolloffGamma 0.35\n addUserKnob {4 minVal l \"Min Value is:\" M {\"Toe Result\" \"Clamp Result\" \"\" \"\"}}\n addUserKnob {6 previewPlotScan l \"Preview PlotScan\" t \"Click to overlay a plotscan graph to show you how your black color is influenced by your settings.\" +STARTLINE}\n addUserKnob {12 plotscanSampler l \"PlotScan Sampler\" +HIDDEN}\n plotscanSampler {200 200}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T BlacksMatch}\n addUserKnob {26 ver l Version: T v10}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x556a5000\n  label \"This Creates a \\nPer Channel Key\\nBased on the Blackpoint\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos 991\n  ypos -77\n  bdwidth 314\n  bdheight 421\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  tile_color 0xff\n  label green\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 177\n  ypos 466\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xff\n  label red\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 188\n  ypos 350\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  tile_color 0xff\n  label blue\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 186\n  ypos 570\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  tile_color 0xff\n  label \"min will be \\nblack color\"\n  note_font_size 31\n  note_font_color 0xffffffff\n  xpos 143\n  ypos 733\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 322\n  ypos -550\n }\n Dot {\n  name Dot17\n  xpos 356\n  ypos -418\n }\nset N948771b0 [stack 0]\n AddChannels {\n  channels rgba\n  color 1\n  name AddChannels1\n  xpos 322\n  ypos -365\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 356\n  ypos -288\n }\nset N948826b0 [stack 0]\n Grade {\n  channels rgba\n  white 0\n  multiply 0\n  add {{defaultBlack.r} {defaultBlack.g} {defaultBlack.b} 0}\n  black_clamp false\n  name Grade1\n  label color\n  xpos 922\n  ypos -295\n }\n Input {\n  inputs 0\n  name InputBlackColor\n  xpos 1138\n  ypos -569\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name SwitchDefault\n  xpos 1138\n  ypos -291\n }\n Dot {\n  name Dot26\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1172\n  ypos -212\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1172\n  ypos -151\n }\nset N948a1640 [stack 0]\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos 1631\n  ypos -151\n }\nset N948a5520 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 2140\n  ypos -151\n }\nset N95f75ad0 [stack 0]\n Crop {\n  box {{plotscanSampler.x-2} {plotscanSampler.y-2} {plotscanSampler.x+2} {plotscanSampler.x+2}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 2432\n  ypos -154\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size 16\n  name Blur1\n  label \"\\[value size]\"\n  xpos 2432\n  ypos -130\n }\n Reformat {\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Reformat4\n  xpos 2432\n  ypos -92\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 2466\n  ypos -43\n }\nset N95c0a4d0 [stack 0]\n Dot {\n  name Dot47\n  note_font_size 41\n  xpos 2917\n  ypos -43\n }\nset N95c0e260 [stack 0]\n Dot {\n  name Dot42\n  label \"Black Color\"\n  note_font_size 41\n  xpos 2917\n  ypos 286\n }\n Dot {\n  name Dot43\n  note_font_size 41\n  xpos 2917\n  ypos 366\n }\nset N95c16020 [stack 0]\n Dot {\n  name Dot44\n  note_font_size 41\n  xpos 2917\n  ypos 480\n }\nset N95c19f00 [stack 0]\n Dot {\n  name Dot45\n  note_font_size 41\n  xpos 2917\n  ypos 588\n }\nset N95c1df60 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 2917\n  ypos 656\n }\nset N95c21d80 [stack 0]\npush $N95c21d80\npush $N95c0e260\n Dot {\n  name Dot11\n  label \"Black Color\"\n  note_font_size 41\n  xpos 3426\n  ypos -43\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply6\n  label \"mult black color\"\n  xpos 3392\n  ypos 77\n }\n Reformat {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  pbb true\n  name Reformat1\n  xpos 2711\n  ypos 61\n }\n Ramp {\n  p0 {0 0}\n  p1 {512 0}\n  name Ramp1\n  xpos 2711\n  ypos 93\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 2745\n  ypos 154\n }\nset N95c4b280 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 3138\n  ypos 154\n }\nset N95c4f010 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide2\n  xpos 3392\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert5\n  xpos 3392\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp4\n  xpos 3392\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value 0.5\n  name Gamma4\n  xpos 3392\n  ypos 223\n }\n Dot {\n  name Dot39\n  xpos 3426\n  ypos 366\n }\nset N95c7daa0 [stack 0]\n Dot {\n  name Dot40\n  xpos 3426\n  ypos 480\n }\nset N95c81830 [stack 0]\n Dot {\n  name Dot41\n  xpos 3426\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle11\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3277\n  ypos 581\n }\npush $N95c1df60\npush $N95c81830\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle12\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3276\n  ypos 473\n }\npush $N95c19f00\npush $N95c7daa0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle13\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3270\n  ypos 359\n }\npush $N95c16020\npush $N95c4f010\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge14\n  label red\n  xpos 3104\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge15\n  label green\n  xpos 3104\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge16\n  label blue\n  xpos 3104\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge18\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 3104\n  ypos 644\n }\n Dot {\n  name Dot46\n  note_font_size 41\n  xpos 3138\n  ypos 742\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor1\n  xpos 2883\n  ypos 739\n }\npush $N95c0a4d0\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply3\n  label \"mult black color\"\n  xpos 2432\n  ypos 63\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply4\n  label \"hypot Extra Mult\\n\"\n  xpos 2432\n  ypos 95\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N95c4b280\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide1\n  xpos 2432\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert2\n  xpos 2432\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp2\n  xpos 2432\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma2\n  xpos 2432\n  ypos 223\n }\n Dot {\n  name Dot6\n  xpos 2466\n  ypos 366\n }\nset N96e4f6c0 [stack 0]\n Dot {\n  name Dot9\n  xpos 2466\n  ypos 480\n }\nset N96e53630 [stack 0]\n Dot {\n  name Dot10\n  xpos 2466\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle4\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 581\n }\npush $N95c1df60\npush $N96e53630\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle5\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 473\n }\npush $N95c19f00\npush $N96e4f6c0\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle6\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2517\n  ypos 359\n }\npush $N95c16020\npush $N95c4b280\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge2\n  label red\n  xpos 2711\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge6\n  label green\n  xpos 2711\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge7\n  label blue\n  xpos 2711\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge8\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 2711\n  ypos 730\n }\n Group {\n  name PlotScanline\n  tile_color 0x9c0000ff\n  xpos 2711\n  ypos 805\n  addUserKnob {20 Controls}\n  addUserKnob {4 mode l \"Sampling method\" M {\"Slice Per Pixel (faster)\" \"Slice Area (slower)\" \"Full Scanline\" \"\" \"\" \"\"}}\n  mode \"Full Scanline\"\n  addUserKnob {6 add2image l \"Add to original\" +STARTLINE}\n  addUserKnob {6 Normalize -STARTLINE}\n  addUserKnob {6 tonemap l \"Tone Map (HDRI)\" -STARTLINE}\n  addUserKnob {6 curve l \"Plot as curve\" +STARTLINE}\n  curve true\n  addUserKnob {3 curveFat l \"Curve Thickness\" -STARTLINE}\n  addUserKnob {3 sa l \"Sample Area\" t \"Disabled when using pr pixel method.\"}\n  sa 1\n  addUserKnob {7 lift l Lift R -1 1}\n  addUserKnob {7 scale l Scale R 0 5}\n  scale 1\n  addUserKnob {26 \"\"}\n  addUserKnob {12 p1 l \"Start Point\"}\n  p1 {376 418}\n  addUserKnob {12 p2 l \"End Point\" -STARTLINE}\n  p2 {428.5 425.5}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 \"\" l \"About \" T \"Plot Scanline v0.4 | theo@euqahuba.com\\nUse P1 to select your scanline and/or you start slice.\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -480\n   ypos 62\n  }\nset N95990dc0 [stack 0]\n  Expression {\n   temp_name0 length\n   temp_expr0 sqrt(r*r+g*g+b*b)\n   expr0 r/length\n   expr1 g/length\n   expr2 b/length\n   name Normalize\n   xpos -480\n   ypos 108\n   disable {{1-parent.Normalize i}}\n  }\n  Expression {\n   expr0 r/(r+1)\n   expr1 g/(g+1)\n   expr2 b/(b+1)\n   name tonamap\n   xpos -480\n   ypos 134\n   disable {{1-parent.tonemap i}}\n  }\nset N959a1140 [stack 0]\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name scanline\n   xpos -302\n   ypos 193\n   addUserKnob {20 User}\n  }\npush $N959a1140\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name Expression_highQuality\n   xpos -515\n   ypos 197\n   addUserKnob {20 User}\n  }\npush $N959a1140\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name perPixel\n   xpos -419\n   ypos 201\n   addUserKnob {20 User}\n  }\n  Switch {\n   inputs 3\n   which {{parent.mode i}}\n   name Switch2\n   xpos -480\n   ypos 253\n  }\n  Matrix {\n   matrix {\n       {0 1 0}\n       {1 -4 1}\n       {0 1 0}\n     }\n   name Matrix2\n   xpos -480\n   ypos 284\n   disable {{-1+parent.curve i x70 1}}\n  }\n  Dilate {\n   size {{parent.curveFat}}\n   name Dilate1\n   xpos -480\n   ypos 326\n   disable {{-1+parent.curve.main}}\n  }\n  Clamp {\n   name Clamp1\n   xpos -480\n   ypos 383\n  }\nset N96e9e8d0 [stack 0]\npush $N95990dc0\n  Dot {\n   name Dot1\n   xpos -556\n   ypos 66\n  }\n  Clamp {\n   maximum 331\n   name Clamp2\n   xpos -590\n   ypos 352\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   bbox intersection\n   name Merge1\n   xpos -590\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   xpos -556\n   ypos 433\n  }\npush $N96e9e8d0\n  Switch {\n   inputs 2\n   which {{parent.add2image i}}\n   name Switch1\n   xpos -480\n   ypos 430\n  }\n  Output {\n   name Output1\n   xpos -480\n   ypos 470\n  }\n end_group\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 2745\n  ypos 857\n }\nset N96ed5110 [stack 0]\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name Shuffle7\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2821\n  ypos 850\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 2821\n  ypos 882\n }\n Dilate {\n  channels rgba\n  size -2\n  name Dilate1\n  xpos 2821\n  ypos 910\n }\n Invert {\n  name Invert3\n  xpos 2821\n  ypos 934\n }\npush $N96ed5110\n Merge2 {\n  inputs 2\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 2711\n  ypos 938\n }\n Group {\n  name BinaryAlpha\n  tile_color 0x2a2a2aff\n  label \"(\\[value an] --> \\[value output1])\"\n  note_font Verdana\n  note_font_color 0xfffff9ff\n  xpos 2711\n  ypos 983\n  addUserKnob {20 BinaryAlpha}\n  addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n  addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n  output1 alpha\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n  addUserKnob {26 ver l Version: T v03}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -398\n   ypos 275\n  }\n  Expression {\n   temp_name0 rgb_an\n   temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n   temp_name1 rgba_an\n   temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n   temp_name2 alpha_an\n   temp_expr2 a!=0?1:0\n   expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n   name Expression\n   xpos -398\n   ypos 341\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle\n   label \"\\[value in]\"\n   xpos -398\n   ypos 367\n   disable {{parent.output1}}\n  }\n  Output {\n   name Output1\n   xpos -398\n   ypos 456\n  }\n end_group\n Reformat {\n  type \"to box\"\n  box_height {{\"\\[exists parent.input0] ? parent.input.height : root.format.height\"}}\n  resize height\n  filter Impulse\n  pbb true\n  name Reformat2\n  xpos 2711\n  ypos 1041\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists parent.input0] ? parent.input.width : root.format.width\"}}\n  box_height {{input.height}}\n  resize none\n  filter Impulse\n  black_outside true\n  pbb true\n  name Reformat3\n  xpos 2711\n  ypos 1081\n }\n Dilate {\n  channels rgba\n  size 1\n  name Dilate2\n  xpos 2711\n  ypos 1121\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 2745\n  ypos 1192\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 864\n  ypos 878\n  number 2\n }\n Dot {\n  name Dot29\n  xpos 898\n  ypos 1015\n }\npush $N948a5520\n Dot {\n  name Dot33\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1631\n  ypos 295\n }\n Dot {\n  name Dot37\n  note_font_size 41\n  xpos 1631\n  ypos 360\n }\nset N947a4230 [stack 0]\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 1631\n  ypos 474\n }\nset N947a8110 [stack 0]\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 1631\n  ypos 582\n }\nset N947abff0 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 1631\n  ypos 674\n }\nset N9470b670 [stack 0]\npush $N9470b670\npush $N95f75ad0\n Multiply {\n  channels rgb\n  value 2\n  name Multiply7\n  label \"mult black color\"\n  xpos 2106\n  ypos 87\n }\npush $N948826b0\n Unpremult {\n  name Unpremult1\n  xpos 322\n  ypos -16\n  disable {{\"! premultInput\"}}\n }\n Dot {\n  name Dot18\n  xpos 356\n  ypos 145\n }\nset N94d7beb0 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 1028\n  ypos 145\n }\nset N94da7bc0 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 1852\n  ypos 145\n }\nset N94d840c0 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide3\n  xpos 2106\n  ypos 142\n }\n Invert {\n  channels rgb\n  name Invert4\n  xpos 2106\n  ypos 166\n }\n Clamp {\n  channels rgb\n  name Clamp3\n  xpos 2106\n  ypos 190\n }\n Gamma {\n  channels rgb\n  value 0.51\n  name Gamma3\n  xpos 2106\n  ypos 214\n }\n Dot {\n  name Dot24\n  xpos 2140\n  ypos 360\n }\nset N94d6c980 [stack 0]\n Dot {\n  name Dot25\n  xpos 2140\n  ypos 474\n }\nset N94d70710 [stack 0]\n Dot {\n  name Dot27\n  xpos 2140\n  ypos 582\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle8\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 575\n }\npush $N947abff0\npush $N94d70710\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle9\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 467\n }\npush $N947a8110\npush $N94d6c980\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle10\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1984\n  ypos 353\n }\npush $N947a4230\npush $N94d840c0\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge11\n  label red\n  xpos 1818\n  ypos 353\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge12\n  label green\n  xpos 1818\n  ypos 467\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge13\n  label blue\n  xpos 1818\n  ypos 575\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge17\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 1818\n  ypos 662\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 1852\n  ypos 760\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor\n  xpos 1597\n  ypos 757\n }\npush $N948a1640\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply1\n  label \"mult black color\"\n  xpos 1138\n  ypos 52\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply2\n  label \"hypot Extra Mult\\n\"\n  xpos 1138\n  ypos 84\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N94da7bc0\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide\n  xpos 1138\n  ypos 194\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 1138\n  ypos 239\n }\n Clamp {\n  channels rgb\n  name Clamp1\n  xpos 1138\n  ypos 263\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma1\n  xpos 1138\n  ypos 287\n }\n Dot {\n  name Dot19\n  xpos 1172\n  ypos 364\n }\nset N95a08d60 [stack 0]\n Dot {\n  name Dot20\n  xpos 1172\n  ypos 478\n }\nset N95a0ccd0 [stack 0]\n Dot {\n  name Dot21\n  xpos 1172\n  ypos 586\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle3\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 579\n }\npush $N948a1640\n Dot {\n  name Dot23\n  xpos 706\n  ypos -151\n }\n Dot {\n  name Dot8\n  label \"Black Color\"\n  note_font_size 41\n  xpos 706\n  ypos 293\n }\nset N95a25fa0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 706\n  ypos 404\n }\nset N95a29e80 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 706\n  ypos 523\n }\npush $N95a0ccd0\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle2\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 471\n }\npush $N95a29e80\npush $N95a08d60\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1016\n  ypos 357\n }\npush $N95a25fa0\npush $N94d7beb0\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge3\n  label red\n  xpos 322\n  ypos 357\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge4\n  label green\n  xpos 322\n  ypos 471\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge5\n  label blue\n  xpos 322\n  ypos 579\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge1\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 322\n  ypos 748\n }\n Premult {\n  name Premult4\n  xpos 322\n  ypos 881\n  disable {{\"! premultInput\"}}\n }\npush $N948771b0\n Dot {\n  name Dot28\n  xpos -146\n  ypos -418\n }\n Dot {\n  name Dot30\n  xpos -146\n  ypos 1015\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix 0.8\n  name MergeKeymix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1012\n }\n Merge2 {\n  inputs 2\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1189\n  disable {{!previewPlotScan}}\n }\n Output {\n  name Output1\n  xpos 322\n  ypos 1395\n }\n NoOp {\n  inputs 0\n  name Settings\n  note_font_size 51\n  xpos 2494\n  ypos -414\n  addUserKnob {20 User}\n  addUserKnob {7 mergeOpNum l \"Merge Op Num\"}\n  mergeOpNum {{\"mergeOp == 0 ? 24 : 13\"}}\n }\nend_group\nPremult {\n name Premult2\n selected true\n xpos -3001\n ypos 2453\n}\nGroup {\n inputs 2\n name LightWrapPro\n help \"Adds exponentially blurred lightwrap\\n\\nAdds a bright highlight wrap and an overall wrap\"\n tile_color 0x1e252eff\n label \"(\\[value outputView])\"\n note_font \"DejaVu Sans Bold Bold Bold\"\n note_font_color 0xb7e6ffff\n selected true\n xpos -3001\n ypos 2790\n disable true\n mapsize {0.15 0.15}\n addUserKnob {20 LightWrapPro}\n addUserKnob {4 outputView l \"Output View\" t \"Chose one to view while adjusting\" M {\"Final Output\" \"Highlight Key\" \"Highlight Wrap\" \"OverAll Wrap\" \"Effect Only\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 premultiplied l \"FG premultiplied\" -STARTLINE}\n premultiplied true\n addUserKnob {26 highlightKeyTitle l \"<b><font color = skyblue>HighLight Key\"}\n addUserKnob {7 blackPt l Black R 0 4}\n blackPt 1\n addUserKnob {7 whitePt l White R 0 4}\n whitePt 2\n addUserKnob {26 wrapHighlightsTitle l \"<b><font color = skyblue>HighLight Wrap\"}\n addUserKnob {6 Mult_Flare_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps l \" Steps\" T ExponGlowWrapHighlight.steps}\n addUserKnob {41 falloffType l Falloff -STARTLINE T ExponGlowWrapHighlight.falloffType}\n addUserKnob {41 size l Size T ExponGlowWrapHighlight.size}\n addUserKnob {7 wrapHighlightAmount l Amount R 0 4}\n wrapHighlightAmount 1\n addUserKnob {26 WrapAllTitle l \"<b><font color=skyblue>Overall Wrap \"}\n addUserKnob {6 WrapAllMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps_1 l \" Steps\" T ExponGlowWrapAll.steps}\n addUserKnob {41 falloffType_1 l Falloff -STARTLINE T ExponGlowWrapAll.falloffType}\n addUserKnob {41 size_1 l Size T ExponGlowWrapAll.size}\n addUserKnob {7 wrapAllAmount l Amount R 0 4}\n wrapAllAmount 1\n addUserKnob {6 removeHighlights l \"Dim Highlights\" +STARTLINE}\n removeHighlights true\n addUserKnob {7 dimHighlightsAmount l \"\" -STARTLINE R 0 3}\n dimHighlightsAmount 1\n addUserKnob {26 blendEdgesTitle l \"<b><font color=skyblue>Blend Edges\"}\n addUserKnob {7 blendEdgesAmount l Amount}\n addUserKnob {6 ColorBleedMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 bleedColorTitle l \"<b><font color=skyblue>Bleed Color\"}\n addUserKnob {7 bleedColorAmount l Amount}\n addUserKnob {7 bleedColorSize l Size R 0.1 4}\n bleedColorSize 1\n addUserKnob {7 bleedColorFalloff_2 l Falloff R 0.2 2}\n bleedColorFalloff_2 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 globalAmount l \"<b><font color=skyblue>Global Amount\"}\n globalAmount 1\n addUserKnob {26 _1 l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T MergeCopyLightWrapPro.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T MergeCopyLightWrapPro.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeCopyLightWrapPro.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeCopyLightWrapPro.fringe}\n addUserKnob {41 mix T MergeCopyLightWrapPro.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"\\n\\n\" T LightWrapPro}\n addUserKnob {26 ver l Version: T v06}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x402f27ff\n  label \"Bleed Color\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos -683\n  ypos 2273\n  bdwidth 1316\n  bdheight 787\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x39464200\n  label \"highlight key\"\n  note_font_size 40\n  note_font_color 0xffffffff\n  xpos 1630\n  ypos 113\n  bdwidth 272\n  bdheight 393\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 1887\n  ypos 3580\n  number 2\n }\n Input {\n  inputs 0\n  name FG\n  xpos -413\n  ypos -318\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -413\n  ypos -150\n }\n Dot {\n  name Dot1\n  xpos -379\n  ypos 375\n }\nset N96a494d0 [stack 0]\n Dot {\n  name Dot7\n  xpos -825\n  ypos 375\n }\n Dot {\n  name Dot46\n  xpos -825\n  ypos 3104\n }\nset N96a51190 [stack 0]\n Dot {\n  name Dot15\n  xpos 915\n  ypos 3107\n }\nset N96a55070 [stack 0]\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 915\n  ypos 3224\n }\nset N96a58f50 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 915\n  ypos 3277\n }\npush $N96a494d0\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 717\n  ypos 378\n }\nset N96a60d50 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 717\n  ypos 550\n }\n Input {\n  inputs 0\n  name BG\n  label \"\\n\"\n  xpos 1702\n  ypos -276\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 1702\n  ypos -145\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 1702\n  ypos -68\n }\n Dot {\n  name Dot3\n  xpos 1736\n  ypos 177\n }\nset N96a7b320 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.blackPt} {parent.whitePt} {range.B} {range.B}}\n  name Keyer2\n  xpos 1702\n  ypos 303\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1736\n  ypos 397\n }\nset N96a88230 [stack 0]\n Premult {\n  name Premult1\n  xpos 1702\n  ypos 452\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 543\n }\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos 1734\n  ypos 746\n }\n Group {\n  name ExponGlowWrapHighlight\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold Bold Bold Bold\"\n  note_font_color 0xffffffff\n  xpos 1700\n  ypos 1012\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 6\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 4\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType smooth1\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N969da970 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {parent.size.h/format.pixel_aspect/height*width}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N969ee270 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N969f21e0 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N969f21e0\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N97a614d0 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N97a614d0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N97a614d0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N97a614d0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N97a614d0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N97a614d0\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   selected true\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 6+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 6\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N969ee270\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N969da970\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N95a55810 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold Bold Bold Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N95a71c40 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N95a75b60 [stack 0]\npush $N95a71c40\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N95a79a40 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N95a83370 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N95a83370\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N95a75b60\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N95a79a40\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N96c17af0 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N96c17af0\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N95a55810\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N969da970\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N969da970\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Grade {\n  channels all\n  white {{wrapHighlightAmount/10}}\n  name FlareAmount\n  xpos 1702\n  ypos 1393\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal3\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 1577\n }\n Dot {\n  name Dot25\n  label \"LIGHT FLARE\"\n  note_font_size 61\n  xpos 1736\n  ypos 1801\n }\nset N94ec7d30 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 1738\n  ypos 2915\n }\nset N94ecbca0 [stack 0]\npush $N96a60d50\npush $N96a7b320\n Dot {\n  name Dot20\n  xpos 1059\n  ypos 179\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 238\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 366\n }\n Dot {\n  name Dot9\n  xpos 1059\n  ypos 725\n }\nset N94eeae20 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 1343\n  ypos 725\n }\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos 1309\n  ypos 823\n }\npush $N94eeae20\n Colorspace {\n  colorspace_out CIE-Yxy\n  name Colorspace4\n  xpos 1188\n  ypos 786\n }\n Expression {\n  inputs 1+1\n  expr0 \"(r*(1+(r/((parent.dimHighlightsAmount+1)**2))) ) / (1+r)\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  expr1 \"(g*(1+(g/((parent.dimHighlightsAmount+1)**2))) ) / (1+g)\"\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 \"(b*(1+(b/((parent.dimHighlightsAmount+1)**2))) ) / (1+b)\"\n  expr3 a\n  name Tonemap_whitepoint\n  xpos 1188\n  ypos 827\n }\n Colorspace {\n  colorspace_in CIE-Yxy\n  name Colorspace3\n  xpos 1188\n  ypos 867\n }\npush $N94eeae20\n Switch {\n  inputs 2\n  which {{removeHighlights}}\n  name Switch4\n  xpos 1025\n  ypos 867\n }\n Group {\n  name ExponGlowWrapAll\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold Bold Bold Bold\"\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 995\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 8\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 10\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType pLinear\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N95b59000 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {parent.size.h/format.pixel_aspect/height*width}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N95b6c900 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N95b70870 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N95b70870\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N95b865f0 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(8**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(8**2))}}\n   crop false\n   name Blur8\n   xpos 1564\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"}}\n   mix {{falloff}}\n   name Multiply8\n   xpos 1564\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(7**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(7**2))}}\n   crop false\n   name Blur7\n   xpos 1464\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"}}\n   mix {{falloff}}\n   name Multiply7\n   xpos 1464\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N95b865f0\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N95b865f0\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 8+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 8\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N95b6c900\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N95b59000\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N96fda100 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold Bold Bold Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N96ff6530 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N96ffa450 [stack 0]\npush $N96ff6530\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N979022b0 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N9790baa0 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N9790baa0\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N96ffa450\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N979022b0\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N97949ca0 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N97949ca0\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N96fda100\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N95b59000\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N95b59000\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Dot {\n  name Dot40\n  note_font_size 41\n  xpos 1059\n  ypos 1277\n }\nset N979a7e40 [stack 0]\n Grade {\n  channels all\n  white {{wrapAllAmount/10}}\n  name GradeBgWrapAmount\n  xpos 1025\n  ypos 1399\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal1\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 1566\n }\n Dot {\n  name Dot37\n  label \"WRAP ALL\"\n  note_font_size 61\n  xpos 1059\n  ypos 1692\n }\nset N979c1ed0 [stack 0]\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 1059\n  ypos 3062\n }\nset N979c5d80 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 1530\n  ypos 3168\n }\n Shuffle {\n  alpha white\n  name Shuffle5\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1530\n  ypos 3216\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge14\n  xpos 1530\n  ypos 3274\n }\npush $N96a58f50\npush $N979c5d80\n Shuffle {\n  alpha white\n  name Shuffle2\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 3158\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge7\n  xpos 1025\n  ypos 3221\n }\npush $N96a55070\npush $N94ecbca0\n Shuffle {\n  alpha white\n  name Shuffle4\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1708\n  ypos 3020\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge13\n  xpos 1708\n  ypos 3104\n }\npush $N96a88230\n Dot {\n  name Dot21\n  xpos 2349\n  ypos 397\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle3\n  tile_color 0xffffffff\n  label alpha\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 2315\n  ypos 496\n }\n Dot {\n  name Dot23\n  xpos 2349\n  ypos 3399\n }\npush $N979a7e40\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 757\n  ypos 1277\n }\nset N969baf30 [stack 0]\n Grade {\n  channels rgba\n  gamma {{parent.bleedColorFalloff_2}}\n  name Grade1\n  selected true\n  xpos 724\n  ypos 2638\n }\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 758\n  ypos 2835\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal2\n  label \"\\[value value]\"\n  xpos 297\n  ypos 2828\n }\npush $N94eeae20\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 438\n  ypos 725\n }\nset N9692b6d0 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 439\n  ypos 802\n }\nset N9692f600 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 334\n  ypos 802\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 334\n  ypos 1201\n }\npush $N9692f600\n Blur {\n  size {{(width/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur6\n  xpos 856\n  ypos 874\n }\npush $N9692f600\n Blur {\n  size {{(width/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur4\n  xpos 743\n  ypos 873\n }\npush $N9692f600\n Blur {\n  size {{(width/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur3\n  xpos 627\n  ypos 874\n }\npush $N9692f600\n Blur {\n  size {{(width/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur2\n  xpos 515\n  ypos 872\n }\npush $N9692f600\n Blur {\n  size {{(width/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur1\n  xpos 404\n  ypos 871\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 941\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 999\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1049\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge12\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1087\n }\n Unpremult {\n  name Unpremult2\n  xpos 404\n  ypos 1111\n }\n Blur {\n  size {{(width/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur5\n  xpos 404\n  ypos 1151\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 404\n  ypos 1198\n }\n Unpremult {\n  name Unpremult5\n  xpos 404\n  ypos 2385\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace1\n  xpos 404\n  ypos 2456\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply5\n  label \"\\[value value]\"\n  xpos 404\n  ypos 2532\n }\npush $N94ec7d30\npush $N979c1ed0\npush $N9692b6d0\n Dot {\n  name Dot10\n  xpos 201\n  ypos 725\n }\n Clamp {\n  minimum 0.001\n  maximum 100\n  name Clamp1\n  xpos 167\n  ypos 996\n }\n Dot {\n  name Dot24\n  xpos 201\n  ypos 1517\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal\n  label \"\\[value value]\"\n  xpos 19\n  ypos 1507\n }\npush $N969baf30\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace6\n  xpos -13\n  ypos 1267\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply4\n  label \"\\[value value]\"\n  xpos -123\n  ypos 1262\n }\npush $N96a494d0\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -413\n  ypos 594\n }\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -407\n  ypos 1094\n  disable {{premultiplied*-1+1 x1 1}}\n }\nset N97c7e910 [stack 0]\n Dot {\n  name Dot12\n  xpos -226\n  ypos 1101\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace5\n  xpos -260\n  ypos 1140\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -260\n  ypos 1188\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -260\n  ypos 1267\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace7\n  xpos -260\n  ypos 1327\n }\n Dot {\n  name Dot36\n  label \"BLEND EDGES\"\n  note_font_size 45\n  xpos -226\n  ypos 1408\n }\npush $N97c7e910\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -373\n  ypos 1514\n }\nset N97cc7ba0 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{blendEdgesAmount}}\n  name Merge10\n  xpos -260\n  ypos 1507\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -226\n  ypos 1588\n }\npush $N97cc7ba0\n Switch {\n  inputs 2\n  which {{\"blendEdgesAmount == 0 ? 0 : 1\"}}\n  name Switch3\n  xpos -407\n  ypos 1585\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge5\n  xpos -407\n  ypos 1685\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge6\n  xpos -407\n  ypos 1791\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos -373\n  ypos 2417\n }\nset N97d02370 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace2\n  xpos -81\n  ypos 2410\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply6\n  label \"\\[value value]\"\n  xpos -81\n  ypos 2458\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge11\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2537\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace8\n  xpos -81\n  ypos 2606\n }\npush $N97c7e910\n Dot {\n  name Dot13\n  xpos -579\n  ypos 1101\n }\n Dot {\n  name Dot14\n  xpos -579\n  ypos 2559\n }\npush $N97d02370\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -407\n  ypos 2552\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -373\n  ypos 2649\n }\nset N97d543a0 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix {{bleedColorAmount}}\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2828\n }\npush $N97d543a0\n Switch {\n  inputs 2\n  which {{\"parent.bleedColorAmount== 0 ? 0 : 1\"}}\n  name Switch2\n  xpos -407\n  ypos 2832\n }\n Premult {\n  name Premult3\n  xpos -407\n  ypos 2983\n  disable {{premultiplied*-1+1 i}}\n }\n Dot {\n  name Dot19\n  xpos -373\n  ypos 3396\n }\n Switch {\n  inputs 5\n  which {{\"\\[value ls parent.outputView]\"}}\n  name Switch1\n  xpos 1708\n  ypos 3395\n }\npush $N96a51190\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -825\n  ypos 3581\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name MergeCopyLightWrapPro\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 1708\n  ypos 3580\n }\n Output {\n  name Output1\n  xpos 1708\n  ypos 3898\n }\nend_group\nDot {\n name Dot323\n selected true\n xpos -2967\n ypos 3339\n}\nDot {\n name Dot324\n note_font_size 41\n selected true\n xpos 3822\n ypos 3339\n}\nset N97d9eaf0 [stack 0]\nRemove {\n operation keep\n channels rgba\n name Remove37\n selected true\n xpos 3932\n ypos 3336\n}\npush $N97d9eaf0\nDot {\n name Dot326\n note_font_size 41\n selected true\n xpos 3822\n ypos 2826\n}\nDot {\n name Dot327\n note_font_size 41\n selected true\n xpos 3992\n ypos 2826\n}\nset N97dadd10 [stack 0]\nShuffle {\n in cleanplate\n name Shuffle42\n label \"\\[value in]\"\n selected true\n xpos 3958\n ypos 2885\n}\nDot {\n name Dot328\n note_font_size 41\n selected true\n xpos 3992\n ypos 3022\n}\npush $N97dadd10\nDot {\n name Dot329\n note_font_size 41\n selected true\n xpos 4122\n ypos 2826\n}\nShuffle {\n in GS\n name Shuffle43\n label \"\\[value in]\"\n selected true\n xpos 4088\n ypos 2886\n}\npush $N95f7f190\nDot {\n name Dot330\n selected true\n xpos 4243\n ypos 2469\n}\nDot {\n name Dot331\n note_font_size 41\n selected true\n xpos 4243\n ypos 2848\n}\nGroup {\n inputs 3\n name AdditiveKeyerPro\n tile_color 0x5200ff\n note_font \"Verdana Bold Bold\"\n note_font_color 0xffffffff\n selected true\n xpos 4209\n ypos 3019\n disable true\n addUserKnob {20 AdditiveKeyer}\n addUserKnob {6 useSC l \"Use Screen Color as CleanPlate\" +STARTLINE}\n addUserKnob {41 screenColor l \"Screen Color\" T Keylight1.screenColour}\n addUserKnob {6 despillSat l \"Despill Screen Color from Saturation?\" +STARTLINE}\n despillSat true\n addUserKnob {26 \"\"}\n addUserKnob {7 DarkValue l \"Dark Value\" R 0 5}\n DarkValue 1\n addUserKnob {7 satDarks l \"Saturate Darks\"}\n satDarks 0.2\n addUserKnob {18 darkTint l \"Dark Tint\"}\n darkTint 1\n addUserKnob {6 darkTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 darkTint_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {7 ExtraLightValue l \"Light Value Plus\" R 0 2}\n ExtraLightValue 1\n addUserKnob {7 satLights l \"Saturate Lights\"}\n satLights 0.2\n addUserKnob {18 lightTint l \"Light Tint\"}\n lightTint 1\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 lightTint_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 LightValue l \"Light Value BG Mult\" R 0 5}\n LightValue 0.25\n addUserKnob {26 \"\"}\n addUserKnob {6 darkTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 lightTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 compositeSwitch l \"Output Difference to RGB\" +STARTLINE}\n addUserKnob {6 outputDiffAlpha l \"Output Difference Matte to Alpha\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l \"Modified By:\" T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"adds the difference between cleanplate and key plate to the BG\\n\\nGood for hair details and shadows and sensitive edge treatment\" T AdditiveKeyer}\n addUserKnob {26 ver l Version: T v04}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 685\n  ypos 1141\n  number 3\n }\n Dot {\n  name Dot10\n  label Mask\n  note_font_size 41\n  xpos 719\n  ypos 1883\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 719\n  ypos 1983\n }\n Input {\n  inputs 0\n  name fg\n  label \"\\[value number]\"\n  xpos -500\n  ypos -221\n  number 1\n }\n Remove {\n  channels alpha\n  name Remove2\n  xpos -500\n  ypos -147\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos -500\n  ypos -109\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos -466\n  ypos 5\n }\nset N98653ff0 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {0 0 0}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight1\n  xpos -500\n  ypos 73\n }\nset N98657da0 [stack 0]\npush $N98653ff0\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -356\n  ypos 5\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -390\n  ypos 73\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -390\n  ypos 99\n }\n Saturation {\n  saturation 0\n  name Saturation4\n  xpos -390\n  ypos 125\n }\npush $N98657da0\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -500\n  ypos 125\n }\npush $N98653ff0\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos -598\n  ypos 5\n }\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos -598\n  ypos 218\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch1\n  label \"\\[value which]\"\n  xpos -500\n  ypos 208\n }\n Dot {\n  name Dot8\n  xpos -466\n  ypos 373\n }\nset N986f71d0 [stack 0]\n Input {\n  inputs 0\n  name clean\n  label \"\\[value number]\"\n  xpos 126\n  ypos -175\n  number 2\n }\n Remove {\n  channels alpha\n  name Remove3\n  xpos 126\n  ypos -101\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 126\n  ypos -63\n }\n Grade {\n  multiply 0\n  add {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}\n  name ScreenColor\n  xpos 126\n  ypos -14\n  disable {{!parent.useSC}}\n }\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 160\n  ypos 50\n }\nset N98b170d0 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {{parent.Keylight1.screenColour x1 0} {parent.Keylight1.screenColour x1 0} {parent.Keylight1.screenColour x1 0}}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight2\n  xpos 126\n  ypos 118\n }\nset N98b1afc0 [stack 0]\npush $N98b170d0\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 270\n  ypos 50\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 236\n  ypos 118\n }\n Clamp {\n  channels rgba\n  name Clamp2\n  xpos 236\n  ypos 144\n }\n Saturation {\n  saturation 0\n  name Saturation5\n  xpos 236\n  ypos 170\n }\npush $N98b1afc0\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 126\n  ypos 170\n }\npush $N98b170d0\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 28\n  ypos 50\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 28\n  ypos 230\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch2\n  label \"\\[value which]\"\n  xpos 126\n  ypos 223\n }\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 160\n  ypos 320\n }\nset N98be4950 [stack 0]\n Dot {\n  name Dot6\n  xpos 412\n  ypos 320\n }\n Merge2 {\n  inputs 2\n  operation difference\n  Achannels rgb\n  Bchannels rgb\n  name Merge6\n  xpos 378\n  ypos 370\n }\n Group {\n  name ChannelControl_v3\n  label \"\\[value channel_selector.in]\"\n  note_font \"Bitstream Vera Sans\"\n  xpos 378\n  ypos 440\n  mapsize {0.15 0.15}\n  addUserKnob {20 channelControl}\n  addUserKnob {41 Channel_Selection T channel_selector.in}\n  addUserKnob {26 Description l \"\" +STARTLINE T \":Channel Control:\\n\\nChannel math with choice of merge operation\"}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 redGain}\n  redGain 0.3\n  addUserKnob {7 greenGain}\n  greenGain 0.59\n  addUserKnob {7 blueGain}\n  blueGain 0.11\n  addUserKnob {7 alphaGain}\n  addUserKnob {41 operation T Merge1.operation}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 558\n   ypos -694\n  }\n  Shuffle {\n   name channel_selector\n   label \"\\[value in]\"\n   xpos 558\n   ypos -668\n  }\nset N98c089b0 [stack 0]\n  Shuffle {\n   green red\n   blue red\n   alpha red\n   name Shuffle1\n   xpos 386\n   ypos -536\n  }\n  Grade {\n   channels rgba\n   white {{parent.redGain i}}\n   name Grade12\n   xpos 386\n   ypos -492\n  }\npush $N98c089b0\n  Shuffle {\n   red green\n   blue green\n   alpha green\n   name Shuffle2\n   xpos 499\n   ypos -534\n  }\n  Grade {\n   channels rgba\n   white {{parent.greenGain i}}\n   name Grade13\n   xpos 499\n   ypos -493\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   name Merge1\n   xpos 411\n   ypos -428\n  }\n  set C98c493b0 [stack 0]\npush $N98c089b0\n  Shuffle {\n   red blue\n   green blue\n   alpha blue\n   name Shuffle3\n   xpos 610\n   ypos -538\n  }\n  Grade {\n   channels rgba\n   white {{parent.blueGain i}}\n   name Grade14\n   xpos 610\n   ypos -494\n  }\nclone $C98c493b0 {\n   inputs 2\n   xpos 486\n   ypos -369\n   selected false\n  }\npush $N98c089b0\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle4\n   selected true\n   xpos 725\n   ypos -535\n  }\n  Grade {\n   channels rgba\n   white {{parent.alphaGain i}}\n   name Grade15\n   xpos 725\n   ypos -494\n  }\nclone $C98c493b0 {\n   inputs 2\n   xpos 580\n   ypos -307\n   selected false\n  }\n  Output {\n   name Output1\n   xpos 600\n   ypos -210\n  }\n end_group\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 412\n  ypos 1768\n }\n Input {\n  inputs 0\n  name bg\n  label \"\\[value number]\"\n  xpos -845\n  ypos -242\n }\n AddChannels {\n  channels rgba\n  name AddChannels3\n  xpos -845\n  ypos -151\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -811\n  ypos -78\n }\n Dot {\n  name Dot4\n  xpos -811\n  ypos 1449\n }\nset N98cbb5f0 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -811\n  ypos 1688\n }\nset N98cbf4d0 [stack 0]\npush $N986f71d0\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -466\n  ypos 421\n }\nset N98cc33a0 [stack 0]\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation9\n  xpos -378\n  ypos 418\n }\npush $N98be4950\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation8\n  xpos -215\n  ypos 317\n }\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -215\n  ypos 418\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos -181\n  ypos 674\n }\n Clamp {\n  channels rgba\n  minimum 1\n  minimum_enable false\n  name Clamp4\n  xpos -215\n  ypos 786\n }\n Add {\n  channels rgba\n  value -1\n  name Add3\n  xpos -215\n  ypos 840\n }\n Multiply {\n  channels rgb\n  value {{parent.DarkValue} {parent.DarkValue} {parent.DarkValue} 0}\n  name DARK_VALUE\n  xpos -215\n  ypos 892\n }\n Grade {\n  multiply {{parent.darkTint} {parent.darkTint} {parent.darkTint} {parent.darkTint}}\n  reverse true\n  black_clamp false\n  name DARK_TINT\n  xpos -215\n  ypos 931\n }\n Add {\n  channels rgba\n  value 1\n  name Add4\n  xpos -215\n  ypos 988\n }\n Clamp {\n  channels rgb\n  name Clamp5\n  xpos -215\n  ypos 1065\n }\n Dot {\n  name Dot39\n  note_font_size 41\n  xpos -181\n  ypos 1257\n }\npush $N98cc33a0\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos -466\n  ypos 577\n }\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation1\n  xpos -101\n  ypos 574\n }\nset N9856b6f0 [stack 0]\npush $N98be4950\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation6\n  xpos 126\n  ypos 500\n }\nset N98575c80 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  also_merge all\n  name Merge10\n  label all\n  xpos 126\n  ypos 568\n }\n Clamp {\n  channels rgba\n  minimum 1\n  maximum_enable false\n  name Clamp3\n  xpos 126\n  ypos 780\n }\n Add {\n  channels rgba\n  value -1\n  name Add1\n  xpos 126\n  ypos 838\n }\n Multiply {\n  channels rgb\n  value {{parent.LightValue} {parent.LightValue} {parent.LightValue} 0}\n  name LIGHT_VALUE\n  xpos 126\n  ypos 961\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT\n  xpos 126\n  ypos 1039\n }\n Add {\n  channels rgba\n  value 1\n  name Add2\n  xpos 126\n  ypos 1120\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name __CONSTRAIN_DARKS__\n  xpos 128\n  ypos 1253\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 162\n  ypos 1354\n }\nset N985d4310 [stack 0]\n Dot {\n  name Dot3\n  xpos -8\n  ypos 1354\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -8\n  ypos 1611\n }\npush $N98575c80\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 310\n  ypos 503\n }\npush $N9856b6f0\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -67\n  ypos 691\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 276\n  ypos 688\n }\n Clamp {\n  channels rgba\n  maximum_enable false\n  name Clamp6\n  xpos 276\n  ypos 781\n }\n Multiply {\n  channels rgba\n  value {{parent.ExtraLightValue}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 276\n  ypos 899\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT1\n  xpos 276\n  ypos 1036\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 310\n  ypos 1513\n }\npush $N985d4310\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 162\n  ypos 1449\n }\npush $N98cbb5f0\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name CONSTRAIN_LIGHTS\n  xpos 128\n  ypos 1446\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 128\n  ypos 1510\n }\n Switch {\n  inputs 2\n  which {{parent.compositeSwitch}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 128\n  ypos 1604\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 128\n  ypos 1678\n  disable {{parent.outputDiffAlpha}}\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name __LUMA_INTO_ALPHA__\n  xpos 128\n  ypos 1758\n  disable {{!parent.outputDiffAlpha}}\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 162\n  ypos 1910\n }\npush $N98cbf4d0\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -811\n  ypos 1895\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -811\n  ypos 1986\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeKeymix\n  xpos 128\n  ypos 1973\n }\n Output {\n  name Output1\n  xpos 128\n  ypos 2235\n }\nend_group\nMerge2 {\n inputs 2\n bbox B\n name Merge51\n selected true\n xpos 4209\n ypos 3336\n}\nDot {\n name Dot332\n selected true\n xpos 4243\n ypos 3859\n}\npush $N97d9eaf0\nShuffle {\n in GS\n name Shuffle44\n label \"\\[value in]\"\n selected true\n xpos 3788\n ypos 3552\n}\nDot {\n name Dot333\n label \"Key\\nQC \"\n note_font_size 100\n selected true\n xpos 3822\n ypos 3697\n}\npush $N95cb1e90\nDot {\n name Dot334\n selected true\n xpos 1263\n ypos -4004\n}\nRemove {\n operation keep\n channels rgb\n name Remove38\n selected true\n xpos 1229\n ypos -3876\n}\nDot {\n name Dot335\n note_font_size 41\n selected true\n xpos 1263\n ypos -3659\n}\npush $N94dc52f0\npush $N94d07a10\nMerge2 {\n inputs 2\n operation plus\n name Merge52\n label \"test lunimance match\"\n selected true\n xpos -2646\n ypos -2848\n}\nDot {\n name Dot336\n label test\n note_font_size 41\n selected true\n xpos -2612\n ypos -2766\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_AdvancedKeyingTemplate_Stamps.nk",
    "content": "set cut_paste_input [stack 0]\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0x3b4245ff\n label \"Advanced Keying Template\"\n note_font_size 200\n note_font_color 0xffffffff\n selected true\n xpos -3788\n ypos -5888\n bdwidth 8480\n bdheight 9896\n z_order -2\n}\nBackdropNode {\n inputs 0\n name BackdropNode100\n tile_color 0x667c7c00\n label \"BG Element\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 5942\n ypos -4884\n bdwidth 610\n bdheight 387\n}\nBackdropNode {\n inputs 0\n name BackdropNode101\n tile_color 0x374935ff\n label \"Green\\nScreen Footage\"\n note_font_size 112\n selected true\n xpos -1416\n ypos -5551\n bdwidth 1208\n bdheight 847\n}\nBackdropNode {\n inputs 0\n name BackdropNode102\n tile_color 0x5c5539ff\n label \"Edge Matte\"\n note_font_size 140\n note_font_color 0xffffffff\n selected true\n xpos 1460\n ypos -3732\n bdwidth 1411\n bdheight 2103\n}\nBackdropNode {\n inputs 0\n name BackdropNode103\n tile_color 0x61454f00\n label Cleanplate\n note_font_size 140\n note_font_color 0xffffffff\n selected true\n xpos 3043\n ypos -3729\n bdwidth 1026\n bdheight 1464\n}\nBackdropNode {\n inputs 0\n name BackdropNode105\n tile_color 0x6b506800\n label \"inject alpha\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1108\n ypos -766\n bdwidth 514\n bdheight 240\n}\nBackdropNode {\n inputs 0\n name BackdropNode106\n tile_color 0x5a3f6200\n label \"inject cleanplate\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1110\n ypos -470\n bdwidth 511\n bdheight 299\n}\nBackdropNode {\n inputs 0\n name BackdropNode107\n tile_color 0x5b7179ff\n label \"exponentially blurring inwards\\nfor blending the core/edge despills\"\n note_font_size 26\n note_font_color 0xffffffff\n selected true\n xpos 205\n ypos -1827\n bdwidth 420\n bdheight 275\n}\nBackdropNode {\n inputs 0\n name BackdropNode109\n tile_color 0x4e6689ff\n label \"Color Corrections\"\n note_font_size 50\n note_font_color 0xffffffff\n selected true\n xpos -1202\n ypos 32\n bdwidth 433\n bdheight 480\n}\nBackdropNode {\n inputs 0\n name BackdropNode110\n tile_color 0x666d6500\n label LightWrap\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1153\n ypos 3233\n bdwidth 719\n bdheight 391\n}\nBackdropNode {\n inputs 0\n name BackdropNode111\n tile_color 0x47633eff\n label \"Additive Keyer\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 5841\n ypos 3655\n bdwidth 665\n bdheight 399\n}\nBackdropNode {\n inputs 0\n name BackdropNode112\n tile_color 0x6a5353ff\n label \"Keep Util Channels\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1512\n ypos -1163\n bdwidth 634\n bdheight 344\n}\nBackdropNode {\n inputs 0\n name BackdropNode113\n tile_color 0x535a6bff\n label \"Comine Despill\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1494\n ypos -1897\n bdwidth 1009\n bdheight 557\n}\nBackdropNode {\n inputs 0\n name BackdropNode114\n tile_color 0x687675ff\n label premult\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1074\n ypos 2911\n bdwidth 160\n bdheight 160\n}\nBackdropNode {\n inputs 0\n name BackdropNode18\n tile_color 0x4c5e5bff\n label \"Making BG Stamp\\nfor BG Blend and Lightwrap\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 5874\n ypos 3257\n bdwidth 736\n bdheight 282\n}\nBackdropNode {\n inputs 0\n name BackdropNode49\n tile_color 0x808080ff\n label \"Output Stamps\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1071\n ypos 1334\n bdwidth 922\n bdheight 305\n}\nBackdropNode {\n inputs 0\n name BackdropNode63\n tile_color 0x503d4600\n label \"test BG\"\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos 5779\n ypos -5945\n bdwidth 643\n bdheight 492\n}\nBackdropNode {\n inputs 0\n name BackdropNode72\n tile_color 0x4e3f6800\n label \"GS Plate (transformed)\\nfor QC comparison\"\n note_font_size 30\n note_font_color 0xffffffff\n selected true\n xpos 5719\n ypos 4324\n bdwidth 350\n bdheight 243\n}\nBackdropNode {\n inputs 0\n name BackdropNode94\n tile_color 0x645c38ff\n label \"BG despill edge blending\"\n note_font_size 62\n note_font_color 0xffffffff\n selected true\n xpos -1311\n ypos 1815\n bdwidth 1601\n bdheight 854\n}\nBackdropNode {\n inputs 0\n name BackdropNode95\n tile_color 0x39525cff\n label \"Core Despill\"\n note_font_size 140\n note_font_color 0xffffffff\n selected true\n xpos -2867\n ypos -3655\n bdwidth 1205\n bdheight 1295\n}\nBackdropNode {\n inputs 0\n name BackdropNode96\n tile_color 0x4b6648ff\n label \"creating GS channel\\nfor review at bottom of key\"\n note_font_size 42\n note_font_color 0xffffffff\n selected true\n xpos -1221\n ypos -4584\n bdwidth 554\n bdheight 462\n}\nBackdropNode {\n inputs 0\n name BackdropNode97\n tile_color 0x472e5500\n label Transforms\n note_font_size 60\n note_font_color 0xffffffff\n selected true\n xpos -1223\n ypos 641\n bdwidth 478\n bdheight 481\n}\nBackdropNode {\n inputs 0\n name BackdropNode98\n tile_color 0x39525cff\n label \"Core Matte\"\n note_font_size 140\n note_font_color 0xffffffff\n selected true\n xpos 289\n ypos -3716\n bdwidth 1097\n bdheight 1475\n}\nBackdropNode {\n inputs 0\n name BackdropNode99\n tile_color 0x5c5539ff\n label \"Edge Despill\"\n note_font_size 140\n note_font_color 0xffffffff\n selected true\n xpos -1508\n ypos -3680\n bdwidth 1485\n bdheight 1364\n}\npush $cut_paste_input\nRoto {\n output alpha\n cliptype none\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44070000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Ellipse1 512 bezier\n     {{cc\n       {f 8192}\n       {px x447ec000\n        {xc227e500 0}\n        {x44750000 x44500000}\n        {x4227e500 0}\n        {0 xc2a379f0}\n        {x44840000 x44750000}\n        {0 x42a379f0}\n        {x4227e500 0}\n        {x44750000 x448d0000}\n        {xc227e500 0}\n        {0 x42a379f0}\n        {x44620000 x44750000}\n        {0 xc2a379f0}}}\n      {cc\n       {f 8192}\n       {p\n        {{{x447ec000 xc227e500}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 0}}}\n        {{{x447ec000 x4227e500}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 xc2a379f0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 x42a379f0}}}\n        {{{x447ec000 x4227e500}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 0}}}\n        {{{x447ec000 xc227e500}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 x42a379f0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 0}}}\n        {{{x447ec000 0}}\n      {{x447ec000 xc2a379f0}}}}}}\n     {tx x447ec000 x44750000 x44750000}\n     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44070000 sb 1 ltn x447ec000 ltm x447ec000 tt x40e00000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 540}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1019\n lifetime_end 1019\n motionblur_shutter_offset_type centred\n source_black_outside true\n name Roto14\n selected true\n xpos 5999\n ypos -5713\n}\nBlur {\n size 100\n name Blur2\n label \"\\[value size]\"\n selected true\n xpos 5999\n ypos -5653\n}\nConstant {\n inputs 0\n channels rgb\n color {2.960000038 2.999999762 3.039999962 12}\n name Constant1\n selected true\n xpos 5855\n ypos -5603\n}\nCheckerBoard2 {\n inputs 0\n name CheckerBoard1\n selected true\n xpos 6176\n ypos -5879\n}\nGrade {\n multiply 0.105\n name Grade1\n selected true\n xpos 6176\n ypos -5767\n}\nKeymix {\n inputs 3\n channels rgba\n name Keymix1\n selected true\n xpos 6176\n ypos -5579\n disable true\n}\nDot {\n name Dot5\n label BG_ELEMENT\n note_font_size 51\n selected true\n xpos 6210\n ypos -4622\n}\nDot {\n name Dot6\n label BG\n note_font_size 71\n selected true\n xpos 6210\n ypos 3444\n}\nset N607a5d00 [stack 0]\nNoOp {\n name Anchor_3cad2b60ea\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos 6004\n ypos 3436\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"BG Before Key\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"BG Before Key\"}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_3cad2b60ea}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nset N607a5600 [stack 0]\nNoOp {\n name Stamp43\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos -730\n ypos 3331\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"BG Before Key\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"BG Before Key\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" +HIDDEN T \" \"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_3cad2b60ea\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nDot {\n name Dot9\n label BG\n note_font_size 101\n selected true\n xpos -696\n ypos 3472\n}\nDot {\n inputs 0\n name Dot1\n label GreenScreenPlate\n note_font_size 41\n selected true\n xpos -1000\n ypos -5150\n}\nAddChannels {\n channels rgba\n name AddChannels3\n selected true\n xpos -1034\n ypos -5080\n}\nDot {\n name Dot26\n selected true\n xpos -1000\n ypos -4467\n}\nadd_layer {GS_Plate GS_Plate.red GS_Plate.green GS_Plate.blue GS_Plate.alpha}\nShuffle {\n black red\n white green\n red2 blue\n green2 black\n out2 GS_Plate\n name Shuffle33\n label \"\\[value in] -> \\[value out2]\"\n selected true\n xpos -1034\n ypos -4404\n}\nDot {\n name Dot8\n note_font_size 41\n selected true\n xpos -1000\n ypos -4267\n}\nset N60779d00 [stack 0]\nDot {\n name Dot34\n selected true\n xpos -1000\n ypos -3937\n}\nset N60779600 [stack 0]\nDot {\n name Dot38\n selected true\n xpos 796\n ypos -3937\n}\nset N60778f00 [stack 0]\nDot {\n name Dot46\n selected true\n xpos 2060\n ypos -3937\n}\nset N60778800 [stack 0]\nDot {\n name Dot334\n selected true\n xpos 3550\n ypos -3937\n}\nRemove {\n operation keep\n channels rgb\n name Remove38\n selected true\n xpos 3516\n ypos -3809\n}\nDot {\n name Dot335\n note_font_size 41\n selected true\n xpos 3550\n ypos -3559\n}\nIBKColourV3 {\n name IBKColourV3_10\n selected true\n xpos 3516\n ypos -3470\n Size 18\n}\nInpaint2 {\n fillRegion \"Source Inverted Alpha\"\n center {1203 568}\n name Inpaint1\n selected true\n xpos 3516\n ypos -3281\n}\nDot {\n name Dot19\n note_font_size 41\n selected true\n xpos 3550\n ypos -2977\n}\nset N2f6bd600 [stack 0]\nDot {\n name Dot16\n label Cleanplate\n note_font_size 60\n selected true\n xpos 3550\n ypos -2377\n}\nDot {\n name Dot49\n label Cleanplate\n note_font_size 60\n selected true\n xpos 3550\n ypos -1660\n}\nDot {\n name Dot53\n label Cleanplate\n note_font_size 60\n selected true\n xpos 3550\n ypos -263\n}\nadd_layer {cleanplate cleanplate.red cleanplate.green cleanplate.blue cleanplate.alpha}\nShuffle {\n black red\n white green\n red2 blue\n green2 black\n out2 cleanplate\n name Shuffle34\n label \"\\[value in] -> \\[value out2]\"\n selected true\n xpos -874\n ypos -273\n}\npush $N60778f00\nRemove {\n operation keep\n channels rgb\n name Remove31\n selected true\n xpos 762\n ypos -3816\n}\nDot {\n name Dot13\n note_font_size 41\n selected true\n xpos 796\n ypos -3515\n}\nPrimatte3 {\n data { 5\n    11757 12586 28017\n    65552\n    0 5\n    30234 30234 30234 0\n    131.703 115.29 2282.26 72.2175 59.1462 2129.06 939.83 259.302 51.8183 549.229 904.755 276.263 92.3108 578.039 120.609 234.956 234.82 146.119 237.546 743.532 100.669 573.049 43.009 63.2739 116.749 6215.42 168.03 1762.74 3864.11 55.7825 120.53 782.613 3846.16 137.667 121.352 101.794 8606.14 147.362 77.5146 198.503 573.917 81.358 1101.7 522.226 871.183 109.573 110.87 144.688 126.765 33.3146 34.0749 5144.71 4299.28 18477.9 96.8055 90.0376 231.86 11773.6 405.26 440.61 169.247 274.68 242.589 111.212 102.975 105.83\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 16795 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 23001.1 130560 130560 130560 130560 130560 130560 130560 130560\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 16795 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 23001.1 130560 130560 130560 130560 130560 130560 130560 130560\n    -173008 -2.22551e+14 -2.22551e+14 -1.75797e+08 3.24562e+13 3.24562e+13\n    -88728 -2.22551e+14 -2.22551e+14 -3.33563e+07 2.59518e+13 2.59518e+13\n    -49917.5 -1.9095e+14 -1.9095e+14 2.99695e+07 1.24769e+13 1.24769e+13\n    -275696 -1.62776e+14 -1.62776e+14 5.27411e+07 -2.14449e+12 -2.14449e+12\n    -95526 -2.22551e+14 -2.22551e+14 1.29744e+07 1.69562e+13 1.69562e+13\n    -48985 -2.22551e+14 -2.22551e+14 3.80106e+07 1.04518e+13 1.04518e+13\n    -57891.4 -2.22551e+14 -2.22551e+14 2.42861e+07 -2.59518e+13 -2.59518e+13\n    -319741 -1.89714e+14 -1.89714e+14 3.3319e+06 -3.70182e+13 -3.70182e+13\n    -1.46426e+06 -4.06321e+14 -4.06321e+14 -6.42384e+08 6.71983e+13 6.71983e+13\n    -8.55972e+07 -7.25395e+12 -7.25395e+12 -4.66618e+09 1.27042e+13 1.27042e+13\n    -3.9253e+06 -1.98547e+12 -1.98547e+12 2.63799e+08 1.83081e+12 1.83081e+12\n    -1.11147e+08 -4.01415e+12 -4.01415e+12 -2.18771e+09 8.80462e+12 8.80462e+12\n    -3.71416e+06 -4.06321e+14 -4.06321e+14 8.76061e+08 -4.9151e+13 -4.9151e+13\n    -282796 -4.06321e+14 -4.06321e+14 -4.12997e+07 -2.48811e+13 -2.48811e+13\n    -20396 -4.06321e+14 -4.06321e+14 -2.03765e+07 -3.23759e+12 -3.23759e+12\n    -1.15164e+10 -4.06321e+14 -4.06321e+14 1.17853e+09 -1.03268e+14 -1.03268e+14\n    -4.34651e+09 -5.76078e+12 -5.76078e+12 -1.28057e+10 9.10482e+12 9.10482e+12\n    -258688 -2.42948e+14 -2.42948e+14 3.95126e+07 8.78112e+13 8.78112e+13\n    -65592 -4.06321e+14 -4.06321e+14 -3.43375e+07 2.48811e+13 2.48811e+13\n    -2.98885e+07 -8.74202e+11 -8.74202e+11 -8.66012e+08 3.03045e+11 3.03045e+11\n    -562448 -4.06321e+14 -4.06321e+14 1.75345e+08 3.90796e+13 3.90796e+13\n    -1.70271e+06 -4.06321e+14 -4.06321e+14 6.26216e+07 -6.09506e+13 -6.09506e+13\n    -7.9007e+07 -4.06321e+14 -4.06321e+14 1.52156e+10 -9.14682e+13 -9.14682e+13\n    -6.56372e+08 -1.55159e+13 -1.55159e+13 3.2503e+10 -6.35202e+12 -6.35202e+12\n    -3.37791e+08 -9.2413e+13 -9.2413e+13 -6.93039e+08 1.39767e+14 1.39767e+14\n    -4.78643e+06 -1.42796e+13 -1.42796e+13 -4.03005e+08 1.74249e+13 1.74249e+13\n    -1.03233e+06 -1.12003e+14 -1.12003e+14 -9.588e+07 3.48023e+13 3.48023e+13\n    -2.04677e+08 -1.16868e+12 -1.16868e+12 -2.39029e+08 -1.34758e+11 -1.34758e+11\n    -893296 -5.24559e+14 -5.24559e+14 -1.53781e+08 -2.95997e+13 -2.95997e+13\n    -1.60356e+06 -5.24559e+14 -5.24559e+14 3.18342e+08 -9.64026e+13 -9.64026e+13\n    -93988 -5.24559e+14 -5.24559e+14 5.9775e+07 -6.27891e+13 -6.27891e+13\n    -1.29519e+10 -2.34124e+14 -2.34124e+14 -4.53767e+10 -4.78306e+13 -4.78306e+13\n    -3.44886e+06 -4.06321e+14 -4.06321e+14 -2.18227e+08 6.80597e+13 6.80597e+13\n    -569166 -2.54198e+14 -2.54198e+14 -6.19316e+07 1.15759e+14 1.15759e+14\n    -528400 -5.65689e+13 -5.65689e+13 -1.74988e+08 1.30936e+14 1.30936e+14\n    -2.1286e+07 -8.34717e+12 -8.34717e+12 -2.10171e+09 1.4745e+13 1.4745e+13\n    -596176 -4.06321e+14 -4.06321e+14 8.40006e+07 -6.96482e+12 -6.96482e+12\n    -230817 -4.06321e+14 -4.06321e+14 7.04665e+06 4.11041e+11 4.11041e+11\n    -13557 -4.06321e+14 -4.06321e+14 -1.20581e+07 -2.85297e+13 -2.85297e+13\n    -5.03316e+07 -2.73268e+14 -2.73268e+14 1.43263e+10 -8.80179e+13 -8.80179e+13\n    -31228 -2.22551e+14 -2.22551e+14 1.80443e+07 3.12724e+13 3.12724e+13\n    -3.22987e+09 -3.32092e+11 -3.32092e+11 -1.44559e+10 3.46322e+11 3.46322e+11\n    -4.71444e+08 -7.14508e+11 -7.14508e+11 -2.14529e+10 9.18671e+11 9.18671e+11\n    -1.64549e+06 -5.10403e+13 -5.10403e+13 5.42704e+07 2.07275e+13 2.07275e+13\n    -1.02509e+08 -2.22551e+14 -2.22551e+14 7.44013e+09 -4.10238e+13 -4.10238e+13\n    -220020 -2.22551e+14 -2.22551e+14 -1.17411e+07 -2.43094e+13 -2.43094e+13\n    -55078 -2.22551e+14 -2.22551e+14 2.67342e+07 8.80939e+12 8.80939e+12\n    -5.45586e+09 -2.22551e+14 -2.22551e+14 1.99278e+10 -5.44912e+13 -5.44912e+13\n    -2.29466e+09 -1.35475e+13 -1.35475e+13 -2.18582e+10 2.0952e+13 2.0952e+13\n    -2.68691e+06 -2.30801e+13 -2.30801e+13 -2.93389e+08 2.81856e+13 2.81856e+13\n    -308272 -4.06321e+14 -4.06321e+14 -5.18663e+07 7.27645e+13 7.27645e+13\n    -3.20791e+08 -7.56085e+11 -7.56085e+11 -6.62225e+09 2.06047e+12 2.06047e+12\n    -343800 -4.06321e+14 -4.06321e+14 -1.00216e+08 -8.80379e+12 -8.80379e+12\n    -4.51419e+07 -4.06321e+14 -4.06321e+14 1.08829e+10 -8.96585e+13 -8.96585e+13\n    -1.672e+06 -4.06321e+14 -4.06321e+14 4.73304e+08 -6.27603e+13 -6.27603e+13\n    -7.47418e+07 -1.81352e+14 -1.81352e+14 1.88562e+10 -9.12369e+13 -9.12369e+13\n    -2.64224e+08 -5.78142e+13 -5.78142e+13 2.05357e+09 8.43729e+13 8.43729e+13\n    -247784 -3.13644e+14 -3.13644e+14 6.70985e+07 3.07649e+13 3.07649e+13\n    -148368 -5.24559e+14 -5.24559e+14 -7.90006e+07 3.45854e+13 3.45854e+13\n    -3.51635e+07 -1.11673e+12 -1.11673e+12 1.67142e+09 1.17381e+12 1.17381e+12\n    -2.57304e+06 -5.24559e+14 -5.24559e+14 -9.17211e+06 3.22175e+13 3.22175e+13\n    -394416 -5.24559e+14 -5.24559e+14 -5.42436e+07 -5.93409e+13 -5.93409e+13\n    -546688 -5.24559e+14 -5.24559e+14 4.73626e+08 -9.98509e+13 -9.98509e+13\n    -4.89972e+09 -2.71902e+13 -2.71902e+13 1.48134e+11 2.4441e+13 2.4441e+13\n    -2.5618e+06 -2.54198e+14 -2.54198e+14 -1.04936e+08 1.03768e+14 1.03768e+14\n    -201818 -4.06321e+14 -4.06321e+14 5.25342e+07 2.85297e+13 2.85297e+13\n    -45108 -4.06322e+14 -4.06322e+14 -4.66993e+07 -4.1103e+11 -4.1103e+11\n    -2.48883e+06 -7.8946e+12 -7.8946e+12 -5.29195e+08 1.28701e+13 1.28701e+13\n    -2.3376e+06 -4.06321e+14 -4.06321e+14 3.09963e+08 3.99409e+13 3.99409e+13\n    -223498 -4.06321e+14 -4.06321e+14 7.31205e+07 -1.87645e+13 -1.87645e+13\n    -390016 -4.06321e+14 -4.06321e+14 3.14765e+08 -7.54355e+13 -7.54355e+13\n    -1.75239e+08 -4.02259e+13 -4.02259e+13 2.96184e+10 -9.17516e+12 -9.17516e+12\n    -1.23968e+06 -4.06321e+14 -4.06321e+14 -7.37413e+08 8.53962e+13 8.53962e+13\n    -6.75126e+07 -1.7841e+12 -1.7841e+12 6.61983e+09 4.41779e+12 4.41779e+12\n    -2.81985e+07 -1.64193e+13 -1.64193e+13 -4.24373e+09 1.39135e+13 1.39135e+13\n    -2.41807e+07 -4.45722e+12 -4.45722e+12 -4.99349e+09 4.6435e+11 4.6435e+11\n    -3.19968e+06 -4.06321e+14 -4.06321e+14 1.31085e+09 -5.01286e+13 -5.01286e+13\n    -1.53757e+06 -4.06321e+14 -4.06321e+14 3.53143e+08 -7.27645e+13 -7.27645e+13\n    -69220 -4.06321e+14 -4.06321e+14 -5.92075e+07 -2.14355e+13 -2.14355e+13\n    -7.50032e+09 -4.06321e+14 -4.06321e+14 2.5079e+10 -1.0229e+14 -1.0229e+14\n    -7.0802e+09 -6.51685e+11 -6.51685e+11 -4.88213e+10 6.56937e+11 6.56937e+11\n    -268558 -1.03017e+14 -1.03017e+14 -4.2673e+07 7.70381e+13 7.70381e+13\n    -25490 -2.22551e+14 -2.22551e+14 1.22614e+07 2.43094e+13 2.43094e+13\n    -2.15065e+08 -3.64106e+11 -3.64106e+11 -9.26604e+09 4.80813e+11 4.80813e+11\n    -67472 -2.22551e+14 -2.22551e+14 3.92834e+07 1.57724e+13 1.57724e+13\n    -5.0378e+08 -2.22551e+14 -2.22551e+14 2.33334e+10 -4.75282e+13 -4.75282e+13\n    -1.11016e+09 -2.22551e+14 -2.22551e+14 3.32117e+10 -4.79868e+13 -4.79868e+13\n    -1.34809e+06 -1.10265e+14 -1.10265e+14 1.86729e+08 -4.9724e+13 -4.9724e+13\n    -9.88307e+06 -5.24559e+14 -5.24559e+14 -1.68476e+08 1.06099e+14 1.06099e+14\n    -1.15611e+06 -7.27994e+13 -7.27994e+13 -1.41131e+08 4.05615e+13 4.05615e+13\n    -980442 -1.81738e+13 -1.81738e+13 6.90831e+07 2.48541e+13 2.48541e+13\n    -1.00781e+08 -1.4597e+12 -1.4597e+12 2.29401e+09 1.12587e+12 1.12587e+12\n    -2.29498e+06 -5.24559e+14 -5.24559e+14 -3.61518e+08 -2.83376e+13 -2.83376e+13\n    -309804 -5.24559e+14 -5.24559e+14 -4.70927e+07 -3.45854e+13 -3.45854e+13\n    -13865 -5.24559e+14 -5.24559e+14 -1.27731e+07 -3.92958e+13 -3.92958e+13\n    -1.0284e+10 -3.52787e+14 -3.52787e+14 -7.83663e+10 -8.20847e+13 -8.20847e+13\n    -1.93585e+06 -3.63425e+14 -3.63425e+14 -9.27423e+07 6.22805e+13 6.22805e+13\n    -220555 -3.63425e+14 -3.63425e+14 1.51874e+06 4.55258e+13 4.55258e+13\n    -78392 -3.1182e+14 -3.1182e+14 -7.74062e+07 -1.10039e+13 -1.10039e+13\n    -2.03932e+06 -3.70959e+13 -3.70959e+13 2.23079e+08 6.12195e+13 6.12195e+13\n    -724400 -3.63425e+14 -3.63425e+14 -1.4328e+08 2.23541e+13 2.23541e+13\n    -139264 -3.63425e+14 -3.63425e+14 9.41002e+06 5.59947e+12 5.59947e+12\n    -27318 -3.63425e+14 -3.63425e+14 9.57975e+06 -4.55258e+13 -4.55258e+13\n    -1.94705e+07 -2.08354e+14 -2.08354e+14 2.87003e+09 -7.34549e+13 -7.34549e+13\n    -311128 -3.63425e+14 -3.63425e+14 -1.32985e+08 6.06356e+13 6.06356e+13\n    -5.74384e+08 -1.0002e+12 -1.0002e+12 -4.02646e+10 1.6823e+12 1.6823e+12\n    -5.23187e+07 -2.07128e+12 -2.07128e+12 -7.35669e+09 1.98585e+12 1.98585e+12\n    -1.77738e+07 -9.62428e+12 -9.62428e+12 3.19403e+09 1.67449e+13 1.67449e+13\n    -1.77928e+07 -3.63425e+14 -3.63425e+14 2.32491e+09 -5.82066e+13 -5.82066e+13\n    -288718 -3.63425e+14 -3.63425e+14 -2.6594e+07 -4.26996e+13 -4.26996e+13\n    -42434 -3.63425e+14 -3.63425e+14 -5.17523e+07 2.77326e+12 2.77326e+12\n    -7.2133e+10 -3.63425e+14 -3.63425e+14 -1.86415e+11 -9.28972e+13 -9.28972e+13\n    -6.39369e+10 -1.55874e+12 -1.55874e+12 2.07376e+11 2.35973e+12 2.35973e+12\n    -322348 -1.00585e+14 -1.00585e+14 6.49868e+07 2.64138e+13 2.64138e+13\n    -63157 -3.63425e+14 -3.63425e+14 1.4609e+07 4.26996e+13 4.26996e+13\n    -1.81731e+08 -4.64739e+11 -4.64739e+11 6.90731e+09 2.44935e+11 2.44935e+11\n    -258224 -3.63425e+14 -3.63425e+14 1.39737e+08 2.07093e+13 2.07093e+13\n    -4.00876e+07 -3.63425e+14 -3.63425e+14 7.19011e+09 -7.49612e+13 -7.49612e+13\n    -1.00694e+08 -3.63425e+14 -3.63425e+14 1.36334e+10 -7.61426e+13 -7.61426e+13\n    -8.5995e+07 -8.03662e+13 -8.03662e+13 3.33733e+09 -3.52808e+13 -3.52808e+13\n    -5.72174e+08 -1.06709e+14 -1.06709e+14 -4.20627e+09 1.65952e+14 1.65952e+14\n    -550016 -8.03413e+13 -8.03413e+13 -6.2677e+07 1.01651e+14 1.01651e+14\n    -478394 -1.2933e+14 -1.2933e+14 2.00402e+07 2.06147e+14 2.06147e+14\n    -1.36416e+08 -9.17634e+11 -9.17634e+11 -5.28366e+09 1.40665e+12 1.40665e+12\n    -3.06936e+06 -6.05708e+14 -6.05708e+14 9.28682e+07 -1.04378e+13 -1.04378e+13\n    -329860 -6.05708e+14 -6.05708e+14 -3.99497e+07 -7.72407e+13 -7.72407e+13\n    -39166 -6.05708e+14 -6.05708e+14 2.21804e+07 -8.19511e+13 -8.19511e+13\n    -1.11235e+11 -1.81817e+14 -1.81817e+14 -1.17571e+11 -3.81741e+13 -3.81741e+13\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n primEdgedata { 5\n    11757 12586 28017\n    65552\n    0 5\n    30234 30234 30234 0\n    131.703 115.29 2282.26 72.2175 59.1462 2129.06 939.83 259.302 51.8183 549.229 904.755 276.263 92.3108 578.039 120.609 234.956 234.82 146.119 237.546 743.532 100.669 573.049 43.009 63.2739 116.749 6215.42 168.03 1762.74 3864.11 55.7825 120.53 782.613 3846.16 137.667 121.352 101.794 8606.14 147.362 77.5146 198.503 573.917 81.358 1101.7 522.226 871.183 109.573 110.87 144.688 126.765 33.3146 34.0749 5144.71 4299.28 18477.9 96.8055 90.0376 231.86 11773.6 405.26 440.61 169.247 274.68 242.589 111.212 102.975 105.83\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 18167.2 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 31419.7 130560 130560 130560 130560 130560 130560 130560 130560\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 18167.2 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 31419.7 130560 130560 130560 130560 130560 130560 130560 130560\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n primBodydata { 5\n    11757 12586 28017\n    65552\n    0 5\n    30234 30234 30234 0\n    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 16795 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 23001.1 130560 130560 130560 130560 130560 130560 130560 130560\n    130560 130560 130560 130560 130560 15703.5 22545.4 21185 130560 130560 26795.2 130560 130560 130560 130560 81679.3 130560 130560 111296 64686.9 112021 18414.1 130560 130560 130560 130560 60434.8 12591.6 24709.3 130560 130560 130560 130560 130560 130560 130560 16795 130560 130560 130560 130560 130560 12274.2 18220.6 15075.8 130560 130560 27876.9 130560 130560 130560 58272.4 87806.9 130560 78064.5 130560 28962.9 23001.1 130560 130560 130560 130560 130560 130560 130560 130560\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    0 0 0 0 0 0\n    -1 -1 -1 -1\n    -1 -1 999999 999999\n    -1 -1 -1 -1\n    0.05 1.732 1.732\n    0.05 1.732 1.732\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n    0.05 0.866 0.866\n  }\n\n crop {0 0 2440 1802}\n \"Adjust Lighting\" 0\n \"Hybrid Matte\" 0\n \"Fine Tuning\" 0\n name Primatte2\n selected true\n xpos 762\n ypos -3388\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle35\n tile_color 0xffffffff\n selected true\n xpos 762\n ypos -3333\n}\nDot {\n name Dot54\n label \"Core\\nMatte\"\n note_font_size 60\n selected true\n xpos 796\n ypos -2008\n}\nDot {\n name Dot57\n selected true\n xpos 796\n ypos -1915\n}\nset N2f6a4100 [stack 0]\nDot {\n name Dot58\n note_font_size 41\n selected true\n xpos 796\n ypos -1215\n}\npush $N2f6bd600\npush $N60778800\nRemove {\n operation keep\n channels rgb\n name Remove30\n selected true\n xpos 2026\n ypos -3816\n}\nDot {\n name Dot17\n note_font_size 41\n selected true\n xpos 2060\n ypos -3473\n}\nIBKGizmoV3 {\n inputs 2\n name IBKGizmoV3_3\n xpos 2026\n ypos -2980\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle36\n tile_color 0xffffffff\n selected true\n xpos 2026\n ypos -2929\n}\nDot {\n name Dot59\n label \"Edge\\nMatte\"\n note_font_size 60\n selected true\n xpos 2060\n ypos -1448\n}\nMerge2 {\n inputs 2\n operation screen\n bbox B\n name Merge4\n selected true\n xpos 2026\n ypos -1219\n}\nDot {\n name Dot60\n label \"Combined\\nMatte\"\n note_font_size 60\n selected true\n xpos 2060\n ypos -625\n}\nDot {\n name Dot61\n label \"Combined\\nMatte\"\n note_font_size 60\n selected true\n xpos -881\n ypos -625\n}\npush $N60779d00\nRemove {\n channels rgba\n name Remove32\n selected true\n xpos -1172\n ypos -4270\n}\nNoOp {\n name Anchor_217ff93ec8\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos -1172\n ypos -4221\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS Utils\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"GS Utils\"}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_217ff93ec8}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nNoOp {\n name Stamp44\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos -1271\n ypos -1014\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS Utils\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"GS Utils\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" T \"<i>creating GS channel,Advanced Keying Template</i>\"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_217ff93ec8\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nDot {\n name Dot10\n note_font_size 41\n selected true\n xpos -1237\n ypos -936\n}\nDot {\n name Dot286\n note_font_size 41\n selected true\n xpos -1104\n ypos -936\n}\nset N2f61f200 [stack 0]\nDot {\n name Dot287\n note_font_size 41\n selected true\n xpos -1104\n ypos -886\n}\npush $N2f61f200\npush $N2f6a4100\nDot {\n name Dot288\n note_font_size 41\n selected true\n xpos 411\n ypos -1915\n}\nGroup {\n name ExponBlurSimple4\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixels').setRange(0, 400)\\nn.knob('adjustBBoxPercent').setRange(1, 2)\\nn.knob('safeBBoxPixels').setRange(0, 400)\\nn.knob('safeBBoxPercent').setRange(1, 2)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n        \\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n        \\nelif k.name() == \\\"steps\\\":\\n    \\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        \\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n        \\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('mult').getValue()\\n        \\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, b1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression(\\\"(Blur1.size)*(mult)**%s\\\"%(i))\\n            b\\[\\\"label\\\"].setValue(\\\"\\[value size]\\\")\\n            merge.setInput(i if i<2 else i+1, b)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n            \\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n            \\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n        \\nelif k.name() == \\\"safeBBox\\\":\\n    if n.knob(\\\"safeBBox\\\").getValue() == 0:\\n        n.knob('safeBBoxText').setVisible(False)\\n        n.knob('safetyBBoxMethod').setVisible(False)\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n        \\n    elif n.knob(\\\"safeBBox\\\").getValue() == 1:\\n        n.knob('safetyBBoxMethod').setVisible(True)\\n        n.knob('safeBBoxText').setVisible(True)\\n        if n.knob('safetyBBoxMethod').value() == \\\"pixels\\\":\\n            n.knob('safeBBoxPixels').setVisible(True)\\n            n.knob('safeBBoxPercent').setVisible(False)\\n        elif n.knob('safetyBBoxMethod').value() == \\\"percent\\\":\\n            n.knob('safeBBoxPixels').setVisible(False)\\n            n.knob('safeBBoxPercent').setVisible(True)\\n            \\nelif k.name() == \\\"safetyBBoxMethod\\\":\\n    if n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"pixels\\\":\\n        n.knob('safeBBoxPixels').setVisible(True)\\n        n.knob('safeBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"safetyBBoxMethod\\\").value() == \\\"percent\\\":\\n        n.knob('safeBBoxPixels').setVisible(False)\\n        n.knob('safeBBoxPercent').setVisible(True)\\n        \\nelif k.name() == \\\"adjustBBoxExtra\\\":\\n    if n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"pixels\\\":\\n        n.knob('adjustBBoxPixels').setVisible(True)\\n        n.knob('adjustBBoxPercent').setVisible(False)\\n    elif n.knob(\\\"adjustBBoxExtra\\\").value() == \\\"percent\\\":\\n        n.knob('adjustBBoxPixels').setVisible(False)\\n        n.knob('adjustBBoxPercent').setVisible(True)\\n\"\n tile_color 0xcc804eff\n label \"(\\[value output2])\"\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n xpos 377\n ypos -1675\n addUserKnob {20 ExponBlurSimple}\n addUserKnob {41 channels T Remove1.channels}\n addUserKnob {41 maskChannelMask_1 l area T Multiply1.maskChannelMask}\n addUserKnob {41 inject_1 l inject -STARTLINE T Multiply1.inject}\n addUserKnob {41 invert_mask_1 l invert -STARTLINE T Multiply1.invert_mask}\n addUserKnob {41 fringe_1 l fringe -STARTLINE T Multiply1.fringe}\n addUserKnob {26 \"\"}\n addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n steps 4\n addUserKnob {26 text l \" \" -STARTLINE T \" \"}\n addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n includeOriginal true\n addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n addUserKnob {14 size l Size R -100 100}\n size -3\n addUserKnob {7 mult l Multiplier R 1 5}\n mult 3\n addUserKnob {6 clamp +STARTLINE}\n addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {20 bboxControl l \"BBox Control\" n 1}\n bboxControl 0\n addUserKnob {26 text_2 l \" \" T \" \"}\n addUserKnob {4 bbox l \"BBox: \" -STARTLINE M {union intersectionMask A B \"input format\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n addUserKnob {6 safeBBox l \"Safe BBox\" t \"If the output BBox is larger than the input format and the input box combined. the result will be max of the input/format bbox plus a safety \\\"buffer\\\" in pixels or percent \\n\\nTurning off might make your BBox grow exponentially with high blur values\" -STARTLINE}\n safeBBox true\n addUserKnob {26 safeBBoxText l \"\" +STARTLINE T \" \"}\n addUserKnob {4 safetyBBoxMethod l \"Safe BBox Buffer  \" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n safetyBBoxMethod percent\n addUserKnob {14 safeBBoxPixels l \"\" -STARTLINE +HIDDEN R 0 400}\n safeBBoxPixels 100\n addUserKnob {14 safeBBoxPercent l \"\" -STARTLINE R 1 2}\n safeBBoxPercent 1.1\n addUserKnob {26 text_3 l \"\" +STARTLINE T \" \"}\n addUserKnob {4 adjustBBoxExtra l \"Extra BBox Adjust\" -STARTLINE M {pixels percent \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n adjustBBoxPercent 1\n addUserKnob {14 adjustBBoxPixels l \"\" -STARTLINE R 0 400}\n addUserKnob {26 \"\"}\n addUserKnob {20 endGroup n -1}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n addUserKnob {26 desc l Description: T ExponBlurSimple}\n addUserKnob {26 ver l Version: T v03}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x535e5a00\n  label \"BBox Management\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos -529\n  ypos 492\n  bdwidth 341\n  bdheight 525\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 0\n  ypos -969\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 34\n  ypos -802\n }\nset N2f61c800 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -367\n  ypos -802\n }\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -367\n  ypos 434\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos -367\n  ypos 623\n }\nset N2f5f3200 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos -367\n  ypos 675\n }\nset N2f5f2b00 [stack 0]\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos -463\n  ypos 675\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos -463\n  ypos 831\n }\npush $N2f61c800\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 461\n  ypos -802\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos 427\n  ypos -718\n }\n Dot {\n  name Dot21\n  note_font_size 41\n  xpos 461\n  ypos -597\n }\nset N2f5f0800 [stack 0]\n Invert {\n  name Invert1\n  xpos 695\n  ypos -604\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\nset N2f5f0100 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 540\n  ypos -543\n }\n NoOp {\n  name Original\n  xpos 506\n  ypos -327\n }\nset N2f3cf200 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 540\n  ypos 14\n }\n Crop {\n  inputs 0\n  box {{\"!\\[exists parent.input0] ? 0 : input.format.x\"} {\"!\\[exists parent.input0] ? 0 : input.format.y\"} {\"!\\[exists parent.input0] ? 0 : input.format.r\"} {\"!\\[exists parent.input0] ? 0 : input.format.t\"}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 210\n  ypos -750\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 210\n  ypos -724\n }\npush $N2f61c800\n Merge2 {\n  inputs 2\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 83\n  ypos -671\n }\n NoOp {\n  name BBoxInput\n  xpos 83\n  ypos -628\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\npush $N2f3cf200\n Input {\n  inputs 0\n  name Inputarea\n  xpos 289\n  ypos -638\n  number 2\n }\n AddChannels {\n  channels alpha\n  color 1\n  name AddChannels1\n  xpos 289\n  ypos -580\n }\n Invert {\n  channels rgba\n  name Invert3\n  xpos 289\n  ypos -503\n }\npush $N2f5f0100\n Multiply {\n  inputs 1+1\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 695\n  ypos -512\n }\n NoOp {\n  name Start\n  xpos 695\n  ypos -450\n }\nset N2f3ad600 [stack 0]\n Blur {\n  size {{(Blur1.size)*(mult)**3} {(Blur1.size)*(mult)**3}}\n  crop false\n  name Blur4\n  label \"\\[value size]\"\n  xpos 995\n  ypos -370\n }\npush $N2f3ad600\n Blur {\n  size {{(Blur1.size)*(mult)**2} {(Blur1.size)*(mult)**2}}\n  crop false\n  name Blur3\n  label \"\\[value size]\"\n  xpos 895\n  ypos -370\n }\npush 0\npush $N2f3ad600\n Blur {\n  size {{(Blur1.size)*(mult)**1} {(Blur1.size)*(mult)**1}}\n  crop false\n  name Blur2\n  label \"\\[value size]\"\n  xpos 795\n  ypos -370\n }\npush $N2f3ad600\n Blur {\n  size {{parent.size.w} {parent.size.h}}\n  name Blur1\n  label \"\\[value size]\"\n  xpos 695\n  ypos -370\n }\n Merge2 {\n  inputs 5+1\n  operation {{mergeNumber.mergeNumber}}\n  also_merge all\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos -273\n }\n NoOp {\n  name End\n  xpos 695\n  ypos -230\n }\nset N2f386b00 [stack 0]\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 585\n  ypos -175\n }\n Group {\n  name BBoxToFormat\n  onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n  tile_color 0xa57aaaff\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 585\n  ypos -151\n  addUserKnob {20 CropBBox}\n  addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n  addUserKnob {41 intersect T Crop6.intersect}\n  addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n  addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n  overscanType {{parent.safetyBBoxMethod}}\n  addUserKnob {14 overscan l Overscan R 0 400}\n  overscan {{parent.safeBBoxPixels} {parent.safeBBoxPixels}}\n  addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n  overscanPercent {{parent.safeBBoxPercent} {parent.safeBBoxPercent}}\n  addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n  addUserKnob {15 inputFormat l \"Input Format\"}\n  inputFormat {0 0 {input.width} {input.height}}\n  addUserKnob {15 inputBBox l \"Input BBox\"}\n  inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n  addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n  outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n  addUserKnob {15 outputBBox l \"Output BBox\"}\n  outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n  addUserKnob {20 endGroup n -1}\n  addUserKnob {20 info_1 l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos 261\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos 295\n   ypos 462\n  }\nset N2f384f00 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos -160\n   ypos 462\n  }\nset N2f384800 [stack 0]\npush $N2f384f00\n  Crop {\n   box {{parent.inputBBox} {parent.inputBBox} {parent.inputBBox} {parent.inputBBox}}\n   crop {{parent.blackOutside}}\n   name Crop6\n   xpos 261\n   ypos 510\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\nset N2f384100 [stack 0]\n  Remove {\n   operation keep\n   channels none\n   name Remove1\n   xpos 120\n   ypos 504\n  }\nset N2f357900 [stack 0]\n  Transform {\n   scale {{parent.overscanPercent} {parent.overscanPercent}}\n   center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n   shutteroffset centred\n   name Transform1\n   selected true\n   xpos 120\n   ypos 553\n  }\npush $N2f357900\n  AdjBBox {\n   numpixels {{parent.overscan} {parent.overscan}}\n   name AdjBBox1\n   xpos -5\n   ypos 510\n  }\n  Switch {\n   inputs 2\n   which {{overscanType}}\n   name Switch2\n   label \"\\[value which]\"\n   xpos -5\n   ypos 549\n  }\n  Merge2 {\n   inputs 2\n   bbox intersection\n   Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n   name Merge1\n   xpos -5\n   ypos 647\n   disable {{!parent.Crop6.intersect}}\n  }\npush $N2f384800\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -194\n   ypos 653\n  }\n  BlackOutside {\n   name BlackOutside1\n   xpos -194\n   ypos 692\n   disable {{!parent.blackOutside}}\n  }\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos -160\n   ypos 769\n  }\npush $N2f384100\n  Switch {\n   inputs 2\n   which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 261\n   ypos 759\n  }\nset N2f354100 [stack 0]\n  Output {\n   name Output1\n   xpos 261\n   ypos 921\n  }\npush $N2f354100\n  NoOp {\n   name OutputBBox1\n   xpos 378\n   ypos 821\n   addUserKnob {20 User}\n   addUserKnob {15 OutputBBox l \"Output BBox\"}\n   OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n   outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n  }\n end_group\npush $N2f386b00\n Merge2 {\n  inputs 2\n  bbox intersection\n  also_merge all\n  name Merge4\n  xpos 585\n  ypos -127\n }\npush $N2f386b00\n CopyBBox {\n  inputs 2\n  name CopyBBox2\n  xpos 585\n  ypos -101\n }\npush $N2f386b00\n Switch {\n  inputs 2\n  which {{\"parent.safeBBox && ((BBoxResult.bbox.x < BBoxInput.bbox.x || BBoxResult.bbox.y < BBoxInput.bbox.y || BBoxResult.bbox.r > BBoxInput.bbox.r || BBoxResult.bbox.t > BBoxInput.bbox.t))\"}}\n  name Switch2\n  label \"\\[value which]\"\n  xpos 695\n  ypos -106\n }\n Grade {\n  channels all\n  whitepoint 5\n  black_clamp false\n  name AverageMult\n  xpos 695\n  ypos -37\n  disable {{\"output2 == 4 ? 0 : 1\"}}\n }\n Merge2 {\n  inputs 2\n  operation max\n  also_merge all\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 695\n  ypos 10\n  disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n }\n Clamp {\n  name Clamp1\n  selected true\n  xpos 695\n  ypos 50\n  disable {{!parent.clamp}}\n }\n Blur {\n  size {{postBlur} {postBlur}}\n  name BlurOriginal\n  label \"\\[value size]\"\n  xpos 695\n  ypos 102\n }\n Invert {\n  name Invert2\n  xpos 695\n  ypos 144\n  disable {{\"parent.size < 0 ? 0 : 1\"}}\n }\npush $N2f5f0800\n Switch {\n  inputs 2\n  which {{\"parent.size == 0 ? 0 : 1\"}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 427\n  ypos 190\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 34\n  ypos 455\n }\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 34\n  ypos 579\n }\nset N2f305600 [stack 0]\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -260\n  ypos 579\n }\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -260\n  ypos 799\n }\npush $N2f5f3200\n Input {\n  inputs 0\n  name Inputmask\n  xpos 512\n  ypos 322\n  number 1\n }\n Dot {\n  name Dot19\n  label Mask\n  note_font_size 41\n  xpos 546\n  ypos 435\n }\nset N2f4cf900 [stack 0]\n Dot {\n  name Dot20\n  note_font_size 41\n  xpos 436\n  ypos 435\n }\npush $N2f305600\n Merge2 {\n  inputs 2\n  bbox intersection\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeIntersection\n  xpos 402\n  ypos 572\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Merge2 {\n  inputs 2\n  Achannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue rgba.alpha}\n  name MergeUnion\n  xpos 402\n  ypos 610\n  disable {{\"!\\[exists parent.input1]\"}}\n }\n Dot {\n  name Dot6\n  label \"intersection\\nof (Mask and A) + B\"\n  note_font_size 14\n  note_font_color 0xffffffff\n  xpos 436\n  ypos 770\n }\npush $N2f4cf900\n Dot {\n  name Dot10\n  note_font_size 41\n  xpos 546\n  ypos 672\n }\npush $N2f305600\npush $N2f5f2b00\n Merge2 {\n  inputs 2+1\n  operation copy\n  Achannels none\n  Bchannels none\n  output none\n  also_merge {{{parent.Remove1.channels}}}\n  name MergeKeymix\n  xpos 0\n  ypos 665\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 34\n  ypos 747\n }\nset N2f4cc800 [stack 0]\npush $N2f5f2b00\n CopyBBox {\n  inputs 2\n  name CopyBBoxUnion\n  xpos -401\n  ypos 743\n  disable {{parent.bbox==0?0:1}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxIntersection\n  xpos -401\n  ypos 769\n  disable {{\"parent.bbox==1 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxA\n  xpos -401\n  ypos 795\n  disable {{\"parent.bbox==2 ? 0 : 1\"}}\n }\n CopyBBox {\n  inputs 2\n  name CopyBBoxB\n  xpos -401\n  ypos 827\n  disable {{\"parent.bbox==3 ? 0 : 1\"}}\n }\n Crop {\n  box {0 0 {parent.width} {parent.height}}\n  crop false\n  name CopyBBoxFormat\n  xpos -401\n  ypos 853\n  disable {{\"parent.bbox==4 ? 0 : 1\"}}\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\nset N2f4a2400 [stack 0]\n Transform {\n  scale {{parent.adjustBBoxPercent} {parent.adjustBBoxPercent}}\n  center {{((input.bbox.r-input.bbox.x)/2)+input.bbox.x} {((input.bbox.t-input.bbox.y)/2)+input.bbox.y}}\n  black_outside false\n  shutteroffset centred\n  name TransformBBoxAdjustPercent\n  xpos -516\n  ypos 898\n }\npush $N2f4a2400\n AdjBBox {\n  numpixels {{parent.adjustBBoxPixels} {parent.adjustBBoxPixels}}\n  name AdjBBoxPixels\n  xpos -401\n  ypos 901\n }\n Switch {\n  inputs 2\n  which {{adjustBBoxExtra}}\n  name Switch3\n  xpos -401\n  ypos 940\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -367\n  ypos 993\n }\npush $N2f4cc800\n CopyBBox {\n  inputs 2\n  name CopyBBox\n  xpos 0\n  ypos 989\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 0\n  ypos 1015\n  disable {{!parent.blackOutside}}\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 1155\n }\n NoOp {\n  inputs 0\n  name mergeNumber\n  xpos 229\n  ypos -862\n  addUserKnob {20 User}\n  addUserKnob {3 mergeNumber}\n  mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n }\npush $N2f386b00\n NoOp {\n  name BBoxResult\n  xpos 585\n  ypos -230\n  addUserKnob {20 User}\n  addUserKnob {15 bbox}\n  bbox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n }\nend_group\nDot {\n name Dot289\n note_font_size 41\n selected true\n xpos 411\n ypos -1508\n}\nDot {\n name Dot290\n label \"Core\\nMatte\"\n note_font_size 60\n selected true\n xpos -660\n ypos -1508\n}\nDot {\n name Dot291\n note_font_size 41\n selected true\n xpos -770\n ypos -1508\n}\nset N2f47cf00 [stack 0]\npush $N60779600\nDot {\n name Dot67\n selected true\n xpos -2648\n ypos -3937\n}\nRemove {\n operation keep\n channels rgb\n name Remove33\n selected true\n xpos -2682\n ypos -3816\n}\nDot {\n name Dot292\n selected true\n xpos -2648\n ypos -3454\n}\nset N2f45b900 [stack 0]\nGroup {\n name apDespill1\n help \"apDespill v2.0 by Adrian Pueyo\\n\\nGizmo to despill an image, with options to despill any hue (and not only the primaries), select different algorithms for de/respilling, and protect tones from the despill.\\n\\nIf you just want a basic despill, its default values should already be enough and the tool will avoid any extra calculations.\\n\\nv2 includes a new \\\"absolute\\\" mode which lets you basically perform a key, or do a \\\"despill to color\\\" operation. Also, the despill color, respill color and limit can now be plugged as image inputs if you wish, letting you perform a fully image-based despill or key, sort of iKeylight. Additionally, it allows you to perform the despill under a colorspace sandwich, for the artists who prefer to loop through different colorspaces in order to find one that works. Thanks to Tony Lyons the best feedback!\\n\\nadrianpueyo.com, 2014-2021\"\n onCreate \"n = nuke.thisNode()\\nn\\['tolerance'].setRange(0,2)\\nn\\['prot1_tolerance'].setFlag(0x00000004)\\nn\\['prot1_effect'].setFlag(0x00000004)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"color\\\":\\n    kv = k.getValue()\\n    custom_weight_labels = \\[\\\"green - blue\\\", \\\"red - blue\\\", \\\"red - green\\\", \\\" \\\"]\\n    n\\[\\\"custom_weight\\\"].setLabel(custom_weight_labels\\[int(kv)])\\n    n\\[\\\"pick\\\"].setVisible(k.getValue() == 3)\\nelif kn == \\\"mode\\\":\\n    n\\[\\\"custom_weight\\\"].setVisible(n\\[\\\"mode\\\"].getValue()==3)\\nelif kn in \\[\\\"out\\\",\\\"output_alpha\\\"]:\\n    n\\[\\\"respill_math\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0 or n\\[\\\"output_alpha\\\"].getValue()==1)\\n    n\\[\\\"respill_color\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0)\\n    n\\[\\\"inverted_spill_matte\\\"].setEnabled(n\\[\\\"output_alpha\\\"].value())\\nelif kn == \\\"prot1_activate\\\":\\n    protA = n\\[\\\"prot1_activate\\\"].value()\\n    n\\[\\\"prot1_preview\\\"].setEnabled(protA)\\n    for i in \\[\\\"prot1\\\", \\\"prot1_tolerance\\\", \\\"prot1_falloff\\\",\\\"prot1_effect\\\"]:\\n        n\\[i].setVisible(protA)\\nelif kn == \\\"inputChange\\\":\\n    n.knobs()\\[\\\"limit_channel\\\"].setVisible(n.input(3) is not None)\\n    n.knobs()\\[\\\"invert_limit_channel\\\"].setVisible(n.input(3) is not None)\\n    color_enabled = nuke.toNode(\\\"apDespillKernel\\\")\\[\\\"apDespillKernel_use_color_input\\\"].getValue()==0\\n    n\\[\\\"color\\\"].setEnabled(color_enabled)\\n    n.knobs()\\[\\\"pick\\\"].setEnabled(color_enabled)\\n    n\\[\\\"info_using_input_color\\\"].setVisible(not color_enabled)\\nelif kn == \\\"colorspace_shift\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_out\\\", \\\"illuminant_out\\\", \\\"primary_out\\\"]:\\n        n.knobs()\\[i].setEnabled(kv)\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setEnabled(kv and n\\[\\\"input_colorspace\\\"].value())\\n    n\\[\\\"input_colorspace\\\"].setEnabled(kv)\\nelif kn == \\\"input_colorspace\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setVisible(kv)\\n        n.knobs()\\[i].setEnabled(kv)\\nelif kn == \\\"imagebased\\\":\\n    kv = k.value()\\n    input_names = \\[\\\"color\\\",\\\"limit\\\",\\\"respill\\\"]\\n    if kv:\\n        for i_name in input_names:\\n            i_fullname = \\\"Input\\\"+i_name\\n            if not nuke.exists(i_fullname):\\n                i_node = nuke.nodes.Input()\\n                i_node\\[\\\"name\\\"].setValue(i_fullname)\\n            else:\\n                i_node = nuke.toNode(i_fullname)\\n            dot = nuke.toNode(\\\"Dot\\\"+i_name)\\n            i_node.setXYpos(dot.xpos(),dot.ypos()-40)\\n            dot.setInput(0,i_node)\\n    else:\\n        # If something connected, do nothing\\n        if not any(\\[n.input(i) for i in \\[2,3,4]]):\\n            for i_name in input_names:\\n                if nuke.exists(\\\"Input\\\"+i_name):\\n                    nuke.delete(nuke.toNode(\\\"Input\\\"+i_name))\\n        else:\\n            k.setValue(True)\"\n tile_color 0x8b8b8bff\n selected true\n xpos -2682\n ypos -3265\n addUserKnob {20 apDespill}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 imagebased l image-based t \"Show or hide image-based inputs.\\n\\nThis doesn't change anything internally except hiding inputs, just to avoid intimidating arrows on the node graph.\\n\\nNote: While any image-based input is connected, this won't let you hide them.\" +STARTLINE}\n addUserKnob {6 absolute_mode l \"absolute mode\" t \"Absolute mode performs a keying algorithm instead of a regular despill, so that you can do a \\\"spill to colour\\\" or even use this node as an image-based Keylight.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {4 color t \"Select a primary as a starting point, or custom to show RGB controls to select any color.\\n\\nNote: If an image is plugged on the color input, this will get overwritten by the input.\" M {red green blue custom \"\" \"\" \"\"}}\n color custom\n addUserKnob {26 info_using_input_color l \" \" -STARTLINE +HIDDEN T \"<i><font color=#AAA> (Using color from input)\"}\n addUserKnob {18 pick t \"Pick the color you'd like to use for the despill. \\n\\nPlease use ctrl/cmd+alt+click for picking.\\n\\nNOTE: If a despill color image input is plugged, this value will be ignored.\"}\n pick {0 0 1}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 pick_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 dfg_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {4 out l output t \"Quick switch to output the despilled image or the substracted one.\" M {despill spill}}\n addUserKnob {6 output_alpha l \"output spill matte in alpha\" t \"Output the spill luminance in the alpha channel.\" +STARTLINE}\n output_alpha true\n addUserKnob {6 inverted_spill_matte l inverted t \"Invert the output spill matte (in the alpha channel), especially useful when the despill is set to Absolute mode, in which case this will output a keying-like alpha.\" -STARTLINE}\n inverted_spill_matte true\n addUserKnob {4 mode l \"despill math\" t \"average = avg of other two channels\\nmaximum = max of other two channels\\nminimum = min of other two channels\\ncustom = select custom weights\" M {average maximum minimum custom \"\"}}\n addUserKnob {7 custom_weight l \" \" t \"-1 = only capped by the first channel\\n0 = capped by avg of both\\n1 = only capped by the second channel\" -STARTLINE +HIDDEN R -1 1}\n addUserKnob {26 \"\"}\n addUserKnob {6 colorspace_shift l \"alt colorspace\" t \"This allows for the popular artistic approach to refining the despill where you browse through colorspace conversions (mainly white point and primaries) and choose one that matches your desired despill bias.\\n\\n<b>Tip:</b> Double click on a dropdown and use the Page Up and Page Down keys on your keyboard to browse quickly through the items.\\n\\n<b>Note:</b> There's no need at all for the values of these dropdowns to match your working colorspace, so you can leave it as-is or tweak it if you prefer, regardless of the colorspace you're comping at (e.g. ACEScg). It is literally an artistic conversion prior to the despill algorithm that then gets reverted.\" +STARTLINE}\n colorspace_shift true\n addUserKnob {6 input_colorspace l \"input colorspace\" t \"Also tweak the input colorspace for the back and forth colorspace conversion. This is generally not needed however, as this colorspace conversion is generally only used for artistic purposes.\" -STARTLINE}\n addUserKnob {6 log_space l log t \"Perform Lin2Log -> Despill -> Log2Lin.\" -STARTLINE}\n addUserKnob {41 colorspace_in l \"in colorspace\" +DISABLED +HIDDEN T Colorspace1.colorspace_in}\n addUserKnob {41 illuminant_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.illuminant_in}\n addUserKnob {41 primary_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.primary_in}\n addUserKnob {41 colorspace_out l \"despill space\" T Colorspace1.colorspace_out}\n addUserKnob {41 illuminant_out l \"\" -STARTLINE T Colorspace1.illuminant_out}\n addUserKnob {41 primary_out l \"\" -STARTLINE T Colorspace1.primary_out}\n addUserKnob {26 \"\"}\n addUserKnob {7 hue_offset l \"hue offset\" t \"Rotate the despill vectors to despill an arbitrary tone other than the primaries or the picked color.\\nNote: A rotation of +-120 degrees is the same as selecting a different color channel.\" R -30 30}\n addUserKnob {7 tolerance l limit t \"Use this to multiply the hue tolerance (the limiter value). You can move it all the way down to 0 to completely remove a hue from your image.\\n\\n<b>NOTE:</b> If an image is plugged into the <i>limit</i> input, this will act as a multiplier.\" R 0 2}\n tolerance 1\n addUserKnob {41 limit_channel l \"limit channel\" +HIDDEN T CopyLimit.from0}\n addUserKnob {6 invert_limit_channel l invert t \"The recommended workflow for the image-based limit is keeping this invert turned on, so that the higher the value of the limit channel, the lower the limit gets.\" -STARTLINE +HIDDEN}\n invert_limit_channel true\n addUserKnob {6 prot1_activate l \"protect tones\" t \"Enable controls to select tones to protect from despilling.\" +STARTLINE}\n addUserKnob {6 prot1_preview l preview t \"Output the protected tones.\" -STARTLINE +DISABLED}\n addUserKnob {18 prot1 l protect t \"Pick the central hue to protect.\\n(ctrl/cmd+alt+click)\" +HIDDEN}\n prot1 {0 0 0}\n addUserKnob {6 prot1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 prot1_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 prot1_tolerance l tolerance t \"Amount of hues to include in the selection.\" +HIDDEN}\n prot1_tolerance 0.2\n addUserKnob {7 prot1_falloff l falloff t \"Falloff for the hue selection. A higher falloff will make hues apart from the picked one lose weight more quickly.\" +HIDDEN R 0 4}\n prot1_falloff 2\n addUserKnob {7 prot1_effect l effect t \"Multiplier for the hue protection, and for the spill limit value.\" +HIDDEN R 0 10}\n prot1_effect 1\n addUserKnob {26 respill_divider l \"\" +STARTLINE}\n addUserKnob {4 respill_math l \"spill math\" t \"Settings for the math for desaturating the the spill before adding it back.\" M {\"Rec 709\" \"Ccir 601\" \"Rec 2020\" Average Maximum \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {18 respill_color l \"respill color\" t \"RGB multiplier for the desaturated spill when adding it back.\\n\\nIf used on non-degrained plates (which should be avoided anyway), any value other than 1 here will most likely produce grain artifacts.\\n\\nNOTE: If a respill image input is plugged, this value will act as a multiplier.\" R 0 4}\n respill_color 1\n addUserKnob {6 respill_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 respill_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T Merge.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \"\" t \"apDespill v2.0\\n13 April, 2021\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apDespill v2.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2014-2021</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 273\n  ypos -370\n  number 1\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 307\n  ypos -267\n }\nset N54f5e400 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 307\n  ypos -237\n }\n Dot {\n  inputs 0\n  name Dotrespill\n  label Dotrespill\n  note_font \"Verdana Bold\"\n  xpos 1190\n  ypos -525\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_spill\n  xpos 1156\n  ypos -442\n }\n Dot {\n  inputs 0\n  name Dotcolor\n  label Dotcolor\n  note_font \"Verdana Bold\"\n  xpos 1080\n  ypos -593\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_color\n  xpos 1046\n  ypos -499\n }\n Dot {\n  inputs 0\n  name Dotlimit\n  label Dotlimit\n  note_font \"Verdana Bold\"\n  xpos 936\n  ypos -732\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle_limit\n  label \"\\[value in]\"\n  xpos 902\n  ypos -670\n }\n Input {\n  inputs 0\n  name Inputimage\n  xpos 449\n  ypos -761\n }\nset N54f59d00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 788\n  ypos -758\n }\n Shuffle {\n  alpha black\n  name Shuffle\n  xpos 754\n  ypos -694\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyLimit\n  xpos 754\n  ypos -670\n }\n Invert {\n  channels alpha\n  name InvertLimit\n  xpos 754\n  ypos -611\n  disable {{!invert_limit_channel}}\n }\n Colorspace {\n  name Colorspace1\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -544\n  disable {{!parent.colorspace_shift}}\n }\n Log2Lin {\n  operation lin2log\n  name Log2Lin1\n  xpos 754\n  ypos -508\n  disable {{!log_space}}\n }\n BlinkScript {\n  inputs 3\n  recompileCount 94\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apDespillKernel\\\" iterate pixelWise 857ee5211c9dc340b8743026c9778403c1424a4ec1afa5c7990e55b71f93720c 4 \\\"src\\\" Read Point \\\"color_src\\\" Read Point \\\"spill_src\\\" Read Point \\\"dst\\\" Write Point 21 \\\"limit\\\" Float 1 AACAPw== \\\"shift\\\" Float 1 AAAAAA== \\\"weights\\\" Float 1 AAAAAA== \\\"outmode\\\" Int 1 AAAAAA== \\\"output_alpha\\\" Int 1 AAAAAA== \\\"output_alpha_inverted\\\" Int 1 AAAAAA== \\\"clr\\\" Int 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== \\\"respill_math\\\" Int 1 AAAAAA== \\\"respill_color\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_on\\\" Int 1 AAAAAA== \\\"prot1_preview\\\" Int 1 AAAAAA== \\\"prot1\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_tolerance\\\" Float 1 AAAAAA== \\\"prot1_mult\\\" Float 1 AAAAAA== \\\"prot1_falloff\\\" Float 1 AAAAAA== \\\"pickSpill\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"despill_method\\\" Int 1 AAAAAA== \\\"use_color_input\\\" Int 1 AAAAAA== \\\"use_spill_input\\\" Int 1 AAAAAA== \\\"use_limit_input\\\" Int 1 AAAAAA== 21 \\\"limit\\\" 1 1 \\\"shift\\\" 1 1 \\\"weights\\\" 1 1 \\\"outmode\\\" 1 1 \\\"output_alpha\\\" 1 1 \\\"output_alpha_inverted\\\" 1 1 \\\"clr\\\" 1 1 \\\"mode\\\" 1 1 \\\"respill_math\\\" 1 1 \\\"respill_color\\\" 4 1 \\\"prot1_on\\\" 1 1 \\\"prot1_preview\\\" 1 1 \\\"prot1\\\" 3 1 \\\"prot1_tolerance\\\" 1 1 \\\"prot1_mult\\\" 1 1 \\\"prot1_falloff\\\" 1 1 \\\"pickSpill\\\" 3 1 \\\"despill_method\\\" 1 1 \\\"use_color_input\\\" 1 1 \\\"use_spill_input\\\" 1 1 \\\"use_limit_input\\\" 1 1 7 \\\"_usePicked\\\" Int 1 1 AAAAAA== \\\"_clr\\\" Int 1 1 AAAAAA== \\\"_ret\\\" Int 1 1 AAAAAA== \\\"_hueShift\\\" Float 1 1 AAAAAA== \\\"_autoShift\\\" Float 1 1 AAAAAA== \\\"despillColor\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"vNorm\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"//---------------------------------------------------------\\n// apDespillKernel - apDespill v1.0 by Adrian Pueyo\\n//\\n// Despill an image, with options to despill any hue (and\\n// not only the primaries), select different algorithms for\\n// des/respilling, and protect tones from the despill.\\n//\\n// v2.0: Ability to plug image inputs for the controls,\\n// and to perform a full key and respill.\\n//\\n// adrianpueyo.com, 2014-2017\\n// ---------------------------------------------------------\\n\\ninline float y_convert_ccir601(const float4 in)\\{\\n  return in.x * 0.299f + in.y * 0.587f + in.z * 0.114f;\\n\\}\\n\\ninline float y_convert_rec709(const float4 in)\\{\\n  return in.x * 0.2125f + in.y * 0.7154f + in.z * 0.0721f;\\n\\}\\n\\ninline float y_convert_rec2020(const float4 in)\\{\\n  return in.x * 0.2627f + in.y * 0.678f + in.z * 0.0593f;\\n\\}\\n\\ninline float4 hueRotate(const float4 in, const float H)\\{\\n  if(H==0.0f)\\{\\n    return in;\\n  \\}else\\{\\n    float cosH = cos(H*PI/180);\\n    float sinH = sin(H*PI/180);\\n    float3 ret;\\n    ret.x = (in.x+in.y+in.z)*(1-cosH)/3 + in.x*cosH + (-in.y/sqrt(3.0f)+in.z/sqrt(3.0f))*sinH;\\n    ret.y = (in.x+in.y+in.z)*(1-cosH)/3 + in.y*cosH + (in.x/sqrt(3.0f)-in.z/sqrt(3.0f))*sinH;\\n    ret.z = (in.x+in.y+in.z)*(1-cosH)/3 + in.z*cosH + (-in.x/sqrt(3.0f)+in.y/sqrt(3.0f))*sinH;\\n    return float4(ret.x,ret.y,ret.z,in\\[3]);\\n  \\}\\n\\}\\n\\nfloat3 vecToPlane(float3 v1, float3 v2 = float3(1.0f,1.0f,1.0f))\\{\\n  float3 v1onv2;\\n  v1onv2 = v2 * float((float(dot(v2,v1))/float(dot(v2,v2)))); //Projection of vector on another (plane's normal)\\n  return v1-v1onv2; //Projection of vector on plane\\n\\}\\n\\ninline float3 myCross(float3 a, float3 b)\\{\\n  return float3(float(a.y*b.z-a.z*b.y),float(a.z*b.x-a.x*b.z),float(a.x*b.y-a.y*b.x));\\n\\}\\n\\ninline float colorAngle(const float3 v1, const float3 v2)\\{\\n  const float3 vN=float3(1.0f,1.0f,1.0f);\\n  float ang = acos(float(dot(v1,v2))/float(sqrt(dot(v1,v1)*dot(v2,v2))));\\n  float3 crs = myCross(v1,v2);\\n  if (dot(vN, crs) > 0) \\{\\n    ang = -ang;\\n  \\}\\n  return ang;\\n\\}\\n\\n//Main function to calculate the despill for a float4 colour. If prot1_preview is True, returns the prot1 result instead.\\ninline float4 apDespillMain(float4 src_color, float hueShift, int clr, int mode, float limit, float weights, int prot1_preview, int prot1_on, float3 prot1, float prot1_tolerance, float prot1_mult, float prot1_falloff)\\{\\n    //1. HueRotate IN\\n    float4 despilled = hueRotate(src_color, hueShift);\\n\\n    //2. Calculate the limit\\n    float resultLimit = 0.0f;\\n    int2 others;\\n    if(clr==0)\\{//If red (and if _usePicked, also set red)\\n      others = int2(1,2);\\n    \\}else if(clr==1)\\{\\n      others=int2(0,2);\\n    \\}else if(clr==2)\\{\\n      others=int2(0,1);\\n    \\}\\n\\n    if(mode==0)\\{//average\\n      resultLimit = (despilled\\[others\\[0]]+despilled\\[others\\[1]])/2;\\n    \\}else if(mode==1)\\{//max\\n      resultLimit = max(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else if(mode==2)\\{//min\\n      resultLimit = min(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else\\{//custom\\n      resultLimit = despilled\\[others\\[0]]*weights+despilled\\[others\\[1]]*(1-weights);\\n    \\}\\n\\n    //3. Protect tones\\n    float prot1_result;\\n    if(prot1_on==1&&(prot1\\[0]!=prot1\\[1]||prot1\\[0]!=prot1\\[2]||prot1\\[1]!=prot1\\[2]))\\{\\n      float cos_prot1_angle;\\n      cos_prot1_angle = (src_color\\[0]*prot1\\[0]+src_color\\[1]*prot1\\[1]+src_color\\[2]*prot1\\[2]) / (sqrt(prot1\\[0]*prot1\\[0]+prot1\\[1]*prot1\\[1]+prot1\\[2]*prot1\\[2]) * sqrt(src_color\\[0]*src_color\\[0]+src_color\\[1]*src_color\\[1]+src_color\\[2]*src_color\\[2]));\\n      prot1_result = pow(clamp(cos_prot1_angle,0.0f,1.0f),1/pow(prot1_tolerance,prot1_falloff));\\n      resultLimit = resultLimit*(1+prot1_result*prot1_mult);\\n    \\}\\n\\n    //4. Calculate the despill and HueRotate OUT\\n    for (int component = 0; component < 3; component++)\\{\\n      despilled\\[component] = component==clr?min(despilled\\[component],resultLimit*limit):despilled\\[component];\\n    \\}\\n    despilled = hueRotate(despilled,-hueShift);\\n    despilled\\[3] = prot1_result;\\n    return despilled;\\n\\}\\n\\ninline float getLuma(float4 src_color, int luma_math)\\{\\n  float luma;\\n  if(luma_math==0)\\{\\n    luma = y_convert_rec709(src_color);\\n  \\}else if(luma_math==1)\\{\\n    luma = y_convert_ccir601(src_color);\\n  \\}else if(luma_math==2)\\{\\n    luma = y_convert_rec2020(src_color);    \\n  \\}else if(luma_math==3)\\{\\n    luma = (src_color\\[0]+src_color\\[1]+src_color\\[2])/3;\\n  \\}else\\{\\n    luma = max(max(src_color\\[0],src_color\\[1]),src_color\\[2]);\\n  \\}\\n  return luma;\\n\\}\\n\\nkernel apDespillKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> color_src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> spill_src; //Acts as a multiplier for the respill color\\n  Image<eWrite> dst;\\n\\n  param:\\n    float limit;\\n    float shift;\\n    float weights;\\n    int outmode;//0=despill,1=spill\\n    int output_alpha;\\n    int output_alpha_inverted;\\n    int clr; //0=red,1=green,2=blue\\n    int mode; //0=average,1=maximum,2=minimum,3=custom\\n    int respill_math; //0=Rec709,1=Ccir601,2=Avg,3=Max\\n    float4 respill_color;\\n    int prot1_on;\\n    int prot1_preview;\\n    float3 prot1;\\n    float prot1_tolerance;\\n    float prot1_mult;\\n    float prot1_falloff;\\n    float3 pickSpill;\\n    int despill_method; //0=despill,1=key/\\\"absolute\\\"\\n\\n    int use_color_input;\\n    int use_spill_input;\\n    int use_limit_input; //Should be shuffled in the src's alpha\\n\\n  local:\\n    int _usePicked;\\n    int _clr;\\n    int _ret;\\n    float _hueShift;\\n    float _autoShift;\\n    float3 despillColor;\\n    float3 vNorm;\\n\\n  void define() \\{\\n    defineParam(limit, \\\"limit\\\", 1.0f);\\n    defineParam(shift, \\\"shift\\\", 0.0f);\\n  \\}\\n\\n  void init() \\{\\n    //1. Calculate which color to affect\\n    _ret = 0;\\n    if(use_color_input==1)\\{\\n      _clr = 0;\\n      _usePicked = 1;\\n    \\}else if(clr!=3)\\{//red green or blue\\n      _usePicked = 0;\\n      _clr = clr;\\n    \\}else if(pickSpill.x==pickSpill.y && pickSpill.x==pickSpill.z)\\{\\n      _ret = 1;//if \\\"custom\\\" selected but has a gray value, avoid any calculations\\n    \\}else\\{\\n      _usePicked = 1;\\n      _clr = 0;\\n    \\}\\n    vNorm = float3(1.0f,1.0f,1.0f);\\n    if(use_color_input==0)\\{\\n      //2. Calculate the necessary hue shift\\n      _autoShift = 0.0f;\\n      if(_usePicked==1)\\{\\n        _autoShift = colorAngle(vecToPlane(pickSpill,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n        _autoShift = _autoShift*180/PI;//to deg\\n      \\}\\n      _hueShift = shift-_autoShift;\\n    \\}\\n  \\}\\n\\n  void process()\\{\\n    if(_ret == 1)\\{ dst()=src(); return; \\} //Avoid any calculations if no despill selected\\n\\n    //0. If color from input, calculate the necessary hue shift\\n    float hueShift = 0.0f, autoShift = 0.0f;\\n    float3 despillColor;\\n    if(use_color_input==1)\\{\\n      despillColor = float3(color_src(0),color_src(1),color_src(2));\\n      autoShift = colorAngle(vecToPlane(despillColor,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n      autoShift = autoShift*180/PI;//to deg\\n      hueShift = shift-autoShift;\\n    \\}else\\{\\n      if(_usePicked == 1)\\{\\n        despillColor = pickSpill;\\n      \\}else\\{\\n        despillColor = float3(_clr==0?1.0f:0.0f,_clr==1?1.0f:0.0f,_clr==2?1.0f:0.0f);\\n      \\}\\n      \\n      hueShift = _hueShift;\\n    \\}\\n\\n    float limit_result = use_limit_input==1?limit*src(3):limit;\\n\\n    //1. Despill the source image\\n    float4 despilled = apDespillMain(src(), hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n    if(prot1_preview==1 && prot1_on==1)\\{\\n      dst() = src()*clamp(despilled\\[3]*prot1_mult,0.0f,1.0f);\\n      return;\\n    \\}\\n    float4 spill = src()-despilled;\\n    float spill_luma = getLuma(spill, respill_math);\\n\\n    //2. Process the key if key method selected\\n    float4 result;\\n    float4 despilled_full, spill_full; //Will account for the key if method selected is key\\n    float spill_luma_full;\\n    if(despill_method==0)\\{\\n      //Despill Method = Despill\\n      despilled_full = despilled;\\n      spill_full = spill;\\n      spill_luma_full = spill_luma;\\n    \\}else\\{\\n      //Despill Method = Key\\n      float4 despillColor4 = float4(despillColor.x,despillColor.y,despillColor.z,1.0f); //For simplicity\\n\\n      //2.1. Despill the picked despill colour itself, for normalizing the spill\\n      float4 pickSpill_despilled = apDespillMain(despillColor4, hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n      float4 pickSpill_spill = despillColor4-pickSpill_despilled;\\n      float pickSpill_spill_luma = getLuma(pickSpill_spill, respill_math);\\n\\n      spill_luma_full = pickSpill_spill_luma == 0? 0:spill_luma/pickSpill_spill_luma;\\n      spill_full = despillColor4*spill_luma_full;\\n      despilled_full = src()-spill_full;\\n    \\}\\n\\n\\n    float4 respill_color_result = use_spill_input==1?spill_src()*respill_color:respill_color;\\n    //3. Output\\n    if(outmode==0)\\{ //Despill\\n      result = despilled_full+spill_luma_full*respill_color_result;\\n    \\}else\\{ //Spill\\n      result = spill_full;\\n    \\}\\n\\n    if(output_alpha==0)\\{\\n      result\\[3]=src(3);\\n    \\}else\\{\\n      if(output_alpha_inverted == 0)\\{\\n        result\\[3]=spill_luma_full;\\n      \\}else\\{\\n        result\\[3]=1-spill_luma_full;\\n      \\}\\n    \\}\\n\\n    dst() = result;\\n\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  apDespillKernel_limit {{parent.tolerance}}\n  apDespillKernel_shift {{parent.hue_offset}}\n  apDespillKernel_weights {{(parent.custom_weight+1)/2}}\n  apDespillKernel_outmode {{parent.out}}\n  apDespillKernel_output_alpha {{parent.output_alpha}}\n  apDespillKernel_output_alpha_inverted {{parent.inverted_spill_matte}}\n  apDespillKernel_clr {{parent.color}}\n  apDespillKernel_mode {{parent.mode}}\n  apDespillKernel_respill_math {{parent.respill_math}}\n  apDespillKernel_respill_color {{parent.respill_color.r} {parent.respill_color.g} {parent.respill_color.b} 1}\n  apDespillKernel_prot1_on {{parent.prot1_activate}}\n  apDespillKernel_prot1_preview {{parent.prot1_preview}}\n  apDespillKernel_prot1 {{parent.prot1} {parent.prot1} {parent.prot1}}\n  apDespillKernel_prot1_tolerance {{parent.prot1_tolerance}}\n  apDespillKernel_prot1_mult {{parent.prot1_effect}}\n  apDespillKernel_prot1_falloff {{parent.prot1_falloff}}\n  apDespillKernel_pickSpill {{parent.pick} {parent.pick} {parent.pick}}\n  apDespillKernel_despill_method {{parent.absolute_mode}}\n  apDespillKernel_use_color_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_spill_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 2].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_limit_input {{\"\\[exists parent.input3]\"}}\n  rebuild_finalise \"\"\n  name apDespillKernel\n  xpos 754\n  ypos -448\n }\n Log2Lin {\n  name Log2Lin2\n  xpos 754\n  ypos -378\n  disable {{!log_space}}\n }\n Colorspace {\n  channels {{{parent.Colorspace5.channels}}}\n  colorspace_in {{parent.Colorspace1.colorspace_out}}\n  illuminant_in {{parent.Colorspace1.illuminant_out}}\n  primary_in {{parent.Colorspace1.primary_out}}\n  colorspace_out {{parent.Colorspace1.colorspace_in}}\n  illuminant_out {{parent.Colorspace1.illuminant_in}}\n  primary_out {{parent.Colorspace1.primary_in}}\n  name Colorspace2\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -354\n  disable {{!parent.colorspace_shift}}\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 788\n  ypos -267\n }\nset N16345d00 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 788\n  ypos -237\n }\npush $N54f5e400\npush $N16345d00\npush $N54f59d00\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge\n  xpos 449\n  ypos -270\n }\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  maskChannelMask {{{parent.Merge.maskChannelMask}}}\n  maskChannelInput {{{parent.Merge.maskChannelInput}}}\n  inject {{parent.Merge.inject}}\n  invert_mask {{parent.Merge.invert_mask}}\n  fringe {{parent.Merge.fringe}}\n  name CopyAlpha\n  xpos 449\n  ypos -246\n  disable {{!parent.output_alpha}}\n }\n Output {\n  name Output\n  xpos 449\n  ypos -166\n }\nend_group\nDot {\n name Dot294\n selected true\n xpos -2648\n ypos -3023\n}\nset N2f425600 [stack 0]\npush $N2f45b900\nDot {\n name Dot293\n selected true\n xpos -2066\n ypos -3454\n}\nMerge2 {\n inputs 2\n operation from\n name Merge13\n label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n selected true\n xpos -2100\n ypos -3027\n}\nSaturation {\n saturation 0\n name Saturation1\n selected true\n xpos -2100\n ypos -2976\n}\nDot {\n name Dot295\n selected true\n xpos -2066\n ypos -2885\n}\nDot {\n name Dot296\n label \"Restore Lum\"\n note_font_size 41\n selected true\n xpos -2521\n ypos -2885\n}\npush $N2f425600\nMerge2 {\n inputs 2\n operation plus\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge6\n selected true\n xpos -2682\n ypos -2889\n}\nDot {\n name Dot297\n label \"core \\ndespill\"\n note_font_size 60\n selected true\n xpos -2648\n ypos -2529\n}\nDot {\n name Dot298\n selected true\n xpos -2648\n ypos -1508\n}\nDot {\n name Dot299\n label \"core \\ndespill\"\n note_font_size 60\n selected true\n xpos -1299\n ypos -1508\n}\npush $N2f47cf00\nDot {\n name Dot300\n note_font_size 41\n selected true\n xpos -770\n ypos -1627\n}\npush $N60779600\nRemove {\n operation keep\n channels rgb\n name Remove34\n selected true\n xpos -1034\n ypos -3816\n}\nDot {\n name Dot301\n selected true\n xpos -1000\n ypos -3467\n}\nset N2f3f4100 [stack 0]\nGroup {\n name apDespill\n help \"apDespill v2.0 by Adrian Pueyo\\n\\nGizmo to despill an image, with options to despill any hue (and not only the primaries), select different algorithms for de/respilling, and protect tones from the despill.\\n\\nIf you just want a basic despill, its default values should already be enough and the tool will avoid any extra calculations.\\n\\nv2 includes a new \\\"absolute\\\" mode which lets you basically perform a key, or do a \\\"despill to color\\\" operation. Also, the despill color, respill color and limit can now be plugged as image inputs if you wish, letting you perform a fully image-based despill or key, sort of iKeylight. Additionally, it allows you to perform the despill under a colorspace sandwich, for the artists who prefer to loop through different colorspaces in order to find one that works. Thanks to Tony Lyons the best feedback!\\n\\nadrianpueyo.com, 2014-2021\"\n onCreate \"n = nuke.thisNode()\\nn\\['tolerance'].setRange(0,2)\\nn\\['prot1_tolerance'].setFlag(0x00000004)\\nn\\['prot1_effect'].setFlag(0x00000004)\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nkn = k.name()\\nif kn == \\\"color\\\":\\n    kv = k.getValue()\\n    custom_weight_labels = \\[\\\"green - blue\\\", \\\"red - blue\\\", \\\"red - green\\\", \\\" \\\"]\\n    n\\[\\\"custom_weight\\\"].setLabel(custom_weight_labels\\[int(kv)])\\n    n\\[\\\"pick\\\"].setVisible(k.getValue() == 3)\\nelif kn == \\\"mode\\\":\\n    n\\[\\\"custom_weight\\\"].setVisible(n\\[\\\"mode\\\"].getValue()==3)\\nelif kn in \\[\\\"out\\\",\\\"output_alpha\\\"]:\\n    n\\[\\\"respill_math\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0 or n\\[\\\"output_alpha\\\"].getValue()==1)\\n    n\\[\\\"respill_color\\\"].setEnabled(n\\[\\\"out\\\"].getValue()==0)\\n    n\\[\\\"inverted_spill_matte\\\"].setEnabled(n\\[\\\"output_alpha\\\"].value())\\nelif kn == \\\"prot1_activate\\\":\\n    protA = n\\[\\\"prot1_activate\\\"].value()\\n    n\\[\\\"prot1_preview\\\"].setEnabled(protA)\\n    for i in \\[\\\"prot1\\\", \\\"prot1_tolerance\\\", \\\"prot1_falloff\\\",\\\"prot1_effect\\\"]:\\n        n\\[i].setVisible(protA)\\nelif kn == \\\"inputChange\\\":\\n    n.knobs()\\[\\\"limit_channel\\\"].setVisible(n.input(3) is not None)\\n    n.knobs()\\[\\\"invert_limit_channel\\\"].setVisible(n.input(3) is not None)\\n    color_enabled = nuke.toNode(\\\"apDespillKernel\\\")\\[\\\"apDespillKernel_use_color_input\\\"].getValue()==0\\n    n\\[\\\"color\\\"].setEnabled(color_enabled)\\n    n.knobs()\\[\\\"pick\\\"].setEnabled(color_enabled)\\n    n\\[\\\"info_using_input_color\\\"].setVisible(not color_enabled)\\nelif kn == \\\"colorspace_shift\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_out\\\", \\\"illuminant_out\\\", \\\"primary_out\\\"]:\\n        n.knobs()\\[i].setEnabled(kv)\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setEnabled(kv and n\\[\\\"input_colorspace\\\"].value())\\n    n\\[\\\"input_colorspace\\\"].setEnabled(kv)\\nelif kn == \\\"input_colorspace\\\":\\n    kv = k.value()\\n    for i in \\[\\\"colorspace_in\\\", \\\"illuminant_in\\\", \\\"primary_in\\\"]:\\n        n.knobs()\\[i].setVisible(kv)\\n        n.knobs()\\[i].setEnabled(kv)\\nelif kn == \\\"imagebased\\\":\\n    kv = k.value()\\n    input_names = \\[\\\"color\\\",\\\"limit\\\",\\\"respill\\\"]\\n    if kv:\\n        for i_name in input_names:\\n            i_fullname = \\\"Input\\\"+i_name\\n            if not nuke.exists(i_fullname):\\n                i_node = nuke.nodes.Input()\\n                i_node\\[\\\"name\\\"].setValue(i_fullname)\\n            else:\\n                i_node = nuke.toNode(i_fullname)\\n            dot = nuke.toNode(\\\"Dot\\\"+i_name)\\n            i_node.setXYpos(dot.xpos(),dot.ypos()-40)\\n            dot.setInput(0,i_node)\\n    else:\\n        # If something connected, do nothing\\n        if not any(\\[n.input(i) for i in \\[2,3,4]]):\\n            for i_name in input_names:\\n                if nuke.exists(\\\"Input\\\"+i_name):\\n                    nuke.delete(nuke.toNode(\\\"Input\\\"+i_name))\\n        else:\\n            k.setValue(True)\"\n tile_color 0x8b8b8bff\n selected true\n xpos -1034\n ypos -3272\n addUserKnob {20 apDespill}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 imagebased l image-based t \"Show or hide image-based inputs.\\n\\nThis doesn't change anything internally except hiding inputs, just to avoid intimidating arrows on the node graph.\\n\\nNote: While any image-based input is connected, this won't let you hide them.\" +STARTLINE}\n addUserKnob {6 absolute_mode l \"absolute mode\" t \"Absolute mode performs a keying algorithm instead of a regular despill, so that you can do a \\\"spill to colour\\\" or even use this node as an image-based Keylight.\" -STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {4 color t \"Select a primary as a starting point, or custom to show RGB controls to select any color.\\n\\nNote: If an image is plugged on the color input, this will get overwritten by the input.\" M {red green blue custom \"\" \"\" \"\"}}\n color custom\n addUserKnob {26 info_using_input_color l \" \" -STARTLINE +HIDDEN T \"<i><font color=#AAA> (Using color from input)\"}\n addUserKnob {18 pick t \"Pick the color you'd like to use for the despill. \\n\\nPlease use ctrl/cmd+alt+click for picking.\\n\\nNOTE: If a despill color image input is plugged, this value will be ignored.\"}\n pick {0 0 1}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 pick_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 dfg_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {4 out l output t \"Quick switch to output the despilled image or the substracted one.\" M {despill spill}}\n addUserKnob {6 output_alpha l \"output spill matte in alpha\" t \"Output the spill luminance in the alpha channel.\" +STARTLINE}\n output_alpha true\n addUserKnob {6 inverted_spill_matte l inverted t \"Invert the output spill matte (in the alpha channel), especially useful when the despill is set to Absolute mode, in which case this will output a keying-like alpha.\" -STARTLINE}\n inverted_spill_matte true\n addUserKnob {4 mode l \"despill math\" t \"average = avg of other two channels\\nmaximum = max of other two channels\\nminimum = min of other two channels\\ncustom = select custom weights\" M {average maximum minimum custom \"\"}}\n addUserKnob {7 custom_weight l \" \" t \"-1 = only capped by the first channel\\n0 = capped by avg of both\\n1 = only capped by the second channel\" -STARTLINE +HIDDEN R -1 1}\n addUserKnob {26 \"\"}\n addUserKnob {6 colorspace_shift l \"alt colorspace\" t \"This allows for the popular artistic approach to refining the despill where you browse through colorspace conversions (mainly white point and primaries) and choose one that matches your desired despill bias.\\n\\n<b>Tip:</b> Double click on a dropdown and use the Page Up and Page Down keys on your keyboard to browse quickly through the items.\\n\\n<b>Note:</b> There's no need at all for the values of these dropdowns to match your working colorspace, so you can leave it as-is or tweak it if you prefer, regardless of the colorspace you're comping at (e.g. ACEScg). It is literally an artistic conversion prior to the despill algorithm that then gets reverted.\" +STARTLINE}\n colorspace_shift true\n addUserKnob {6 input_colorspace l \"input colorspace\" t \"Also tweak the input colorspace for the back and forth colorspace conversion. This is generally not needed however, as this colorspace conversion is generally only used for artistic purposes.\" -STARTLINE}\n addUserKnob {6 log_space l log t \"Perform Lin2Log -> Despill -> Log2Lin.\" -STARTLINE}\n addUserKnob {41 colorspace_in l \"in colorspace\" +DISABLED +HIDDEN T Colorspace1.colorspace_in}\n addUserKnob {41 illuminant_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.illuminant_in}\n addUserKnob {41 primary_in l \"\" -STARTLINE +DISABLED +HIDDEN T Colorspace1.primary_in}\n addUserKnob {41 colorspace_out l \"despill space\" T Colorspace1.colorspace_out}\n addUserKnob {41 illuminant_out l \"\" -STARTLINE T Colorspace1.illuminant_out}\n addUserKnob {41 primary_out l \"\" -STARTLINE T Colorspace1.primary_out}\n addUserKnob {26 \"\"}\n addUserKnob {7 hue_offset l \"hue offset\" t \"Rotate the despill vectors to despill an arbitrary tone other than the primaries or the picked color.\\nNote: A rotation of +-120 degrees is the same as selecting a different color channel.\" R -30 30}\n addUserKnob {7 tolerance l limit t \"Use this to multiply the hue tolerance (the limiter value). You can move it all the way down to 0 to completely remove a hue from your image.\\n\\n<b>NOTE:</b> If an image is plugged into the <i>limit</i> input, this will act as a multiplier.\" R 0 2}\n tolerance 1\n addUserKnob {41 limit_channel l \"limit channel\" +HIDDEN T CopyLimit.from0}\n addUserKnob {6 invert_limit_channel l invert t \"The recommended workflow for the image-based limit is keeping this invert turned on, so that the higher the value of the limit channel, the lower the limit gets.\" -STARTLINE +HIDDEN}\n invert_limit_channel true\n addUserKnob {6 prot1_activate l \"protect tones\" t \"Enable controls to select tones to protect from despilling.\" +STARTLINE}\n addUserKnob {6 prot1_preview l preview t \"Output the protected tones.\" -STARTLINE +DISABLED}\n addUserKnob {18 prot1 l protect t \"Pick the central hue to protect.\\n(ctrl/cmd+alt+click)\" +HIDDEN}\n prot1 {0 0 0}\n addUserKnob {6 prot1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 prot1_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 prot1_tolerance l tolerance t \"Amount of hues to include in the selection.\" +HIDDEN}\n prot1_tolerance 0.2\n addUserKnob {7 prot1_falloff l falloff t \"Falloff for the hue selection. A higher falloff will make hues apart from the picked one lose weight more quickly.\" +HIDDEN R 0 4}\n prot1_falloff 2\n addUserKnob {7 prot1_effect l effect t \"Multiplier for the hue protection, and for the spill limit value.\" +HIDDEN R 0 10}\n prot1_effect 1\n addUserKnob {26 respill_divider l \"\" +STARTLINE}\n addUserKnob {4 respill_math l \"spill math\" t \"Settings for the math for desaturating the the spill before adding it back.\" M {\"Rec 709\" \"Ccir 601\" \"Rec 2020\" Average Maximum \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {18 respill_color l \"respill color\" t \"RGB multiplier for the desaturated spill when adding it back.\\n\\nIf used on non-degrained plates (which should be avoided anyway), any value other than 1 here will most likely produce grain artifacts.\\n\\nNOTE: If a respill image input is plugged, this value will act as a multiplier.\" R 0 4}\n respill_color 1\n addUserKnob {6 respill_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 respill_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T Merge.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T Merge.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T Merge.invert_mask}\n addUserKnob {41 fringe -STARTLINE T Merge.fringe}\n addUserKnob {41 mix T Merge.mix}\n addUserKnob {26 version_author l \"\" t \"apDespill v2.0\\n13 April, 2021\" +STARTLINE T \"<span style=\\\"color:#666\\\"><br/><b>apDespill v2.0</b> - <a href=\\\"http://www.adrianpueyo.com\\\" style=\\\"color:#666;text-decoration: none;\\\">adrianpueyo.com</a>, 2014-2021</span>\"}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 273\n  ypos -370\n  number 1\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 307\n  ypos -267\n }\nset N54fef200 [stack 0]\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 307\n  ypos -237\n }\n Dot {\n  inputs 0\n  name Dotrespill\n  label Dotrespill\n  note_font \"Verdana Bold\"\n  xpos 1190\n  ypos -525\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_spill\n  xpos 1156\n  ypos -442\n }\n Dot {\n  inputs 0\n  name Dotcolor\n  label Dotcolor\n  note_font \"Verdana Bold\"\n  xpos 1080\n  ypos -593\n }\n AddChannels {\n  channels rgba\n  format_size true\n  name AddRGBA_color\n  xpos 1046\n  ypos -499\n }\n Dot {\n  inputs 0\n  name Dotlimit\n  label Dotlimit\n  note_font \"Verdana Bold\"\n  xpos 936\n  ypos -732\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle_limit\n  label \"\\[value in]\"\n  xpos 902\n  ypos -670\n }\n Input {\n  inputs 0\n  name Inputimage\n  xpos 449\n  ypos -761\n }\nset N54fceb00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 788\n  ypos -758\n }\n Shuffle {\n  alpha black\n  name Shuffle\n  xpos 754\n  ypos -694\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name CopyLimit\n  xpos 754\n  ypos -670\n }\n Invert {\n  channels alpha\n  name InvertLimit\n  xpos 754\n  ypos -611\n  disable {{!invert_limit_channel}}\n }\n Colorspace {\n  name Colorspace1\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -544\n  disable {{!parent.colorspace_shift}}\n }\n Log2Lin {\n  operation lin2log\n  name Log2Lin1\n  xpos 754\n  ypos -508\n  disable {{!log_space}}\n }\n BlinkScript {\n  inputs 3\n  recompileCount 94\n  ProgramGroup 1\n  KernelDescription \"2 \\\"apDespillKernel\\\" iterate pixelWise 857ee5211c9dc340b8743026c9778403c1424a4ec1afa5c7990e55b71f93720c 4 \\\"src\\\" Read Point \\\"color_src\\\" Read Point \\\"spill_src\\\" Read Point \\\"dst\\\" Write Point 21 \\\"limit\\\" Float 1 AACAPw== \\\"shift\\\" Float 1 AAAAAA== \\\"weights\\\" Float 1 AAAAAA== \\\"outmode\\\" Int 1 AAAAAA== \\\"output_alpha\\\" Int 1 AAAAAA== \\\"output_alpha_inverted\\\" Int 1 AAAAAA== \\\"clr\\\" Int 1 AAAAAA== \\\"mode\\\" Int 1 AAAAAA== \\\"respill_math\\\" Int 1 AAAAAA== \\\"respill_color\\\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_on\\\" Int 1 AAAAAA== \\\"prot1_preview\\\" Int 1 AAAAAA== \\\"prot1\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"prot1_tolerance\\\" Float 1 AAAAAA== \\\"prot1_mult\\\" Float 1 AAAAAA== \\\"prot1_falloff\\\" Float 1 AAAAAA== \\\"pickSpill\\\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \\\"despill_method\\\" Int 1 AAAAAA== \\\"use_color_input\\\" Int 1 AAAAAA== \\\"use_spill_input\\\" Int 1 AAAAAA== \\\"use_limit_input\\\" Int 1 AAAAAA== 21 \\\"limit\\\" 1 1 \\\"shift\\\" 1 1 \\\"weights\\\" 1 1 \\\"outmode\\\" 1 1 \\\"output_alpha\\\" 1 1 \\\"output_alpha_inverted\\\" 1 1 \\\"clr\\\" 1 1 \\\"mode\\\" 1 1 \\\"respill_math\\\" 1 1 \\\"respill_color\\\" 4 1 \\\"prot1_on\\\" 1 1 \\\"prot1_preview\\\" 1 1 \\\"prot1\\\" 3 1 \\\"prot1_tolerance\\\" 1 1 \\\"prot1_mult\\\" 1 1 \\\"prot1_falloff\\\" 1 1 \\\"pickSpill\\\" 3 1 \\\"despill_method\\\" 1 1 \\\"use_color_input\\\" 1 1 \\\"use_spill_input\\\" 1 1 \\\"use_limit_input\\\" 1 1 7 \\\"_usePicked\\\" Int 1 1 AAAAAA== \\\"_clr\\\" Int 1 1 AAAAAA== \\\"_ret\\\" Int 1 1 AAAAAA== \\\"_hueShift\\\" Float 1 1 AAAAAA== \\\"_autoShift\\\" Float 1 1 AAAAAA== \\\"despillColor\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA== \\\"vNorm\\\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA==\"\n  kernelSource \"//---------------------------------------------------------\\n// apDespillKernel - apDespill v1.0 by Adrian Pueyo\\n//\\n// Despill an image, with options to despill any hue (and\\n// not only the primaries), select different algorithms for\\n// des/respilling, and protect tones from the despill.\\n//\\n// v2.0: Ability to plug image inputs for the controls,\\n// and to perform a full key and respill.\\n//\\n// adrianpueyo.com, 2014-2017\\n// ---------------------------------------------------------\\n\\ninline float y_convert_ccir601(const float4 in)\\{\\n  return in.x * 0.299f + in.y * 0.587f + in.z * 0.114f;\\n\\}\\n\\ninline float y_convert_rec709(const float4 in)\\{\\n  return in.x * 0.2125f + in.y * 0.7154f + in.z * 0.0721f;\\n\\}\\n\\ninline float y_convert_rec2020(const float4 in)\\{\\n  return in.x * 0.2627f + in.y * 0.678f + in.z * 0.0593f;\\n\\}\\n\\ninline float4 hueRotate(const float4 in, const float H)\\{\\n  if(H==0.0f)\\{\\n    return in;\\n  \\}else\\{\\n    float cosH = cos(H*PI/180);\\n    float sinH = sin(H*PI/180);\\n    float3 ret;\\n    ret.x = (in.x+in.y+in.z)*(1-cosH)/3 + in.x*cosH + (-in.y/sqrt(3.0f)+in.z/sqrt(3.0f))*sinH;\\n    ret.y = (in.x+in.y+in.z)*(1-cosH)/3 + in.y*cosH + (in.x/sqrt(3.0f)-in.z/sqrt(3.0f))*sinH;\\n    ret.z = (in.x+in.y+in.z)*(1-cosH)/3 + in.z*cosH + (-in.x/sqrt(3.0f)+in.y/sqrt(3.0f))*sinH;\\n    return float4(ret.x,ret.y,ret.z,in\\[3]);\\n  \\}\\n\\}\\n\\nfloat3 vecToPlane(float3 v1, float3 v2 = float3(1.0f,1.0f,1.0f))\\{\\n  float3 v1onv2;\\n  v1onv2 = v2 * float((float(dot(v2,v1))/float(dot(v2,v2)))); //Projection of vector on another (plane's normal)\\n  return v1-v1onv2; //Projection of vector on plane\\n\\}\\n\\ninline float3 myCross(float3 a, float3 b)\\{\\n  return float3(float(a.y*b.z-a.z*b.y),float(a.z*b.x-a.x*b.z),float(a.x*b.y-a.y*b.x));\\n\\}\\n\\ninline float colorAngle(const float3 v1, const float3 v2)\\{\\n  const float3 vN=float3(1.0f,1.0f,1.0f);\\n  float ang = acos(float(dot(v1,v2))/float(sqrt(dot(v1,v1)*dot(v2,v2))));\\n  float3 crs = myCross(v1,v2);\\n  if (dot(vN, crs) > 0) \\{\\n    ang = -ang;\\n  \\}\\n  return ang;\\n\\}\\n\\n//Main function to calculate the despill for a float4 colour. If prot1_preview is True, returns the prot1 result instead.\\ninline float4 apDespillMain(float4 src_color, float hueShift, int clr, int mode, float limit, float weights, int prot1_preview, int prot1_on, float3 prot1, float prot1_tolerance, float prot1_mult, float prot1_falloff)\\{\\n    //1. HueRotate IN\\n    float4 despilled = hueRotate(src_color, hueShift);\\n\\n    //2. Calculate the limit\\n    float resultLimit = 0.0f;\\n    int2 others;\\n    if(clr==0)\\{//If red (and if _usePicked, also set red)\\n      others = int2(1,2);\\n    \\}else if(clr==1)\\{\\n      others=int2(0,2);\\n    \\}else if(clr==2)\\{\\n      others=int2(0,1);\\n    \\}\\n\\n    if(mode==0)\\{//average\\n      resultLimit = (despilled\\[others\\[0]]+despilled\\[others\\[1]])/2;\\n    \\}else if(mode==1)\\{//max\\n      resultLimit = max(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else if(mode==2)\\{//min\\n      resultLimit = min(despilled\\[others\\[0]],despilled\\[others\\[1]]);\\n    \\}else\\{//custom\\n      resultLimit = despilled\\[others\\[0]]*weights+despilled\\[others\\[1]]*(1-weights);\\n    \\}\\n\\n    //3. Protect tones\\n    float prot1_result;\\n    if(prot1_on==1&&(prot1\\[0]!=prot1\\[1]||prot1\\[0]!=prot1\\[2]||prot1\\[1]!=prot1\\[2]))\\{\\n      float cos_prot1_angle;\\n      cos_prot1_angle = (src_color\\[0]*prot1\\[0]+src_color\\[1]*prot1\\[1]+src_color\\[2]*prot1\\[2]) / (sqrt(prot1\\[0]*prot1\\[0]+prot1\\[1]*prot1\\[1]+prot1\\[2]*prot1\\[2]) * sqrt(src_color\\[0]*src_color\\[0]+src_color\\[1]*src_color\\[1]+src_color\\[2]*src_color\\[2]));\\n      prot1_result = pow(clamp(cos_prot1_angle,0.0f,1.0f),1/pow(prot1_tolerance,prot1_falloff));\\n      resultLimit = resultLimit*(1+prot1_result*prot1_mult);\\n    \\}\\n\\n    //4. Calculate the despill and HueRotate OUT\\n    for (int component = 0; component < 3; component++)\\{\\n      despilled\\[component] = component==clr?min(despilled\\[component],resultLimit*limit):despilled\\[component];\\n    \\}\\n    despilled = hueRotate(despilled,-hueShift);\\n    despilled\\[3] = prot1_result;\\n    return despilled;\\n\\}\\n\\ninline float getLuma(float4 src_color, int luma_math)\\{\\n  float luma;\\n  if(luma_math==0)\\{\\n    luma = y_convert_rec709(src_color);\\n  \\}else if(luma_math==1)\\{\\n    luma = y_convert_ccir601(src_color);\\n  \\}else if(luma_math==2)\\{\\n    luma = y_convert_rec2020(src_color);    \\n  \\}else if(luma_math==3)\\{\\n    luma = (src_color\\[0]+src_color\\[1]+src_color\\[2])/3;\\n  \\}else\\{\\n    luma = max(max(src_color\\[0],src_color\\[1]),src_color\\[2]);\\n  \\}\\n  return luma;\\n\\}\\n\\nkernel apDespillKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> color_src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> spill_src; //Acts as a multiplier for the respill color\\n  Image<eWrite> dst;\\n\\n  param:\\n    float limit;\\n    float shift;\\n    float weights;\\n    int outmode;//0=despill,1=spill\\n    int output_alpha;\\n    int output_alpha_inverted;\\n    int clr; //0=red,1=green,2=blue\\n    int mode; //0=average,1=maximum,2=minimum,3=custom\\n    int respill_math; //0=Rec709,1=Ccir601,2=Avg,3=Max\\n    float4 respill_color;\\n    int prot1_on;\\n    int prot1_preview;\\n    float3 prot1;\\n    float prot1_tolerance;\\n    float prot1_mult;\\n    float prot1_falloff;\\n    float3 pickSpill;\\n    int despill_method; //0=despill,1=key/\\\"absolute\\\"\\n\\n    int use_color_input;\\n    int use_spill_input;\\n    int use_limit_input; //Should be shuffled in the src's alpha\\n\\n  local:\\n    int _usePicked;\\n    int _clr;\\n    int _ret;\\n    float _hueShift;\\n    float _autoShift;\\n    float3 despillColor;\\n    float3 vNorm;\\n\\n  void define() \\{\\n    defineParam(limit, \\\"limit\\\", 1.0f);\\n    defineParam(shift, \\\"shift\\\", 0.0f);\\n  \\}\\n\\n  void init() \\{\\n    //1. Calculate which color to affect\\n    _ret = 0;\\n    if(use_color_input==1)\\{\\n      _clr = 0;\\n      _usePicked = 1;\\n    \\}else if(clr!=3)\\{//red green or blue\\n      _usePicked = 0;\\n      _clr = clr;\\n    \\}else if(pickSpill.x==pickSpill.y && pickSpill.x==pickSpill.z)\\{\\n      _ret = 1;//if \\\"custom\\\" selected but has a gray value, avoid any calculations\\n    \\}else\\{\\n      _usePicked = 1;\\n      _clr = 0;\\n    \\}\\n    vNorm = float3(1.0f,1.0f,1.0f);\\n    if(use_color_input==0)\\{\\n      //2. Calculate the necessary hue shift\\n      _autoShift = 0.0f;\\n      if(_usePicked==1)\\{\\n        _autoShift = colorAngle(vecToPlane(pickSpill,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n        _autoShift = _autoShift*180/PI;//to deg\\n      \\}\\n      _hueShift = shift-_autoShift;\\n    \\}\\n  \\}\\n\\n  void process()\\{\\n    if(_ret == 1)\\{ dst()=src(); return; \\} //Avoid any calculations if no despill selected\\n\\n    //0. If color from input, calculate the necessary hue shift\\n    float hueShift = 0.0f, autoShift = 0.0f;\\n    float3 despillColor;\\n    if(use_color_input==1)\\{\\n      despillColor = float3(color_src(0),color_src(1),color_src(2));\\n      autoShift = colorAngle(vecToPlane(despillColor,vNorm),vecToPlane(float3(1.0f,0.0f,0.0f),vNorm));\\n      autoShift = autoShift*180/PI;//to deg\\n      hueShift = shift-autoShift;\\n    \\}else\\{\\n      if(_usePicked == 1)\\{\\n        despillColor = pickSpill;\\n      \\}else\\{\\n        despillColor = float3(_clr==0?1.0f:0.0f,_clr==1?1.0f:0.0f,_clr==2?1.0f:0.0f);\\n      \\}\\n      \\n      hueShift = _hueShift;\\n    \\}\\n\\n    float limit_result = use_limit_input==1?limit*src(3):limit;\\n\\n    //1. Despill the source image\\n    float4 despilled = apDespillMain(src(), hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n    if(prot1_preview==1 && prot1_on==1)\\{\\n      dst() = src()*clamp(despilled\\[3]*prot1_mult,0.0f,1.0f);\\n      return;\\n    \\}\\n    float4 spill = src()-despilled;\\n    float spill_luma = getLuma(spill, respill_math);\\n\\n    //2. Process the key if key method selected\\n    float4 result;\\n    float4 despilled_full, spill_full; //Will account for the key if method selected is key\\n    float spill_luma_full;\\n    if(despill_method==0)\\{\\n      //Despill Method = Despill\\n      despilled_full = despilled;\\n      spill_full = spill;\\n      spill_luma_full = spill_luma;\\n    \\}else\\{\\n      //Despill Method = Key\\n      float4 despillColor4 = float4(despillColor.x,despillColor.y,despillColor.z,1.0f); //For simplicity\\n\\n      //2.1. Despill the picked despill colour itself, for normalizing the spill\\n      float4 pickSpill_despilled = apDespillMain(despillColor4, hueShift, _clr, mode, limit_result, weights, prot1_preview, prot1_on, prot1, prot1_tolerance, prot1_mult, prot1_falloff);\\n      float4 pickSpill_spill = despillColor4-pickSpill_despilled;\\n      float pickSpill_spill_luma = getLuma(pickSpill_spill, respill_math);\\n\\n      spill_luma_full = pickSpill_spill_luma == 0? 0:spill_luma/pickSpill_spill_luma;\\n      spill_full = despillColor4*spill_luma_full;\\n      despilled_full = src()-spill_full;\\n    \\}\\n\\n\\n    float4 respill_color_result = use_spill_input==1?spill_src()*respill_color:respill_color;\\n    //3. Output\\n    if(outmode==0)\\{ //Despill\\n      result = despilled_full+spill_luma_full*respill_color_result;\\n    \\}else\\{ //Spill\\n      result = spill_full;\\n    \\}\\n\\n    if(output_alpha==0)\\{\\n      result\\[3]=src(3);\\n    \\}else\\{\\n      if(output_alpha_inverted == 0)\\{\\n        result\\[3]=spill_luma_full;\\n      \\}else\\{\\n        result\\[3]=1-spill_luma_full;\\n      \\}\\n    \\}\\n\\n    dst() = result;\\n\\n  \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  apDespillKernel_limit {{parent.tolerance}}\n  apDespillKernel_shift {{parent.hue_offset}}\n  apDespillKernel_weights {{(parent.custom_weight+1)/2}}\n  apDespillKernel_outmode {{parent.out}}\n  apDespillKernel_output_alpha {{parent.output_alpha}}\n  apDespillKernel_output_alpha_inverted {{parent.inverted_spill_matte}}\n  apDespillKernel_clr {{parent.color}}\n  apDespillKernel_mode {{parent.mode}}\n  apDespillKernel_respill_math {{parent.respill_math}}\n  apDespillKernel_respill_color {{parent.respill_color.r} {parent.respill_color.g} {parent.respill_color.b} 1}\n  apDespillKernel_prot1_on {{parent.prot1_activate}}\n  apDespillKernel_prot1_preview {{parent.prot1_preview}}\n  apDespillKernel_prot1 {{parent.prot1} {parent.prot1} {parent.prot1}}\n  apDespillKernel_prot1_tolerance {{parent.prot1_tolerance}}\n  apDespillKernel_prot1_mult {{parent.prot1_effect}}\n  apDespillKernel_prot1_falloff {{parent.prot1_falloff}}\n  apDespillKernel_pickSpill {{parent.pick} {parent.pick} {parent.pick}}\n  apDespillKernel_despill_method {{parent.absolute_mode}}\n  apDespillKernel_use_color_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 1].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_spill_input {{\"\\[\\nif \\{ \\[lsearch -exact \\[channels \\[input this 2].input] rgba.red] >= 0\\} \\{\\n    return 1\\n\\} else \\{\\n    return 0\\n\\}\\n]\"}}\n  apDespillKernel_use_limit_input {{\"\\[exists parent.input3]\"}}\n  rebuild_finalise \"\"\n  name apDespillKernel\n  xpos 754\n  ypos -448\n }\n Log2Lin {\n  name Log2Lin2\n  xpos 754\n  ypos -378\n  disable {{!log_space}}\n }\n Colorspace {\n  channels {{{parent.Colorspace5.channels}}}\n  colorspace_in {{parent.Colorspace1.colorspace_out}}\n  illuminant_in {{parent.Colorspace1.illuminant_out}}\n  primary_in {{parent.Colorspace1.primary_out}}\n  colorspace_out {{parent.Colorspace1.colorspace_in}}\n  illuminant_out {{parent.Colorspace1.illuminant_in}}\n  primary_out {{parent.Colorspace1.primary_in}}\n  name Colorspace2\n  label \"\\[value colorspace_in] >> \\[value colorspace_out]\"\n  xpos 754\n  ypos -354\n  disable {{!parent.colorspace_shift}}\n }\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 788\n  ypos -267\n }\nset N54f8eb00 [stack 0]\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 788\n  ypos -237\n }\npush $N54fef200\npush $N54f8eb00\npush $N54fceb00\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge\n  xpos 449\n  ypos -270\n }\n Copy {\n  inputs 2+1\n  from0 rgba.alpha\n  to0 rgba.alpha\n  bbox B\n  maskChannelMask {{{parent.Merge.maskChannelMask}}}\n  maskChannelInput {{{parent.Merge.maskChannelInput}}}\n  inject {{parent.Merge.inject}}\n  invert_mask {{parent.Merge.invert_mask}}\n  fringe {{parent.Merge.fringe}}\n  name CopyAlpha\n  xpos 449\n  ypos -246\n  disable {{!parent.output_alpha}}\n }\n Output {\n  name Output\n  xpos 449\n  ypos -166\n }\nend_group\nDot {\n name Dot303\n selected true\n xpos -1000\n ypos -2911\n}\nset N2f571600 [stack 0]\npush $N2f3f4100\nDot {\n name Dot302\n selected true\n xpos -386\n ypos -3467\n}\nMerge2 {\n inputs 2\n operation from\n name Merge5\n label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n selected true\n xpos -420\n ypos -2915\n}\nClamp {\n channels rgba\n maximum_enable false\n name Clamp1\n selected true\n xpos -420\n ypos -2889\n}\nSaturation {\n saturation 0\n name Saturation2\n selected true\n xpos -420\n ypos -2863\n}\nClamp {\n channels rgba\n maximum_enable false\n name Clamp3\n selected true\n xpos -420\n ypos -2837\n}\nShuffle {\n green red\n blue red\n alpha red\n name Shuffle11\n tile_color 0x93000000\n selected true\n xpos -420\n ypos -2811\n}\nDot {\n name Dot304\n label \"despill\\nmatte\"\n note_font_size 60\n selected true\n xpos -386\n ypos -2734\n}\nset N2f542b00 [stack 0]\nDot {\n name Dot305\n label \"despill\\nMatte\"\n note_font_size 60\n selected true\n xpos -386\n ypos -2537\n}\npush $N2f571600\nDot {\n name Dot306\n selected true\n xpos -1000\n ypos -2735\n}\nset N2f541d00 [stack 0]\nadd_layer {despill despill.red}\nCopy {\n inputs 2\n from0 rgba.red\n to0 despill.red\n name Copy7\n selected true\n xpos -1034\n ypos -2547\n}\nDot {\n name Dot307\n label \"edge\\ndespill\"\n note_font_size 60\n selected true\n xpos -1000\n ypos -1785\n}\nMultiply {\n inputs 1+1\n channels despill\n value 0\n name Multiply2\n label \"\\[value value]\"\n selected true\n xpos -1034\n ypos -1643\n}\nKeymix {\n inputs 3\n channels rgb\n name Keymix3\n selected true\n xpos -1034\n ypos -1512\n}\nadd_layer {despill_RGB despill_RGB.red despill_RGB.green despill_RGB.blue despill_RGB.alpha}\nShuffle {\n black red\n white green\n red2 blue\n green2 black\n out2 despill_RGB\n name Shuffle26\n label \"\\[value in] -> \\[value out2]\"\n selected true\n xpos -1034\n ypos -1440\n}\nCopy {\n inputs 2\n channels all\n name Copy12\n selected true\n xpos -1034\n ypos -952\n}\nCopyBBox {\n inputs 2\n name CopyBBox3\n selected true\n xpos -1034\n ypos -890\n}\nCopy {\n inputs 2\n from0 rgba.alpha\n to0 rgba.alpha\n bbox B\n name Copy14\n selected true\n xpos -1034\n ypos -635\n}\nCopy {\n inputs 2\n channels cleanplate\n bbox B\n name Copy15\n selected true\n xpos -1034\n ypos -279\n}\nDot {\n name Dot313\n note_font_size 41\n selected true\n xpos -1000\n ypos 125\n}\nDot {\n name Dot314\n note_font_size 41\n selected true\n xpos -1000\n ypos 586\n}\nDot {\n name Dot315\n note_font_size 41\n selected true\n xpos -1000\n ypos 912\n}\nDot {\n name Dot15\n note_font_size 41\n selected true\n xpos -1000\n ypos 1434\n}\nset N2f4eb900 [stack 0]\nDot {\n name Dot7\n note_font_size 41\n selected true\n xpos -736\n ypos 1434\n}\nset N2f4eb200 [stack 0]\nDot {\n name Dot108\n note_font_size 41\n selected true\n xpos -545\n ypos 1434\n}\nset N2f4eab00 [stack 0]\nShuffle {\n in despill\n name Shuffle23\n label \"\\[value in]\"\n selected true\n xpos -579\n ypos 1478\n}\nRemove {\n operation keep\n channels rgba\n name Remove2\n selected true\n xpos -579\n ypos 1516\n}\nNoOp {\n name Anchor_30be3b7c88\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos -579\n ypos 1573\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"despill Mask\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T Despill}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_30be3b7c88}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nNoOp {\n name Stamp40\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos -656\n ypos 1961\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"despill Mask\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"despill Mask\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" T \"<i>Advanced Keying Template</i>\"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_30be3b7c88\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nGrade {\n channels rgba\n multiply 4\n black_clamp false\n name Grade4\n selected true\n xpos -656\n ypos 2038\n}\nset N2f4e8800 [stack 0]\nDot {\n name Dot318\n label \"despill\\nmatte\"\n note_font_size 41\n selected true\n xpos -622\n ypos 2174\n}\nset N2d0b8f00 [stack 0]\nDot {\n name Dot319\n note_font_size 41\n selected true\n xpos -855\n ypos 2172\n}\nDot {\n name Dot320\n note_font_size 41\n selected true\n xpos -855\n ypos 2482\n}\npush $N607a5600\nNoOp {\n name Stamp41\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos 48\n ypos 1928\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"BG Before Key\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"BG Before Key\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" +HIDDEN T \" \"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_3cad2b60ea\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nDot {\n name Dot3\n note_font_size 41\n selected true\n xpos 82\n ypos 2003\n}\nset N2d0ab200 [stack 0]\nDot {\n name Dot4\n note_font_size 41\n selected true\n xpos 82\n ypos 2570\n}\nDot {\n name Dot20\n label BG\n note_font_size 101\n selected true\n xpos -523\n ypos 2570\n}\npush $N2d0ab200\nDot {\n name Dot2\n note_font_size 41\n selected true\n xpos -316\n ypos 2003\n}\nDot {\n name Dot321\n label BG\n note_font_size 101\n selected true\n xpos -316\n ypos 2091\n}\nGrade {\n blackpoint 0.008\n whitepoint 0.225\n black_clamp false\n name Grade6\n label \"BG Prep\"\n selected true\n xpos -350\n ypos 2170\n}\nDot {\n name Dot322\n selected true\n xpos -316\n ypos 2259\n}\npush $N2d0b8f00\nMerge2 {\n inputs 2\n operation multiply\n name Merge36\n selected true\n xpos -656\n ypos 2257\n}\nShuffle {\n alpha black\n name Shuffle40\n label \"\\[value in]\"\n selected true\n xpos -656\n ypos 2330\n}\npush $N2f4e8800\nShuffle {\n green red\n blue red\n alpha red\n name Shuffle41\n label \"\\[value in]\"\n selected true\n xpos -865\n ypos 2034\n}\nGrade {\n channels rgba\n whitepoint 0.5\n black_clamp false\n white_clamp true\n name Grade7\n selected true\n xpos -865\n ypos 2088\n}\npush $N2f4eb900\nRemove {\n operation keep\n channels rgba\n channels2 GS_Plate\n name Remove6\n selected true\n xpos -1034\n ypos 1525\n}\nSaturation {\n inputs 1+1\n saturation 0.5\n name Saturation3\n label \"change if necessary\"\n selected true\n xpos -1034\n ypos 2082\n}\nMerge2 {\n inputs 2\n operation plus\n bbox B\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge49\n selected true\n xpos -1034\n ypos 2334\n}\nGroup {\n inputs 3\n name BlacksMatch\n help \"Choose a black point color or plug an image /constant you wish to be your blackpoint into BlackColor input.\\n\\nUse Mult Range to control how far above the blackpoint color to affect the lows\\n\\nUse the RollOff gamma to add fall off to the bottom of the curve\\n\\nTurn on the preview Plotscan and move the sampler over a region to see what your settings are doing to a linear 0-1 ramp.  This will help you see if you have weird curves, clamping or other funky problems as you adjust settings\"\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"inputChange\\\":\\n    nsd = nuke.toNode(\\\"SwitchDefault\\\")\\n    n\\[\\\"defaultBlack\\\"].setEnabled(nsd\\[\\\"which\\\"].getValue()==1)\\n\\nif k.name() == \\\"previewPlotScan\\\":\\n    p = n.knob(\\\"previewPlotScan\\\").value()\\n    if p == True:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(True)\\n    else:\\n        n.knob(\\\"plotscanSampler\\\").setVisible(False)\"\n tile_color 0x1c1c1cff\n note_font \"Helvetica Bold\"\n selected true\n xpos -1034\n ypos 2567\n addUserKnob {20 BlacksMatch}\n addUserKnob {6 default_black_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 premultInput l \"Premultiplied Input\" +STARTLINE}\n addUserKnob {4 mergeOp l Operation: t \"Plus and Screen do the same thing with our operation, so I only included a hypot between plus/screen and hypot.  Hypot raises the mult by x2 because I thought that gave more pleasising results.  It will probably be a harsher curve (more towards clamp) than the plus/screen result).\" M {Plus/Screen Hypot \"\" \"\"}}\n addUserKnob {18 defaultBlack l \"Default Black\" +DISABLED}\n defaultBlack {0.05 0.05 0.05}\n addUserKnob {6 defaultBlack_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 defaultBlack_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 multBase l \"Mult Low Range\" t \"This is the Multiplier for the top of the \\\"toe\\\" curve.  It is multiplying the BlackPoint color by this number and setting it as the highest point weird the curve will influence the midtones and the highlights\" R 1.5 10}\n multBase 4\n addUserKnob {7 rolloffGamma l \"Rolloff Gamma\" t \"This controls the bottom of the curve, the falloff to where it is bending toward the \\\"cut off point\\\" which is out black color.  A lower value will act more like a clamp and a higher value will act more like a plus.\" R 0.1 1}\n rolloffGamma 0.35\n addUserKnob {4 minVal l \"Min Value is:\" M {\"Toe Result\" \"Clamp Result\" \"\" \"\"}}\n addUserKnob {6 previewPlotScan l \"Preview PlotScan\" t \"Click to overlay a plotscan graph to show you how your black color is influenced by your settings.\" +STARTLINE}\n addUserKnob {12 plotscanSampler l \"PlotScan Sampler\" +HIDDEN}\n plotscanSampler {200 200}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask -STARTLINE T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Name: T BlacksMatch}\n addUserKnob {26 ver l Version: T v10}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x556a5000\n  label \"This Creates a \\nPer Channel Key\\nBased on the Blackpoint\"\n  note_font_size 30\n  note_font_color 0xffffffff\n  xpos 991\n  ypos -77\n  bdwidth 314\n  bdheight 421\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  tile_color 0xff\n  label green\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 177\n  ypos 466\n }\n StickyNote {\n  inputs 0\n  name StickyNote1\n  tile_color 0xff\n  label red\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 188\n  ypos 350\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  tile_color 0xff\n  label blue\n  note_font_size 41\n  note_font_color 0xffffffff\n  xpos 186\n  ypos 570\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  tile_color 0xff\n  label \"min will be \\nblack color\"\n  note_font_size 31\n  note_font_color 0xffffffff\n  xpos 143\n  ypos 733\n }\n Input {\n  inputs 0\n  name Inputimg\n  xpos 322\n  ypos -550\n }\n Dot {\n  name Dot17\n  xpos 356\n  ypos -418\n }\nset N2d043200 [stack 0]\n AddChannels {\n  channels rgba\n  color 1\n  name AddChannels1\n  xpos 322\n  ypos -365\n }\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos 356\n  ypos -288\n }\nset N2d041d00 [stack 0]\n Grade {\n  channels rgba\n  white 0\n  multiply 0\n  add {{defaultBlack.r} {defaultBlack.g} {defaultBlack.b} 0}\n  black_clamp false\n  name Grade1\n  label color\n  xpos 922\n  ypos -295\n }\n Input {\n  inputs 0\n  name InputBlackColor\n  xpos 1138\n  ypos -569\n  number 1\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name SwitchDefault\n  xpos 1138\n  ypos -291\n }\n Dot {\n  name Dot26\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1172\n  ypos -212\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1172\n  ypos -151\n }\nset N2d028800 [stack 0]\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos 1631\n  ypos -151\n }\nset N2d028100 [stack 0]\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 2140\n  ypos -151\n }\nset N2d00f900 [stack 0]\n Crop {\n  box {{plotscanSampler.x-2} {plotscanSampler.y-2} {plotscanSampler.x+2} {plotscanSampler.x+2}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 2432\n  ypos -154\n  addUserKnob {20 User}\n  addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  addUserKnob {22 cropToBbox_1 l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n }\n Blur {\n  channels rgb\n  size 16\n  name Blur1\n  label \"\\[value size]\"\n  xpos 2432\n  ypos -130\n }\n Reformat {\n  format \"512 512 0 0 512 512 1 square_512\"\n  name Reformat4\n  xpos 2432\n  ypos -92\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos 2466\n  ypos -43\n }\nset N2d00dd00 [stack 0]\n Dot {\n  name Dot47\n  note_font_size 41\n  xpos 2917\n  ypos -43\n }\nset N2d00d600 [stack 0]\n Dot {\n  name Dot42\n  label \"Black Color\"\n  note_font_size 41\n  xpos 2917\n  ypos 286\n }\n Dot {\n  name Dot43\n  note_font_size 41\n  xpos 2917\n  ypos 366\n }\nset N2d00c800 [stack 0]\n Dot {\n  name Dot44\n  note_font_size 41\n  xpos 2917\n  ypos 480\n }\nset N2d00c100 [stack 0]\n Dot {\n  name Dot45\n  note_font_size 41\n  xpos 2917\n  ypos 588\n }\nset N2cfdf900 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 2917\n  ypos 656\n }\nset N2cfdf200 [stack 0]\npush $N2cfdf200\npush $N2d00d600\n Dot {\n  name Dot11\n  label \"Black Color\"\n  note_font_size 41\n  xpos 3426\n  ypos -43\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply6\n  label \"mult black color\"\n  xpos 3392\n  ypos 77\n }\n Reformat {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  pbb true\n  name Reformat1\n  xpos 2711\n  ypos 61\n }\n Ramp {\n  p0 {0 0}\n  p1 {512 0}\n  name Ramp1\n  xpos 2711\n  ypos 93\n }\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 2745\n  ypos 154\n }\nset N2cfdc100 [stack 0]\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 3138\n  ypos 154\n }\nset N2cdbb900 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide2\n  xpos 3392\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert5\n  xpos 3392\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp4\n  xpos 3392\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value 0.5\n  name Gamma4\n  xpos 3392\n  ypos 223\n }\n Dot {\n  name Dot39\n  xpos 3426\n  ypos 366\n }\nset N2cdab200 [stack 0]\n Dot {\n  name Dot40\n  xpos 3426\n  ypos 480\n }\nset N2cdaab00 [stack 0]\n Dot {\n  name Dot41\n  xpos 3426\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle11\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3277\n  ypos 581\n }\npush $N2cfdf900\npush $N2cdaab00\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle12\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3276\n  ypos 473\n }\npush $N2d00c100\npush $N2cdab200\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle13\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 3270\n  ypos 359\n }\npush $N2d00c800\npush $N2cdbb900\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge14\n  label red\n  xpos 3104\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge15\n  label green\n  xpos 3104\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge16\n  label blue\n  xpos 3104\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge18\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 3104\n  ypos 644\n }\n Dot {\n  name Dot46\n  note_font_size 41\n  xpos 3138\n  ypos 742\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor1\n  xpos 2883\n  ypos 739\n }\npush $N2d00dd00\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply3\n  label \"mult black color\"\n  xpos 2432\n  ypos 63\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply4\n  label \"hypot Extra Mult\\n\"\n  xpos 2432\n  ypos 95\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N2cfdc100\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide1\n  xpos 2432\n  ypos 151\n }\n Invert {\n  channels rgb\n  name Invert2\n  xpos 2432\n  ypos 175\n }\n Clamp {\n  channels rgb\n  name Clamp2\n  xpos 2432\n  ypos 199\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma2\n  xpos 2432\n  ypos 223\n }\n Dot {\n  name Dot6\n  xpos 2466\n  ypos 366\n }\nset N2cd48100 [stack 0]\n Dot {\n  name Dot9\n  xpos 2466\n  ypos 480\n }\nset N2cd33900 [stack 0]\n Dot {\n  name Dot10\n  xpos 2466\n  ypos 588\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle4\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 581\n }\npush $N2cfdf900\npush $N2cd33900\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle5\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2511\n  ypos 473\n }\npush $N2d00c100\npush $N2cd48100\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle6\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2517\n  ypos 359\n }\npush $N2d00c800\npush $N2cfdc100\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge2\n  label red\n  xpos 2711\n  ypos 359\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge6\n  label green\n  xpos 2711\n  ypos 473\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge7\n  label blue\n  xpos 2711\n  ypos 581\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge8\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 2711\n  ypos 730\n }\n Group {\n  name PlotScanline\n  tile_color 0x9c0000ff\n  xpos 2711\n  ypos 805\n  addUserKnob {20 Controls}\n  addUserKnob {4 mode l \"Sampling method\" M {\"Slice Per Pixel (faster)\" \"Slice Area (slower)\" \"Full Scanline\" \"\" \"\" \"\"}}\n  mode \"Full Scanline\"\n  addUserKnob {6 add2image l \"Add to original\" +STARTLINE}\n  addUserKnob {6 Normalize -STARTLINE}\n  addUserKnob {6 tonemap l \"Tone Map (HDRI)\" -STARTLINE}\n  addUserKnob {6 curve l \"Plot as curve\" +STARTLINE}\n  curve true\n  addUserKnob {3 curveFat l \"Curve Thickness\" -STARTLINE}\n  addUserKnob {3 sa l \"Sample Area\" t \"Disabled when using pr pixel method.\"}\n  sa 1\n  addUserKnob {7 lift l Lift R -1 1}\n  addUserKnob {7 scale l Scale R 0 5}\n  scale 1\n  addUserKnob {26 \"\"}\n  addUserKnob {12 p1 l \"Start Point\"}\n  p1 {376 418}\n  addUserKnob {12 p2 l \"End Point\" -STARTLINE}\n  p2 {428.5 425.5}\n  addUserKnob {26 \"\"}\n  addUserKnob {26 \"\" l \"About \" T \"Plot Scanline v0.4 | theo@euqahuba.com\\nUse P1 to select your scanline and/or you start slice.\"}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos -480\n   ypos 62\n  }\nset N2ccfb200 [stack 0]\n  Expression {\n   temp_name0 length\n   temp_expr0 sqrt(r*r+g*g+b*b)\n   expr0 r/length\n   expr1 g/length\n   expr2 b/length\n   name Normalize\n   xpos -480\n   ypos 108\n   disable {{1-parent.Normalize i}}\n  }\n  Expression {\n   expr0 r/(r+1)\n   expr1 g/(g+1)\n   expr2 b/(b+1)\n   name tonamap\n   xpos -480\n   ypos 134\n   disable {{1-parent.tonemap i}}\n  }\nset N2ccfa400 [stack 0]\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name scanline\n   xpos -302\n   ypos 193\n   addUserKnob {20 User}\n  }\npush $N2ccfa400\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name Expression_highQuality\n   xpos -515\n   ypos 197\n   addUserKnob {20 User}\n  }\npush $N2ccfa400\n  Expression {\n   temp_name0 rExpr\n   temp_expr0 \"min(max(0,\\r\\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name1 gExpr\n   temp_expr1 \"min(max(0,\\r\\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   temp_name2 bExpr\n   temp_expr2 \"min(max(0,\\r\\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)\"\n   expr0 rExpr\n   expr1 gExpr\n   expr2 bExpr\n   expr3 0\n   name perPixel\n   xpos -419\n   ypos 201\n   addUserKnob {20 User}\n  }\n  Switch {\n   inputs 3\n   which {{parent.mode i}}\n   name Switch2\n   xpos -480\n   ypos 253\n  }\n  Matrix {\n   matrix {\n       {0 1 0}\n       {1 -4 1}\n       {0 1 0}\n     }\n   name Matrix2\n   xpos -480\n   ypos 284\n   disable {{-1+parent.curve i x70 1}}\n  }\n  Dilate {\n   size {{parent.curveFat}}\n   name Dilate1\n   xpos -480\n   ypos 326\n   disable {{-1+parent.curve.main}}\n  }\n  Clamp {\n   name Clamp1\n   xpos -480\n   ypos 383\n  }\nset N2ceaf200 [stack 0]\npush $N2ccfb200\n  Dot {\n   name Dot1\n   xpos -556\n   ypos 66\n  }\n  Clamp {\n   maximum 331\n   name Clamp2\n   xpos -590\n   ypos 352\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   bbox intersection\n   name Merge1\n   xpos -590\n   ypos 394\n  }\n  Dot {\n   name Dot2\n   xpos -556\n   ypos 433\n  }\npush $N2ceaf200\n  Switch {\n   inputs 2\n   which {{parent.add2image i}}\n   name Switch1\n   xpos -480\n   ypos 430\n  }\n  Output {\n   name Output1\n   xpos -480\n   ypos 470\n  }\n end_group\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 2745\n  ypos 857\n }\nset N2ce9c800 [stack 0]\n Shuffle {\n  red white\n  green white\n  blue white\n  alpha white\n  name Shuffle7\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 2821\n  ypos 850\n }\n BlackOutside {\n  name BlackOutside1\n  xpos 2821\n  ypos 882\n }\n Dilate {\n  channels rgba\n  size -2\n  name Dilate1\n  xpos 2821\n  ypos 910\n }\n Invert {\n  name Invert3\n  xpos 2821\n  ypos 934\n }\npush $N2ce9c800\n Merge2 {\n  inputs 2\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 2711\n  ypos 938\n }\n Group {\n  name BinaryAlpha\n  tile_color 0x2a2a2aff\n  label \"(\\[value an] --> \\[value output1])\"\n  note_font Verdana\n  note_font_color 0xfffff9ff\n  xpos 2711\n  ypos 983\n  addUserKnob {20 BinaryAlpha}\n  addUserKnob {4 an l Analyze: M {rgb rgba alpha \"\" \"\" \"\"}}\n  addUserKnob {4 output1 l Output: M {rgba alpha \"\" \"\" \"\" \"\"}}\n  output1 alpha\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Analyzes channel input and creates a binary result 0 or 1 and outputs it into output channel\" T BinaryAlpha}\n  addUserKnob {26 ver l Version: T v03}\n }\n  Input {\n   inputs 0\n   name Input\n   xpos -398\n   ypos 275\n  }\n  Expression {\n   temp_name0 rgb_an\n   temp_expr0 \"r !=0 || g!=0 || b!=0?1:0\"\n   temp_name1 rgba_an\n   temp_expr1 \"r!=0 || g!=0 || b!=0 || a!=0?1:0\"\n   temp_name2 alpha_an\n   temp_expr2 a!=0?1:0\n   expr3 \"parent.an == 0 ? rgb_an : parent.an == 1 ? rgba_an : alpha_an\"\n   name Expression\n   xpos -398\n   ypos 341\n  }\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle\n   label \"\\[value in]\"\n   xpos -398\n   ypos 367\n   disable {{parent.output1}}\n  }\n  Output {\n   name Output1\n   xpos -398\n   ypos 456\n  }\n end_group\n Reformat {\n  type \"to box\"\n  box_height {{\"\\[exists parent.input0] ? parent.input.height : root.format.height\"}}\n  resize height\n  filter impulse\n  pbb true\n  name Reformat2\n  xpos 2711\n  ypos 1041\n }\n Reformat {\n  type \"to box\"\n  box_width {{\"\\[exists parent.input0] ? parent.input.width : root.format.width\"}}\n  box_height {{input.height}}\n  resize none\n  filter impulse\n  black_outside true\n  pbb true\n  name Reformat3\n  xpos 2711\n  ypos 1081\n }\n Dilate {\n  channels rgba\n  size 1\n  name Dilate2\n  xpos 2711\n  ypos 1121\n }\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 2745\n  ypos 1192\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 864\n  ypos 878\n  number 2\n }\n Dot {\n  name Dot29\n  xpos 898\n  ypos 1015\n }\npush $N2d028100\n Dot {\n  name Dot33\n  label \"Black Color\"\n  note_font_size 41\n  xpos 1631\n  ypos 295\n }\n Dot {\n  name Dot37\n  note_font_size 41\n  xpos 1631\n  ypos 360\n }\nset N2ce4c800 [stack 0]\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 1631\n  ypos 474\n }\nset N2ce4c100 [stack 0]\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 1631\n  ypos 582\n }\nset N2ce2b900 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos 1631\n  ypos 674\n }\nset N2ce2b200 [stack 0]\npush $N2ce2b200\npush $N2d00f900\n Multiply {\n  channels rgb\n  value 2\n  name Multiply7\n  label \"mult black color\"\n  xpos 2106\n  ypos 87\n }\npush $N2d041d00\n Unpremult {\n  name Unpremult1\n  xpos 322\n  ypos -16\n  disable {{\"! premultInput\"}}\n }\n Dot {\n  name Dot18\n  xpos 356\n  ypos 145\n }\nset N2ce29600 [stack 0]\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos 1028\n  ypos 145\n }\nset N2ce28f00 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 1852\n  ypos 145\n }\nset N2ce28800 [stack 0]\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide3\n  xpos 2106\n  ypos 142\n }\n Invert {\n  channels rgb\n  name Invert4\n  xpos 2106\n  ypos 166\n }\n Clamp {\n  channels rgb\n  name Clamp3\n  xpos 2106\n  ypos 190\n }\n Gamma {\n  channels rgb\n  value 0.51\n  name Gamma3\n  xpos 2106\n  ypos 214\n }\n Dot {\n  name Dot24\n  xpos 2140\n  ypos 360\n }\nset N2ce00100 [stack 0]\n Dot {\n  name Dot25\n  xpos 2140\n  ypos 474\n }\nset N2cdf3900 [stack 0]\n Dot {\n  name Dot27\n  xpos 2140\n  ypos 582\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle8\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 575\n }\npush $N2ce2b900\npush $N2cdf3900\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle9\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1990\n  ypos 467\n }\npush $N2ce4c100\npush $N2ce00100\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle10\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1984\n  ypos 353\n }\npush $N2ce4c800\npush $N2ce28800\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge11\n  label red\n  xpos 1818\n  ypos 353\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge12\n  label green\n  xpos 1818\n  ypos 467\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge13\n  label blue\n  xpos 1818\n  ypos 575\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge17\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 1818\n  ypos 662\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 1852\n  ypos 760\n }\n Switch {\n  inputs 2\n  which {{minVal}}\n  name SwitchMinColor\n  xpos 1597\n  ypos 757\n }\npush $N2d028800\n Multiply {\n  channels rgb\n  value {{multBase}}\n  name Multiply1\n  label \"mult black color\"\n  xpos 1138\n  ypos 52\n }\n Multiply {\n  channels rgb\n  value 2\n  name Multiply2\n  label \"hypot Extra Mult\\n\"\n  xpos 1138\n  ypos 84\n  disable {{\"mergeOp == 1 ? 0 : 1\"}}\n }\npush $N2ce28f00\n MergeExpression {\n  inputs 2\n  expr0 Br/Ar\n  expr1 Bg/Ag\n  expr2 Bb/Ab\n  name MergeDivide\n  xpos 1138\n  ypos 194\n }\n Invert {\n  channels rgb\n  name Invert1\n  xpos 1138\n  ypos 239\n }\n Clamp {\n  channels rgb\n  name Clamp1\n  xpos 1138\n  ypos 263\n }\n Gamma {\n  channels rgb\n  value {{rolloffGamma}}\n  name Gamma1\n  xpos 1138\n  ypos 287\n }\n Dot {\n  name Dot19\n  xpos 1172\n  ypos 364\n }\nset N2cf84f00 [stack 0]\n Dot {\n  name Dot20\n  xpos 1172\n  ypos 478\n }\nset N2cf84800 [stack 0]\n Dot {\n  name Dot21\n  xpos 1172\n  ypos 586\n }\n Shuffle {\n  red blue\n  green blue\n  alpha blue\n  name Shuffle3\n  tile_color 0x3fbfff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 579\n }\npush $N2d028800\n Dot {\n  name Dot23\n  xpos 706\n  ypos -151\n }\n Dot {\n  name Dot8\n  label \"Black Color\"\n  note_font_size 41\n  xpos 706\n  ypos 293\n }\nset N2cf72b00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 706\n  ypos 404\n }\nset N2cf72400 [stack 0]\n Dot {\n  name Dot3\n  note_font_size 41\n  xpos 706\n  ypos 523\n }\npush $N2cf84800\n Shuffle {\n  red green\n  blue green\n  alpha green\n  name Shuffle2\n  tile_color 0xbf00ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1022\n  ypos 471\n }\npush $N2cf72400\npush $N2cf84f00\n Shuffle {\n  green red\n  blue red\n  alpha red\n  name Shuffle1\n  tile_color 0xbf0000ff\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat --> \\[value out2]] \\}]\"\n  xpos 1016\n  ypos 357\n }\npush $N2cf72b00\npush $N2ce29600\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge3\n  label red\n  xpos 322\n  ypos 357\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge4\n  label green\n  xpos 322\n  ypos 471\n }\n Merge2 {\n  inputs 2+1\n  operation {{parent.Settings.mergeOpNum}}\n  bbox B\n  Achannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  Bchannels {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n  maskChannelInput -rgba.red\n  name Merge5\n  label blue\n  xpos 322\n  ypos 579\n }\n Merge2 {\n  inputs 2\n  operation max\n  bbox B\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name Merge1\n  label \"Set Min Color\\nto Blackpoint\"\n  xpos 322\n  ypos 748\n }\n Premult {\n  name Premult4\n  xpos 322\n  ypos 881\n  disable {{\"! premultInput\"}}\n }\npush $N2d043200\n Dot {\n  name Dot28\n  xpos -146\n  ypos -418\n }\n Dot {\n  name Dot30\n  xpos -146\n  ypos 1015\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix 0.8\n  name MergeKeymix\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1012\n }\n Merge2 {\n  inputs 2\n  name Merge10\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 322\n  ypos 1189\n  disable {{!previewPlotScan}}\n }\n Output {\n  name Output1\n  xpos 322\n  ypos 1395\n }\n NoOp {\n  inputs 0\n  name Settings\n  note_font_size 51\n  xpos 2494\n  ypos -414\n  addUserKnob {20 User}\n  addUserKnob {7 mergeOpNum l \"Merge Op Num\"}\n  mergeOpNum {{\"mergeOp == 0 ? 24 : 13\"}}\n }\nend_group\nPremult {\n name Premult2\n selected true\n xpos -1034\n ypos 3011\n}\nGroup {\n inputs 2\n name LightWrapPro\n help \"Adds exponentially blurred lightwrap\\n\\nAdds a bright highlight wrap and an overall wrap\"\n tile_color 0x1e252eff\n label \"(\\[value outputView])\"\n note_font \"DejaVu Sans Bold\"\n note_font_color 0xb7e6ffff\n selected true\n xpos -1034\n ypos 3463\n disable true\n mapsize {0.15 0.15}\n addUserKnob {20 LightWrapPro}\n addUserKnob {4 outputView l \"Output View\" t \"Chose one to view while adjusting\" M {\"Final Output\" \"Highlight Key\" \"Highlight Wrap\" \"OverAll Wrap\" \"Effect Only\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"}}\n addUserKnob {6 premultiplied l \"FG premultiplied\" -STARTLINE}\n premultiplied true\n addUserKnob {26 highlightKeyTitle l \"<b><font color = skyblue>HighLight Key\"}\n addUserKnob {7 blackPt l Black R 0 4}\n blackPt 1\n addUserKnob {7 whitePt l White R 0 4}\n whitePt 2\n addUserKnob {26 wrapHighlightsTitle l \"<b><font color = skyblue>HighLight Wrap\"}\n addUserKnob {6 Mult_Flare_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps l \" Steps\" T ExponGlowWrapHighlight.steps}\n addUserKnob {41 falloffType l Falloff -STARTLINE T ExponGlowWrapHighlight.falloffType}\n addUserKnob {41 size l Size T ExponGlowWrapHighlight.size}\n addUserKnob {7 wrapHighlightAmount l Amount R 0 4}\n wrapHighlightAmount 1\n addUserKnob {26 WrapAllTitle l \"<b><font color=skyblue>Overall Wrap \"}\n addUserKnob {6 WrapAllMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {41 steps_1 l \" Steps\" T ExponGlowWrapAll.steps}\n addUserKnob {41 falloffType_1 l Falloff -STARTLINE T ExponGlowWrapAll.falloffType}\n addUserKnob {41 size_1 l Size T ExponGlowWrapAll.size}\n addUserKnob {7 wrapAllAmount l Amount R 0 4}\n wrapAllAmount 1\n addUserKnob {6 removeHighlights l \"Dim Highlights\" +STARTLINE}\n removeHighlights true\n addUserKnob {7 dimHighlightsAmount l \"\" -STARTLINE R 0 3}\n dimHighlightsAmount 1\n addUserKnob {26 blendEdgesTitle l \"<b><font color=skyblue>Blend Edges\"}\n addUserKnob {7 blendEdgesAmount l Amount}\n addUserKnob {6 ColorBleedMult_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 bleedColorTitle l \"<b><font color=skyblue>Bleed Color\"}\n addUserKnob {7 bleedColorAmount l Amount}\n addUserKnob {7 bleedColorSize l Size R 0.1 4}\n bleedColorSize 1\n addUserKnob {7 bleedColorFalloff_2 l Falloff R 0.2 2}\n bleedColorFalloff_2 0.5\n addUserKnob {26 \"\"}\n addUserKnob {7 globalAmount l \"<b><font color=skyblue>Global Amount\"}\n globalAmount 1\n addUserKnob {26 _1 l mask T \"\"}\n addUserKnob {41 maskChannelInput l \"\" -STARTLINE T MergeCopyLightWrapPro.maskChannelInput}\n addUserKnob {41 inject -STARTLINE T MergeCopyLightWrapPro.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeCopyLightWrapPro.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeCopyLightWrapPro.fringe}\n addUserKnob {41 mix T MergeCopyLightWrapPro.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"\\n\\n\" T LightWrapPro}\n addUserKnob {26 ver l Version: T v06}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0x402f27ff\n  label \"Bleed Color\"\n  note_font_size 60\n  note_font_color 0xffffffff\n  xpos -683\n  ypos 2273\n  bdwidth 1316\n  bdheight 787\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x39464200\n  label \"highlight key\"\n  note_font_size 40\n  note_font_color 0xffffffff\n  xpos 1630\n  ypos 113\n  bdwidth 272\n  bdheight 393\n }\n Input {\n  inputs 0\n  name Inputmask\n  xpos 1887\n  ypos 3580\n  number 2\n }\n Input {\n  inputs 0\n  name FG\n  xpos -413\n  ypos -318\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos -413\n  ypos -150\n }\n Dot {\n  name Dot1\n  xpos -379\n  ypos 375\n }\nset N2cf0c100 [stack 0]\n Dot {\n  name Dot7\n  xpos -825\n  ypos 375\n }\n Dot {\n  name Dot46\n  xpos -825\n  ypos 3104\n }\nset N2cee7200 [stack 0]\n Dot {\n  name Dot15\n  xpos 915\n  ypos 3107\n }\nset N2cee6b00 [stack 0]\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos 915\n  ypos 3224\n }\nset N2cee6400 [stack 0]\n Dot {\n  name Dot32\n  note_font_size 41\n  xpos 915\n  ypos 3277\n }\npush $N2cf0c100\n Dot {\n  name Dot8\n  note_font_size 41\n  xpos 717\n  ypos 378\n }\nset N2cee5600 [stack 0]\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 717\n  ypos 550\n }\n Input {\n  inputs 0\n  name BG\n  label \"\\n\"\n  xpos 1702\n  ypos -276\n  number 1\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos 1702\n  ypos -145\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove2\n  xpos 1702\n  ypos -68\n }\n Dot {\n  name Dot3\n  xpos 1736\n  ypos 177\n }\nset N2cedab00 [stack 0]\n Keyer {\n  operation \"luminance key\"\n  range {{parent.blackPt} {parent.whitePt} {range.B} {range.B}}\n  name Keyer2\n  xpos 1702\n  ypos 303\n }\n Dot {\n  name Dot4\n  note_font_size 41\n  xpos 1736\n  ypos 397\n }\nset N2ced9d00 [stack 0]\n Premult {\n  name Premult1\n  xpos 1702\n  ypos 452\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 543\n }\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos 1734\n  ypos 746\n }\n Group {\n  name ExponGlowWrapHighlight\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 1700\n  ypos 1012\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 6\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 4\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType smooth1\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N2c489600 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {parent.size.h/format.pixel_aspect/height*width}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N2c46b900 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N2c46b200 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N2c46b200\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N2c469600 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"} {\"falloffType == 0 ? 0.166666666667 :falloffType == 1 ? pow(0.166666666667, 3) : falloffType == 2 ? 0.166666666667*0.166666666667*(3-2*0.166666666667) : falloffType == 3 ? 0.166666666667*0.166666666667*(2 - 0.166666666667) : falloffType == 4 ? 0.166666666667*(1 + 0.166666666667*(1 - 0.166666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N2c469600\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"} {\"falloffType == 0 ? 0.333333333333 :falloffType == 1 ? pow(0.333333333333, 3) : falloffType == 2 ? 0.333333333333*0.333333333333*(3-2*0.333333333333) : falloffType == 3 ? 0.333333333333*0.333333333333*(2 - 0.333333333333) : falloffType == 4 ? 0.333333333333*(1 + 0.333333333333*(1 - 0.333333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N2c469600\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N2c469600\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"} {\"falloffType == 0 ? 0.666666666667 :falloffType == 1 ? pow(0.666666666667, 3) : falloffType == 2 ? 0.666666666667*0.666666666667*(3-2*0.666666666667) : falloffType == 3 ? 0.666666666667*0.666666666667*(2 - 0.666666666667) : falloffType == 4 ? 0.666666666667*(1 + 0.666666666667*(1 - 0.666666666667)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N2c469600\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"} {\"falloffType == 0 ? 0.833333333333 :falloffType == 1 ? pow(0.833333333333, 3) : falloffType == 2 ? 0.833333333333*0.833333333333*(3-2*0.833333333333) : falloffType == 3 ? 0.833333333333*0.833333333333*(2 - 0.833333333333) : falloffType == 4 ? 0.833333333333*(1 + 0.833333333333*(1 - 0.833333333333)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N2c469600\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   selected true\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 6+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 6\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N2c46b900\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N2c489600\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N2c3d9600 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N2c3d8100 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N2c19f900 [stack 0]\npush $N2c3d8100\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N2c19f200 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N2c19eb00 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N2c19eb00\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N2c19f900\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N2c19f200\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N2c173200 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N2c173200\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N2c3d9600\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N2c489600\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N2c489600\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Grade {\n  channels all\n  white {{wrapHighlightAmount/10}}\n  name FlareAmount\n  xpos 1702\n  ypos 1393\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal3\n  label \"\\[value value]\"\n  xpos 1702\n  ypos 1577\n }\n Dot {\n  name Dot25\n  label \"LIGHT FLARE\"\n  note_font_size 61\n  xpos 1736\n  ypos 1801\n }\nset N2c12c100 [stack 0]\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos 1738\n  ypos 2915\n }\nset N2c123900 [stack 0]\npush $N2cee5600\npush $N2cedab00\n Dot {\n  name Dot20\n  xpos 1059\n  ypos 179\n }\n Shuffle {\n  alpha white\n  name Shuffle1\n  label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 238\n }\n Multiply {\n  inputs 1+1\n  channels rgba\n  value 0\n  name Multiply2\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 366\n }\n Dot {\n  name Dot9\n  xpos 1059\n  ypos 725\n }\nset N2c121600 [stack 0]\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 1343\n  ypos 725\n }\n Keyer {\n  operation \"luminance key\"\n  name Keyer1\n  xpos 1309\n  ypos 823\n }\npush $N2c121600\n Colorspace {\n  colorspace_out CIE-Yxy\n  name Colorspace4\n  xpos 1188\n  ypos 786\n }\n Expression {\n  inputs 1+1\n  expr0 \"(r*(1+(r/((parent.dimHighlightsAmount+1)**2))) ) / (1+r)\"\n  channel1 {-rgba.red -rgba.green -rgba.blue none}\n  expr1 \"(g*(1+(g/((parent.dimHighlightsAmount+1)**2))) ) / (1+g)\"\n  channel2 {-rgba.red -rgba.green -rgba.blue none}\n  expr2 \"(b*(1+(b/((parent.dimHighlightsAmount+1)**2))) ) / (1+b)\"\n  expr3 a\n  name Tonemap_whitepoint\n  xpos 1188\n  ypos 827\n }\n Colorspace {\n  colorspace_in CIE-Yxy\n  name Colorspace3\n  xpos 1188\n  ypos 867\n }\npush $N2c121600\n Switch {\n  inputs 2\n  which {{removeHighlights}}\n  name Switch4\n  xpos 1025\n  ypos 867\n }\n Group {\n  name ExponGlowWrapAll\n  onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 50)\\n#n.knob('exp').setRange(1, 4)\\nnuke.thisNode().knob('steps').setFlag(0x02000000)\"\n  knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"includeOriginal\\\":\\n    if n.knob('includeOriginal').getValue() == 1:\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        original = nuke.toNode('Original')\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n        steps = int(n.knob('steps').getValue())\\n        merge.setInput(steps+1, original)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\n    else:\\n        merge.setInput(steps+1, None)\\n        AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps)\\n\\nelif k.name() == \\\"steps\\\":\\n\\n    s = int(k.value())\\n    if s<1:\\n        k.setValue(1)\\n    else:\\n        start = nuke.toNode(\\\"Start\\\")\\n        end   = nuke.toNode(\\\"End\\\")\\n        b1    = nuke.toNode(\\\"Blur1\\\")\\n        m1    = nuke.toNode(\\\"Multiply1\\\")\\n        merge = nuke.toNode(\\\"Merge1\\\")\\n        AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n\\n        b1x   = b1.xpos()\\n        b1y   = b1.ypos()\\n        b1n   = b1.name()\\n\\n        m1x   = m1.xpos()\\n        m1y   = m1.ypos()\\n        m1n   = m1.name()\\n\\n        steps = int(n.knob('steps').getValue())\\n        size  = n.knob('size').getValue()\\n        mult  = n.knob('exp').getValue()\\n\\n        #b1.setInput(0, start)\\n        for i in range(1,merge.inputs()):\\n            merge.setInput(i,None)\\n        merge.setInput(0, m1)\\n        \\[nuke.delete(i) for i in nuke.allNodes() if i.xpos()>start.xpos()]\\n        for i in range(1,steps):\\n            # Blur\\n            b = nuke.nodes.Blur()\\n            m = nuke.nodes.Multiply()\\n            b.setXYpos(b1x+i*100,b1y)\\n            b.setInput(0,start)\\n            b\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            b\\[\\\"crop\\\"].setValue(0)\\n            b\\[\\\"size\\\"].setValue(0, 1)\\n            b\\[\\\"size\\\"].setExpression( \\\"((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(\\{\\}**2))\\\".format(str(i+1)), 0 )\\n            b\\[\\\"size\\\"].setExpression( \\\"((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(\\{\\}**2))\\\".format(str(i+1)), 1 )\\n            b\\[\\\"label\\\"].setValue('')\\n            blurAbove = b.name()\\n\\n            m.setXYpos(m1x+i*100,m1y)\\n            m.setInput(0, nuke.toNode(blurAbove))\\n            m\\[\\\"channels\\\"].setValue(\\\"all\\\")\\n            m\\[\\\"value\\\"].setValue(1,1,1,1)\\n            j = 1-(i/steps)\\n            m\\[\\\"value\\\"].setExpression('falloffType == 0 ? \\{\\} :falloffType == 1 ? pow(\\{\\}, 3) : falloffType == 2 ? \\{\\}*\\{\\}*(3-2*\\{\\}) : falloffType == 3 ? \\{\\}*\\{\\}*(2 - \\{\\}) : falloffType == 4 ? \\{\\}*(1 + \\{\\}*(1 - \\{\\})) : 0'.format(j,j,j,j,j,j,j,j,j,j,j))\\n            m\\[\\\"mix\\\"].setExpression(\\\"falloff\\\")\\n            m\\[\\\"label\\\"].setValue('')\\n\\n            merge.setInput(i if i<2 else i+1, m)\\n            AvgMult\\['whitepoint'].setValue(i if i<2 else i+1)\\n\\n        if n.knob('includeOriginal').getValue() == 1:\\n            merge = nuke.toNode(\\\"Merge1\\\")\\n            original = nuke.toNode('Original')\\n            AvgMult = nuke.toNode(\\\"AverageMult\\\")\\n            steps = int(n.knob('steps').getValue())\\n            merge.setInput(steps+1, original)\\n            AvgMult\\['whitepoint'].setValue(2 if steps<2 else steps+1)\\n\\nelif k.name() == \\\"output2\\\":\\n    if n.knob(\\\"output2\\\").getValue() == 4:\\n        n.knob('AvgMaxOriginal').setVisible(True)\\n    else:\\n        n.knob('AvgMaxOriginal').setVisible(False)\\n\\n\"\n  tile_color 0xcc804eff\n  label \"(\\[value output2])\"\n  note_font \"Verdana Bold\"\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 995\n  addUserKnob {20 ExponBlurSimple}\n  addUserKnob {41 channels T Remove1.channels}\n  addUserKnob {26 \"\"}\n  addUserKnob {4 output2 l Operation: M {Screen Plus Over Hypot Average Max Min \"\" \"\" \"\" \"\" \"\"}}\n  output2 Over\n  addUserKnob {3 steps l \"  Steps\" -STARTLINE}\n  steps 8\n  addUserKnob {26 text l \" \" T \" \"}\n  addUserKnob {6 includeOriginal l \"Include Original?\" -STARTLINE}\n  addUserKnob {6 AvgMaxOriginal l \"Use Max of Average and Original\" +HIDDEN +STARTLINE}\n  AvgMaxOriginal true\n  addUserKnob {14 size l Size R 0 50}\n  size 10\n  addUserKnob {14 exp l Exponent +INVISIBLE R 1 4}\n  exp 3\n  addUserKnob {6 color_rgba_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n  addUserKnob {7 falloff l Falloff}\n  falloff 1\n  addUserKnob {4 falloffType l \"Falloff Type\" M {Linear pLinear smooth smooth0 smooth1 \"\"}}\n  falloffType pLinear\n  addUserKnob {14 postBlur l \"Post Blur\" R 0 100}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n  addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n  addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n  addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n  addUserKnob {41 mix T MergeKeymix.mix}\n  addUserKnob {14 safeBBoxPixels l \"\" +STARTLINE +HIDDEN R 0 400}\n  safeBBoxPixels 100\n  addUserKnob {14 adjustBBoxPercent l \"\" -STARTLINE +HIDDEN R 1 2}\n  adjustBBoxPercent 1\n  addUserKnob {20 info l Info}\n  addUserKnob {26 creator l Creator: T \"Tony Lyons\"}\n  addUserKnob {26 desc l Description: t \"Add description and tooltip for gizmo\" T ExponBlurSimple}\n  addUserKnob {26 ver l Version: T v02}\n }\n  Input {\n   inputs 0\n   name Inputmask\n   xpos 346\n   ypos 596\n   number 1\n  }\n  Dot {\n   name Dot19\n   label Mask\n   note_font_size 41\n   xpos 380\n   ypos 662\n  }\n  Dot {\n   name Dot10\n   note_font_size 41\n   xpos 380\n   ypos 899\n  }\n  Input {\n   inputs 0\n   name Inputimg\n   xpos -221\n   ypos -1229\n  }\n  Dot {\n   name Dot16\n   note_font_size 41\n   xpos -187\n   ypos -1062\n  }\nset N2c100100 [stack 0]\n  Dot {\n   name Dot1\n   note_font_size 41\n   xpos 461\n   ypos -1058\n  }\n  Remove {\n   operation keep\n   channels rgba\n   name Remove1\n   xpos 427\n   ypos -980\n  }\n  NoOp {\n   name aspectCalc\n   xpos 427\n   ypos -939\n   addUserKnob {20 User}\n   addUserKnob {14 aspect R 0 100}\n   aspect {{parent.size.w} {parent.size.h/format.pixel_aspect/height*width}}\n  }\n  Dot {\n   name Dot21\n   note_font_size 41\n   xpos 461\n   ypos -853\n  }\nset N2c0ca400 [stack 0]\n  Invert {\n   name Invert1\n   xpos 864\n   ypos -860\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\nset N2c0c9d00 [stack 0]\n  Dot {\n   name Dot4\n   note_font_size 41\n   xpos 540\n   ypos -604\n  }\n  NoOp {\n   name Original\n   xpos 506\n   ypos -327\n  }\n  Dot {\n   name Dot5\n   note_font_size 41\n   xpos 540\n   ypos 100\n  }\npush $N2c0c9d00\n  NoOp {\n   name Start\n   xpos 864\n   ypos -706\n  }\nset N2c0c8100 [stack 0]\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(8**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(8**2))}}\n   crop false\n   name Blur8\n   xpos 1564\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"} {\"falloffType == 0 ? 0.125 :falloffType == 1 ? pow(0.125, 3) : falloffType == 2 ? 0.125*0.125*(3-2*0.125) : falloffType == 3 ? 0.125*0.125*(2 - 0.125) : falloffType == 4 ? 0.125*(1 + 0.125*(1 - 0.125)) : 0\"}}\n   mix {{falloff}}\n   name Multiply8\n   xpos 1564\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(7**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(7**2))}}\n   crop false\n   name Blur7\n   xpos 1464\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"} {\"falloffType == 0 ? 0.25 :falloffType == 1 ? pow(0.25, 3) : falloffType == 2 ? 0.25*0.25*(3-2*0.25) : falloffType == 3 ? 0.25*0.25*(2 - 0.25) : falloffType == 4 ? 0.25*(1 + 0.25*(1 - 0.25)) : 0\"}}\n   mix {{falloff}}\n   name Multiply7\n   xpos 1464\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(6**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(6**2))}}\n   crop false\n   name Blur6\n   xpos 1364\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"} {\"falloffType == 0 ? 0.375 :falloffType == 1 ? pow(0.375, 3) : falloffType == 2 ? 0.375*0.375*(3-2*0.375) : falloffType == 3 ? 0.375*0.375*(2 - 0.375) : falloffType == 4 ? 0.375*(1 + 0.375*(1 - 0.375)) : 0\"}}\n   mix {{falloff}}\n   name Multiply6\n   xpos 1364\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(5**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(5**2))}}\n   crop false\n   name Blur5\n   xpos 1264\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"} {\"falloffType == 0 ? 0.5 :falloffType == 1 ? pow(0.5, 3) : falloffType == 2 ? 0.5*0.5*(3-2*0.5) : falloffType == 3 ? 0.5*0.5*(2 - 0.5) : falloffType == 4 ? 0.5*(1 + 0.5*(1 - 0.5)) : 0\"}}\n   mix {{falloff}}\n   name Multiply5\n   xpos 1264\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(4**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(4**2))}}\n   crop false\n   name Blur4\n   xpos 1164\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"} {\"falloffType == 0 ? 0.625 :falloffType == 1 ? pow(0.625, 3) : falloffType == 2 ? 0.625*0.625*(3-2*0.625) : falloffType == 3 ? 0.625*0.625*(2 - 0.625) : falloffType == 4 ? 0.625*(1 + 0.625*(1 - 0.625)) : 0\"}}\n   mix {{falloff}}\n   name Multiply4\n   xpos 1164\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(3**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(3**2))}}\n   crop false\n   name Blur3\n   xpos 1064\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"} {\"falloffType == 0 ? 0.75 :falloffType == 1 ? pow(0.75, 3) : falloffType == 2 ? 0.75*0.75*(3-2*0.75) : falloffType == 3 ? 0.75*0.75*(2 - 0.75) : falloffType == 4 ? 0.75*(1 + 0.75*(1 - 0.75)) : 0\"}}\n   mix {{falloff}}\n   name Multiply3\n   xpos 1064\n   ypos -477\n  }\npush 0\npush $N2c0c8100\n  Blur {\n   size {{((width/100*parent.size.w)*(aspectCalc.aspect.w/100)*(2**2))} {((height/100*parent.size.h)*(aspectCalc.aspect.h/100)*(2**2))}}\n   crop false\n   name Blur2\n   xpos 964\n   ypos -554\n  }\n  Multiply {\n   value {{\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"} {\"falloffType == 0 ? 0.875 :falloffType == 1 ? pow(0.875, 3) : falloffType == 2 ? 0.875*0.875*(3-2*0.875) : falloffType == 3 ? 0.875*0.875*(2 - 0.875) : falloffType == 4 ? 0.875*(1 + 0.875*(1 - 0.875)) : 0\"}}\n   mix {{falloff}}\n   name Multiply2\n   xpos 964\n   ypos -477\n  }\npush $N2c0c8100\n  Blur {\n   size {{(width/100*parent.size*(aspectCalc.aspect.w/100))} {(height/100*parent.size*(aspectCalc.aspect.h/100))}}\n   crop false\n   name Blur1\n   xpos 864\n   ypos -554\n  }\n  Multiply {\n   value {1 1 1 1}\n   mix {{falloff}}\n   name Multiply1\n   xpos 864\n   ypos -477\n  }\n  Merge2 {\n   inputs 8+1\n   operation {{MergeNumber.mergeNumber}}\n   also_merge all\n   name Merge1\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos -327\n  }\n  NoOp {\n   name End\n   xpos 864\n   ypos -279\n  }\n  Grade {\n   channels all\n   whitepoint 8\n   black_clamp false\n   name AverageMult\n   xpos 864\n   ypos 49\n   disable {{\"output2 == 4 ? 0 : 1\"}}\n  }\n  Merge2 {\n   inputs 2\n   operation max\n   also_merge all\n   name Merge2\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos 864\n   ypos 96\n   disable {{\"output2 == 4 && includeOriginal == 1 && AvgMaxOriginal == 1 ? 0 : 1\"}}\n  }\n  Blur {\n   size {{postBlur} {postBlur}}\n   name BlurOriginal\n   xpos 864\n   ypos 155\n  }\n  Invert {\n   name Invert2\n   xpos 864\n   ypos 283\n   disable {{\"parent.size < 0 ? 0 : 1\"}}\n  }\npush $N2c0ca400\n  Switch {\n   inputs 2\n   which {{\"parent.size == 0 ? 0 : 1\"}}\n   name Switch1\n   label \"\\[value which]\"\n   xpos 427\n   ypos 283\n  }\n  Crop {\n   inputs 0\n   box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}}\n   reformat true\n   crop false\n   name Crop1\n   xpos 96\n   ypos -931\n   addUserKnob {20 User}\n   addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n  }\n  AddChannels {\n   channels rgba\n   name AddChannels2\n   xpos 96\n   ypos -891\n  }\npush $N2c100100\n  Merge2 {\n   inputs 2\n   name Merge3\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -891\n  }\nset N2c205600 [stack 0]\n  Group {\n   name BBoxToFormat\n   onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"inputBBox\\\")\\ncrop = nuke.toNode(\\\"Crop6\\\")\\ncropb = crop.knob('box')\\noutputBBox = n.knob('outputBBox')\\noutputBBoxCenter = n.knob(\\\"outputBBoxCenter\\\")\\n\\ninputFormat.setFlag(0x0000000000008000)\\ninputBBox.setFlag(0x0000000000008000)\\ncropb.setFlag(0x0000000000008000)\\noutputBBox.setFlag(0x0000000000008000)\\noutputBBoxCenter.setFlag(0x0000000000008000)\\n\\nn = nuke.thisNode()\\nn.knob(\\\"overscan\\\").setRange(0,400)\\nn.knob(\\\"overscanPercent\\\").setRange(1,4)\"\n   knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\nif k.name() == \\\"overscanType\\\":\\n    if n.knob(\\\"overscanType\\\").getValue() == 1:\\n        n.knob(\\\"overscanPercent\\\").setVisible(True)\\n        n.knob(\\\"overscan\\\").setVisible(False)\\n    else:\\n        n.knob(\\\"overscanPercent\\\").setVisible(False)\\n        n.knob(\\\"overscan\\\").setVisible(True)\"\n   tile_color 0xa57aaaff\n   note_font \"Verdana Bold\"\n   note_font_color 0xffffffff\n   xpos 29\n   ypos -812\n   addUserKnob {20 CropBBox}\n   addUserKnob {4 type l Type +INVISIBLE M {\"To Format\" \"To BBox\"}}\n   addUserKnob {41 intersect T Crop6.intersect}\n   addUserKnob {6 blackOutside l \"Black Outside\" -STARTLINE}\n   addUserKnob {4 overscanType l \"Overscan Type:\" M {Pixels Percentage}}\n   overscanType Percentage\n   addUserKnob {14 overscan l Overscan +HIDDEN R 0 400}\n   addUserKnob {14 overscanPercent l \"Overscan Percent\" R 1 4}\n   overscanPercent 1.2\n   addUserKnob {20 inputBbox l \"BBox Data\" n 1}\n   addUserKnob {15 inputFormat l \"Input Format\"}\n   inputFormat {0 0 {input.width} {input.height}}\n   addUserKnob {15 inputBBox l \"Input BBox\"}\n   inputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n   addUserKnob {12 outputBBoxCenter l OutputBBoxCenter}\n   outputBBoxCenter {{OutputBBox1.outputBBoxCenter.w} {OutputBBox1.outputBBoxCenter.h}}\n   addUserKnob {15 outputBBox l \"Output BBox\"}\n   outputBBox {{OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox} {OutputBBox1.OutputBBox}}\n   addUserKnob {20 endGroup n -1}\n   addUserKnob {20 info_1 l Info}\n   addUserKnob {26 creator l Creator: T \"<b><big>Tony Lyons\"}\n   addUserKnob {26 desc l Description: t \"crop to inputformat\\n\\ndisplays values of input bbox\" T CropBBox}\n   addUserKnob {26 ver l Version: T v02}\n  }\n   Input {\n    inputs 0\n    name Input\n    xpos 261\n    ypos 394\n   }\n   Dot {\n    name Dot2\n    note_font_size 41\n    xpos 295\n    ypos 462\n   }\nset N2c204100 [stack 0]\n   Dot {\n    name Dot1\n    note_font_size 41\n    xpos -160\n    ypos 462\n   }\nset N2c1df900 [stack 0]\npush $N2c204100\n   Crop {\n    box {{curve} {curve} {input.width} {input.height}}\n    crop {{parent.blackOutside}}\n    name Crop6\n    xpos 261\n    ypos 510\n    addUserKnob {20 User}\n    addUserKnob {22 cropToBbox l \"Crop to Bounding Box\" -STARTLINE T codeBBox()}\n   }\nset N2c1df200 [stack 0]\n   Remove {\n    operation keep\n    channels none\n    name Remove1\n    xpos 120\n    ypos 504\n   }\nset N2c1deb00 [stack 0]\n   Transform {\n    scale {{parent.overscanPercent} {parent.overscanPercent}}\n    center {{input.bbox.r/2} {input.bbox.t/2}}\n    shutteroffset centred\n    name Transform1\n    xpos 120\n    ypos 555\n   }\npush $N2c1deb00\n   AdjBBox {\n    numpixels {{parent.overscan} {parent.overscan}}\n    name AdjBBox1\n    xpos -5\n    ypos 510\n   }\n   Switch {\n    inputs 2\n    which {{overscanType}}\n    name Switch2\n    label \"\\[value which]\"\n    xpos -5\n    ypos 549\n   }\n   Merge2 {\n    inputs 2\n    bbox intersection\n    Achannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n    name Merge1\n    xpos -5\n    ypos 647\n    disable {{!parent.Crop6.intersect}}\n   }\npush $N2c1df900\n   CopyBBox {\n    inputs 2\n    name CopyBBox1\n    xpos -194\n    ypos 653\n   }\n   BlackOutside {\n    name BlackOutside1\n    xpos -194\n    ypos 692\n    disable {{!parent.blackOutside}}\n   }\n   Dot {\n    name Dot4\n    note_font_size 41\n    xpos -160\n    ypos 769\n   }\npush $N2c1df200\n   Switch {\n    inputs 2\n    which {{\"overscanType == 0 ? overscan.w != 0 || overscan.h != 0 : overscanPercent.w != 1 || overscanPercent.h != 1 ? 1 : 0\"}}\n    name Switch1\n    label \"\\[value which]\"\n    xpos 261\n    ypos 759\n   }\nset N2c1af200 [stack 0]\n   Output {\n    name Output1\n    xpos 261\n    ypos 921\n   }\npush $N2c1af200\n   NoOp {\n    name OutputBBox1\n    selected true\n    xpos 378\n    ypos 821\n    addUserKnob {20 User}\n    addUserKnob {15 OutputBBox l \"Output BBox\"}\n    OutputBBox {{input.bbox.x} {input.bbox.y} {input.bbox.r} {input.bbox.t}}\n    addUserKnob {14 outputBBoxCenter l \"Output BBox Center\" R 0 100}\n    outputBBoxCenter {{OutputBBox.x+(OutputBBox.r-OutputBBox.x)/2} {OutputBBox.y+(OutputBBox.t-OutputBBox.y)/2}}\n   }\n  end_group\npush $N2c205600\n  Merge2 {\n   inputs 2\n   name Merge4\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -60\n   ypos -748\n  }\npush $N2c100100\n  CopyBBox {\n   inputs 2\n   name CopyBBox1\n   xpos -221\n   ypos -748\n  }\n  Dot {\n   name Dot22\n   note_font_size 41\n   xpos -187\n   ypos 198\n  }\n  Merge2 {\n   inputs 2\n   operation copy\n   bbox B\n   Achannels none\n   Bchannels none\n   output none\n   also_merge {{{parent.Remove1.channels}}}\n   name Merge5\n   label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n   xpos -221\n   ypos 283\n  }\n  Dot {\n   name Dot17\n   label A\n   note_font_size 41\n   xpos -187\n   ypos 675\n  }\n  Dot {\n   name Dot7\n   note_font_size 41\n   xpos -187\n   ypos 805\n  }\npush $N2c100100\n  Dot {\n   name Dot2\n   note_font_size 41\n   xpos -588\n   ypos -1062\n  }\n  Dot {\n   name Dot18\n   label B\n   note_font_size 41\n   xpos -588\n   ypos 654\n  }\n  Dot {\n   name Dot3\n   note_font_size 41\n   xpos -588\n   ypos 895\n  }\n  Merge2 {\n   inputs 2+1\n   operation copy\n   Achannels none\n   Bchannels none\n   output none\n   also_merge all\n   name MergeKeymix\n   xpos -221\n   ypos 888\n  }\n  Output {\n   name Output1\n   xpos -221\n   ypos 1202\n  }\n  NoOp {\n   inputs 0\n   name MergeNumber\n   xpos 202\n   ypos -1145\n   addUserKnob {20 User}\n   addUserKnob {3 mergeNumber}\n   mergeNumber {{\"output2 == 0 ? 25 : output2 == 1 ? 24 : output2 == 2 ? 22 : output2 == 3 ? 13 : output2 == 4 ? 24 : output2 == 5 ? 17 : 18\"}}\n  }\n end_group\n Dot {\n  name Dot40\n  note_font_size 41\n  xpos 1059\n  ypos 1277\n }\nset N2c388800 [stack 0]\n Grade {\n  channels all\n  white {{wrapAllAmount/10}}\n  name GradeBgWrapAmount\n  xpos 1025\n  ypos 1399\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal1\n  label \"\\[value value]\"\n  xpos 1025\n  ypos 1566\n }\n Dot {\n  name Dot37\n  label \"WRAP ALL\"\n  note_font_size 61\n  xpos 1059\n  ypos 1692\n }\nset N2c35b900 [stack 0]\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos 1059\n  ypos 3062\n }\nset N2c35b200 [stack 0]\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos 1530\n  ypos 3168\n }\n Shuffle {\n  alpha white\n  name Shuffle5\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1530\n  ypos 3216\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge14\n  xpos 1530\n  ypos 3274\n }\npush $N2cee6400\npush $N2c35b200\n Shuffle {\n  alpha white\n  name Shuffle2\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1025\n  ypos 3158\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge7\n  xpos 1025\n  ypos 3221\n }\npush $N2cee6b00\npush $N2c123900\n Shuffle {\n  alpha white\n  name Shuffle4\n  tile_color 0xffffffff\n  note_font_color 0xffffffff\n  xpos 1708\n  ypos 3020\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge13\n  xpos 1708\n  ypos 3104\n }\npush $N2ced9d00\n Dot {\n  name Dot21\n  xpos 2349\n  ypos 397\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle3\n  tile_color 0xffffffff\n  label alpha\n  note_font_size 21\n  note_font_color 0xffffffff\n  xpos 2315\n  ypos 496\n }\n Dot {\n  name Dot23\n  xpos 2349\n  ypos 3399\n }\npush $N2c388800\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 757\n  ypos 1277\n }\nset N2c322400 [stack 0]\n Grade {\n  channels rgba\n  gamma {{parent.bleedColorFalloff_2}}\n  name Grade1\n  selected true\n  xpos 724\n  ypos 2638\n }\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 758\n  ypos 2835\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal2\n  label \"\\[value value]\"\n  xpos 297\n  ypos 2828\n }\npush $N2c121600\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos 438\n  ypos 725\n }\nset N2c310f00 [stack 0]\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos 439\n  ypos 802\n }\nset N2c310800 [stack 0]\n Dot {\n  name Dot17\n  note_font_size 41\n  xpos 334\n  ypos 802\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos 334\n  ypos 1201\n }\npush $N2c310800\n Blur {\n  size {{(width/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*16*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur6\n  xpos 856\n  ypos 874\n }\npush $N2c310800\n Blur {\n  size {{(width/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/13*parent.bleedColorSize*8*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur4\n  xpos 743\n  ypos 873\n }\npush $N2c310800\n Blur {\n  size {{(width/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/15*parent.bleedColorSize*4*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur3\n  xpos 627\n  ypos 874\n }\npush $N2c310800\n Blur {\n  size {{(width/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/20*parent.bleedColorSize*2*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur2\n  xpos 515\n  ypos 872\n }\npush $N2c310800\n Blur {\n  size {{(width/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/25*parent.bleedColorSize*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur1\n  xpos 404\n  ypos 871\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 941\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge4\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 999\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1049\n }\n Merge2 {\n  inputs 2\n  operation under\n  bbox B\n  name Merge12\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 404\n  ypos 1087\n }\n Unpremult {\n  name Unpremult2\n  xpos 404\n  ypos 1111\n }\n Blur {\n  size {{(width/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.w/100))} {(height/50*parent.bleedColorSize*10*(ExponGlowWrapAll.aspectCalc.aspect.h/100))}}\n  crop false\n  name Blur5\n  xpos 404\n  ypos 1151\n }\n CopyBBox {\n  inputs 2\n  name CopyBBox1\n  xpos 404\n  ypos 1198\n }\n Unpremult {\n  name Unpremult5\n  xpos 404\n  ypos 2385\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace1\n  xpos 404\n  ypos 2456\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply5\n  label \"\\[value value]\"\n  xpos 404\n  ypos 2532\n }\npush $N2c12c100\npush $N2c35b900\npush $N2c310f00\n Dot {\n  name Dot10\n  xpos 201\n  ypos 725\n }\n Clamp {\n  minimum 0.001\n  maximum 100\n  name Clamp1\n  xpos 167\n  ypos 996\n }\n Dot {\n  name Dot24\n  xpos 201\n  ypos 1517\n }\n Multiply {\n  channels rgba\n  value {{globalAmount}}\n  name MultiplyGlobal\n  label \"\\[value value]\"\n  xpos 19\n  ypos 1507\n }\npush $N2c322400\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace6\n  xpos -13\n  ypos 1267\n }\n Multiply {\n  value {1 1 0 1}\n  name Multiply4\n  label \"\\[value value]\"\n  xpos -123\n  ypos 1262\n }\npush $N2cf0c100\n Remove {\n  operation keep\n  channels rgba\n  name Remove1\n  xpos -413\n  ypos 594\n }\n Unpremult {\n  channels all\n  name Unpremult1\n  xpos -407\n  ypos 1094\n  disable {{premultiplied*-1+1 x1 1}}\n }\nset N17dba400 [stack 0]\n Dot {\n  name Dot12\n  xpos -226\n  ypos 1101\n }\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace5\n  xpos -260\n  ypos 1140\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -260\n  ypos 1188\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -260\n  ypos 1267\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace7\n  xpos -260\n  ypos 1327\n }\n Dot {\n  name Dot36\n  label \"BLEND EDGES\"\n  note_font_size 45\n  xpos -226\n  ypos 1408\n }\npush $N17dba400\n Dot {\n  name Dot18\n  note_font_size 41\n  xpos -373\n  ypos 1514\n }\nset N17d86b00 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  mix {{blendEdgesAmount}}\n  name Merge10\n  xpos -260\n  ypos 1507\n }\n Dot {\n  name Dot22\n  note_font_size 41\n  xpos -226\n  ypos 1588\n }\npush $N17d86b00\n Switch {\n  inputs 2\n  which {{\"blendEdgesAmount == 0 ? 0 : 1\"}}\n  name Switch3\n  xpos -407\n  ypos 1585\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge5\n  xpos -407\n  ypos 1685\n }\n Merge2 {\n  inputs 2\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge6\n  xpos -407\n  ypos 1791\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos -373\n  ypos 2417\n }\nset N17d84100 [stack 0]\n Colorspace {\n  channels all\n  colorspace_out HSV\n  name Colorspace2\n  xpos -81\n  ypos 2410\n }\n Multiply {\n  value {0 0 1 1}\n  name Multiply6\n  label \"\\[value value]\"\n  xpos -81\n  ypos 2458\n }\n Merge2 {\n  inputs 2\n  operation plus\n  Achannels none\n  Bchannels none\n  output none\n  also_merge all\n  name Merge11\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2537\n }\n Colorspace {\n  channels all\n  colorspace_in HSV\n  name Colorspace8\n  xpos -81\n  ypos 2606\n }\npush $N17dba400\n Dot {\n  name Dot13\n  xpos -579\n  ypos 1101\n }\n Dot {\n  name Dot14\n  xpos -579\n  ypos 2559\n }\npush $N17d84100\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos -407\n  ypos 2552\n }\n Dot {\n  name Dot6\n  note_font_size 41\n  xpos -373\n  ypos 2649\n }\nset N17d60100 [stack 0]\n Merge2 {\n  inputs 2+1\n  operation copy\n  output {rgba.red rgba.green rgba.blue -rgba.alpha}\n  mix {{bleedColorAmount}}\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -81\n  ypos 2828\n }\npush $N17d60100\n Switch {\n  inputs 2\n  which {{\"parent.bleedColorAmount== 0 ? 0 : 1\"}}\n  name Switch2\n  xpos -407\n  ypos 2832\n }\n Premult {\n  name Premult3\n  xpos -407\n  ypos 2983\n  disable {{premultiplied*-1+1 i}}\n }\n Dot {\n  name Dot19\n  xpos -373\n  ypos 3396\n }\n Switch {\n  inputs 5\n  which {{\"\\[value ls parent.outputView]\"}}\n  name Switch1\n  xpos 1708\n  ypos 3395\n }\npush $N2cee7200\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -825\n  ypos 3581\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  also_merge all\n  name MergeCopyLightWrapPro\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 1708\n  ypos 3580\n }\n Output {\n  name Output1\n  xpos 1708\n  ypos 3898\n }\nend_group\nDot {\n name Dot323\n selected true\n xpos -1000\n ypos 4254\n}\nDot {\n name Dot324\n note_font_size 41\n selected true\n xpos 5884\n ypos 4254\n}\nset N17d03900 [stack 0]\nRemove {\n operation keep\n channels rgba\n name Remove7\n selected true\n xpos 5994\n ypos 4250\n}\npush $N2f4eab00\nDot {\n name Dot121\n note_font_size 41\n selected true\n xpos -386\n ypos 1434\n}\nset N17d02b00 [stack 0]\nShuffle {\n in cleanplate\n name Shuffle1\n label \"\\[value in]\"\n selected true\n xpos -420\n ypos 1478\n}\nRemove {\n operation keep\n channels rgba\n name Remove3\n selected true\n xpos -420\n ypos 1516\n}\nNoOp {\n name Anchor_3d5fc4c58e\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos -420\n ypos 1568\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS cleanplate\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T cleanplate}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_3d5fc4c58e}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nNoOp {\n name Stamp33\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos 6062\n ypos 3811\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS cleanplate\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"GS cleanplate\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" T \"<i>Advanced Keying Template</i>\"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_3d5fc4c58e\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nDot {\n name Dot325\n note_font_size 41\n selected true\n xpos 6096\n ypos 3890\n}\npush $N17d02b00\nDot {\n name Dot124\n note_font_size 41\n selected true\n xpos -238\n ypos 1434\n}\nShuffle {\n in GS_Plate\n name Shuffle25\n label \"\\[value in]\"\n selected true\n xpos -272\n ypos 1477\n}\nRemove {\n operation keep\n channels rgba\n name Remove4\n selected true\n xpos -272\n ypos 1515\n}\nNoOp {\n name Anchor_2bcb55a0c8\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos -272\n ypos 1571\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS Plate\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"GS Plate\"}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_2bcb55a0c8}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nNoOp {\n name Stamp34\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.wiredOnCreate()\\n    except:\\n        pass\\n\"\n knobChanged \"import stamps; stamps.wiredKnobChanged()\"\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0x1000001\n note_font \"Bitstream Vera Sans\"\n note_font_size 20\n selected true\n xpos 5936\n ypos 3813\n hide_input true\n addUserKnob {20 wired_tab l \"Wired Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T wired}\n addUserKnob {3 lockCallbacks l \"\" +STARTLINE +HIDDEN}\n addUserKnob {6 toReconnect -STARTLINE +HIDDEN}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"GS Plate\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"GS Plate\"}\n addUserKnob {26 tags l Tags: t \"Tags of this stamp's Anchor, for information purpose only.\\nClick \\\"show anchor\\\" to change them.\" T <i>2D</i>}\n addUserKnob {26 backdrops l Backdrops: t \"Labels of backdrop nodes which contain this stamp's Anchor.\" T \"<i>Advanced Keying Template</i>\"}\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 anchor_label l Anchor: T \" \"}\n addUserKnob {22 show_anchor l \" show anchor \" t \"Show the properties panel for this Stamp's Anchor.\" -STARTLINE T stamps.wiredShowAnchor()}\n addUserKnob {22 zoom_anchor l \"zoom anchor\" t \"Navigate to this Stamp's Anchor on the Node Graph.\" -STARTLINE T stamps.wiredZoomAnchor()}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 zoomNext l \" zoom next \" t \"Navigate to this Stamp's next sibling on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext()}\n addUserKnob {22 selectSimilar l \" select similar \" t \"Select all similar Stamps to this one on the Node Graph.\" -STARTLINE T stamps.wiredSelectSimilar()}\n addUserKnob {26 space_1 l \"\" +STARTLINE T \" \"}\n addUserKnob {26 reconnect_label l Reconnect: t \"Reconnect by the stored Anchor name.\" T \" \"}\n addUserKnob {22 reconnect_this l this t \"Reconnect this Stamp to its Anchor, by its stored Anchor name.\" -STARTLINE T \"n = nuke.thisNode()\\ntry:\\n    n.setInput(0,nuke.toNode(n.knob(\\\"anchor\\\").value()))\\nexcept:\\n    nuke.message(\\\"Unable to reconnect.\\\")\\ntry:\\n    import stamps\\n    stamps.wiredGetStyle(n)\\nexcept:\\n    pass\\n\"}\n addUserKnob {22 reconnect_similar l similar t \"Reconnect this Stamp and similar ones to their Anchor, by their stored anchor name.\" -STARTLINE T stamps.wiredReconnectSimilar()}\n addUserKnob {22 reconnect_all l all t \"Reconnect all the Stamps to their Anchors, by their stored anchor names.\" -STARTLINE T stamps.wiredReconnectAll()}\n addUserKnob {26 space_2 l \"\" +STARTLINE T \" \"}\n addUserKnob {20 advanced_reconnection l \"Advanced Reconnection\" n 2}\n addUserKnob {26 reconnect_by_title_label l \"<font color=gold>By Title:\" t \"Reconnect by searching for a matching title.\" T \" \"}\n addUserKnob {22 reconnect_by_title_this l this t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitle()}\n addUserKnob {22 reconnect_by_title_similar l similar t \"Look for an Anchor that shares this Stamp's title, and connect this Stamp and similar ones to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSimilar()}\n addUserKnob {22 reconnect_by_title_selected l selected t \"For each Stamp selected, look for an Anchor that shares its title, and connect to it.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectByTitleSelected()}\n addUserKnob {26 reconnect_by_selection_label l \"<font color=orangered>By Selection:\" t \"Force reconnect to a selected Anchor.\" T \" \"}\n addUserKnob {22 reconnect_by_selection_this l this t \"Force reconnect this Stamp to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelection()}\n addUserKnob {22 reconnect_by_selection_similar l similar t \"Force reconnect this Stamp and similar ones to a selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSimilar()}\n addUserKnob {22 reconnect_by_selection_selected l selected t \"Force reconnect all selected Stamps to an also selected Anchor, whatever its name or title.\\nIMPORTANT: Use this carefully, and only when the normal reconnection doesn't work.\" -STARTLINE T stamps.wiredReconnectBySelectionSelected()}\n addUserKnob {1 anchor l Anchor}\n anchor Anchor_2bcb55a0c8\n addUserKnob {6 auto_reconnect_by_title l \"<font color=#ED9977>&nbsp; auto-reconnect by title\" t \"When creating this stamp again (like on copy-paste), auto-reconnect it by title instead of doing it by the saved anchor's name, and auto-turn this off immediately.\\nIMPORTANT: Should be off by default. Only use this for setting up templates.\" +STARTLINE}\n addUserKnob {20 advanced_reconnection_1 l \"Advanced Reconnection\" +INVISIBLE n -1}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nDot {\n name Dot328\n note_font_size 41\n selected true\n xpos 5970\n ypos 3937\n}\npush $N607a5d00\nDot {\n name Dot331\n note_font_size 41\n selected true\n xpos 6210\n ypos 3763\n}\nGroup {\n inputs 3\n name AdditiveKeyerPro\n tile_color 0x5200ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n xpos 6176\n ypos 3934\n disable true\n addUserKnob {20 AdditiveKeyer}\n addUserKnob {6 useSC l \"Use Screen Color as CleanPlate\" +STARTLINE}\n addUserKnob {41 screenColor l \"Screen Color\" T Keylight1.screenColour}\n addUserKnob {6 despillSat l \"Despill Screen Color from Saturation?\" +STARTLINE}\n despillSat true\n addUserKnob {26 \"\"}\n addUserKnob {7 DarkValue l \"Dark Value\" R 0 5}\n DarkValue 1\n addUserKnob {7 satDarks l \"Saturate Darks\"}\n satDarks 0.2\n addUserKnob {18 darkTint l \"Dark Tint\"}\n darkTint 1\n addUserKnob {6 darkTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 darkTint_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 ExtraLightValue l \"Light Value Plus\" R 0 2}\n ExtraLightValue 1\n addUserKnob {7 satLights l \"Saturate Lights\"}\n satLights 0.2\n addUserKnob {18 lightTint l \"Light Tint\"}\n lightTint 1\n addUserKnob {6 lightTint_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 lightTint_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {7 LightValue l \"Light Value BG Mult\" R 0 5}\n LightValue 0.25\n addUserKnob {26 \"\"}\n addUserKnob {6 darkTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 lightTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 compositeSwitch l \"Output Difference to RGB\" +STARTLINE}\n addUserKnob {6 outputDiffAlpha l \"Output Difference Matte to Alpha\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}\n addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}\n addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}\n addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}\n addUserKnob {41 mix T MergeKeymix.mix}\n addUserKnob {20 info l Info}\n addUserKnob {26 creator l \"Modified By:\" T \"<b><big>Tony Lyons\"}\n addUserKnob {26 desc l Description: t \"adds the difference between cleanplate and key plate to the BG\\n\\nGood for hair details and shadows and sensitive edge treatment\" T AdditiveKeyer}\n addUserKnob {26 ver l Version: T v04}\n}\n Input {\n  inputs 0\n  name Inputmask\n  xpos 685\n  ypos 1141\n  number 3\n }\n Dot {\n  name Dot10\n  label Mask\n  note_font_size 41\n  xpos 719\n  ypos 1883\n }\n Dot {\n  name Dot11\n  note_font_size 41\n  xpos 719\n  ypos 1983\n }\n Input {\n  inputs 0\n  name fg\n  label \"\\[value number]\"\n  xpos -500\n  ypos -221\n  number 1\n }\n Remove {\n  channels alpha\n  name Remove2\n  xpos -500\n  ypos -147\n }\n AddChannels {\n  channels rgba\n  name AddChannels2\n  xpos -500\n  ypos -109\n }\n Dot {\n  name Dot26\n  note_font_size 41\n  xpos -466\n  ypos 5\n }\nset N17ab8800 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {0 0 0}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight1\n  xpos -500\n  ypos 73\n }\nset N17ab8100 [stack 0]\npush $N17ab8800\n Dot {\n  name Dot27\n  note_font_size 41\n  xpos -356\n  ypos 5\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge3\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -390\n  ypos 73\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -390\n  ypos 99\n }\n Saturation {\n  saturation 0\n  name Saturation4\n  xpos -390\n  ypos 125\n }\npush $N17ab8100\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge7\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -500\n  ypos 125\n }\npush $N17ab8800\n Dot {\n  name Dot30\n  note_font_size 41\n  xpos -598\n  ypos 5\n }\n Dot {\n  name Dot31\n  note_font_size 41\n  xpos -598\n  ypos 218\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch1\n  label \"\\[value which]\"\n  xpos -500\n  ypos 208\n }\n Dot {\n  name Dot8\n  xpos -466\n  ypos 373\n }\nset N17a67200 [stack 0]\n Input {\n  inputs 0\n  name clean\n  label \"\\[value number]\"\n  xpos 126\n  ypos -175\n  number 2\n }\n Remove {\n  channels alpha\n  name Remove3\n  xpos 126\n  ypos -101\n }\n AddChannels {\n  channels rgba\n  name AddChannels1\n  xpos 126\n  ypos -63\n }\n Grade {\n  multiply 0\n  add {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}\n  name ScreenColor\n  xpos 126\n  ypos -14\n  disable {{!parent.useSC}}\n }\n Dot {\n  name Dot28\n  note_font_size 41\n  xpos 160\n  ypos 50\n }\nset N17a55600 [stack 0]\n OFXuk.co.thefoundry.keylight.keylight_v201 {\n  show \"Final Result\"\n  unPreMultiply false\n  screenColour {{parent.Keylight1.screenColour x1 0} {parent.Keylight1.screenColour x1 0} {parent.Keylight1.screenColour x1 0}}\n  screenGain 1\n  screenBalance 0.5\n  alphaBias {0.5 0.5 0.5}\n  despillBias {0.5 0.5 0.5}\n  gangBiases true\n  preBlur 0\n  \"Screen Matte\" 0\n  screenClipMin 0\n  screenClipMax 1\n  screenClipRollback 0\n  screenGrowShrink 0\n  screenSoftness 0\n  screenDespotBlack 0\n  screenDespotWhite 0\n  screenReplaceMethod \"Soft Colour\"\n  screenReplaceColour {0.5 0.5 0.5}\n  Tuning 0\n  midPoint 0.5\n  lowGain 1\n  midGain 1\n  highGain 1\n  \"Inside Mask\" 0\n  sourceAlphaHandling Ignore\n  insideReplaceMethod \"Soft Colour\"\n  insideReplaceColour {0.5 0.5 0.5}\n  Crops 0\n  SourceXMethod Colour\n  SourceYMethod Colour\n  SourceEdgeColour 0\n  SourceCropL 0\n  SourceCropR 1\n  SourceCropB 0\n  SourceCropT 1\n  balanceSet false\n  insideComponent None\n  outsideComponent None\n  cacheBreaker true\n  name Keylight2\n  xpos 126\n  ypos 118\n }\nset N17a54f00 [stack 0]\npush $N17a55600\n Dot {\n  name Dot29\n  note_font_size 41\n  xpos 270\n  ypos 50\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge8\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 236\n  ypos 118\n }\n Clamp {\n  channels rgba\n  name Clamp2\n  xpos 236\n  ypos 144\n }\n Saturation {\n  saturation 0\n  name Saturation5\n  xpos 236\n  ypos 170\n }\npush $N17a54f00\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge9\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 126\n  ypos 170\n }\npush $N17a55600\n Dot {\n  name Dot33\n  note_font_size 41\n  xpos 28\n  ypos 50\n }\n Dot {\n  name Dot34\n  note_font_size 41\n  xpos 28\n  ypos 230\n }\n Switch {\n  inputs 2\n  which {{parent.despillSat}}\n  name DespillSwitch2\n  label \"\\[value which]\"\n  xpos 126\n  ypos 223\n }\n Dot {\n  name Dot35\n  note_font_size 41\n  xpos 160\n  ypos 320\n }\nset N17a30100 [stack 0]\n Dot {\n  name Dot6\n  xpos 412\n  ypos 320\n }\n Merge2 {\n  inputs 2\n  operation difference\n  Achannels rgb\n  Bchannels rgb\n  name Merge6\n  xpos 378\n  ypos 370\n }\n Group {\n  name ChannelControl_v3\n  label \"\\[value channel_selector.in]\"\n  note_font \"Bitstream Vera Sans\"\n  xpos 378\n  ypos 440\n  mapsize {0.15 0.15}\n  addUserKnob {20 channelControl}\n  addUserKnob {41 Channel_Selection T channel_selector.in}\n  addUserKnob {26 Description l \"\" +STARTLINE T \":Channel Control:\\n\\nChannel math with choice of merge operation\"}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 redGain}\n  redGain 0.3\n  addUserKnob {7 greenGain}\n  greenGain 0.59\n  addUserKnob {7 blueGain}\n  blueGain 0.11\n  addUserKnob {7 alphaGain}\n  addUserKnob {41 operation T Merge1.operation}\n }\n  Input {\n   inputs 0\n   name Input1\n   xpos 558\n   ypos -694\n  }\n  Shuffle {\n   name channel_selector\n   label \"\\[value in]\"\n   xpos 558\n   ypos -668\n  }\nset N17a05d00 [stack 0]\n  Shuffle {\n   green red\n   blue red\n   alpha red\n   name Shuffle1\n   xpos 386\n   ypos -536\n  }\n  Grade {\n   channels rgba\n   white {{parent.redGain i}}\n   name Grade12\n   xpos 386\n   ypos -492\n  }\npush $N17a05d00\n  Shuffle {\n   red green\n   blue green\n   alpha green\n   name Shuffle2\n   xpos 499\n   ypos -534\n  }\n  Grade {\n   channels rgba\n   white {{parent.greenGain i}}\n   name Grade13\n   xpos 499\n   ypos -493\n  }\n  Merge2 {\n   inputs 2\n   operation plus\n   name Merge1\n   xpos 411\n   ypos -428\n  }\n  set C17bd9600 [stack 0]\npush $N17a05d00\n  Shuffle {\n   red blue\n   green blue\n   alpha blue\n   name Shuffle3\n   xpos 610\n   ypos -538\n  }\n  Grade {\n   channels rgba\n   white {{parent.blueGain i}}\n   name Grade14\n   xpos 610\n   ypos -494\n  }\nclone $C17bd9600 {\n   inputs 2\n   xpos 486\n   ypos -369\n   selected false\n  }\npush $N17a05d00\n  Shuffle {\n   red alpha\n   green alpha\n   blue alpha\n   name Shuffle4\n   selected true\n   xpos 725\n   ypos -535\n  }\n  Grade {\n   channels rgba\n   white {{parent.alphaGain i}}\n   name Grade15\n   xpos 725\n   ypos -494\n  }\nclone $C17bd9600 {\n   inputs 2\n   xpos 580\n   ypos -307\n   selected false\n  }\n  Output {\n   name Output1\n   xpos 600\n   ypos -210\n  }\n end_group\n Dot {\n  name Dot14\n  note_font_size 41\n  xpos 412\n  ypos 1768\n }\n Input {\n  inputs 0\n  name bg\n  label \"\\[value number]\"\n  xpos -845\n  ypos -242\n }\n AddChannels {\n  channels rgba\n  name AddChannels3\n  xpos -845\n  ypos -151\n }\n Dot {\n  name Dot9\n  note_font_size 41\n  xpos -811\n  ypos -78\n }\n Dot {\n  name Dot4\n  xpos -811\n  ypos 1449\n }\nset N17b91600 [stack 0]\n Dot {\n  name Dot13\n  note_font_size 41\n  xpos -811\n  ypos 1688\n }\nset N17b90f00 [stack 0]\npush $N17a67200\n Dot {\n  name Dot2\n  note_font_size 41\n  xpos -466\n  ypos 421\n }\nset N17b90800 [stack 0]\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation9\n  xpos -378\n  ypos 418\n }\npush $N17a30100\n Saturation {\n  saturation {{parent.satDarks}}\n  name Saturation8\n  xpos -215\n  ypos 317\n }\n Merge2 {\n  inputs 2\n  operation divide\n  name Merge5\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos -215\n  ypos 418\n }\n Dot {\n  name Dot38\n  note_font_size 41\n  xpos -181\n  ypos 674\n }\n Clamp {\n  channels rgba\n  minimum 1\n  minimum_enable false\n  name Clamp4\n  xpos -215\n  ypos 786\n }\n Add {\n  channels rgba\n  value -1\n  name Add3\n  xpos -215\n  ypos 840\n }\n Multiply {\n  channels rgb\n  value {{parent.DarkValue} {parent.DarkValue} {parent.DarkValue} 0}\n  name DARK_VALUE\n  xpos -215\n  ypos 892\n }\n Grade {\n  multiply {{parent.darkTint} {parent.darkTint} {parent.darkTint} {parent.darkTint}}\n  reverse true\n  black_clamp false\n  name DARK_TINT\n  xpos -215\n  ypos 931\n }\n Add {\n  channels rgba\n  value 1\n  name Add4\n  xpos -215\n  ypos 988\n }\n Clamp {\n  channels rgb\n  name Clamp5\n  xpos -215\n  ypos 1065\n }\n Dot {\n  name Dot39\n  note_font_size 41\n  xpos -181\n  ypos 1257\n }\npush $N17b90800\n Dot {\n  name Dot36\n  note_font_size 41\n  xpos -466\n  ypos 577\n }\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation1\n  xpos -101\n  ypos 574\n }\nset N17b26b00 [stack 0]\npush $N17a30100\n Saturation {\n  saturation {{parent.satLights}}\n  name Saturation6\n  xpos 126\n  ypos 500\n }\nset N17b26400 [stack 0]\n Merge2 {\n  inputs 2\n  operation divide\n  also_merge all\n  name Merge10\n  label all\n  xpos 126\n  ypos 568\n }\n Clamp {\n  channels rgba\n  minimum 1\n  maximum_enable false\n  name Clamp3\n  xpos 126\n  ypos 780\n }\n Add {\n  channels rgba\n  value -1\n  name Add1\n  xpos 126\n  ypos 838\n }\n Multiply {\n  channels rgb\n  value {{parent.LightValue} {parent.LightValue} {parent.LightValue} 0}\n  name LIGHT_VALUE\n  xpos 126\n  ypos 961\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT\n  xpos 126\n  ypos 1039\n }\n Add {\n  channels rgba\n  value 1\n  name Add2\n  xpos 126\n  ypos 1120\n }\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name __CONSTRAIN_DARKS__\n  xpos 128\n  ypos 1253\n }\n Dot {\n  name Dot19\n  note_font_size 41\n  xpos 162\n  ypos 1354\n }\nset N17ceb200 [stack 0]\n Dot {\n  name Dot3\n  xpos -8\n  ypos 1354\n }\n Dot {\n  name Dot16\n  note_font_size 41\n  xpos -8\n  ypos 1611\n }\npush $N17b26400\n Dot {\n  name Dot7\n  note_font_size 41\n  xpos 310\n  ypos 503\n }\npush $N17b26b00\n Dot {\n  name Dot5\n  note_font_size 41\n  xpos -67\n  ypos 691\n }\n Merge2 {\n  inputs 2\n  operation from\n  name Merge1\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 276\n  ypos 688\n }\n Clamp {\n  channels rgba\n  maximum_enable false\n  name Clamp6\n  xpos 276\n  ypos 781\n }\n Multiply {\n  channels rgba\n  value {{parent.ExtraLightValue}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos 276\n  ypos 899\n }\n Multiply {\n  channels rgb\n  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}\n  name LIGHT_TINT1\n  xpos 276\n  ypos 1036\n }\n Dot {\n  name Dot15\n  note_font_size 41\n  xpos 310\n  ypos 1513\n }\npush $N17ceb200\n Dot {\n  name Dot1\n  note_font_size 41\n  xpos 162\n  ypos 1449\n }\npush $N17b91600\n Merge2 {\n  inputs 2\n  operation multiply\n  Achannels rgb\n  Bchannels rgb\n  output rgb\n  name CONSTRAIN_LIGHTS\n  xpos 128\n  ypos 1446\n }\n Merge2 {\n  inputs 2\n  operation plus\n  output rgb\n  name Merge2\n  label \"\\[ expr \\{ \\[value mix] == 1 ? \\\" \\\" : \\[concat Mix: \\[value mix]] \\}]\"\n  xpos 128\n  ypos 1510\n }\n Switch {\n  inputs 2\n  which {{parent.compositeSwitch}}\n  name Switch1\n  label \"\\[value which]\"\n  xpos 128\n  ypos 1604\n }\n Copy {\n  inputs 2\n  from0 rgba.alpha\n  to0 rgba.alpha\n  name Copy1\n  xpos 128\n  ypos 1678\n  disable {{parent.outputDiffAlpha}}\n }\n Copy {\n  inputs 2\n  from0 rgba.blue\n  to0 rgba.alpha\n  name __LUMA_INTO_ALPHA__\n  xpos 128\n  ypos 1758\n  disable {{!parent.outputDiffAlpha}}\n }\n Dot {\n  name Dot17\n  label A\n  note_font_size 41\n  xpos 162\n  ypos 1910\n }\npush $N17b90f00\n Dot {\n  name Dot18\n  label B\n  note_font_size 41\n  xpos -811\n  ypos 1895\n }\n Dot {\n  name Dot12\n  note_font_size 41\n  xpos -811\n  ypos 1986\n }\n Merge2 {\n  inputs 2+1\n  operation copy\n  bbox B\n  Achannels none\n  Bchannels none\n  output none\n  also_merge rgba\n  name MergeKeymix\n  xpos 128\n  ypos 1973\n }\n Output {\n  name Output1\n  xpos 128\n  ypos 2235\n }\nend_group\nMerge2 {\n inputs 2\n bbox B\n name Merge51\n selected true\n xpos 6176\n ypos 4250\n}\nDot {\n name Dot332\n selected true\n xpos 6210\n ypos 4774\n}\npush $N2f542b00\npush $N2f541d00\nMerge2 {\n inputs 2\n operation plus\n name Merge52\n label \"test lunimance match\"\n selected true\n xpos -732\n ypos -2744\n}\nDot {\n name Dot336\n label test\n note_font_size 31\n selected true\n xpos -698\n ypos -2615\n}\npush $N2f4eb200\nShuffle {\n in despill_RGB\n name Shuffle27\n label \"\\[value in]\"\n selected true\n xpos -770\n ypos 1478\n}\nRemove {\n operation keep\n channels rgba\n name Remove5\n selected true\n xpos -770\n ypos 1516\n}\nNoOp {\n name Anchor_35df505785\n help \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019\"\n onCreate \"if nuke.GUI:\\n    try:\\n        import stamps; stamps.anchorOnCreate()\\n    except:\\n        pass\"\n knobChanged stamps.anchorKnobChanged()\n autolabel \"nuke.thisNode().knob(\\\"title\\\").value()\"\n tile_color 0xffffff01\n note_font_size 20\n selected true\n xpos -770\n ypos 1571\n addUserKnob {20 anchor_tab l \"Anchor Stamp\"}\n addUserKnob {26 identifier -STARTLINE +HIDDEN T anchor}\n addUserKnob {1 title l Title: t \"Displayed name on the Node Graph for this Stamp and its Anchor.\\nIMPORTANT: This is only for display purposes, and is different from the real/internal name of the Stamps.\"}\n title \"despill RGB\"\n addUserKnob {26 prev_title l \"\" +STARTLINE +HIDDEN T \"despill RGB\"}\n addUserKnob {26 prev_name l \"\" +STARTLINE +HIDDEN T Anchor_35df505785}\n addUserKnob {3 showing l \"\" +STARTLINE +HIDDEN}\n addUserKnob {1 tags l Tags t \"Comma-separated tags you can define for each Anchor, that will help you find it when invoking the Stamp Selector by pressing the Stamps shortkey with nothing selected.\"}\n tags 2D,\n addUserKnob {26 line1 l \"\" +STARTLINE}\n addUserKnob {26 stamps_label l Stamps: T \" \"}\n addUserKnob {22 createStamp l new t \"Create a new Stamp for this Anchor.\" -STARTLINE T stamps.stampCreateWired(nuke.thisNode())}\n addUserKnob {22 selectStamps l select t \"Reconnect all of this Anchor's Stamps.\" -STARTLINE T stamps.wiredSelectSimilar(nuke.thisNode().name())}\n addUserKnob {22 reconnectStamps l reconnect -STARTLINE T stamps.anchorReconnectWired()}\n addUserKnob {22 zoomNext l \"zoom next\" t \"Navigate to this Anchor's next Stamp on the Node Graph.\" -STARTLINE T stamps.wiredZoomNext(nuke.thisNode().name())}\n addUserKnob {26 line2 l \"\" +STARTLINE}\n addUserKnob {22 buttonHelp l Help -STARTLINE T stamps.showHelp()}\n addUserKnob {26 version l \" \" t \"Stamps by Adrian Pueyo and Alexey Kuchinski.\\nUpdated Sep 27 2019.\" -STARTLINE T \"<a href=\\\"http://www.nukepedia.com/gizmos/other/stamps\\\" style=\\\"color:#666;text-decoration: none;\\\"><span style=\\\"color:#666\\\"> <big>Stamps v1.0</big></b></a>\"}\n}\nStickyNote {\n inputs 0\n name StickyNote1\n tile_color 0xff\n label \"<-- adjust \\nblackpoint/\\nwhitepoint\"\n note_font_size 41\n note_font_color 0xffffffff\n selected true\n xpos -228\n ypos 2159\n}\npush $N17d03900\nShuffle {\n in GS_Plate\n name Shuffle28\n label \"\\[value in]\"\n selected true\n xpos 5850\n ypos 4459\n}\nStickyNote {\n inputs 0\n name StickyNote21\n tile_color 0xff\n label \"Make or Generate\\ncleanplate if you can\"\n note_font_size 41\n note_font_color 0xffffffff\n selected true\n xpos 3659\n ypos -3429\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_LightSwitchPuppet.nk",
    "content": "Group {\n name GradeLG01_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute2\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n note_font_color 0xffffffff\n selected true\n xpos 828\n ypos 455\n addUserKnob {20 GradeLG01}\n addUserKnob {6 mute1 l Mute +STARTLINE}\n mute1 true\n addUserKnob {41 solo1 l Solo -STARTLINE T LightSwitchPuppet.solo1}\n addUserKnob {41 bypass1 l Bypass -STARTLINE T LightSwitchPuppet.bypass1}\n addUserKnob {41 exp1 l Exposure T LightSwitchPuppet.exp1}\n addUserKnob {41 mult1 l Multiply T LightSwitchPuppet.mult1}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n  ypos -20\n }\nset N5e096400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp1}}\n  green {{parent.parent.LightSwitchPuppet.exp1}}\n  blue {{parent.parent.LightSwitchPuppet.exp1}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -149\n  ypos 33\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult1} {parent.parent.LightSwitchPuppet.mult1} {parent.parent.LightSwitchPuppet.mult1} {parent.parent.LightSwitchPuppet.mult1}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -149\n  ypos 83\n }\npush $N5e096400\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass1}}\n  name SwitchBypass\n  xpos -149\n  ypos 195\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -149\n  ypos 256\n  disable {{!parent.mute1}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -149\n  ypos 317\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo1\"}}\n }\npush $N5e096400\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  selected true\n  xpos -149\n  ypos 392\n }\npush $N5e096400\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 392\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 537\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG02_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute2\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute2] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 983\n ypos 457\n addUserKnob {20 GradeLG02}\n addUserKnob {6 mute2 l Mute +STARTLINE}\n addUserKnob {41 solo2 l Solo -STARTLINE T LightSwitchPuppet.solo2}\n addUserKnob {41 bypass2 l Bypass -STARTLINE T LightSwitchPuppet.bypass2}\n addUserKnob {41 exp2 l Exposure T LightSwitchPuppet.exp2}\n addUserKnob {41 mult2 l Multiply T LightSwitchPuppet.mult2}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5e023800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp2}}\n  green {{parent.parent.LightSwitchPuppet.exp2}}\n  blue {{parent.parent.LightSwitchPuppet.exp2}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -163\n  ypos 53\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult2} {parent.parent.LightSwitchPuppet.mult2} {parent.parent.LightSwitchPuppet.mult2} {parent.parent.LightSwitchPuppet.mult2}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -163\n  ypos 85\n }\npush $N5e023800\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass2}}\n  name SwitchBypass1\n  xpos -163\n  ypos 144\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -163\n  ypos 184\n  disable {{!parent.mute2}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -163\n  ypos 226\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo2\"}}\n }\npush $N5e023800\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  xpos -163\n  ypos 311\n }\npush $N5e023800\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 311\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 370\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG03_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute3\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute3] ? \\\"Mute\\\" : \\[]\\}]\"\n selected true\n xpos 1153\n ypos 458\n addUserKnob {20 GradeLG03}\n addUserKnob {6 mute3 l Mute +STARTLINE}\n addUserKnob {41 solo3 l Solo -STARTLINE T LightSwitchPuppet.solo3}\n addUserKnob {41 bypass3 l Bypass -STARTLINE T LightSwitchPuppet.bypass3}\n addUserKnob {41 exp3 l Exposure T LightSwitchPuppet.exp3}\n addUserKnob {41 mult3 l Multiply T LightSwitchPuppet.mult3}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5e021000 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp3}}\n  green {{parent.parent.LightSwitchPuppet.exp3}}\n  blue {{parent.parent.LightSwitchPuppet.exp3}}\n  name Exposure1\n  label \"\\[value red]\"\n  xpos -150\n  ypos 95\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult3} {parent.parent.LightSwitchPuppet.mult3} {parent.parent.LightSwitchPuppet.mult3} {parent.parent.LightSwitchPuppet.mult3}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -150\n  ypos 127\n }\npush $N5e021000\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass3}}\n  name SwitchBypass\n  xpos -150\n  ypos 183\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -150\n  ypos 223\n  disable {{!parent.mute3}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -150\n  ypos 265\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo3\"}}\n }\npush $N5e021000\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  selected true\n  xpos -150\n  ypos 331\n }\npush $N5e021000\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 331\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 438\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG04_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute4\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute4] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 1299\n ypos 457\n addUserKnob {20 GradeLG04}\n addUserKnob {6 mute4 l Mute +STARTLINE}\n addUserKnob {41 solo4 l Solo -STARTLINE T LightSwitchPuppet.solo4}\n addUserKnob {41 bypass4 l Bypass -STARTLINE T LightSwitchPuppet.bypass4}\n addUserKnob {41 exp4 l Exposure T LightSwitchPuppet.exp4}\n addUserKnob {41 mult4 l Multiply T LightSwitchPuppet.mult4}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5dfaa400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp4}}\n  green {{parent.parent.LightSwitchPuppet.exp4}}\n  blue {{parent.parent.LightSwitchPuppet.exp4}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -186\n  ypos 77\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult4} {parent.parent.LightSwitchPuppet.mult4} {parent.parent.LightSwitchPuppet.mult4} {parent.parent.LightSwitchPuppet.mult4}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -186\n  ypos 109\n }\npush $N5dfaa400\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass4}}\n  name SwitchBypass\n  xpos -186\n  ypos 159\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -186\n  ypos 209\n  disable {{!parent.mute4}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -186\n  ypos 251\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo4\"}}\n }\npush $N5dfaa400\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  xpos -186\n  ypos 354\n }\npush $N5dfaa400\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 354\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 422\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG05_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute5\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute5] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 1442\n ypos 457\n addUserKnob {20 GradeLG05}\n addUserKnob {6 mute5 l Mute +STARTLINE}\n addUserKnob {41 solo5 l Solo -STARTLINE T LightSwitchPuppet.solo5}\n addUserKnob {41 bypass5 l Bypass -STARTLINE T LightSwitchPuppet.bypass5}\n addUserKnob {41 exp5 l Exposure T LightSwitchPuppet.exp5}\n addUserKnob {41 mult5 l Multiply T LightSwitchPuppet.mult5}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5e33b800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp5}}\n  green {{parent.parent.LightSwitchPuppet.exp5}}\n  blue {{parent.parent.LightSwitchPuppet.exp5}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -139\n  ypos 84\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult5} {parent.parent.LightSwitchPuppet.mult5} {parent.parent.LightSwitchPuppet.mult5} {parent.parent.LightSwitchPuppet.mult5}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -139\n  ypos 116\n }\npush $N5e33b800\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass5}}\n  name SwitchBypass\n  xpos -139\n  ypos 164\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -139\n  ypos 208\n  disable {{!parent.mute5}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -139\n  ypos 250\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo5\"}}\n }\npush $N5e33b800\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  xpos -139\n  ypos 318\n }\npush $N5e33b800\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 318\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 367\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG06_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute6\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute6] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 1582\n ypos 457\n addUserKnob {20 GradeLG06}\n addUserKnob {6 mute6 l Mute +STARTLINE}\n addUserKnob {41 solo6 l Solo -STARTLINE T LightSwitchPuppet.solo6}\n addUserKnob {41 bypass6 l Bypass -STARTLINE T LightSwitchPuppet.bypass6}\n addUserKnob {41 exp6 l Exposure T LightSwitchPuppet.exp6}\n addUserKnob {41 mult6 l Multiply T LightSwitchPuppet.mult6}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5e339000 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp6}}\n  green {{parent.parent.LightSwitchPuppet.exp6}}\n  blue {{parent.parent.LightSwitchPuppet.exp6}}\n  name Exposure1\n  label \"\\[value red]\"\n  xpos -130\n  ypos 80\n }\n Multiply {\n  value {{parent.parent.LightSwitchPuppet.mult6} {parent.parent.LightSwitchPuppet.mult6} {parent.parent.LightSwitchPuppet.mult6} {parent.parent.LightSwitchPuppet.mult6}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -130\n  ypos 112\n }\npush $N5e339000\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass6}}\n  name SwitchBypass\n  xpos -130\n  ypos 177\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -130\n  ypos 225\n  disable {{!parent.mute6}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -130\n  ypos 267\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo6\"}}\n }\npush $N5e339000\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  selected true\n  xpos -130\n  ypos 325\n }\npush $N5e339000\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 325\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 419\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG07_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute7\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute7] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 1755\n ypos 457\n addUserKnob {20 GradeLG07}\n addUserKnob {6 mute7 l Mute +STARTLINE}\n addUserKnob {41 solo7 l Solo -STARTLINE T LightSwitchPuppet.solo7}\n addUserKnob {41 bypass7 l Bypass -STARTLINE T LightSwitchPuppet.bypass7}\n addUserKnob {41 exp7 l Exposure T LightSwitchPuppet.exp7}\n addUserKnob {41 mult7 l Multiply T LightSwitchPuppet.mult7}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5e2be400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp7}}\n  green {{parent.parent.LightSwitchPuppet.exp7}}\n  blue {{parent.parent.LightSwitchPuppet.exp7}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -151\n  ypos 88\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult7} {parent.parent.LightSwitchPuppet.mult7} {parent.parent.LightSwitchPuppet.mult7} {parent.parent.LightSwitchPuppet.mult7}}\n  name Multiply1\n  label \"\\[value value]\"\n  xpos -151\n  ypos 120\n }\npush $N5e2be400\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass7}}\n  name SwitchBypass\n  xpos -151\n  ypos 182\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -151\n  ypos 219\n  disable {{!parent.mute7}}\n }\n Multiply {\n  value 0\n  name Multiply3\n  label \"\\[value value]\"\n  xpos -151\n  ypos 261\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo7\"}}\n }\npush $N5e2be400\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  xpos -151\n  ypos 327\n }\npush $N5e2be400\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 327\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 378\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG08_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute8\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute8] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 1944\n ypos 457\n addUserKnob {20 GradeLG08}\n addUserKnob {6 mute8 l Mute +STARTLINE}\n addUserKnob {41 solo8 l Solo -STARTLINE T LightSwitchPuppet.solo8}\n addUserKnob {41 bypass8 l Bypass -STARTLINE T LightSwitchPuppet.bypass8}\n addUserKnob {41 exp8 l Exposure T LightSwitchPuppet.exp8}\n addUserKnob {41 mult8 l Multiply T LightSwitchPuppet.mult8}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5ebe3400 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp8}}\n  green {{parent.parent.LightSwitchPuppet.exp8}}\n  blue {{parent.parent.LightSwitchPuppet.exp8}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -147\n  ypos 52\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult8} {parent.parent.LightSwitchPuppet.mult8} {parent.parent.LightSwitchPuppet.mult8} {parent.parent.LightSwitchPuppet.mult8}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -147\n  ypos 84\n }\npush $N5ebe3400\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass8}}\n  name SwitchBypass\n  xpos -147\n  ypos 140\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -147\n  ypos 186\n  disable {{!parent.mute8}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -147\n  ypos 228\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo8\"}}\n }\npush $N5ebe3400\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  selected true\n  xpos -147\n  ypos 309\n }\npush $N5ebe3400\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 309\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 360\n }\nend_group\npush $cut_paste_input\nGroup {\n name GradeLG09_\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"mute9\\\":\\n    if k.getValue() == 1:\\n        n\\[\\\"tile_color\\\"].setValue(4278190335)\\n    elif k.getValue() == 0:\\n        n\\[\\\"tile_color\\\"].setValue(55312639)\"\n tile_color 0x34c00ff\n label \"\\[expr \\{\\[value mute9] ? \\\"Mute\\\" : \\[]\\}]\"\n note_font_color 0xffffffff\n selected true\n xpos 2090\n ypos 457\n addUserKnob {20 GradeLG09}\n addUserKnob {6 mute9 l Mute +STARTLINE}\n addUserKnob {41 solo9 l Solo -STARTLINE T LightSwitchPuppet.solo9}\n addUserKnob {41 bypass9 l Bypass -STARTLINE T LightSwitchPuppet.bypass9}\n addUserKnob {41 exp9 l Exposure T LightSwitchPuppet.exp9}\n addUserKnob {41 mult9 l Multiply T LightSwitchPuppet.mult9}\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\nset N5ebe0800 [stack 0]\n EXPTool {\n  mode Stops\n  red {{parent.parent.LightSwitchPuppet.exp9}}\n  green {{parent.parent.LightSwitchPuppet.exp9}}\n  blue {{parent.parent.LightSwitchPuppet.exp9}}\n  name Exposure\n  label \"\\[value red]\"\n  xpos -139\n  ypos 73\n }\n Multiply {\n  channels rgb\n  value {{parent.parent.LightSwitchPuppet.mult9} {parent.parent.LightSwitchPuppet.mult9} {parent.parent.LightSwitchPuppet.mult9} {parent.parent.LightSwitchPuppet.mult9}}\n  name MultiplyColor\n  label \"\\[value value]\"\n  xpos -139\n  ypos 105\n }\npush $N5ebe0800\n Switch {\n  inputs 2\n  which {{!parent.parent.LightSwitchPuppet.bypass9}}\n  name SwitchBypass\n  xpos -139\n  ypos 164\n }\n Multiply {\n  value 0\n  name MultiplyMute\n  label \"\\[value value]\"\n  xpos -139\n  ypos 213\n  disable {{!parent.mute9}}\n }\n Multiply {\n  value 0\n  name MultiplySolo\n  label \"\\[value value]\"\n  xpos -139\n  ypos 255\n  disable {{\"LightSwitchPuppet.solo1 + \\nLightSwitchPuppet.solo2 + \\nLightSwitchPuppet.solo3 + \\nLightSwitchPuppet.solo4 + \\nLightSwitchPuppet.solo5 + \\nLightSwitchPuppet.solo6 + \\nLightSwitchPuppet.solo7 + \\nLightSwitchPuppet.solo8 + \\nLightSwitchPuppet.solo9 \\n\\n== 0 ? 1 : LightSwitchPuppet.solo9\"}}\n }\npush $N5ebe0800\n Dissolve {\n  inputs 2\n  channels rgb\n  which {{parent.parent.LightSwitchPuppet.mix}}\n  name DissolveMix\n  xpos -139\n  ypos 353\n }\npush $N5ebe0800\n Switch {\n  inputs 2\n  which {{\"LightSwitchPuppet.disable == 1 ? 0 : 1\"}}\n  name SwitchDisable\n  xpos 0\n  ypos 353\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 420\n }\nend_group\npush $cut_paste_input\nGroup {\n name LightSwitchPuppet\n tile_color 0x34c00ff\n note_font Verdana\n selected true\n xpos 2349\n ypos 459\n addUserKnob {20 LightSwitchPuppet}\n addUserKnob {22 createNewLS l \"<i>Create New LightSwitch from Values\" T \"thisNode = nuke.thisNode()\\nwith nuke.Root():\\n    try: \\n        # Create a new LightSwitch node\\n        lightSwitch = nuke.createNode(\\\"NST_LightSwitch\\\")\\n        \\n        # Get the x and y position of the current node\\n        x = thisNode.xpos()\\n        y = thisNode.ypos()\\n        \\n        # Disconnect all inputs of the new node\\n        lightSwitch.setInput(0, None)\\n        \\n        # Move the new node 100 units to the right of the selected node\\n        lightSwitch.setXpos(x + 150)\\n        lightSwitch.setYpos(y + 50)\\n        \\n        # Deselect all nodes\\n        nuke.selectAll()\\n        nuke.invertSelection()\\n        \\n        # Select Original LightSwitch\\n        thisNode.setSelected(True)\\n        \\n        lightSwitch.knob(\\\"copyValuesFromLS\\\").execute()\\n        \\n        # Deselect all nodes\\n        nuke.selectAll()\\n        nuke.invertSelection()\\n        \\n        lightSwitch.setSelected(True)\\n        \\n    except:\\n        nuke.message(\\\"No LightSwitch node installation found. Cannot Create new LightSwitch.\\\")\" +STARTLINE}\n addUserKnob {22 copyValuesFromLS l \"<i>Copy Values from Selected LightSwitch\" T \"thisNode = nuke.thisNode()\\n\\nwith nuke.Root():\\n    selectedNode = nuke.selectedNode()\\n\\nif selectedNode and selectedNode != thisNode and \\\"LightSwitch\\\" in selectedNode.name():\\n    for knob in thisNode.knobs():\\n        if knob in selectedNode.knobs() and knob not in \\[\\\"xpos\\\",\\\"ypos\\\",\\\"name\\\",\\\"knobChanged\\\", \\\"label\\\", \\\"note_font_size\\\", \\\"note_font_color\\\"]:\\n            thisNode\\[knob].fromScript(selectedNode\\[knob].toScript())\\n            \\nelse:\\n    nuke.message(\\\"Please select another LightSwitch node to copy values from\\\")\" +STARTLINE}\n addUserKnob {22 reset l \"<b><font color=DarkOrange>Reset\" -STARTLINE T \"node = nuke.thisNode()\\nexposures = \\[]\\nmultiplies = \\[]\\nmutes = \\[]\\nsolos = \\[]\\nbypasses = \\[]\\n\\nfor knob in node.knobs():\\n    if \\\"panelDropped\\\" not in knob:\\n        if \\\"exp\\\" in knob:\\n            exposures.append(knob)\\n        elif \\\"mult\\\" in knob:\\n            multiplies.append(knob)\\n        elif \\\"mute\\\" in knob:\\n            mutes.append(knob)\\n        elif \\\"solo\\\" in knob:\\n            mutes.append(knob)\\n        elif \\\"bypass\\\" in knob:\\n            mutes.append(knob)\\n        \\nexposures.sort()\\nmultiplies.sort()\\nmutes.sort()\\nsolos.sort()\\nbypasses.sort()\\n\\nfor exp in exposures:\\n    node.knob(exp).setValue(0)\\n\\nfor mult in multiplies:\\n    node.knob(mult).setValue(1, 0)\\n    node.knob(mult).setValue(1, 1)\\n    node.knob(mult).setValue(1, 2)\\n\\nfor mute in mutes:\\n    node.knob(mute).setValue(0)\\n    \\nfor solo in solos:\\n    node.knob(solo).setValue(0)\\n\\nfor bypass in bypasses:\\n    node.knob(bypass).setValue(0)\\n\\nnode.knob(\\\"mix\\\").setValue(1)\"}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG01 l \"<font color=IndianRed>LightGroup 01\" T \" \"}\n addUserKnob {41 mute1 l Mute -STARTLINE T GradeLG01_.mute1}\n addUserKnob {6 solo1 l Solo -STARTLINE}\n addUserKnob {6 bypass1 l Bypass -STARTLINE}\n addUserKnob {7 exp1 l Exposure R -5 5}\n exp1 3.44\n addUserKnob {18 mult1 l Multiply}\n mult1 {1.3 1 1}\n addUserKnob {6 mult1_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG02 l \"<font color = LightPink>LightGroup 02\" T \" \"}\n addUserKnob {41 mute2 l Mute -STARTLINE T GradeLG02_.mute2}\n addUserKnob {6 solo2 l Solo -STARTLINE}\n solo2 true\n addUserKnob {6 bypass2 l Bypass -STARTLINE}\n addUserKnob {7 exp2 l Exposure R -5 5}\n exp2 -5\n addUserKnob {18 mult2 l Multiply}\n mult2 {1.1 0.8 1.3}\n addUserKnob {6 mult2_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 color_rgb_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {6 color_rgb_1_panelDropped l \"panel dropped state\" +HIDDEN +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG03 l \"<font color=LightSalmon>LightGroup 03\" T \" \"}\n addUserKnob {41 mute3 l Mute -STARTLINE T GradeLG03_.mute3}\n addUserKnob {6 solo3 l Solo -STARTLINE}\n addUserKnob {6 bypass3 l Bypass -STARTLINE}\n bypass3 true\n addUserKnob {7 exp3 l Exposure R -5 5}\n exp3 1.62\n addUserKnob {18 mult3 l Multiply}\n mult3 {1.2 1.2 1.1}\n addUserKnob {6 mult3_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG04 l \"<font color=Khaki>LightGroup 04\" T \" \"}\n addUserKnob {41 mute4 l Mute -STARTLINE T GradeLG04_.mute4}\n addUserKnob {6 solo4 l Solo -STARTLINE}\n solo4 true\n addUserKnob {6 bypass4 l Bypass -STARTLINE}\n addUserKnob {7 exp4 l Exposure R -5 5}\n addUserKnob {18 mult4 l Multiply}\n mult4 {1.2 1 1}\n addUserKnob {6 mult4_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG05 l \"<font color=DarkKhaki>LightGroup 05\" T \" \"}\n addUserKnob {41 mute5 l Mute -STARTLINE T GradeLG05_.mute5}\n addUserKnob {6 solo5 l Solo -STARTLINE}\n addUserKnob {6 bypass5 l Bypass -STARTLINE}\n bypass5 true\n addUserKnob {7 exp5 l Exposure R -5 5}\n exp5 -4.32\n addUserKnob {18 mult5 l Multiply}\n mult5 {1.3 1.2 1}\n addUserKnob {6 mult5_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG06 l \"<font color=MediumSeaGreen>LightGroup 06\" T \" \"}\n addUserKnob {41 mute6 l Mute -STARTLINE T GradeLG06_.mute6}\n addUserKnob {6 solo6 l Solo -STARTLINE}\n addUserKnob {6 bypass6 l Bypass -STARTLINE}\n bypass6 true\n addUserKnob {7 exp6 l Exposure R -5 5}\n addUserKnob {18 mult6 l Multiply}\n mult6 {1 1.4 1.3}\n addUserKnob {6 mult6_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG07 l \"<font color=MediumAquamarine>LightGroup 07\" T \" \"}\n addUserKnob {41 mute7 l Mute -STARTLINE T GradeLG07_.mute7}\n addUserKnob {6 solo7 l Solo -STARTLINE}\n addUserKnob {6 bypass7 l Bypass -STARTLINE}\n addUserKnob {7 exp7 l Exposure R -5 5}\n addUserKnob {18 mult7 l Multiply}\n mult7 {1.3 1 1.2}\n addUserKnob {6 mult7_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG08 l \"<font color=CadetBlue>LightGroup 08\" T \" \"}\n addUserKnob {41 mute8 l Mute -STARTLINE T GradeLG08_.mute8}\n addUserKnob {6 solo8 l Solo -STARTLINE}\n addUserKnob {6 bypass8 l Bypass -STARTLINE}\n addUserKnob {7 exp8 l Exposure R -5 5}\n exp8 -4.1\n addUserKnob {18 mult8 l Multiply}\n mult8 {1 1.3 1}\n addUserKnob {6 mult8_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {26 LG09 l \"<font color=SkyBlue>LightGroup 09\" T \" \"}\n addUserKnob {41 mute9 l Mute -STARTLINE T GradeLG09_.mute9}\n addUserKnob {6 solo9 l Solo -STARTLINE}\n solo9 true\n addUserKnob {6 bypass9 l Bypass -STARTLINE}\n addUserKnob {7 exp9 l Exposure R -5 5}\n exp9 -1.28\n addUserKnob {18 mult9 l Multiply}\n mult9 {1 1.3 1.3}\n addUserKnob {6 mult9_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 mix}\n mix 1\n}\n Input {\n  inputs 0\n  name Input\n  xpos 0\n }\n Output {\n  name Output1\n  xpos 0\n  ypos 300\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_Noise4D.nk",
    "content": "BlinkScript {\nProgramGroup 1\nKernelDescription \"1 \\\"Noise4D\\\" iterate pixelWise 6752f1b5993a387ea0d82fec10d191470cbd2c8493ee73ede687c94d9fe52ff5 2 \\\"src\\\" Read Point \\\"dst\\\" Write Point 3 \\\"octaves\\\" Int 1 CAAAAA== \\\"persistence\\\" Float 1 AAAAPw== \\\"scale\\\" Float 1 bxKDOg==\"\nkernelSource \"//Based on https://github.com/Draradech/csworldgen/blob/master/simplexnoise.cpp\\n//Ported by Mads Hagbarth Lund 2014\\n\\n/* Copyright (c) 2007-2012 Eliot Eshelman\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n\\nint fastfloor( const float x ) \\{ return x > 0 ? (int) x : (int) x - 1; \\}\\ninline float raw_noise_4d( const float x, const float y, const float z, const float w ) \\n\\{\\nint simplex\\[64]\\[4] = \\{\\n    \\{0,1,2,3\\},\\{0,1,3,2\\},\\{0,0,0,0\\},\\{0,2,3,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,2,3,0\\},\\n    \\{0,2,1,3\\},\\{0,0,0,0\\},\\{0,3,1,2\\},\\{0,3,2,1\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{1,3,2,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{1,2,0,3\\},\\{0,0,0,0\\},\\{1,3,0,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,3,0,1\\},\\{2,3,1,0\\},\\n    \\{1,0,2,3\\},\\{1,0,3,2\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{2,0,3,1\\},\\{0,0,0,0\\},\\{2,1,3,0\\},\\n    \\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\n    \\{2,0,1,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,0,1,2\\},\\{3,0,2,1\\},\\{0,0,0,0\\},\\{3,1,2,0\\},\\n    \\{2,1,0,3\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{0,0,0,0\\},\\{3,1,0,2\\},\\{0,0,0,0\\},\\{3,2,0,1\\},\\{3,2,1,0\\}\\n\\};\\n    int perm\\[512] = \\{\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,\\n\\n        151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,\\n        8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,\\n        35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,\\n        134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,\\n        55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,\\n        18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,\\n        250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,\\n        189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,\\n        172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,\\n        228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,\\n        107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\\n        138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\\n    \\};\\n   int grad4\\[32]\\[4]= \\{\\n    \\{0,1,1,1\\},  \\{0,1,1,-1\\},  \\{0,1,-1,1\\},  \\{0,1,-1,-1\\},\\n    \\{0,-1,1,1\\}, \\{0,-1,1,-1\\}, \\{0,-1,-1,1\\}, \\{0,-1,-1,-1\\},\\n    \\{1,0,1,1\\},  \\{1,0,1,-1\\},  \\{1,0,-1,1\\},  \\{1,0,-1,-1\\},\\n    \\{-1,0,1,1\\}, \\{-1,0,1,-1\\}, \\{-1,0,-1,1\\}, \\{-1,0,-1,-1\\},\\n    \\{1,1,0,1\\},  \\{1,1,0,-1\\},  \\{1,-1,0,1\\},  \\{1,-1,0,-1\\},\\n    \\{-1,1,0,1\\}, \\{-1,1,0,-1\\}, \\{-1,-1,0,1\\}, \\{-1,-1,0,-1\\},\\n    \\{1,1,1,0\\},  \\{1,1,-1,0\\},  \\{1,-1,1,0\\},  \\{1,-1,-1,0\\},\\n    \\{-1,1,1,0\\}, \\{-1,1,-1,0\\}, \\{-1,-1,1,0\\}, \\{-1,-1,-1,0\\}\\n   \\};\\n    float F4 = (sqrt(5.0f)-1.0)/4.0;\\n    float G4 = (5.0-sqrt(5.0f))/20.0;\\n    float n0, n1, n2, n3, n4;\\n    float s = (x + y + z + w) * F4;\\n    int i = fastfloor(x + s);\\n    int j = fastfloor(y + s);\\n    int k = fastfloor(z + s);\\n    int l = fastfloor(w + s);\\n    float t = (i + j + k + l) * G4;\\n    float X0 = i - t;\\n    float Y0 = j - t;\\n    float Z0 = k - t;\\n    float W0 = l - t;\\n\\n    float x0 = x - X0;\\n    float y0 = y - Y0;\\n    float z0 = z - Z0;\\n    float w0 = w - W0;\\n    int c1 = (x0 > y0) ? 32 : 0;\\n    int c2 = (x0 > z0) ? 16 : 0;\\n    int c3 = (y0 > z0) ? 8 : 0;\\n    int c4 = (x0 > w0) ? 4 : 0;\\n    int c5 = (y0 > w0) ? 2 : 0;\\n    int c6 = (z0 > w0) ? 1 : 0;\\n    int c = c1 + c2 + c3 + c4 + c5 + c6;\\n\\n    int i1, j1, k1, l1;\\n    int i2, j2, k2, l2;\\n    int i3, j3, k3, l3;\\n    i1 = simplex\\[c]\\[0]>=3 ? 1 : 0;\\n    j1 = simplex\\[c]\\[1]>=3 ? 1 : 0;\\n    k1 = simplex\\[c]\\[2]>=3 ? 1 : 0;\\n    l1 = simplex\\[c]\\[3]>=3 ? 1 : 0;\\n    i2 = simplex\\[c]\\[0]>=2 ? 1 : 0;\\n    j2 = simplex\\[c]\\[1]>=2 ? 1 : 0;\\n    k2 = simplex\\[c]\\[2]>=2 ? 1 : 0;\\n    l2 = simplex\\[c]\\[3]>=2 ? 1 : 0;\\n    i3 = simplex\\[c]\\[0]>=1 ? 1 : 0;\\n    j3 = simplex\\[c]\\[1]>=1 ? 1 : 0;\\n    k3 = simplex\\[c]\\[2]>=1 ? 1 : 0;\\n    l3 = simplex\\[c]\\[3]>=1 ? 1 : 0;\\n    float x1 = x0 - i1 + G4;\\n    float y1 = y0 - j1 + G4;\\n    float z1 = z0 - k1 + G4;\\n    float w1 = w0 - l1 + G4;\\n    float x2 = x0 - i2 + 2.0*G4;\\n    float y2 = y0 - j2 + 2.0*G4;\\n    float z2 = z0 - k2 + 2.0*G4;\\n    float w2 = w0 - l2 + 2.0*G4;\\n    float x3 = x0 - i3 + 3.0*G4;\\n    float y3 = y0 - j3 + 3.0*G4;\\n    float z3 = z0 - k3 + 3.0*G4;\\n    float w3 = w0 - l3 + 3.0*G4;\\n    float x4 = x0 - 1.0 + 4.0*G4;\\n    float y4 = y0 - 1.0 + 4.0*G4;\\n    float z4 = z0 - 1.0 + 4.0*G4;\\n    float w4 = w0 - 1.0 + 4.0*G4;\\n    int ii = i & 255;\\n    int jj = j & 255;\\n    int kk = k & 255;\\n    int ll = l & 255;\\n    int gi0 = perm\\[ii+perm\\[jj+perm\\[kk+perm\\[ll]]]] % 32;\\n    int gi1 = perm\\[ii+i1+perm\\[jj+j1+perm\\[kk+k1+perm\\[ll+l1]]]] % 32;\\n    int gi2 = perm\\[ii+i2+perm\\[jj+j2+perm\\[kk+k2+perm\\[ll+l2]]]] % 32;\\n    int gi3 = perm\\[ii+i3+perm\\[jj+j3+perm\\[kk+k3+perm\\[ll+l3]]]] % 32;\\n    int gi4 = perm\\[ii+1+perm\\[jj+1+perm\\[kk+1+perm\\[ll+1]]]] % 32;\\n    float t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - w0*w0;\\n    if(t0<0) n0 = 0.0;\\n    else \\{\\n        t0 *= t0;\\n        n0 = t0 * t0 * dot(float4(grad4\\[gi0]\\[0],grad4\\[gi0]\\[2],grad4\\[gi0]\\[3],grad4\\[gi0]\\[3]), float4(x0, y0, z0, w0));\\n    \\}\\n    float t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - w1*w1;\\n    if(t1<0) n1 = 0.0;\\n    else \\{\\n        t1 *= t1;\\n        n1 = t1 * t1 * dot(float4(grad4\\[gi1]\\[0],grad4\\[gi1]\\[2],grad4\\[gi1]\\[3],grad4\\[gi1]\\[3]), float4(x1, y1, z1, w1));\\n    \\}\\n    float t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - w2*w2;\\n    if(t2<0) n2 = 0.0;\\n    else \\{\\n        t2 *= t2;\\n        n2 = t2 * t2 * dot(float4(grad4\\[gi2]\\[0],grad4\\[gi2]\\[2],grad4\\[gi2]\\[3],grad4\\[gi2]\\[3]), float4(x2, y2, z2, w2));\\n    \\}\\n    float t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - w3*w3;\\n    if(t3<0) n3 = 0.0;\\n    else \\{\\n        t3 *= t3;\\n        n3 = t3 * t3 * dot(float4(grad4\\[gi3]\\[0],grad4\\[gi3]\\[2],grad4\\[gi3]\\[3],grad4\\[gi3]\\[3]), float4(x3, y3, z3, w3));\\n    \\}\\n    float t4 = 0.6 - x4*x4 - y4*y4 - z4*z4 - w4*w4;\\n    if(t4<0) n4 = 0.0;\\n    else \\{\\n        t4 *= t4;\\n        n4 = t4 * t4 * dot(float4(grad4\\[gi4]\\[0],grad4\\[gi4]\\[2],grad4\\[gi4]\\[3],grad4\\[gi4]\\[3]), float4(x4, y4, z4, w4));\\n    \\}\\n    return 27.0 * (n0 + n1 + n2 + n3 + n4);\\n\\}\\ninline float octave_noise_4d( const float octaves, const float persistence, const float scale, const float x, const float y, const float z, const float w ) \\n\\{\\n    float total = 0;\\n    float frequency = scale;\\n    float amplitude = 1;\\n    float maxAmplitude = 0;\\n    for( int i=0; i < octaves; i++ ) \\{\\n        total += (float)raw_noise_4d( x * frequency, y * frequency, z * frequency, w * frequency ) * amplitude;\\n\\n        frequency *= 2;\\n        maxAmplitude += amplitude;\\n        amplitude *= persistence;\\n    \\}\\n    return float(total / maxAmplitude);\\n\\}\\n\\nkernel Noise4D : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eWrite, eAccessPoint> dst;\\nparam:\\n  int octaves;\\n  float persistence;\\n  float scale;\\n  void define() \\{\\n    defineParam(octaves,      \\\"octaves\\\", 8);\\n    defineParam(persistence, \\\"persistence\\\",  0.5f);\\n    defineParam(scale, \\\"scale\\\", 0.001f);\\n  \\}\\n  void process() \\{\\n    float sample = (float)octave_noise_4d(float(octaves),persistence,scale,src(0),src(1),src(2),src(3));\\n    dst() = float4(sample,sample,sample,sample);\\n\\}\\n\\};\"\nuseGPUIfAvailable false\nvectorize false\nrebuild \"\"\nNoise4D_octaves 7\nNoise4D_persistence 0.654\nNoise4D_scale 0.002\nrebuild_finalise \"\"\nname Noise4D\nselected true\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_ParticleLights_ExampleScript.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x388e8e00\n label \"THE MAIN NODE\"\n note_font \"Verdana Bold Bold Bold\"\n note_font_size 100\n selected true\n xpos -2252\n ypos 157\n bdwidth 869\n bdheight 293\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n tile_color 0x274427ff\n label 3d\n note_font_size 42\n selected true\n xpos -359\n ypos 480\n bdwidth 275\n bdheight 244\n}\nBackdropNode {\n inputs 0\n name BackdropNode3\n tile_color 0x3d426dff\n label EXAMPELS\n note_font \"Verdana Bold Bold Bold\"\n note_font_size 100\n selected true\n xpos -1318\n ypos 158\n bdwidth 2340\n bdheight 1258\n}\nStickyNote {\n inputs 0\n name StickyNote1\n tile_color 0x59a05dff\n label \"   02: SINGLE LIGHTS   \"\n note_font_size 50\n selected true\n xpos 243\n ypos 434\n}\nStickyNote {\n inputs 0\n name StickyNote3\n tile_color 0x59a05dff\n label \"   01: BASIC PARTICLES  \"\n note_font_size 50\n selected true\n xpos -1180\n ypos 441\n}\nStickyNote {\n inputs 0\n name StickyNote4\n tile_color 0x417544ff\n label \"          This is the basic particle light in action.           \"\n note_font_size 25\n selected true\n xpos -1189\n ypos 513\n}\nStickyNote {\n inputs 0\n name StickyNote2\n tile_color 0x417544ff\n label \"             In this example we use single particles as             \\n   light sources, just like the regular Light node\\n   This also shows the half-lambert light \\n    that makes a softer fake light\\n\"\n note_font_size 25\n selected true\n xpos 238\n ypos 506\n}\nAxis2 {\n inputs 0\n rotate {0 {-6+(frame/4)} 0}\n name Axis2\n selected true\n xpos -194\n ypos 536\n}\nCamera2 {\n translate {11.15517521 -5.764003277 24.37641335}\n rotate {17.72198681 20.00005064 0}\n focal 36\n name Camera1\n selected true\n xpos -194\n ypos 602\n}\nDot {\n name Dot6\n selected true\n xpos -170\n ypos 697\n}\nDot {\n name Dot10\n selected true\n xpos -170\n ypos 872\n}\nset N4b7ad880 [stack 0]\nGroup {\n inputs 0\n name RandomGeo\n selected true\n xpos -339\n ypos 698\n}\n Sphere {\n  inputs 0\n  translate {6.159999847 0 0}\n  name Sphere3\n  xpos 462\n  ypos 192\n }\n Cube {\n  inputs 0\n  rotate {45 45 0}\n  name Cube1\n  xpos 369\n  ypos 199\n }\n Sphere {\n  inputs 0\n  translate {-6.099999905 0 0}\n  name Sphere2\n  xpos 279\n  ypos 198\n }\n Scene {\n  inputs 3\n  name Scene1\n  xpos 379\n  ypos 233\n }\nset N4b7dd4b0 [stack 0]\npush $N4b7dd4b0\n TransformGeo {\n  translate {0 5.079999924 0}\n  name TransformGeo1\n  xpos 369\n  ypos 334\n }\n Scene {\n  inputs 2\n  name Scene2\n  xpos 479\n  ypos 313\n }\nset N4b7f3f00 [stack 0]\n TransformGeo {\n  translate {0 0 -7.900000095}\n  name TransformGeo2\n  xpos 575\n  ypos 334\n }\npush $N4b7f3f00\n Scene {\n  inputs 2\n  name Scene3\n  xpos 585\n  ypos 382\n }\nset N4d20e9a0 [stack 0]\npush $N4d20e9a0\n Scene {\n  inputs 2\n  name Scene4\n  xpos 583\n  ypos 458\n }\n Output {\n  name Output1\n  xpos 575\n  ypos 555\n }\nend_group\nDot {\n name Dot8\n selected true\n xpos -229\n ypos 701\n}\nDot {\n name Dot9\n selected true\n xpos -229\n ypos 827\n}\nset N4d10eaf0 [stack 0]\nAxis2 {\n inputs 0\n translate {0 2 0}\n rotate {{frame*4} {frame*8} {frame*12}}\n name Axis3\n selected true\n xpos -1070\n ypos 599\n}\nSphere {\n inputs 0\n translate {4 2 0}\n uniform_scale 0.4\n name Sphere1\n selected true\n xpos -998\n ypos 596\n}\nTransformGeo {\n inputs 2\n name TransformGeo1\n selected true\n xpos -998\n ypos 620\n}\npush 0\nParticleEmitter {\n inputs 2\n rate 2\n lifetime 30\n velocity 0.017\n size 0.05\n size_variation 1\n name ParticleEmitter1\n selected true\n xpos -888\n ypos 620\n}\nParticleTurbulence {\n strength {0.01 {strength.x} {strength.x}}\n scale {0.5 {scale.x} {scale.x}}\n name ParticleTurbulence1\n selected true\n xpos -888\n ypos 644\n}\nParticleDrag {\n drag 0.4\n name ParticleDrag1\n selected true\n xpos -888\n ypos 680\n}\nParticleExpression {\n colexpr sin(pos)\n name ParticleExpression1\n selected true\n xpos -888\n ypos 716\n}\nParticleCurve {\n curves {r {}\n   g {}\n   b {}\n   a {}\n   size {curve 0.1251244545 -0.003482580185}\n   mass {}}\n affect_rgb false\n affect_alpha false\n affect_size true\n name ParticleCurve1\n selected true\n xpos -888\n ypos 752\n}\nset N4d2547f0 [stack 0]\nScene {\n inputs 2\n name Scene1\n selected true\n xpos -989\n ypos 803\n}\npush 0\nScanlineRender {\n inputs 3\n motion_vectors_type distance\n name ScanlineRender1\n selected true\n xpos -993\n ypos 869\n}\npush $N4d10eaf0\nDot {\n name Dot13\n selected true\n xpos -229\n ypos 1047\n}\nset N4d27dea0 [stack 0]\npush $N4b7ad880\nDot {\n name Dot12\n selected true\n xpos -170\n ypos 1100\n}\nset N4d281db0 [stack 0]\npush $N4d2547f0\nGroup {\n inputs 3\n name Particle_Lights3\n selected true\n xpos -888\n ypos 1097\n addUserKnob {20 User}\n addUserKnob {26 info1 l \"\" +STARTLINE T \"Particle Lights v1.1\"}\n addUserKnob {26 info2 l \"\" +STARTLINE T \"by Mads Hagbarth Lund\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 \"blinnShader_Diffuse Multiplier\" l \"Diffuse Multiplier\" T \"BlinkScript8.blinnShader_Diffuse Multiplier\"}\n addUserKnob {41 \"blinnShader_Specular Power\" l \"Specular Power\" T \"BlinkScript8.blinnShader_Specular Power\"}\n addUserKnob {41 \"blinnShader_Specular Hardness\" l \"Specular Hardness\" T \"BlinkScript8.blinnShader_Specular Hardness\"}\n addUserKnob {41 \"blinnShader_Half Lambert\" l \"Half Lambert\" T \"BlinkScript8.blinnShader_Half Lambert\"}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"A bug in the blink node means that the input size must be atleast 2x2. \\nSo we fake this by adding 2 null particles.\"\n  xpos -847\n  ypos 354\n }\n Group {\n  inputs 0\n  name Light2\n  xpos -679\n  ypos 487\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   selected true\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\n Group {\n  inputs 0\n  name Light1\n  xpos -684\n  ypos 428\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   selected true\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\npush 0\n Input {\n  inputs 0\n  name Particles\n  xpos -452\n  ypos 324\n }\n ParticleMerge {\n  inputs 4\n  name ParticleMerge1\n  xpos -452\n  ypos 428\n }\nadd_layer {hag_pos hag_pos.red hag_pos.green hag_pos.blue hag_pos.alpha}\nadd_layer {hag_active hag_active.a}\n ParticleToImage {\n  pos hag_pos\n  active hag_active.a\n  name ParticleToImage1\n  xpos -452\n  ypos 511\n }\nset N4d456200 [stack 0]\n Shuffle {\n  in hag_pos\n  name light_pos\n  xpos -329\n  ypos 511\n }\n Dot {\n  name Dot2\n  xpos -295\n  ypos 559\n }\npush $N4d456200\n Shuffle {\n  in rgb\n  in2 hag_active\n  alpha red2\n  name light_color\n  xpos -452\n  ypos 581\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -149\n  ypos 282\n  number 1\n }\n Camera2 {\n  name Camera1\n  xpos -136\n  ypos 320\n }\n Dot {\n  name Dot1\n  xpos -112\n  ypos 396\n }\n Input {\n  inputs 0\n  name Scene3D\n  xpos -275\n  ypos 323\n  number 2\n }\npush 0\nadd_layer {P P.red P.green P.blue P.alpha}\nadd_layer {N N.red N.green N.blue N.alpha}\n ScanlineRender {\n  inputs 3\n  max_tessellation 2\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel P\n  N_channel N\n  name ScanlineRender2\n  xpos -275\n  ypos 393\n }\n Dot {\n  name Dot10\n  xpos -241\n  ypos 421\n }\nset N4d4a9c50 [stack 0]\n Dot {\n  name Dot3\n  xpos -152\n  ypos 421\n }\n Shuffle {\n  in N\n  in2 rgba\n  alpha alpha2\n  name NormalSplit\n  xpos -186\n  ypos 472\n }\npush $N4d4a9c50\n Shuffle {\n  in P\n  in2 rgba\n  alpha alpha2\n  name PointPosSplit\n  xpos -275\n  ypos 472\n }\n BlinkScript {\n  inputs 4\n  ProgramGroup 1\n  KernelDescription \"1 \\\"blinnShader\\\" iterate pixelWise 4b6604ba5b4299095f03f9edf77da6dbf1f946c319dc7f6e6962ca67a375f9f8 5 \\\"pointPos\\\" Read Point \\\"normal\\\" Read Point \\\"light_color\\\" Read Random \\\"light_pos\\\" Read Random \\\"dst\\\" Write Point 5 \\\"Camera Position\\\" Float 3 AACAPwAAgD8AAIA/AAAAAA== \\\"Diffuse Multiplier\\\" Float 1 AACAPw== \\\"Specular Power\\\" Float 1 AAAgQQ== \\\"Specular Hardness\\\" Float 1 AADIQg== \\\"Half Lambert\\\" Bool 1 AQ==\"\n  kernelSource \"kernel blinnShader : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> pointPos;  //the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> normal;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_color;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_pos;  //the input image\\n\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float3 cameraPosition;\\n    float diffuseMultiplier;\\n    float specularPower;\\n    float specularHardness;\\n    bool halfLambert;\\n\\n  local:\\n    float3 lightDir;\\n    float3 viewDir;\\n\\n  void define() \\{\\n    defineParam(halfLambert,\\\"Half Lambert\\\",bool(1));\\n    defineParam(cameraPosition, \\\"Camera Position\\\", float3(1.0f,1.0f,1.0f));\\n    defineParam(diffuseMultiplier,\\\"Diffuse Multiplier\\\",float(1.0f));\\n    defineParam(specularPower,\\\"Specular Power\\\",float(10.0f));\\n    defineParam(specularHardness,\\\"Specular Hardness\\\",float(100.0f));\\n  \\}\\n\\n  void init() \\{\\n  \\}\\n\\n  void process() \\{\\n\\n    SampleType(dst) sampleBase(0.0f);\\n\\n    float newVal = 0;\\n    for(int j = 0; j < light_pos.bounds.y2; j++) \\{\\n      for(int i = 0; i < light_pos.bounds.x2; i++) \\{\\n        if (light_color(i,j).w == 1) \\{        \\n\\n        lightDir = (float3(light_pos(i,j).x,light_pos(i,j).y,light_pos(i,j).z)-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        float distance = length(lightDir);\\n        lightDir = normalize(lightDir);\\n        distance = distance * distance;\\n\\n        viewDir = (cameraPosition-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        viewDir = normalize(viewDir);\\n\\n\\n        //Calculating Diffuse\\n        float NdotL = dot(float3(normal(0),normal(1),normal(2)),lightDir);\\n        if (halfLambert) \\{      \\n           NdotL = NdotL * 0.5 + 0.5; //Added option for half lambert\\n         \\}\\n        else\\n        \\{\\n        NdotL = min(1.0f,max(0.0f,NdotL));\\n        \\}\\n\\n        float diffuse = NdotL * (light_pos(i,j).w*diffuseMultiplier) / distance;\\n\\n\\n        //Calculating Specular\\n        float3 H = normalize(lightDir+viewDir);\\n        float NdotH = dot(float3(normal(0),normal(1),normal(2)),H);\\n        float intensity = pow(NdotH,specularHardness);\\n        float specular = intensity * specularPower / distance;\\n\\n\\n        SampleType(dst) sample(0.0f);\\n        sample.x = max(0.0f,(diffuse+specular) * light_color(i,j).x);\\n        sample.y =  max(0.0f,(diffuse+specular) * light_color(i,j).y);\\n        sample.z =  max(0.0f, (diffuse+specular) * light_color(i,j).z);\\n        sampleBase += sample;\\n        \\}\\n      \\}\\n    \\}\\n\\n    dst() = sampleBase+float4(0,0,0,pointPos(3)); //Reaplying Alpha\\n   \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  \"blinnShader_Camera Position\" {{parent.Camera1.world_matrix.3} {parent.Camera1.world_matrix.7} {parent.Camera1.world_matrix.11}}\n  \"blinnShader_Diffuse Multiplier\" 4\n  \"blinnShader_Specular Power\" 0.45\n  \"blinnShader_Specular Hardness\" 200\n  \"blinnShader_Half Lambert\" false\n  rebuild_finalise \"\"\n  name BlinkScript8\n  selected true\n  xpos -186\n  ypos 575\n }\n Premult {\n  name Premult1\n  xpos -186\n  ypos 718\n }\n Output {\n  name Output1\n  xpos -186\n  ypos 785\n }\nend_group\nMerge2 {\n inputs 2\n operation plus\n name Merge1\n selected true\n xpos -985\n ypos 1105\n}\nPostageStamp {\n name PostageStamp2\n selected true\n xpos -993\n ypos 1228\n postage_stamp true\n}\npush $N4d27dea0\npush $N4d281db0\npush $cut_paste_input\nAxis2 {\n translate {0.3803196549 1.175070047 -5.005373955}\n rotate {{frame} {frame*2} {frame/4}}\n name Axis1\n selected true\n xpos 523\n ypos 786\n}\nset N4d31eae0 [stack 0]\nGroup {\n name Light1\n selected true\n xpos 421\n ypos 904\n addUserKnob {20 User}\n addUserKnob {41 color T Point.color}\n addUserKnob {41 intensity T Point.intensity}\n addUserKnob {41 translate T Point.translate}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n  xpos -183\n  ypos -299\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"Dummy object to make it look like a regular light\"\n  xpos -188\n  ypos -235\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"Link positions via the world matrix to get exact position\"\n  xpos -300\n  ypos -55\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"Link RGB to color and Alpha to Intensity\"\n  xpos -300\n  ypos -131\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -276\n  ypos -296\n }\n Light {\n  color {0.24 0.805 0.235}\n  color_panelDropped true\n  intensity 8.8\n  translate {-8 1 3}\n  depthmap_slope_bias 0.01\n  name Point\n  xpos -266\n  ypos -216\n }\n Constant {\n  inputs 0\n  color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n  format \"1 1 0 0 1 1 1 hg_light\"\n  name Constant2\n  selected true\n  xpos -399\n  ypos -148\n }\n Sphere {\n  display off\n  render_mode off\n  rows 1\n  columns 1\n  translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n  uniform_scale 0.022\n  name Lightx\n  xpos -399\n  ypos -52\n }\npush 0\n ParticleEmitter {\n  inputs 2\n  display off\n  render_mode off\n  emit_channels {b}\n  emit_from bbox\n  emit_order uniformly\n  randomize_type \"randomize outwards\"\n  rate 1\n  lifetime 1\n  velocity 0\n  size 1\n  size_channel rgba.alpha\n  color_from_texture true\n  name ParticleEmitter1\n  xpos -399\n  ypos 48\n }\n Output {\n  name Output1\n  xpos -399\n  ypos 150\n }\nend_group\npush $N4d31eae0\nGroup {\n name Light2\n selected true\n xpos 513\n ypos 903\n addUserKnob {20 User}\n addUserKnob {41 color T Point.color}\n addUserKnob {41 intensity T Point.intensity}\n addUserKnob {41 translate T Point.translate}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n  xpos -183\n  ypos -299\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"Dummy object to make it look like a regular light\"\n  xpos -188\n  ypos -235\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"Link positions via the world matrix to get exact position\"\n  xpos -300\n  ypos -55\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"Link RGB to color and Alpha to Intensity\"\n  xpos -300\n  ypos -131\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -276\n  ypos -296\n }\n Light {\n  color {0.235 0.235 0.54}\n  color_panelDropped true\n  intensity 10\n  translate {0 -8 3}\n  depthmap_slope_bias 0.01\n  name Point\n  xpos -266\n  ypos -216\n }\n Constant {\n  inputs 0\n  color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n  format \"1 1 0 0 1 1 1 hg_light\"\n  name Constant2\n  selected true\n  xpos -399\n  ypos -148\n }\n Sphere {\n  display off\n  render_mode off\n  rows 1\n  columns 1\n  translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n  uniform_scale 0.022\n  name Lightx\n  xpos -399\n  ypos -52\n }\npush 0\n ParticleEmitter {\n  inputs 2\n  display off\n  render_mode off\n  emit_channels {b}\n  emit_from bbox\n  emit_order uniformly\n  randomize_type \"randomize outwards\"\n  rate 1\n  lifetime 1\n  velocity 0\n  size 1\n  size_channel rgba.alpha\n  color_from_texture true\n  name ParticleEmitter1\n  xpos -399\n  ypos 48\n }\n Output {\n  name Output1\n  xpos -399\n  ypos 150\n }\nend_group\npush $N4d31eae0\nGroup {\n name Light\n selected true\n xpos 607\n ypos 903\n addUserKnob {20 User}\n addUserKnob {41 color T Point.color}\n addUserKnob {41 intensity T Point.intensity}\n addUserKnob {41 translate T Point.translate}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n  xpos -183\n  ypos -299\n }\n StickyNote {\n  inputs 0\n  name StickyNote2\n  label \"Dummy object to make it look like a regular light\"\n  xpos -188\n  ypos -235\n }\n StickyNote {\n  inputs 0\n  name StickyNote4\n  label \"Link positions via the world matrix to get exact position\"\n  xpos -300\n  ypos -55\n }\n StickyNote {\n  inputs 0\n  name StickyNote3\n  label \"Link RGB to color and Alpha to Intensity\"\n  xpos -300\n  ypos -131\n }\n Constant {\n  inputs 0\n  color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n  format \"1 1 0 0 1 1 1 hg_light\"\n  name Constant2\n  xpos -399\n  ypos -148\n }\n Sphere {\n  display off\n  render_mode off\n  rows 1\n  columns 1\n  translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n  uniform_scale 0.022\n  name Lightx\n  xpos -399\n  ypos -52\n }\npush 0\n ParticleEmitter {\n  inputs 2\n  display off\n  render_mode off\n  emit_channels {b}\n  emit_from bbox\n  emit_order uniformly\n  randomize_type \"randomize outwards\"\n  rate 1\n  lifetime 1\n  velocity 0\n  size 1\n  size_channel rgba.alpha\n  color_from_texture true\n  name ParticleEmitter1\n  xpos -399\n  ypos 48\n }\n Output {\n  name Output1\n  xpos -399\n  ypos 150\n }\n Input {\n  inputs 0\n  name Input1\n  xpos -276\n  ypos -296\n }\n Light {\n  color {0.85 0.235 0.235}\n  intensity 10\n  translate {5 2 15}\n  depthmap_slope_bias 0.01\n  name Point\n  selected true\n  xpos -266\n  ypos -216\n }\nend_group\nParticleMerge {\n inputs 3\n name ParticleMerge1\n selected true\n xpos 513\n ypos 1001\n}\nGroup {\n inputs 3\n name Particle_Lights1\n selected true\n xpos 513\n ypos 1087\n addUserKnob {20 User}\n addUserKnob {26 info1 l \"\" +STARTLINE T \"Particle Lights v1.1\"}\n addUserKnob {26 info2 l \"\" +STARTLINE T \"by Mads Hagbarth Lund\"}\n addUserKnob {26 \"\"}\n addUserKnob {41 \"blinnShader_Diffuse Multiplier\" l \"Diffuse Multiplier\" T \"BlinkScript8.blinnShader_Diffuse Multiplier\"}\n addUserKnob {41 \"blinnShader_Specular Power\" l \"Specular Power\" T \"BlinkScript8.blinnShader_Specular Power\"}\n addUserKnob {41 \"blinnShader_Specular Hardness\" l \"Specular Hardness\" T \"BlinkScript8.blinnShader_Specular Hardness\"}\n addUserKnob {41 \"blinnShader_Half Lambert\" l \"Half Lambert\" T \"BlinkScript8.blinnShader_Half Lambert\"}\n}\n StickyNote {\n  inputs 0\n  name StickyNote1\n  label \"A bug in the blink node means that the input size must be atleast 2x2. \\nSo we fake this by adding 2 null particles.\"\n  xpos -847\n  ypos 354\n }\n Group {\n  inputs 0\n  name Light2\n  xpos -679\n  ypos 487\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   selected true\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\n Group {\n  inputs 0\n  name Light1\n  xpos -684\n  ypos 428\n  addUserKnob {20 User}\n  addUserKnob {41 color T Point.color}\n  addUserKnob {41 intensity T Point.intensity}\n  addUserKnob {41 translate T Point.translate}\n }\n  StickyNote {\n   inputs 0\n   name StickyNote1\n   label \"Ensure that we can use axis nodes\\nto modify the position of the light.\"\n   xpos -183\n   ypos -299\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote2\n   label \"Dummy object to make it look like a regular light\"\n   xpos -188\n   ypos -235\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote4\n   label \"Link positions via the world matrix to get exact position\"\n   xpos -300\n   ypos -55\n  }\n  StickyNote {\n   inputs 0\n   name StickyNote3\n   label \"Link RGB to color and Alpha to Intensity\"\n   xpos -300\n   ypos -131\n  }\n  Constant {\n   inputs 0\n   color {{parent.Point.color} {parent.Point.color} {parent.Point.color} {parent.Point.intensity/10}}\n   format \"1 1 0 0 1 1 1 hg_light\"\n   name Constant2\n   xpos -399\n   ypos -148\n  }\n  Sphere {\n   display off\n   render_mode off\n   rows 1\n   columns 1\n   translate {{parent.Point.world_matrix.3 x1 11.42000103 x8 -18.5 2.000001907} {parent.Point.world_matrix.7 x1 1.620000005 x8 46.30000305 44.20000076} {parent.Point.world_matrix.11 x1 0.3999999762 x8 -50.79999924 -50.79999924}}\n   uniform_scale 0.022\n   name Lightx\n   xpos -399\n   ypos -52\n  }\npush 0\n  ParticleEmitter {\n   inputs 2\n   display off\n   render_mode off\n   start_frame -5\n   emit_channels {b}\n   emit_from bbox\n   emit_order uniformly\n   randomize_type \"randomize outwards\"\n   rate 4\n   lifetime 1\n   velocity 0\n   size 1\n   size_channel rgba.alpha\n   color_from_texture true\n   name ParticleEmitter1\n   selected true\n   xpos -399\n   ypos 46\n  }\n  Output {\n   name Output1\n   xpos -399\n   ypos 150\n  }\n  Input {\n   inputs 0\n   name Input1\n   xpos -276\n   ypos -296\n  }\n  Light {\n   color {0 0 0}\n   intensity 0\n   depthmap_slope_bias 0.01\n   name Point\n   xpos -266\n   ypos -216\n  }\n end_group\npush 0\n Input {\n  inputs 0\n  name Particles\n  xpos -452\n  ypos 324\n }\n ParticleMerge {\n  inputs 4\n  name ParticleMerge1\n  xpos -452\n  ypos 428\n }\n ParticleToImage {\n  pos hag_pos\n  active hag_active.a\n  name ParticleToImage1\n  xpos -452\n  ypos 511\n }\nset N4d7955b0 [stack 0]\n Shuffle {\n  in hag_pos\n  name light_pos\n  xpos -329\n  ypos 511\n }\n Dot {\n  name Dot2\n  xpos -295\n  ypos 559\n }\npush $N4d7955b0\n Shuffle {\n  in rgb\n  in2 hag_active\n  alpha red2\n  name light_color\n  xpos -452\n  ypos 581\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -149\n  ypos 282\n  number 1\n }\n Camera2 {\n  name Camera1\n  xpos -136\n  ypos 320\n }\n Dot {\n  name Dot1\n  xpos -112\n  ypos 396\n }\n Input {\n  inputs 0\n  name Scene3D\n  xpos -275\n  ypos 323\n  number 2\n }\npush 0\n ScanlineRender {\n  inputs 3\n  max_tessellation 2\n  motion_vectors_type distance\n  output_shader_vectors true\n  P_channel point\n  N_channel normal\n  name ScanlineRender2\n  xpos -275\n  ypos 393\n }\n Dot {\n  name Dot10\n  xpos -241\n  ypos 421\n }\nset N4d7e8eb0 [stack 0]\n Dot {\n  name Dot3\n  xpos -152\n  ypos 421\n }\n Shuffle {\n  in normal\n  in2 rgba\n  alpha alpha2\n  name NormalSplit\n  xpos -186\n  ypos 472\n }\npush $N4d7e8eb0\n Shuffle {\n  in point\n  in2 rgba\n  alpha alpha2\n  name PointPosSplit\n  xpos -275\n  ypos 472\n }\n BlinkScript {\n  inputs 4\n  ProgramGroup 1\n  KernelDescription \"1 \\\"blinnShader\\\" iterate pixelWise 4b6604ba5b4299095f03f9edf77da6dbf1f946c319dc7f6e6962ca67a375f9f8 5 \\\"pointPos\\\" Read Point \\\"normal\\\" Read Point \\\"light_color\\\" Read Random \\\"light_pos\\\" Read Random \\\"dst\\\" Write Point 5 \\\"Camera Position\\\" Float 3 AACAPwAAgD8AAIA/AAAAAA== \\\"Diffuse Multiplier\\\" Float 1 AACAPw== \\\"Specular Power\\\" Float 1 AAAgQQ== \\\"Specular Hardness\\\" Float 1 AADIQg== \\\"Half Lambert\\\" Bool 1 AQ==\"\n  kernelSource \"kernel blinnShader : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> pointPos;  //the input image\\n  Image<eRead, eAccessPoint, eEdgeClamped> normal;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_color;  //the input image\\n  Image<eRead, eAccessRandom, eEdgeClamped> light_pos;  //the input image\\n\\n  Image<eWrite> dst;  //the output image\\n\\n  param:\\n    float3 cameraPosition;\\n    float diffuseMultiplier;\\n    float specularPower;\\n    float specularHardness;\\n    bool halfLambert;\\n\\n  local:\\n    float3 lightDir;\\n    float3 viewDir;\\n\\n  void define() \\{\\n    defineParam(halfLambert,\\\"Half Lambert\\\",bool(1));\\n    defineParam(cameraPosition, \\\"Camera Position\\\", float3(1.0f,1.0f,1.0f));\\n    defineParam(diffuseMultiplier,\\\"Diffuse Multiplier\\\",float(1.0f));\\n    defineParam(specularPower,\\\"Specular Power\\\",float(10.0f));\\n    defineParam(specularHardness,\\\"Specular Hardness\\\",float(100.0f));\\n  \\}\\n\\n  void init() \\{\\n  \\}\\n\\n  void process() \\{\\n\\n    SampleType(dst) sampleBase(0.0f);\\n\\n    float newVal = 0;\\n    for(int j = 0; j < light_pos.bounds.y2; j++) \\{\\n      for(int i = 0; i < light_pos.bounds.x2; i++) \\{\\n        if (light_color(i,j).w == 1) \\{        \\n\\n        lightDir = (float3(light_pos(i,j).x,light_pos(i,j).y,light_pos(i,j).z)-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        float distance = length(lightDir);\\n        lightDir = normalize(lightDir);\\n        distance = distance * distance;\\n\\n        viewDir = (cameraPosition-float3(pointPos(0),pointPos(1),pointPos(2)));\\n        viewDir = normalize(viewDir);\\n\\n\\n        //Calculating Diffuse\\n        float NdotL = dot(float3(normal(0),normal(1),normal(2)),lightDir);\\n        if (halfLambert) \\{      \\n           NdotL = NdotL * 0.5 + 0.5; //Added option for half lambert\\n         \\}\\n        else\\n        \\{\\n        NdotL = min(1.0f,max(0.0f,NdotL));\\n        \\}\\n\\n        float diffuse = NdotL * (light_pos(i,j).w*diffuseMultiplier) / distance;\\n\\n\\n        //Calculating Specular\\n        float3 H = normalize(lightDir+viewDir);\\n        float NdotH = dot(float3(normal(0),normal(1),normal(2)),H);\\n        float intensity = pow(NdotH,specularHardness);\\n        float specular = intensity * specularPower / distance;\\n\\n\\n        SampleType(dst) sample(0.0f);\\n        sample.x = max(0.0f,(diffuse+specular) * light_color(i,j).x);\\n        sample.y =  max(0.0f,(diffuse+specular) * light_color(i,j).y);\\n        sample.z =  max(0.0f, (diffuse+specular) * light_color(i,j).z);\\n        sampleBase += sample;\\n        \\}\\n      \\}\\n    \\}\\n\\n    dst() = sampleBase+float4(0,0,0,pointPos(3)); //Reaplying Alpha\\n   \\}\\n\\};\"\n  useGPUIfAvailable false\n  vectorize false\n  rebuild \"\"\n  \"blinnShader_Camera Position\" {{parent.Camera1.world_matrix.3} {parent.Camera1.world_matrix.7} {parent.Camera1.world_matrix.11}}\n  \"blinnShader_Diffuse Multiplier\" 1.415\n  \"blinnShader_Specular Power\" 15.15\n  \"blinnShader_Specular Hardness\" 8.5\n  rebuild_finalise \"\"\n  name BlinkScript8\n  selected true\n  xpos -186\n  ypos 575\n }\nset N4e00f9b0 [stack 0]\n Premult {\n  name Premult1\n  xpos -186\n  ypos 718\n }\n Output {\n  name Output1\n  xpos -186\n  ypos 785\n }\npush $N4e00f9b0\nend_group\nPostageStamp {\n name PostageStamp1\n selected true\n xpos 513\n ypos 1240\n postage_stamp true\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_SSMesh_demo.nk",
    "content": "Root {\n inputs 0\n mapsize {0.03420523139 0.03513513514}\n frame 77\n format \"1280 720 0 0 1280 720 1 HD_720\"\n}\nBackdropNode {\n inputs 0\n name BackdropNode11\n tile_color 0x2a2a4bff\n label \"work with stabilized UV\"\n note_font_size 42\n xpos -1279\n ypos 1707\n bdwidth 2923\n bdheight 1592\n z_order 9\n}\nBackdropNode {\n inputs 0\n name BackdropNode15\n tile_color 0x2a2a4bff\n label \"use focus region\"\n note_font_size 42\n xpos -1272\n ypos 3537\n bdwidth 2905\n bdheight 1080\n z_order 9\n}\nBackdropNode {\n inputs 0\n name BackdropNode5\n tile_color 0x2a2a4bff\n label \"Data type supported\"\n note_font_size 42\n xpos -1273\n ypos -845\n bdwidth 2905\n bdheight 1080\n z_order 9\n}\nBackdropNode {\n inputs 0\n name BackdropNode8\n tile_color 0x2a2a4bff\n label \"distance clip\"\n note_font_size 42\n xpos -1272\n ypos 388\n bdwidth 2905\n bdheight 1080\n z_order 9\n}\nBackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x7171c600\n label \"render with position world space\"\n note_font_size 42\n xpos -1112\n ypos -552\n bdwidth 606\n bdheight 615\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode10\n tile_color 0x7171c600\n label \"work with stabilized UV\\n(texturing / painting / mask)\"\n note_font_size 42\n xpos 151\n ypos 1847\n bdwidth 970\n bdheight 1257\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode14\n tile_color 0x7171c600\n note_font_size 42\n xpos -1114\n ypos 3717\n bdwidth 630\n bdheight 753\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n tile_color 0x7171c600\n label \"render with position camera space\"\n note_font_size 42\n xpos -445\n ypos -549\n bdwidth 599\n bdheight 609\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode3\n tile_color 0x7171c600\n label \"render with zdepth\\n(normalized far=0, scanlineRender)\"\n note_font_size 42\n xpos 224\n ypos -548\n bdwidth 599\n bdheight 606\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0x7171c600\n label \"render with deep / depth (direct)\"\n note_font_size 42\n xpos 907\n ypos -552\n bdwidth 599\n bdheight 606\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode6\n tile_color 0x7171c600\n label \"distance clip\\n(with color clipped)\"\n note_font_size 42\n xpos -1120\n ypos 657\n bdwidth 606\n bdheight 615\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode7\n tile_color 0x7171c600\n label \"distance clip\\n(without color clipped)\"\n note_font_size 42\n xpos -415\n ypos 658\n bdwidth 606\n bdheight 615\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode9\n tile_color 0x7171c600\n label \"work with stabilized UV\\n(texturing / painting / mask)\"\n note_font_size 42\n xpos -1118\n ypos 1839\n bdwidth 987\n bdheight 1243\n z_order 10\n}\nBackdropNode {\n inputs 0\n name BackdropNode12\n tile_color 0x373760ff\n label \"Do Texture work here\"\n note_font_size 42\n xpos -888\n ypos 2362\n bdwidth 408\n bdheight 311\n z_order 11\n}\nBackdropNode {\n inputs 0\n name BackdropNode13\n tile_color 0x373760ff\n label \"Do Texture work here\"\n note_font_size 42\n xpos 421\n ypos 2328\n bdwidth 397\n bdheight 345\n z_order 11\n}\nGroup {\n inputs 0\n name render_with_pworld\n xpos -816\n ypos -369\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N81983f90 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N81983f90\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N8198ce40 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N8198f260 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N8198f260\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N8198ce40\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\nadd_layer {pworld pworld.red pworld.green pworld.blue pworld.alpha}\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -331\n }\nend_group\nGroup {\n name SSMesh8\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -816\n ypos -202\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera2.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera2.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera2.win_translate} {Camera2.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera2.win_scale} {Camera2.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera2.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N6a09e790 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N5a77e6c0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N5022cf20 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N831fb820 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N831832b0 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N831832b0\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N831fb820\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N5022cf20\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N5a492f40 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix}}\n      {{Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix}}\n      {{Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix}}\n      {{Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix} {Camera2.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N5a492f40\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N5a4a2a00 [stack 0]\npush $N6a09e790\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N6a5a4250 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N6a5a4250\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N5a77e6c0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N5a4a2a00\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N50253b80 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N4a72f9f0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N4a72f9f0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N50253b80\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera2\n xpos -983\n ypos -209\n}\nScene {\n inputs 2\n name Scene1\n xpos -806\n ypos -68\n}\nDot {\n name Dot1\n xpos -782\n ypos 119\n}\nGroup {\n inputs 0\n name render_with_pcam\n xpos -157\n ypos -375\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N818864f0 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N818864f0\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N7ed45e80 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N7ed48200 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N7ed48200\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N7ed45e80\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\nadd_layer {pcam pcam.red pcam.green pcam.blue pcam.alpha}\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pcam\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Add {\n  channels pcam\n  value {{-Camera1.world_matrix.3} {-Camera1.world_matrix.7} {-Camera1.world_matrix.11} {curve}}\n  name Add1\n  xpos 406\n  ypos -351\n }\n ColorMatrix {\n  channels pcam\n  matrix {\n      {{Camera1.world_matrix.0} {Camera1.world_matrix.1} {Camera1.world_matrix.2}}\n      {{Camera1.world_matrix.4} {Camera1.world_matrix.5} {Camera1.world_matrix.6}}\n      {{Camera1.world_matrix.8} {Camera1.world_matrix.9} {Camera1.world_matrix.10}}\n    }\n  invert true\n  name ColorMatrix1\n  xpos 406\n  ypos -274\n }\n Expression {\n  channel2 {-pcam.red -pcam.green pcam.blue pcam.alpha}\n  expr2 abs(pcam.blue)\n  name Expression1\n  selected true\n  xpos 406\n  ypos -186\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -65\n }\nend_group\nGroup {\n name SSMesh9\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -157\n ypos -205\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera1.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera1.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera1.win_translate} {Camera1.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera1.win_scale} {Camera1.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera1.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n data_type \"position (camera space)\"\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N4a7cfcf0 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N4a7d21b0 [stack 0]\n Shuffle {\n  in pcam\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N5a4b8090 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N5a476310 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N4a7e0940 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N4a7e0940\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N5a476310\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N5a4b8090\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N4a42c6c0 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix}}\n      {{Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix}}\n      {{Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix}}\n      {{Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix} {Camera1.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N4a42c6c0\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N502bb410 [stack 0]\npush $N4a7cfcf0\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N501416a0 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N501416a0\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N4a7d21b0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N502bb410\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3a504b70 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3a52e0e0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3a52e0e0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N3a504b70\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera1\n xpos -326\n ypos -217\n}\nScene {\n inputs 2\n name Scene2\n xpos -147\n ypos -76\n}\nDot {\n name Dot2\n xpos -123\n ypos 114\n}\nGroup {\n inputs 0\n name render_with_zdepth_normalized\n xpos 512\n ypos -374\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N81a16c80 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N81a16c80\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N81a1fb30 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N81a21eb0 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N81a21eb0\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N81a1fb30\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -296\n }\nend_group\nGroup {\n name SSMesh2\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos 512\n ypos -209\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera3.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera3.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera3.win_translate} {Camera3.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera3.win_scale} {Camera3.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera3.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n data_type \"depth (normalized far=0)\"\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N3a443300 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N3a437660 [stack 0]\n Shuffle {\n  in depth\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N5029f720 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N502a1be0 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N502cf910 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N502cf910\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N502a1be0\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N5029f720\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N3a46d740 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix}}\n      {{Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix}}\n      {{Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix}}\n      {{Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix} {Camera3.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N3a46d740\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N3a5d9ce0 [stack 0]\npush $N3a443300\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N5a4d4730 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N5a4d4730\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N3a437660\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N3a5d9ce0\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3a5b5740 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3a5ed430 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3a5ed430\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N3a5b5740\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera3\n xpos 342\n ypos -217\n}\nScene {\n inputs 2\n name Scene3\n xpos 522\n ypos -75\n}\nDot {\n name Dot3\n xpos 546\n ypos 114\n}\nGroup {\n inputs 0\n name render_with_deep\n xpos 1191\n ypos -374\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N81bc0180 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N81bc0180\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N81bc9030 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N81bcb3b0 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N81bcb3b0\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N81bc9030\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n DeepFromImage {\n  name DeepFromImage1\n  selected true\n  xpos 406\n  ypos -351\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -215\n }\nend_group\nDeepToImage {\n name DeepToImage1\n xpos 1191\n ypos -265\n}\nGroup {\n name SSMesh4\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos 1191\n ypos -207\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera4.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera4.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera4.win_translate} {Camera4.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera4.win_scale} {Camera4.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera4.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n data_type \"deep / depth (direct)\"\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N3e819330 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N3e81b8f0 [stack 0]\n Shuffle {\n  in deep\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N3e82a040 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N3e82c500 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N3e82e9c0 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N3e82e9c0\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N3e82c500\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N3e82a040\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N3a63aad0 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix}}\n      {{Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix}}\n      {{Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix}}\n      {{Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix} {Camera4.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N3a63aad0\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N3a669ca0 [stack 0]\npush $N3e819330\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N3a66c160 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N3a66c160\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N3e81b8f0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N3a669ca0\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3a6ec9e0 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3e919d00 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3e919d00\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N3a6ec9e0\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera4\n xpos 1021\n ypos -217\n}\nScene {\n inputs 2\n name Scene4\n xpos 1201\n ypos -75\n}\nDot {\n name Dot4\n xpos 1225\n ypos 114\n}\nGroup {\n inputs 0\n name render_with_pworld1\n xpos -824\n ypos 836\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N81f00770 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N81f00770\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N81f09620 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N81f0b9a0 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N81f0b9a0\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N81f09620\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -331\n }\nend_group\nGroup {\n name SSMesh1\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -824\n ypos 1008\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera5.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera5.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera5.win_translate} {Camera5.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera5.win_scale} {Camera5.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera5.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n drange_near 14\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 17\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N5a5ad900 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N5a5afdc0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N5a6112f0 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N5a613520 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N5a6159e0 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N5a6159e0\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N5a613520\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N5a6112f0\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N6a7cda20 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix}}\n      {{Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix}}\n      {{Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix}}\n      {{Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix} {Camera5.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N6a7cda20\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N50059f30 [stack 0]\npush $N5a5ad900\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N5a5d2510 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N5a5d2510\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N5a5afdc0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N50059f30\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N5a6c1bb0 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N5a6dc200 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N5a6dc200\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N5a6c1bb0\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {-23.73355293 6.752248287 -3.158116341}\n rotate {30.63627052 -44.94124796 0}\n focal 24\n name Camera5\n xpos -993\n ypos 999\n}\nScene {\n inputs 2\n name Scene5\n xpos -814\n ypos 1141\n}\nDot {\n name Dot5\n xpos -790\n ypos 1328\n}\nGroup {\n inputs 0\n name render_with_pworld2\n xpos -119\n ypos 837\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N7ee71cb0 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N7ee71cb0\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N7ee7ab60 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N7ee7cee0 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N7ee7cee0\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N7ee7ab60\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -331\n }\nend_group\nGroup {\n name SSMesh6\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -119\n ypos 1004\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera6.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera6.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera6.win_translate} {Camera6.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera6.win_scale} {Camera6.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera6.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.1\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n drange_near 14\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 17\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N82af5df0 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N5a449eb0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N4a722520 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N5a74dc00 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N4a753940 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N4a753940\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N5a74dc00\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N4a722520\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N50100680 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix}}\n      {{Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix}}\n      {{Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix}}\n      {{Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix} {Camera6.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N50100680\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N50018fb0 [stack 0]\npush $N82af5df0\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N6a0cc380 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N6a0cc380\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N5a449eb0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N50018fb0\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N500a2570 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N500cbae0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N500cbae0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N500a2570\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nCamera2 {\n inputs 0\n translate {-23.73355293 6.752248287 -3.158116341}\n rotate {30.63627052 -44.94124796 0}\n focal 24\n name Camera6\n xpos -291\n ypos 999\n}\nScene {\n inputs 2\n name Scene6\n xpos -109\n ypos 1142\n}\nDot {\n name Dot6\n xpos -85\n ypos 1329\n}\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera7\n xpos -1083\n ypos 2091\n}\nDot {\n name Dot7\n xpos -1059\n ypos 2798\n}\nGroup {\n inputs 0\n name render_with_pworld3\n xpos -400\n ypos 1992\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  selected true\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N829b9130 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N829b9130\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N829c1fe0 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N829c4360 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N829c4360\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N829c1fe0\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -331\n }\nend_group\nDot {\n name Dot14\n xpos -366\n ypos 2120\n}\nset N82b0bfa0 [stack 0]\nGroup {\n name SSMesh5\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -992\n ypos 2103\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera7.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera7.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera7.win_translate} {Camera7.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera7.win_scale} {Camera7.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera7.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.5\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\"}\n uv_ref_frame 64\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N5012ddb0 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N831ba3d0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N3e85ff50 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N3e862410 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N3e8648d0 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N3e8648d0\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N3e862410\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N3e85ff50\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N3e891b90 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n  uv_stabilize true\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix}}\n      {{Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix}}\n      {{Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix}}\n      {{Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix} {Camera7.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N3e891b90\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N3e8b5b60 [stack 0]\npush $N5012ddb0\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N3e8b8020 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N3e8b8020\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N831ba3d0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N3e8b5b60\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3e977a90 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3e9d65e0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3e9d65e0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N3e977a90\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nDot {\n name Dot17\n xpos -958\n ypos 2214\n}\nset N82a638e0 [stack 0]\npush 0\nScanlineRender {\n inputs 2\n conservative_shader_sampling false\n projection_mode uv\n motion_vectors_type off\n MB_channel none\n name ScanlineRender1\n xpos -869\n ypos 2211\n}\nFrameHold {\n first_frame 64\n name FrameHold1\n xpos -869\n ypos 2278\n}\nDot {\n name Dot8\n xpos -835\n ypos 2485\n}\nset N82a73560 [stack 0]\nShuffle {\n red black\n green black\n blue black\n alpha black\n name Shuffle1\n xpos -759\n ypos 2482\n}\nRoto {\n output alpha\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier1 512 bezier\n     {{cc\n       {f 8192}\n       {p\n        {x41680000 x3fc00000}\n        {x43ea8000 x43c30000}\n        {xc1680000 xbfc00000}\n        {xc1100000 x41280000}\n        {x43dec000 x43bc4000}\n        {x41100000 xc1280000}\n        {xc0200000 x41500000}\n        {x43fec000 x439c8000}\n        {x40200000 xc1500000}\n        {x41080000 x40a00000}\n        {x43f88000 x43800000}\n        {xc1080000 xc0a00000}\n        {xc1580000 x40d00000}\n        {x43f67000 x43698001}\n        {x41580000 xc0d00000}\n        {xc0900000 xc1a80000}\n        {x440d2000 x43844000}\n        {x40900000 x41a80000}\n        {x41200000 xc1880000}\n        {x440ae000 x43a78000}\n        {xc1200000 x41880000}\n        {x41480000 xc0c00000}\n        {x44006000 x43bc0000}\n        {xc1480000 x40c00000}}}\n      {cc\n       {f 8192}\n       {p\n        {x41680000 x3fc00000}\n        {}\n        {xc1680000 xbfc00000}\n        {xc1100000 x41280000}\n        {xc1ee6340 xc08c30c0}\n        {x41100000 xc1280000}\n        {xc0200000 x41500000}\n        {xc21bed08 xc0efe200}\n        {x40200000 xc1500000}\n        {x41080000 x40a00000}\n        {xc210b930 x3f98f900}\n        {xc1080000 xc0a00000}\n        {xc1580000 x40d00000}\n        {xc123f5c0 xc1aa44d8}\n        {x41580000 xc0d00000}\n        {xc0900000 xc1a80000}\n        {x41dc7300 xc0bcf6e0}\n        {x40900000 x41a80000}\n        {x41200000 xc1880000}\n        {x41db6220 x41810c50}\n        {xc1200000 x41880000}\n        {x41480000 xc0c00000}\n        {x418ba580 x41b91720}\n        {xc1480000 x40c00000}}}}\n     {t x43fd0000 x439e4000}\n     {a osw x41200000 osf 0 str 1 spx x44200000 spy x43b40000 sb 1 ltn x42840000 ltm x42840000 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 66\n lifetime_end 66\n motionblur_shutter_offset_type centred\n source_black_outside true\n name Roto1\n xpos -759\n ypos 2561\n}\npush $N82a73560\nShuffleCopy {\n inputs 2\n in alpha\n red red\n out mask\n name ShuffleCopy1\n xpos -869\n ypos 2565\n}\npush $N82a638e0\nFrameHold {\n first_frame 64\n name FrameHold3\n xpos -992\n ypos 2288\n}\nDot {\n name Dot18\n xpos -958\n ypos 2741\n}\nApplyMaterial {\n inputs 2\n name ApplyMaterial1\n xpos -869\n ypos 2738\n}\nReformat {\n inputs 0\n type \"to box\"\n box_width 1280\n box_height 720\n box_fixed true\n name Reformat1\n xpos -759\n ypos 2795\n}\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender2\n xpos -869\n ypos 2795\n}\nPremult {\n channels rgba\n alpha mask.a\n name Premult1\n xpos -869\n ypos 2875\n}\npush $N82b0bfa0\nGrade {\n inputs 1+1\n white 0.14\n name Grade1\n xpos -400\n ypos 2879\n}\nDot {\n name Dot15\n xpos -366\n ypos 3135\n}\nCamera2 {\n inputs 0\n translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n focal 24\n name Camera8\n xpos 211\n ypos 2099\n}\nDot {\n name Dot9\n xpos 235\n ypos 2789\n}\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n xpos 599\n ypos 2425\n}\nTransform {\n translate {-70 -60}\n scale 0.3\n center {640 360}\n name Transform1\n xpos 599\n ypos 2518\n}\nDot {\n name Dot10\n xpos 633\n ypos 2558\n}\nset N82cc6220 [stack 0]\nDot {\n name Dot11\n xpos 633\n ypos 2638\n}\npush $N82cc6220\nGroup {\n inputs 0\n name render_with_pworld4\n xpos 903\n ypos 1995\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 -23.73355293 x50 1.828465939 x100 10.79810143} {curve x1 6.752248287 x50 13.82691669 x100 25.23773003} {curve x1 -3.158116341 x50 5.475767136 x100 -12.79232216}}\n  rotate {{curve x1 30.63627052 x50 14.22963619 x100 -23.22279344} {curve x1 -44.94124796 x50 19.70681696 x100 76.6501109} {curve x1 0 x50 27.42004885 x100 13.36756642}}\n  focal 24\n  name Camera1\n  xpos 241\n  ypos -567\n }\n Dot {\n  name Dot2\n  xpos 351\n  ypos -543\n }\nset N82cd9c60 [stack 0]\n Dot {\n  name Dot3\n  xpos 351\n  ypos -428\n }\npush $N82cd9c60\n CheckerBoard2 {\n  inputs 0\n  name CheckerBoard1\n  xpos 406\n  ypos -928\n }\n Dot {\n  name Dot1\n  xpos 440\n  ypos -814\n }\nset N82ce2b10 [stack 0]\n Dot {\n  name Dot5\n  xpos 553\n  ypos -814\n }\nset N82ce4e90 [stack 0]\n Dot {\n  name Dot4\n  xpos 693\n  ypos -814\n }\n Multiply {\n  channels rgb\n  value {0 1 1 1}\n  name Multiply3\n  xpos 659\n  ypos -756\n }\n Cube {\n  rows 1\n  columns 1\n  separate_faces false\n  translate {-7.849998951 18.14999962 -19.00000191}\n  rotate {0 0 45.93192592}\n  uniform_scale 7\n  name Cube1\n  xpos 659\n  ypos -676\n }\npush $N82ce4e90\n Multiply {\n  channels rgb\n  value {1 0 1 1}\n  name Multiply2\n  xpos 519\n  ypos -750\n }\n Sphere {\n  translate {-15.00000191 16.45000076 -17.79999924}\n  scaling {3.183291435 1 2.618715286}\n  uniform_scale 2\n  name Sphere1\n  xpos 519\n  ypos -670\n }\npush $N82ce2b10\n Multiply {\n  channels rgb\n  value {1 1 0 1}\n  name Multiply1\n  xpos 406\n  ypos -754\n }\n Cylinder {\n  rows 1\n  close_top true\n  close_bottom true\n  translate {-3.149999619 19.64999962 -13.89999866}\n  rotate {52.26493538 0 32.53306187}\n  scaling {1 4.216488838 1}\n  uniform_scale 2\n  name Cylinder1\n  xpos 406\n  ypos -673\n }\n Scene {\n  inputs 4\n  name Scene1\n  xpos 416\n  ypos -567\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 530\n  ypos -431\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 406\n  ypos -431\n }\n Output {\n  name Output1\n  xpos 406\n  ypos -331\n }\nend_group\nDot {\n name Dot12\n xpos 937\n ypos 2123\n}\nset N82d2c920 [stack 0]\nGroup {\n name SSMesh10\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos 309\n ypos 2104\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera8.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera8.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera8.win_translate} {Camera8.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera8.win_scale} {Camera8.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera8.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.5\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 30\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\" +DISABLED}\n focus_region {0 0 1280 720}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\" +DISABLED}\n fregion_ref_frame 1\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE +DISABLED T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE +DISABLED T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" +DISABLED R 0 10000}\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" +DISABLED T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" +DISABLED n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +DISABLED +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\" +DISABLED}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\" +DISABLED}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\"}\n uv_ref_frame 64\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N3eb06b40 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N3eb08ec0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N5a4ecc00 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N4a76bb30 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N3ea89990 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N3ea89990\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N4a76bb30\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N5a4ecc00\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N3ea40e20 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n  uv_stabilize true\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix}}\n      {{Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix}}\n      {{Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix}}\n      {{Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix} {Camera8.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N3ea40e20\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N3ea9cf00 [stack 0]\npush $N3eb06b40\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N3ea9f3c0 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N3ea9f3c0\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N3eb08ec0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N3ea9cf00\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  selected true\n  xpos 724\n  ypos 1714\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3eb93730 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3a702900 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3a702900\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n }\npush $N3eb93730\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nDot {\n name Dot20\n xpos 343\n ypos 2212\n}\nset N82dad460 [stack 0]\npush 0\nScanlineRender {\n inputs 2\n conservative_shader_sampling false\n projection_mode uv\n motion_vectors_type off\n MB_channel none\n name ScanlineRender3\n xpos 453\n ypos 2209\n}\nFrameHold {\n first_frame 64\n name FrameHold2\n xpos 452\n ypos 2278\n}\nMerge2 {\n inputs 2\n name Merge1\n xpos 452\n ypos 2555\n}\nShuffleCopy {\n inputs 2\n in alpha\n red red\n out mask\n name ShuffleCopy3\n xpos 452\n ypos 2635\n}\npush $N82dad460\nFrameHold {\n first_frame 64\n name FrameHold4\n xpos 309\n ypos 2271\n}\nDot {\n name Dot19\n xpos 342\n ypos 2721\n}\nApplyMaterial {\n inputs 2\n name ApplyMaterial2\n xpos 452\n ypos 2718\n}\nReformat {\n inputs 0\n type \"to box\"\n box_width 1280\n box_height 720\n box_fixed true\n name Reformat2\n xpos 580\n ypos 2786\n}\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender4\n xpos 452\n ypos 2786\n}\nPremult {\n channels rgba\n alpha mask.a\n name Premult2\n xpos 452\n ypos 2866\n}\nDot {\n name Dot13\n xpos 486\n ypos 2954\n}\npush $N82d2c920\nMerge2 {\n inputs 2\n name Merge2\n xpos 903\n ypos 2951\n}\nDot {\n name Dot16\n xpos 937\n ypos 3143\n}\nStickyNote {\n inputs 0\n name StickyNote1\n label \"<b>view here to :\\nanimated the crop in SSMesh's focus region\\nor\\nset crop & sample z in SSMesh's focus region</b>\"\n note_font_size 24\n xpos -690\n ypos 3796\n}\nStickyNote {\n inputs 0\n name StickyNote2\n label \"<b>check 3D crop preview in 2D or 3D here after SSMesh\"\n note_font_size 24\n xpos -705\n ypos 4294\n}\nCamera2 {\n inputs 0\n translate {{curve x1 33 x100 62.93263245} {curve x1 26.39999962 x100 34.79999924} {curve x1 34.59999847 x100 11.96562004}}\n rotate {{curve x1 0 x100 -15.51148426} {curve x1 0 x100 46.58225214} {curve x1 0 x100 0.5831401536}}\n focal 30\n name Camera10\n xpos -1029\n ypos 4184\n}\nDot {\n name Dot22\n xpos -901\n ypos 4208\n}\nset N82f0ce40 [stack 0]\nDot {\n name Dot23\n xpos -901\n ypos 4309\n}\npush $N82f0ce40\nGroup {\n inputs 0\n name Group1\n xpos -831\n ypos 3829\n postage_stamp true\n}\n Camera2 {\n  inputs 0\n  translate {{curve x1 33 x100 62.93263245} {curve x1 26.39999962 x100 34.79999924} {curve x1 34.59999847 x100 11.96562004}}\n  rotate {{curve x1 0 x100 -15.51148426} {curve x1 0 x100 46.58225214} {curve x1 0 x100 0.5831401536}}\n  focal 30\n  name Camera1\n  xpos 425\n  ypos -536\n }\n Axis2 {\n  inputs 0\n  translate {37.5 26.25 0}\n  name Axis1\n  xpos 430\n  ypos -734\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {2.679637267 -1.884568013 5.423575904}\n  pivot {-2.679637267 1.884568013 -5.423575904}\n  name GG_Axis984_0009\n  xpos 2805\n  ypos -1508\n }\n CheckerBoard2 {\n  inputs 0\n  format \"512 512 0 0 512 512 1 square_512\"\n  name CheckerBoard1\n  xpos 600\n  ypos -1983\n }\n Shuffle {\n  green black\n  blue black\n  name Shuffle1\n  xpos 600\n  ypos -1820\n }\n HueShift {\n  hue_rotation {{frame*10}}\n  name HueShift1\n  xpos 600\n  ypos -1740\n }\n Dot {\n  name dot_spacer01_984\n  xpos 634\n  ypos -1554\n }\nset N82f3f8c0 [stack 0]\n FrameHold {\n  first_frame 1024\n  name GG_Framehold984_0009\n  xpos 1590\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0009\n  xpos 1590\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0009\n  xpos 1590\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0009\n  xpos 1590\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {-8.874522276 3.548102203 1.948912169}\n  pivot {8.874522276 -3.548102203 -1.948912169}\n  name GG_Axis984_0008\n  xpos 2705\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1070\n  name GG_Framehold984_0008\n  xpos 1480\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0008\n  xpos 1480\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0008\n  xpos 1480\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0008\n  xpos 1480\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {6.313467354 -2.632137413 -1.309742931}\n  pivot {-6.313467354 2.632137413 1.309742931}\n  name GG_Axis984_0007\n  xpos 2605\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1019\n  name GG_Framehold984_0007\n  xpos 1370\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0007\n  xpos 1370\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0007\n  xpos 1370\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0007\n  xpos 1370\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {-13.12676241 -0.4082311155 -1.952071942}\n  pivot {13.12676241 0.4082311155 1.952071942}\n  name GG_Axis984_0006\n  xpos 2505\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1046\n  name GG_Framehold984_0006\n  xpos 1260\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0006\n  xpos 1260\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0006\n  xpos 1260\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0006\n  xpos 1260\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {-6.206141649 -1.363666429 2.6093192}\n  pivot {6.206141649 1.363666429 -2.6093192}\n  name GG_Axis984_0005\n  xpos 2405\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1010\n  name GG_Framehold984_0005\n  xpos 1150\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0005\n  xpos 1150\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0005\n  xpos 1150\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0005\n  xpos 1150\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {3.576542504 2.684284256 2.047008002}\n  pivot {-3.576542504 -2.684284256 -2.047008002}\n  name GG_Axis984_0004\n  xpos 2305\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1056\n  name GG_Framehold984_0004\n  xpos 1040\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0004\n  xpos 1040\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0004\n  xpos 1040\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0004\n  xpos 1040\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {6.259842546 1.604622218 -1.604947836}\n  pivot {-6.259842546 -1.604622218 1.604947836}\n  name GG_Axis984_0003\n  xpos 2205\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1086\n  name GG_Framehold984_0003\n  xpos 930\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0003\n  xpos 930\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0003\n  xpos 930\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0003\n  xpos 930\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {-1.711193772 1.393878945 0.5224952546}\n  pivot {1.711193772 -1.393878945 -0.5224952546}\n  name GG_Axis984_0002\n  xpos 2105\n  ypos -1508\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1074\n  name GG_Framehold984_0002\n  xpos 820\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0002\n  xpos 820\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0002\n  xpos 820\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0002\n  xpos 820\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  translate {-0.5500000119 -2.650000095 0.1599481702}\n  pivot {-0.6229833555 0.8497041464 -0.1599481756}\n  name GG_Axis984_0001\n  xpos 1998\n  ypos -1514\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1051\n  name GG_Framehold984_0001\n  xpos 710\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0001\n  xpos 710\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0001\n  xpos 710\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0001\n  xpos 710\n  ypos -1093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  name GG_Axis984_0000\n  xpos 1902\n  ypos -1505\n }\npush $N82f3f8c0\n FrameHold {\n  first_frame 1019\n  name GG_Framehold984_0000\n  xpos 600\n  ypos -1480\n }\n Clamp {\n  name GG_Clamp984_0000\n  xpos 600\n  ypos -1392\n }\n Sphere {\n  name GG_Sphere984_0000\n  xpos 600\n  ypos -1304\n }\n TransformGeo {\n  inputs 2\n  name GG_TransformGeo984_0000\n  xpos 600\n  ypos -1093\n }\n MergeGeo {\n  inputs 10\n  display textured\n  name GG_MergeGeo_984\n  xpos 600\n  ypos -793\n }\n TransformGeo {\n  inputs 2\n  name TransformGeo1\n  xpos 600\n  ypos -713\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width 1280\n  box_height 720\n  box_fixed true\n  name Reformat1\n  xpos 747\n  ypos -515\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  motion_vectors_type off\n  MB_channel none\n  output_shader_vectors true\n  P_channel pworld\n  name ScanlineRender1\n  xpos 600\n  ypos -515\n }\n Output {\n  name Output1\n  xpos 600\n  ypos -415\n }\nend_group\nGroup {\n name SSMesh7\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n xpos -831\n ypos 4024\n addUserKnob {20 tab_general l General}\n addUserKnob {22 set_link l \"link to selected camera\" t \"Click to link selected camera by expression. This tool will get the focal, haperture and world matrix from selected camera to generate\" T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\nroot = getLevel()\\nthisGRP = nuke.thisGroup()\\n\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\ndefaultKnobs = \\{\\n\\t\\t\\t'world matrix' : 'world_matrix',\\n\\t\\t\\t'focal length' : 'focal',\\n\\t\\t\\t'horiz aperture' : 'haperture',\\n\\t\\t\\t'window translate' : 'win_translate',\\n\\t\\t\\t'window scale' : 'win_scale',\\n\\t\\t\\t'window roll' : 'winroll'\\n\\t\\t\\t\\}\\nselNodeKnobs = \\[]\\nmissingKnob = \\[]\\n\\ntry :\\n\\twith root :\\n\\t\\tselNode = nuke.selectedNode()\\n\\n\\tfor knob in selNode.knobs() :\\n\\t\\tselNodeKnobs.append( knob )\\n\\n\\tselNodeKnobs.sort()\\n\\n\\tfor key,value in defaultKnobs.items() :\\n\\t\\tif value not in selNodeKnobs :\\n\\t\\t\\tmissingKnob.append( key )\\n\\n\\tif not len(missingKnob) :\\n\\t\\twith root :\\n\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.world_matrix'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.focal'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.haperture'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.win_translate'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.win_scale'.format(CAMnode))\\n\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.winroll'.format(CAMnode))\\n\\telse :\\n\\t\\tp = nuke.Panel('Select knobs :')\\n\\t\\tp.addBooleanCheckBox( '<b>Unable to find the default knobs. Please use the pulldown menu below to define the knob manually.</b>' , False)\\n\\t\\tfor rk in missingKnob :\\n\\t\\t\\tp.addEnumerationPulldown( rk, ' '.join( selNodeKnobs ) )\\n\\n\\t\\tif p.show() :\\n\\t\\t\\ttry :\\n\\t\\t\\t\\tfor key,value in defaultKnobs.items() :\\n\\t\\t\\t\\t\\tif p.value( key ) != None :\\n\\t\\t\\t\\t\\t\\tdefaultKnobs\\[key] = p.value( key )\\n\\t\\t\\texcept :\\n\\t\\t\\t\\tpass\\n\\n\\t\\t\\twith root :\\n\\t\\t\\t\\tCAMnode = selNode.name()\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[0]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['world matrix']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[1]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['focal length']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[2]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['horiz aperture']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[3]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window translate']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[4]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window scale']))\\n\\t\\t\\t\\tthisGRP\\[mainKnobs\\[5]].setExpression('\\{0\\}.\\{1\\}'.format(CAMnode, defaultKnobs\\['window roll']))\\nexcept :\\n\\tnuke.message('no node selected.')\" +STARTLINE}\n addUserKnob {22 remove_link l \"remove linked expression\" t \"Remove the linked camera expression but won't reset any data.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nmainKnobs = \\['world_matrix','cam_focal','cam_haperture','cam_win_translate','cam_win_scale','cam_winroll']\\n\\nfor knob in thisGRP.knobs() :\\n\\tif mainKnobs.count(knob) != 0 :\\n\\t\\t thisGRP\\[knob].clearAnimated()\"}\n addUserKnob {20 cam_data_grp l \"CAMERA DATA\" n 1}\n cam_data_grp 0\n addUserKnob {7 cam_focal l \"focal length\" R 5 100}\n cam_focal {{Camera10.focal}}\n addUserKnob {7 cam_haperture l \"horiz aperture\" R 0.1 50}\n cam_haperture {{Camera10.haperture}}\n addUserKnob {30 cam_win_translate l \"window translate\"}\n cam_win_translate {{Camera10.win_translate} {Camera10.win_translate}}\n addUserKnob {30 cam_win_scale l \"window scale\"}\n cam_win_scale {{Camera10.win_scale} {Camera10.win_scale}}\n addUserKnob {7 cam_winroll l \"window roll\" R -45 45}\n cam_winroll {{Camera10.winroll}}\n addUserKnob {41 world_matrix l \"world matrix\" T cam_data.matrix}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 spacer_5 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_basic l \"<b>BASIC SETTING</b>\"}\n addUserKnob {4 display l \"3D display\" t \"How to draw in 3D preview. The viewer can override this setting.\" M {off wireframe soild solid+wireframe textured textured+wireframe \"\" \"\" \"\"}}\n display textured\n addUserKnob {4 data_type l \"data type\" t \"data type\\nUsing one of these data to convert into 3D mesh.\\n\\nPosition\\nSupported world space or camera space position data.\\n\\nDepth (normalized far=0)\\nNormalized depth data, which is same as depth data output by ScanlineRender.\\n\\nDeep / Depth (direct)\\nRaw camera depth data. If using deep, need to convert DeepToImage first, and selected deep channel on 'channels' knob.\" M {\"position (world space)\" \"position (camera space)\" \"depth (normalized far=0)\" \"deep / depth (direct)\" \"\" \"\" \"\"}}\n addUserKnob {41 channels t \"Select which channel represented on selected data type.\" T shuffle_data.in}\n addUserKnob {6 unpm l unpremult t \"3D data pass should be unpremult with alpha before process.\" -STARTLINE}\n unpm true\n addUserKnob {26 spacer_4 l \"\" +STARTLINE T <br>}\n addUserKnob {7 lod l \"mesh LOD\" t \"Level of Details\\n\\nIf this value set to 1.0, subdivision of the mesh  1:1 to the data available in the resolution. Which mean 1 face of the mesh equal to 1 pixel.\\n\\nIf this value set to 1.0, it will slow down the render process.\\n\\nHighly recommend to use 0.1 - 0.5 if high resolution mesh details is not concern.\"}\n lod 0.5\n addUserKnob {41 filter_size l \"filter size\" T DisplaceGeo.filter_size}\n addUserKnob {41 filter T DisplaceGeo.filter}\n addUserKnob {26 spacer_2 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_drange l \"\" +STARTLINE T \"distance range\"}\n addUserKnob {7 drange_near l near t \"clip the mesh in the min value in terms of depth.\" R 0 10000}\n addUserKnob {7 drange_far l far t \"clip the mesh in the max value in terms of depth.\" R 0 10000}\n drange_far 40\n addUserKnob {6 clip_color l \"distance clip on color\" t \"Apply the distance clip on colored texture.\" +STARTLINE}\n clip_color true\n addUserKnob {26 spacer_3 l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_export l <b>EXPORT</b>}\n addUserKnob {41 file t \"only support *.abc file extension (alembric) .\" T WriteGeo.file}\n addUserKnob {22 export_geo l \"Export Geo\" T \"def exportGeo() :\\n\\twgeo = nuke.toNode('WriteGeo')\\n\\twgeo\\['Execute'].execute()\\n\\nthisGRP = nuke.thisGroup()\\nfilepath = thisGRP\\['file'].getValue()\\n\\nif not len(filepath) :\\n\\tnuke.message('file path is empty. Process denied.')\\nelif not filepath.split('.')\\[-1:]\\[0].lower() == 'abc' :\\n\\tif nuke.ask('File extension invalue. Only support render <font color=orange>*.abc</font> . Do you want this tool to fix it and process ?') :\\n\\t\\tthisGRP\\['file'].setValue( thisGRP\\['file'].getValue() + '.abc' )\\n\\t\\texportGeo()\\nelse :\\n\\texportGeo()\" +STARTLINE}\n addUserKnob {22 import_geo l \"Import Geo\" -STARTLINE T \"prefx = nuke.toNode('preferences')\\['GridWidth'].value()\\nthisGRP = nuke.thisGroup()\\ngoStore = nuke.toNode('store')\\ngoStore\\['fn'].execute()\\n\\nroot = getLevel()\\n\\nwith root :\\n\\trgeo = nuke.nodes.ReadGeo2( file=thisGRP\\['file'].getValue() )\\n\\trgeo.setXYpos( int( thisGRP\\['xpos'].getValue() + prefx ) , int( thisGRP\\['ypos'].getValue() ) )\"}\n addUserKnob {20 tab_misc l Miscellaneous}\n addUserKnob {26 title_focus_region l \"<b>FOCUS REGION</b>\"}\n addUserKnob {41 use_focus_region l \"use focus region\" t \"use focus region to generate SSMesh in specific area. Save resources and possible to work with high LOD mesh.\" T menu2.use_focus_region}\n addUserKnob {15 focus_region l \"focus region\" t \"Set focus region in screen space. These values are 2D coordinate.\"}\n focus_region {{curve x1 233.5207062 497.8091125 494.2871094 490.5583496 486.6227112 482.4801941 478.1316223 473.5766907 468.8161316 463.8508301 458.6824646 453.3103333 447.7382507 441.9660339 435.9968567 429.8322449 423.4750671 416.9274902 410.1922913 403.2732849 396.1737671 388.8970032 381.447998 373.8299866 366.0475769 358.1063843 350.0110779 341.7667236 333.3794861 324.854187 316.1987 307.4177246 298.5187073 289.5086365 280.3937378 271.182312 261.8818359 252.4991913 243.0432434 233.5207062 223.9414215 214.3127136 204.6440887 194.9425507 185.2186279 175.4802246 165.7357635 155.9950867 146.2666626 136.5593872 126.8825073 117.2451859 107.6561279 98.12382507 88.65762329 79.26589203 69.95688629 60.73909378 51.62180328 42.61193466 33.71819687 24.9479351 16.30883789 7.808671951 -0.5459617376 -8.74853611 -16.79135513 -24.66836739 -32.37460327 -39.90288162 -47.24801636 -54.40490723 -61.36901093 -68.13480377 -74.69895935 -81.05633545 -87.20454407 -93.13911438 -98.85650635 -104.3555374 -109.6317444 -114.6851883 -119.5113983 -124.1103897 -128.480423 -132.6210938 -136.5300446 -140.2077789 -143.6538849 -146.8681793 -149.8506775 -152.6027069 -155.123764 -157.4156494 -159.4779816 -161.3143463 -162.9235687 -164.3097229 -165.4726562 -166.4156647} {curve x1 157.4579773 214.1690063 213.2086792 212.1981964 211.1391754 210.0319061 208.8781433 207.6791077 206.4360809 205.1501007 203.82341 202.4568634 201.0526886 199.6125793 198.1383514 196.6322174 195.0958099 193.5317688 191.9420624 190.3292542 188.6951599 187.0426941 185.3750763 183.6937408 182.0026703 180.303833 178.6006622 176.8956146 175.1918335 173.4927673 171.8010559 170.1205902 168.4539642 166.8043671 165.1757507 163.5709686 161.9935608 160.4465332 158.9336548 157.4579773 156.023468 154.6329651 153.2897186 151.9969788 150.758667 149.5775299 148.4563141 147.3991089 146.408371 145.4872284 144.6382141 143.8647461 143.1698608 142.5553131 142.023819 141.5784149 141.220871 140.9538727 140.7787323 140.6987762 140.7147522 140.8284912 141.041687 141.3562775 141.7730255 142.2937469 142.9190521 143.6502533 144.4872284 145.4320679 146.4837036 147.6437683 148.9120483 150.2889557 151.773407 153.3664703 155.0676575 156.8766632 158.7926178 160.815033 162.9429016 165.1763611 167.5137024 169.9541779 172.4965057 175.1397552 177.8824921 180.7233276 183.661087 186.693924 189.8207245 193.0394592 196.3488007 199.7467194 203.2320709 206.8022766 210.4560699 214.1911774 218.0061188 221.8986664} {curve x1 407.3132629 632.9698486 630.8667603 628.5549316 626.0327759 623.298645 620.3521118 617.1916504 613.8161621 610.2250366 606.418457 602.3939209 598.1537476 593.696228 589.0222168 584.1320801 579.0261841 573.7053833 568.1705322 562.423645 556.4656982 550.298584 543.9248047 537.3465576 530.565918 523.5864868 516.4117432 509.044281 501.4887695 493.7480164 485.8283691 477.7326355 469.4665833 461.0358276 452.4449463 443.7006226 434.809082 425.776001 416.6088257 407.3132629 397.8980103 388.3695374 378.7364807 369.005188 359.1854858 349.2848511 339.3110352 329.274231 319.1820679 309.0441284 298.8691711 288.6670837 278.4466553 268.217041 257.9882812 247.7691956 237.5692902 227.3978271 217.2652893 207.1797485 197.1512299 187.1884918 177.3011169 167.4981384 157.7879639 148.1790771 138.6807556 129.3011169 120.0474625 110.9286194 101.9519806 93.12505341 84.45433807 75.9477005 67.61076355 59.4508934 51.47251511 43.68294525 36.08748627 28.6897316 21.49653053 14.50977325 7.736446857 1.178515553 -5.159889221 -11.27678871 -17.16728783 -22.83028221 -28.26292801 -33.4636879 -38.43037415 -43.16260147 -47.65843582 -51.91768265 -55.93866348 -59.72333908 -63.26909256 -66.57868195 -69.65059662 -72.48701477} {curve x1 323.3641968 354.7592773 354.8156738 354.8145752 354.7564697 354.6416931 354.4703369 354.2427063 353.9594116 353.6203003 353.2267151 352.7784119 352.2769165 351.7224426 351.1160278 350.4587708 349.7514648 348.9953613 348.1914368 347.3412781 346.4457703 345.5065613 344.5258484 343.5041504 342.4444885 341.3478394 340.2164001 339.0519409 337.8566895 336.6329346 335.3825684 334.1089478 332.813446 331.4989624 330.1681519 328.8237305 327.4683228 326.1046753 324.7355957 323.3641968 321.9935608 320.6267395 319.2663574 317.9155884 316.5777893 315.2562561 313.9532776 312.6731567 311.4185791 310.1926575 308.9984131 307.8394165 306.7189636 305.6393738 304.6039734 303.6160889 302.6785889 301.7942505 300.9658813 300.1967163 299.4889526 298.8451843 298.2681274 297.760376 297.3241272 296.9620361 296.6756592 296.4677124 296.3391724 296.2930603 296.3299255 296.4519653 296.6607056 296.9576416 297.3430176 297.8189697 298.3862 299.0457153 299.7979126 300.6434631 301.5828247 302.6166687 303.7449951 304.9680176 306.2857666 307.6982422 309.2050171 310.8058777 312.5005493 314.2882385 316.1691284 318.1416016 320.2055664 322.3596497 324.6036072 326.93573 329.3555603 331.8613892 334.4525452 337.1275024}}\n addUserKnob {26 spacer_1 l \"\" +STARTLINE T <br>}\n addUserKnob {3 fregion_ref_frame l \"ref frame\" t \"set reference frame for tracking focus region. 'focus region' & 'define z' will apply on this reference frame and process the tracking.\"}\n fregion_ref_frame 40\n addUserKnob {22 fregion_set_frame l \"set current frame\" t \"set current frame for focus region reference frame.\" -STARTLINE T \"nuke.thisGroup()\\['fregion_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {12 sample_point l \"sample position\" t \"Toggle 'sample z' in 2D to enable this 2D sample coordinate.\" +DISABLED}\n addUserKnob {22 sample_z_toggle l \"sample z in 2D\" t \"'sample z' is only works for sample value purpose. After sample is done, must turn off sample function.\" -STARTLINE T \"thisGRP = nuke.thisGroup()\\nszstatus = thisGRP\\['sample_z_status'].value()\\n\\nstatus = \\['<font color=red>\\[ OFF ]</font>','<font color=cyan>\\[ ON ]</font>']\\n\\nif szstatus == status\\[0] :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[1] )\\n\\tthisGRP\\['sample_point'].setEnabled(True)\\n\\tthisGRP\\['updateUI'].setValue(\\\"goStore = nuke.toNode(\\\\'store\\\\')\\\\ngoStore\\[\\\\'fn\\\\'].execute()\\\\nsample2d()\\\")\\nelse :\\n\\tthisGRP\\['sample_z_status'].setValue( status\\[0] )\\n\\tthisGRP\\['sample_point'].setEnabled(False)\\n\\tthisGRP\\['updateUI'].setValue('')\"}\n addUserKnob {26 sample_z_status l \"\" -STARTLINE T \"<font color=red>\\[ OFF ]</font>\"}\n addUserKnob {7 fregion_define_z l \"define z\" t \"Define the z value on reference frame. Can use 'sample z in 2D' to get this value.\" R 0 10000}\n fregion_define_z 26.2365181\n addUserKnob {22 track_focus_region l \"<b>\\[ track focus region ]</b>\" t \"Use the set focus region on reference frame to track with camera in 3D space.\\n\\n* project setting need to be same as image resolution to get the correct result.\" T \"rootST = int( nuke.root()\\['first_frame'].getValue() )\\nrootED = int( nuke.root()\\['last_frame'].getValue() )\\n\\ngetFrame = nuke.getFramesAndViews( 'frame range', str( rootST ) + '-' + str( rootED ) )\\n\\ntry :\\n\\tframeST = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[0] )\\n\\tframeED = int( getFrame\\[0].replace( ' ' , '' ).split('-')\\[1] )\\n\\n\\tthisGRP = nuke.thisGroup()\\n\\trefframe = int( thisGRP\\['fregion_ref_frame'].getValue() )\\n\\tcam = nuke.toNode('cam_data')\\n\\tpt1 = nuke.toNode('left_pt')\\['translate'].getValue()\\n\\tpt2 = nuke.toNode('right_pt')\\['translate'].getValue()\\n\\n\\tct_hack = nuke.nodes.CurveTool()\\n\\n\\twith nuke.root() :\\n\\n\\t\\tif frameED - frameST != 0 :\\n\\t\\t\\tthisGRP\\['focus_region'].clearAnimated()\\n\\t\\t\\ttempbuffer1 = thisGRP\\['focus_region'].getValue()\\n\\t\\t\\tthisGRP\\['focus_region'].setAnimated()\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[0] , refframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[1] , refframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[2] , refframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( tempbuffer1\\[3] , refframe , 3 )\\n\\n\\t\\tfor trackframe in range( frameST, frameED+1 , 1 ) :\\n\\t\\t\\tnuke.execute( ct_hack, trackframe, trackframe )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[0] , trackframe , 0 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt1 )\\[1] , trackframe , 1 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[0] , trackframe , 2 )\\n\\t\\t\\tthisGRP\\['focus_region'].setValueAt( nukescripts.snap3d.projectPoint( cam, pt2 )\\[1] , trackframe , 3 )\\n\\n\\tnuke.delete( ct_hack )\\nexcept :\\n    pass\" +STARTLINE}\n addUserKnob {26 spacer_6 l \"\" +STARTLINE T <br>}\n addUserKnob {20 grp_crop_preview l \"3D crop preview\" n 1}\n grp_crop_preview 0\n addUserKnob {6 show_crop l \"show crop point\" t \"It will show 2 spheres for the crop in 3D space. They set in the place which is where you set the focus region in screen space and defined by z.\" +STARTLINE}\n addUserKnob {7 crop_point_scale l scale t \"Scale the preview crop points (spheres).\"}\n crop_point_scale 0.3\n addUserKnob {18 crop_point_color l color t \"change color of the crop points (spheres).\"}\n crop_point_color 1\n addUserKnob {6 crop_point_color_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {6 crop_point_color_panelDropped_1_1_1_1_1_1_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 spacer l \"\" +STARTLINE T <br>}\n addUserKnob {26 title_uv l <b>UV</b>}\n addUserKnob {41 uv_stabilize l \"uv stabilize\" t \"Turn this on if you need to stabilize in UV space. During UV stabilize on, the geo will not be animated. Set reference frame under 'mesh ref frame'.\" T menu1.uv_stabilize}\n addUserKnob {3 uv_ref_frame l \"mesh ref frame\" t \"Select the frame number that will have identity geo shaped for UV texturing.\" +DISABLED}\n uv_ref_frame 1001\n addUserKnob {22 uv_set_frame l \"set current frame\" -STARTLINE +DISABLED T \"nuke.thisGroup()\\['uv_ref_frame'].setValue( nuke.frame() )\"}\n addUserKnob {6 black_outside l \"black outside\" t \"black outside the UV texture.\" +DISABLED +STARTLINE}\n black_outside true\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.3}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2019-11-08}\n addUserKnob {26 l_CHANGELOG l Changelog T \"1.3\\n- camera window supported\\n- anamophic project supported\\n- fix the conflict of 'force region' and 'UV stabilize'.\\n  can use both at the same time now.\\n\\n1.2\\n- removed unuse camera link knobs\\n- added focus region, so mesh can be\\n  form in specific area/object to save\\n  resources for higher LOD\\n\\n1.1\\n- fix the missing line on 'Export Geo' \\n  button\\n\\n1.0\\n- create mesh/geo in screen space\\n  using position/depth/deep data\"}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href=\\\"https://facebook.com/MJTLab\\\"><font color=orange>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"don't touch\"\n  note_font_size 32\n  xpos -1142\n  ypos -169\n  bdwidth 202\n  bdheight 478\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x4c4c4cff\n  label bin\n  note_font_size 32\n  xpos -899\n  ypos -170\n  bdwidth 200\n  bdheight 280\n }\n Input {\n  inputs 0\n  name img\n  xpos -100\n  ypos -184\n }\n Dot {\n  name img_dot\n  xpos -66\n  ypos -83\n }\nset N3ec285d0 [stack 0]\n Dot {\n  name Dot3\n  xpos 758\n  ypos -83\n }\nset N3ea5e7a0 [stack 0]\n Shuffle {\n  in pworld\n  in2 alpha\n  alpha red2\n  name shuffle_data\n  label \"\\[value in]\"\n  xpos 724\n  ypos -32\n }\n Unpremult {\n  name Unpremult_data\n  xpos 724\n  ypos 62\n  disable {{!parent.unpm}}\n }\n Dot {\n  name Dot5\n  xpos 758\n  ypos 700\n }\nset N3ec5fec0 [stack 0]\n Dot {\n  name Dot6\n  xpos 928\n  ypos 700\n }\nset N3ec62380 [stack 0]\n Dot {\n  name Dot7\n  xpos 1106\n  ypos 700\n }\nset N5015d780 [stack 0]\n Dot {\n  name Dot8\n  xpos 1260\n  ypos 700\n }\n Expression {\n  temp_name0 dvalue\n  temp_expr0 red\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression9\n  xpos 1226\n  ypos 774\n }\n Dot {\n  name Dot16\n  xpos 1260\n  ypos 889\n }\npush $N5015d780\n Expression {\n  temp_name0 dvalue\n  temp_expr0 \"1 / red\"\n  temp_name1 xpos\n  temp_expr1 \"( ( x + 0.5 ) / input.width - 0.5 ) * \\[value global_math.hratio] * abs( dvalue )\"\n  temp_name2 ypos\n  temp_expr2 \"( ( y + 0.5 ) / input.height - 0.5 ) * ( \\[value global_math.hratio] * abs( dvalue ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name3 zpos\n  temp_expr3 \"- dvalue\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression6\n  xpos 1072\n  ypos 774\n }\n Dot {\n  name Dot17\n  xpos 1106\n  ypos 863\n }\npush $N3ec62380\n Expression {\n  expr2 -blue\n  name Expression7\n  label \"fix z\"\n  xpos 894\n  ypos 774\n }\n Dot {\n  name Dot18\n  xpos 928\n  ypos 876\n }\npush $N3ec5fec0\n Expression {\n  temp_name0 nx\n  temp_expr0 \"red - cam_data.world_matrix.3\"\n  temp_name1 ny\n  temp_expr1 \"green - cam_data.world_matrix.7\"\n  temp_name2 nz\n  temp_expr2 \"blue - cam_data.world_matrix.11\"\n  expr0 \"nx * \\[value inverseMatrix.invMatrix.0] + ny * \\[value inverseMatrix.invMatrix.1] + nz * \\[value inverseMatrix.invMatrix.2]\"\n  expr1 \"nx * \\[value inverseMatrix.invMatrix.3] + ny * \\[value inverseMatrix.invMatrix.4] + nz * \\[value inverseMatrix.invMatrix.5]\"\n  expr2 \"nx * \\[value inverseMatrix.invMatrix.6] + ny * \\[value inverseMatrix.invMatrix.7] + nz * \\[value inverseMatrix.invMatrix.8]\"\n  name Expression3\n  label \"position invert\"\n  xpos 724\n  ypos 774\n }\n Switch {\n  inputs 4\n  which {{parent.data_type}}\n  name Switch1\n  xpos 724\n  ypos 984\n }\n Dot {\n  name Dot13\n  xpos 758\n  ypos 1113\n }\nset N2a401a80 [stack 0]\n Dot {\n  name sam_dot\n  xpos 551\n  ypos 1113\n }\n NoOp {\n  inputs 0\n  name menu1\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['uv_stabilize'].getValue() == 1 :\\n    thisGRP\\['uv_ref_frame'].setEnabled(True)\\n    thisGRP\\['uv_set_frame'].setEnabled(True)\\n    thisGRP\\['black_outside'].setEnabled(True)\\nelse :\\n    thisGRP\\['uv_ref_frame'].setEnabled(False)\\n    thisGRP\\['uv_set_frame'].setEnabled(False)\\n    thisGRP\\['black_outside'].setEnabled(False)\\n\"\n  xpos -1085\n  ypos -42\n  addUserKnob {20 User}\n  addUserKnob {6 uv_stabilize l \"uv stabilize\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name menu2\n  onCreate \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nthisGRP\\[fregion_knobs\\[4]].setEnabled(True)\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n        else :\\n            thisGRP\\[i].setEnabled(False)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nfregion_knobs = \\['focus_region','fregion_define_z','sample_z_toggle','sample_z_status','sample_point','fregion_ref_frame','fregion_set_frame','track_focus_region','grp_crop_preview','show_crop','crop_point_scale','crop_point_color']\\n\\nif thisGRP\\['use_focus_region'].getValue()  == 0 :\\n    for i in fregion_knobs :\\n        thisGRP\\[i].setEnabled(False)\\n    thisGRP\\[fregion_knobs\\[3]].setValue( '<font color=red>\\[ OFF ]</font>' )\\n    thisGRP\\['updateUI'].setValue('')\\n    nuke.toNode('material_switch')\\['disable'].setValue(0)\\nelse :\\n    for i in fregion_knobs :\\n        if i != 'sample_point' :\\n            thisGRP\\[i].setEnabled(True)\\n    nuke.toNode('material_switch')\\['disable'].setValue(1)\\n\"\n  xpos -1085\n  ypos 25\n  addUserKnob {20 User}\n  addUserKnob {6 use_focus_region l \"use focus region\" +STARTLINE}\n  use_focus_region true\n }\n Camera {\n  inputs 0\n  display off\n  selectable false\n  useMatrix true\n  matrix {\n      {{Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix}}\n      {{Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix}}\n      {{Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix}}\n      {{Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix} {Camera10.world_matrix}}\n    }\n  focal {{parent.cam_focal}}\n  haperture {{cam_haperture}}\n  name cam_data\n  xpos -335\n  ypos 2204\n }\npush $N2a401a80\n Expression {\n  temp_name0 unpremultA\n  temp_expr0 \"alpha * ( 1 / alpha )\"\n  temp_name1 max\n  temp_expr1 blue\n  expr3 \"abs( max ) < \\[value parent.drange_near] || abs( max ) > \\[value parent.drange_far] ? 0 : isnan(unpremultA) ? 0 : unpremultA\"\n  name Expression1\n  label \"distance crop\"\n  xpos 724\n  ypos 1244\n }\n Premult {\n  name Premult1\n  xpos 724\n  ypos 1332\n }\n Dot {\n  name Dot9\n  xpos 758\n  ypos 1640\n }\nset N2a425a50 [stack 0]\npush $N3ec285d0\n Dot {\n  name Dot10\n  xpos -66\n  ypos 1552\n }\nset N2a427f10 [stack 0]\n Unpremult {\n  name Unpremult1\n  xpos 48\n  ypos 1549\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge2\n  xpos 48\n  ypos 1637\n }\n Premult {\n  name Premult3\n  xpos 48\n  ypos 1719\n }\npush $N2a427f10\n Switch {\n  inputs 2\n  which {{parent.clip_color}}\n  name Switch2\n  selected true\n  xpos -100\n  ypos 1828\n }\n Project3D2 {\n  inputs 2\n  crop {{parent.black_outside}}\n  name Project3D2\n  xpos -100\n  ypos 2224\n }\npush $N3ea5e7a0\n Dot {\n  name Dot2\n  xpos 1576\n  ypos -84\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  label \"\\[value in]\"\n  xpos 1542\n  ypos 30\n }\n Remove {\n  name Remove1\n  xpos 1542\n  ypos 118\n }\n Reformat {\n  type scale\n  black_outside true\n  name Reformat1\n  xpos 1542\n  ypos 212\n }\n Expression {\n  temp_name0 xpos\n  temp_expr0 \"( ( x + 0.5 ) / input.width - 0.5) *  \\[value global_math.hratio] * abs( \\[value parent.drange_far] )\"\n  temp_name1 ypos\n  temp_expr1 \"( ( y + 0.5 ) / input.height -0.5 ) * ( \\[value global_math.hratio] * abs( \\[value parent.drange_far] ) * ( img_dot.height / img_dot.width ) ) * 1 / \\[value format.pixel_aspect]\"\n  temp_name2 zpos\n  temp_expr2 \"-\\[value parent.drange_far]\"\n  expr0 \"( xpos * \\[value fb_data.world_matrix.0] + ypos * \\[value fb_data.world_matrix.1] ) * \\[value fb_data.win_scale.u] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.u] / 2 )\"\n  expr1 \"( xpos * \\[value fb_data.world_matrix.4] + ypos * \\[value fb_data.world_matrix.5] ) * \\[value fb_data.win_scale.v] + ( \\[value global_math.hratio] * abs(zpos) * \\[value fb_data.win_translate.v] / 2 )\"\n  expr2 zpos\n  name Expression8\n  xpos 1542\n  ypos 845\n }\n ColorMatrix {\n  matrix {\n      {{cam_data.world_matrix.0} {cam_data.world_matrix.1} {cam_data.world_matrix.2}}\n      {{cam_data.world_matrix.4} {cam_data.world_matrix.5} {cam_data.world_matrix.6}}\n      {{cam_data.world_matrix.8} {cam_data.world_matrix.9} {cam_data.world_matrix.10}}\n    }\n  name ColorMatrix1\n  xpos 1542\n  ypos 970\n }\n Add {\n  channels rgb\n  value {{cam_data.world_matrix.3} {cam_data.world_matrix.7} {cam_data.world_matrix.11} 0}\n  name Add1\n  xpos 1542\n  ypos 1052\n }\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop1\n  xpos 1542\n  ypos 1476\n  disable {{!parent.use_focus_region}}\n }\n Dot {\n  name Dot4\n  xpos 1576\n  ypos 2402\n }\npush $N2a425a50\n Crop {\n  box {{store.fregion} {store.fregion} {store.fregion} {store.fregion}}\n  reformat true\n  crop false\n  name Crop4\n  xpos 724\n  ypos 1771\n  disable {{!parent.use_focus_region}}\n }\n Unpremult {\n  name Unpremult3\n  xpos 724\n  ypos 1851\n }\n Expression {\n  temp_name0 nx\n  temp_expr0 red\n  temp_name1 ny\n  temp_expr1 green\n  temp_name2 nz\n  temp_expr2 blue\n  expr0 \"( nx * \\[value cam_data.world_matrix.0] + ny * \\[value cam_data.world_matrix.1] + nz * \\[value cam_data.world_matrix.2] ) + \\[value cam_data.world_matrix.3]\"\n  expr1 \"( nx * \\[value cam_data.world_matrix.4] + ny * \\[value cam_data.world_matrix.5] + nz * \\[value cam_data.world_matrix.6] ) + \\[value cam_data.world_matrix.7]\"\n  expr2 \"( nx * \\[value cam_data.world_matrix.8] + ny * \\[value cam_data.world_matrix.9] + nz * \\[value cam_data.world_matrix.10] ) + \\[value cam_data.world_matrix.11]\"\n  name Expression4\n  label \"position revert\"\n  xpos 724\n  ypos 1933\n }\n Premult {\n  name Premult2\n  xpos 724\n  ypos 2027\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos 724\n  ypos 2398\n }\n Card {\n  inputs 0\n  image_aspect false\n  rows {{\"img_dot.height * parent.lod\"}}\n  columns {{\"img_dot.width * parent.lod\"}}\n  name ssmesh\n  xpos 343\n  ypos 2317\n }\n DisplaceGeo {\n  inputs 2\n  source \"rgb absolute\"\n  scale 1\n  filter_size 1\n  name DisplaceGeo\n  xpos 343\n  ypos 2399\n }\n FrameHold {\n  first_frame {{parent.uv_ref_frame}}\n  name FrameHold\n  xpos 343\n  ypos 2479\n  disable {{!parent.uv_stabilize}}\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -100\n  ypos 2483\n }\n Scene {\n  display {{parent.display}}\n  name gl_scene\n  xpos -90\n  ypos 3072\n }\nset N3ec94f70 [stack 0]\n WriteGeo {\n  file_type abc\n  name WriteGeo\n  xpos 120\n  ypos 3093\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt2.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt2.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt2.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt2.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name right_pt\n  xpos -600\n  ypos 3218\n }\n CheckerBoard2 {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  name CheckerBoard1\n  xpos -789\n  ypos 2694\n }\n Multiply {\n  channels rgb\n  value {{parent.crop_point_color.r} {parent.crop_point_color.g} {parent.crop_point_color.b} 1}\n  name Multiply\n  xpos -789\n  ypos 2822\n }\n Clamp {\n  channels rgba\n  name Clamp1\n  xpos -789\n  ypos 2905\n }\n Sphere {\n  selectable false\n  cast_shadow false\n  receive_shadow false\n  rows 10\n  columns 10\n  uniform_scale {{parent.crop_point_scale}}\n  name Sphere1\n  xpos -789\n  ypos 2987\n  disable {{!show_crop}}\n }\n Dot {\n  name Dot24\n  xpos -755\n  ypos 3065\n }\nset N3ecbe4e0 [stack 0]\n Dot {\n  name Dot25\n  xpos -456\n  ypos 3065\n }\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo2\n  xpos -490\n  ypos 3238\n }\n Axis {\n  inputs 0\n  display off\n  selectable false\n  translate {{\"( global_math.pt1.x * cam_data.world_matrix.0(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.1(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.2(parent.fregion_ref_frame) ) + cam_data.world_matrix.3(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.4(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.5(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.6(parent.fregion_ref_frame) ) + cam_data.world_matrix.7(parent.fregion_ref_frame)\"} {\"( global_math.pt1.x * cam_data.world_matrix.8(parent.fregion_ref_frame) + global_math.pt1.y * cam_data.world_matrix.9(parent.fregion_ref_frame) + global_math.pt1.z * cam_data.world_matrix.10(parent.fregion_ref_frame) ) + cam_data.world_matrix.11(parent.fregion_ref_frame)\"}}\n  name left_pt\n  xpos -899\n  ypos 3220\n }\npush $N3ecbe4e0\n TransformGeo {\n  inputs 2\n  selectable false\n  name TransformGeo1\n  xpos -789\n  ypos 3240\n }\n Scene {\n  inputs 2\n  selectable false\n  name Scene1\n  xpos -480\n  ypos 3395\n }\n ApplyMaterial {\n  display off\n  selectable false\n  render_mode off\n  name material_switch\n  xpos -490\n  ypos 3523\n  disable true\n }\npush $N3ec94f70\n Scene {\n  inputs 2\n  name Scene2\n  xpos -90\n  ypos 3502\n }\n Output {\n  name Output1\n  xpos -100\n  ypos 4030\n }\n Group {\n  inputs 0\n  name inverseMatrix\n  tile_color 0x337f4cff\n  xpos 576\n  ypos 780\n  addUserKnob {20 tab_general l General}\n  addUserKnob {1 knob_path}\n  knob_path cam_data.world_matrix\n  addUserKnob {26 \"\"}\n  addUserKnob {41 id T id_assign.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {7 determinant}\n  determinant {{\"\\[value \\[value knob_path].\\[value id.0]] * ((\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])) - \\[value \\[value knob_path].\\[value id.1]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]])) + \\[value \\[value knob_path].\\[value id.2]] * ((\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]])-(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]]))\"}}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 cofactor T mtx_cofactor.matrix}\n  addUserKnob {26 \"\"}\n  addUserKnob {41 invMatrix T matrix_output.matrix}\n  addUserKnob {20 t_VERSION l Version}\n  addUserKnob {26 l_VERSION l Version T 1.0}\n  addUserKnob {26 l_DATE l \"Date Modified\" T 2011-11-28}\n  addUserKnob {26 l_CHANGELOG l Changelog T \"v1.0\\n- reveal the calculate output of \\n  inverse matrix which is c44matrix\\n  and colormatrix doesn't show\\n  \"}\n  addUserKnob {26 l_DEV l \"Developed by\" T \"Mark Joey Tang\"}\n }\n  Matrix {\n   inputs 0\n   matrix {\n       {0 1 2}\n       {4 5 6}\n       {8 9 10}\n     }\n   name id_assign\n   xpos -12\n   ypos 33\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"(\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.8]]) - (\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.7]])\"} {\"(\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.2]]) - (\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.1]])\"} {\"(\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.5]]) - (\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.4]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.5]]*\\[value \\[value knob_path].\\[value id.6]]) - (\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.8]])\"} {\"(\\[value \\[value knob_path].\\[value id.8]]*\\[value \\[value knob_path].\\[value id.0]]) - (\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.2]])\"} {\"(\\[value \\[value knob_path].\\[value id.2]]*\\[value \\[value knob_path].\\[value id.3]]) - (\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.5]])\"}}\n       {{\"(\\[value \\[value knob_path].\\[value id.3]]*\\[value \\[value knob_path].\\[value id.7]]) - (\\[value \\[value knob_path].\\[value id.4]]*\\[value \\[value knob_path].\\[value id.6]])\"} {\"(\\[value \\[value knob_path].\\[value id.6]]*\\[value \\[value knob_path].\\[value id.1]]) - (\\[value \\[value knob_path].\\[value id.7]]*\\[value \\[value knob_path].\\[value id.0]])\"} {\"(\\[value \\[value knob_path].\\[value id.0]]*\\[value \\[value knob_path].\\[value id.4]]) - (\\[value \\[value knob_path].\\[value id.1]]*\\[value \\[value knob_path].\\[value id.3]])\"}}\n     }\n   name mtx_cofactor\n   xpos 86\n   ypos 32\n  }\n  Matrix {\n   inputs 0\n   matrix {\n       {{\"cofactor.0 == 0 || determinant == 0 ? 0 : cofactor.0/determinant\"} {\"cofactor.1 == 0 || determinant == 0 ? 0 : cofactor.1/determinant\"} {\"cofactor.2 == 0 || determinant == 0 ? 0 : cofactor.2/determinant\"}}\n       {{\"cofactor.3 == 0 || determinant == 0 ? 0 : cofactor.3/determinant\"} {\"cofactor.4 == 0 || determinant == 0 ? 0 : cofactor.4/determinant\"} {\"cofactor.5 == 0 || determinant == 0 ? 0 : cofactor.5/determinant\"}}\n       {{\"cofactor.6 == 0 || determinant == 0 ? 0 : cofactor.6/determinant\"} {\"cofactor.7 == 0 || determinant == 0 ? 0 : cofactor.7/determinant\"} {\"cofactor.8 == 0 || determinant == 0 ? 0 : cofactor.8/determinant\"}}\n     }\n   name matrix_output\n   xpos 186\n   ypos 33\n  }\n end_group\n Camera {\n  inputs 0\n  rotate {0 0 {-parent.cam_winroll}}\n  win_translate {{parent.cam_win_translate} {parent.cam_win_translate}}\n  win_scale {{parent.cam_win_scale} {parent.cam_win_scale}}\n  name fb_data\n  xpos -340\n  ypos 2087\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -843\n  ypos 28\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"### level define ###\\n\\ndef getLevel() :\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\tggLevel = nuke.root()\\n\\telse :\\n\\t\\tnodePath = nuke.thisNode().fullName().split('.')\\n\\t\\tnodePath.pop()\\n\\t\\tggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\\n\\n### sample z in 2D ###\\n\\ndef sample2d() :\\n\\tthisGRP = nuke.thisGroup()\\n\\tif thisGRP\\['sample_z_status'].value() == '<font color=cyan>\\[ ON ]</font>' :\\n\\t\\tsam_co = thisGRP\\['sample_point'].getValue()\\n\\t\\tzdata = nuke.toNode('sam_dot').sample('blue', sam_co\\[0], sam_co\\[1]) * -1\\n\\t\\tthisGRP\\['fregion_define_z'].setValue( zdata )\" +STARTLINE}\n  addUserKnob {15 fregion}\n  fregion {{parent.focus_region} {parent.focus_region} {parent.focus_region} {parent.focus_region}}\n }\n NoOp {\n  inputs 0\n  name global_math\n  xpos -842\n  ypos -43\n  addUserKnob {20 User}\n  addUserKnob {7 hratio}\n  hratio {{\"cam_data.haperture / cam_data.focal\"}}\n  addUserKnob {7 maxwidth}\n  maxwidth {{\"hratio * parent.fregion_define_z\"}}\n  addUserKnob {7 maxheight}\n  maxheight {{\"hratio * parent.fregion_define_z * ( img_dot.height / img_dot.width )\"}}\n  addUserKnob {13 pt1}\n  pt1 {{\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.x(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + \\n( ( ( maxheight * ( parent.focus_region.y(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n  addUserKnob {13 pt2}\n  pt2 {{\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.0 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.1 ) * fb_data.win_scale.u + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.u /2 )\"} {\"( ( ( maxwidth * ( parent.focus_region.r(parent.fregion_ref_frame) / img_dot.width) ) - ( maxwidth / 2 ) ) * fb_data.world_matrix.4 + ( ( ( maxheight * ( parent.focus_region.t(parent.fregion_ref_frame) / img_dot.height ) ) - ( maxheight / 2 ) ) * 1 / \\[value root.format.pixel_aspect] ) * fb_data.world_matrix.5 ) * fb_data.win_scale.v + ( hratio * abs(parent.fregion_define_z) * fb_data.win_translate.v /2 )\"} {-parent.fregion_define_z}}\n }\nend_group\nScene {\n inputs 2\n name Scene8\n xpos -821\n ypos 4184\n}\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender5\n xpos -831\n ypos 4306\n}\nDot {\n name Dot25\n selected true\n xpos -797\n ypos 4543\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_STMap_Keying_Setup.nk",
    "content": "set cut_paste_input [stack 0]\nColorBars {\n inputs 0\n name ColorBars1\n selected true\n xpos 2\n ypos -334\n}\nBlur {\n size 150\n name Blur1\n label \"size \\[value size]\"\n selected true\n xpos 2\n ypos -262\n}\nDot {\n name Dot2\n tile_color 0xcc804e00\n label plate\n note_font_size 30\n selected true\n xpos 36\n ypos -184\n}\nset N12350460 [stack 0]\nColorspace {\n colorspace_out YCbCr\n name Colorspace1\n label \"input \\[value colorspace_in]\\noutput \\[value colorspace_out]\"\n selected true\n xpos 2\n ypos -121\n}\nShuffle {\n red green\n green blue\n blue black\n name Shuffle1\n label \"in \\[value in]-->out \\[value out]\"\n selected true\n xpos 2\n ypos -73\n}\nDot {\n name Dot3\n tile_color 0x9e3c6300\n selected true\n xpos 36\n ypos -10\n}\nset N1456efa0 [stack 0]\nDot {\n name Dot4\n tile_color 0x9e3c6300\n selected true\n xpos 264\n ypos -10\n}\npush $N1456efa0\npush $N12350460\nDot {\n name Dot1\n tile_color 0xcc804e00\n selected true\n xpos -110\n ypos -60\n}\nBlinkScript {\n inputs 2\n recompileCount 1\n ProgramGroup 1\n KernelDescription \"2 \\\"InverseSTKernel\\\" iterate pixelWise 79737837f0b8f5ef5ba9dd8c86c9e76f184ef0da76c94577b5431d3e3e08b063 3 \\\"src\\\" Read Point \\\"stmap\\\" Read Point \\\"dst\\\" Write Random 1 \\\"resolution\\\" Float 2 AAAAAAAAAAA= 1 \\\"resolution\\\" 2 1 0\"\n kernelSource \"// Original Kernel by Mads Hagbarth, modified to use STMaps by Erwan Leroy\\n\\nkernel InverseSTKernel : ImageComputationKernel<ePixelWise>\\n\\{\\n  Image<eRead, eAccessPoint, eEdgeClamped> src;\\n  Image<eRead, eAccessPoint, eEdgeClamped> stmap;\\n  Image<eWrite, eAccessRandom> dst;\\n\\n  param:\\n    float2 resolution;\\n\\n  void process() \\{\\n    float2 uv;\\n    uv.x = stmap().x * resolution.x - 0.5f;\\n    uv.y = stmap().y * resolution.y - 0.5f;\\n    //always make sure that you don't write outside bounds\\n    //as it will usually crash nuke.\\n    if (dst.bounds.inside(uv.x,uv.y)) \\{ \\n      dst(uv.x,uv.y) = src(); \\n    \\}\\n  \\}\\n\\};\"\n useGPUIfAvailable false\n rebuild \"\"\n InverseSTKernel_resolution {{width} {height}}\n rebuild_finalise \"\"\n name BlinkScript1\n selected true\n xpos 2\n ypos 60\n}\nRoto {\n output alpha\n cliptype none\n replace true\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier1 512 bezier\n     {{cc\n       {f 8192}\n       {px 1\n        {xc0000000 0}\n        {x440d8000 x44024000}\n        {x40000000 0}\n        {xc1a80000 x41000000}\n        {x442ec000 x43f70000}\n        {x41a80000 xc1000000}\n        {xc0800000 x41d80000}\n        {x4440c667 x43bf0000}\n        {x40800000 xc1d80000}\n        {x40a00000 x41400000}\n        {x4441c000 x43928000}\n        {xc0a00000 xc1400000}\n        {x41b80000 x40000000}\n        {x442b0000 x43750000}\n        {xc1b80000 xc0000000}\n        {x41500000 xc1500000}\n        {x440c0000 x438d8000}\n        {xc1500000 x41500000}\n        {0 xc1700000}\n        {x43f60000 x43b48000}\n        {0 x41700000}\n        {0 0}\n        {x43fe8000 x43dc8000}\n        {0 0}}}\n      {cc\n       {f 8192}\n       {px 1\n        {xc0000000 0}\n        {0 0}\n        {x40000000 0}\n        {xc1a80000 x41000000}\n        {x421903f0 x42c8da30}\n        {x41a80000 xc1000000}\n        {xc0800000 x41d80000}\n        {x431a824c x41b71e70}\n        {x40800000 xc1d80000}\n        {x40a00000 x41400000}\n        {x433eb874 xc29ef132}\n        {xc0a00000 xc1400000}\n        {x41b80000 x40000000}\n        {0 0}\n        {xc1b80000 xc0000000}\n        {x41500000 xc1500000}\n        {0 0}\n        {xc1500000 x41500000}\n        {0 xc1700000}\n        {0 0}\n        {0 x41700000}\n        {0 0}\n        {0 0}\n        {0 0}}}}\n     {tx 1 x441e1000 x43bcc000}\n     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44428000 sb 1 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_shutter_offset_type centred\n source_black_outside true\n link_output false\n name Roto1\n selected true\n xpos 2\n ypos 138\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle2\n label \"in \\[value in]-->out \\[value out]\"\n selected true\n xpos 2\n ypos 174\n}\nSTMap {\n inputs 2\n uv rgb\n name STMap1\n selected true\n xpos 230\n ypos 174\n}\npush $N12350460\nDot {\n name Dot5\n tile_color 0xcc804e00\n selected true\n xpos 419\n ypos -184\n}\nMerge2 {\n inputs 2\n operation mask\n bbox B\n name Merge1\n selected true\n xpos 385\n ypos 231\n}"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_SparkyExampleScene.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x7171c600\n label \"Cam/Axis setup. \\nDeep compatible!\"\n note_font \"Verdana Bold Italic Bold Italic\"\n note_font_size 80\n selected true\n xpos -2908\n ypos -539\n bdwidth 1592\n bdheight 1334\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n tile_color 0x8e8e3800\n label \"2D Setup\"\n note_font_size 80\n selected true\n xpos -3529\n ypos -534\n bdwidth 428\n bdheight 366\n}\npush $cut_paste_input\nCamera2 {\n translate {{curve x1001 930 x1098 524.2270508 x1200 9.730261803} {curve x1001 520 x1098 895.1622314 x1200 1183.430542} {curve x1001 3504 x1098 1449.996826 x1200 1276.928467}}\n rotate {{curve x1001 4.3 x1098 19.60003662 x1200 9.119994164} {curve x1001 30.2 x1098 84.99999237 x1200 132.1900024} {curve x1001 0 x1098 -3.398572801e-07 x1200 -8.647048162e-07}}\n focal 24\n haperture 36\n vaperture 24\n near 1\n far 100000\n name Camera1\n selected true\n xpos -2521\n ypos -35\n}\nDot {\n name Dot3\n selected true\n xpos -2497\n ypos 85\n}\nset N4aa30170 [stack 0]\nDot {\n name Dot4\n selected true\n xpos -2135\n ypos 85\n}\nset N49cf22b0 [stack 0]\nDot {\n name Dot2\n selected true\n xpos -2135\n ypos 253\n}\nset N49c97eb0 [stack 0]\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44700000 x44070000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush3 512 catmullrom\n     {cc\n      {f 2080}\n      {px x4494e000\n       {x41b00000 x43dc0000 1}\n       {x41c80000 x43dc0000 1}\n       {x42100000 x43dc0000 1}\n       {x427c0000 x43dc0000 1}\n       {x42dc0000 x43da8000 1}\n       {x43320000 x43d90000 1}\n       {x437a0000 x43d58000 1}\n       {x439f0000 x43d58000 1}\n       {x43ce8000 x43d58000 1}\n       {x43f58000 x43d58000 1}\n       {x4405c000 x43d58000 1}\n       {x44110000 x43d58000 1}\n       {x44210000 x43d58000 1}\n       {x44330000 x43d38000 1}\n       {x4444c000 x43d38000 1}\n       {x44518000 x43d38000 1}\n       {x445e4000 x43d38000 1}\n       {x44688000 x43d38000 1}\n       {x44744000 x43d38000 1}\n       {x4481e000 x43d38000 1}\n       {x44862000 x43d38000 1}\n       {x44868000 x43d38000 1}\n       {x4486e000 x43d38000 1}\n       {x448ce000 x43d38000 1}\n       {x4493a000 x43d38000 1}\n       {x44942000 x43d38000 1}\n       {x449a8000 x43d38000 1}\n       {x44a06000 x43d38000 1}\n       {x44a82000 x43d38000 1}\n       {x44b02000 x43d38000 1}\n       {x44b62000 x43d38000 1}\n       {x44bac000 x43d38000 1}\n       {x44c12000 x43d38000 1}\n       {x44c8c000 x43d38000 1}\n       {x44cfa000 x43d38000 1}\n       {x44d74000 x43d38000 1}\n       {x44df6000 x43d58000 1}\n       {x44dfc000 x43d58000 1}\n       {x44e68000 x43d58000 1}\n       {x44ec8000 x43d58000 1}\n       {x44ece000 x43d58000 1}\n       {x44f12000 x43d58000 1}\n       {x44f50000 x43d58000 1}\n       {x44f94000 x43d58000 1}\n       {x44fbc000 x43d58000 1}\n       {x44fd2000 x43d58000 1}}}\n     {tx x4494e000 x448917a7 x43d54000}\n     {a r x3e99999a g x3dd29ebb b x3bc8a0e7 ro 0 go 0 bo 0 ao 0 bs x4402c000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x447a4000 ltm x447a4000 tt x41880000}}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {px x4494e000\n       {x41980000 x43700000 1}\n       {x41e80000 x436c0000 1}\n       {x42000000 x43690000 1}\n       {x42a00000 x43620000 1}\n       {x433d0000 x43550000 1}\n       {x439d0000 x43510000 1}\n       {x43fc8000 x43510000 1}\n       {x4438c000 x43510000 1}\n       {x443b8000 x43510000 1}\n       {x447cc000 x43580000 1}\n       {x44a4a000 x435b0000 1}\n       {x44b5a000 x435b0000 1}\n       {x44b7c000 x435b0000 1}\n       {x44d14000 x43580000 1}\n       {x44d88000 x43580000 1}\n       {x44d82000 x43580000 1}\n       {x44d74000 x43580000 1}\n       {x44cde000 x43510000 1}\n       {x44a88000 x434e0000 1}\n       {x44304000 x43400000 1}\n       {xc1000000 x431e0000 1}\n       {xc405c000 x42e40000 1}\n       {xc4484000 x429a0000 1}\n       {xc4524000 x428c0000 1}\n       {xc44f0000 x428c0000 1}\n       {xc4440000 x428c0000 1}\n       {xc42f8000 x428c0000 1}\n       {xc40bc000 x428c0000 1}\n       {xc3b18000 x428c0000 1}\n       {xc2d60000 x42a00000 1}\n       {xc2bc0000 x42a00000 1}\n       {x43430000 x42b40000 1}\n       {x445e4000 x430a0000 1}\n       {x44c72000 x43360000 1}\n       {x450ee000 x434a0000 1}\n       {x452a5000 x434e0000 1}\n       {x4532a000 x43470000 1}\n       {x45330000 x43400000 1}\n       {x4532a000 x43400000 1}\n       {x4530e000 x43400000 1}\n       {x452d5000 x43400000 1}\n       {x45272000 x43390000 1}\n       {x45264000 x43390000 1}\n       {x451f8000 x432f0000 1}\n       {x4514a000 x43250000 1}\n       {x45060000 x43170000 1}\n       {x44e70000 x43110000 1}\n       {x44bf0000 x430d0000 1}\n       {x4449c000 x43030000 1}\n       {x435b0000 x42d00000 1}\n       {x43510000 x42d00000 1}\n       {xc2840000 x42a60000 1}\n       {xc3030000 x42920000 1}\n       {xc30d0000 x42920000 1}\n       {xc31b0000 x428c0000 1}\n       {xc3250000 x428c0000 1}}}\n     {tx x4494e000 x44640c92 x431ee000}\n     {a r x3e000080 b 0 ro 0 go 0 bo 0 ao 0 bs x4402c000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x447a4000 ltm x447a4000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {px x4494e000\n       {xc2f20000 x4481e000 1}\n       {xc2ea0000 x4481e000 1}\n       {xc2dc0000 x44816000 1}\n       {xc1e80000 x44802000 1}\n       {xc1b00000 x44802000 1}\n       {x43220000 x447cc000 1}\n       {x432c0000 x447cc000 1}\n       {x43d88000 x44788000 1}\n       {x44138000 x4477c000 1}\n       {x4417c000 x4477c000 1}\n       {x44374000 x44770000 1}\n       {x44832000 x44788000 1}\n       {x449d8000 x447a4000 1}\n       {x44b38000 x447cc000 1}\n       {x44b46000 x447cc000 1}\n       {x44c6a000 x447f8000 1}\n       {x44d60000 x44810000 1}\n       {x44e40000 x44816000 1}\n       {x44ef8000 x447f8000 1}\n       {x44f50000 x447dc000 1}\n       {x44f50000 x447cc000 1}\n       {x44f4a000 x447cc000 1}\n       {x44f2e000 x447b4000 1}\n       {x44e02000 x44770000 1}\n       {x44aa4000 x4472c000 1}\n       {x44210000 x446a4000 1}\n       {xc27c0000 x445ac000 1}\n       {xc3eb8000 x44528000 1}\n       {xc3ef0000 x44528000 1}\n       {xc3fc8000 x44518000 1}\n       {xc40bc000 x444fc000 1}\n       {xc4078000 x444f0000 1}\n       {xc3fa8000 x444e0000 1}\n       {xc3d58000 x444d4000 1}\n       {xc3c78000 x444c8000 1}\n       {xc3950000 x444b8000 1}\n       {xc3870000 x444b8000 1}\n       {xc3838000 x444b8000 1}\n       {xc2e40000 x444a0000 1}\n       {xc2980000 x444a0000 1}\n       {x42fe0000 x444a0000 1}\n       {x44320000 x444d4000 1}\n       {x44ad2000 x4450c000 1}\n       {x44b02000 x4450c000 1}\n       {x44f28000 x44518000 1}\n       {x450a7000 x44518000 1}\n       {x450e1000 x444fc000 1}\n       {x450e1000 x444f0000 1}\n       {x450a0000 x444c8000 1}\n       {x45041000 x444b8000 1}\n       {x44f4a000 x444ac000 1}\n       {x44d74000 x444ac000 1}\n       {x44d2a000 x444ac000 1}\n       {x44b92000 x444c8000 1}\n       {x44b62000 x444c8000 1}\n       {x44a88000 x444e0000 1}\n       {x43dc0000 x44534000 1}\n       {xc3540000 x44540000 1}\n       {xc3730000 x44540000 1}\n       {xc4154000 x444fc000 1}\n       {xc41cc000 x444f0000 1}\n       {xc41cc000 x444e0000 1}\n       {xc40f4000 x444d4000 1}\n       {xc3b68000 x444ac000 1}\n       {xc3b00000 x444ac000 1}\n       {xc39d8000 x444a0000 1}\n       {xc33d0000 x44490000 1}\n       {x42100000 x44490000 1}\n       {x43a78000 x444a0000 1}\n       {x4461c000 x444a0000 1}\n       {x44bb4000 x44468000 1}\n       {x44e62000 x44430000 1}\n       {x44f86000 x443fc000 1}\n       {x44fc4000 x443e0000 1}\n       {x44fd2000 x443d0000 1}\n       {x45022000 x44380000 1}\n       {x45033000 x44364000 1}\n       {x45011000 x44364000 1}\n       {x44d36000 x44374000 1}\n       {x445e4000 x44374000 1}\n       {x43c10000 x4433c000 1}\n       {x43ba0000 x44330000 1}\n       {x41980000 x442f8000 1}\n       {xc2a60000 x442dc000 1}\n       {xc2dc0000 x442dc000 1}\n       {xc3030000 x442dc000 1}\n       {xc34a0000 x442f8000 1}\n       {xc3580000 x442f8000 1}\n       {xc3540000 x442f8000 1}\n       {xc3510000 x442f8000 1}\n       {xc34a0000 x442f8000 1}\n       {xc33d0000 x442ec000 1}\n       {xc2b40000 x442d0000 1}\n       {x43820000 x44298000 1}\n       {x444ac000 x4427c000 1}\n       {x444e0000 x4427c000 1}\n       {x44a66000 x442a8000 1}\n       {x44d36000 x442a8000 1}\n       {x44e5c000 x44298000 1}\n       {x44e70000 x4428c000 1}}}\n     {tx x4494e000 x44319333 x44519148}\n     {a r x3ea96ec8 g x3f24a226 ro 0 go 0 bo 0 ao 0 bs x4402c000 bu 1 str 1 spx x44700000 spy x44070000 sb 1 ltn x447a4000 ltm x447a4000 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll r 0.3 g 0.102842 b 0.0061227 bs 523 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0.3 g 0.102842 b 0.0061227 bs 523 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1191 ltm 1191 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_paint_color {0.3000000119 0.1028420031 0.006122699939 1}\n toolbar_brush_size 523\n toolbar_brush_hardness 0.200000003\n toolbar_lifetime_type single\n toolbar_lifetime_start 1191\n toolbar_lifetime_end 1191\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {960 540}\n color {0.3000000119 0.1028418168 0.006122696679 1}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1001\n lifetime_end 1001\n brush_size 523\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint1\n tile_color 0xff\n selected true\n xpos -1541\n ypos -111\n}\nSphere {\n translate {57.00060513 560.261795 1277.047357}\n scaling {1 0.6 1}\n uniform_scale 9000\n name Sphere1\n tile_color 0xff\n selected true\n xpos -1541\n ypos 81\n}\npush $N49cf22b0\nCheckerBoard2 {\n inputs 0\n boxsize {120 60}\n name CheckerBoard2\n selected true\n xpos -2193\n ypos -288\n postage_stamp false\n}\nCard2 {\n rows 1\n columns 1\n rotate {90 0 0}\n scaling {6 24 1}\n uniform_scale 2000\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card1\n tile_color 0xff\n selected true\n xpos -2193\n ypos -114\n}\nCheckerBoard2 {\n inputs 0\n boxsize {130 108}\n centerlinewidth 0\n name CheckerBoard1\n selected true\n xpos -1981\n ypos -291\n postage_stamp false\n}\nReflection {\n reflection_value 0.1\n name Reflection1\n tile_color 0xff\n selected true\n xpos -1981\n ypos -207\n}\nset N34df3520 [stack 0]\nCube {\n translate {-368 465 166}\n scaling {0.5 1 1}\n uniform_scale 1000\n name Cube3\n tile_color 0xff\n selected true\n xpos -2089\n ypos -111\n}\npush $N34df3520\nCube {\n rows 1\n columns 1\n separate_faces false\n translate {-700 504 2040}\n scaling {0.6 0.7 0.7}\n uniform_scale 2000\n name Cube1\n tile_color 0xff\n selected true\n xpos -1857\n ypos -116\n}\npush $N34df3520\nCube {\n rows 1\n columns 1\n translate {-540 332 1010}\n scaling {0.6 0.7 0.7}\n uniform_scale 1000\n name Cube2\n tile_color 0xff\n selected true\n xpos -1981\n ypos -111\n}\nScene {\n inputs 6\n display textured+wireframe\n name Scene1\n tile_color 0xff\n selected true\n xpos -1971\n ypos 61\n}\nset N34de79f0 [stack 0]\npush 0\nadd_layer {reflection reflection.red reflection.green reflection.blue reflection.alpha}\nRayRender {\n inputs 3\n output_shader_vectors true\n AOV_Reflection reflection\n name RayRender1\n tile_color 0xff\n selected true\n xpos -1761\n ypos 249\n}\nset N49e28390 [stack 0]\npush $N49e28390\nBlur {\n size 55\n maskChannelInput -rgba.alpha\n name Blur1\n tile_color 0xff\n selected true\n xpos -1761\n ypos 291\n}\nShuffle {\n in reflection\n name Shuffle1\n label \"\\[value in] \\[ expr \\{ \\[value out2] == \\\"none\\\" ? \\\" \\\" : \\[concat -> \\[value out2]] \\}]\"\n note_font_size 21\n note_font_color 0xffffffff\n selected true\n xpos -1761\n ypos 355\n}\nMerge2 {\n inputs 2\n operation plus\n name Merge3\n tile_color 0xff\n selected true\n xpos -1541\n ypos 369\n}\nDot {\n name Dot1\n selected true\n xpos -1507\n ypos 469\n}\nEXPTool {\n mode Stops\n red -1\n green -1\n blue -1\n name Exposure2\n tile_color 0xff\n selected true\n xpos -1761\n ypos 465\n}\npush $N49c97eb0\npush $N34de79f0\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type distance\n name ScanlineRender1\n selected true\n xpos -1981\n ypos 249\n}\nDeepRecolor {\n inputs 2\n name DeepRecolor1\n tile_color 0xff\n selected true\n xpos -1981\n ypos 465\n}\nAxis2 {\n inputs 0\n translate {-92 1202 1345}\n name Axis1\n selected true\n xpos -2851\n ypos 229\n}\npush $N4aa30170\nGroup {\n inputs 2\n name Sparky3D\n tile_color 0xbd4600ff\n label \"\\[if \\{\\[value ROrP]==false\\} \\{return \\\"Render Mode\\\"\\} \\{return \\\"!! PARTICLE MODE !! \\\\nENABLED\\\"\\}]\"\n note_font \"Bitstream Vera Sans Bold Bold\"\n selected true\n xpos -2531\n ypos 243\n addUserKnob {20 SparkTab l \"Sparky Settings\"}\n addUserKnob {41 start_frame l \"Initial Frame\" T SparkEmit.start_frame}\n addUserKnob {7 EmissionRate l \"Emission Amount\" R 0 100}\n EmissionRate {{curve(((frame-1001)%(1015-1001+1))+1001) K x1001 0 S 400 x1004 0 x1005 12 175 x1008 20 x1012 0 x1015 0}}\n addUserKnob {22 Refresh l \"Refresh Sim\" T \"import random\\n\\ni = int(nuke.expression('random()')*1000)\\nn = nuke.thisNode()\\nhs = n\\['HiddenSeed'].value()\\n\\nif hs == i:\\n    n\\['HiddenSeed'].setValue(hs+1)\\nelse :\\n    n\\['HiddenSeed'].setValue(i)\" +STARTLINE}\n addUserKnob {26 text l \"\" +STARTLINE T \"\\t\\tClick Refresh if modifying values doesn't show any changes.\"}\n addUserKnob {3 HiddenSeed +INVISIBLE}\n HiddenSeed 816\n addUserKnob {26 \"\"}\n addUserKnob {26 emittertext l \"\" +STARTLINE T \"Emitter Settings\"}\n addUserKnob {13 Direction t \"Set the initial velocity applied to the particles. This will orient the sparks in 3D space.\"}\n Direction {100 50 0}\n addUserKnob {7 MaxLife l \"Particle Life\" t \"Maximum amount of frames the particles will live for.\" R 10 100}\n MaxLife 60\n addUserKnob {7 LifeRange l \"Life Range\" t \"Randomizes the Life Range of the particles.\" R 0 2}\n LifeRange 0.75\n addUserKnob {3 seed l \"Particle  Seed\" t \"Randomizes the simulation.\"}\n seed 123\n addUserKnob {26 \"\"}\n addUserKnob {7 ParticleSize l \"Particle Size\" t \"Change Particle Size\" R 1 5}\n ParticleSize 2\n addUserKnob {7 Explosivity t \"Changes how much influence the initial force has on the particles.\" R 0 100}\n Explosivity 55\n addUserKnob {7 Scatter t \"Adds some randomness between particles.\" R 0 100}\n Scatter 100\n addUserKnob {41 Softness l \"Particle Softness\" T CustomKnobs.Softness}\n addUserKnob {26 \"\"}\n addUserKnob {4 ROption l \"Render Options\" t \"Multi Scanline: Output is a ScanlineRender with motionblur enabled. Can be DeepMerged\\nVectorBlur: 2D motionblur added post-render. Can get rid of sample issues, but is not Deep compatible.\" M {\"Multi Scanline\" VectorBlur \"\" \"\"}}\n addUserKnob {41 format l Format T RootFormatSetup.format}\n addUserKnob {14 Overscan R 0 100}\n Overscan 100\n addUserKnob {6 ROrP l \"Output As Particles\" t \"Check this to output Particles instead of a 2D render.\\nIt can then be plugged into a 3D scene.\" +STARTLINE}\n addUserKnob {6 OutputDeep l \"Output Deep\" t \"Warning: Will output in Multi-Scanlinde mode only. Doesn't have any effect if \\\"Output As Particles is selected\\\".\" -STARTLINE}\n addUserKnob {20 Presets}\n addUserKnob {4 AnimPreset l \"Animation Presets\" t \"None: This wont do anything. Serves as safety to not enable a preset accidentally\\nSingle Hit Heavy: Heavy hit with a double pop.\\nSingle Hit Light : Light pop of sparks.\\nWelding : Expression that will mimic a natural welding feeling.\\nWavy : Constant sim with some strong variation in birth rate.\\nConstant : Softer variation than the Wavy preset.\\nLoopy : Loops the same pop of Sparks.\" M {None \"Single Hit Heavy\" \"Single Hit Light\" Welding Wavy Constant Loopy \"\" \"\" \"\" \"\" \"\"}}\n AnimPreset Loopy\n addUserKnob {22 Apply l \"Apply Preset\" t \"    \" T \"def checkPreset():\\n    preset = int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    if preset ==0:\\n        return False\\n    else:\\n        return preset\\n\\ndef checkFrame():\\n    InitFrame = nuke.getInput(\\\"Enter Initial Frame\\\", '1001')\\n    if InitFrame:\\n        try:\\n            InitFrame = int(InitFrame)\\n            return InitFrame\\n        except ValueError:\\n            nuke.message(\\\"Not a valid frame number\\\")\\n            return False\\n\\n\\nif checkPreset() == False:\\n    nuke.ask(\\\"No preset selected\\\")\\nelse:\\n    n=nuke.thisNode()\\['EmissionRate']\\n    s=int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    cf=checkFrame()\\n    if cf!=False and cf!=None:\\n        if s == 1:        \\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 400 x%v2 0 12 x%v3 175 x%v4 20 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+6))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+12))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Heavy Preset\\\")\\n        elif s == 2:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 140 x%v2 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Light Preset\\\")\\n        elif s == 3:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"max(0,(random(frame+seed)*120*((sin(frame+seed)+1)*0.5)-12))*3\\\")\\n            nuke.message(\\\"Applied Welding Preset\\\")\\n        elif s == 4:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame+seed)*120*((sin(frame+seed)+1)*0.5)\\\")\\n            nuke.message(\\\"Applied Wavy Preset\\\")\\n        elif s == 5:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame/5+seed)*100+60\\\")\\n            nuke.message(\\\"Applied Constant Preset\\\")\\n        else:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve(((frame-%v1)%(%v6-%v1+1))+%v1) K x%v1 0 S 400 x%v2 0 x%v3 12 175 x%v4 20 x%v5 0 x%v6 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+4))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+7))\\n            sCurve=sCurve.replace(\\\"%v5\\\",str(cf+11))\\n            sCurve=sCurve.replace(\\\"%v6\\\",str(cf+14))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Loopy Preset\\\")\\n\\n\" +STARTLINE}\n addUserKnob {20 Advanced l \"Advanced Settings\"}\n addUserKnob {7 TVelocity l \"Transfer Velocity\"}\n TVelocity 0.5\n addUserKnob {7 TWindow l \"Transfer window\" R 0 5}\n TWindow 2\n addUserKnob {7 Spread l \"Emission Spread\"}\n Spread 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 samples l \"Scanline Samples\" T MultiSampleRender.samples}\n addUserKnob {7 Shutter}\n Shutter 0.5\n addUserKnob {41 shutteroffset l \"Shutter Offset\" T MultiSampleRender.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T MultiSampleRender.shuttercustomoffset}\n addUserKnob {20 Instructions}\n addUserKnob {26 info l \"\" +STARTLINE T \"Sparky v1.2\\n\\nEasy to use particle setup for Sparks.\\n\\nOutputs an image by default, but can be configured to be rendered through a specific Camera or\\nto output as particles, which allows you to plug Sparky into a 3D scene.\\n\\nIf you wish to use the 3D version of this Gizmo, simply plug your Camera and plug an Axis to \\nmove and place the sparks where you need them.\\n\\nFor more information about presets and changelogs, head to the Nukepedia page!\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode9\n  tile_color 0x557fffff\n  label \"Welcome Curious Comper!\\n\\nI hope you'll find answers\\nto what you are looking for\\ninside here! <img src=\\\"ParticleBounce.png\\\">\"\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 111\n  xpos -2486\n  ypos -861\n  bdwidth 2780\n  bdheight 1970\n }\n ColorWheel {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  gamma 0.45\n  name ColorWheel1\n  xpos -1170\n  ypos -537\n }\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation1\n  xpos -1170\n  ypos -427\n }\n FilterErode {\n  channels all\n  size {{abs(parent.CustomKnobs.Softness)}}\n  filter gaussian\n  name ErodeSoft\n  xpos -1170\n  ypos -384\n }\n Reformat {\n  type scale\n  scale 0.125\n  resize distort\n  black_outside true\n  name Reformat2\n  xpos -1170\n  ypos -325\n }\n Grade {\n  white {0.9 0.35 0.085 1}\n  name Grade1\n  xpos -1170\n  ypos -267\n }\n BlendMat {\n  operation max\n  surfaceblend modulate\n  name BlendMat1\n  xpos -971\n  ypos -267\n }\n Noise {\n  inputs 0\n  size 750\n  zoffset {{frame/5+CustomKnobs.time_offset}}\n  octaves 6\n  lacunarity 1.45\n  gain 0.6\n  center {1440 810}\n  name Noise6\n  xpos -676\n  ypos -548\n }\nset N49e114c0 [stack 0]\n Sphere {\n  name Sphere1\n  xpos -770\n  ypos -456\n }\npush $N49e114c0\n Sphere {\n  translate {{parent.input1.translate} {parent.input1.translate} {parent.input1.translate}}\n  rotate {{parent.input1.rotate} {parent.input1.rotate} {parent.input1.rotate}}\n  scaling {{parent.input1.scaling} {parent.input1.scaling} {parent.input1.scaling}}\n  name Sphere2\n  xpos -575\n  ypos -460\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos -676\n  ypos -342\n }\npush 0\n ParticleEmitter {\n  inputs 3\n  start_frame 1001\n  emit_from faces\n  randomize_type \"randomized direction\"\n  rate {{parent.EmissionRate}}\n  rate_variation 0.5\n  rate_channel rgba.red\n  lifetime {{parent.MaxLife}}\n  lifetime_variation {{parent.LifeRange}}\n  halflife {{lifetime/2.5}}\n  velocity {{\"!\\[exists parent.input1]?7.5+(10*Explosivity/100):7.5+(10*Explosivity/100)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  velocity_variation {{0.125+abs((min(100,parent.Scatter)*0.035))}}\n  size {{\"!\\[exists parent.input1]?max(0.1,parent.ParticleSize):max(0.01,parent.ParticleSize)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  size_variation 1.6\n  mass {{\"!\\[exists parent.input1]?0.5+(1-(clamp(parent.Explosivity,0,100))/100)*3.5:(0.5+((1-(clamp(parent.Explosivity,0,100))/100)*3.5))*(((parent.input1.uniform_scale-1)*0.25)+1)\"}}\n  mass_variation {{1.5*(clamp(parent.Scatter,0,100))/100}}\n  transfer_velocity {{parent.TVelocity}}\n  transfer_window {{parent.TWindow}}\n  spread {{parent.Spread}}\n  color {0.9 0.35 0.085 1}\n  seed {{CustomKnobs.time_offset}}\n  name SparkEmit\n  xpos -676\n  ypos -267\n }\n ParticleDirectionalForce {\n  strength {{\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"}}\n  max_age {{1/(max(1,parent.SparkEmit.lifetime*1.25))}}\n  name ParticleDirectionalForce\n  selected true\n  xpos -676\n  ypos -120\n }\n ParticleDrag {\n  drag 0.6\n  name ParticleDrag\n  xpos -676\n  ypos -36\n }\n ParticleTurbulence {\n  strength {2 0.85 4}\n  scale {5 10 20}\n  name ParticleTurbulence\n  xpos -676\n  ypos 22\n }\n ParticleDrag {\n  drag 0.1\n  name ParticleDrag2\n  xpos -676\n  ypos 86\n }\n ParticleGravity {\n  to {0 {\"!\\[exists parent.input1]?-3:-1-(2*(parent.input1.uniform_scale))\"} 0}\n  min_age 0.1\n  name ParticleGravity\n  xpos -676\n  ypos 148\n }\n ParticleCurve {\n  curves {r {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    g {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    b {curve L x0.04740819708 1 S l x1 0}\n    a {curve L x0.04740819708 1 S l x0.4939824343 0.7353233099 x1 0}\n    size {}\n    mass {}}\n  seed {{HiddenSeed}}\n  name FadeOut\n  xpos -676\n  ypos 201\n }\n ParticleSettings {\n  name ParticleSettings1\n  xpos -676\n  ypos 265\n }\nset N37869af0 [stack 0]\n Dot {\n  name Dot2\n  xpos -924\n  ypos 711\n }\n Dot {\n  name Dot1\n  xpos -924\n  ypos 831\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -1457\n  ypos 312\n }\n Dot {\n  name Dot3\n  xpos -1423\n  ypos 551\n }\n Camera2 {\n  inputs 0\n  translate {0 -100 1200}\n  focal 20\n  haperture 24\n  vaperture 13.5\n  near 1\n  far 1000000\n  name Default2DCam\n  xpos -1217\n  ypos 210\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name Switch1\n  xpos -1227\n  ypos 548\n }\nset N37891e70 [stack 0]\npush $N37869af0\n Dot {\n  name Dot6\n  xpos -642\n  ypos 516\n }\nset N37898940 [stack 0]\n Constant {\n  inputs 0\n  name Constant1\n  xpos -161\n  ypos 316\n }\n Reformat {\n  resize none\n  name RootFormatSetup\n  xpos -161\n  ypos 406\n  addUserKnob {20 User}\n  addUserKnob {14 Overscan R 0 100}\n  Overscan {{parent.Overscan}}\n }\n Dot {\n  name Dot4\n  xpos -127\n  ypos 551\n }\nset N378b0eb0 [stack 0]\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  overscan {{parent.RootFormatSetup.Overscan}}\n  spatial_jitter 0.1\n  motion_vectors_type velocity\n  name NO_Motionblur\n  xpos -449\n  ypos 548\n }\n VectorBlur2 {\n  channels rgba\n  uv forward\n  alpha -rgba.alpha\n  scale 0.5\n  motion_falloff 0.65\n  offset 0\n  grow_bbox 40\n  normalize false\n  name MBlur\n  xpos -448\n  ypos 708\n }\npush $N37891e70\n Dot {\n  name Dot48\n  xpos -1192\n  ypos 640\n }\npush $N37898940\npush $N378b0eb0\n Dot {\n  name Dot5\n  xpos -126\n  ypos 640\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  ambient {{parent.RootFormatSetup.Overscan}}\n  samples 30\n  shutter {{parent.Shutter}}\n  spatial_jitter 0.025\n  motion_vectors_type velocity\n  name MultiSampleRender\n  xpos -676\n  ypos 637\n }\n Switch {\n  inputs 2\n  which {{OutputDeep==1?0:ROption}}\n  name Switch2\n  xpos -677\n  ypos 712\n }\n Switch {\n  inputs 2\n  which {{parent.ROrP}}\n  name RorP\n  xpos -677\n  ypos 827\n }\n Output {\n  name Output\n  xpos -677\n  ypos 1014\n }\n NoOp {\n  inputs 0\n  name CustomKnobs\n  tile_color 0xff9fff\n  xpos -90\n  ypos -264\n  addUserKnob {20 User}\n  addUserKnob {7 Softness R 0 100}\n  Softness 10\n  addUserKnob {3 time_offset l Seed}\n  time_offset {{parent.seed}}\n }\n Input {\n  inputs 0\n  name Axis\n  xpos -358\n  ypos -541\n  number 1\n }\n Dot {\n  name Dot7\n  xpos -324\n  ypos -479\n }\nend_group\nDeepColorCorrect2 {\n gain 3\n name DeepColorCorrect1\n tile_color 0xff\n selected true\n xpos -2531\n ypos 369\n}\nDeepMerge {\n inputs 2\n name DeepMerge2\n selected true\n xpos -2531\n ypos 465\n}\nDeepToImage {\n name DeepToImage2\n selected true\n xpos -2531\n ypos 561\n}\nNoOp {\n name LookAtMe\n tile_color 0xe955ffff\n note_font \"Verdana Bold Italic Bold Italic\"\n note_font_size 70\n selected true\n xpos -2531\n ypos 640\n}\npush $cut_paste_input\nAxis2 {\n translate {-100 0 0}\n name Axis2\n selected true\n xpos -3440\n ypos -463\n}\npush 0\nGroup {\n inputs 2\n name Sparky2D\n tile_color 0xbd4600ff\n label \"\\[if \\{\\[value ROrP]==false\\} \\{return \\\"Render Mode\\\"\\} \\{return \\\"!! PARTICLE MODE !! \\\\nENABLED\\\"\\}]\"\n note_font \"Bitstream Vera Sans Bold Bold\"\n selected true\n xpos -3450\n ypos -361\n addUserKnob {20 SparkTab l \"Sparky Settings\"}\n addUserKnob {41 start_frame l \"Initial Frame\" T SparkEmit.start_frame}\n addUserKnob {7 EmissionRate l \"Emission Amount\" R 0 100}\n EmissionRate {{curve(((frame-1001)%(1015-1001+1))+1001) K x1001 0 S 400 x1004 0 x1005 12 175 x1008 20 x1012 0 x1015 0}}\n addUserKnob {22 Refresh l \"Refresh Sim\" T \"import random\\n\\ni = int(nuke.expression('random()')*1000)\\nn = nuke.thisNode()\\nhs = n\\['HiddenSeed'].value()\\n\\nif hs == i:\\n    n\\['HiddenSeed'].setValue(hs+1)\\nelse :\\n    n\\['HiddenSeed'].setValue(i)\" +STARTLINE}\n addUserKnob {26 text l \"\" +STARTLINE T \"\\t\\tClick Refresh if modifying values doesn't show any changes.\"}\n addUserKnob {3 HiddenSeed +INVISIBLE}\n HiddenSeed 816\n addUserKnob {26 \"\"}\n addUserKnob {26 emittertext l \"\" +STARTLINE T \"Emitter Settings\"}\n addUserKnob {13 Direction t \"Set the initial velocity applied to the particles. This will orient the sparks in 3D space.\"}\n Direction {200 50 0}\n addUserKnob {7 MaxLife l \"Particle Life\" t \"Maximum amount of frames the particles will live for.\" R 10 100}\n MaxLife 60\n addUserKnob {7 LifeRange l \"Life Range\" t \"Randomizes the Life Range of the particles.\" R 0 2}\n LifeRange 0.75\n addUserKnob {3 seed l \"Particle  Seed\" t \"Randomizes the simulation.\"}\n seed 223\n addUserKnob {26 \"\"}\n addUserKnob {7 ParticleSize l \"Particle Size\" t \"Change Particle Size\" R 1 5}\n ParticleSize 2\n addUserKnob {7 Explosivity t \"Changes how much influence the initial force has on the particles.\" R 0 100}\n Explosivity 55\n addUserKnob {7 Scatter t \"Adds some randomness between particles.\" R 0 100}\n Scatter 100\n addUserKnob {41 Softness l \"Particle Softness\" T CustomKnobs.Softness}\n addUserKnob {26 \"\"}\n addUserKnob {4 ROption l \"Render Options\" t \"Multi Scanline: Output is a ScanlineRender with motionblur enabled. Can be DeepMerged\\nVectorBlur: 2D motionblur added post-render. Can get rid of sample issues, but is not Deep compatible.\" M {\"Multi Scanline\" VectorBlur \"\" \"\"}}\n addUserKnob {41 format l Format T RootFormatSetup.format}\n addUserKnob {14 Overscan R 0 100}\n Overscan 100\n addUserKnob {6 ROrP l \"Output As Particles\" t \"Check this to output Particles instead of a 2D render.\\nIt can then be plugged into a 3D scene.\" +STARTLINE}\n addUserKnob {6 OutputDeep l \"Output Deep\" t \"Warning: Will output in Multi-Scanlinde mode only. Doesn't have any effect if \\\"Output As Particles is selected\\\".\" -STARTLINE}\n addUserKnob {20 Presets}\n addUserKnob {4 AnimPreset l \"Animation Presets\" t \"None: This wont do anything. Serves as safety to not enable a preset accidentally\\nSingle Hit Heavy: Heavy hit with a double pop.\\nSingle Hit Light : Light pop of sparks.\\nWelding : Expression that will mimic a natural welding feeling.\\nWavy : Constant sim with some strong variation in birth rate.\\nConstant : Softer variation than the Wavy preset.\\nLoopy : Loops the same pop of Sparks.\" M {None \"Single Hit Heavy\" \"Single Hit Light\" Welding Wavy Constant Loopy \"\" \"\" \"\" \"\" \"\"}}\n AnimPreset Loopy\n addUserKnob {22 Apply l \"Apply Preset\" t \"    \" T \"def checkPreset():\\n    preset = int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    if preset ==0:\\n        return False\\n    else:\\n        return preset\\n\\ndef checkFrame():\\n    InitFrame = nuke.getInput(\\\"Enter Initial Frame\\\", '1001')\\n    if InitFrame:\\n        try:\\n            InitFrame = int(InitFrame)\\n            return InitFrame\\n        except ValueError:\\n            nuke.message(\\\"Not a valid frame number\\\")\\n            return False\\n\\n\\nif checkPreset() == False:\\n    nuke.ask(\\\"No preset selected\\\")\\nelse:\\n    n=nuke.thisNode()\\['EmissionRate']\\n    s=int(nuke.thisNode()\\['AnimPreset'].getValue())\\n    cf=checkFrame()\\n    if cf!=False and cf!=None:\\n        if s == 1:        \\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 400 x%v2 0 12 x%v3 175 x%v4 20 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+6))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+12))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Heavy Preset\\\")\\n        elif s == 2:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve K x%v1 0 S 140 x%v2 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Single Hit Light Preset\\\")\\n        elif s == 3:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"max(0,(random(frame+seed)*120*((sin(frame+seed)+1)*0.5)-12))*3\\\")\\n            nuke.message(\\\"Applied Welding Preset\\\")\\n        elif s == 4:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame+seed)*120*((sin(frame+seed)+1)*0.5)\\\")\\n            nuke.message(\\\"Applied Wavy Preset\\\")\\n        elif s == 5:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setExpression(\\\"random(frame/5+seed)*100+60\\\")\\n            nuke.message(\\\"Applied Constant Preset\\\")\\n        else:\\n            nuke.thisNode()\\['start_frame'].setValue(cf)\\n            n.clearAnimated()\\n            n.setAnimated()\\n            sCurve = '\\{curve(((frame-%v1)%(%v6-%v1+1))+%v1) K x%v1 0 S 400 x%v2 0 x%v3 12 175 x%v4 20 x%v5 0 x%v6 0\\}'\\n            sCurve=sCurve.replace(\\\"%v1\\\",str(cf))\\n            sCurve=sCurve.replace(\\\"%v2\\\",str(cf+3))\\n            sCurve=sCurve.replace(\\\"%v3\\\",str(cf+4))\\n            sCurve=sCurve.replace(\\\"%v4\\\",str(cf+7))\\n            sCurve=sCurve.replace(\\\"%v5\\\",str(cf+11))\\n            sCurve=sCurve.replace(\\\"%v6\\\",str(cf+14))\\n            n.fromScript(sCurve)\\n            nuke.message(\\\"Applied Loopy Preset\\\")\\n\\n\" +STARTLINE}\n addUserKnob {20 Advanced l \"Advanced Settings\"}\n addUserKnob {7 TVelocity l \"Transfer Velocity\"}\n TVelocity 0.5\n addUserKnob {7 TWindow l \"Transfer window\" R 0 5}\n TWindow 2\n addUserKnob {7 Spread l \"Emission Spread\"}\n Spread 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 samples l \"Scanline Samples\" T MultiSampleRender.samples}\n addUserKnob {7 Shutter}\n Shutter 0.5\n addUserKnob {41 shutteroffset l \"Shutter Offset\" T MultiSampleRender.shutteroffset}\n addUserKnob {41 shuttercustomoffset l \"\" -STARTLINE T MultiSampleRender.shuttercustomoffset}\n addUserKnob {20 Instructions}\n addUserKnob {26 info l \"\" +STARTLINE T \"Sparky v1.2\\n\\nEasy to use particle setup for Sparks.\\n\\nOutputs an image by default, but can be configured to be rendered through a specific Camera or\\nto output as particles, which allows you to plug Sparky into a 3D scene.\\n\\nIf you wish to use the 3D version of this Gizmo, simply plug your Camera and plug an Axis to \\nmove and place the sparks where you need them.\\n\\nFor more information about presets and changelogs, head to the Nukepedia page!\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode9\n  tile_color 0x557fffff\n  label \"Welcome Curious Comper!\\n\\nI hope you'll find answers\\nto what you are looking for\\ninside here! <img src=\\\"ParticleBounce.png\\\">\"\n  note_font \"Bitstream Vera Sans\"\n  note_font_size 111\n  xpos -2486\n  ypos -861\n  bdwidth 2780\n  bdheight 1970\n }\n ColorWheel {\n  inputs 0\n  format \"256 256 0 0 256 256 1 square_256\"\n  gamma 0.45\n  name ColorWheel1\n  xpos -1170\n  ypos -537\n }\n Saturation {\n  saturation 0\n  mode Maximum\n  name Saturation1\n  xpos -1170\n  ypos -427\n }\n FilterErode {\n  channels all\n  size {{abs(parent.CustomKnobs.Softness)}}\n  filter gaussian\n  name ErodeSoft\n  xpos -1170\n  ypos -384\n }\n Reformat {\n  type scale\n  scale 0.125\n  resize distort\n  black_outside true\n  name Reformat2\n  xpos -1170\n  ypos -325\n }\n Grade {\n  white {0.9 0.35 0.085 1}\n  name Grade1\n  xpos -1170\n  ypos -267\n }\n BlendMat {\n  operation max\n  surfaceblend modulate\n  name BlendMat1\n  xpos -971\n  ypos -267\n }\n Noise {\n  inputs 0\n  size 750\n  zoffset {{frame/5+CustomKnobs.time_offset}}\n  octaves 6\n  lacunarity 1.45\n  gain 0.6\n  center {1440 810}\n  name Noise6\n  xpos -676\n  ypos -548\n }\nset N4aba6030 [stack 0]\n Sphere {\n  name Sphere1\n  xpos -770\n  ypos -456\n }\npush $N4aba6030\n Sphere {\n  translate {{parent.input1.translate} {parent.input1.translate} {parent.input1.translate}}\n  rotate {{parent.input1.rotate} {parent.input1.rotate} {parent.input1.rotate}}\n  scaling {{parent.input1.scaling} {parent.input1.scaling} {parent.input1.scaling}}\n  name Sphere2\n  xpos -575\n  ypos -460\n }\n Switch {\n  inputs 2\n  which {{\"!\\[exists parent.input1]\"}}\n  name Switch3\n  xpos -676\n  ypos -342\n }\npush 0\n ParticleEmitter {\n  inputs 3\n  start_frame 1001\n  emit_from faces\n  randomize_type \"randomized direction\"\n  rate {{parent.EmissionRate}}\n  rate_variation 0.5\n  rate_channel rgba.red\n  lifetime {{parent.MaxLife}}\n  lifetime_variation {{parent.LifeRange}}\n  halflife {{lifetime/2.5}}\n  velocity {{\"!\\[exists parent.input1]?7.5+(10*Explosivity/100):7.5+(10*Explosivity/100)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  velocity_variation {{0.125+abs((min(100,parent.Scatter)*0.035))}}\n  size {{\"!\\[exists parent.input1]?max(0.1,parent.ParticleSize):max(0.01,parent.ParticleSize)*((parent.input1.uniform_scale-1)*0.25+1)\"}}\n  size_variation 1.6\n  mass {{\"!\\[exists parent.input1]?0.5+(1-(clamp(parent.Explosivity,0,100))/100)*3.5:(0.5+((1-(clamp(parent.Explosivity,0,100))/100)*3.5))*(((parent.input1.uniform_scale-1)*0.25)+1)\"}}\n  mass_variation {{1.5*(clamp(parent.Scatter,0,100))/100}}\n  transfer_velocity {{parent.TVelocity}}\n  transfer_window {{parent.TWindow}}\n  spread {{parent.Spread}}\n  color {0.9 0.35 0.085 1}\n  seed {{CustomKnobs.time_offset}}\n  name SparkEmit\n  xpos -676\n  ypos -267\n }\n ParticleDirectionalForce {\n  strength {{\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"} {\"parent.Direction*(\\[exists parent.input1]?1+(parent.input1.uniform_scale-1)*0.85:1)\"}}\n  max_age {{1/(max(1,parent.SparkEmit.lifetime*1.25))}}\n  name ParticleDirectionalForce\n  selected true\n  xpos -676\n  ypos -120\n }\n ParticleDrag {\n  drag 0.6\n  name ParticleDrag\n  xpos -676\n  ypos -36\n }\n ParticleTurbulence {\n  strength {2 0.85 4}\n  scale {5 10 20}\n  name ParticleTurbulence\n  xpos -676\n  ypos 22\n }\n ParticleDrag {\n  drag 0.1\n  name ParticleDrag2\n  xpos -676\n  ypos 86\n }\n ParticleGravity {\n  to {0 {\"!\\[exists parent.input1]?-3:-1-(2*(parent.input1.uniform_scale))\"} 0}\n  min_age 0.1\n  name ParticleGravity\n  xpos -676\n  ypos 148\n }\n ParticleCurve {\n  curves {r {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    g {curve L x0.04740819708 1 S l x0.4987964034 0.7955223322 x1 0}\n    b {curve L x0.04740819708 1 S l x1 0}\n    a {curve L x0.04740819708 1 S l x0.4939824343 0.7353233099 x1 0}\n    size {}\n    mass {}}\n  seed {{HiddenSeed}}\n  name FadeOut\n  xpos -676\n  ypos 201\n }\n ParticleSettings {\n  name ParticleSettings1\n  xpos -676\n  ypos 265\n }\nset N37cd0d90 [stack 0]\n Dot {\n  name Dot2\n  xpos -924\n  ypos 711\n }\n Dot {\n  name Dot1\n  xpos -924\n  ypos 831\n }\n Input {\n  inputs 0\n  name Camera\n  xpos -1457\n  ypos 312\n }\n Dot {\n  name Dot3\n  xpos -1423\n  ypos 551\n }\n Camera2 {\n  inputs 0\n  translate {0 -100 1200}\n  focal 20\n  haperture 24\n  vaperture 13.5\n  near 1\n  far 1000000\n  name Default2DCam\n  xpos -1217\n  ypos 210\n }\n Switch {\n  inputs 2\n  which {{\"\\[exists parent.input0]\"}}\n  name Switch1\n  xpos -1227\n  ypos 548\n }\nset N37cf9110 [stack 0]\npush $N37cd0d90\n Dot {\n  name Dot6\n  xpos -642\n  ypos 516\n }\nset N37d03b60 [stack 0]\n Constant {\n  inputs 0\n  name Constant1\n  xpos -161\n  ypos 316\n }\n Reformat {\n  resize none\n  name RootFormatSetup\n  xpos -161\n  ypos 406\n  addUserKnob {20 User}\n  addUserKnob {14 Overscan R 0 100}\n  Overscan {{parent.Overscan}}\n }\n Dot {\n  name Dot4\n  xpos -127\n  ypos 551\n }\nset N37d1c0d0 [stack 0]\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  overscan {{parent.RootFormatSetup.Overscan}}\n  spatial_jitter 0.1\n  motion_vectors_type velocity\n  name NO_Motionblur\n  xpos -449\n  ypos 548\n }\n VectorBlur2 {\n  channels rgba\n  uv forward\n  alpha -rgba.alpha\n  scale 0.5\n  motion_falloff 0.65\n  offset 0\n  grow_bbox 40\n  normalize false\n  name MBlur\n  xpos -448\n  ypos 708\n }\npush $N37cf9110\n Dot {\n  name Dot48\n  xpos -1192\n  ypos 640\n }\npush $N37d03b60\npush $N37d1c0d0\n Dot {\n  name Dot5\n  xpos -126\n  ypos 640\n }\n ScanlineRender {\n  inputs 3\n  conservative_shader_sampling false\n  antialiasing high\n  ambient {{parent.RootFormatSetup.Overscan}}\n  samples 30\n  shutter {{parent.Shutter}}\n  spatial_jitter 0.025\n  motion_vectors_type velocity\n  name MultiSampleRender\n  xpos -676\n  ypos 637\n }\n Switch {\n  inputs 2\n  which {{OutputDeep==1?0:ROption}}\n  name Switch2\n  xpos -677\n  ypos 712\n }\n Switch {\n  inputs 2\n  which {{parent.ROrP}}\n  name RorP\n  xpos -677\n  ypos 827\n }\n Output {\n  name Output\n  xpos -677\n  ypos 1014\n }\n NoOp {\n  inputs 0\n  name CustomKnobs\n  tile_color 0xff9fff\n  xpos -90\n  ypos -264\n  addUserKnob {20 User}\n  addUserKnob {7 Softness R 0 100}\n  Softness 10\n  addUserKnob {3 time_offset l Seed}\n  time_offset {{parent.seed}}\n }\n Input {\n  inputs 0\n  name Axis\n  xpos -358\n  ypos -541\n  number 1\n }\n Dot {\n  name Dot7\n  xpos -324\n  ypos -479\n }\nend_group\nGrade {\n white 2\n name Grade1\n selected true\n xpos -3450\n ypos -286\n}\nGlow2 {\n brightness 3\n size 3\n name Glow1\n selected true\n xpos -3450\n ypos -229\n}\nCheckerBoard2 {\n inputs 0\n name CheckerBoard3\n selected true\n xpos -3244\n ypos -385\n}\nGrade {\n white 0.125\n name Grade2\n selected true\n xpos -3244\n ypos -313\n}\nMerge2 {\n inputs 2\n name Merge1\n selected true\n xpos -3244\n ypos -229\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_UVEditor_demo_clean.nk",
    "content": "#write_info Write1 file:\"\" format:\"256 256 1\" chans:\":rgba.red:rgba.green:rgba.blue:\" framerange:\"1001 1050\" fps:\"0\" colorspace:\"default\" datatype:\"unknown\" transfer:\"unknown\" views:\"main\" colorManagement:\"Nuke\"\nRoot {\n inputs 0\n frame 1027\n first_frame 1001\n last_frame 1050\n format \"2048 1556 0 0 2048 1556 1 2K_Super_35(full-ap)\"\n proxy_type scale\n proxy_format \"1024 778 0 0 1024 778 1 1K_Super_35(full-ap)\"\n}\nBackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x354c4cff\n label \"preview in uv space\"\n note_font_size 42\n xpos -383\n ypos -672\n bdwidth 469\n bdheight 698\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n tile_color 0x354c4cff\n label \"udim - modify / export\"\n note_font_size 42\n xpos 200\n ypos -670\n bdwidth 622\n bdheight 696\n}\nBackdropNode {\n inputs 0\n name BackdropNode3\n tile_color 0x354c4cff\n label \"uvtile - map to geo directly\"\n note_font_size 42\n xpos 992\n ypos -668\n bdwidth 646\n bdheight 689\n}\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0x354c4cff\n label \"UV pass - for STmap\"\n note_font_size 42\n xpos 1762\n ypos -527\n bdwidth 594\n bdheight 558\n}\nAxis2 {\n inputs 0\n rotate {0 {curve x1001 -20 x1050 20} 0}\n name Axis2\n xpos 228\n ypos -546\n}\nCamera2 {\n translate {66.90603638 35.25645828 -5.300000668}\n rotate {-24.62797338 90.0000025 0}\n name Camera4\n xpos 228\n ypos -424\n}\nDot {\n name Dot5\n xpos 252\n ypos -240\n}\nset N8decb800 [stack 0]\nFrameHold {\n first_frame 1001\n name FrameHold2\n xpos 305\n ypos -250\n}\nCheckerBoard2 {\n inputs 0\n name CheckerBoard2\n xpos 415\n ypos -372\n}\nProject3D2 {\n inputs 2\n name Project3D2\n xpos 415\n ypos -244\n}\nReadGeo2 {\n inputs 0\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo8\n xpos 531\n ypos -243\n}\nGroup {\n inputs 2\n name UVEditor3\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x6666ff\n xpos 466\n ypos -154\n addUserKnob {20 tab_general l General}\n addUserKnob {3 texSize l \"texture size\"}\n texSize 256\n addUserKnob {41 filter T SR.filter}\n addUserKnob {41 antialiasing T SR.antialiasing}\n addUserKnob {26 \"\"}\n addUserKnob {41 view_wireframe l \"view wireframe\" T menu02.view_wireframe}\n addUserKnob {7 wireframe_size l \"wireframe size\" +DISABLED R 0.1 10}\n wireframe_size 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 output T menu01.output}\n addUserKnob {30 uv_shift l INVISIBLE +INVISIBLE}\n addUserKnob {41 scanRes +INVISIBLE T store.scanRes}\n addUserKnob {22 udim_export l export T \"thisGRP = nuke.thisGroup()\\ndataCheckNode = nuke.toNode('dataCheck')\\n\\n########################################################\\n\\nusrUV = thisGRP\\['uv_shift'].getValue()\\ndataReturn = \\[]\\n\\nprogBar = nuke.ProgressTask('Checking UV')\\njobCount = 0\\n\\nfor v in range (0, 10) :\\n  for u in range (0, 10) :\\n\\n    ### progress bar\\n    jobCount += 1\\n    progShow = int(jobCount/100 * 100)\\n    if progBar.isCancelled() :\\n      break;\\n    progBar.setProgress(progShow)\\n    #################\\n\\n    thisGRP\\['uv_shift'].setValue(\\[u,v])\\n    nuke.execute(dataCheckNode, nuke.frame(), nuke.frame())\\n    if dataCheckNode\\['maxlumapixvalue'].getValue() != \\[0.0, 0.0, 0.0] :\\n      dataReturn.append(1)\\n    else :\\n      dataReturn.append(0)\\n\\ndel progBar\\n\\ndataCheckNode\\['maxlumapixdata'].clearAnimated()\\ndataCheckNode\\['maxlumapixvalue'].clearAnimated()\\ndataCheckNode\\['minlumapixdata'].clearAnimated()\\ndataCheckNode\\['minlumapixvalue'].clearAnimated()\\n\\nif len(dataReturn) == 100 :\\n\\tfor i in range (0, 100) :\\n\\t  if dataReturn\\[i] == 1 :\\n\\t    uvMax = i\\n\\n\\tthisGRP\\['uv_shift'].setValue(usrUV)\\n\\n\\t########################################################\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\troot = getLevel()\\n\\n\\troot.begin()\\n\\toutFR = nuke.nodes.FrameRange()\\n\\toutFR\\['first_frame'].setValue(1001)\\n\\toutFR\\['last_frame'].setValue(1001 + uvMax)\\n\\toutFR\\['label'].setValue( 'udim range : 1001 - \\{0\\}'.format( str(1001 + uvMax) ) )\\n\\toutFR.setInput(0, thisGRP)\\n\\toutFR.setXYpos(int(thisGRP\\['xpos'].value()), int(thisGRP\\['ypos'].value()+80))\\n\\n\\texpDot = nuke.nodes.Dot()\\n\\texpDot\\['label'].setValue('Texture modify here : swap the paint/patch texture into udim frame')\\n\\texpDot.setInput(0, outFR)\\n\\n\\tyDot = nuke.nodes.Dot()\\n\\tyDot.setInput(0, expDot)\\n\\n\\tuvGRP = nuke.nodes.Group()\\n\\tuvGRP\\['label'].setValue('udim stitch for nuke')\\n\\n\\tnDot = nuke.nodes.Dot()\\n\\tnDot\\['label'].setValue('Connect to Geo')\\n\\troot.end()\\n\\n\\tuvGRP.begin()\\n\\tinNode = nuke.nodes.Input(name='udim')\\n\\tcropNode = nuke.nodes.Crop()\\n\\tcropNode\\['crop'].setValue(1)\\n\\tcropNode.setInput(0, inNode)\\n\\tallDot = nuke.nodes.Dot()\\n\\tallDot.setInput(0, cropNode)\\n\\n\\tuvMerge = nuke.nodes.Merge2()\\n\\toutNode = nuke.nodes.Output()\\n\\toutNode.setInput(0, uvMerge)\\n\\n\\tfor i in range (0, uvMax+1) :\\n\\t  uDimHold = nuke.nodes.FrameHold()\\n\\t  uDimHold\\['first_frame'].setValue(1001+i)\\n\\t  uDimHold.setInput(0, allDot)\\n\\t  \\n\\t  uvTran = nuke.nodes.Transform()\\n\\t  uvTran.addKnob(nuke.UV_Knob('uv_offset'))\\n\\t  if i < 10 :\\n\\t    u = i\\n\\t    v = 0\\n\\t  else :\\n\\t    if i < 100 :\\n\\t      u = int(str(i)\\[1])\\n\\t      v = int(str(i)\\[0])\\n\\t  uvTran\\['uv_offset'].setValue(\\[u, v])\\n\\t  uvTran\\['translate'].setExpression('input.width*uv_offset.u', 0)\\n\\t  uvTran\\['translate'].setExpression('input.height*uv_offset.v', 1)\\n\\t  uvTran.setInput(0, uDimHold)\\n\\n\\t  uvMerge.setInput(i+3, uvTran)\\n\\n\\n\\tuvGRP.end()\\n\\n\\tuvGRP.setInput(0, yDot)\\n\\tnDot.setInput(0, uvGRP)\\n\\n\\troot.begin()\\n\\texWrite = nuke.nodes.Write()\\n\\texWrite.setInput(0, yDot)\\n\\texWrite\\['label'].setValue('export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]')\\n\\troot.end()\\n\\n\\tdel uvMax\\nelse :\\n\\tnuke.message('Scan process terminated by user.')\\n\\ndel dataReturn\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 font T store.font}\n addUserKnob {6 disable_error l \"disable text\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-04-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fix&nbsp;misspelling&nbsp;of&nbsp;knob's&nbsp;label<br>-&nbsp;fix&nbsp;not&nbsp;working&nbsp;disable&nbsp;text&nbsp;knob<br><br>1.3<br>-&nbsp;fix&nbsp;font&nbsp;issue<br>&nbsp;&nbsp;works&nbsp;on&nbsp;linux,&nbsp;mac&nbsp;&&nbsp;windows<br><br>1.2<br>-&nbsp;preview&nbsp;in&nbsp;uv&nbsp;space&nbsp;set&nbsp;limited&nbsp;<br>&nbsp;&nbsp;in&nbsp;1024&nbsp;resolution&nbsp;for&nbsp;not&nbsp;drag&nbsp;<br>&nbsp;&nbsp;down&nbsp;speed&nbsp;purpose.<br>-&nbsp;added&nbsp;show&nbsp;tile&nbsp;number<br>-&nbsp;changed&nbsp;uv&nbsp;combine&nbsp;to&nbsp;uv&nbsp;stitch<br>&nbsp;&nbsp;in&nbsp;export&nbsp;group<br>-&nbsp;code&nbsp;update<br>-&nbsp;scan&nbsp;size&nbsp;reduce,&nbsp;speed&nbsp;up&nbsp;process\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1755\n  ypos 302\n  bdwidth 263\n  bdheight 296\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x424242ff\n  label \"UV preview\"\n  note_font_size 42\n  xpos -824\n  ypos 451\n  bdwidth 343\n  bdheight 672\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x424242ff\n  label udim\n  note_font_size 42\n  xpos -328\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x424242ff\n  label uvtile\n  note_font_size 42\n  xpos 109\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n Input {\n  inputs 0\n  name tex\n  xpos -1000\n  ypos 83\n  number 1\n }\n Wireframe {\n  inputs 0\n  line_width {{wireframe_size}}\n  name Wireframe1\n  xpos -866\n  ypos 207\n }\n Switch {\n  inputs 2\n  which {{!view_wireframe}}\n  name Switch2\n  xpos -1000\n  ypos 207\n }\n Input {\n  inputs 0\n  name geo\n  xpos -1171\n  ypos 82\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -1171\n  ypos 207\n }\n Dot {\n  name Dot6\n  xpos -1137\n  ypos 287\n }\n Dot {\n  name Dot1\n  xpos -1137\n  ypos 384\n }\nset Na6c8e000 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{store.scanRes}}\n  box_height {{box_width}}\n  box_fixed true\n  name scanRes\n  xpos -1061\n  ypos 595\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan {{store.scanRes*10}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR1\n  xpos -1171\n  ypos 595\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -1171\n  ypos 675\n }\n Transform {\n  translate {{store.scanRes*uv_offset.u*-1} {store.scanRes*uv_offset*-1}}\n  shutteroffset centred\n  name pos_shift\n  xpos -1171\n  ypos 740\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{uv_shift} {uv_shift}}\n }\n Crop {\n  box {0 0 {store.scanRes} {store.scanRes}}\n  reformat true\n  crop false\n  name Crop1\n  xpos -1171\n  ypos 801\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  ROI {0 0 {store.scanRes} {store.scanRes}}\n  intensitydata {0 0 0 0}\n  maxlumapixvalue {0 0 0}\n  minlumapixvalue {0 0 0}\n  name dataCheck\n  xpos -1171\n  ypos 881\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['output'].getValue() == 1 :\\n    thisGRP\\['udim_export'].setEnabled(True)\\nelse :\\n    thisGRP\\['udim_export'].setEnabled(False)\\n\"\n  xpos -1669\n  ypos 392\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"preview in uv space\" udim \"uv tile\" \"uv pass\"}}\n  output udim\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize*10}}\n  box_height {{texSize*10}}\n  box_fixed true\n  resize none\n  name Reformat4\n  xpos 719\n  ypos 638\n }\n Expression {\n  expr0 x/width\n  expr1 y/height\n  channel2 none\n  channel3 none\n  name uv\n  xpos 719\n  ypos 720\n }\n Multiply {\n  channels rgb\n  value {10 10 1 1}\n  name Multiply1\n  xpos 719\n  ypos 798\n }\n Reformat {\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{texSize}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat3\n  xpos 719\n  ypos 878\n }\n Dot {\n  name Dot8\n  xpos 753\n  ypos 1225\n }\npush $Na6c8e000\n Dot {\n  name Dot4\n  xpos -780\n  ypos 384\n }\nset Na68b0000 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{box_width}}\n  box_fixed true\n  name res\n  xpos 5\n  ypos 381\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  filter Impulse\n  projection_mode uv\n  overscan {{texSize*10 x1009 1948}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR\n  xpos -154\n  ypos 381\n }\n Dot {\n  name Dot2\n  xpos -120\n  ypos 628\n }\nset Na5309000 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -292\n  ypos 625\n }\n Text {\n  output rgb\n  cliptype none\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 {\"( ( texSize * 10 ) / 1024 ) *25\"}}\n  scale {{\"( texSize * 10 ) / 1024\"}}\n  name Text2\n  xpos -292\n  ypos 707\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply3\n  xpos -292\n  ypos 769\n }\n Dot {\n  name Dot13\n  xpos -258\n  ypos 821\n }\n Dot {\n  name Dot11\n  xpos -178\n  ypos 821\n }\nset Naa775800 [stack 0]\n Dot {\n  name Dot12\n  xpos 221\n  ypos 821\n }\npush $Na5309000\n Dot {\n  name Dot5\n  xpos 281\n  ypos 628\n }\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge4\n  xpos 247\n  ypos 879\n }\n Crop {\n  box {0 0 {texSize*10} {texSize*10}}\n  crop false\n  name Crop4\n  xpos 247\n  ypos 961\n }\n Dot {\n  name Dot7\n  xpos 281\n  ypos 1204\n }\npush $Naa775800\npush $Na5309000\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -154\n  ypos 879\n }\n Transform {\n  translate {{texSize*uv_offset.u*-1 i} {texSize*uv_offset*-1 i}}\n  shutteroffset centred\n  name pos_shift1\n  xpos -154\n  ypos 961\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{\"frame <=1001 ? 0 : (frame-1)%10\"} {\"frame < 1000 ? 0 : int(((frame-1)/10)-100)\"}}\n }\n Dot {\n  name Dot3\n  xpos -120\n  ypos 1202\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat2\n  xpos -693\n  ypos 712\n }\n Dot {\n  name Dot9\n  xpos -659\n  ypos 770\n }\nset Na6c60c00 [stack 0]\n Dot {\n  name Dot10\n  xpos -533\n  ypos 770\n }\n Text {\n  output rgb\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 25}\n  name Text1\n  xpos -567\n  ypos 818\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply2\n  xpos -567\n  ypos 887\n }\npush $Na6c60c00\n Grid {\n  name Grid1\n  xpos -693\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -693\n  ypos 887\n }\npush $Na68b0000\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat5\n  xpos -689\n  ypos 531\n }\n Reformat {\n  type scale\n  scale 0.1\n  resize none\n  name Reformat6\n  xpos -689\n  ypos 594\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan 2560\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR2\n  xpos -814\n  ypos 594\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -814\n  ypos 887\n }\n Crop {\n  box {0 0 1024 1024}\n  reformat true\n  crop false\n  name Crop2\n  xpos -814\n  ypos 969\n }\n Switch {\n  inputs 4\n  which {{output}}\n  name Switch1\n  xpos -814\n  ypos 1412\n }\n Output {\n  name Output1\n  xpos -814\n  ypos 1597\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['view_wireframe'].getValue() == 1 :\\n        thisGRP\\['wireframe_size'].setEnabled(True)\\nelse :\\n        thisGRP\\['wireframe_size'].setEnabled(False)\\n\"\n  xpos -1668\n  ypos 484\n  addUserKnob {20 User}\n  addUserKnob {6 view_wireframe l \"view wireframe\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1419\n  ypos 388\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\" +STARTLINE}\n  addUserKnob {3 scanRes}\n  scanRes 64\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\nend_group\nFrameRange {\n first_frame 1001\n last_frame 1022\n time \"\"\n name FrameRange1\n label \"udim range : 1001 - 1022\"\n xpos 466\n ypos -90\n}\nDot {\n name Dot2\n label \"Texture modify here : swap the paint/patch texture into udim frame\"\n xpos 500\n ypos -10\n}\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush2 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42e40000 x435e0000 x3d904090}\n       {x42e50000 x435f0000 x3e044084}\n       {x42e40000 x43600000 x3ea24ca2}\n       {x42e20000 x43600000 x3eb458b4}\n       {x42e00000 x435f8000 x3eb458b4}\n       {x42de0000 x435f0000 x3eb658b6}\n       {x42dd0000 x435d8000 x3eb658b6}\n       {x42da0000 x435c8000 x3eb658b6}\n       {x42d80000 x435b8000 x3eb658b6}\n       {x42d40000 x435a0000 x3eba58ba}\n       {x42d20000 x43580000 x3eb958b9}\n       {x42cf0000 x43568000 x3eba58ba}\n       {x42cc0000 x43550000 x3eb958b9}\n       {x42ca0000 x43538000 x3eba58ba}\n       {x42c90000 x43528000 x3eba58ba}\n       {x42c90000 x43518000 x3eb958b9}\n       {x42ca0000 x43508000 x3eb958b9}\n       {x42cc0000 x43500000 x3eb958b9}\n       {x42cf0000 x434e8000 x3eb958b9}\n       {x42d30000 x434e0000 x3eba58ba}\n       {x42d80000 x434d0000 x3eba58ba}\n       {x42dc0000 x434c8000 x3eba58ba}\n       {x42e00000 x434b8000 x3eb958b9}\n       {x42e50000 x434b0000 x3eba58ba}\n       {x42e80000 x43498000 x3eb958b9}\n       {x42ec0000 x43490000 x3eb958b9}\n       {x42ef0000 x43488000 x3eba58ba}\n       {x42f20000 x43478000 x3eba58ba}\n       {x42f20000 x43460000 x3ebb5cbb}\n       {x42f20000 x43448000 x3ebc5cbc}\n       {x42f10000 x43438000 x3ebe5cbe}\n       {x42ef0000 x43420000 x3ebe5cbe}\n       {x42ec0000 x43410000 x3ebd5cbd}\n       {x42e80000 x433f0000 x3ebf5cbf}\n       {x42e40000 x433d8000 x3ebf5cbf}\n       {x42e00000 x433c8000 x3ebf5cbf}\n       {x42de0000 x433b0000 x3ec15cc1}\n       {x42db0000 x433a0000 x3ebe5cbe}\n       {x42da0000 x43390000 x3ebe5cbe}\n       {x42dc0000 x43388000 x3ebf5cbf}\n       {x42de0000 x43380000 x3ebf5cbf}\n       {x42e30000 x43378000 x3ebf5cbf}\n       {x42e70000 x43370000 x3ec25cc2}\n       {x42ec0000 x43360000 x3ec360c3}\n       {x42ef0000 x43350000 x3ec360c3}\n       {x42f30000 x43348000 x3ec360c3}\n       {x42f70000 x43338000 x3ec360c3}\n       {x42fa0000 x43320000 x3ec25cc2}\n       {x42fc0000 x43308000 x3ec560c5}\n       {x42fe0000 x432f8000 x3ec660c6}\n       {x42fe0000 x432e0000 x3ec960c9}\n       {x42fe0000 x432c0000 x3ecc64cc}\n       {x42fd0000 x432a8000 x3ecd64cd}\n       {x42fa0000 x43290000 x3ecd64cd}\n       {x42f70000 x43268000 x3ed064d0}\n       {x42f30000 x43250000 x3ecd64cd}\n       {x42ef0000 x43238000 x3ecf64cf}\n       {x42e90000 x43220000 x3ed064d0}\n       {x42e50000 x43210000 x3ed064d0}\n       {x42e20000 x43208000 x3ed064d0}\n       {x42df0000 x43200000 x3ecf64cf}\n       {x42e30000 x43208000 x3ed264d2}\n       {x42e60000 x43210000 x3ed468d4}\n       {x42ea0000 x43218000 x3ed264d2}\n       {x42f00000 x43218000 x3ed468d4}\n       {x42f60000 x43218000 x3ed264d2}\n       {x42fc0000 x43208000 x3ed568d5}\n       {x43020000 x431f8000 x3edc6cdc}\n       {x43060000 x431e0000 x3ee970e9}\n       {x430a8000 x431b8000 x3eef74ef}\n       {x430d0000 x43198000 x3ef074f0}\n       {x430f8000 x43170000 x3ef274f2}\n       {x43100000 x43150000 x3ef374f3}\n       {x43100000 x43128000 x3ef678f6}\n       {x430f8000 x43110000 x3ef778f7}\n       {x430d8000 x43100000 x3efa78fa}\n       {x430b8000 x430f0000 x3efb78fb}\n       {x43088000 x430f0000 x3efa78fa}\n       {x43060000 x43100000 x3efb78fb}\n       {x43028000 x43118000 x3efc7cfc}\n       {x43000000 x43148000 x3efc7cfc}\n       {x42f20000 x431b8000 x3efa78fa}\n       {x42ed0000 x43200000 x3ef778f7}\n       {x42e70000 x43248000 x3ef478f4}\n       {x42e40000 x43298000 x3ee970e9}\n       {x42e00000 x432e8000 x3ee570e5}\n       {x42df0000 x43328000 x3ee06ce0}\n       {x42df0000 x43360000 x3ee06ce0}\n       {x42df0000 x43390000 x3ee06ce0}\n       {x42e00000 x433b0000 x3edd6cdd}\n       {x42e30000 x433d0000 x3edf6cdf}\n       {x42e50000 x433e8000 x3edd6cdd}\n       {x42e80000 x433f8000 x3ede6cde}\n       {x42ea0000 x43410000 x3edd6cdd}\n       {x42ee0000 x43410000 x3ede6cde}\n       {x42f10000 x43418000 x3ede6cde}\n       {x42f30000 x43418000 x3edd6cdd}\n       {x42f70000 x43410000 x3edb6cdb}\n       {x42fa0000 x43400000 x3ed968d9}\n       {x42fc0000 x433f8000 x3ed668d6}\n       {x42fe0000 x433f0000 x3ed568d5}\n       {x43008000 x433e8000 x3ed768d7}\n       {x43018000 x433e8000 x3ed668d6}\n       {x43028000 x43410000 x3ed968d9}\n       {x43030000 x43428000 x3ed868d8}\n       {x43038000 x43440000 x3edb6cdb}\n       {x43040000 x43468000 x3edd6cdd}\n       {x43050000 x43490000 x3edd6cdd}\n       {x43050000 x434c8000 x3edf6cdf}\n       {x43050000 x43500000 x3edf6cdf}\n       {x43050000 x43530000 x3edf6cdf}\n       {x43050000 x43570000 x3ee06ce0}\n       {x43050000 x435a8000 x3ee26ce2}\n       {x43050000 x435d8000 x3ee26ce2}\n       {x43050000 x435f8000 x3ee770e7}\n       {x43050000 x43610000 x3eeb70eb}\n       {x43050000 x43620000 x3eec74ec}\n       {x43050000 x43630000 x3eec74ec}\n       {x43050000 x43640000 x3eef74ef}\n       {x43058000 x43628000 x3eec74ec}\n       {x43060000 x43618000 x3eed74ed}\n       {x43068000 x43608000 x3eec74ec}\n       {x43078000 x435f0000 x3eed74ed}\n       {x43078000 x435c8000 x3eed74ed}\n       {x43080000 x435a8000 x3eed74ed}\n       {x43080000 x43580000 x3ef074f0}\n       {x43080000 x43568000 x3eef74ef}\n       {x43080000 x43558000 x3ef074f0}\n       {x43088000 x43578000 x3ef274f2}\n       {x43090000 x435a0000 x3ef174f1}\n       {x43090000 x435c8000 x3ef174f1}\n       {x430a0000 x435f8000 x3ef074f0}\n       {x430a8000 x43618000 x3ef174f1}\n       {x430a8000 x43630000 x3eef74ef}\n       {x430b8000 x43648000 x3ef074f0}\n       {x430d0000 x43648000 x3ef074f0}\n       {x430f8000 x43628000 x3eef74ef}\n       {x43118000 x43608000 x3eef74ef}\n       {x43150000 x435c8000 x3eef74ef}\n       {x43180000 x43580000 x3ef174f1}\n       {x431b8000 x43530000 x3ef678f6}\n       {x431f0000 x434e0000 x3ef578f5}\n       {x43210000 x43490000 x3ef878f8}\n       {x43238000 x43440000 x3ef878f8}\n       {x43240000 x433f0000 x3ef778f7}\n       {x43240000 x433a0000 x3ef878f8}\n       {x43230000 x43358000 x3ef778f7}\n       {x43208000 x43320000 x3ef878f8}\n       {x431e0000 x432f0000 x3ef878f8}\n       {x431a8000 x432d8000 x3ef678f6}\n       {x43168000 x432b8000 x3eec74ec}\n       {x43128000 x432b8000 x3ee670e6}\n       {x43090000 x432d0000 x3ee470e4}\n       {x43050000 x432e8000 x3ee16ce1}\n       {x43008000 x43310000 x3ee16ce1}\n       {x42fa0000 x43348000 x3ee26ce2}\n       {x42f20000 x433d8000 x3ee16ce1}\n       {x42f10000 x433f8000 x3ee26ce2}\n       {x42f10000 x43418000 x3ee16ce1}\n       {x42f20000 x43430000 x3ee16ce1}\n       {x42f30000 x43440000 x3ee26ce2}\n       {x42f70000 x43450000 x3ee16ce1}\n       {x42f90000 x43450000 x3ee26ce2}\n       {x42fe0000 x43460000 x3ee26ce2}\n       {x43028000 x43460000 x3ee16ce1}\n       {x43068000 x43460000 x3ee16ce1}\n       {x430b8000 x43450000 x3ee16ce1}\n       {x43100000 x43440000 x3ee470e4}\n       {x43150000 x43430000 x3ee16ce1}\n       {x43198000 x43418000 x3ee16ce1}\n       {x431c8000 x433f0000 x3ee26ce2}\n       {x431f8000 x433d8000 x3ee570e5}\n       {x43208000 x433b0000 x3ee470e4}\n       {x43208000 x43390000 x3ee670e6}\n       {x431e8000 x43370000 x3ee770e7}\n       {x431b0000 x43348000 x3ee670e6}\n       {x43168000 x43330000 x3ee670e6}\n       {x43110000 x43310000 x3ee670e6}\n       {x430b0000 x432f8000 x3ee770e7}\n       {x43040000 x432f0000 x3ee670e6}\n       {x42fc0000 x432e0000 x3ee670e6}\n       {x42f00000 x432d8000 x3ee670e6}\n       {x42e40000 x432d0000 x3ee670e6}\n       {x42da0000 x432c0000 x3ee770e7}\n       {x42d20000 x432c0000 x3ee770e7}\n       {x42cc0000 x432b8000 x3ee670e6}\n       {x42c90000 x432b8000 x3ee670e6}\n       {x42cb0000 x432a8000 x3ee670e6}\n       {x42d00000 x43298000 x3ee770e7}\n       {x42d60000 x43288000 x3ee770e7}\n       {x42df0000 x43268000 x3ee670e6}\n       {x42e80000 x43248000 x3ee770e7}\n       {x42f30000 x43218000 x3ee670e6}\n       {x42fe0000 x431e8000 x3ee870e8}\n       {x43040000 x431a8000 x3ee870e8}\n       {x43088000 x43168000 x3ee870e8}\n       {x430b8000 x43128000 x3eea70ea}\n       {x430d0000 x430e0000 x3eec74ec}\n       {x430d8000 x430a0000 x3ef074f0}\n       {x430d8000 x43068000 x3ef174f1}\n       {x430c0000 x43028000 x3ef374f3}\n       {x43090000 x43000000 x3ef478f4}\n       {x43060000 x42fb0000 x3ef374f3}\n       {x43028000 x42f80000 x3ef478f4}\n       {x42fc0000 x42f70000 x3ef478f4}\n       {x42f20000 x42f60000 x3ef578f5}\n       {x42e70000 x42f60000 x3ef374f3}\n       {x42db0000 x42f70000 x3ef478f4}\n       {x42c40000 x42fd0000 x3ef478f4}\n       {x42ba0000 x43010000 x3ef578f5}\n       {x42b10000 x43028000 x3ef578f5}\n       {x42aa0000 x43038000 x3ef578f5}\n       {x42a70000 x43040000 x3ef578f5}\n       {x42a30000 x43040000 x3ef578f5}\n       {x42a20000 x43050000 x3ef374f3}\n       {x42a30000 x43040000 x3ef478f4}\n       {x42a60000 x43030000 x3ef478f4}\n       {x42ab0000 x43020000 x3ef478f4}\n       {x42b10000 x43008000 x3ef374f3}\n       {x42bb0000 x42fd0000 x3ef478f4}\n       {x42c60000 x42f90000 x3ef374f3}\n       {x42d30000 x42f40000 x3ef678f6}\n       {x42e30000 x42f10000 x3ef478f4}\n       {x42f30000 x42ed0000 x3ef678f6}\n       {x43028000 x42e90000 x3ef678f6}\n       {x430b0000 x42e60000 x3ef678f6}\n       {x43128000 x42e20000 x3ef578f5}\n       {x43198000 x42dd0000 x3ef778f7}\n       {x431e8000 x42d90000 x3ef778f7}\n       {x43220000 x42d40000 x3ef878f8}\n       {x43248000 x42d00000 x3ef878f8}\n       {x43258000 x42cc0000 x3ef778f7}\n       {x43258000 x42ca0000 x3ef778f7}\n       {x43250000 x42c80000 x3ef778f7}\n       {x43238000 x42c60000 x3ef878f8}\n       {x43208000 x42c50000 x3ef778f7}\n       {x431d0000 x42c40000 x3ef778f7}\n       {x43198000 x42c20000 x3ef778f7}\n       {x43110000 x42c00000 x3ef878f8}\n       {x430d8000 x42bf0000 x3ef778f7}\n       {x430b8000 x42bd0000 x3ef878f8}\n       {x43090000 x42bb0000 x3ef878f8}\n       {x43080000 x42b80000 x3ef878f8}\n       {x43078000 x42b60000 x3ef878f8}\n       {x43078000 x42b30000 x3ef778f7}\n       {x43088000 x42ac0000 x3ef778f7}\n       {x430a0000 x42a90000 x3ef778f7}\n       {x430b8000 x42a60000 x3efb78fb}\n       {x430e0000 x42a10000 x3ef878f8}\n       {x43110000 x429e0000 x3efb78fb}\n       {x43148000 x429a0000 x3efa78fa}\n       {x43178000 x42980000 x3efa78fa}\n       {x431b0000 x42960000 x3efa78fa}\n       {x431e0000 x42950000 x3efd7cfd}\n       {x43208000 x42950000 x3efc7cfc}\n       {x43230000 x42950000 x3efc7cfc}\n       {x43250000 x42970000 x3efe7cfe}\n       {x43260000 x42990000 x3efe7cfe}\n       {x43268000 x429d0000 x3eff7cff}\n       {x43268000 x42a00000 x3efe7cfe}\n       {x43268000 x42a30000 x3efd7cfd}\n       {x43258000 x42a70000 x3efe7cfe}\n       {x43240000 x42ab0000 x3efd7cfd}\n       {x43220000 x42b00000 x3efd7cfd}\n       {x431f8000 x42b70000 x3efd7cfd}\n       {x431e8000 x42bc0000 x3efb78fb}\n       {x431e0000 x42bf0000 x3efb78fb}\n       {x431d0000 x42c20000 x3efb78fb}\n       {x431d0000 x42c50000 x3efa78fa}\n       {x431d0000 x42c70000 x3efa78fa}\n       {x431e8000 x42c80000 x3ef578f5}\n       {x43208000 x42c80000 x3ef678f6}\n       {x43220000 x42c60000 x3ef578f5}\n       {x43240000 x42c50000 x3ef578f5}\n       {x43260000 x42c10000 x3ef578f5}\n       {x43288000 x42bf0000 x3ef678f6}\n       {x432b0000 x42bc0000 x3ef778f7}\n       {x432d8000 x42b80000 x3ef778f7}\n       {x432f8000 x42b50000 x3ef678f6}\n       {x43308000 x42b20000 x3ef878f8}\n       {x43320000 x42b00000 x3ef878f8}\n       {x43328000 x42ae0000 x3ef878f8}\n       {x43308000 x42ae0000 x3efa78fa}\n       {x432f0000 x42b10000 x3efa78fa}\n       {x432c0000 x42b40000 x3efa78fa}\n       {x43290000 x42b80000 x3ef778f7}\n       {x43248000 x42be0000 x3ef778f7}\n       {x431e8000 x42c50000 x3ef578f5}\n       {x43178000 x42cc0000 x3ef578f5}\n       {x43100000 x42d40000 x3ef478f4}\n       {x43080000 x42dd0000 x3ef374f3}\n       {x43010000 x42e40000 x3ef374f3}\n       {x42f60000 x42e70000 x3ef374f3}\n       {x42ea0000 x42e80000 x3ef478f4}\n       {x42e00000 x42e60000 x3ef478f4}\n       {x42d80000 x42e20000 x3ef374f3}\n       {x42d00000 x42dc0000 x3ef478f4}\n       {x42c90000 x42d40000 x3ef678f6}\n       {x42c20000 x42ca0000 x3ef478f4}\n       {x42be0000 x42c00000 x3ef478f4}\n       {x42bb0000 x42b50000 x3ef478f4}\n       {x42b80000 x42a90000 x3ef578f5}\n       {x42b60000 x429c0000 x3ef578f5}\n       {x42b50000 x428d0000 x3ef878f8}\n       {x42b50000 x42800000 x3efb78fb}\n       {x42b50000 x42640000 x3ef878f8}\n       {x42b70000 x424c0000 x3efb78fb}\n       {x42ba0000 x42360000 x3ef778f7}\n       {x42bc0000 x42240000 x3efa78fa}\n       {x42bf0000 x42140000 x3efb78fb}\n       {x42c20000 x420a0000 x3efd7cfd}\n       {x42c60000 x41fc0000 x3efc7cfc}\n       {x42c80000 x41f00000 x3efe7cfe}\n       {x42c90000 x41e40000 x3efe7cfe}\n       {x42ca0000 x41d80000 x3eff7cff}\n       {x42c80000 x41d00000 x3f01be82}\n       {x42c50000 x41d00000 x3f013e81}\n       {x42c00000 x41d00000 x3f024082}\n       {x42ba0000 x41d80000 x3f024082}\n       {x42b30000 x41e40000 x3f02c083}\n       {x42ab0000 x41f00000 x3f024082}\n       {x42a20000 x42000000 x3f02c083}\n       {x42990000 x420c0000 x3f024082}\n       {x428f0000 x42180000 x3f044084}\n       {x42850000 x42240000 x3f024082}\n       {x427c0000 x42300000 x3f03c084}\n       {x426e0000 x423a0000 x3f03c084}\n       {x42640000 x42400000 x3f03c084}\n       {x42600000 x42440000 x3f04c085}\n       {x425c0000 x42440000 x3f044084}\n       {x42600000 x423c0000 x3f044084}\n       {x42640000 x42360000 x3f03c084}\n       {x426e0000 x42300000 x3f044084}\n       {x42760000 x42280000 x3f03c084}\n       {x42810000 x42200000 x3f044084}\n       {x42880000 x42180000 x3f03c084}\n       {x428f0000 x42100000 x3f04c085}\n       {x42970000 x420c0000 x3f04c085}\n       {x429f0000 x42080000 x3f04c085}\n       {x42a80000 x42060000 x3f064286}\n       {x42b10000 x42060000 x3f05c086}\n       {x42bb0000 x42080000 x3f05c086}\n       {x42c60000 x420e0000 x3f05c086}\n       {x42d00000 x421a0000 x3f074287}\n       {x42db0000 x42240000 x3f064286}\n       {x42e60000 x42360000 x3f074287}\n       {x42fc0000 x425a0000 x3f06c287}\n       {x43038000 x426e0000 x3f074287}\n       {x430a0000 x427e0000 x3f06c287}\n       {x430f8000 x42860000 x3f074287}\n       {x43148000 x428d0000 x3f074287}\n       {x43198000 x42930000 x3f084288}\n       {x431d0000 x42960000 x3f06c287}\n       {x43218000 x42990000 x3f06c287}\n       {x43298000 x429f0000 x3f074287}\n       {x432d0000 x42a00000 x3f06c287}\n       {x43300000 x42a10000 x3f06c287}\n       {x43338000 x42a20000 x3f074287}\n       {x43370000 x42a30000 x3f06c287}\n       {x43390000 x42a30000 x3f06c287}\n       {x433b0000 x42a20000 x3f064286}\n       {x433c8000 x42a10000 x3f05c086}\n       {x433d8000 x429e0000 x3f064286}\n       {x433d8000 x429a0000 x3f05c086}\n       {x433e0000 x42960000 x3f05c086}\n       {x433e0000 x42900000 x3f05c086}\n       {x433d8000 x42890000 x3f064286}\n       {x433d0000 x42820000 x3f05c086}\n       {x433c0000 x42740000 x3f05c086}\n       {x433b0000 x42540000 x3f05c086}\n       {x433c0000 x42380000 x3f064286}\n       {x433d0000 x422e0000 x3f064286}\n       {x433e0000 x42220000 x3f05c086}\n       {x43400000 x421e0000 x3f05c086}\n       {x43428000 x421a0000 x3f064286}\n       {x43448000 x42180000 x3f05c086}\n       {x43480000 x421a0000 x3f05c086}\n       {x434b8000 x421c0000 x3f074287}\n       {x434e8000 x42220000 x3f05c086}\n       {x43528000 x42280000 x3f06c287}\n       {x43560000 x42320000 x3f074287}\n       {x435a0000 x42380000 x3f06c287}\n       {x43610000 x423a0000 x3f074287}\n       {x43640000 x42340000 x3f074287}\n       {x43660000 x422c0000 x3f074287}\n       {x43690000 x42200000 x3f084288}\n       {x436a8000 x42140000 x3f074287}\n       {x436c8000 x420a0000 x3f084288}\n       {x436e8000 x41f80000 x3f07c288}\n       {x43708000 x41e80000 x3f084288}\n       {x43738000 x41c80000 x3f07c288}\n       {x43750000 x41c40000 x3f094289}\n       {x43760000 x41c00000 x3f0a448a}\n       {x43770000 x41cc0000 x3f0dc48e}\n       {x43770000 x41d80000 x3f0d448d}\n       {x43770000 x41f00000 x3f0d448d}\n       {x43770000 x42060000 x3f0dc48e}\n       {x43760000 x42140000 x3f0d448d}\n       {x43740000 x42280000 x3f0dc48e}\n       {x43710000 x42400000 x3f0dc48e}\n       {x436d0000 x425a0000 x3f0dc48e}\n       {x43690000 x42760000 x3f0dc48e}\n       {x43640000 x428a0000 x3f0cc48d}\n       {x435f8000 x42980000 x3f0cc48d}\n       {x43578000 x42ad0000 x3f0c448c}\n       {x43550000 x42b30000 x3f0bc48c}\n       {x43520000 x42b70000 x3f0bc48c}\n       {x43508000 x42bb0000 x3f0b448b}\n       {x434e8000 x42bc0000 x3f09c28a}\n       {x434d0000 x42bc0000 x3f094289}\n       {x434b0000 x42bb0000 x3f094289}\n       {x43490000 x42b70000 x3f094289}\n       {x43468000 x42b30000 x3f084288}\n       {x43440000 x42ad0000 x3f08c289}\n       {x43410000 x42a70000 x3f084288}\n       {x433e0000 x429f0000 x3f08c289}\n       {x433a8000 x42950000 x3f094289}\n       {x43370000 x428b0000 x3f08c289}\n       {x43330000 x42800000 x3f094289}\n       {x432f0000 x426a0000 x3f094289}\n       {x432b0000 x42500000 x3f08c289}\n       {x43280000 x42380000 x3f08c289}\n       {x43240000 x42200000 x3f094289}\n       {x43208000 x42080000 x3f094289}\n       {x431e8000 x41e80000 x3f094289}\n       {x431d0000 x41c00000 x3f094289}\n       {x431c8000 x41a40000 x3f094289}\n       {x431e0000 x41800000 x3f08c289}\n       {x431f0000 x41700000 x3f0a448a}\n       {x43208000 x41680000 x3f0b448b}\n       {x43218000 x41680000 x3f0bc48c}\n       {x43230000 x41800000 x3f0c448c}\n       {x43240000 x41900000 x3f0c448c}\n       {x43258000 x41a40000 x3f0bc48c}\n       {x43268000 x41c00000 x3f0cc48d}\n       {x43270000 x41e00000 x3f0b448b}\n       {x43280000 x41fc0000 x3f0bc48c}\n       {x43280000 x420c0000 x3f05c086}\n       {x43280000 x42180000 x3efe7cfe}\n       {x43280000 x42200000 x3ef578f5}\n       {x43280000 x421c0000 x3e4e60ce}}}\n     {t x430bce5e x42f9583c}\n     {a r x3eced920 g 0 ro 0 go 0 bo 0 ao 0 bs x40e00000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 ltn x447a4000 ltm x447a4000 ltt x40000000 tt x41880000}}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42b10000 x43558000 x3cd040d0}\n       {x42b10000 x43568000 x3dc460c4}\n       {x42b30000 x43578000 x3e184898}\n       {x42b80000 x435a0000 x3e4a60ca}\n       {x42bd0000 x435b0000 x3e6c70ec}\n       {x42c40000 x435c0000 x3e7a78fa}\n       {x42ca0000 x435d0000 x3e7e78fe}\n       {x42d20000 x435f0000 x3e7e78fe}\n       {x42dc0000 x43600000 x3e824082}\n       {x42e60000 x43610000 x3e813c81}\n       {x42f10000 x43620000 x3e813c81}\n       {x42fe0000 x43628000 x3e834083}\n       {x43060000 x43630000 x3e844084}\n       {x430c8000 x43630000 x3e844084}\n       {x43128000 x43628000 x3e874087}\n       {x43178000 x43620000 x3e874087}\n       {x431b8000 x43610000 x3e864086}\n       {x431e8000 x435f8000 x3e874087}\n       {x431f8000 x435d8000 x3e874087}\n       {x431f0000 x435b8000 x3e884088}\n       {x431d0000 x43588000 x3e884088}\n       {x431a8000 x43560000 x3e8a448a}\n       {x43168000 x43530000 x3e8a448a}\n       {x43118000 x43508000 x3e8b448b}\n       {x430c0000 x434d8000 x3e8b448b}\n       {x43068000 x434b0000 x3e8a448a}\n       {x42f60000 x43468000 x3e8b448b}\n       {x42ea0000 x43448000 x3e8a448a}\n       {x42df0000 x43430000 x3e8a448a}\n       {x42d50000 x43428000 x3e8b448b}\n       {x42cc0000 x43420000 x3e8a448a}\n       {x42c60000 x43420000 x3e8d448d}\n       {x42c00000 x43430000 x3e8e448e}\n       {x42bd0000 x43440000 x3e8d448d}\n       {x42bb0000 x43460000 x3e8d448d}\n       {x42bb0000 x43478000 x3e8d448d}\n       {x42bc0000 x43490000 x3e8e448e}\n       {x42bf0000 x434a0000 x3e8d448d}\n       {x42c40000 x434b8000 x3e8d448d}\n       {x42ca0000 x434c0000 x3e8d448d}\n       {x42d20000 x434c0000 x3e8e448e}\n       {x42e70000 x434a0000 x3e8e448e}\n       {x42f30000 x43480000 x3e8f448f}\n       {x43008000 x43460000 x3e914491}\n       {x43070000 x43438000 x3e954895}\n       {x430d8000 x43418000 x3e964896}\n       {x43130000 x433e8000 x3e994899}\n       {x43170000 x433c8000 x3e9c4c9c}\n       {x43198000 x43398000 x3e9c4c9c}\n       {x43198000 x43370000 x3ea04ca0}\n       {x43178000 x43340000 x3ea450a4}\n       {x43140000 x43310000 x3ea650a6}\n       {x430f8000 x432e8000 x3ea650a6}\n       {x43090000 x432c0000 x3ea750a7}\n       {x43030000 x432a0000 x3eaa50aa}\n       {x42f90000 x43288000 x3ea850a8}\n       {x42ec0000 x43270000 x3eaa50aa}\n       {x42de0000 x43268000 x3ea850a8}\n       {x42d00000 x43260000 x3eaa50aa}\n       {x42c40000 x43260000 x3eab54ab}\n       {x42b70000 x43260000 x3eab54ab}\n       {x42ad0000 x43270000 x3eac54ac}\n       {x42a70000 x43280000 x3eab54ab}\n       {x42a30000 x43290000 x3ead54ad}\n       {x42a70000 x432b0000 x3ead54ad}\n       {x42ac0000 x432b8000 x3ead54ad}\n       {x42b50000 x432c0000 x3ead54ad}\n       {x42c00000 x432c0000 x3eae54ae}\n       {x42cf0000 x432c0000 x3eaf54af}\n       {x42de0000 x432a8000 x3eb154b1}\n       {x42f00000 x43290000 x3eb458b4}\n       {x43010000 x43260000 x3eb958b9}\n       {x430a8000 x43238000 x3ebe5cbe}\n       {x43140000 x43208000 x3ec25cc2}\n       {x431b0000 x431c0000 x3ec560c5}\n       {x43208000 x43170000 x3ec560c5}\n       {x43230000 x43120000 x3eca60ca}\n       {x43230000 x430d0000 x3ecb64cb}\n       {x43208000 x43088000 x3ecc64cc}\n       {x43168000 x43010000 x3ece64ce}\n       {x43100000 x42fc0000 x3ece64ce}\n       {x43080000 x42f80000 x3ece64ce}\n       {x43008000 x42f40000 x3ece64ce}\n       {x42f00000 x42f20000 x3ecd64cd}\n       {x42e00000 x42f10000 x3ece64ce}\n       {x42d00000 x42f10000 x3ecd64cd}\n       {x42c00000 x42f20000 x3ece64ce}\n       {x42b20000 x42f40000 x3ed064d0}\n       {x42a60000 x42f70000 x3ecf64cf}\n       {x42990000 x42fb0000 x3ecf64cf}\n       {x42970000 x42fd0000 x3ed468d4}\n       {x429c0000 x42fe0000 x3edc6cdc}\n       {x42a20000 x42fe0000 x3ede6cde}\n       {x42ac0000 x42fd0000 x3ede6cde}\n       {x42ba0000 x42fa0000 x3edd6cdd}\n       {x42c90000 x42f70000 x3ee06ce0}\n       {x42da0000 x42f10000 x3ee470e4}\n       {x42ea0000 x42ed0000 x3ee670e6}\n       {x42fa0000 x42e70000 x3eeb70eb}\n       {x43038000 x42e20000 x3eec74ec}\n       {x430c0000 x42d60000 x3eec74ec}\n       {x430d8000 x42d10000 x3ef174f1}\n       {x430d8000 x42cc0000 x3ef478f4}\n       {x430b8000 x42c70000 x3ef578f5}\n       {x43078000 x42c20000 x3ef778f7}\n       {x43020000 x42bf0000 x3ef778f7}\n       {x42f80000 x42bc0000 x3ef878f8}\n       {x42e90000 x42ba0000 x3ef878f8}\n       {x42db0000 x42ba0000 x3ef878f8}\n       {x42cc0000 x42ba0000 x3ef778f7}\n       {x42bd0000 x42ba0000 x3ef778f7}\n       {x42ad0000 x42bd0000 x3ef778f7}\n       {x42a00000 x42bf0000 x3ef578f5}\n       {x42950000 x42c40000 x3ef678f6}\n       {x428d0000 x42c70000 x3ef578f5}\n       {x428a0000 x42cb0000 x3ef678f6}\n       {x428d0000 x42cb0000 x3ef374f3}\n       {x42940000 x42cb0000 x3ef374f3}\n       {x429e0000 x42ca0000 x3ef174f1}\n       {x42ab0000 x42c80000 x3ef374f3}\n       {x42bb0000 x42c50000 x3ef478f4}\n       {x42cc0000 x42bf0000 x3ef578f5}\n       {x42df0000 x42ba0000 x3ef678f6}\n       {x42f00000 x42b30000 x3efa78fa}\n       {x42fe0000 x42ac0000 x3efb78fb}\n       {x430a0000 x429e0000 x3efd7cfd}\n       {x430c0000 x42960000 x3efe7cfe}\n       {x430c0000 x428e0000 x3f013e81}\n       {x430b0000 x42880000 x3f01be82}\n       {x43078000 x42820000 x3f013e81}\n       {x43030000 x427c0000 x3f01be82}\n       {x42fc0000 x42720000 x3f024082}\n       {x42f00000 x426e0000 x3f013e81}\n       {x42e20000 x426c0000 x3f013e81}\n       {x42d40000 x426c0000 x3f013e81}\n       {x42c60000 x426e0000 x3f013e81}\n       {x42b60000 x42740000 x3f013e81}\n       {x42990000 x42840000 x3f01be82}\n       {x428e0000 x428a0000 x3f013e81}\n       {x42860000 x428e0000 x3f01be82}\n       {x42820000 x42930000 x3f01be82}\n       {x42820000 x42960000 x3f013e81}\n       {x42840000 x42980000 x3f00be81}\n       {x428a0000 x429a0000 x3f00be81}\n       {x42930000 x429a0000 x3f00be81}\n       {x429f0000 x429a0000 x3eff7cff}\n       {x42ae0000 x42980000 x3f00be81}\n       {x42c10000 x42950000 x3f003e80}\n       {x42d60000 x42920000 x3f00be81}\n       {x42ec0000 x428d0000 x3f00be81}\n       {x43008000 x428a0000 x3f01be82}\n       {x430a8000 x42860000 x3f00be81}\n       {x431b0000 x427c0000 x3f01be82}\n       {x43210000 x42720000 x3f01be82}\n       {x43258000 x42680000 x3f013e81}\n       {x43288000 x425e0000 x3f003e80}\n       {x43298000 x42560000 x3f003e80}\n       {x43290000 x424c0000 x3f003e80}\n       {x43270000 x42440000 x3f00be81}\n       {x43248000 x423a0000 x3f00be81}\n       {x43200000 x42340000 x3f003e80}\n       {x431a8000 x42300000 x3efe7cfe}\n       {x43140000 x422c0000 x3f00be81}\n       {x430c0000 x42280000 x3f00be81}\n       {x43030000 x42280000 x3efe7cfe}\n       {x42f40000 x422c0000 x3f00be81}\n       {x42e20000 x42300000 x3eff7cff}\n       {x42cf0000 x42360000 x3f003e80}\n       {x42bc0000 x423c0000 x3efe7cfe}\n       {x42ab0000 x42460000 x3efe7cfe}\n       {x429c0000 x424c0000 x3eff7cff}\n       {x42900000 x42500000 x3eff7cff}\n       {x428a0000 x42560000 x3eff7cff}\n       {x42850000 x425a0000 x3f003e80}\n       {x42850000 x42600000 x3f013e81}\n       {x42880000 x42640000 x3eff7cff}\n       {x428d0000 x426c0000 x3efe7cfe}\n       {x42970000 x42720000 x3efe7cfe}\n       {x42a30000 x42760000 x3eff7cff}\n       {x42b30000 x427c0000 x3efc7cfc}\n       {x42c60000 x427c0000 x3eff7cff}\n       {x42da0000 x427c0000 x3eff7cff}\n       {x43040000 x426e0000 x3efe7cfe}\n       {x43108000 x42600000 x3efc7cfc}\n       {x431c8000 x424e0000 x3efe7cfe}\n       {x43270000 x423a0000 x3eff7cff}\n       {x43308000 x42240000 x3eff7cff}\n       {x43388000 x420c0000 x3eff7cff}\n       {x433e0000 x41ec0000 x3efe7cfe}\n       {x43420000 x41c40000 x3efe7cfe}\n       {x43448000 x419c0000 x3f00be81}\n       {x43460000 x41780000 x3f003e80}\n       {x43460000 x41380000 x3f013e81}\n       {x43448000 x41100000 x3f03c084}\n       {x43428000 x40e00000 x3f05c086}\n       {x433e8000 x40c00000 x3f094289}\n       {x433a0000 x40b00000 x3f09c28a}\n       {x43348000 x40b00000 x3f0a448a}\n       {x432e8000 x40d00000 x3f0bc48c}\n       {x43280000 x41100000 x3f0b448b}\n       {x43210000 x41380000 x3f0b448b}\n       {x431b8000 x41780000 x3f0a448a}\n       {x43170000 x419c0000 x3f08c289}\n       {x43150000 x41bc0000 x3f074287}\n       {x43148000 x41d80000 x3f04c085}\n       {x43160000 x41f80000 x3f02c083}\n       {x43198000 x42080000 x3f01be82}\n       {x431e8000 x42100000 x3f00be81}\n       {x432b0000 x421c0000 x3f003e80}\n       {x43328000 x421c0000 x3f00be81}\n       {x433a0000 x421c0000 x3f00be81}\n       {x43498000 x421c0000 x3efe7cfe}\n       {x43518000 x421c0000 x3eff7cff}\n       {x43588000 x421c0000 x3f00be81}\n       {x435f0000 x421a0000 x3f003e80}\n       {x43628000 x42180000 x3f00be81}\n       {x43648000 x42120000 x3f00be81}\n       {x43628000 x420a0000 x3f03c084}\n       {x435f0000 x42060000 x3f04c085}\n       {x435a0000 x42040000 x3f04c085}\n       {x43530000 x42000000 x3f04c085}\n       {x434b8000 x42000000 x3f05c086}\n       {x43428000 x42040000 x3f04c085}\n       {x43390000 x420c0000 x3f04c085}\n       {x432f0000 x42180000 x3f054085}\n       {x43240000 x42240000 x3f05c086}\n       {x43180000 x42380000 x3f05c086}\n       {x430c0000 x42500000 x3f064286}\n       {x43000000 x426a0000 x3f05c086}\n       {x42e80000 x42830000 x3f064286}\n       {x42d20000 x42900000 x3f05c086}\n       {x42be0000 x429f0000 x3f05c086}\n       {x42ac0000 x42ae0000 x3f074287}\n       {x429d0000 x42bd0000 x3f05c086}\n       {x42920000 x42cc0000 x3f064286}\n       {x42890000 x42dc0000 x3f05c086}\n       {x42820000 x42ec0000 x3f05c086}\n       {x42800000 x42fb0000 x3f064286}\n       {x42800000 x43050000 x3f05c086}\n       {x42820000 x430c0000 x3f05c086}\n       {x42880000 x43120000 x3f05c086}\n       {x42920000 x43180000 x3f064286}\n       {x429e0000 x431e0000 x3f04c085}\n       {x42ad0000 x43238000 x3f04c085}\n       {x42c00000 x43288000 x3f054085}\n       {x42d30000 x432d8000 x3f04c085}\n       {x42e70000 x43310000 x3f03c084}\n       {x42fa0000 x43340000 x3f03c084}\n       {x43058000 x43358000 x3f03c084}\n       {x43120000 x43340000 x3f044084}\n       {x43160000 x43300000 x3f03c084}\n       {x43178000 x432a8000 x3f03c084}\n       {x43178000 x43248000 x3f044084}\n       {x43168000 x431d0000 x3f054085}\n       {x43140000 x43160000 x3f04c085}\n       {x430f8000 x430f0000 x3f064286}\n       {x430a8000 x43080000 x3f064286}\n       {x43040000 x43018000 x3f05c086}\n       {x42fb0000 x42f70000 x3f05c086}\n       {x42ec0000 x42ed0000 x3f04c085}\n       {x42db0000 x42e30000 x3f05c086}\n       {x42c90000 x42dc0000 x3f05c086}\n       {x42b70000 x42d90000 x3f064286}\n       {x42a80000 x42d80000 x3f064286}\n       {x42980000 x42db0000 x3f05c086}\n       {x428c0000 x42e20000 x3f064286}\n       {x42720000 x42fd0000 x3f06c287}\n       {x42640000 x43080000 x3f064286}\n       {x425c0000 x43128000 x3f04c085}\n       {x42560000 x431c8000 x3f02c083}\n       {x42560000 x43268000 x3f003e80}\n       {x425a0000 x432f8000 x3efe7cfe}\n       {x42640000 x43380000 x3efc7cfc}\n       {x42740000 x433f8000 x3efd7cfd}\n       {x42850000 x43468000 x3efd7cfd}\n       {x42930000 x434c0000 x3efd7cfd}\n       {x42a20000 x43508000 x3efc7cfc}\n       {x42b40000 x43538000 x3efd7cfd}\n       {x42c70000 x43560000 x3efc7cfc}\n       {x42da0000 x43570000 x3efc7cfc}\n       {x42ee0000 x43570000 x3efc7cfc}\n       {x430b8000 x43518000 x3efc7cfc}\n       {x43160000 x434d0000 x3efd7cfd}\n       {x431f8000 x43470000 x3efa78fa}\n       {x43280000 x433f8000 x3efa78fa}\n       {x432e8000 x43388000 x3efb78fb}\n       {x43330000 x43308000 x3ef878f8}\n       {x43358000 x43288000 x3efb78fb}\n       {x43360000 x43210000 x3ef778f7}\n       {x43360000 x43198000 x3efb78fb}\n       {x43348000 x43120000 x3efb78fb}\n       {x43308000 x430b0000 x3efc7cfc}\n       {x432b0000 x43040000 x3efc7cfc}\n       {x43240000 x42fb0000 x3efc7cfc}\n       {x431b0000 x42f00000 x3efd7cfd}\n       {x43070000 x42de0000 x3efd7cfd}\n       {x42fa0000 x42d90000 x3efc7cfc}\n       {x42e70000 x42d60000 x3efe7cfe}\n       {x42d50000 x42d60000 x3efc7cfc}\n       {x42c50000 x42db0000 x3eff7cff}\n       {x42b60000 x42e30000 x3efc7cfc}\n       {x42a90000 x42ee0000 x3efd7cfd}\n       {x429e0000 x42fc0000 x3efd7cfd}\n       {x42950000 x43060000 x3efc7cfc}\n       {x42900000 x430f0000 x3ef678f6}\n       {x42900000 x43170000 x3ef074f0}\n       {x42950000 x431e0000 x3eea70ea}\n       {x429e0000 x43238000 x3ee970e9}\n       {x42ac0000 x43270000 x3ee970e9}\n       {x42bd0000 x43298000 x3ee670e6}\n       {x42d10000 x432b0000 x3ee670e6}\n       {x42e70000 x432b0000 x3ee770e7}\n       {x43008000 x43298000 x3ee670e6}\n       {x430d0000 x43260000 x3ee770e7}\n       {x431b0000 x43230000 x3ee670e6}\n       {x43290000 x431e0000 x3ee770e7}\n       {x43358000 x43190000 x3ee770e7}\n       {x43400000 x43130000 x3ee970e9}\n       {x43480000 x430d0000 x3eeb70eb}\n       {x434d0000 x43060000 x3ef274f2}\n       {x434f0000 x42fc0000 x3ef478f4}\n       {x434f0000 x42ec0000 x3ef578f5}\n       {x434d0000 x42dc0000 x3ef678f6}\n       {x43430000 x42bd0000 x3ef678f6}\n       {x433d0000 x42b00000 x3ef878f8}\n       {x43350000 x42a20000 x3efa78fa}\n       {x432d0000 x42950000 x3ef878f8}\n       {x43238000 x42880000 x3efc7cfc}\n       {x43198000 x42760000 x3efa78fa}\n       {x43100000 x42600000 x3efa78fa}\n       {x43068000 x424c0000 x3efd7cfd}\n       {x42fc0000 x423c0000 x3efd7cfd}\n       {x42ee0000 x42300000 x3efd7cfd}\n       {x42dd0000 x42240000 x3efc7cfc}\n       {x42db0000 x42240000 x3efc7cfc}\n       {x42dc0000 x422c0000 x3ef778f7}\n       {x42e20000 x42340000 x3ef374f3}\n       {x42ea0000 x42400000 x3ef274f2}\n       {x42f70000 x424a0000 x3ef174f1}\n       {x43028000 x42540000 x3ef174f1}\n       {x430b8000 x42580000 x3ef174f1}\n       {x43150000 x42580000 x3ef174f1}\n       {x431f0000 x42560000 x3ef174f1}\n       {x43288000 x424e0000 x3ef174f1}\n       {x43310000 x42440000 x3ef174f1}\n       {x43390000 x42380000 x3ef274f2}\n       {x433e8000 x42280000 x3ef274f2}\n       {x43420000 x421a0000 x3ef174f1}\n       {x43430000 x420a0000 x3ef778f7}\n       {x43420000 x41f40000 x3efb78fb}\n       {x433e8000 x41d00000 x3efc7cfc}\n       {x43398000 x41b00000 x3efd7cfd}\n       {x43328000 x41940000 x3efd7cfd}\n       {x432a8000 x41700000 x3eff7cff}\n       {x43210000 x41500000 x3eff7cff}\n       {x43170000 x41280000 x3efe7cfe}\n       {x430c8000 x41180000 x3eff7cff}\n       {x43018000 x41180000 x3f00be81}\n       {x42ed0000 x41180000 x3f00be81}\n       {x42d80000 x41300000 x3f003e80}\n       {x42c20000 x41580000 x3f00be81}\n       {x42ae0000 x41840000 x3f00be81}\n       {x429d0000 x41a00000 x3f003e80}\n       {x428e0000 x41c00000 x3f00be81}\n       {x42850000 x41d80000 x3f03c084}\n       {x427e0000 x41f00000 x3f054085}\n       {x42780000 x42040000 x3f05c086}\n       {x42760000 x420a0000 x3f064286}\n       {x42740000 x420e0000 x3f05c086}\n       {x42740000 x42120000 x3f064286}\n       {x42720000 x42180000 x3f064286}\n       {x426e0000 x421c0000 x3f05c086}\n       {x42680000 x421e0000 x3f064286}\n       {x425e0000 x42220000 x3f064286}\n       {x42560000 x42260000 x3f064286}\n       {x424c0000 x422c0000 x3f05c086}\n       {x42440000 x42300000 x3f064286}\n       {x423a0000 x42340000 x3f064286}\n       {x42340000 x42360000 x3f064286}\n       {x422e0000 x42380000 x3f05c086}\n       {x42280000 x423a0000 x3f05c086}\n       {x422c0000 x423a0000 x3f044084}\n       {x42380000 x42400000 x3f03c084}\n       {x42420000 x42440000 x3f03c084}\n       {x424e0000 x424a0000 x3f044084}\n       {x42600000 x42540000 x3f03c084}\n       {x42760000 x425e0000 x3f044084}\n       {x428a0000 x426a0000 x3f024082}\n       {x429a0000 x42780000 x3f03c084}\n       {x42b00000 x42830000 x3f03c084}\n       {x42c80000 x428a0000 x3f044084}\n       {x42e20000 x428f0000 x3f03c084}\n       {x42fd0000 x42940000 x3f03c084}\n       {x430c8000 x42960000 x3f054085}\n       {x431a8000 x42970000 x3f04c085}\n       {x43268000 x42960000 x3f03c084}\n       {x43310000 x42930000 x3f03c084}\n       {x43398000 x428f0000 x3f04c085}\n       {x433f8000 x428a0000 x3f03c084}\n       {x43430000 x42830000 x3f013e81}\n       {x43450000 x42780000 x3eef74ef}\n       {x43450000 x426a0000 x3ed468d4}\n       {x43448000 x425e0000 x3e9d4c9d}\n       {x43430000 x42500000 x3db050b0}}}\n     {t x42f794e9 x42d3d07a}\n     {a r 0 g x3f395810 ro 0 go 0 bo 0 ao 0 bs x40e00000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 ltn x447d8000 ltm x447d8000 ltt x40000000 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll r 0.404 g 0 bs 7 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush r 0.404 g 0 bs 7 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1001 ltm 1001 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_paint_color {0.4040002823 0 1 1}\n toolbar_brush_size 7\n toolbar_brush_hardness 0.200000003\n toolbar_lifetime_type single\n toolbar_lifetime_start 1001\n toolbar_lifetime_end 1001\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n color {0.4040002823 0 1 1}\n colorOverlay {0 0 0 0}\n lifetime_start 1001\n lifetime_end 1001\n motionblur_on true\n brush_size 7\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint1\n xpos 466\n ypos 137\n}\nDot {\n name Dot3\n xpos 500\n ypos 270\n}\nset Na052a000 [stack 0]\nWrite {\n name Write1\n label \"export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]\"\n xpos 576\n ypos 344\n}\nStickyNote {\n inputs 0\n name StickyNote1\n label \"Texture painted on frame 1001 and 1014 = udim 1001 and 1014\"\n xpos 566\n ypos 135\n}\nStickyNote {\n inputs 0\n name StickyNote2\n label \"3D view cant display uvtile, have to check through scanlineRender\"\n xpos 568\n ypos 529\n}\nAxis2 {\n inputs 0\n rotate {0 {curve x1001 -20 x1050 20} 0}\n name Axis3\n xpos 1852\n ypos 509\n}\nCamera2 {\n translate {66.90603638 35.25645828 -5.300000668}\n rotate {-24.62797338 90.0000025 0}\n name Camera2\n xpos 1852\n ypos 631\n}\nReadGeo2 {\n inputs 0\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo5\n xpos 2011\n ypos -279\n}\nGroup {\n name UVEditor5\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x6666ff\n xpos 2011\n ypos -171\n addUserKnob {20 tab_general l General}\n addUserKnob {3 texSize l \"texture size\"}\n texSize 256\n addUserKnob {41 filter T SR.filter}\n addUserKnob {41 antialiasing T SR.antialiasing}\n addUserKnob {26 \"\"}\n addUserKnob {41 view_wireframe l \"view wireframe\" T menu02.view_wireframe}\n addUserKnob {7 wireframe_size l \"wireframe size\" +DISABLED R 0.1 10}\n wireframe_size 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 output T menu01.output}\n addUserKnob {30 uv_shift l INVISIBLE +INVISIBLE}\n addUserKnob {41 scanRes +INVISIBLE T store.scanRes}\n addUserKnob {22 udim_export l export +DISABLED T \"thisGRP = nuke.thisGroup()\\ndataCheckNode = nuke.toNode('dataCheck')\\n\\n########################################################\\n\\nusrUV = thisGRP\\['uv_shift'].getValue()\\ndataReturn = \\[]\\n\\nprogBar = nuke.ProgressTask('Checking UV')\\njobCount = 0\\n\\nfor v in range (0, 10) :\\n  for u in range (0, 10) :\\n\\n    ### progress bar\\n    jobCount += 1\\n    progShow = int(jobCount/100 * 100)\\n    if progBar.isCancelled() :\\n      break;\\n    progBar.setProgress(progShow)\\n    #################\\n\\n    thisGRP\\['uv_shift'].setValue(\\[u,v])\\n    nuke.execute(dataCheckNode, nuke.frame(), nuke.frame())\\n    if dataCheckNode\\['maxlumapixvalue'].getValue() != \\[0.0, 0.0, 0.0] :\\n      dataReturn.append(1)\\n    else :\\n      dataReturn.append(0)\\n\\ndel progBar\\n\\ndataCheckNode\\['maxlumapixdata'].clearAnimated()\\ndataCheckNode\\['maxlumapixvalue'].clearAnimated()\\ndataCheckNode\\['minlumapixdata'].clearAnimated()\\ndataCheckNode\\['minlumapixvalue'].clearAnimated()\\n\\nif len(dataReturn) == 100 :\\n\\tfor i in range (0, 100) :\\n\\t  if dataReturn\\[i] == 1 :\\n\\t    uvMax = i\\n\\n\\tthisGRP\\['uv_shift'].setValue(usrUV)\\n\\n\\t########################################################\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\troot = getLevel()\\n\\n\\troot.begin()\\n\\toutFR = nuke.nodes.FrameRange()\\n\\toutFR\\['first_frame'].setValue(1001)\\n\\toutFR\\['last_frame'].setValue(1001 + uvMax)\\n\\toutFR\\['label'].setValue( 'udim range : 1001 - \\{0\\}'.format( str(1001 + uvMax) ) )\\n\\toutFR.setInput(0, thisGRP)\\n\\toutFR.setXYpos(int(thisGRP\\['xpos'].value()), int(thisGRP\\['ypos'].value()+80))\\n\\n\\texpDot = nuke.nodes.Dot()\\n\\texpDot\\['label'].setValue('Texture modify here : swap the paint/patch texture into udim frame')\\n\\texpDot.setInput(0, outFR)\\n\\n\\tyDot = nuke.nodes.Dot()\\n\\tyDot.setInput(0, expDot)\\n\\n\\tuvGRP = nuke.nodes.Group()\\n\\tuvGRP\\['label'].setValue('udim stitch for nuke')\\n\\n\\tnDot = nuke.nodes.Dot()\\n\\tnDot\\['label'].setValue('Connect to Geo')\\n\\troot.end()\\n\\n\\tuvGRP.begin()\\n\\tinNode = nuke.nodes.Input(name='udim')\\n\\tcropNode = nuke.nodes.Crop()\\n\\tcropNode\\['crop'].setValue(1)\\n\\tcropNode.setInput(0, inNode)\\n\\tallDot = nuke.nodes.Dot()\\n\\tallDot.setInput(0, cropNode)\\n\\n\\tuvMerge = nuke.nodes.Merge2()\\n\\toutNode = nuke.nodes.Output()\\n\\toutNode.setInput(0, uvMerge)\\n\\n\\tfor i in range (0, uvMax+1) :\\n\\t  uDimHold = nuke.nodes.FrameHold()\\n\\t  uDimHold\\['first_frame'].setValue(1001+i)\\n\\t  uDimHold.setInput(0, allDot)\\n\\t  \\n\\t  uvTran = nuke.nodes.Transform()\\n\\t  uvTran.addKnob(nuke.UV_Knob('uv_offset'))\\n\\t  if i < 10 :\\n\\t    u = i\\n\\t    v = 0\\n\\t  else :\\n\\t    if i < 100 :\\n\\t      u = int(str(i)\\[1])\\n\\t      v = int(str(i)\\[0])\\n\\t  uvTran\\['uv_offset'].setValue(\\[u, v])\\n\\t  uvTran\\['translate'].setExpression('input.width*uv_offset.u', 0)\\n\\t  uvTran\\['translate'].setExpression('input.height*uv_offset.v', 1)\\n\\t  uvTran.setInput(0, uDimHold)\\n\\n\\t  uvMerge.setInput(i+3, uvTran)\\n\\n\\n\\tuvGRP.end()\\n\\n\\tuvGRP.setInput(0, yDot)\\n\\tnDot.setInput(0, uvGRP)\\n\\n\\troot.begin()\\n\\texWrite = nuke.nodes.Write()\\n\\texWrite.setInput(0, yDot)\\n\\texWrite\\['label'].setValue('export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]')\\n\\troot.end()\\n\\n\\tdel uvMax\\nelse :\\n\\tnuke.message('Scan process terminated by user.')\\n\\ndel dataReturn\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 font T store.font}\n addUserKnob {6 disable_error l \"disable text\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-04-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fix&nbsp;misspelling&nbsp;of&nbsp;knob's&nbsp;label<br>-&nbsp;fix&nbsp;not&nbsp;working&nbsp;disable&nbsp;text&nbsp;knob<br><br>1.3<br>-&nbsp;fix&nbsp;font&nbsp;issue<br>&nbsp;&nbsp;works&nbsp;on&nbsp;linux,&nbsp;mac&nbsp;&&nbsp;windows<br><br>1.2<br>-&nbsp;preview&nbsp;in&nbsp;uv&nbsp;space&nbsp;set&nbsp;limited&nbsp;<br>&nbsp;&nbsp;in&nbsp;1024&nbsp;resolution&nbsp;for&nbsp;not&nbsp;drag&nbsp;<br>&nbsp;&nbsp;down&nbsp;speed&nbsp;purpose.<br>-&nbsp;added&nbsp;show&nbsp;tile&nbsp;number<br>-&nbsp;changed&nbsp;uv&nbsp;combine&nbsp;to&nbsp;uv&nbsp;stitch<br>&nbsp;&nbsp;in&nbsp;export&nbsp;group<br>-&nbsp;code&nbsp;update<br>-&nbsp;scan&nbsp;size&nbsp;reduce,&nbsp;speed&nbsp;up&nbsp;process\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1755\n  ypos 302\n  bdwidth 263\n  bdheight 296\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x424242ff\n  label \"UV preview\"\n  note_font_size 42\n  xpos -824\n  ypos 451\n  bdwidth 343\n  bdheight 672\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x424242ff\n  label udim\n  note_font_size 42\n  xpos -328\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x424242ff\n  label uvtile\n  note_font_size 42\n  xpos 109\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n Input {\n  inputs 0\n  name tex\n  xpos -1000\n  ypos 83\n  number 1\n }\n Wireframe {\n  inputs 0\n  line_width {{wireframe_size}}\n  name Wireframe1\n  xpos -866\n  ypos 207\n }\n Switch {\n  inputs 2\n  which {{!view_wireframe}}\n  name Switch2\n  xpos -1000\n  ypos 207\n }\n Input {\n  inputs 0\n  name geo\n  xpos -1171\n  ypos 82\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -1171\n  ypos 207\n }\n Dot {\n  name Dot6\n  xpos -1137\n  ypos 287\n }\n Dot {\n  name Dot1\n  xpos -1137\n  ypos 384\n }\nset Nb3efa400 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{store.scanRes}}\n  box_height {{box_width}}\n  box_fixed true\n  name scanRes\n  xpos -1061\n  ypos 595\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan {{store.scanRes*10}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR1\n  xpos -1171\n  ypos 595\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -1171\n  ypos 675\n }\n Transform {\n  translate {{store.scanRes*uv_offset.u*-1} {store.scanRes*uv_offset*-1}}\n  shutteroffset centred\n  name pos_shift\n  xpos -1171\n  ypos 740\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{uv_shift} {uv_shift}}\n }\n Crop {\n  box {0 0 {store.scanRes} {store.scanRes}}\n  reformat true\n  crop false\n  name Crop1\n  xpos -1171\n  ypos 801\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  ROI {0 0 {store.scanRes} {store.scanRes}}\n  intensitydata {0 0 0 0}\n  maxlumapixvalue {0 0 0}\n  minlumapixvalue {0 0 0}\n  name dataCheck\n  xpos -1171\n  ypos 881\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['output'].getValue() == 1 :\\n    thisGRP\\['udim_export'].setEnabled(True)\\nelse :\\n    thisGRP\\['udim_export'].setEnabled(False)\\n\"\n  xpos -1669\n  ypos 392\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"preview in uv space\" udim \"uv tile\" \"uv pass\"}}\n  output \"uv pass\"\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize*10}}\n  box_height {{texSize*10}}\n  box_fixed true\n  resize none\n  name Reformat4\n  xpos 719\n  ypos 638\n }\n Expression {\n  expr0 x/width\n  expr1 y/height\n  channel2 none\n  channel3 none\n  name uv\n  xpos 719\n  ypos 720\n }\n Multiply {\n  channels rgb\n  value {10 10 1 1}\n  name Multiply1\n  xpos 719\n  ypos 798\n }\n Reformat {\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{texSize}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat3\n  xpos 719\n  ypos 878\n }\n Dot {\n  name Dot8\n  xpos 753\n  ypos 1225\n }\npush $Nb3efa400\n Dot {\n  name Dot4\n  xpos -780\n  ypos 384\n }\nset Nb7288400 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{box_width}}\n  box_fixed true\n  name res\n  xpos 5\n  ypos 381\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  filter Impulse\n  projection_mode uv\n  overscan {{texSize*10 x1009 1948}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR\n  xpos -154\n  ypos 381\n }\n Dot {\n  name Dot2\n  xpos -120\n  ypos 628\n }\nset Nb2983400 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -292\n  ypos 625\n }\n Text {\n  output rgb\n  cliptype none\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 {\"( ( texSize * 10 ) / 1024 ) *25\"}}\n  scale {{\"( texSize * 10 ) / 1024\"}}\n  name Text2\n  selected true\n  xpos -292\n  ypos 707\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply3\n  xpos -292\n  ypos 769\n }\n Dot {\n  name Dot13\n  xpos -258\n  ypos 821\n }\n Dot {\n  name Dot11\n  xpos -178\n  ypos 821\n }\nset Nb392dc00 [stack 0]\n Dot {\n  name Dot12\n  xpos 221\n  ypos 821\n }\npush $Nb2983400\n Dot {\n  name Dot5\n  xpos 281\n  ypos 628\n }\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge4\n  xpos 247\n  ypos 879\n }\n Crop {\n  box {0 0 {texSize*10} {texSize*10}}\n  crop false\n  name Crop4\n  xpos 247\n  ypos 961\n }\n Dot {\n  name Dot7\n  xpos 281\n  ypos 1204\n }\npush $Nb392dc00\npush $Nb2983400\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -154\n  ypos 879\n }\n Transform {\n  translate {{texSize*uv_offset.u*-1 i} {texSize*uv_offset*-1 i}}\n  shutteroffset centred\n  name pos_shift1\n  xpos -154\n  ypos 961\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{\"frame <=1001 ? 0 : (frame-1)%10\"} {\"frame < 1000 ? 0 : int(((frame-1)/10)-100)\"}}\n }\n Dot {\n  name Dot3\n  xpos -120\n  ypos 1202\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat2\n  xpos -693\n  ypos 712\n }\n Dot {\n  name Dot9\n  xpos -659\n  ypos 770\n }\nset Nb7ce1000 [stack 0]\n Dot {\n  name Dot10\n  xpos -533\n  ypos 770\n }\n Text {\n  output rgb\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 25}\n  name Text1\n  xpos -567\n  ypos 818\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply2\n  xpos -567\n  ypos 887\n }\npush $Nb7ce1000\n Grid {\n  name Grid1\n  xpos -693\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -693\n  ypos 887\n }\npush $Nb7288400\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat5\n  xpos -689\n  ypos 531\n }\n Reformat {\n  type scale\n  scale 0.1\n  resize none\n  name Reformat6\n  xpos -689\n  ypos 594\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan 2560\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR2\n  xpos -814\n  ypos 594\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -814\n  ypos 887\n }\n Crop {\n  box {0 0 1024 1024}\n  reformat true\n  crop false\n  name Crop2\n  xpos -814\n  ypos 969\n }\n Switch {\n  inputs 4\n  which {{output}}\n  name Switch1\n  xpos -814\n  ypos 1412\n }\n Output {\n  name Output1\n  xpos -814\n  ypos 1597\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['view_wireframe'].getValue() == 1 :\\n        thisGRP\\['wireframe_size'].setEnabled(True)\\nelse :\\n        thisGRP\\['wireframe_size'].setEnabled(False)\\n\"\n  xpos -1668\n  ypos 484\n  addUserKnob {20 User}\n  addUserKnob {6 view_wireframe l \"view wireframe\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1419\n  ypos 388\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\" +STARTLINE}\n  addUserKnob {3 scanRes}\n  scanRes 64\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\nend_group\nReadGeo2 {\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo9\n xpos 2011\n ypos 509\n}\nReformat {\n inputs 0\n format \"1280 720 0 0 1280 720 1 HD_720\"\n name Reformat3\n xpos 2141\n ypos 647\n}\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender3\n xpos 2011\n ypos 651\n}\nAxis2 {\n inputs 0\n rotate {0 {curve x1001 -20 x1050 20} 0}\n name Axis1\n xpos 1065\n ypos -503\n}\nCamera2 {\n translate {66.90603638 35.25645828 -5.300000668}\n rotate {-24.62797338 90.0000025 0}\n name Camera1\n xpos 1065\n ypos -381\n}\nDot {\n name Dot7\n xpos 1089\n ypos -259\n}\nset Na172b400 [stack 0]\nDot {\n name Dot8\n xpos 1089\n ypos 665\n}\npush $Na172b400\nFrameHold {\n first_frame 1001\n name FrameHold1\n xpos 1155\n ypos -269\n}\nCheckerBoard2 {\n inputs 0\n name CheckerBoard1\n xpos 1265\n ypos -391\n}\nProject3D2 {\n inputs 2\n name Project3D1\n xpos 1265\n ypos -263\n}\nReadGeo2 {\n inputs 0\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo3\n xpos 1382\n ypos -267\n}\nGroup {\n inputs 2\n name UVEditor4\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x6666ff\n xpos 1316\n ypos -176\n addUserKnob {20 tab_general l General}\n addUserKnob {3 texSize l \"texture size\"}\n texSize 256\n addUserKnob {41 filter T SR.filter}\n addUserKnob {41 antialiasing T SR.antialiasing}\n addUserKnob {26 \"\"}\n addUserKnob {41 view_wireframe l \"view wireframe\" T menu02.view_wireframe}\n addUserKnob {7 wireframe_size l \"wireframe size\" +DISABLED R 0.1 10}\n wireframe_size 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 output T menu01.output}\n addUserKnob {30 uv_shift l INVISIBLE +INVISIBLE}\n addUserKnob {41 scanRes +INVISIBLE T store.scanRes}\n addUserKnob {22 udim_export l export +DISABLED T \"thisGRP = nuke.thisGroup()\\ndataCheckNode = nuke.toNode('dataCheck')\\n\\n########################################################\\n\\nusrUV = thisGRP\\['uv_shift'].getValue()\\ndataReturn = \\[]\\n\\nprogBar = nuke.ProgressTask('Checking UV')\\njobCount = 0\\n\\nfor v in range (0, 10) :\\n  for u in range (0, 10) :\\n\\n    ### progress bar\\n    jobCount += 1\\n    progShow = int(jobCount/100 * 100)\\n    if progBar.isCancelled() :\\n      break;\\n    progBar.setProgress(progShow)\\n    #################\\n\\n    thisGRP\\['uv_shift'].setValue(\\[u,v])\\n    nuke.execute(dataCheckNode, nuke.frame(), nuke.frame())\\n    if dataCheckNode\\['maxlumapixvalue'].getValue() != \\[0.0, 0.0, 0.0] :\\n      dataReturn.append(1)\\n    else :\\n      dataReturn.append(0)\\n\\ndel progBar\\n\\ndataCheckNode\\['maxlumapixdata'].clearAnimated()\\ndataCheckNode\\['maxlumapixvalue'].clearAnimated()\\ndataCheckNode\\['minlumapixdata'].clearAnimated()\\ndataCheckNode\\['minlumapixvalue'].clearAnimated()\\n\\nif len(dataReturn) == 100 :\\n\\tfor i in range (0, 100) :\\n\\t  if dataReturn\\[i] == 1 :\\n\\t    uvMax = i\\n\\n\\tthisGRP\\['uv_shift'].setValue(usrUV)\\n\\n\\t########################################################\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\troot = getLevel()\\n\\n\\troot.begin()\\n\\toutFR = nuke.nodes.FrameRange()\\n\\toutFR\\['first_frame'].setValue(1001)\\n\\toutFR\\['last_frame'].setValue(1001 + uvMax)\\n\\toutFR\\['label'].setValue( 'udim range : 1001 - \\{0\\}'.format( str(1001 + uvMax) ) )\\n\\toutFR.setInput(0, thisGRP)\\n\\toutFR.setXYpos(int(thisGRP\\['xpos'].value()), int(thisGRP\\['ypos'].value()+80))\\n\\n\\texpDot = nuke.nodes.Dot()\\n\\texpDot\\['label'].setValue('Texture modify here : swap the paint/patch texture into udim frame')\\n\\texpDot.setInput(0, outFR)\\n\\n\\tyDot = nuke.nodes.Dot()\\n\\tyDot.setInput(0, expDot)\\n\\n\\tuvGRP = nuke.nodes.Group()\\n\\tuvGRP\\['label'].setValue('udim stitch for nuke')\\n\\n\\tnDot = nuke.nodes.Dot()\\n\\tnDot\\['label'].setValue('Connect to Geo')\\n\\troot.end()\\n\\n\\tuvGRP.begin()\\n\\tinNode = nuke.nodes.Input(name='udim')\\n\\tcropNode = nuke.nodes.Crop()\\n\\tcropNode\\['crop'].setValue(1)\\n\\tcropNode.setInput(0, inNode)\\n\\tallDot = nuke.nodes.Dot()\\n\\tallDot.setInput(0, cropNode)\\n\\n\\tuvMerge = nuke.nodes.Merge2()\\n\\toutNode = nuke.nodes.Output()\\n\\toutNode.setInput(0, uvMerge)\\n\\n\\tfor i in range (0, uvMax+1) :\\n\\t  uDimHold = nuke.nodes.FrameHold()\\n\\t  uDimHold\\['first_frame'].setValue(1001+i)\\n\\t  uDimHold.setInput(0, allDot)\\n\\t  \\n\\t  uvTran = nuke.nodes.Transform()\\n\\t  uvTran.addKnob(nuke.UV_Knob('uv_offset'))\\n\\t  if i < 10 :\\n\\t    u = i\\n\\t    v = 0\\n\\t  else :\\n\\t    if i < 100 :\\n\\t      u = int(str(i)\\[1])\\n\\t      v = int(str(i)\\[0])\\n\\t  uvTran\\['uv_offset'].setValue(\\[u, v])\\n\\t  uvTran\\['translate'].setExpression('input.width*uv_offset.u', 0)\\n\\t  uvTran\\['translate'].setExpression('input.height*uv_offset.v', 1)\\n\\t  uvTran.setInput(0, uDimHold)\\n\\n\\t  uvMerge.setInput(i+3, uvTran)\\n\\n\\n\\tuvGRP.end()\\n\\n\\tuvGRP.setInput(0, yDot)\\n\\tnDot.setInput(0, uvGRP)\\n\\n\\troot.begin()\\n\\texWrite = nuke.nodes.Write()\\n\\texWrite.setInput(0, yDot)\\n\\texWrite\\['label'].setValue('export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]')\\n\\troot.end()\\n\\n\\tdel uvMax\\nelse :\\n\\tnuke.message('Scan process terminated by user.')\\n\\ndel dataReturn\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 font T store.font}\n addUserKnob {6 disable_error l \"disable text\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-04-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fix&nbsp;misspelling&nbsp;of&nbsp;knob's&nbsp;label<br>-&nbsp;fix&nbsp;not&nbsp;working&nbsp;disable&nbsp;text&nbsp;knob<br><br>1.3<br>-&nbsp;fix&nbsp;font&nbsp;issue<br>&nbsp;&nbsp;works&nbsp;on&nbsp;linux,&nbsp;mac&nbsp;&&nbsp;windows<br><br>1.2<br>-&nbsp;preview&nbsp;in&nbsp;uv&nbsp;space&nbsp;set&nbsp;limited&nbsp;<br>&nbsp;&nbsp;in&nbsp;1024&nbsp;resolution&nbsp;for&nbsp;not&nbsp;drag&nbsp;<br>&nbsp;&nbsp;down&nbsp;speed&nbsp;purpose.<br>-&nbsp;added&nbsp;show&nbsp;tile&nbsp;number<br>-&nbsp;changed&nbsp;uv&nbsp;combine&nbsp;to&nbsp;uv&nbsp;stitch<br>&nbsp;&nbsp;in&nbsp;export&nbsp;group<br>-&nbsp;code&nbsp;update<br>-&nbsp;scan&nbsp;size&nbsp;reduce,&nbsp;speed&nbsp;up&nbsp;process\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1755\n  ypos 302\n  bdwidth 263\n  bdheight 296\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x424242ff\n  label \"UV preview\"\n  note_font_size 42\n  xpos -824\n  ypos 451\n  bdwidth 343\n  bdheight 672\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x424242ff\n  label udim\n  note_font_size 42\n  xpos -328\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x424242ff\n  label uvtile\n  note_font_size 42\n  xpos 109\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n Input {\n  inputs 0\n  name tex\n  xpos -1000\n  ypos 83\n  number 1\n }\n Wireframe {\n  inputs 0\n  line_width {{wireframe_size}}\n  name Wireframe1\n  xpos -866\n  ypos 207\n }\n Switch {\n  inputs 2\n  which {{!view_wireframe}}\n  name Switch2\n  xpos -1000\n  ypos 207\n }\n Input {\n  inputs 0\n  name geo\n  xpos -1171\n  ypos 82\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -1171\n  ypos 207\n }\n Dot {\n  name Dot6\n  xpos -1137\n  ypos 287\n }\n Dot {\n  name Dot1\n  xpos -1137\n  ypos 384\n }\nset Nbcb69c00 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{store.scanRes}}\n  box_height {{box_width}}\n  box_fixed true\n  name scanRes\n  xpos -1061\n  ypos 595\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan {{store.scanRes*10}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR1\n  xpos -1171\n  ypos 595\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -1171\n  ypos 675\n }\n Transform {\n  translate {{store.scanRes*uv_offset.u*-1} {store.scanRes*uv_offset*-1}}\n  shutteroffset centred\n  name pos_shift\n  xpos -1171\n  ypos 740\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{uv_shift} {uv_shift}}\n }\n Crop {\n  box {0 0 {store.scanRes} {store.scanRes}}\n  reformat true\n  crop false\n  name Crop1\n  xpos -1171\n  ypos 801\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  ROI {0 0 {store.scanRes} {store.scanRes}}\n  intensitydata {0 0 0 0}\n  maxlumapixvalue {0 0 0}\n  minlumapixvalue {0 0 0}\n  name dataCheck\n  xpos -1171\n  ypos 881\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['output'].getValue() == 1 :\\n    thisGRP\\['udim_export'].setEnabled(True)\\nelse :\\n    thisGRP\\['udim_export'].setEnabled(False)\\n\"\n  xpos -1669\n  ypos 392\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"preview in uv space\" udim \"uv tile\" \"uv pass\"}}\n  output \"uv tile\"\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize*10}}\n  box_height {{texSize*10}}\n  box_fixed true\n  resize none\n  name Reformat4\n  xpos 719\n  ypos 638\n }\n Expression {\n  expr0 x/width\n  expr1 y/height\n  channel2 none\n  channel3 none\n  name uv\n  xpos 719\n  ypos 720\n }\n Multiply {\n  channels rgb\n  value {10 10 1 1}\n  name Multiply1\n  xpos 719\n  ypos 798\n }\n Reformat {\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{texSize}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat3\n  xpos 719\n  ypos 878\n }\n Dot {\n  name Dot8\n  xpos 753\n  ypos 1225\n }\npush $Nbcb69c00\n Dot {\n  name Dot4\n  xpos -780\n  ypos 384\n }\nset Nbcbc7c00 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{box_width}}\n  box_fixed true\n  name res\n  xpos 5\n  ypos 381\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  filter Impulse\n  projection_mode uv\n  overscan {{texSize*10 x1009 1948}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR\n  xpos -154\n  ypos 381\n }\n Dot {\n  name Dot2\n  xpos -120\n  ypos 628\n }\nset Nbcbc6c00 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -292\n  ypos 625\n }\n Text {\n  output rgb\n  cliptype none\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 {\"( ( texSize * 10 ) / 1024 ) *25\"}}\n  scale {{\"( texSize * 10 ) / 1024\"}}\n  name Text2\n  selected true\n  xpos -292\n  ypos 707\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply3\n  xpos -292\n  ypos 769\n }\n Dot {\n  name Dot13\n  xpos -258\n  ypos 821\n }\n Dot {\n  name Dot11\n  xpos -178\n  ypos 821\n }\nset Nbcbf1400 [stack 0]\n Dot {\n  name Dot12\n  xpos 221\n  ypos 821\n }\npush $Nbcbc6c00\n Dot {\n  name Dot5\n  xpos 281\n  ypos 628\n }\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge4\n  xpos 247\n  ypos 879\n }\n Crop {\n  box {0 0 {texSize*10} {texSize*10}}\n  crop false\n  name Crop4\n  xpos 247\n  ypos 961\n }\n Dot {\n  name Dot7\n  xpos 281\n  ypos 1204\n }\npush $Nbcbf1400\npush $Nbcbc6c00\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -154\n  ypos 879\n }\n Transform {\n  translate {{texSize*uv_offset.u*-1 i} {texSize*uv_offset*-1 i}}\n  shutteroffset centred\n  name pos_shift1\n  xpos -154\n  ypos 961\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{\"frame <=1001 ? 0 : (frame-1)%10\"} {\"frame < 1000 ? 0 : int(((frame-1)/10)-100)\"}}\n }\n Dot {\n  name Dot3\n  xpos -120\n  ypos 1202\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat2\n  xpos -693\n  ypos 712\n }\n Dot {\n  name Dot9\n  xpos -659\n  ypos 770\n }\nset Nbcc12800 [stack 0]\n Dot {\n  name Dot10\n  xpos -533\n  ypos 770\n }\n Text {\n  output rgb\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 25}\n  name Text1\n  xpos -567\n  ypos 818\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply2\n  xpos -567\n  ypos 887\n }\npush $Nbcc12800\n Grid {\n  name Grid1\n  xpos -693\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -693\n  ypos 887\n }\npush $Nbcbc7c00\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat5\n  xpos -689\n  ypos 531\n }\n Reformat {\n  type scale\n  scale 0.1\n  resize none\n  name Reformat6\n  xpos -689\n  ypos 594\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan 2560\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR2\n  xpos -814\n  ypos 594\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -814\n  ypos 887\n }\n Crop {\n  box {0 0 1024 1024}\n  reformat true\n  crop false\n  name Crop2\n  xpos -814\n  ypos 969\n }\n Switch {\n  inputs 4\n  which {{output}}\n  name Switch1\n  xpos -814\n  ypos 1412\n }\n Output {\n  name Output1\n  xpos -814\n  ypos 1597\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['view_wireframe'].getValue() == 1 :\\n        thisGRP\\['wireframe_size'].setEnabled(True)\\nelse :\\n        thisGRP\\['wireframe_size'].setEnabled(False)\\n\"\n  xpos -1668\n  ypos 484\n  addUserKnob {20 User}\n  addUserKnob {6 view_wireframe l \"view wireframe\" +STARTLINE}\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1419\n  ypos 388\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\" +STARTLINE}\n  addUserKnob {3 scanRes}\n  scanRes 64\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\nend_group\nReadGeo2 {\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo4\n xpos 1316\n ypos 521\n}\nReformat {\n inputs 0\n format \"1280 720 0 0 1280 720 1 HD_720\"\n name Reformat2\n xpos 1446\n ypos 657\n}\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender2\n xpos 1316\n ypos 661\n}\npush $N8decb800\nDot {\n name Dot6\n xpos 252\n ypos 647\n}\npush $Na052a000\nGroup {\n name Group1\n label \"udim stitch for nuke\"\n xpos 466\n ypos 344\n}\n Input {\n  inputs 0\n  name udim\n }\n Crop {\n  name Crop1\n }\n Dot {\n  name Dot1\n }\nset Na18e7800 [stack 0]\n FrameHold {\n  first_frame 1022\n  name FrameHold22\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform22\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {1 2}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1021\n  name FrameHold21\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform21\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {0 2}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1020\n  name FrameHold20\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform20\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {9 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1019\n  name FrameHold19\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform19\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {8 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1018\n  name FrameHold18\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform18\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {7 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1017\n  name FrameHold17\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform17\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {6 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1016\n  name FrameHold16\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform16\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {5 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1015\n  name FrameHold15\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform15\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {4 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1014\n  name FrameHold14\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform14\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {3 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1013\n  name FrameHold13\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform13\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {2 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1012\n  name FrameHold12\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform12\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {1 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1011\n  name FrameHold11\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform11\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {0 1}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1010\n  name FrameHold10\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform10\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {9 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1009\n  name FrameHold9\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform9\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {8 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1008\n  name FrameHold8\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform8\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {7 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1007\n  name FrameHold7\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform7\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {6 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1006\n  name FrameHold6\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform6\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {5 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1005\n  name FrameHold5\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform5\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {4 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1004\n  name FrameHold4\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform4\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {3 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1003\n  name FrameHold3\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform3\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {2 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1002\n  name FrameHold2\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform2\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {1 0}\n }\npush $Na18e7800\n FrameHold {\n  first_frame 1001\n  name FrameHold1\n }\n Transform {\n  translate {{input.width*uv_offset.u} {input.height*uv_offset.v}}\n  name Transform1\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n }\npush 0\npush 0\npush 0\n Merge2 {\n  inputs 24+1\n  name Merge1\n }\n Output {\n  name Output1\n }\nend_group\nDot {\n name Dot4\n label \"Connect to Geo\"\n xpos 500\n ypos 424\n}\nReadGeo2 {\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo1\n xpos 466\n ypos 524\n}\nReformat {\n inputs 0\n format \"1280 720 0 0 1280 720 1 HD_720\"\n name Reformat1\n xpos 596\n ypos 639\n}\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender1\n xpos 466\n ypos 643\n}\nReadGeo2 {\n inputs 0\n file ./Trex_UVtile_skin.abc\n localizationPolicy off\n version 2\n use_geometry_colors false\n range_first 0\n range_last 0\n scene_view {{0} imported: 0 selected: 0 items: /root/Trex_UVtile:Skin/Trex_UVtile:SkinShape}\n name ReadGeo2\n xpos -157\n ypos -276\n}\nGroup {\n name UVEditor2\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\n    import re\\n\\n    fontpath = re.split( '/|\\\"\\\"' , nuke.EXE_PATH )\\n    fontpath.pop()\\n    fontpath += \\['plugins','fonts']\\n    \\n    if os.path.isfile( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['UtopiaBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['CourierBold.pfa'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['CourierBold.pfa'] ) )\\n    elif os.path.isfile( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) ) :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['Courier10PitchBold.pfb'] ) )\\n    else :\\n        thisGRP\\['font'].setValue( '/'.join( fontpath + \\['BitstreamCharterBold.pfb'] ) )\\n\"\n tile_color 0x6666ff\n xpos -157\n ypos -170\n addUserKnob {20 tab_general l General}\n addUserKnob {3 texSize l \"texture size\"}\n texSize 1024\n addUserKnob {41 filter T SR.filter}\n addUserKnob {41 antialiasing T SR.antialiasing}\n addUserKnob {26 \"\"}\n addUserKnob {41 view_wireframe l \"view wireframe\" T menu02.view_wireframe}\n addUserKnob {7 wireframe_size l \"wireframe size\" R 0.1 10}\n wireframe_size 0.1\n addUserKnob {26 \"\"}\n addUserKnob {41 output T menu01.output}\n addUserKnob {30 uv_shift l INVISIBLE +INVISIBLE}\n addUserKnob {41 scanRes +INVISIBLE T store.scanRes}\n addUserKnob {22 udim_export l export +DISABLED T \"thisGRP = nuke.thisGroup()\\ndataCheckNode = nuke.toNode('dataCheck')\\n\\n########################################################\\n\\nusrUV = thisGRP\\['uv_shift'].getValue()\\ndataReturn = \\[]\\n\\nprogBar = nuke.ProgressTask('Checking UV')\\njobCount = 0\\n\\nfor v in range (0, 10) :\\n  for u in range (0, 10) :\\n\\n    ### progress bar\\n    jobCount += 1\\n    progShow = int(jobCount/100 * 100)\\n    if progBar.isCancelled() :\\n      break;\\n    progBar.setProgress(progShow)\\n    #################\\n\\n    thisGRP\\['uv_shift'].setValue(\\[u,v])\\n    nuke.execute(dataCheckNode, nuke.frame(), nuke.frame())\\n    if dataCheckNode\\['maxlumapixvalue'].getValue() != \\[0.0, 0.0, 0.0] :\\n      dataReturn.append(1)\\n    else :\\n      dataReturn.append(0)\\n\\ndel progBar\\n\\ndataCheckNode\\['maxlumapixdata'].clearAnimated()\\ndataCheckNode\\['maxlumapixvalue'].clearAnimated()\\ndataCheckNode\\['minlumapixdata'].clearAnimated()\\ndataCheckNode\\['minlumapixvalue'].clearAnimated()\\n\\nif len(dataReturn) == 100 :\\n\\tfor i in range (0, 100) :\\n\\t  if dataReturn\\[i] == 1 :\\n\\t    uvMax = i\\n\\n\\tthisGRP\\['uv_shift'].setValue(usrUV)\\n\\n\\t########################################################\\n\\n\\tgoStore = nuke.toNode('store')\\n\\tgoStore\\['fn'].execute()\\n\\n\\troot = getLevel()\\n\\n\\troot.begin()\\n\\toutFR = nuke.nodes.FrameRange()\\n\\toutFR\\['first_frame'].setValue(1001)\\n\\toutFR\\['last_frame'].setValue(1001 + uvMax)\\n\\toutFR\\['label'].setValue( 'udim range : 1001 - \\{0\\}'.format( str(1001 + uvMax) ) )\\n\\toutFR.setInput(0, thisGRP)\\n\\toutFR.setXYpos(int(thisGRP\\['xpos'].value()), int(thisGRP\\['ypos'].value()+80))\\n\\n\\texpDot = nuke.nodes.Dot()\\n\\texpDot\\['label'].setValue('Texture modify here : swap the paint/patch texture into udim frame')\\n\\texpDot.setInput(0, outFR)\\n\\n\\tyDot = nuke.nodes.Dot()\\n\\tyDot.setInput(0, expDot)\\n\\n\\tuvGRP = nuke.nodes.Group()\\n\\tuvGRP\\['label'].setValue('udim stitch for nuke')\\n\\n\\tnDot = nuke.nodes.Dot()\\n\\tnDot\\['label'].setValue('Connect to Geo')\\n\\troot.end()\\n\\n\\tuvGRP.begin()\\n\\tinNode = nuke.nodes.Input(name='udim')\\n\\tcropNode = nuke.nodes.Crop()\\n\\tcropNode\\['crop'].setValue(1)\\n\\tcropNode.setInput(0, inNode)\\n\\tallDot = nuke.nodes.Dot()\\n\\tallDot.setInput(0, cropNode)\\n\\n\\tuvMerge = nuke.nodes.Merge2()\\n\\toutNode = nuke.nodes.Output()\\n\\toutNode.setInput(0, uvMerge)\\n\\n\\tfor i in range (0, uvMax+1) :\\n\\t  uDimHold = nuke.nodes.FrameHold()\\n\\t  uDimHold\\['first_frame'].setValue(1001+i)\\n\\t  uDimHold.setInput(0, allDot)\\n\\t  \\n\\t  uvTran = nuke.nodes.Transform()\\n\\t  uvTran.addKnob(nuke.UV_Knob('uv_offset'))\\n\\t  if i < 10 :\\n\\t    u = i\\n\\t    v = 0\\n\\t  else :\\n\\t    if i < 100 :\\n\\t      u = int(str(i)\\[1])\\n\\t      v = int(str(i)\\[0])\\n\\t  uvTran\\['uv_offset'].setValue(\\[u, v])\\n\\t  uvTran\\['translate'].setExpression('input.width*uv_offset.u', 0)\\n\\t  uvTran\\['translate'].setExpression('input.height*uv_offset.v', 1)\\n\\t  uvTran.setInput(0, uDimHold)\\n\\n\\t  uvMerge.setInput(i+3, uvTran)\\n\\n\\n\\tuvGRP.end()\\n\\n\\tuvGRP.setInput(0, yDot)\\n\\tnDot.setInput(0, uvGRP)\\n\\n\\troot.begin()\\n\\texWrite = nuke.nodes.Write()\\n\\texWrite.setInput(0, yDot)\\n\\texWrite\\['label'].setValue('export udim<br>render range : \\[value input.first_frame] - \\[value input.last_frame]')\\n\\troot.end()\\n\\n\\tdel uvMax\\nelse :\\n\\tnuke.message('Scan process terminated by user.')\\n\\ndel dataReturn\" +STARTLINE}\n addUserKnob {26 \"\"}\n addUserKnob {41 font T store.font}\n addUserKnob {6 disable_error l \"disable text\" +STARTLINE}\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l Version T 1.4}\n addUserKnob {26 l_DATE l \"Date Modified\" T 2020-04-24}\n addUserKnob {22 btn_CHANGELOG l Changelog T \"log = \\\"1.4<br>-&nbsp;fix&nbsp;misspelling&nbsp;of&nbsp;knob's&nbsp;label<br>-&nbsp;fix&nbsp;not&nbsp;working&nbsp;disable&nbsp;text&nbsp;knob<br><br>1.3<br>-&nbsp;fix&nbsp;font&nbsp;issue<br>&nbsp;&nbsp;works&nbsp;on&nbsp;linux,&nbsp;mac&nbsp;&&nbsp;windows<br><br>1.2<br>-&nbsp;preview&nbsp;in&nbsp;uv&nbsp;space&nbsp;set&nbsp;limited&nbsp;<br>&nbsp;&nbsp;in&nbsp;1024&nbsp;resolution&nbsp;for&nbsp;not&nbsp;drag&nbsp;<br>&nbsp;&nbsp;down&nbsp;speed&nbsp;purpose.<br>-&nbsp;added&nbsp;show&nbsp;tile&nbsp;number<br>-&nbsp;changed&nbsp;uv&nbsp;combine&nbsp;to&nbsp;uv&nbsp;stitch<br>&nbsp;&nbsp;in&nbsp;export&nbsp;group<br>-&nbsp;code&nbsp;update<br>-&nbsp;scan&nbsp;size&nbsp;reduce,&nbsp;speed&nbsp;up&nbsp;process\\\"\\nnuke.message( log )\" +STARTLINE}\n addUserKnob {26 l_DEV l \"Developed by\" T \"<a href='https://facebook.com/MJTLab'><font color='orange'>Mark Joey Tang</font></a>\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -1755\n  ypos 302\n  bdwidth 263\n  bdheight 296\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode2\n  tile_color 0x424242ff\n  label \"UV preview\"\n  note_font_size 42\n  xpos -824\n  ypos 451\n  bdwidth 343\n  bdheight 672\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode3\n  tile_color 0x424242ff\n  label udim\n  note_font_size 42\n  xpos -328\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n BackdropNode {\n  inputs 0\n  name BackdropNode4\n  tile_color 0x424242ff\n  label uvtile\n  note_font_size 42\n  xpos 109\n  ypos 451\n  bdwidth 354\n  bdheight 675\n }\n Input {\n  inputs 0\n  name tex\n  xpos -1000\n  ypos 83\n  number 1\n }\n Wireframe {\n  inputs 0\n  line_width {{wireframe_size}}\n  name Wireframe1\n  xpos -866\n  ypos 207\n }\n Switch {\n  inputs 2\n  which {{!view_wireframe}}\n  name Switch2\n  xpos -1000\n  ypos 207\n }\n Input {\n  inputs 0\n  name geo\n  xpos -1171\n  ypos 82\n }\n ApplyMaterial {\n  inputs 2\n  name ApplyMaterial1\n  xpos -1171\n  ypos 207\n }\n Dot {\n  name Dot6\n  xpos -1137\n  ypos 287\n }\n Dot {\n  name Dot1\n  xpos -1137\n  ypos 384\n }\nset Nb4b16c00 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{store.scanRes}}\n  box_height {{box_width}}\n  box_fixed true\n  name scanRes\n  xpos -1061\n  ypos 595\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan {{store.scanRes*10}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR1\n  xpos -1171\n  ypos 595\n }\n Remove {\n  operation keep\n  channels rgb\n  name Remove1\n  xpos -1171\n  ypos 675\n }\n Transform {\n  translate {{store.scanRes*uv_offset.u*-1} {store.scanRes*uv_offset*-1}}\n  shutteroffset centred\n  name pos_shift\n  xpos -1171\n  ypos 740\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{uv_shift} {uv_shift}}\n }\n Crop {\n  box {0 0 {store.scanRes} {store.scanRes}}\n  reformat true\n  crop false\n  name Crop1\n  xpos -1171\n  ypos 801\n }\n CurveTool {\n  operation \"Max Luma Pixel\"\n  ROI {0 0 {store.scanRes} {store.scanRes}}\n  intensitydata {0 0 0 0}\n  maxlumapixvalue {0 0 0}\n  minlumapixvalue {0 0 0}\n  name dataCheck\n  xpos -1171\n  ypos 881\n }\n NoOp {\n  inputs 0\n  name menu01\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['output'].getValue() == 1 :\\n    thisGRP\\['udim_export'].setEnabled(True)\\nelse :\\n    thisGRP\\['udim_export'].setEnabled(False)\\n\"\n  xpos -1669\n  ypos 392\n  addUserKnob {20 User}\n  addUserKnob {4 output M {\"preview in uv space\" udim \"uv tile\" \"uv pass\"}}\n }\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize*10}}\n  box_height {{texSize*10}}\n  box_fixed true\n  resize none\n  name Reformat4\n  xpos 719\n  ypos 638\n }\n Expression {\n  expr0 x/width\n  expr1 y/height\n  channel2 none\n  channel3 none\n  name uv\n  xpos 719\n  ypos 720\n }\n Multiply {\n  channels rgb\n  value {10 10 1 1}\n  name Multiply1\n  xpos 719\n  ypos 798\n }\n Reformat {\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{texSize}}\n  box_fixed true\n  resize none\n  center false\n  pbb true\n  name Reformat3\n  xpos 719\n  ypos 878\n }\n Dot {\n  name Dot8\n  xpos 753\n  ypos 1225\n }\npush $Nb4b16c00\n Dot {\n  name Dot4\n  xpos -780\n  ypos 384\n }\nset Nb4b72c00 [stack 0]\n Reformat {\n  inputs 0\n  type \"to box\"\n  box_width {{texSize}}\n  box_height {{box_width}}\n  box_fixed true\n  name res\n  xpos 5\n  ypos 381\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  filter Impulse\n  projection_mode uv\n  overscan {{texSize*10 x1009 1948}}\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR\n  xpos -154\n  ypos 381\n }\n Dot {\n  name Dot2\n  xpos -120\n  ypos 628\n }\nset Nb4ba5c00 [stack 0]\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  name Shuffle1\n  xpos -292\n  ypos 625\n }\n Text {\n  output rgb\n  cliptype none\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 {\"( ( texSize * 10 ) / 1024 ) *25\"}}\n  scale {{\"( texSize * 10 ) / 1024\"}}\n  name Text2\n  selected true\n  xpos -292\n  ypos 707\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply3\n  xpos -292\n  ypos 769\n }\n Dot {\n  name Dot13\n  xpos -258\n  ypos 821\n }\n Dot {\n  name Dot11\n  xpos -178\n  ypos 821\n }\nset Nb4ba4400 [stack 0]\n Dot {\n  name Dot12\n  xpos 221\n  ypos 821\n }\npush $Nb4ba5c00\n Dot {\n  name Dot5\n  xpos 281\n  ypos 628\n }\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge4\n  xpos 247\n  ypos 879\n }\n Crop {\n  box {0 0 {texSize*10} {texSize*10}}\n  crop false\n  name Crop4\n  xpos 247\n  ypos 961\n }\n Dot {\n  name Dot7\n  xpos 281\n  ypos 1204\n }\npush $Nb4ba4400\npush $Nb4ba5c00\n Merge2 {\n  inputs 2\n  operation under\n  Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n  name Merge3\n  xpos -154\n  ypos 879\n }\n Transform {\n  translate {{texSize*uv_offset.u*-1 i} {texSize*uv_offset*-1 i}}\n  shutteroffset centred\n  name pos_shift1\n  xpos -154\n  ypos 961\n  addUserKnob {20 User}\n  addUserKnob {30 uv_offset}\n  uv_offset {{\"frame <=1001 ? 0 : (frame-1)%10\"} {\"frame < 1000 ? 0 : int(((frame-1)/10)-100)\"}}\n }\n Dot {\n  name Dot3\n  xpos -120\n  ypos 1202\n }\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat2\n  xpos -693\n  ypos 712\n }\n Dot {\n  name Dot9\n  xpos -659\n  ypos 770\n }\nset Na365d800 [stack 0]\n Dot {\n  name Dot10\n  xpos -533\n  ypos 770\n }\n Text {\n  output rgb\n  message \" 91 92 93 94 95 96 97 98 99 00\\n 81 82 83 84 85 86 87 88 89 90\\n 71 72 73 74 75 76 77 78 79 80\\n 61 62 63 64 65 66 67 68 69 70\\n 51 52 53 54 55 56 57 58 59 60\\n 41 42 43 44 45 46 47 48 49 50\\n 31 32 33 34 35 36 37 38 39 40\\n 21 22 23 24 25 26 27 28 29 30\\n 11 12 13 14 15 16 17 18 19 20\\n 01 02 03 04 05 06 07 08 09 10\"\n  font \"\\[value store.font]\"\n  kerning 0.236\n  leading 1.051\n  yjustify bottom\n  Transform 1\n  box {0 0 1024 999}\n  translate {0 25}\n  name Text1\n  xpos -567\n  ypos 818\n  disable {{disable_error}}\n }\n Multiply {\n  channels rgb\n  value {0 0.05 0.05 1}\n  name Multiply2\n  xpos -567\n  ypos 887\n }\npush $Na365d800\n Grid {\n  name Grid1\n  xpos -693\n  ypos 814\n }\n Merge2 {\n  inputs 2\n  name Merge2\n  xpos -693\n  ypos 887\n }\npush $Nb4b72c00\n Reformat {\n  inputs 0\n  format \"1024 1024 0 0 1024 1024 1 square_1K\"\n  name Reformat5\n  xpos -689\n  ypos 531\n }\n Reformat {\n  type scale\n  scale 0.1\n  resize none\n  name Reformat6\n  xpos -689\n  ypos 594\n }\n ScanlineRender {\n  inputs 2\n  conservative_shader_sampling false\n  transparency false\n  ztest_enabled false\n  projection_mode uv\n  overscan 2560\n  shutteroffset centred\n  motion_vectors_type off\n  MB_channel none\n  name SR2\n  xpos -814\n  ypos 594\n }\n Merge2 {\n  inputs 2\n  operation under\n  name Merge1\n  xpos -814\n  ypos 887\n }\n Crop {\n  box {0 0 1024 1024}\n  reformat true\n  crop false\n  name Crop2\n  xpos -814\n  ypos 969\n }\n Switch {\n  inputs 4\n  which {{output}}\n  name Switch1\n  xpos -814\n  ypos 1412\n }\n Output {\n  name Output1\n  xpos -814\n  ypos 1597\n }\n NoOp {\n  inputs 0\n  name menu02\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nif thisGRP\\['view_wireframe'].getValue() == 1 :\\n        thisGRP\\['wireframe_size'].setEnabled(True)\\nelse :\\n        thisGRP\\['wireframe_size'].setEnabled(False)\\n\"\n  xpos -1668\n  ypos 484\n  addUserKnob {20 User}\n  addUserKnob {6 view_wireframe l \"view wireframe\" +STARTLINE}\n  view_wireframe true\n }\n NoOp {\n  inputs 0\n  name store\n  xpos -1419\n  ypos 388\n  addUserKnob {20 User}\n  addUserKnob {22 fn T \"def getLevel() :\\n\\t### level define ###\\n\\tif len(nuke.thisNode().fullName().split('.')) == 1 :\\n\\t\\t  ggLevel = nuke.root()\\n\\telse :\\n\\t\\t  nodePath = nuke.thisNode().fullName().split('.')\\n\\t\\t  nodePath.pop()\\n\\t\\t  ggLevel = nuke.toNode('.'.join(nodePath))\\n\\treturn ggLevel\" +STARTLINE}\n  addUserKnob {3 scanRes}\n  scanRes 64\n  addUserKnob {2 font}\n  font \"C:/Program Files/Nuke12.0v3/plugins/fonts/UtopiaBold.pfa\"\n }\nend_group\nDot {\n name Dot1\n xpos -123\n ypos 637\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_WaterLens_sampleScript.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x8e8e3800\n label \"default node\"\n note_font_size 42\n xpos 64\n ypos -724\n bdwidth 243\n bdheight 195\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n tile_color 0x3c30ff\n label \"<b>different droplet in different shape with DOF</b>\\n\\n<font size=2>- DOF inside the node with recommend setting</font>\"\n note_font_size 42\n xpos 27\n ypos -381\n bdwidth 1025\n bdheight 1561\n}\nBackdropNode {\n inputs 0\n name BackdropNode3\n tile_color 0x3c30ff\n label \"<b>different droplet in different shape with DOF</b>\\n\\n<font size=2>- can use DOF(zDefocus) precedural in a single node.\\n- when defocus value is 1 or 0 inside the gizmo, the node will be disable to avoid drag down the speed.</font>\"\n note_font_size 42\n xpos 1200\n ypos -389\n bdwidth 1493\n bdheight 1552\n}\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0x3c30ff\n label \"<b>different droplet in different shape in focus</b>\"\n note_font_size 42\n xpos 2954\n ypos -408\n bdwidth 1493\n bdheight 1552\n}\nBackdropNode {\n inputs 0\n name BackdropNode5\n tile_color 0x3c30ff\n label \"<b>droplet in jiggle motion</b>\\n\\n<font size=2>- like windshield in motion car (I use expression to generate a random motion on 'center' knob)</font>\"\n note_font_size 42\n xpos 4650\n ypos -397\n bdwidth 1493\n bdheight 1552\n}\nBackdropNode {\n inputs 0\n name BackdropNode6\n tile_color 0x3c30ff\n label \"<b>droplet pop in on lens</b>\\n\\n<font size=2>- I set the lifetime in rotopaint, but it can be any kind of animated matte.\"\n note_font_size 42\n xpos 6431\n ypos -398\n bdwidth 1701\n bdheight 1542\n}\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44614000 x438b0000 x3b800080}\n       {x44614000 x438a8000 x3e4c60cc}\n       {x44614000 x438a0000 x3e5260d2}\n       {x44618000 x43890000 x3e6068e0}\n       {x44618000 x43888000 x3e6670e6}\n       {x44618000 x43880000 x3e6a70ea}\n       {x44620000 x43880000 x3e6c70ec}\n       {x44620000 x43868000 x3e7270f2}\n       {x44620000 x43860000 x3e6e70ee}\n       {x44624000 x43860000 x3e7678f6}}}\n     {t x4461a666 x4388599a}\n     {a ro 0 go 0 bo 0 ao 0 bs x42000000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000 ltm x41300000 ltn x41000000 ltt x40400000}}}}}}\n toolbox {brush {\n  { selectAll bs 32 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 32 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 32\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"frame to end\"\n lifetime_start 8\n lifetime_end 11\n motionblur_on true\n brush_size 32\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint14\n label \"x8 to the end\"\n xpos 6593\n ypos 803\n}\nRead {\n inputs 0\n file_type jpeg\n file <<<replace>>>/images/waterLensExampleBG.jpg\n format \"1280 720 0 0 1280 720 1 HD_720\"\n origset true\n name Read5\n xpos 7779\n ypos 27\n}\nDot {\n name Dot21\n xpos 7813\n ypos 290\n}\nset N28da0c90 [stack 0]\nDot {\n name Dot22\n xpos 7642\n ypos 290\n}\nset N28da1700 [stack 0]\nDot {\n name Dot23\n xpos 7354\n ypos 290\n}\nset N28da3bc0 [stack 0]\nDot {\n name Dot24\n xpos 7095\n ypos 290\n}\nset N28da6080 [stack 0]\nDot {\n name Dot25\n xpos 6782\n ypos 290\n}\nGroup {\n inputs 2\n name WaterLens14\n tile_color 0xffccff\n note_font Verdana\n xpos 6748\n ypos 800\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {902.5 274}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset Nfec08420 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $Nfec08420\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset Nfec3f360 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset Nfec45ee0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset Nfec4c920 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $Nfec4c920\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $Nfec45ee0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset Nfec82590 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset Nfec84910 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $Nfec84910\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $Nfec82590\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset Nfed1e630 [stack 0]\npush $Nfed1e630\npush $Nfec3f360\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42d20000 x43ae8000 x3c904090}\n       {x42d40000 x43ae8000 x3e2248a2}\n       {x42d80000 x43ae8000 x3e5868d8}\n       {x42dc0000 x43af0000 x3e6a70ea}\n       {x42e20000 x43af8000 x3e7e78fe}\n       {x42e60000 x43b08000 x3e864086}\n       {x42ec0000 x43b18000 x3e8b448b}\n       {x42f40000 x43b30000 x3e8d448d}\n       {x42fc0000 x43b50000 x3e8f448f}\n       {x43030000 x43b70000 x3e914491}\n       {x43070000 x43b88000 x3e914491}\n       {x430c0000 x43ba8000 x3e954895}\n       {x43110000 x43bc8000 x3e944894}\n       {x43150000 x43be8000 x3e954895}\n       {x43190000 x43c08000 x3e954895}\n       {x431c0000 x43c18000 x3e944894}\n       {x431f0000 x43c30000 x3e944894}\n       {x43200000 x43c40000 x3e964896}\n       {x43230000 x43c50000 x3e974897}\n       {x43230000 x43c58000 x3e974897}\n       {x43240000 x43c60000 x3e984898}\n       {x43250000 x43c70000 x3e994899}\n       {x43250000 x43c78000 x3e9b4c9b}\n       {x43270000 x43c80000 x3e9f4c9f}\n       {x43270000 x43c88000 x3e9f4c9f}\n       {x43270000 x43c80000 x3e9b4c9b}\n       {x43270000 x43c78000 x3e9b4c9b}\n       {x43250000 x43c60000 x3e9d4c9d}\n       {x43250000 x43c58000 x3e9d4c9d}\n       {x43240000 x43c40000 x3e9d4c9d}\n       {x43240000 x43c30000 x3e9d4c9d}\n       {x43240000 x43c18000 x3e9d4c9d}\n       {x43240000 x43bf8000 x3e9e4c9e}\n       {x43240000 x43be0000 x3e9d4c9d}\n       {x43240000 x43bc0000 x3e9d4c9d}\n       {x43240000 x43b98000 x3e9e4c9e}\n       {x43240000 x43b78000 x3e9e4c9e}\n       {x43240000 x43b50000 x3e9d4c9d}\n       {x43240000 x43b30000 x3e9d4c9d}\n       {x43250000 x43b08000 x3e9d4c9d}\n       {x43270000 x43ae8000 x3e9d4c9d}\n       {x43280000 x43ac0000 x3e9d4c9d}\n       {x43290000 x43aa0000 x3e9d4c9d}\n       {x432b0000 x43a78000 x3e9f4c9f}\n       {x432c0000 x43a58000 x3ea04ca0}\n       {x432e0000 x43a38000 x3e9f4c9f}\n       {x43300000 x43a18000 x3ea04ca0}\n       {x43320000 x439f8000 x3ea04ca0}\n       {x43340000 x439e0000 x3e9f4c9f}\n       {x43360000 x439c0000 x3ea04ca0}\n       {x43370000 x439a8000 x3e9f4c9f}\n       {x43390000 x43998000 x3e9f4c9f}\n       {x433b0000 x43988000 x3e9f4c9f}\n       {x433d0000 x43978000 x3ea04ca0}\n       {x433e0000 x43968000 x3e9f4c9f}\n       {x433f0000 x43960000 x3e9f4c9f}\n       {x43400000 x43960000 x3ea04ca0}\n       {x43420000 x43958000 x3e9f4c9f}\n       {x43420000 x43950000 x3e9f4c9f}\n       {x43430000 x43950000 x3ea04ca0}\n       {x43440000 x43940000 x3e9f4c9f}\n       {x43460000 x43940000 x3ea04ca0}\n       {x43470000 x43938000 x3e9c4c9c}\n       {x43480000 x43938000 x3e844084}\n       {x43490000 x43938000 x3ddc60dc}}}\n     {t x43232762 x43b001f8}\n     {a ro 0 go 0 bo 0 ao 0 bs x43300000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000 ltm x41300000 ltn x40a00000 ltt x40400000}}}}}}\n toolbox {brush {\n  { selectAll bs 176 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush bs 176 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 176\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"frame to end\"\n lifetime_start 5\n lifetime_end 11\n motionblur_on true\n motionblur_shutter_offset_type centred\n openspline_width 1\n brush_size 176\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint15\n label \"x5 to the end\"\n xpos 6911\n ypos 696\n}\npush $N28da6080\nGroup {\n inputs 2\n name WaterLens15\n tile_color 0xffccff\n note_font Verdana\n xpos 7061\n ypos 693\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {183 331}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n bend -0.49\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.3\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset Nfed41a60 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $Nfed41a60\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset Nfed56980 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset Nfed5d500 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset Nfed63f40 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $Nfed63f40\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $Nfed5d500\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset Nfeda17f0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset Nfeda3cb0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $Nfeda3cb0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $Nfeda17f0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset Nfef3d610 [stack 0]\npush $Nfef3d610\npush $Nfed56980\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup OpenSpline1 1049088 bezier\n     {{cc\n       {f 1056800}\n       {p\n        {}\n        {{a osw 1 osf 0}\tx44028000 x44220000}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {{a osw 1 osf x409c5a65}\tx440d54e8 x43cf82d2}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {{a osw 1 osf x40fbe1c8}\tx44060000 x43300000}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {{a osw 1 osf x421e6637}\tx440f0000 x42b40000}\n        {x40a87080 xc1080ae8}}}\n      {cc\n       {f 1056800}\n       {p\n        {}\n        {}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {}\n        {x40a87080 xc1080ae8}}}}\n     {t x440a4000 x43a74000}\n     {a osbe 0 osee 0 osw 1 osf 0 str 1 tt x41200000 ft x40400000 a\n   {{x41300000 0 0 1 1 1}\n    {x41400000 1 1 1 0 1}}     b\n   {{x41300000 0 0 1 1 1}\n    {x41400000 1 1 1 0 1}}     g\n   {{x41300000 0 0 1 1 1}\n    {x41400000 1 1 1 0 1}}     r\n   {{x41300000 0 0 1 1 1}\n    {x41400000 1 1 1 0 1}}}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {320 240}\n color {{curve x11 0 1}}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_shutter_offset_type centred\n feather_type smooth\n openspline_width 1\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n name RotoPaint16\n label \"x11 to the end\"\n xpos 7181\n ypos 564\n}\npush $N28da3bc0\nGroup {\n inputs 2\n name WaterLens16\n tile_color 0xffccff\n note_font Verdana\n xpos 7320\n ypos 561\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {517 118}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.975\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N28df8100 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N28df8100\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset Nb8110a0 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset Nb817c20 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset Nb81e660 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $Nb81e660\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $Nb817c20\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset Nb85bf10 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset Nb85e3d0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $Nb85e3d0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $Nb85bf10\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.12\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset Nfefe1630 [stack 0]\npush $Nfefe1630\npush $Nb8110a0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44780000 x43b60000 x3d4860c8}\n       {x44780000 x43b50000 x3e874087}\n       {x44780000 x43b40000 x3e944894}\n       {x44780000 x43b30000 x3e9e4c9e}\n       {x44788000 x43b10000 x3ead54ad}\n       {x44790000 x43b00000 x3eb254b2}\n       {x44790000 x43ae0000 x3eb658b6}\n       {x44798000 x43ab0000 x3eb958b9}\n       {x447a0000 x43a90000 x3ebb5cbb}\n       {x447a8000 x43a60000 x3ebe5cbe}\n       {x447b0000 x43a40000 x3ec15cc1}\n       {x447b0000 x43a20000 x3ec15cc1}\n       {x447b8000 x43a00000 x3ec360c3}\n       {x447b8000 x439e0000 x3ebf5cbf}\n       {x447c0000 x439d0000 x3ec25cc2}\n       {x447c0000 x439c0000 x3ec25cc2}\n       {x447c0000 x439b0000 x3ec25cc2}\n       {x447c0000 x439a0000 x3ec25cc2}}}\n     {t x447a1555 x43a7d555}\n     {a ro 0 go 0 bo 0 ao 0 bs x42d80000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000 ltm x41c80000 ltn x40400000 ltt x40400000}}}}}}\n toolbox {brush {\n  { selectAll bs 108 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 108 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 108\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"frame to end\"\n lifetime_start 3\n lifetime_end 25\n motionblur_on true\n brush_size 108\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint17\n label \"x3 to the end\"\n xpos 7465\n ypos 456\n}\npush $N28da1700\nGroup {\n inputs 2\n name WaterLens17\n tile_color 0xffccff\n note_font Verdana\n xpos 7608\n ypos 453\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {1002 334}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.99\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1.5\n addUserKnob {7 bend R -1 1}\n bend -0.07\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset Nfee96b90 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $Nfee96b90\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset Nb910350 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset Nb916ed0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset Nb91d910 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $Nb91d910\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $Nb916ed0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset Nb88f110 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset Nb8915d0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $Nb8915d0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $Nb88f110\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  gain 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset Nba2b200 [stack 0]\npush $Nba2b200\npush $Nb910350\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nMerge2 {\n inputs 2\n name Merge10\n xpos 7608\n ypos 568\n}\nMerge2 {\n inputs 2\n name Merge11\n xpos 7608\n ypos 700\n}\nMerge2 {\n inputs 2\n name Merge12\n xpos 7608\n ypos 807\n}\npush $N28da0c90\nZDefocus2 {\n size 25\n max_size 50\n legacy_resize_mode false\n show_legacy_resize_mode false\n bloom true\n bloom_gain 5\n name ZDefocus4\n xpos 7779\n ypos 505\n}\nReformat {\n black_outside true\n name Reformat4\n xpos 7779\n ypos 593\n}\nMerge2 {\n inputs 2\n bbox B\n name Merge13\n xpos 7779\n ypos 807\n}\nDot {\n name Dot26\n xpos 7813\n ypos 1336\n}\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44780000 x43b60000 x3d4860c8}\n       {x44780000 x43b50000 x3e874087}\n       {x44780000 x43b40000 x3e944894}\n       {x44780000 x43b30000 x3e9e4c9e}\n       {x44788000 x43b10000 x3ead54ad}\n       {x44790000 x43b00000 x3eb254b2}\n       {x44790000 x43ae0000 x3eb658b6}\n       {x44798000 x43ab0000 x3eb958b9}\n       {x447a0000 x43a90000 x3ebb5cbb}\n       {x447a8000 x43a60000 x3ebe5cbe}\n       {x447b0000 x43a40000 x3ec15cc1}\n       {x447b0000 x43a20000 x3ec15cc1}\n       {x447b8000 x43a00000 x3ec360c3}\n       {x447b8000 x439e0000 x3ebf5cbf}\n       {x447c0000 x439d0000 x3ec25cc2}\n       {x447c0000 x439c0000 x3ec25cc2}\n       {x447c0000 x439b0000 x3ec25cc2}\n       {x447c0000 x439a0000 x3ec25cc2}}}\n     {t x447a1555 x43a7d555 0 xc3870000}\n     {a ro 0 go 0 bo 0 ao 0 bs x435a0000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 108 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 108 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 108\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 218\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint9\n xpos 5095\n ypos 827\n}\nRead {\n inputs 0\n file_type jpeg\n file <<<replace>>>/images/waterLensExampleBG.jpg\n format \"1280 720 0 0 1280 720 1 HD_720\"\n origset true\n name Read2\n xpos 5409\n ypos 47\n}\nDot {\n name Dot12\n xpos 5443\n ypos 400\n}\nset N2784c1a0 [stack 0]\nDot {\n name Dot13\n xpos 5272\n ypos 400\n}\nGroup {\n inputs 2\n name WaterLens9\n tile_color 0xffccff\n note_font Verdana\n xpos 5238\n ypos 820\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {{\"curve + (random(0,frame)*3)-1.5\" x1 735} {\"curve + (random(1,frame)*3)-1.5\" x1 338}}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.99\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1.5\n addUserKnob {7 bend R -1 1}\n bend -0.14\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27af5580 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27af5580\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27b0e430 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27b14fb0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27b1b9f0 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27b1b9f0\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27b14fb0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27b58e60 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27b5b320 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27b5b320\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27b58e60\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  gain 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N27bf0450 [stack 0]\npush $N27bf0450\npush $N27b0e430\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\npush $N2784c1a0\nZDefocus2 {\n size 25\n max_size 50\n legacy_resize_mode false\n show_legacy_resize_mode false\n bloom true\n bloom_gain 5\n name ZDefocus2\n xpos 5409\n ypos 574\n}\nReformat {\n black_outside true\n name Reformat1\n xpos 5409\n ypos 662\n}\nMerge2 {\n inputs 2\n bbox B\n name Merge5\n xpos 5409\n ypos 827\n}\nDot {\n name Dot27\n xpos 5443\n ypos 1390\n}\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44614000 x438b0000 x3b800080}\n       {x44614000 x438a8000 x3e4c60cc}\n       {x44614000 x438a0000 x3e5260d2}\n       {x44618000 x43890000 x3e6068e0}\n       {x44618000 x43888000 x3e6670e6}\n       {x44618000 x43880000 x3e6a70ea}\n       {x44620000 x43880000 x3e6c70ec}\n       {x44620000 x43868000 x3e7270f2}\n       {x44620000 x43860000 x3e6e70ee}\n       {x44624000 x43860000 x3e7678f6}}}\n     {t x4461a666 x4388599a}\n     {a ro 0 go 0 bo 0 ao 0 bs x42000000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 32 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 32 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 32\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 32\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint8\n xpos 3045\n ypos 795\n}\nRead {\n inputs 0\n file_type jpeg\n file <<<replace>>>/images/waterLensExampleBG.jpg\n format \"1280 720 0 0 1280 720 1 HD_720\"\n origset true\n name Read1\n xpos 4229\n ypos 15\n}\nDot {\n name Dot8\n xpos 4263\n ypos 278\n}\nset N26de1520 [stack 0]\nDot {\n name Dot7\n xpos 4092\n ypos 278\n}\nset N26de71a0 [stack 0]\nDot {\n name Dot19\n xpos 3804\n ypos 278\n}\nset N26de9660 [stack 0]\nDot {\n name Dot20\n xpos 3545\n ypos 278\n}\nset N26debb20 [stack 0]\nDot {\n name Dot11\n xpos 3232\n ypos 278\n}\nGroup {\n inputs 2\n name WaterLens8\n tile_color 0xffccff\n note_font Verdana\n xpos 3198\n ypos 788\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {902.5 274}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N26e0bb80 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N26e0bb80\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N26e20aa0 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N26e27620 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N26e2e060 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N26e2e060\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N26e27620\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N26e6b910 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N26e6ddd0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N26e6ddd0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N26e6b910\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N26b7c6a0 [stack 0]\npush $N26b7c6a0\npush $N26e20aa0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42d20000 x43ae8000 x3c904090}\n       {x42d40000 x43ae8000 x3e2248a2}\n       {x42d80000 x43ae8000 x3e5868d8}\n       {x42dc0000 x43af0000 x3e6a70ea}\n       {x42e20000 x43af8000 x3e7e78fe}\n       {x42e60000 x43b08000 x3e864086}\n       {x42ec0000 x43b18000 x3e8b448b}\n       {x42f40000 x43b30000 x3e8d448d}\n       {x42fc0000 x43b50000 x3e8f448f}\n       {x43030000 x43b70000 x3e914491}\n       {x43070000 x43b88000 x3e914491}\n       {x430c0000 x43ba8000 x3e954895}\n       {x43110000 x43bc8000 x3e944894}\n       {x43150000 x43be8000 x3e954895}\n       {x43190000 x43c08000 x3e954895}\n       {x431c0000 x43c18000 x3e944894}\n       {x431f0000 x43c30000 x3e944894}\n       {x43200000 x43c40000 x3e964896}\n       {x43230000 x43c50000 x3e974897}\n       {x43230000 x43c58000 x3e974897}\n       {x43240000 x43c60000 x3e984898}\n       {x43250000 x43c70000 x3e994899}\n       {x43250000 x43c78000 x3e9b4c9b}\n       {x43270000 x43c80000 x3e9f4c9f}\n       {x43270000 x43c88000 x3e9f4c9f}\n       {x43270000 x43c80000 x3e9b4c9b}\n       {x43270000 x43c78000 x3e9b4c9b}\n       {x43250000 x43c60000 x3e9d4c9d}\n       {x43250000 x43c58000 x3e9d4c9d}\n       {x43240000 x43c40000 x3e9d4c9d}\n       {x43240000 x43c30000 x3e9d4c9d}\n       {x43240000 x43c18000 x3e9d4c9d}\n       {x43240000 x43bf8000 x3e9e4c9e}\n       {x43240000 x43be0000 x3e9d4c9d}\n       {x43240000 x43bc0000 x3e9d4c9d}\n       {x43240000 x43b98000 x3e9e4c9e}\n       {x43240000 x43b78000 x3e9e4c9e}\n       {x43240000 x43b50000 x3e9d4c9d}\n       {x43240000 x43b30000 x3e9d4c9d}\n       {x43250000 x43b08000 x3e9d4c9d}\n       {x43270000 x43ae8000 x3e9d4c9d}\n       {x43280000 x43ac0000 x3e9d4c9d}\n       {x43290000 x43aa0000 x3e9d4c9d}\n       {x432b0000 x43a78000 x3e9f4c9f}\n       {x432c0000 x43a58000 x3ea04ca0}\n       {x432e0000 x43a38000 x3e9f4c9f}\n       {x43300000 x43a18000 x3ea04ca0}\n       {x43320000 x439f8000 x3ea04ca0}\n       {x43340000 x439e0000 x3e9f4c9f}\n       {x43360000 x439c0000 x3ea04ca0}\n       {x43370000 x439a8000 x3e9f4c9f}\n       {x43390000 x43998000 x3e9f4c9f}\n       {x433b0000 x43988000 x3e9f4c9f}\n       {x433d0000 x43978000 x3ea04ca0}\n       {x433e0000 x43968000 x3e9f4c9f}\n       {x433f0000 x43960000 x3e9f4c9f}\n       {x43400000 x43960000 x3ea04ca0}\n       {x43420000 x43958000 x3e9f4c9f}\n       {x43420000 x43950000 x3e9f4c9f}\n       {x43430000 x43950000 x3ea04ca0}\n       {x43440000 x43940000 x3e9f4c9f}\n       {x43460000 x43940000 x3ea04ca0}\n       {x43470000 x43938000 x3e9c4c9c}\n       {x43480000 x43938000 x3e844084}\n       {x43490000 x43938000 x3ddc60dc}}}\n     {t x43232762 x43b001f8}\n     {a ro 0 go 0 bo 0 ao 0 bs x43300000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 176 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush bs 176 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 176\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n motionblur_shutter_offset_type centred\n openspline_width 1\n brush_size 176\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint4\n xpos 3365\n ypos 688\n}\npush $N26debb20\nGroup {\n inputs 2\n name WaterLens7\n tile_color 0xffccff\n note_font Verdana\n xpos 3511\n ypos 681\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {183 331}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n bend -0.49\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.3\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N26be4440 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N26be4440\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N235135f0 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N23519f10 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N23520950 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N23520950\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N23519f10\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N26f1d500 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N26f1f9c0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N26f1f9c0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N26f1d500\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N26fb42e0 [stack 0]\npush $N26fb42e0\npush $N235135f0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup OpenSpline1 1049088 bezier\n     {{cc\n       {f 1056800}\n       {p\n        {}\n        {{a osw 1 osf 0}     x44028000 x44220000}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {{a osw 1 osf x409c5a65}     x440d54e8 x43cf82d2}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {{a osw 1 osf x40fbe1c8}     x44060000 x43300000}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {{a osw 1 osf x421e6637}     x440f0000 x42b40000}\n        {x40a87080 xc1080ae8}}}\n      {cc\n       {f 1056800}\n       {p\n        {}\n        {}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {}\n        {x40a87080 xc1080ae8}}}}\n     {t x440a4000 x43a74000}\n     {a osbe 0 osee 0 osw 1 osf 0 str 1 tt x41200000 ft x40400000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {320 240}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_shutter_offset_type centred\n feather_type smooth\n openspline_width 1\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n name RotoPaint5\n xpos 3634\n ypos 556\n}\npush $N26de9660\nGroup {\n inputs 2\n name WaterLens6\n tile_color 0xffccff\n note_font Verdana\n xpos 3770\n ypos 549\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {517 118}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.975\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N26ebcc30 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N26ebcc30\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N26ed1b50 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N26ed86d0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N26edf110 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N26edf110\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N26ed86d0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N279209d0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27922e90 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27922e90\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N279209d0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.12\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N279b85f0 [stack 0]\npush $N279b85f0\npush $N26ed1b50\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44780000 x43b60000 x3d4860c8}\n       {x44780000 x43b50000 x3e874087}\n       {x44780000 x43b40000 x3e944894}\n       {x44780000 x43b30000 x3e9e4c9e}\n       {x44788000 x43b10000 x3ead54ad}\n       {x44790000 x43b00000 x3eb254b2}\n       {x44790000 x43ae0000 x3eb658b6}\n       {x44798000 x43ab0000 x3eb958b9}\n       {x447a0000 x43a90000 x3ebb5cbb}\n       {x447a8000 x43a60000 x3ebe5cbe}\n       {x447b0000 x43a40000 x3ec15cc1}\n       {x447b0000 x43a20000 x3ec15cc1}\n       {x447b8000 x43a00000 x3ec360c3}\n       {x447b8000 x439e0000 x3ebf5cbf}\n       {x447c0000 x439d0000 x3ec25cc2}\n       {x447c0000 x439c0000 x3ec25cc2}\n       {x447c0000 x439b0000 x3ec25cc2}\n       {x447c0000 x439a0000 x3ec25cc2}}}\n     {t x447a1555 x43a7d555}\n     {a ro 0 go 0 bo 0 ao 0 bs x42d80000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 108 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 108 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 108\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 108\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint6\n xpos 3923\n ypos 448\n}\npush $N26de71a0\nGroup {\n inputs 2\n name WaterLens5\n tile_color 0xffccff\n note_font Verdana\n xpos 4058\n ypos 441\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {1002 334}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.99\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1.5\n addUserKnob {7 bend R -1 1}\n bend -0.07\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27a0cf10 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27a0cf10\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27a21e30 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27a289b0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27a2f3f0 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27a2f3f0\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27a289b0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N26ca9920 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N26cabde0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N26cabde0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N26ca9920\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  gain 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N27ac6450 [stack 0]\npush $N27ac6450\npush $N27a21e30\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nMerge2 {\n inputs 2\n name Merge1\n xpos 4058\n ypos 556\n}\nMerge2 {\n inputs 2\n name Merge2\n xpos 4058\n ypos 688\n}\nMerge2 {\n inputs 2\n name Merge4\n xpos 4058\n ypos 795\n}\npush $N26de1520\nZDefocus2 {\n size 25\n max_size 50\n legacy_resize_mode false\n show_legacy_resize_mode false\n bloom true\n bloom_gain 5\n name ZDefocus1\n xpos 4229\n ypos 493\n}\nReformat {\n black_outside true\n name Reformat3\n xpos 4229\n ypos 581\n}\nMerge2 {\n inputs 2\n bbox B\n name Merge3\n xpos 4229\n ypos 795\n}\nDot {\n name Dot28\n xpos 4263\n ypos 1357\n}\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44614000 x438b0000 x3b800080}\n       {x44614000 x438a8000 x3e4c60cc}\n       {x44614000 x438a0000 x3e5260d2}\n       {x44618000 x43890000 x3e6068e0}\n       {x44618000 x43888000 x3e6670e6}\n       {x44618000 x43880000 x3e6a70ea}\n       {x44620000 x43880000 x3e6c70ec}\n       {x44620000 x43868000 x3e7270f2}\n       {x44620000 x43860000 x3e6e70ee}\n       {x44624000 x43860000 x3e7678f6}}}\n     {t x4461a666 x4388599a}\n     {a ro 0 go 0 bo 0 ao 0 bs x42000000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 32 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 32 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 32\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 32\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint10\n xpos 1296\n ypos 745\n}\nRead {\n inputs 0\n file_type jpeg\n file <<<replace>>>/images/waterLensExampleBG.jpg\n format \"1280 720 0 0 1280 720 1 HD_720\"\n origset true\n name Read4\n xpos 2480\n ypos -35\n}\nDot {\n name Dot14\n xpos 2514\n ypos 228\n}\nset N232b47c0 [stack 0]\nDot {\n name Dot15\n xpos 2343\n ypos 228\n}\nset N232b55b0 [stack 0]\nDot {\n name Dot16\n xpos 2055\n ypos 228\n}\nset N232b7940 [stack 0]\nDot {\n name Dot17\n xpos 1796\n ypos 228\n}\nset N232b9cd0 [stack 0]\nDot {\n name Dot18\n xpos 1483\n ypos 228\n}\nGroup {\n inputs 2\n name WaterLens10\n tile_color 0xffccff\n note_font Verdana\n xpos 1449\n ypos 738\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {902.5 274}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N2361c2f0 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N2361c2f0\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N23631210 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N1ecf3a20 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N1ecf70d0 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N1ecf70d0\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N1ecf3a20\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N234068e0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N23408b10 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N23408b10\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N234068e0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N268a0390 [stack 0]\npush $N268a0390\npush $N23631210\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42d20000 x43ae8000 x3c904090}\n       {x42d40000 x43ae8000 x3e2248a2}\n       {x42d80000 x43ae8000 x3e5868d8}\n       {x42dc0000 x43af0000 x3e6a70ea}\n       {x42e20000 x43af8000 x3e7e78fe}\n       {x42e60000 x43b08000 x3e864086}\n       {x42ec0000 x43b18000 x3e8b448b}\n       {x42f40000 x43b30000 x3e8d448d}\n       {x42fc0000 x43b50000 x3e8f448f}\n       {x43030000 x43b70000 x3e914491}\n       {x43070000 x43b88000 x3e914491}\n       {x430c0000 x43ba8000 x3e954895}\n       {x43110000 x43bc8000 x3e944894}\n       {x43150000 x43be8000 x3e954895}\n       {x43190000 x43c08000 x3e954895}\n       {x431c0000 x43c18000 x3e944894}\n       {x431f0000 x43c30000 x3e944894}\n       {x43200000 x43c40000 x3e964896}\n       {x43230000 x43c50000 x3e974897}\n       {x43230000 x43c58000 x3e974897}\n       {x43240000 x43c60000 x3e984898}\n       {x43250000 x43c70000 x3e994899}\n       {x43250000 x43c78000 x3e9b4c9b}\n       {x43270000 x43c80000 x3e9f4c9f}\n       {x43270000 x43c88000 x3e9f4c9f}\n       {x43270000 x43c80000 x3e9b4c9b}\n       {x43270000 x43c78000 x3e9b4c9b}\n       {x43250000 x43c60000 x3e9d4c9d}\n       {x43250000 x43c58000 x3e9d4c9d}\n       {x43240000 x43c40000 x3e9d4c9d}\n       {x43240000 x43c30000 x3e9d4c9d}\n       {x43240000 x43c18000 x3e9d4c9d}\n       {x43240000 x43bf8000 x3e9e4c9e}\n       {x43240000 x43be0000 x3e9d4c9d}\n       {x43240000 x43bc0000 x3e9d4c9d}\n       {x43240000 x43b98000 x3e9e4c9e}\n       {x43240000 x43b78000 x3e9e4c9e}\n       {x43240000 x43b50000 x3e9d4c9d}\n       {x43240000 x43b30000 x3e9d4c9d}\n       {x43250000 x43b08000 x3e9d4c9d}\n       {x43270000 x43ae8000 x3e9d4c9d}\n       {x43280000 x43ac0000 x3e9d4c9d}\n       {x43290000 x43aa0000 x3e9d4c9d}\n       {x432b0000 x43a78000 x3e9f4c9f}\n       {x432c0000 x43a58000 x3ea04ca0}\n       {x432e0000 x43a38000 x3e9f4c9f}\n       {x43300000 x43a18000 x3ea04ca0}\n       {x43320000 x439f8000 x3ea04ca0}\n       {x43340000 x439e0000 x3e9f4c9f}\n       {x43360000 x439c0000 x3ea04ca0}\n       {x43370000 x439a8000 x3e9f4c9f}\n       {x43390000 x43998000 x3e9f4c9f}\n       {x433b0000 x43988000 x3e9f4c9f}\n       {x433d0000 x43978000 x3ea04ca0}\n       {x433e0000 x43968000 x3e9f4c9f}\n       {x433f0000 x43960000 x3e9f4c9f}\n       {x43400000 x43960000 x3ea04ca0}\n       {x43420000 x43958000 x3e9f4c9f}\n       {x43420000 x43950000 x3e9f4c9f}\n       {x43430000 x43950000 x3ea04ca0}\n       {x43440000 x43940000 x3e9f4c9f}\n       {x43460000 x43940000 x3ea04ca0}\n       {x43470000 x43938000 x3e9c4c9c}\n       {x43480000 x43938000 x3e844084}\n       {x43490000 x43938000 x3ddc60dc}}}\n     {t x43232762 x43b001f8}\n     {a ro 0 go 0 bo 0 ao 0 bs x43300000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 176 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush bs 176 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 176\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n motionblur_shutter_offset_type centred\n openspline_width 1\n brush_size 176\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint11\n xpos 1616\n ypos 638\n}\npush $N232b9cd0\nGroup {\n inputs 2\n name WaterLens11\n tile_color 0xffccff\n note_font Verdana\n xpos 1762\n ypos 631\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {183 331}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n bend -0.49\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.3\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N236c0a80 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N236c0a80\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N236d59a0 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N236dc520 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N236e2f60 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N236e2f60\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N236dc520\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N2349d220 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N2349f6e0 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N2349f6e0\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N2349d220\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N26a30d50 [stack 0]\npush $N26a30d50\npush $N236d59a0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup OpenSpline1 1049088 bezier\n     {{cc\n       {f 1056800}\n       {p\n        {}\n        {{a osw 1 osf 0}     x44028000 x44220000}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {{a osw 1 osf x409c5a65}     x440d54e8 x43cf82d2}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {{a osw 1 osf x40fbe1c8}     x44060000 x43300000}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {{a osw 1 osf x421e6637}     x440f0000 x42b40000}\n        {x40a87080 xc1080ae8}}}\n      {cc\n       {f 1056800}\n       {p\n        {}\n        {}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {}\n        {x40a87080 xc1080ae8}}}}\n     {t x440a4000 x43a74000}\n     {a osbe 0 osee 0 osw 1 osf 0 str 1 tt x41200000 ft x40400000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {320 240}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_shutter_offset_type centred\n feather_type smooth\n openspline_width 1\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n name RotoPaint12\n xpos 1885\n ypos 506\n}\npush $N232b7940\nGroup {\n inputs 2\n name WaterLens12\n tile_color 0xffccff\n note_font Verdana\n xpos 2021\n ypos 499\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {517 118}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.975\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N2690b680 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N2690b680\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N269205a0 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N26927120 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N2692db60 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N2692db60\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N26927120\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N26aa5060 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N26aa7520 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N26aa7520\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N26aa5060\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.12\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N2696b790 [stack 0]\npush $N2696b790\npush $N269205a0\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nRotoPaint {\n inputs 0\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44780000 x43b60000 x3d4860c8}\n       {x44780000 x43b50000 x3e874087}\n       {x44780000 x43b40000 x3e944894}\n       {x44780000 x43b30000 x3e9e4c9e}\n       {x44788000 x43b10000 x3ead54ad}\n       {x44790000 x43b00000 x3eb254b2}\n       {x44790000 x43ae0000 x3eb658b6}\n       {x44798000 x43ab0000 x3eb958b9}\n       {x447a0000 x43a90000 x3ebb5cbb}\n       {x447a8000 x43a60000 x3ebe5cbe}\n       {x447b0000 x43a40000 x3ec15cc1}\n       {x447b0000 x43a20000 x3ec15cc1}\n       {x447b8000 x43a00000 x3ec360c3}\n       {x447b8000 x439e0000 x3ebf5cbf}\n       {x447c0000 x439d0000 x3ec25cc2}\n       {x447c0000 x439c0000 x3ec25cc2}\n       {x447c0000 x439b0000 x3ec25cc2}\n       {x447c0000 x439a0000 x3ec25cc2}}}\n     {t x447a1555 x43a7d555}\n     {a ro 0 go 0 bo 0 ao 0 bs x42d80000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 108 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 108 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 108\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 108\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint13\n xpos 2174\n ypos 398\n}\npush $N232b55b0\nGroup {\n inputs 2\n name WaterLens13\n tile_color 0xffccff\n note_font Verdana\n xpos 2309\n ypos 391\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {1002 334}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.99\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1.5\n addUserKnob {7 bend R -1 1}\n bend -0.07\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n output element\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N26c3b610 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N26c3b610\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N26988790 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N2698c430 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N26997210 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N26997210\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N2698c430\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N269d4180 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N269d6640 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N269d6640\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N269d4180\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  gain 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N26d57e30 [stack 0]\npush $N26d57e30\npush $N26988790\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nMerge2 {\n inputs 2\n name Merge6\n xpos 2309\n ypos 506\n}\nMerge2 {\n inputs 2\n name Merge7\n xpos 2309\n ypos 638\n}\nMerge2 {\n inputs 2\n name Merge8\n xpos 2309\n ypos 745\n}\nZDefocus2 {\n size 10\n legacy_resize_mode false\n show_legacy_resize_mode false\n bloom true\n bloom_gain 7\n name ZDefocus3\n xpos 2309\n ypos 906\n}\nReformat {\n black_outside true\n name Reformat2\n xpos 2309\n ypos 994\n}\npush $N232b47c0\nMerge2 {\n inputs 2\n bbox B\n name Merge9\n xpos 2480\n ypos 994\n}\nDot {\n name Dot29\n xpos 2514\n ypos 1383\n}\nRead {\n inputs 0\n file_type jpeg\n file <<<replace>>>/images/waterLensExampleBG.jpg\n format \"1280 720 0 0 1280 720 1 HD_720\"\n origset true\n name Read3\n xpos 757\n ypos -9\n}\nDot {\n name Dot2\n xpos 791\n ypos 260\n}\nset N278d4390 [stack 0]\nDot {\n name Dot1\n xpos 615\n ypos 260\n}\nset N278d6850 [stack 0]\nDot {\n name Dot3\n xpos 478\n ypos 260\n}\nset N278d8d10 [stack 0]\nDot {\n name Dot5\n xpos 328\n ypos 260\n}\nset N278db1d0 [stack 0]\nDot {\n name Dot9\n xpos 178\n ypos 260\n}\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44200000 x43b40000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44614000 x438b0000 x3b800080}\n       {x44614000 x438a8000 x3e4c60cc}\n       {x44614000 x438a0000 x3e5260d2}\n       {x44618000 x43890000 x3e6068e0}\n       {x44618000 x43888000 x3e6670e6}\n       {x44618000 x43880000 x3e6a70ea}\n       {x44620000 x43880000 x3e6c70ec}\n       {x44620000 x43868000 x3e7270f2}\n       {x44620000 x43860000 x3e6e70ee}\n       {x44624000 x43860000 x3e7678f6}}}\n     {t x4461a666 x4388599a}\n     {a ro 0 go 0 bo 0 ao 0 bs x42000000 bu 1 str 1 spx x44200000 spy x43b40000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 32 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 32 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 32\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {640 360}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 32\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint7\n xpos 144\n ypos 355\n}\nDot {\n name Dot10\n xpos 178\n ypos 776\n}\npush $N278db1d0\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x42d20000 x43ae8000 x3c904090}\n       {x42d40000 x43ae8000 x3e2248a2}\n       {x42d80000 x43ae8000 x3e5868d8}\n       {x42dc0000 x43af0000 x3e6a70ea}\n       {x42e20000 x43af8000 x3e7e78fe}\n       {x42e60000 x43b08000 x3e864086}\n       {x42ec0000 x43b18000 x3e8b448b}\n       {x42f40000 x43b30000 x3e8d448d}\n       {x42fc0000 x43b50000 x3e8f448f}\n       {x43030000 x43b70000 x3e914491}\n       {x43070000 x43b88000 x3e914491}\n       {x430c0000 x43ba8000 x3e954895}\n       {x43110000 x43bc8000 x3e944894}\n       {x43150000 x43be8000 x3e954895}\n       {x43190000 x43c08000 x3e954895}\n       {x431c0000 x43c18000 x3e944894}\n       {x431f0000 x43c30000 x3e944894}\n       {x43200000 x43c40000 x3e964896}\n       {x43230000 x43c50000 x3e974897}\n       {x43230000 x43c58000 x3e974897}\n       {x43240000 x43c60000 x3e984898}\n       {x43250000 x43c70000 x3e994899}\n       {x43250000 x43c78000 x3e9b4c9b}\n       {x43270000 x43c80000 x3e9f4c9f}\n       {x43270000 x43c88000 x3e9f4c9f}\n       {x43270000 x43c80000 x3e9b4c9b}\n       {x43270000 x43c78000 x3e9b4c9b}\n       {x43250000 x43c60000 x3e9d4c9d}\n       {x43250000 x43c58000 x3e9d4c9d}\n       {x43240000 x43c40000 x3e9d4c9d}\n       {x43240000 x43c30000 x3e9d4c9d}\n       {x43240000 x43c18000 x3e9d4c9d}\n       {x43240000 x43bf8000 x3e9e4c9e}\n       {x43240000 x43be0000 x3e9d4c9d}\n       {x43240000 x43bc0000 x3e9d4c9d}\n       {x43240000 x43b98000 x3e9e4c9e}\n       {x43240000 x43b78000 x3e9e4c9e}\n       {x43240000 x43b50000 x3e9d4c9d}\n       {x43240000 x43b30000 x3e9d4c9d}\n       {x43250000 x43b08000 x3e9d4c9d}\n       {x43270000 x43ae8000 x3e9d4c9d}\n       {x43280000 x43ac0000 x3e9d4c9d}\n       {x43290000 x43aa0000 x3e9d4c9d}\n       {x432b0000 x43a78000 x3e9f4c9f}\n       {x432c0000 x43a58000 x3ea04ca0}\n       {x432e0000 x43a38000 x3e9f4c9f}\n       {x43300000 x43a18000 x3ea04ca0}\n       {x43320000 x439f8000 x3ea04ca0}\n       {x43340000 x439e0000 x3e9f4c9f}\n       {x43360000 x439c0000 x3ea04ca0}\n       {x43370000 x439a8000 x3e9f4c9f}\n       {x43390000 x43998000 x3e9f4c9f}\n       {x433b0000 x43988000 x3e9f4c9f}\n       {x433d0000 x43978000 x3ea04ca0}\n       {x433e0000 x43968000 x3e9f4c9f}\n       {x433f0000 x43960000 x3e9f4c9f}\n       {x43400000 x43960000 x3ea04ca0}\n       {x43420000 x43958000 x3e9f4c9f}\n       {x43420000 x43950000 x3e9f4c9f}\n       {x43430000 x43950000 x3ea04ca0}\n       {x43440000 x43940000 x3e9f4c9f}\n       {x43460000 x43940000 x3ea04ca0}\n       {x43470000 x43938000 x3e9c4c9c}\n       {x43480000 x43938000 x3e844084}\n       {x43490000 x43938000 x3ddc60dc}}}\n     {t x43232762 x43b001f8}\n     {a ro 0 go 0 bo 0 ao 0 bs x43300000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 176 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush bs 176 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 176\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n motionblur_shutter_offset_type centred\n openspline_width 1\n brush_size 176\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint3\n xpos 294\n ypos 357\n}\nDot {\n name Dot6\n xpos 328\n ypos 632\n}\npush $N278d8d10\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup OpenSpline1 1049088 bezier\n     {{cc\n       {f 1056800}\n       {p\n        {}\n        {{a osw 1 osf 0}     x44028000 x44220000}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {{a osw 1 osf x409c5a65}     x440d54e8 x43cf82d2}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {{a osw 1 osf x40fbe1c8}     x44060000 x43300000}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {{a osw 1 osf x421e6637}     x440f0000 x42b40000}\n        {x40a87080 xc1080ae8}}}\n      {cc\n       {f 1056800}\n       {p\n        {}\n        {}\n        {x41400000 xc2180000}\n        {xc0aa7400 x427fe970}\n        {}\n        {x410a7900 xc2cfe580}\n        {xc1200000 x42580000}\n        {}\n        {x41200000 xc2580000}\n        {xc0d00000 x41280000}\n        {}\n        {x40a87080 xc1080ae8}}}}\n     {t x440a4000 x43a74000}\n     {a osbe 0 osee 0 osw 1 osf 0 str 1 tt x41200000 ft x40400000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createOpenSpline str 1 ssx 1 ssy 1 sf 1 tt 10 }\n  { addPoints str 1 ssx 1 ssy 1 sf 1 }\n  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_openspline_width 1\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {320 240}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_shutter_offset_type centred\n feather_type smooth\n openspline_width 1\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n name RotoPaint2\n xpos 444\n ypos 356\n}\nDot {\n name Dot4\n xpos 478\n ypos 493\n}\npush $N278d6850\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097152}\n    {t x44800000 x44428000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {cubiccurve Brush1 512 catmullrom\n     {cc\n      {f 2080}\n      {p\n       {x44780000 x43b60000 x3d4860c8}\n       {x44780000 x43b50000 x3e874087}\n       {x44780000 x43b40000 x3e944894}\n       {x44780000 x43b30000 x3e9e4c9e}\n       {x44788000 x43b10000 x3ead54ad}\n       {x44790000 x43b00000 x3eb254b2}\n       {x44790000 x43ae0000 x3eb658b6}\n       {x44798000 x43ab0000 x3eb958b9}\n       {x447a0000 x43a90000 x3ebb5cbb}\n       {x447a8000 x43a60000 x3ebe5cbe}\n       {x447b0000 x43a40000 x3ec15cc1}\n       {x447b0000 x43a20000 x3ec15cc1}\n       {x447b8000 x43a00000 x3ec360c3}\n       {x447b8000 x439e0000 x3ebf5cbf}\n       {x447c0000 x439d0000 x3ec25cc2}\n       {x447c0000 x439c0000 x3ec25cc2}\n       {x447c0000 x439b0000 x3ec25cc2}\n       {x447c0000 x439a0000 x3ec25cc2}}}\n     {t x447a1555 x43a7d555}\n     {a ro 0 go 0 bo 0 ao 0 bs x42d80000 bu 1 str 1 spx x44800000 spy x44428000 sb 1 tt x41880000}}}}}}\n toolbox {brush {\n  { selectAll bs 108 str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 108 str 1 ssx 1 ssy 1 sf 1 sb 1 ltt 0 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_size 108\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1024 778}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n motionblur_on true\n brush_size 108\n brush_spacing 0.05000000075\n brush_hardness 0.200000003\n source_black_outside true\n name RotoPaint1\n xpos 581\n ypos 356\n}\npush $N278d4390\nGroup {\n inputs 2\n name WaterLens1\n tile_color 0xffccff\n note_font Verdana\n xpos 757\n ypos 349\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {1002 334}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.99\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1.5\n addUserKnob {7 bend R -1 1}\n bend -0.07\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n defocus_value 10\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27d20b10 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27d20b10\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27d35a30 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27d3c5b0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27d42ff0 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27d42ff0\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27d3c5b0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27d808a0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27d82d60 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27d82d60\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27d808a0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  gain 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N27dc3c40 [stack 0]\npush $N27dc3c40\npush $N27d35a30\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nGroup {\n inputs 2\n name WaterLens2\n tile_color 0xffccff\n note_font Verdana\n xpos 757\n ypos 483\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {517 118}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.975\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n defocus_value 10\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27f93e60 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27f93e60\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27fa8d80 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27faf900 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27fb6340 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27fb6340\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27faf900\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27ff3660 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27ff5b20 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27ff5b20\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27ff3660\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.12\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N28879440 [stack 0]\npush $N28879440\npush $N27fa8d80\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nGroup {\n inputs 2\n name WaterLens3\n tile_color 0xffccff\n note_font Verdana\n xpos 757\n ypos 622\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {183 331}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 0.8\n addUserKnob {7 bend R -1 1}\n bend -0.49\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.3\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n defocus_value 10\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N288a8a60 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N288a8a60\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N288bd980 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N288c4500 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27dda450 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27dda450\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N288c4500\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N288e1c60 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N288e4120 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N288e4120\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N288e1c60\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N28a7de30 [stack 0]\npush $N28a7de30\npush $N288bd980\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nGroup {\n inputs 2\n name WaterLens4\n tile_color 0xffccff\n note_font Verdana\n xpos 757\n ypos 766\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n center {902.5 274}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 0.96\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 1\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n defocus_value 10\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 7\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N23581e10 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N23581e10\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N23596e70 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N2359d9f0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N235a4430 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N235a4430\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N2359d9f0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27e5dc70 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27e60130 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27e60130\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27e5dc70\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  contrast 1.1\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N28b221a0 [stack 0]\npush $N28b221a0\npush $N23596e70\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.5 0 -0.5}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\nDot {\n name Dot30\n xpos 791\n ypos 1412\n}\nGroup {\n inputs 0\n name WaterLens\n tile_color 0xffccff\n xpos 143\n ypos -619\n addUserKnob {20 tab_general l General}\n addUserKnob {12 center}\n addUserKnob {26 \"\"}\n addUserKnob {7 zdistortion l \"z distortion\"}\n zdistortion 1\n addUserKnob {7 edgeScale l \"edge scale\" R 0 4}\n edgeScale 1\n addUserKnob {7 bend R -1 1}\n addUserKnob {41 filter l \"distortion filter\" T IDistort1.filter}\n addUserKnob {7 matte_filter l \"matte filter\"}\n matte_filter 0.2\n addUserKnob {26 \"\"}\n addUserKnob {41 abberation T killPanel.abberation}\n addUserKnob {26 \"\"}\n addUserKnob {20 grp_cc l \"color correction\" n 1}\n grp_cc 0\n addUserKnob {41 saturation T ColorCorrect.saturation}\n addUserKnob {41 contrast T ColorCorrect.contrast}\n addUserKnob {41 gamma T ColorCorrect.gamma}\n addUserKnob {41 gain T ColorCorrect.gain}\n addUserKnob {41 offset T ColorCorrect.offset}\n addUserKnob {20 endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {4 output M {composite element}}\n addUserKnob {20 tab_defocus l Defocus}\n addUserKnob {7 defocus_value l \"defocus value\" R 0 100}\n addUserKnob {26 \"\"}\n addUserKnob {41 auto_layer_spacing l \"automatic layer spacing\" T dof_setting2.auto_layer_spacing}\n addUserKnob {3 depth_layers l \"depth layers\" +DISABLED}\n depth_layers 50\n addUserKnob {7 layer_curve +DISABLED R 0 5}\n layer_curve 1\n addUserKnob {26 \"\"}\n addUserKnob {41 filter_type l \"filter type\" T ZDefocus.filter_type}\n addUserKnob {7 filter_shape l \"filter shape\"}\n filter_shape 1\n addUserKnob {7 aspect_ratio l \"aspect ratio\" R 0.5 2}\n aspect_ratio 1\n addUserKnob {3 blades +HIDDEN}\n blades 5\n addUserKnob {7 roundness +HIDDEN R -1 1}\n roundness 0.2\n addUserKnob {7 rotation +HIDDEN R 0 360}\n addUserKnob {7 inner_size l \"inner size\" +HIDDEN}\n inner_size 0.8\n addUserKnob {7 inner_feather l \"inner feather\" +HIDDEN}\n inner_feather 1\n addUserKnob {7 inner_brightness l \"inner brightness\" +HIDDEN}\n inner_brightness 0.8\n addUserKnob {7 catadioptric_size l \"catadioptric size\" +HIDDEN}\n catadioptric_size 0.3\n addUserKnob {6 catadioptric -STARTLINE +HIDDEN}\n addUserKnob {20 grp_image l \"image filter\" n 1}\n grp_image 0\n addUserKnob {41 filter_channel l \"filter channel\" T ZDefocus.filter_channel}\n addUserKnob {41 use_input_channels l \"use input channels\" -STARTLINE T ZDefocus.use_input_channels}\n addUserKnob {41 image_filter l \"image filter\" T ZDefocus.image_filter}\n addUserKnob {41 clamp_image_filter l \"clamp image filter\" -STARTLINE T ZDefocus.clamp_image_filter}\n addUserKnob {20 endGroup_1 l endGroup n -1}\n addUserKnob {26 \"\"}\n addUserKnob {6 gamma_correction l \"gamma correction\" +STARTLINE}\n addUserKnob {41 bloom -STARTLINE T dof_setting.bloom}\n addUserKnob {7 bloom_threshold l \"bloom threshold\"}\n bloom_threshold 0.8\n addUserKnob {7 bloom_gain l \"bloom gain\" R 1 4}\n bloom_gain 2\n addUserKnob {20 t_VERSION l Version}\n addUserKnob {26 l_VERSION l <b>Version</b> T 1.1}\n addUserKnob {26 l_DATE l \"<b>Date Modified</b>\" T 2019-04-17}\n addUserKnob {26 l_CHANGELOG l <b>Changelog</b> T \"1.1\\n- soften abberation\\n\\n1.0\\n- create water droplet\"}\n addUserKnob {26 l_DEV l \"<b>Developed by</b>\" T \"Mark Joey Tang\"}\n}\n BackdropNode {\n  inputs 0\n  name BackdropNode1\n  tile_color 0xff\n  label \"dont touch\"\n  note_font_size 42\n  xpos -424\n  ypos 1127\n  bdwidth 353\n  bdheight 281\n }\n Input {\n  inputs 0\n  name filter\n  xpos -812\n  ypos 1264\n  number 2\n }\n Input {\n  inputs 0\n  name mask\n  xpos -1138\n  ypos -508\n  number 1\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle1\n  xpos -1138\n  ypos -421\n }\n Dot {\n  name Dot2\n  xpos -1104\n  ypos -213\n }\nset N27c12c40 [stack 0]\n Histogram {\n  in {{0.2-(parent.matte_filter/10)} 1 {0.2+(parent.matte_filter/10)}}\n  name Histogram1\n  xpos -1138\n  ypos 46\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha red\n  name Shuffle3\n  xpos -1138\n  ypos 126\n }\n Dot {\n  name Dot7\n  xpos -1104\n  ypos 814\n }\npush $N27c12c40\n Input {\n  inputs 0\n  name img\n  xpos 221\n  ypos -515\n }\n Dot {\n  name Dot1\n  xpos 255\n  ypos -348\n }\nset N27c27b60 [stack 0]\n Remove {\n  operation keep\n  channels rgb\n  name Remove2\n  xpos 38\n  ypos -351\n }\n Dot {\n  name Dot5\n  xpos -326\n  ypos -348\n }\nset N27c2e6e0 [stack 0]\n Remove {\n  name Remove1\n  xpos -552\n  ypos -355\n }\n Dot {\n  name Dot4\n  xpos -647\n  ypos -348\n }\nset N27c35120 [stack 0]\n Dot {\n  name Dot3\n  xpos -866\n  ypos -348\n }\n Merge2 {\n  inputs 2\n  name Merge1\n  xpos -900\n  ypos -216\n }\n FilterErode {\n  size {{1000-(parent.zdistortion*1000)} {1000-(parent.zdistortion*1000)}}\n  filter gaussian\n  name FilterErode1\n  xpos -900\n  ypos -136\n }\n Invert {\n  channels alpha\n  name Invert1\n  xpos -900\n  ypos -25\n }\n Shuffle {\n  red black\n  green black\n  blue alpha\n  alpha black\n  name Shuffle2\n  xpos -900\n  ypos 54\n }\npush $N27c35120\n Expression {\n  expr0 \"(x-\\[value center.x])/width\"\n  expr1 \"(y-\\[value center.y])/height\"\n  name Expression1\n  xpos -681\n  ypos -26\n  addUserKnob {20 User}\n  addUserKnob {12 center}\n  center {{parent.center} {parent.center}}\n }\n Merge2 {\n  inputs 2\n  operation plus\n  name Merge2\n  xpos -681\n  ypos 54\n }\n Grade {\n  channels {rgba.red rgba.green -rgba.blue none}\n  blackpoint {{parent.bend*0.5}}\n  white {{parent.zdistortion/10}}\n  gamma {{parent.edgeScale}}\n  black_clamp false\n  maskChannelInput rgba.blue\n  name Grade1\n  xpos -681\n  ypos 144\n }\n Dot {\n  name Dot6\n  xpos -647\n  ypos 498\n }\npush $N27c2e6e0\n Crop {\n  box {0 0 {input.width} {input.height}}\n  crop false\n  name Crop1\n  xpos -360\n  ypos -274\n }\n Dot {\n  name Dot8\n  xpos -326\n  ypos -77\n }\nset N27c729d0 [stack 0]\n Dot {\n  name Dot10\n  xpos -215\n  ypos -77\n }\nset N27c74e90 [stack 0]\n Dot {\n  name Dot9\n  xpos -106\n  ypos -77\n }\n Shuffle {\n  red black\n  green black\n  alpha black\n  name blue\n  tile_color 0xffff\n  xpos -140\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.b/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform2\n  xpos -140\n  ypos 77\n }\n Blur {\n  channels {-rgba.red -rgba.green rgba.blue none}\n  size {{abs(parent.abberation.b*10)}}\n  name Blur3\n  xpos -140\n  ypos 147\n }\n Dot {\n  name Dot12\n  xpos -106\n  ypos 320\n }\npush $N27c74e90\n Shuffle {\n  red black\n  blue black\n  alpha black\n  name green\n  tile_color 0xff00ff\n  xpos -249\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.g/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform4\n  xpos -249\n  ypos 77\n }\n Blur {\n  channels {-rgba.red rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.g*10)}}\n  name Blur2\n  xpos -249\n  ypos 147\n }\n Dot {\n  name Dot11\n  xpos -215\n  ypos 240\n }\npush $N27c729d0\n Shuffle {\n  green black\n  blue black\n  alpha black\n  name red\n  tile_color 0xff0000ff\n  xpos -360\n  ypos -3\n }\n Transform {\n  scale {{1+(parent.abberation.r/10)}}\n  center {{parent.center} {parent.center}}\n  invert_matrix true\n  black_outside false\n  name Transform1\n  xpos -360\n  ypos 77\n }\n Blur {\n  channels {rgba.red -rgba.green -rgba.blue none}\n  size {{abs(parent.abberation.r*10)}}\n  name Blur1\n  xpos -360\n  ypos 149\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge5\n  xpos -360\n  ypos 237\n }\n Merge2 {\n  inputs 2\n  operation max\n  name Merge6\n  xpos -360\n  ypos 317\n }\n ShuffleCopy {\n  inputs 2\n  red red\n  green green\n  out forward\n  name ShuffleCopy1\n  xpos -360\n  ypos 495\n }\n IDistort {\n  channels rgb\n  uv forward\n  uv_scale -4750\n  name IDistort1\n  xpos -360\n  ypos 575\n }\n Shuffle {\n  alpha white\n  name Shuffle4\n  xpos -360\n  ypos 655\n }\n ColorCorrect {\n  name ColorCorrect\n  xpos -360\n  ypos 735\n }\n Merge2 {\n  inputs 2\n  operation mask\n  name Merge3\n  xpos -360\n  ypos 811\n }\n Shuffle {\n  red black\n  green black\n  blue black\n  alpha black\n  out depth\n  name Shuffle5\n  xpos -360\n  ypos 933\n }\n ZDefocus2 {\n  inputs 2\n  channels rgba\n  focal_point {10000 10000}\n  size {{parent.defocus_value}}\n  max_size {{parent.defocus_value}}\n  autoLayerSpacing {{parent.auto_layer_spacing}}\n  layers {{parent.depth_layers}}\n  layerCurve {{parent.layer_curve}}\n  legacy_resize_mode false\n  show_legacy_resize_mode false\n  shape {{parent.filter_shape}}\n  aspect {{parent.aspect_ratio}}\n  blades {{parent.blades}}\n  roundness {{parent.roundness}}\n  rotation {{parent.rotation}}\n  inner_size {{parent.inner_size}}\n  inner_feather {{parent.inner_feather}}\n  inner_brightness {{parent.inner_brightness}}\n  catadioptric_size {{parent.catadioptric_size}}\n  catadioptric {{parent.catadioptric}}\n  bloom_gamma {{parent.gamma_correction}}\n  bloom {{parent.bloom}}\n  bloom_threshold {{parent.bloom_threshold}}\n  bloom_gain {{parent.bloom_gain}}\n  name ZDefocus\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['filter_shape','aspect_ratio','blades','roundness','rotation','inner_size','inner_feather','inner_brightness','catadioptric_size','catadioptric']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['filter_type'].getValue() == 0 :\\n        if i < 2 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    elif thisGRP\\['filter_type'].getValue() == 1 :\\n        if i != 0 :\\n            thisGRP\\[knob_ls\\[i]].setVisible(True)\\n        else :\\n            thisGRP\\[knob_ls\\[i]].setVisible(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setVisible(False)\\n\"\n  xpos -360\n  ypos 1260\n  disable {{\"parent.defocus_value <= 1 ? 1 : 0\"}}\n }\n Remove {\n  operation keep\n  channels rgba\n  name Remove3\n  xpos -360\n  ypos 1562\n }\n Dot {\n  name Dot13\n  xpos -326\n  ypos 1642\n }\nset N278b2140 [stack 0]\npush $N278b2140\npush $N27c27b60\n Merge2 {\n  inputs 2\n  bbox B\n  name Merge4\n  xpos 221\n  ypos 1639\n }\n Switch {\n  inputs 2\n  which {{output}}\n  name Switch1\n  xpos 221\n  ypos 1865\n }\n Output {\n  name Output1\n  xpos 221\n  ypos 2076\n }\n NoOp {\n  inputs 0\n  name killPanel\n  knobChanged \"\\nthisNODE = nuke.thisNode()\\nfor knob in thisNODE.knobs() :\\n    if knob\\[:11] == 'abberation_' :\\n        thisNODE.removeKnob(thisNODE\\[knob])\\n\"\n  xpos -203\n  ypos 1199\n  addUserKnob {20 User}\n  addUserKnob {18 abberation}\n  abberation {0.2 0 -0.2}\n  addUserKnob {6 abberation_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n  addUserKnob {6 abberation_panelDropped_1_1 l \"panel dropped state\" -STARTLINE +HIDDEN}\n }\n NoOp {\n  inputs 0\n  name dof_setting\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['bloom_threshold','bloom_gain']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['bloom'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n\"\n  xpos -202\n  ypos 1258\n  addUserKnob {20 User}\n  addUserKnob {6 bloom +STARTLINE}\n  bloom true\n }\n NoOp {\n  inputs 0\n  name dof_setting2\n  knobChanged \"\\nthisGRP = nuke.thisGroup()\\nknob_ls = \\['depth_layers','layer_curve']\\nfor i in range( len(knob_ls) ) :\\n    if thisGRP\\['auto_layer_spacing'].getValue() == 0 :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(True)\\n    else :\\n        thisGRP\\[knob_ls\\[i]].setEnabled(False)\\n\"\n  xpos -203\n  ypos 1322\n  addUserKnob {20 User}\n  addUserKnob {6 auto_layer_spacing l \"automatic layer spacing\" +STARTLINE}\n  auto_layer_spacing true\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/NST_X_Aton_Examples.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n label WORDART\n note_font_size 72\n note_font_color 0xffffffff\n xpos 1371\n ypos -847\n bdwidth 828\n bdheight 20\n}\nBackdropNode {\n inputs 0\n name BackdropNode2\n label BACKLIT\n note_font_size 72\n note_font_color 0xffffffff\n xpos -93\n ypos -853\n bdwidth 828\n bdheight 20\n}\nBackdropNode {\n inputs 0\n name BackdropNode3\n label HOLOGRAM\n note_font_size 72\n note_font_color 0xffffffff\n xpos 2646\n ypos -870\n bdwidth 828\n bdheight 20\n}\nAxis2 {\n inputs 0\n rotate {{curve x1 -7.904351676 x100 -7.785} {curve x1 -38.0573257 x100 23.01} {curve x1 6.145020451 x100 -25.775}}\n name Axis1\n xpos 408\n ypos -462\n}\nCamera2 {\n translate {0 {curve x1 0 x100 0.175} {curve x1 1.5 x100 1.25}}\n focal 23.8\n name Camera1\n xpos 408\n ypos -396\n}\nset N656ab000 [stack 0]\nLight2 {\n inputs 0\n light_type spot\n color_panelDropped true\n cone_angle 120\n cone_penumbra_angle 180\n cone_falloff 15\n falloff_type Quadratic\n translate {0.04599991813 0.1635388732 -0.8183040619}\n rotate {-13.71810454 -179.9999913 -179.9999913}\n cast_shadows true\n shadow_mode \"clipped alpha\"\n filter Impulse\n scene_epsilon 0.114\n depthmap_slope_bias 0.218\n clipping_threshold 0.84\n shadow_jitter_scale 0\n depthmap_width 512\n name Light1\n xpos 262\n ypos -428\n}\nset N656aac00 [stack 0]\npush $N656ab000\npush $N656aac00\nBasicMaterial {\n inputs 0\n name BasicMaterial1\n xpos -23\n ypos -546\n}\nCard2 {\n orientation ZX\n image_aspect false\n uniform_scale 2\n control_points {3 3 3 6\n\n1 {-0.5 0 -0.5} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0.1666666865} 0 {0 0 0} 0 {0 0 0}\n1 {0 0 -0.5} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0.1666666865} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 0 -0.5} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0.1666666865} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0.1666666716} 0 {0 0 -0.1666666716} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0.1666666716} 0 {0 0 -0.1666666716} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0.1666666716} 0 {0 0 -0.1666666716} 0 {1 0.5 0}\n1 {-0.5 0 0.5} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 0 -0.1666666865} 0 {0 1 0}\n1 {0 0 0.5} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 0 -0.1666666865} 0 {0.5 1 0}\n1 {0.5 0 0.5} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 0 -0.1666666865} 0 {1 1 0} }\n name Card2\n xpos -23\n ypos -520\n}\nText2 {\n inputs 0\n font_size_toolbar 500\n font_width_toolbar 100\n font_height_toolbar 100\n kerning_toolbar 0.5\n output {-rgba.red -rgba.green -rgba.blue rgba.alpha}\n message BACKLIT\n old_message {{66 65 67 75 76 73 84}\n   }\n box {68.5 279.5 1859.5 780.5}\n transforms {{0 2}\n   }\n font_size_values {{0 500 1 500 2 500 3 500 4 500 5 500 6 500 0 96 1 96 2 96 3 96 4 96 5 96 6 96}\n   }\n font_width_values {{0 100 1 100 2 100 3 100 4 100 5 100 6 100 0 101 1 101 2 101 3 101 4 101 5 101 6 101}\n   }\n kern_values {{0 0.5 1 0.5 2 0.5 3 0.5 4 0.5 5 0.5 6 0.5 0 0.006 1 0.006 2 0.006 3 0.006 4 0.006 5 0.006 6 0.006}\n   }\n font {{ Impact : Regular : impact.ttf : 0 }}\n font_size 500\n kerning 0.5\n scale {1 1}\n center {960 540}\n cursor_initialised true\n initial_cursor_position {{68.5 780.5}\n   }\n group_animations {{0} imported: 0 selected: 0 items: \"root transform/\"}\n animation_layers {{1 11 960 540 0 0 1 1 0 0 0 0}\n   }\n name Text1\n xpos 270\n ypos -681\n}\nCard2 {\n translate {0 0.08900000155 0}\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card1\n xpos 270\n ypos -594\n}\nset N6571b800 [stack 0]\nScene {\n inputs 3\n name Scene1\n xpos 117\n ypos -482\n}\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n ztest_enabled false\n filter Impulse\n max_tessellation 1\n motion_vectors_type off\n MB_channel none\n name ScanlineRender1\n xpos 107\n ypos -298\n}\nZDefocus2 {\n channels rgb\n center {{curve x1 0.7172219157 x50 0.7677050233 x100 0.8260945082}}\n focal_point {962 402}\n blur_dof false\n size 40\n max_size 50\n autoLayerSpacing false\n layers 5\n layerCurve 2\n legacy_resize_mode false\n show_legacy_resize_mode false\n name ZDefocus1\n xpos 107\n ypos -194\n}\nGrade {\n white {1.44 1.1 1 1}\n white_panelDropped true\n multiply 0.5\n gamma {0.6 0.6 0.74 0.6}\n gamma_panelDropped true\n name Grade1\n xpos 107\n ypos -158\n}\nset N6571a400 [stack 0]\npush $N656ab000\nNoise {\n inputs 0\n zoffset {{frame/300}}\n octaves 6\n gain 0.425\n gamma 0.635\n center {960 540}\n name Noise1\n xpos 581\n ypos -723\n}\nIDistort {\n channels {rgba.red -rgba.green -rgba.blue none}\n uv rgb\n uv_offset 0.5\n uv_scale -100\n filter Impulse\n name IDistort1\n xpos 581\n ypos -695\n disable true\n}\nIDistort {\n channels {-rgba.red -rgba.green rgba.blue none}\n uv rgb\n uv_offset 0.5\n uv_scale 100\n filter Impulse\n name IDistort2\n xpos 581\n ypos -658\n disable true\n}\nSaturation {\n name Saturation1\n xpos 581\n ypos -632\n disable true\n}\nRadial {\n invert true\n area {12 -2 1944 1094}\n color 0\n name Radial1\n xpos 581\n ypos -594\n}\nCard2 {\n translate {{parent.Light1.translate} {parent.Light1.translate} {parent.Light1.translate}}\n uniform_scale 2\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card3\n xpos 581\n ypos -529\n}\npush $N6571b800\nScene {\n inputs 2\n name Scene2\n xpos 591\n ypos -483\n}\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n ztest_enabled false\n filter Impulse\n max_tessellation 1\n motion_vectors_type off\n MB_channel none\n name ScanlineRender2\n xpos 581\n ypos -274\n}\nMerge2 {\n inputs 2\n operation screen\n name Merge1\n xpos 581\n ypos -158\n}\nNST_X_Aton_Volumetrics {\n inputs 3\n name X_Aton1\n xpos 581\n ypos -39\n use_3d true\n mode Diffuse\n gamma 1.5\n iterations 40\n}\npush $N6571a400\nMerge2 {\n inputs 2\n operation screen\n name Merge2\n xpos 107\n ypos 29\n}\nGrade {\n white 3.95\n multiply {1.38 0.52 0.16 1}\n multiply_panelDropped true\n add {0.025 0.01 0.035 0}\n add_panelDropped true\n gamma {0.96 0.79 0.82 1}\n gamma_panelDropped true\n name Grade3\n xpos 107\n ypos 158\n}\nReformat {\n type \"to box\"\n box_width 1920\n box_height 811\n box_fixed true\n name Reformat1\n xpos 107\n ypos 224\n}\nGrain2 {\n name Grain2_1\n label \"Kodak 5218\"\n xpos 107\n ypos 248\n red_size 0.1\n green_size 1.6\n blue_size 1.91\n green_i 0.86\n blue_i 0.73\n red_m 0.38\n green_m 0.17\n blue_m 0.87\n black {0 0 0}\n minimum {0 0 0}\n}\nGroup {\n name CC1\n xpos 107\n ypos 309\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 510\n  ypos 91\n }\n ColorCorrect {\n  highlights.gain 5\n  lookup {shadow {}\n    midtone {}\n    highlight {curve x-0.008459195495 0 s0 x0.3823549747 0.1056844592 x2.526475906 1 s0}}\n  name ColorCorrect1\n  xpos 510\n  ypos 131\n }\n Expression {\n  expr0 r/(r+1)\n  expr1 g/(g+1)\n  expr2 b/(b+1)\n  name Expression1\n  xpos 510\n  ypos 157\n }\n Grade {\n  multiply 1.62\n  gamma 0.76\n  mix_luminance 1\n  name Grade2\n  xpos 510\n  ypos 183\n }\n Output {\n  name Output1\n  xpos 510\n  ypos 283\n }\nend_group\nCamera2 {\n inputs 0\n translate {0 0 2.266000032}\n name Camera2\n xpos 1534\n ypos -384\n}\nset N6548b000 [stack 0]\nLight2 {\n inputs 0\n translate {{curve x1 0.1260000169 x31 0.2119999826 x60 0.0120000001 x100 0.5440000892} {curve x1 -0.3319999874 x31 0.2619999945 x60 -0.3099999726 x100 -0.3240000308} {curve x1 -1 x31 -1 x60 -0.9999999404 x100 -1}}\n rotate {{curve x1 -22.44072312 x31 23.1059494 x60 -18.7450068 x100 -18.09145503} {curve x1 -9.586705816 x31 -16.4712983 x60 0.1313750468 x100 -40.04410137} {curve x1 1.04731346 x31 -15.92444262 x60 -20.64958627 x100 26.71281691}}\n depthmap_slope_bias 0.01\n name Light2\n xpos 1887\n ypos -447\n}\nset N6548ac00 [stack 0]\npush $N6548b000\npush $N6548ac00\nRamp {\n inputs 0\n invert true\n p0 {1816 196}\n name Ramp1\n xpos 1591\n ypos -629\n}\nShuffle {\n green white\n blue white\n name Shuffle1\n xpos 1591\n ypos -603\n}\nColorspace {\n colorspace_in HSV\n name Colorspace1\n xpos 1591\n ypos -577\n}\nText2 {\n inputs 0\n font_size_toolbar 500\n font_width_toolbar 100\n font_height_toolbar 100\n message WordArt\n old_message {{87 111 114 100 65 114 116}\n   }\n box {109.5 281.5 1806.5 782.5}\n transforms {{0 2}\n   }\n font_size_values {{0 500 1 500 2 500 3 500 4 500 5 500 6 500 0 500 1 500 2 500 3 500 4 500 5 500 6 500}\n   }\n font {{ Impact : Regular : impact.ttf : 0 }}\n font_size 500\n scale {1 1}\n center {960 540}\n cursor_initialised true\n initial_cursor_position {{109.5 782.5}\n   }\n group_animations {{0} imported: 0 selected: 0 items: \"root transform/\"}\n animation_layers {{1 11 960 540 0 0 1 1 0 0 0 0}\n   }\n name Text2\n xpos 1715\n ypos -657\n}\nTransform {\n skewY -0.1\n center {960 540}\n name Transform1\n xpos 1715\n ypos -631\n}\nExpression {\n channel0 rgba\n expr0 a>.1\n name Expression1\n xpos 1715\n ypos -592\n}\nMerge2 {\n inputs 2\n operation multiply\n bbox B\n Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge3\n xpos 1715\n ypos -566\n}\nCard2 {\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card4\n xpos 1715\n ypos -453\n}\nTransformGeo {\n inputs 2\n translate {0 0 1}\n name TransformGeo1\n xpos 1715\n ypos -427\n}\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n ztest_enabled false\n filter Impulse\n motion_vectors_type off\n MB_channel none\n name ScanlineRender3\n xpos 1715\n ypos -364\n}\nCrop {\n box {0 0 1920 1080}\n name Crop1\n xpos 1715\n ypos -328\n}\nNST_X_Aton_Volumetrics {\n inputs 3\n name X_Aton2\n xpos 1715\n ypos -276\n use_3d true\n length -0.35\n mode Brightest\n decay 5\n gamma 0.86\n iterations 100\n}\nUnpremult {\n name Unpremult1\n xpos 1715\n ypos -205\n}\nExpression {\n expr3 a>0\n name Expression2\n xpos 1715\n ypos -179\n}\nConstant {\n inputs 0\n channels rgb\n color 1\n name Constant1\n xpos 1954\n ypos -218\n}\nGrid {\n opacity 0.1\n number {32.14 17.6}\n size 5\n translate {234 158}\n color 0\n name Grid1\n xpos 1954\n ypos -146\n}\nGrid {\n opacity 0.1\n number {6.428 3.52}\n size 7\n translate {234 158}\n color 0\n name Grid2\n xpos 1954\n ypos -120\n}\nMerge2 {\n inputs 2\n name Merge4\n xpos 1715\n ypos -86\n}\nRadial {\n inputs 0\n area {-1061 -738 3021 1902}\n name Radial3\n xpos 3155\n ypos 622\n}\nGroup {\n inputs 0\n name Lens_Dust\n xpos 3246\n ypos 414\n}\n Noise {\n  inputs 0\n  size 135\n  gain 1\n  center {960 540}\n  name Noise7\n  xpos -581\n  ypos 136\n }\n Grade {\n  blackpoint 0.98\n  white 0.02\n  gamma 0.77\n  name Grade11\n  xpos -581\n  ypos 162\n }\n Defocus {\n  defocus 20\n  name Defocus1\n  xpos -581\n  ypos 188\n }\n Sharpen {\n  size 15.5\n  name Sharpen1\n  xpos -581\n  ypos 226\n }\n TransformMasked {\n  channels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n  translate {0 -5}\n  scale 1.02\n  center {960 540}\n  filter Sinc4\n  name Transform4\n  xpos -581\n  ypos 264\n }\n Output {\n  name Output1\n  xpos -581\n  ypos 364\n }\nend_group\nCamera2 {\n inputs 0\n translate {{curve x1 -0.18 x50 0.02 x100 0.12} {curve x1 -0.04 x50 0.02 x100 -0.02} 3}\n rotate {{curve x1 -5.999998093 x50 5.515254021 x101 -2.181924343} {curve x1 17.20000648 x50 -4.985045433 x101 -17.09903526} {curve x1 2.146191065e-007 x50 2.144360991e-007 x101 1.601986526e-007}}\n pivot {0 0 -3.5}\n focal 70\n name Camera4\n xpos 2867\n ypos 65\n}\nset N36b9800 [stack 0]\nDot {\n name Dot2\n xpos 3120\n ypos 232\n}\nset N36b9400 [stack 0]\nLight2 {\n inputs 0\n translate {0.4850000143 0.3149999976 -3.549999952}\n depthmap_slope_bias 0.01\n name Light4\n xpos 3288\n ypos -20\n}\nDot {\n name Dot3\n xpos 3212\n ypos 227\n}\nset N36b8c00 [stack 0]\npush $N36b9800\nGrid {\n inputs 0\n opacity {{abs(sin(frame*180))}}\n number {1 100}\n translate {0 {frame}}\n name Grid4\n xpos 3143\n ypos -253\n}\nText2 {\n inputs 0\n font_size_toolbar 500\n font_width_toolbar 100\n font_height_toolbar 100\n output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n message POWER\n old_message {{80 79 87 69 82}\n   }\n box {257.5 251.5 1666.5 752.5}\n transforms {{0 2}\n   }\n font_size_values {{0 500 1 500 2 500 3 500 4 500 0 500 1 500 2 500 3 500 4 500}\n   }\n cursor_position 2\n font {{ Impact : Regular : impact.ttf : 0 }}\n font_size 500\n scale {1 1}\n cursor_initialised true\n initial_cursor_position {{257.5 752.5}\n   }\n group_animations {{0} imported: 0 selected: items: \"root transform/\"}\n animation_layers {{1 11 960 540 0 0 1 1 0 0 0 0}\n   }\n name Text4\n xpos 3025\n ypos -717\n}\nCrop {\n box {0 0 1920 1080}\n name Crop2\n xpos 3025\n ypos -600\n}\nset N36b9c00 [stack 0]\nEdgeDetectWrapper {\n channels {rgba.red -rgba.green -rgba.blue none}\n name EdgeDetect2\n xpos 2860\n ypos -606\n}\nShuffle {\n red alpha\n green alpha\n blue alpha\n name Shuffle2\n xpos 2860\n ypos -568\n}\nMultiply {\n value {{abs(sin(frame*11))*.2}}\n name Multiply1\n xpos 2860\n ypos -542\n}\nDot {\n name Dot4\n xpos 2894\n ypos -249\n}\npush $N36b9c00\nNoise {\n output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n replace true\n maskChannelInput rgba.red\n type turbulence\n size 1200\n zoffset {{frame/8}}\n octaves 8\n lacunarity 2.3\n gain 0.51\n gamma 0.165\n translate {{curve x1 9176.75 x38 9469.2 x39 9350.85 x48 9417.9 x51 9470 x57 9286.25 x59 8987.4 x91 8987.4 x92 9687.4 x97 8860.77963 x98 8987.4} {curve x1 -497.25 x38 -436.1 x48 -188.75 x51 -210 x91 -210 x97 0}}\n rotate 61\n center {960 540}\n name Noise3\n xpos 3025\n ypos -574\n}\nEdgeDetectWrapper {\n channels {rgba.red -rgba.green -rgba.blue none}\n name EdgeDetect1\n xpos 3025\n ypos -536\n}\nFilterErode {\n size -10\n filter triangle\n mix 0.5\n name FilterErode1\n xpos 3025\n ypos -498\n}\nLaplacian {\n channels alpha\n size 164\n quality 5\n name Laplacian1\n xpos 3025\n ypos -465\n}\nGrade {\n channels alpha\n white 2\n gamma 0.2\n name Grade5\n xpos 3025\n ypos -427\n}\nTimeEcho {\n mode Plus\n framesbehind 10\n frmaesfade 10\n name TimeEcho1\n xpos 3025\n ypos -383\n}\nNoise {\n output {-rgba.red -rgba.green rgba.blue -rgba.alpha}\n zoffset {{frame}}\n octaves 4\n center {960 540}\n name Noise4\n xpos 3025\n ypos -357\n}\nNoise {\n output {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n type turbulence\n size 200\n zoffset {{frame}}\n octaves 6\n gain 0.625\n center {960 540}\n name Noise5\n xpos 3025\n ypos -331\n}\nNoise {\n output {rgba.red -rgba.green -rgba.blue -rgba.alpha}\n type turbulence\n size 9.8\n zoffset {{frame}}\n octaves 2\n gain 0.625\n center {960 540}\n name Noise6\n xpos 3025\n ypos -305\n}\nPremult {\n name Premult1\n xpos 3025\n ypos -279\n}\nMerge2 {\n inputs 2+1\n mix 0.1\n name Merge8\n xpos 3025\n ypos -253\n}\nGrid {\n opacity {{abs(sin(frame*180))}}\n maskChannelInput rgba.alpha\n number {1 200}\n size 0.7\n translate {0 {frame}}\n name Grid3\n xpos 3025\n ypos -219\n}\nSaturation {\n saturation 0.5\n mode Average\n name Saturation3\n xpos 3025\n ypos -181\n}\nGrade {\n multiply {0.66 1.02 3.2 1}\n multiply_panelDropped true\n gamma {0.89 1.1 1.42 1}\n gamma_panelDropped true\n name Grade6\n xpos 3025\n ypos -155\n}\nTransformMasked {\n channels {-rgba.red rgba.green -rgba.blue none}\n translate {1 {sin(frame*111)*.5}}\n center {960 540}\n filter Sinc4\n name Transform2\n xpos 3025\n ypos -129\n}\nDot {\n name Dot5\n xpos 3059\n ypos -44\n}\nset Nf90e1400 [stack 0]\nTimeOffset {\n time_offset 1\n time \"\"\n name TimeOffset1\n xpos 3134\n ypos -48\n}\nMultiply {\n value 0.25\n name Multiply2\n xpos 3134\n ypos -22\n}\nCard2 {\n cast_shadow false\n receive_shadow false\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card9\n xpos 3134\n ypos 19\n}\nTransformGeo {\n uniform_scale 0.98\n pivot {0.4850000143 0.3149999976 -3.549999952}\n name TransformGeo2\n xpos 3134\n ypos 72\n}\npush $Nf90e1400\nCard2 {\n cast_shadow false\n receive_shadow false\n control_points {3 3 3 6\n\n1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}\n1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}\n1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}\n1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}\n1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}\n1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}\n1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}\n1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}\n1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }\n name Card8\n xpos 3025\n ypos 23\n}\nMergeGeo {\n inputs 2\n name MergeGeo1\n xpos 3025\n ypos 72\n}\npush 0\nScanlineRender {\n inputs 3\n conservative_shader_sampling false\n motion_vectors_type off\n MB_channel none\n name ScanlineRender6\n xpos 3025\n ypos 148\n}\nCrop {\n box {0 0 1920 1080}\n name Crop3\n xpos 3025\n ypos 174\n}\nDot {\n name Dot1\n xpos 3059\n ypos 249\n}\nset N51f83400 [stack 0]\nNST_X_Aton_Volumetrics {\n inputs 3\n name X_Aton4\n xpos 3025\n ypos 278\n center {1758 880}\n use_3d true\n length 4\n diffuse 0\n multiply 10\n iterations 250\n maxGPUMemory 70\n}\npush $N36b9400\npush $N36b8c00\npush $N51f83400\nNST_X_Aton_Volumetrics {\n inputs 3\n name X_Aton5\n xpos 3154\n ypos 269\n center {{parent.X_Aton4.center} {parent.X_Aton4.center}}\n use_3d true\n length -1\n diffuse 0\n multiply 10\n iterations 150\n}\nMerge2 {\n inputs 2\n name Merge7\n xpos 3025\n ypos 314\n}\nGrade {\n gamma 0.75\n name Grade7\n xpos 3025\n ypos 340\n}\nGroup {\n name Glow\n xpos 3025\n ypos 456\n}\n Input {\n  inputs 0\n  name Input1\n  xpos -581\n  ypos 17\n }\n Blur {\n  size {100 5}\n  mix 0.1\n  name Blur1\n  xpos -581\n  ypos 57\n }\n Blur {\n  size {300 5}\n  mix 0.1\n  name Blur2\n  xpos -581\n  ypos 95\n }\n Blur {\n  size {5 100}\n  mix 0.1\n  name Blur4\n  xpos -581\n  ypos 133\n }\n Blur {\n  size {500 500}\n  mix 0.06\n  name Blur3\n  xpos -581\n  ypos 172\n }\n Blur {\n  size {200 200}\n  mix 0.1\n  name Blur5\n  xpos -581\n  ypos 210\n }\n Blur {\n  size {50 50}\n  mix 0.1\n  name Blur6\n  xpos -581\n  ypos 248\n }\n Output {\n  name Output1\n  xpos -581\n  ypos 348\n }\nend_group\nset N630b1a80 [stack 0]\nBlur {\n size 500\n name Blur7\n xpos 3135\n ypos 450\n}\nMerge2 {\n inputs 2\n operation multiply\n name Merge9\n xpos 3246\n ypos 521\n}\npush $N630b1a80\nMerge2 {\n inputs 2\n operation plus\n Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}\n output {rgba.red rgba.green rgba.blue -rgba.alpha}\n name Merge10\n xpos 3025\n ypos 521\n}\nGrade {\n black {0 0 0 0}\n black_panelDropped true\n multiply {1.2 1 1 1}\n multiply_panelDropped true\n gamma {0.9 1 1 1}\n gamma_panelDropped true\n name Grade8\n xpos 3025\n ypos 564\n}\nGrade {\n black {0.01 0.002 0.05 0}\n black_panelDropped true\n name Grade10\n xpos 3025\n ypos 590\n}\nGrade {\n inputs 1+1\n multiply 0.26\n gamma 0.83\n invert_mask true\n name Grade9\n xpos 3025\n ypos 616\n}\nTransformMasked {\n channels {-rgba.red rgba.green -rgba.blue -rgba.alpha}\n translate {0 -1}\n scale 1.005\n center {960 540}\n filter Lanczos4\n name Transform3\n xpos 3025\n ypos 642\n}\nGrain2 {\n name Grain2_3\n label \"Kodak 5218\"\n xpos 3025\n ypos 694\n red_size 0.1\n green_size 1.6\n blue_size 1.91\n green_i 0.86\n blue_i 0.73\n red_m 2\n green_m 0.39\n blue_m 1\n black {0 0 0}\n minimum {0 0 0}\n maskgrain false\n}\nGroup {\n name CC3\n xpos 3025\n ypos 732\n}\n Input {\n  inputs 0\n  name Input1\n  xpos 510\n  ypos 91\n }\n ColorCorrect {\n  highlights.gain 5\n  lookup {shadow {}\n    midtone {}\n    highlight {curve x-0.008459195495 0 s0 x0.3823549747 0.1056844592 x2.526475906 1 s0}}\n  name ColorCorrect1\n  xpos 510\n  ypos 131\n }\n Expression {\n  expr0 r/(r+1)\n  expr1 g/(g+1)\n  expr2 b/(b+1)\n  name Expression1\n  xpos 510\n  ypos 157\n }\n Grade {\n  multiply 1.62\n  gamma 0.76\n  mix_luminance 1\n  name Grade2\n  xpos 510\n  ypos 183\n }\n Output {\n  name Output1\n  xpos 510\n  ypos 283\n }\nend_group\nReformat {\n type \"to box\"\n box_width 1920\n box_height 811\n box_fixed true\n name Reformat3\n xpos 3025\n ypos 758\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Noise.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 value\n temp_expr0 5\n expr0 noise(value)\n expr1 noise(value)\n expr2 noise(value)\n expr3 noise(r,g,b)\n name Noise_expression\n selected true\n xpos 97\n ypos -53\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Random_colors.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 random(r)\n expr1 random(g)\n expr2 random(b)\n expr3 random(a)\n name Random_every_pixel\n selected true\n xpos 166\n ypos 78\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Random_every_frame.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 random(frame)*random\n expr1 random(frame)*random\n expr2 random(frame)*random\n expr3 random(frame)*random\n name Random_every_frame\n selected true\n xpos 166\n ypos 78\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Random_every_pixel.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 random\n expr1 random\n expr2 random\n expr3 random\n name Random_every_pixel\n selected true\n xpos 216\n ypos -63\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/STMap_invert.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 ((x+0.5)/width)-r+((x+0.5)/width)\n expr1 ((y+0.5)/height)-g+((y+0.5)/height)\n name ST_invert\n selected true\n xpos 1179\n ypos 52\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Trunc.nk",
    "content": "ColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n selected true\n xpos 107\n ypos -172\n}\nExpression {\n expr0 trunc(r*scale)/scale\n expr1 trunc(g*scale)/scale\n expr2 trunc(b*scale)/scale\n name Trunc\n selected true\n xpos 107\n ypos -55\n addUserKnob {20 User}\n addUserKnob {7 scale R 0 5}\n scale 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/UV_to_Vector.nk",
    "content": "Expression {\n expr0 (r-(x+0.5)/width)*width\n expr1 (g-(y+0.5)/height)*height\n expr2 0\n name UV_to_Vector\n selected true\n xpos 80\n ypos 4\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/Vector_to_UV.nk",
    "content": "Expression {\n expr0 (r+x+0.5)/width\n expr1 (g+y+0.5)/height\n expr2 0\n name Vector_to_UV\n selected true\n xpos 204\n ypos 33\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/abs.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nBackdropNode {\n inputs 0\n name BackdropNode3\n tile_color 0x7171c600\n label ABS\n note_font_size 42\n selected true\n xpos 1234\n ypos -326\n bdwidth 274\n bdheight 394\n}\nStickyNote {\n inputs 0\n name StickyNote1\n label \"Return the Absolute value (always positive values)\"\n selected true\n xpos 1255\n ypos 24\n}\nConstant {\n inputs 0\n color 1\n name Constant2\n selected true\n xpos 1327\n ypos -217\n}\nMultiply {\n channels rgba\n value -1\n name Multiply1\n label -1\n selected true\n xpos 1327\n ypos -104\n}\nExpression {\n expr0 abs(r)\n expr1 abs(g)\n expr2 abs(b)\n expr3 abs(a)\n name ABS\n selected true\n xpos 1327\n ypos -27\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/alpha_binary.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr3 \"(r || b || g) > 0 ? 1 : 0\"\n name ifColorThenAlpha\n selected true\n xpos 2846\n ypos 504\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/alpha_comparison.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nBackdropNode {\n inputs 0\n name BackdropNode4\n tile_color 0xc69871ff\n label \"a < 0.1\"\n note_font_size 42\n selected true\n xpos 1595\n ypos -323\n bdwidth 274\n bdheight 394\n}\npush $cut_paste_input\nNoise {\n center {1181 558}\n name Noise1\n selected true\n xpos 1703\n ypos -165\n}\nExpression {\n temp_name0 number\n temp_expr0 0.1\n expr0 a<number?r:0\n expr1 a<number?g:0\n expr2 a<number?b:0\n expr3 a<number?a:0\n name alpha_comparison\n selected true\n xpos 1703\n ypos -61\n}\nStickyNote {\n inputs 0\n name StickyNote2\n label \"Return pixel if a < number\"\n selected true\n xpos 1682\n ypos -6\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/alpha_exists.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nConstant {\n inputs 0\n color 1\n name Constant1\n selected true\n xpos 924\n ypos -187\n}\nRemove {\n channels alpha\n name Remove1\n selected true\n xpos 924\n ypos -89\n disable true\n}\nExpression {\n name Alpha_channel_Exist\n selected true\n xpos 924\n ypos -30\n addUserKnob {20 Exist l Exist_alpha?}\n addUserKnob {26 message l \"\" +STARTLINE T \"0: if alpha channel doesn't exist\\n1: if alpha channel exists\"}\n addUserKnob {3 alpha_exist l exist_alpha?}\n alpha_exist {{\"\\[string first \\\".a\\\" \\[channels \\[input this 0]]]>-1\"}}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/alpha_sum.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 clamp\n temp_expr0 1\n expr3 \"clamp==1 ? clamp(r+g+b) : r+g+b\"\n name r_plus_g_plus_b\n selected true\n xpos 267\n ypos -9\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/bricks.nk",
    "content": "Reformat {\n inputs 0\n format \"1920 1080 0 0 1920 1080 1 HD_1080\"\n name Reformat1\n xpos 131\n ypos -105\n}\nExpression {\n temp_name0 dimension_width\n temp_expr0 size*width_brick\n temp_name1 difference_size\n temp_expr1 size\n temp_name2 dimension_height\n temp_expr2 size\n expr0 \"floor(y/size)%2 == 0? (x%(dimension_width*scale))/(difference_size*width_brick*scale) : ((x+offset)%dimension_width)/(difference_size*width_brick)\"\n expr1 \"floor(y/size)%2 == 0? (y%dimension_height)/(difference_size) : ((y)%dimension_height)/(difference_size)\"\n name bricks\n xpos 131\n ypos -64\n addUserKnob {20 User}\n addUserKnob {7 size R 0 200}\n size 216\n addUserKnob {7 offset R 0 100}\n offset 132\n addUserKnob {7 scale R 0 6}\n scale 1\n addUserKnob {26 \"\"}\n addUserKnob {7 width_brick R 0 5}\n width_brick 1.3\n addUserKnob {3 random_value l INVISIBLE +INVISIBLE}\n random_value 61\n}\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n xpos 7\n ypos -37\n}\nSTMap {\n inputs 2\n channels rgba\n uv rgba\n name STMap1\n xpos 131\n ypos -13\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/check_nan_inf.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nBackdropNode {\n inputs 0\n name BackdropNode17\n tile_color 0x7190c6ff\n label check\n note_font_size 42\n selected true\n xpos 492\n ypos 65\n bdwidth 247\n bdheight 213\n z_order 1\n}\npush $cut_paste_input\nDot {\n name Dot1\n selected true\n xpos 614\n ypos 145\n}\nset N1863380 [stack 0]\nExpression {\n expr0 isinf(r)?1000:0\n expr1 isinf(g)?1000:0\n expr2 isinf(b)?1000:0\n expr3 isinf(a)?1000:0\n name Expression17\n label INF\n selected true\n xpos 502\n ypos 195\n}\nBlur {\n channels rgba\n size 20\n name Blur204\n label \"\\[value size]\"\n selected true\n xpos 502\n ypos 233\n}\npush $N1863380\nExpression {\n expr0 isnan(r)?1000:0\n expr1 isnan(g)?1000:0\n expr2 isnan(b)?1000:0\n expr3 isnan(a)?1000:0\n name Expression16\n label NAN\n selected true\n xpos 649\n ypos 190\n}\nBlur {\n channels rgba\n size 20\n name Blur205\n label \"\\[value size]\"\n selected true\n xpos 649\n ypos 236\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/check_negative.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"r < 0 ? 1000 : 0\"\n expr1 \"g < 0 ? 1000 : 0\"\n expr2 \"b < 0 ? 1000 : 0\"\n expr3 \"a < 0 ? 1000 : 0\"\n name Expression3\n label NEGATIVE\n selected true\n xpos 2976\n ypos -519\n}\nBlur {\n channels rgba\n size 20\n name Blur3\n label \"\\[value size]\"\n selected true\n xpos 2976\n ypos -487\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/circles.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"sin(sqrt(x * x + y * y ))\"\n expr1 \"sin(sqrt(x * x + y * y ))\"\n expr2 \"sin(sqrt(x * x + y * y ))\"\n expr3 \"sin(sqrt(x * x + y * y ))\"\n name Circles\n selected true\n xpos 1203\n ypos 221\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/circles_user.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nStickyNote {\n inputs 0\n name StickyNote3\n label \"Hypot: calculate the pythagora's theorem\"\n selected true\n xpos 1151\n ypos 344\n}\npush $cut_paste_input\nExpression {\n expr0 \"sin(hypot(x-center.x, y-center.y ) / size)\"\n expr1 \"sin(hypot(x-center.x, y-center.y ) / size)\"\n expr2 \"sin(hypot(x-center.x, y-center.y ) / size)\"\n expr3 \"sin(hypot(x-center.x, y-center.y ) / size)\"\n name Circles_User\n selected true\n xpos 1204\n ypos 317\n addUserKnob {20 User}\n addUserKnob {7 size R 0 10}\n size 5.8\n addUserKnob {12 center}\n center {1161 547}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/coordinates.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x3d7c8401\n note_font \"Helvetica bold Bold\"\n note_font_size 100\n xpos 79\n ypos -222\n bookmark false\n bdwidth 355\n bdheight 365\n}\nNoise {\n inputs 0\n output {-rgba.red -rgba.green rgba.blue rgba.alpha}\n center {1024 778}\n name Noise1\n xpos 328\n ypos -36\n disable true\n}\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n xpos 110\n ypos -141\n}\nset Na8e2fa0 [stack 0]\nExpression {\n expr0 cx\n expr1 cy\n expr2 0\n name Expression1\n xpos 280\n ypos -117\n}\nDot {\n name Dot1\n tile_color 0xcccccc00\n xpos 314\n ypos 58\n}\npush $Na8e2fa0\nPositionToPoints2 {\n inputs 2\n display textured\n render_mode textured\n name PositionToPoints1\n xpos 110\n ypos 55\n}\nStickyNote {\n inputs 0\n name StickyNote1\n label \"Insert Noise on Blue channel\\nto apply DIsplacement\"\n xpos 332\n ypos 23\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/create_inf.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x4493a000 x440b8000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier2 512 bezier\n     {{cc\n       {f 8192}\n       {px x44872000\n        {0 0}\n        {x449dedc6 x445c9c0d}\n        {0 0}\n        {0 0}\n        {x449e088f x445ca874}\n        {0 0}}}     idem}\n     {tx x44872000 x449dbb34 x445c8b86}\n     {a osw x41200000 osf 0 str 1 spx x4493a000 spy x440b8000 sb 1 ltn x44872000 ltm x44872000 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 1 h 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1081 ltm 1081 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone opc 0.1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear opc 0.5 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1181 558}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1081\n lifetime_end 1081\n motionblur_shutter_offset_type centred\n brush_size 1\n brush_spacing 0.05000000075\n brush_hardness 0\n source_black_outside true\n name RotoPaint6\n selected true\n xpos 627\n ypos -198\n}\nExpression {\n expr0 r!=0?1*exp(500)/0.0000000001:0\n expr1 g!=0?1*exp(500)/0.0000000001:0\n expr2 b!=0?1*exp(500)/0.0000000001:0\n expr3 a!=0?1*exp(500)/0.0000000001:0\n name Create_inf_pixel\n selected true\n xpos 627\n ypos -118\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/create_nan.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x4493a000 x440b8000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier2 512 bezier\n     {{cc\n       {f 8192}\n       {px x44872000\n        {0 0}\n        {x449dedc6 x445c9c0d}\n        {0 0}\n        {0 0}\n        {x449e088f x445ca874}\n        {0 0}}}     idem}\n     {tx x44872000 x449dbb34 x445c8b86}\n     {a osw x41200000 osf 0 str 1 spx x4493a000 spy x440b8000 sb 1 ltn x44872000 ltm x44872000 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 1 h 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1081 ltm 1081 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone opc 0.1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear opc 0.5 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1181 558}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1081\n lifetime_end 1081\n motionblur_shutter_offset_type centred\n brush_size 1\n brush_spacing 0.05000000075\n brush_hardness 0\n source_black_outside true\n name RotoPaint6\n selected true\n xpos 502\n ypos -225\n}\nExpression {\n expr0 r!=0?sqrt(-1):0\n expr1 g!=0?sqrt(-1):0\n expr2 b!=0?sqrt(-1):0\n expr3 a!=0?sqrt(-1):0\n name Create_nan_pixel\n selected true\n xpos 502\n ypos -118\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/deepThickness.nk",
    "content": "DeepExpression {\n temp_name3 t\n temp_expr3 \"\\[value thickness]/2\"\n chans1 deep\n deep.front deep.front-t\n deep.back deep.back+t\n name DeepThickness\n selected true\n addUserKnob {20 Thickness}\n addUserKnob {7 thickness R 0 100}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/deepToDepth.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nDeepToImage {\n name DeepToImage1\n selected true\n xpos 150\n ypos -47\n}\nAddChannels {\n channels depth\n name AddChannels1\n selected true\n xpos 150\n}\nExpression {\n channel3 depth\n expr3 \"deep.r == 0 ? inf : deep.r\"\n name DeepToDepth\n selected true\n xpos 150\n ypos 59\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/depth_normalize.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n channel0 depth\n expr0 z==0?0:1/z\n name Expression1\n label \"NORMALIZED DEPTH\"\n selected true\n xpos -584\n ypos 440\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/despill_blue.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n selected true\n xpos 2124\n ypos 80\n}\nExpression {\n temp_name0 key\n temp_expr0 max(0,b-(r+g)/2)\n expr2 b-key\n expr3 key\n name Blue_Despill\n tile_color 0x3d3f8e00\n selected true\n xpos 2124\n ypos 233\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/despill_blue_list.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n selected true\n xpos 178\n ypos -400\n}\nDot {\n name Dot1\n selected true\n xpos 212\n ypos -287\n}\nset N2ea1fe80 [stack 0]\nExpression {\n expr2 b>(g+2*r)/2*LimitPercentage?(g+2*r)/2*LimitPercentage:b\n expr3 b-(2*r+g)*LimitPercentage/2\n name DoubleRedAve2\n tile_color 0xff01\n selected true\n xpos 400\n ypos -158\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ea1fe80\nExpression {\n expr2 b>(g+r)/2*LimitPercentage?(g+r)/2*LimitPercentage:b\n expr3 b-(r+g)*LimitPercentage/2\n name Average\n tile_color 0xff01\n selected true\n xpos 288\n ypos -157\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ea1fe80\nExpression {\n expr2 b>(2*g+r)/2*LimitPercentage?(2*g+r)/2*LimitPercentage:b\n expr3 b-(r+2*g)*LimitPercentage/2\n name DoubleGreenAve\n tile_color 0xff01\n selected true\n xpos 178\n ypos -158\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ea1fe80\nExpression {\n expr2 b>g*LimitPercentage?g*LimitPercentage:b\n expr3 b-g*LimitPercentage\n name GreenLimitsBlue\n tile_color 0xff01\n selected true\n xpos 66\n ypos -158\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ea1fe80\nExpression {\n expr2 b>r*LimitPercentage?r*LimitPercentage:b\n expr3 b-r*LimitPercentage\n name RedLimitsBlue\n tile_color 0xff01\n selected true\n xpos -42\n ypos -158\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/despill_green.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel1\n selected true\n xpos 1974\n ypos 80\n}\nExpression {\n temp_name0 key\n temp_expr0 max(0,g-(r+b)/2)\n expr1 g-key\n expr3 key\n name Green_Despill\n tile_color 0x3f633800\n selected true\n xpos 1974\n ypos 236\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/despill_green_list.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\nColorWheel {\n inputs 0\n gamma 0.45\n name ColorWheel2\n selected true\n xpos -480\n ypos -423\n}\nDot {\n name Dot2\n selected true\n xpos -446\n ypos -307\n}\nset N2ef0ab80 [stack 0]\nExpression {\n expr1 g>(b+2*r)/3*LimitPercentage?(b+2*r)/3*LimitPercentage:g\n expr3 g-(r+b)*LimitPercentage/2\n name DoubleRedAve\n tile_color 0xff0001\n selected true\n xpos -258\n ypos -153\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ef0ab80\nExpression {\n expr1 g>(2*b+r)/3*LimitPercentage?(2*b+r)/3*LimitPercentage:g\n expr3 g-(r+b)*LimitPercentage/2\n name DoubleBlueAve\n tile_color 0xff0001\n selected true\n xpos -370\n ypos -153\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ef0ab80\nExpression {\n expr1 g>(b+r)/2*LimitPercentage?(b+r)/2*LimitPercentage:g\n expr3 g-(r+b)*LimitPercentage/2\n name AverageGreen\n tile_color 0xff0001\n selected true\n xpos -480\n ypos -153\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ef0ab80\nExpression {\n expr1 g>b*LimitPercentage?b*LimitPercentage:g\n expr3 g-b*LimitPercentage\n name BlueLimitsGreen\n tile_color 0xff0001\n selected true\n xpos -590\n ypos -153\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\npush $N2ef0ab80\nExpression {\n expr1 g>r*LimitPercentage?r*LimitPercentage:g\n expr3 g-r*LimitPercentage\n name RedLimitsGreen\n tile_color 0xff0001\n selected true\n xpos -699\n ypos -153\n addUserKnob {20 User}\n addUserKnob {7 LimitPercentage l \"fine tune\" R 0.5 1.5}\n LimitPercentage 1\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/differenceKey.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nGroup {\n name differenceKey\n tile_color 0xffff0001\n selected true\n xpos 159\n ypos -87\n addUserKnob {20 DifferenceKey}\n addUserKnob {41 tolerance T MergeExpression1.tolerance}\n}\n Input {\n  inputs 0\n  name Input2\n  xpos -189\n  ypos -333\n  number 1\n }\n Input {\n  inputs 0\n  name Input1\n  xpos 9\n  ypos -333\n }\n MergeExpression {\n  inputs 2\n  expr3 \"abs(Br-Ar) > tolerance || abs(Bg-Ag) > tolerance || abs(Bb-Ab)\\n > tolerance?1:0\"\n  name MergeExpression1\n  xpos -98\n  ypos -270\n  addUserKnob {20 User}\n  addUserKnob {7 tolerance R 0 0.1}\n }\n Shuffle {\n  red alpha\n  green alpha\n  blue alpha\n  name Shuffle2\n  tile_color 0xffffffff\n  xpos -98\n  ypos -239\n }\n Clamp {\n  name Clamp1\n  xpos -98\n  ypos -208\n }\n Output {\n  name Output1\n  xpos -98\n  ypos -99\n }\nend_group\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/fBm.nk",
    "content": "add_layer {Pref Pref.red Pref.green Pref.blue Pref.alpha}\nadd_layer {ID01 ID01.red ID01.green ID01.blue ID01.alpha}\nShuffle {\n in Pref\n in2 ID01\n alpha red2\n name Shuffle9\n label \"\\[value in]\"\n selected true\n xpos 82\n ypos -145\n}\nUnpremult {\n name Unpremult1\n selected true\n xpos 82\n ypos -83\n}\nadd_layer {noise01 noise01.red noise01.green noise01.blue noise01.alpha}\nExpression {\n channel0 noise01\n expr0 random(r,g,b)+offset\n name Expression6\n label lacunarity\n selected true\n xpos 82\n ypos -40\n addUserKnob {20 User}\n addUserKnob {7 offset l Offset}\n offset 0.365\n}\nExpression {\n temp_name0 octaves\n temp_expr0 10\n temp_name1 gain\n temp_expr1 1\n channel0 rgb\n expr0 fBm(r,g,b,octaves,noise01.red,gain)\n name Expression5\n label fBm\n selected true\n xpos 82\n ypos -8\n}\nPremult {\n name Premult1\n selected true\n xpos 82\n ypos 34\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/gradient_horizontal.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"x / width\"\n expr1 \"x / width\"\n expr2 \"x / width\"\n expr3 \"x / width\"\n name gradient_horizontal\n selected true\n xpos 1426\n ypos 448\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/gradient_horizontal_invert.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"1-(x / width)\"\n expr1 \"1-(x / width)\"\n expr2 \"1-(x / width)\"\n expr3 \"1-(x / width)\"\n name gradient_horizontal_invert\n selected true\n xpos 1426\n ypos 448\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/gradient_vertical.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"y / height\"\n expr1 \"y / height\"\n expr2 \"y / height\"\n expr3 \"y / height\"\n name gradient_vertical\n selected true\n xpos 1443\n ypos 516\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/gradient_vertical_invert.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"1-(y / height)\"\n expr1 \"1-(y / height)\"\n expr2 \"1-(y / height)\"\n expr3 \"1-(y / height)\"\n name gradient_vertical_invert\n selected true\n xpos 1443\n ypos 516\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/keying.nk",
    "content": "Expression {\n inputs 0\n temp_name0 strip_low_r\n temp_expr0 \"parent.Expression_Keying.thresh_low * parent.Expression_Keying.pick.r/(parent.Expression_Keying.pick.r + parent.Expression_Keying.pick.g + parent.Expression_Keying.pick.b)\"\n temp_name1 strip_low_g\n temp_expr1 \"parent.Expression_Keying.thresh_low * parent.Expression_Keying.pick.g/(parent.Expression_Keying.pick.r + parent.Expression_Keying.pick.g + parent.Expression_Keying.pick.b)\"\n temp_name2 strip_low_b\n temp_expr2 \"parent.Expression_Keying.thresh_low * parent.Expression_Keying.pick.b/(parent.Expression_Keying.pick.r + parent.Expression_Keying.pick.g + parent.Expression_Keying.pick.b)\"\n expr0 \"r > strip_low_r ? r : 0\"\n expr1 \"g > strip_low_g ? g : 0\"\n expr2 \"b > strip_low_b ? b : 0\"\n name Expression_Tweaking\n xpos 615\n ypos -48\n}\nExpression {\n temp_name0 r_ratio\n temp_expr0 \"abs(pick.r/(pick.r + pick.g + pick.b) -  r/(r+g+b))\\ng\"\n temp_name1 g_ratio\n temp_expr1 \"abs(pick.g/(pick.r + pick.g + pick.b) -  g/(r+g+b))\"\n temp_name2 b_ratio\n temp_expr2 \"abs(pick.b/(pick.r + pick.g + pick.b) -  b/(r+g+b))\"\n temp_name3 valid\n temp_expr3 \"r_ratio < ratio.r && g_ratio < ratio.g && b_ratio < ratio.b\"\n expr3 \"valid ? 1 - (r_ratio + g_ratio + b_ratio)/(ratio.r + ratio.g + ratio.b) : 0\\n\"\n name Expression_Keying\n xpos 615\n ypos -3\n addUserKnob {20 Keying}\n addUserKnob {26 instructions l \"\" +STARTLINE T \"<i>Pick the color you want to Key.<br> This is telling us is how similar the colour’s ratio is to the target’s ratio.<br> If it’s the exact same, we’ll have 0, and the further away it is, the greater the number it will be. <br>Valid = This simply checks if our calculated similarity is less than the ratio for each channel\"}\n addUserKnob {6 ratio_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 pick t \"It's comparing the picked colour against every pixel, and as long as the ratio r, g and b is within the specified range.\\nIt returns a single value between 0 and 1 of it’s similarity\"}\n pick {0 0 0}\n addUserKnob {6 pick_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {18 ratio}\n ratio {0 0 0}\n addUserKnob {6 ratio_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n addUserKnob {26 \"\"}\n addUserKnob {7 thresh_low l \"Low Threshold\"}\n addUserKnob {26 \"\" +STARTLINE}\n addUserKnob {26 tutorial l \"\" +STARTLINE T \"From the tutorial: <br>\\nhttps://gizmosandgames.com/2016/02/15/colour-keying-with-expressions/ <br>\\nThank you <i>Matthew \\\"Rick\\\" Shaw\"}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/kill_inf.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x4493a000 x440b8000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier2 512 bezier\n     {{cc\n       {f 8192}\n       {px x44872000\n        {0 0}\n        {x449dedc6 x445c9c0d}\n        {0 0}\n        {0 0}\n        {x449e088f x445ca874}\n        {0 0}}}     idem}\n     {tx x44872000 x449dbb34 x445c8b86}\n     {a osw x41200000 osf 0 str 1 spx x4493a000 spy x440b8000 sb 1 ltn x44872000 ltm x44872000 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 1 h 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1081 ltm 1081 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone opc 0.1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear opc 0.5 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1181 558}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1081\n lifetime_end 1081\n motionblur_shutter_offset_type centred\n brush_size 1\n brush_spacing 0.05000000075\n brush_hardness 0\n source_black_outside true\n name RotoPaint6\n selected true\n xpos 627\n ypos -189\n}\nExpression {\n expr0 r!=0?1*exp(500)/0.0000000001:0\n expr1 g!=0?1*exp(500)/0.0000000001:0\n expr2 b!=0?1*exp(500)/0.0000000001:0\n expr3 a!=0?1*exp(500)/0.0000000001:0\n name Create_inf_pixel\n selected true\n xpos 627\n ypos -118\n disable true\n}\nExpression {\n expr0 isinf(r)?r(x+x_offset,y+y_offset):r\n expr1 isinf(g)?g(x+x_offset,y+y_offset):g\n expr2 isinf(b)?b(x+x_offset,y+y_offset):b\n expr3 isinf(a)?a(x+x_offset,y+y_offset):a\n name Kill_inf_pixel\n selected true\n xpos 627\n ypos -65\n addUserKnob {20 User}\n addUserKnob {3 x_offset l \"x clone offset\"}\n addUserKnob {3 y_offset l \"y clone offset\"}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/kill_nan.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nRotoPaint {\n curves {{{v x3f99999a}\n  {f 0}\n  {n\n   {layer Root\n    {f 2097664}\n    {t x4493a000 x440b8000}\n    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}\n    {curvegroup Bezier2 512 bezier\n     {{cc\n       {f 8192}\n       {px x44872000\n        {0 0}\n        {x449dedc6 x445c9c0d}\n        {0 0}\n        {0 0}\n        {x449e088f x445ca874}\n        {0 0}}}     idem}\n     {tx x44872000 x449dbb34 x445c8b86}\n     {a osw x41200000 osf 0 str 1 spx x4493a000 spy x440b8000 sb 1 ltn x44872000 ltm x44872000 tt x40800000}}}}}}\n toolbox {selectAll {\n  { selectAll str 1 ssx 1 ssy 1 sf 1 }\n  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }\n  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { brush bs 1 h 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ltn 1081 ltm 1081 tt 17 }\n  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { clone opc 0.1 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 19 }\n  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 ep1 5 }\n  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n  { smear opc 0.5 src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }\n} }\n toolbar_brush_hardness 0.200000003\n toolbar_source_transform_scale {1 1}\n toolbar_source_transform_center {1181 558}\n colorOverlay {0 0 0 0}\n lifetime_type \"all frames\"\n lifetime_start 1081\n lifetime_end 1081\n motionblur_shutter_offset_type centred\n brush_size 1\n brush_spacing 0.05000000075\n brush_hardness 0\n source_black_outside true\n name RotoPaint6\n selected true\n xpos 502\n ypos -185\n}\nExpression {\n expr0 r!=0?sqrt(-1):0\n expr1 g!=0?sqrt(-1):0\n expr2 b!=0?sqrt(-1):0\n expr3 a!=0?sqrt(-1):0\n name Create_nan_pixel\n selected true\n xpos 502\n ypos -118\n disable true\n}\nExpression {\n expr0 isnan(r)?r(x+x_offset,y+y_offset):r\n expr1 isnan(g)?g(x+x_offset,y+y_offset):g\n expr2 isnan(b)?b(x+x_offset,y+y_offset):b\n expr3 isnan(a)?a(x+x_offset,y+y_offset):a\n name Kill_nan_pixel\n selected true\n xpos 502\n ypos -64\n addUserKnob {20 User}\n addUserKnob {3 x_offset l \"x clone offset\"}\n addUserKnob {3 y_offset l \"y clone offset\"}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/normalPass_relight.nk",
    "content": "add_layer {N N.red N.green N.blue N.alpha}\nShuffle {\n in N\n name Shuffle1\n label \"\\[value in]\"\n selected true\n xpos 225\n ypos -175\n}\nExpression {\n expr3 max((r*norm.r)+(g*norm.g)+(b*norm.b),0)\n name Expression\n label RELIGHT\n selected true\n xpos 225\n ypos -121\n addUserKnob {20 User}\n addUserKnob {7 round l left/right R -100 100}\n round 1\n addUserKnob {7 around l up/down R -100 100}\n around 1\n addUserKnob {26 \"\"}\n addUserKnob {7 rad}\n rad {{cos(radians(around))}}\n addUserKnob {7 lx}\n lx {{rad*cos(radians(round))}}\n addUserKnob {7 ly}\n ly {{sin(radians(around))}}\n addUserKnob {7 lz}\n lz {{rad*sin(radians(round))}}\n addUserKnob {18 norm}\n norm {{lx/sqrt(pow2(lx)+pow2(ly)+pow2(lz))} {ly/sqrt(pow2(lx)+pow2(ly)+pow2(lz))} {lz/sqrt(pow2(lx)+pow2(ly)+pow2(lz))}}\n addUserKnob {6 norm_panelDropped l \"panel dropped state\" -STARTLINE +HIDDEN}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/points.nk",
    "content": "Flare {\n inputs 0\n position {288 240}\n size_mult 0.7\n inner_color 1\n outer_falloff 0.1\n inner_falloff 0.1\n vis_mask_size 1\n corners 6\n flattening 1\n sharpness 0.99\n name Flare1\n xpos 1365\n ypos 200\n}\nShuffle {\n green red\n blue red\n alpha red\n name Shuffle1\n tile_color 0x93000000\n xpos 1365\n ypos 224\n}\nCrop {\n box {198.5 168 378.5 312}\n reformat true\n crop false\n name Crop1\n xpos 1365\n ypos 248\n}\nDot {\n name Dot1\n xpos 1399\n ypos 296\n}\nReformat {\n inputs 0\n format \"3840 2160 0 0 3840 2160 1 UHD_4K\"\n name Reformat1\n xpos 1489\n ypos 133\n}\nExpression {\n expr0 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr1 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr2 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr3 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?1:value:0:0\n name Points\n xpos 1489\n ypos 165\n addUserKnob {20 User}\n addUserKnob {7 value}\n value 1\n addUserKnob {6 random_colors l \"random colors\" -STARTLINE}\n random_colors true\n addUserKnob {7 offsetX R 0 100}\n offsetX 200\n addUserKnob {7 offsetY R 0 100}\n offsetY 200\n}\nDilate {\n size 25\n name Dilate1\n label \"\\[value size]\"\n xpos 1489\n ypos 189\n}\nGrade {\n white 6\n name Grade1\n xpos 1489\n ypos 231\n}\nConvolve2 {\n inputs 2\n name Convolve1\n xpos 1489\n ypos 289\n}\nExpression {\n inputs 0\n expr0 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr1 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr2 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?random:value:0:0\n expr3 fmod(x,offsetX)==0?fmod(y,offsetY)==0?random_colors?1:value:0:0\n name Points1\n selected true\n xpos 1705\n ypos 194\n addUserKnob {20 User}\n addUserKnob {7 value}\n value 1\n addUserKnob {6 random_colors l \"random colors\" -STARTLINE}\n random_colors true\n addUserKnob {7 offsetX R 0 100}\n offsetX 200\n addUserKnob {7 offsetY R 0 100}\n offsetY 200\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/points_advanced.nk",
    "content": "BackdropNode {\n inputs 0\n name BackdropNode1\n tile_color 0x71c67100\n note_font_size 42\n xpos -210\n ypos -380\n bdwidth 204\n bdheight 257\n}\nFlare {\n inputs 0\n position {288 240}\n size_mult 0.7\n inner_color 1\n outer_falloff 0.1\n inner_falloff 0.1\n vis_mask_size 1\n corners 6\n flattening 1\n sharpness 0.99\n corners_angle 30\n name Flare1\n xpos -220\n ypos -61\n}\nShuffle {\n green red\n blue red\n alpha red\n name Shuffle1\n tile_color 0x93000000\n xpos -220\n ypos -37\n}\nCrop {\n box {212 154 365 326}\n reformat true\n crop false\n name Crop1\n xpos -220\n ypos -13\n}\nDot {\n name Dot1\n xpos -186\n ypos 35\n}\nExpression {\n inputs 0\n expr0 \"fmod(y/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x+offset)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,1) : random_points == 1 && random_every_frame == 1?random(x*y, 1, frame)*gain:random_points==0 && random_every_frame==1?random(frame,1)*gain:gain :0:0:0\"\n expr1 \"fmod(y/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x+offset)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,2) : random_points == 1 && random_every_frame == 1?random(x*y, 2, frame)*gain:random_points==0 && random_every_frame==1?random(frame,2)*gain:gain :0:0:0\"\n expr2 \"fmod(y/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x+offset)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,3) : random_points == 1 && random_every_frame == 1?random(x*y, 3, frame)*gain:random_points==0 && random_every_frame==1?random(frame,3)*gain:gain :0:0:0\"\n expr3 \"fmod(y/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x+offset)%offsetY)/offsetY == 0 ? 1 :0:0:0\"\n name Expression4\n xpos -96\n ypos -211\n addUserKnob {20 User}\n addUserKnob {7 offsetX R 0 200}\n offsetX {{parent.MASTER_POINTS.offsetX}}\n addUserKnob {7 offsetY R 0 200}\n offsetY {{parent.MASTER_POINTS.offsetY}}\n addUserKnob {3 rows l INVISIBLE +INVISIBLE}\n rows {{parent.MASTER_POINTS.rows}}\n addUserKnob {3 columns l INVISIBLE +INVISIBLE}\n columns {{parent.MASTER_POINTS.columns}}\n addUserKnob {3 offset}\n offset {{parent.MASTER_POINTS.offset}}\n addUserKnob {7 gain R 0 4}\n gain {{parent.MASTER_POINTS.gain}}\n addUserKnob {6 random_points l \"random points\" +STARTLINE}\n random_points {{parent.MASTER_POINTS.random_points}}\n addUserKnob {6 random_every_frame l \"random every frame\" -STARTLINE}\n random_every_frame {{parent.MASTER_POINTS.random_every_frame}}\n}\nExpression {\n inputs 0\n expr0 \"fmod((y+1)/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,1) : random_points == 1 && random_every_frame == 1?random(x*y, 1, frame)*gain:random_points==0 && random_every_frame==1?random(frame,1)*gain:gain :0:0:0\"\n expr1 \"fmod((y+1)/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,2) : random_points == 1 && random_every_frame == 1?random(x*y, 2, frame)*gain:random_points==0 && random_every_frame==1?random(frame,2)*gain:gain :0:0:0\"\n expr2 \"fmod((y+1)/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x)%offsetY)/offsetY == 0 ? random_points==1 && random_every_frame == 0 ? gain*random(x,y,3) : random_points == 1 && random_every_frame == 1?random(x*y, 3, frame)*gain:random_points==0 && random_every_frame==1?random(frame,3)*gain:gain :0:0:0\"\n expr3 \"fmod((y+1)/rows,offsetX) == 0 ? floor(y/offsetX)%2 == 0 ? ((x)%offsetY)/offsetY == 0 ? 1 :0:0:0\"\n name Expression11\n xpos -200\n ypos -210\n addUserKnob {20 User}\n addUserKnob {7 offsetX R 0 200}\n offsetX {{parent.MASTER_POINTS.offsetX}}\n addUserKnob {7 offsetY R 0 200}\n offsetY {{parent.MASTER_POINTS.offsetY}}\n addUserKnob {3 rows l INVISIBLE +INVISIBLE}\n rows {{parent.MASTER_POINTS.rows}}\n addUserKnob {3 columns l INVISIBLE +INVISIBLE}\n columns {{parent.MASTER_POINTS.columns}}\n addUserKnob {3 offset}\n offset {{parent.MASTER_POINTS.offset}}\n addUserKnob {7 gain R 0 4}\n gain {{parent.MASTER_POINTS.gain}}\n addUserKnob {6 random_points l \"random points\" +STARTLINE}\n random_points {{parent.MASTER_POINTS.random_points}}\n addUserKnob {6 random_every_frame l \"random every frame\" -STARTLINE}\n random_every_frame {{parent.MASTER_POINTS.random_every_frame}}\n}\nDot {\n name Dot6\n xpos -166\n ypos -148\n}\nMerge2 {\n inputs 2\n name Merge4\n xpos -96\n ypos -151\n}\nDilate {\n size 10\n name Dilate10\n label \"\\[value size]\"\n xpos -96\n ypos -107\n}\nGrade {\n white 50\n name Grade1\n xpos -96\n ypos -30\n}\nConvolve2 {\n inputs 2\n name Convolve1\n xpos -96\n ypos 28\n}\nExpression {\n inputs 0\n name MASTER_POINTS\n tile_color 0xff500001\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold\"\n xpos -139\n ypos -300\n addUserKnob {20 User}\n addUserKnob {3 offsetX}\n offsetX 135\n addUserKnob {3 offsetY}\n offsetY 181\n addUserKnob {3 rows l INVISIBLE +INVISIBLE}\n rows 1\n addUserKnob {3 columns l INVISIBLE +INVISIBLE}\n columns 1\n addUserKnob {26 \"\"}\n addUserKnob {3 offset}\n offset 87\n addUserKnob {26 \"\"}\n addUserKnob {20 Color n 1}\n addUserKnob {7 gain R 0 4}\n gain 1\n addUserKnob {6 random_points l \"random points\" +STARTLINE}\n random_points true\n addUserKnob {6 random_every_frame l \"random every frame\" -STARTLINE}\n random_every_frame true\n addUserKnob {20 endGroup n -1}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/radial.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 size\n temp_expr0 600\n expr0 \"size - sqrt(x * x + y * y )\"\n expr1 \"\\nsize - sqrt(x * x + y * y )\"\n expr2 \"\\nsize - sqrt(x * x + y * y )\"\n expr3 \"\\nsize - sqrt(x * x + y * y )\"\n name Radial\n selected true\n xpos 923\n ypos 541\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/radial_gradient.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"(size - sqrt( (x-center.x) * (x-center.x) + (y-center.y) * (y-center.y) ) ) / gradient\"\n expr1 \"(size - sqrt( (x-center.x) * (x-center.x) + (y-center.y) * (y-center.y) ) ) / gradient\"\n expr2 \"(size - sqrt( (x-center.x) * (x-center.x) + (y-center.y) * (y-center.y) ) ) / gradient\"\n expr3 \"(size - sqrt( (x-center.x) * (x-center.x) + (y-center.y) * (y-center.y) ) ) / gradient\"\n name RadialGradient\n selected true\n xpos 925\n ypos 634\n addUserKnob {20 User}\n addUserKnob {12 center}\n center {908 374}\n addUserKnob {7 size R 0 1000}\n size 300\n addUserKnob {7 gradient R 0 1000}\n gradient 300\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/radial_rays.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n expr0 \"sin( ( atan(x - center.x, y - center.y) + offset) * size)\"\n expr1 \"sin( ( atan(x - center.x, y - center.y) + offset) * size)\"\n expr2 \"sin( ( atan(x - center.x, y - center.y) + offset) * size)\"\n expr3 \"sin( ( atan(x - center.x, y - center.y) + offset) * size)\"\n name Radial_Rays\n selected true\n xpos 1198\n ypos 540\n addUserKnob {20 User}\n addUserKnob {3 offset}\n offset 4\n addUserKnob {7 size R 0 10}\n size 9.3\n addUserKnob {12 center}\n center {868 444}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/transform.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 fx\n temp_expr0 \"( x - translate.x ) * scale\"\n temp_name1 fy\n temp_expr1 \"( y -  translate.y ) * scale\"\n expr0 r(fx,fy)\n expr1 r(fx,fy)\n expr2 r(fx,fy)\n name Transform\n selected true\n xpos 2227\n ypos -466\n addUserKnob {20 User}\n addUserKnob {12 translate}\n translate {410 440}\n addUserKnob {7 scale R 0 10}\n scale 2\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/transform_advanced.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 fx\n temp_expr0 \"(cos(rotationRad) * (x-translate.x) - sin(rotationRad) * (y - translate.y)+center.x)*scale\"\n temp_name1 fy\n temp_expr1 \"(sin(rotationRad) * (x-translate.x) + cos(rotationRad) * (y-translate.y) + center.y)*scale\"\n expr0 r(fx,fy)\n expr1 g(fx,fy)\n expr2 b(fx,fy)\n name Transform\n selected true\n xpos 79\n ypos -30\n addUserKnob {20 Parameters}\n addUserKnob {12 translate}\n addUserKnob {7 rotation R -360 360}\n addUserKnob {7 rotationRad l \"rotation Rad\" t \"Radiant Rotation\\n\"}\n rotationRad {{radians(rotation)}}\n addUserKnob {7 scale R 0 10}\n scale 1\n addUserKnob {12 center}\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/turbulence.nk",
    "content": "add_layer {Pref Pref.red Pref.green Pref.blue Pref.alpha}\nadd_layer {ID01 ID01.red ID01.green ID01.blue ID01.alpha}\nShuffle {\n in Pref\n in2 ID01\n alpha red2\n name Shuffle9\n label \"\\[value in]\"\n selected true\n xpos 82\n ypos -145\n}\nUnpremult {\n name Unpremult1\n selected true\n xpos 82\n ypos -83\n}\nadd_layer {noise01 noise01.red noise01.green noise01.blue noise01.alpha}\nExpression {\n channel0 noise01\n expr0 random(r,g,b)+offset\n name Expression6\n label lacunarity\n selected true\n xpos 82\n ypos -40\n addUserKnob {20 User}\n addUserKnob {7 offset l Offset}\n offset 0.365\n}\nExpression {\n temp_name0 octaves\n temp_expr0 10\n temp_name1 gain\n temp_expr1 1\n channel0 rgb\n expr0 turbulence(r,g,b,octaves,noise01.red,gain)\n name Expression5\n label turbulence\n selected true\n xpos 82\n ypos -8\n}\nPremult {\n name Premult1\n selected true\n xpos 82\n ypos 34\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/nk_files/twist.nk",
    "content": "set cut_paste_input [stack 0]\nversion 10.5 v2\npush $cut_paste_input\nExpression {\n temp_name0 fx\n temp_expr0 abs(Posx+(x-Posx)*cos(angleD*pow((clamp(1-sqrt(pow(x-Posx,2)+pow(y-Posy,2))*Mag)),map))+(y-Posy)*sin(angleD*pow((clamp(1-sqrt(pow(x-Posx,2)+pow(y-Posy,2))*Mag)),map)))\n temp_name1 fy\n temp_expr1 abs(Posy-(x-Posx)*sin(angleD*pow((clamp(1-sqrt(pow(x-Posx,2)+pow(y-Posy,2))*Mag)),map))+(y-Posy)*cos(angleD*pow((clamp(1-sqrt(pow(x-Posx,2)+pow(y-Posy,2))*Mag)),map)))\n expr0 r(fx,fy)\n expr1 r(fx,fy)\n expr2 r(fx,fy)\n name Twist\n selected true\n xpos 2435\n ypos -437\n addUserKnob {20 User}\n addUserKnob {7 map}\n map 5\n addUserKnob {7 angle R -500 500}\n addUserKnob {7 angleD}\n angleD {{radians(angle)}}\n addUserKnob {7 Mag R 0 0.01}\n Mag 0.00115\n addUserKnob {7 Posx R 0 720}\n Posx 1010\n addUserKnob {7 Posy R 0 576}\n Posy 688\n}\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/ColorGradientUi.py",
    "content": "#(C) Copyright Mads Hagbarth Damsbo 2016 -- Not for redistribution.\n# Version 1.1\n# Updated for Nuke 14.1 and above\n\nimport sys, math, os\nimport nuke, nukescripts\nfrom nukescripts import panels\nimport datetime\nimport operator\nfrom functools import partial\n\nfrom PySide6 import QtGui, QtCore, QtWidgets\nfrom PySide6.QtWidgets import QWidget, QLabel, QSlider, QComboBox, QMenu, QToolButton, QGridLayout, QHBoxLayout, QWidgetAction, QPushButton\nfrom PySide6.QtGui import QColor, QPainter, QLinearGradient, QAction\nfrom PySide6.QtCore import Qt\n\ntry:\n    import ConfigParser\nexcept:\n    import configparser as ConfigParser\n\nPresetsFile = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'python/GradientPresets.cfg')\nconfig = ConfigParser.RawConfigParser()\nconfig.read(PresetsFile)\n\n#nuke.toNode(inputNode.name()+\".HueVsHue\").knob(\"lut\").editCurve(\"amount\",myCurve.replace(\"amount\",\"curve\")[10:-1])\n\n\ndef saveTemplate(_curves):\n    \"\"\"\n    Save the current color gradient curves to a configuration file.\n    \"\"\"\n    global PresetsFile\n    global config\n    p = SectionPanel()\n    if p.showModalDialog():\n        # Ensure the section exists or create it if it doesn't\n        if not config.has_section(p.category.value()):\n            config.add_section(p.category.value())\n        \n        config.read(PresetsFile)\n        config.set(p.category.value(), p.name.value(), _curves)\n\n        try:\n            # Writing the configuration file in text mode\n            with open(PresetsFile, 'w') as configfile:\n                config.write(configfile)\n        except Exception as e:\n            print(f\"Error writing to presets file: {e}\")\n\n\ndef setColorCurve(node, colorlist, parent, _object):\n    \"\"\"\n    Set the color curve for a given node based on the provided color list.\n\n    This function modifies the LUT (Look-Up Table) of a color lookup node by applying\n    a gradient curve based on the input color list. The gradient is constructed for\n    each channel (Red, Green, Blue, Alpha) and applied to the node.\n    \"\"\"\n    interpolation_map = {\n        \"Constant\": \"K\",\n        \"Linear\": \"L\",\n        \"Smooth\": \"C\",  # Cubic interpolation\n        \"Catmull-Rom\": \"R\",\n        \"Horizontal\": \"s0\",  # Step interpolation for horizontal\n    }\n    Interpolation = _object.interpolationMenu.currentText()\n    interp = interpolation_map.get(Interpolation, \"C\")  # Default to Cubic\n    interpB = interp  # Boundary interpolation matches the main interpolation\n\n    # Helper function to construct curve strings\n    def build_curve_string(color_index):\n        curve = \"curve \"\n        for x, item in enumerate(colorlist):\n            if x == len(colorlist) - 1:  # Last point\n                curve += \"%s x%s %s %s\" % (\"L\", item[-1], item[color_index], interpB)\n            elif x == 0:  # First point\n                curve += \"%s x%s %s\" % (interpB, item[-1], item[color_index])\n            else:  # Middle points\n                curve += \"%s x%s %s\" % (interp, item[-1], item[color_index])\n        return curve\n\n    # Build curves for each channel\n    curveR = build_curve_string(0)  # Red channel\n    curveG = build_curve_string(1)  # Green channel\n    curveB = build_curve_string(2)  # Blue channel\n    curveA = build_curve_string(3)  # Alpha channel\n\n    # Apply the curves to the node\n    node['lut'].editCurve(\"red\", curveR)\n    node['lut'].editCurve(\"green\", curveG)\n    node['lut'].editCurve(\"blue\", curveB)\n    node['lut'].editCurve(\"alpha\", curveA)\n    node['chek'].execute()  # Force update the node\n\n\ndef LoadCurveDataX(_curves):\n    \"\"\"\n    Load the curve data from a string and return a list of color values.\n    \"\"\"\n    # Split the input into lines and extract channel data\n    curves = _curves.splitlines()\n    channels = {\n        \"red\": curves[1][10:-1].split(\" \"),\n        \"green\": curves[2][12:-1].split(\" \"),\n        \"blue\": curves[3][11:-1].split(\" \"),\n        \"alpha\": curves[4][12:-1].split(\" \"),\n    }\n\n    colorlist = []\n    interpolation = \"\"\n    index = -1.0\n\n    # Iterate through the red channel (assuming uniform lengths for all channels)\n    for x, item in enumerate(channels[\"red\"]):\n        if item[0:1].isdigit():  # Check if the item starts with a digit\n            if index == -1.0:  # Handle missing index for the first/last entry\n                index = 0 if x <= 2 else 1\n            colorlist.append([\n                float(channels[\"red\"][x]),\n                float(channels[\"green\"][x]),\n                float(channels[\"blue\"][x]),\n                float(channels[\"alpha\"][x]),\n                interpolation,\n                float(index),\n            ])\n            interpolation = \"\"\n            index = -1.0\n        else:  # Handle interpolation or index\n            if item[1:]:\n                index = item[1:]\n            elif item[0:1] == \"k\":\n                index = 0\n            else:\n                interpolation = item\n\n    return colorlist\n\n\nclass SectionPanel(nukescripts.PythonPanel):\n    def __init__(self):\n        nukescripts.PythonPanel.__init__(self, 'Add Custom Gradient Preset')\n        self.category = nuke.String_Knob('cat', 'Preset Category')\n        self.name = nuke.String_Knob('name', 'Preset Name')\n        self.addKnob(self.category)\n        self.addKnob(self.name)\n\n\nclass ColorValue:\n    def __init__(self):\n        self.position = 0 #Position is a value between 0 and 1\n        self.color = QColor.fromRgbF(1, 1, 1, 1)\n        self.distance = 1\n        self.selected = False\n\n\nclass GradientWidget(QWidget):\n    def __init__(self, parent=None, mainDiameter=138, outerRingWidth=10,my_node=\"None\"):\n        super(GradientWidget, self).__init__(parent)\n        self._parent = parent\n        self.myTimer = QtCore.QElapsedTimer()  # Used to limit the trigger times of mousemove events\n        self.colorLookupNode = my_node.node(\"ColorLookup1\")\n        self.thisNode = my_node\n        self.colorList = [] #Used to store all the colors\n        self.selectedHandle = False\n        self.selectedHandels = []\n        # this is the pixel diameter of the actual color wheel, without the extra decorations drawn as part of this widget\n        #self.testPointsSetup()\n        self.initCurve()\n\n    def initCurve(self,fromNode=True,_data=\"\"):  #This function is used when you load the toolset/gizmo. It will fetch data from the colorlookup node\n        self.colorList = []\n        if fromNode: #Should we read the data from a node or some input\n            colorlist = LoadCurveDataX(self.colorLookupNode[\"lut\"].toScript())\n        else:\n            colorlist = LoadCurveDataX(_data)\n        if len(colorlist) <= 1:\n            self.testPointsSetup()\n        else:\n            for item in colorlist:\n                ReturnItem = ColorValue()\n                ReturnItem.position = item[-1]\n                ReturnItem.color = QColor.fromRgbF(item[0], item[1], item[2], item[3])\n                self.colorList.append(ReturnItem)\n                self._update()\n\n    def sliderUpdate(self,_color):\n        for item in self.colorList:\n            if item.selected:\n                item.color = _color\n                self._update()\n                break\n\n    def _update(self):\n        self.colorNodeUpdate()\n        self.repaint()\n\n    def paintEvent(self, evt):\n        painter = QtGui.QPainter(self)\n        painter.setRenderHint(QtGui.QPainter.Antialiasing)\n        #painter.begin(self)\n        self.drawRectangles(painter)\n        #painter.end()\n\n    def setSelection(self,_item):\n        for item in self.colorList:\n            item.selected = False\n        _item.selected = True\n        self._parent.updateSlider(_item.color)\n        self._update()\n\n    def testPointsSetup(self): #DEPRICATED!!\n        self.colorList.append(ColorValue())\n        self.colorList.append(ColorValue())\n        self.colorList[1].position = 1\n        self.colorList[1].color = QColor.fromRgbF(0, 0, 0, 1)\n\n\n    def getColorAtOffset(self,posx):\n        #Get the points last and next point.\n        sorted_x = sorted(self.colorList,key=operator.attrgetter('position'))\n        current_index = len(sorted_x)\n        for x,item in enumerate(sorted_x):\n            if posx > item.position:\n                pass\n            else:\n                current_index = x\n                break\n\n        if current_index == 0:\n            itemA = sorted_x[0]\n            itemB = sorted_x[0]\n        elif current_index == len(sorted_x):\n            itemA = sorted_x[-1]\n            itemB = sorted_x[-1]\n        else:\n            itemA = sorted_x[current_index-1]\n            itemB = sorted_x[current_index]\n\n        #Calcualte how far between the two we are and get a color value\n        _dist = itemB.position-itemA.position\n        _distP = posx-itemA.position\n        if _dist == 0.0:\n            _distT = 0.0\n        else:\n            _distT = _distP/_dist\n        _red = _distT*itemA.color.getRgbF()[0] + (1-_distT)*itemB.color.getRgbF()[0]\n        _green = _distT*itemA.color.getRgbF()[1] + (1-_distT)*itemB.color.getRgbF()[1]\n        _blue = _distT*itemA.color.getRgbF()[2] + (1-_distT)*itemB.color.getRgbF()[2]\n        _alpha = _distT*itemA.color.getRgbF()[3] + (1-_distT)*itemB.color.getRgbF()[3]\n        return QColor.fromRgbF(_green, _blue,_alpha,_red).rgba() #MUST BE A NUKE BUG THAT ITS GREEN BLUE ALPHA RED!!!\n\n    def drawRectangles(self, painter):\n        self.widget_offset = 10\n        self.widget_width = self.width()-(self.widget_offset*2)\n        self.widget_height = 40\n        self.widget_top = 15\n        self.handle_width = 7\n\n        color = QtGui.QColor(0, 0, 0)\n        color.setNamedColor('#008080')\n        painter.setPen(color)\n        gradient = QLinearGradient(self.widget_width+(self.widget_offset*2), 0, 0, 0)\n\n        painter.setBrush(Qt.CrossPattern)\n        painter.drawRect(self.widget_offset, self.widget_top+10, self.widget_width-1, self.widget_height)\n\n        for item in self.colorList:\n            if item.selected:\n                painter.drawEllipse(QtCore.QPoint((item.position*self.widget_width)+self.widget_offset,self.widget_top) , 10, 10 ) #DRAW THE OUTER BLACK CIRCLE\n            gradient.setColorAt(1-item.position, item.color)\n            painter.setBrush(item.color)\n            painter.drawEllipse(QtCore.QPoint((item.position*self.widget_width)+self.widget_offset,self.widget_top) , 7, 7 ) #DRAW THE OUTER BLACK CIRCLE\n            painter.drawRect((item.position*self.widget_width)-self.handle_width+self.widget_offset,self.widget_top+15+self.widget_height , self.handle_width*2, self.handle_width*2 ) #DRAW THE OUTER BLACK CIRCLE\n\n        painter.setBrush(gradient)\n        painter.drawRect(self.widget_offset, self.widget_top+10, self.widget_width-1, self.widget_height)\n\n\n    def getNearestHandle(self,posx,posy,dc=False):\n        for item in self.colorList:\n            item.distance = abs(posx-item.position)\n        sorted_x = sorted(self.colorList,key=operator.attrgetter('distance'))\n        if sorted_x[0].distance <= self.handle_width/float(self.widget_width):\n            if abs(posy-(self.widget_top)) <= self.handle_width: #The Main Color Handle\n                if dc:\n                    #This part is triggered when you click a allready exsisting color chip (hence you want to edit the color)\n                    _tempcol = sorted_x[0].color.getRgbF()\n                    V = nuke.getColor(QColor.fromRgbF(_tempcol[1], _tempcol[2],_tempcol[3],_tempcol[0]).rgba() )\n                    if V:\n                        R = (255 & V >> 24) / 255.0\n                        G = (255 & V >> 16) / 255.0\n                        B = (255 & V >> 8) / 255.0\n                        A = (255 & V >> 0) / 255.0\n                        sorted_x[0].color = QColor.fromRgbF(R, G, B, A)\n                        self._update()\n                self.setSelection(sorted_x[0])\n                return sorted_x[0]\n            elif abs(posy-(self.widget_top+15+self.widget_height+self.handle_width)) <= self.handle_width: #The Deletion Handle\n                self.colorList.remove(sorted_x[0])\n                self._update()\n                return False\n            else:\n                return False\n        else:\n            if dc: #If the user double clicks, we add a new handle\n                #This part is triggered when you click to create a new color chip\n                ReturnItem = ColorValue()\n                ReturnItem.position = posx\n                #print self.getColorAtOffset(posx)\n                V = nuke.getColor(self.getColorAtOffset(posx))\n                if V:\n                    R = (255 & V >> 24) / 255.0\n                    G = (255 & V >> 16) / 255.0\n                    B = (255 & V >> 8) / 255.0\n                    A = (255 & V >> 0) / 255.0\n                    ReturnItem.color = QColor.fromRgbF(R, G, B, A)\n                self.colorList.append(ReturnItem)\n                self._update()\n                self.setSelection(ReturnItem)\n                return ReturnItem\n            else:\n                return False\n\n    def mousePressEvent(self, evt):\n        self.myTimer.start()\n        self.selectedHandle = self.getNearestHandle(max(0,min(1,(evt.x()-(self.widget_offset))/float(self.widget_width))),evt.y())\n        if not self.selectedHandle:\n            #We should not do anything...\n            pass\n        else:\n            pass\n\n    def mouseReleaseEvent(self,evt):\n        if not self.selectedHandle:\n            #We should not do anything...\n            pass\n        else:\n            self.colorNodeUpdate()\n\n    def mouseDoubleClickEvent(self, evt):\n        self.myTimer.start()\n        self.selectedHandle = self.getNearestHandle(max(0,min(1,(evt.x()-(self.widget_offset))/float(self.widget_width))),evt.y(),True)\n        if not self.selectedHandle:\n            #We should not do anything...\n            pass\n\n    def mouseMoveEvent(self, evt):\n        self.setstate = 1\n        if not self.selectedHandle:\n            pass\n        else:\n            nMilliseconds = self.myTimer.elapsed()\n            if nMilliseconds < 1:\n                pass\n            else:\n                self.selectedHandle.position = max(0,min(1,(evt.x()-(self.widget_offset))/float(self.widget_width)))\n                self._update()\n                self.myTimer.restart()\n\n    def colorNodeUpdate(self):\n        colorList = []\n        for item in self.colorList:\n            color = item.color.getRgbF()\n            colorList.append([color[0],color[1],color[2],color[3],item.position])\n        colorList = sorted(colorList, key=lambda x: x[-1], reverse=False)\n        setColorCurve(self.colorLookupNode,colorList,self.thisNode,self._parent)\n\n\nclass GradientLabel(QLabel):\n    masterSignal = QtCore.Signal(object)\n    def __init__(self, _gradient=\"\",name=\"\"):\n        super(GradientLabel, self).__init__()\n        self.setFixedHeight(30)\n        self.GradientData = _gradient\n        self.Name = name\n        self.colorList = []\n        self.ExtractColorData()\n\n    def mouseReleaseEvent(self, ev):\n        self.masterSignal.emit(self.GradientData)\n\n    def ExtractColorData(self):\n        colorlist = LoadCurveDataX(self.GradientData)\n        for item in colorlist:\n            ReturnItem = ColorValue()\n            ReturnItem.position = item[-1]\n            ReturnItem.color = QColor.fromRgbF(item[0], item[1], item[2], item[3])\n            self.colorList.append(ReturnItem)\n\n    def paintEvent(self, evt):\n        painter = QtGui.QPainter(self)\n        painter.setRenderHint(QtGui.QPainter.Antialiasing)\n        #painter.begin(self)\n        self.drawRectangles(painter)\n        #painter.end()\n\n    def drawRectangles(self, painter):\n        self.widget_offset = 0\n        self.widget_width = self.width()-(self.widget_offset*2)\n        self.widget_height = 28\n        self.widget_top = 0\n\n        gradient = QLinearGradient(self.widget_width+(self.widget_offset*2), 0, 0, 0)\n        for item in self.colorList:\n            gradient.setColorAt(1-item.position, item.color)\n        painter.setBrush(gradient)\n        painter.drawRect(self.widget_offset, self.widget_top, self.widget_width, self.widget_height)\n\n\n\nclass MyToolButton(QToolButton):\n    def __init__(self, *args):\n        super(MyToolButton, self).__init__(*args)\n\n    def eventFilter(self, menu, event):\n        if event.type() == QtCore.QEvent.MouseButtonRelease:\n            if self.underMouse():\n                menu.menu().close()\n                return True\n        return False\n\n\nclass Example(QWidget):\n    def __init__(self, parent=None,myNode=\"none\"):\n        global config\n        super(Example, self).__init__(parent)\n        self.setGeometry(900, 900, 800, 600)\n        #self.setWindowTitle('ColorBars')\n        self.baseNode = myNode\n        self.setMinimumHeight(160)\n        self.setMinimumWidth(200)\n\n        self.interpolationLabel = QLabel(\"Interpolation\")\n        self.interpolationMenu = QComboBox()\n        self.interpolationMenu.addItem(\"Constant\")\n        self.interpolationMenu.addItem(\"Linear\")\n        self.interpolationMenu.addItem(\"Smooth\")\n        self.interpolationMenu.addItem(\"Catmull-Rom\")\n        self.interpolationMenu.addItem(\"Cubic\")\n        self.interpolationMenu.addItem(\"Horizontal\")\n        self.interpolationMenu.setCurrentIndex(int(myNode['Interpolation'].getValue()))\n\n        self.presetMenu = MyToolButton()\n        self.presetMenu.setText(\"Gradient Presets  \")\n        self.menu = QMenu('Presets')  # Updated to use QMenu from QtWidgets\n\n        self.UpdatePresetList()\n        self.presetMenu.setMenu(self.menu)\n\n        self.presetMenu.installEventFilter(self.presetMenu)\n        self.gradientUI = GradientWidget(self, 138, 10,myNode)\n        self.hue = QSlider(Qt.Horizontal)\n        self.sat = QSlider(Qt.Horizontal)\n        self.lum = QSlider(Qt.Horizontal)\n        self.interpolationMenu.currentIndexChanged.connect(self.gradientUI.colorNodeUpdate)\n        self.hue.valueChanged.connect(self.sliderUpdate)\n        self.sat.valueChanged.connect(self.sliderUpdate)\n        self.lum.valueChanged.connect(self.sliderUpdate)\n        self.hue.setRange(0,255)\n        self.sat.setRange(0,255)\n        self.lum.setRange(0,255)\n\n        layout = QGridLayout() \n        sub_layout = QHBoxLayout()\n        dropdown_layout = QHBoxLayout()\n        dropdown_layout.addWidget(self.presetMenu)\n        dropdown_layout.addWidget(self.interpolationLabel)\n        dropdown_layout.addWidget(self.interpolationMenu)\n        dropdown_layout.addStretch()\n        layout.addLayout(dropdown_layout,0,0)\n        layout.addWidget(self.gradientUI,1,0)\n        layout.addLayout(sub_layout,2,0)\n        sub_layout.addWidget(self.hue)\n        sub_layout.addWidget(self.sat)\n        sub_layout.addWidget(self.lum)\n        #layout.setRowStretch(0,0)\n        self.setLayout(layout)\n        self.UpdateStylesheet()\n        self.show()\n\n    @QtCore.Slot(object)\n    def gradientClicked(self, values):\n        self.gradientUI.initCurve(False,values)\n\n    def addPreset(self):\n        saveTemplate(self.baseNode.node(\"ColorLookup1\")[\"lut\"].toScript())\n        self.UpdatePresetList()\n\n    def removePreset(self, section, preset_name):\n        # Remove the preset from the config\n        if config.has_section(section):\n            config.remove_option(section, preset_name)\n            # If the section is empty, remove the section\n            if not config.items(section):\n                config.remove_section(section)\n            # Write the updated config back to the file\n            with open(PresetsFile, 'w') as configfile:\n                config.write(configfile)\n        # Refresh the menu\n        self.UpdatePresetList()\n    \n    def UpdatePresetList(self):\n        for item in self.menu.actions():\n            self.menu.removeAction(item)\n        \n        #Read the presets. Look for all the sections\n        config.read(PresetsFile)\n        sections = config.sections()\n        for section in sections:\n            gradients = config.items(section)\n            submenu = QMenu(section)\n            submenu.setMinimumWidth(300)\n            self.menu.addMenu(submenu)\n            for gradient in gradients:\n                # Create a container widget for the gradient and the remove button\n                container = QWidget()\n                layout = QHBoxLayout(container)\n                layout.setContentsMargins(0, 0, 0, 0)  # Remove margins for compact alignment\n\n                # Create the gradient label\n                qle = GradientLabel(gradient[1], gradient[0])\n                qle.masterSignal.connect(self.gradientClicked)\n                layout.addWidget(qle)\n\n                # Create the \"Remove Preset\" button\n                removeButton = QPushButton(\"Remove\")\n                removeButton.setFixedSize(60, 25)  # Set a fixed size for the button\n                removeButton.clicked.connect(partial(self.removePreset, section, gradient[0]))\n                layout.addWidget(removeButton)\n\n                # Add the container widget to the submenu\n                wac = QWidgetAction(submenu)\n                wac.setDefaultWidget(container)\n                submenu.addAction(wac)\n\n        addAction = QAction('+ Add Preset', self)\n        addAction.triggered.connect(self.addPreset)\n        self.menu.addAction(addAction)\n        \n        # Close the dropdown menu\n        self.menu.close() #self.menu.update() #self.menu.repaint()\n\n    def updateSlider(self,_color):\n        self.hue.setValue(_color.hsvHueF()*255 )\n        self.sat.setValue(_color.hsvSaturationF()*255)\n        self.lum.setValue(_color.valueF()*255)\n\n    def sliderUpdate(self):\n        self.gradientUI.sliderUpdate(QColor.fromHsvF(self.hue.value()/255.0,self.sat.value()/255.0,self.lum.value()/255.0,1.0))\n\n    def updateValue(self):\n        pass\n\n    def UpdateStylesheet(self):\n        self.hue.setStyleSheet(self.hue.styleSheet()+\"\"\"QSlider::groove:horizontal {\n        border: 1px solid #999999;\n        height: 8px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */\n        background: qlineargradient(x1:0, y1:0, x2:1, y2:0,\n        stop: 0.000 rgb(255, 0, 0),\n        stop: 0.167 rgb(255, 255, 0),\n        stop: 0.333 rgb(0, 255, 0),\n        stop: 0.500 rgb(0, 255, 255),\n        stop: 0.667 rgb(0, 0, 255),\n        stop: 0.833 rgb(255, 0, 255),\n        stop: 1.0 rgb(255, 0, 0));\n        margin: 2px 0;\n        }\n        QSlider::handle:horizontal {\n            background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #5f5f5f);\n            border: 1px solid #008080;\n            width: 18px;\n            margin: -2px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */\n            border-radius: 3px;\n        }\"\"\")\n        self.sat.setStyleSheet(self.sat.styleSheet()+\"\"\"QSlider::groove:horizontal {\n        border: 1px solid #999999;\n        height: 8px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */\n        background: qlineargradient(x1:0, y1:0, x2:1, y2:0,\n        stop: 0.000 rgb(0, 0, 0),\n        stop: 1.0 rgb(255, 0, 0));\n        margin: 2px 0;\n        }\n        QSlider::handle:horizontal {\n            background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #5f5f5f);\n            border: 1px solid #008080;\n            width: 18px;\n            margin: -2px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */\n            border-radius: 3px;\n        }\"\"\")\n        self.lum.setStyleSheet(self.lum.styleSheet()+\"\"\"QSlider::groove:horizontal {\n        border: 1px solid #999999;\n        height: 8px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */\n        background: qlineargradient(x1:0, y1:0, x2:1, y2:0,\n        stop: 0.000 rgb(0, 0, 0),\n        stop: 1.0 rgb(255, 255, 255));\n        margin: 2px 0;\n        }\n        QSlider::handle:horizontal {\n            background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #5f5f5f);\n            border: 1px solid #008080;\n            width: 18px;\n            margin: -2px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */\n            border-radius: 3px;\n        }\"\"\")\n\n\nclass ColorWheelKnob_GRADIENT:\n    def __init__( self ):\n        self.instance = 0\n        return None\n\n    def makeUI( self ):\n        self.instance = Example(None,nuke.thisNode())\n        return self.instance\n\ndefined = 1\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/GradientPresets.cfg",
    "content": "[Fire]\nflatfire = master {}\n\tred {curve 0 x0.4897959232 0.7577935454 x1 1}\n\tgreen {curve 0 x0.4897959232 0.6538948653 x1 1}\n\tblue {curve 0 x0.4897959232 0.2382848859 x1 1}\n\talpha {curve 1 x0.4897959232 1 x1 1}\nsimplefire = master {}\n\tred {curve 0 x0.2925170064 1 x0.702947855 1 x1 1}\n\tgreen {curve 0 x0.2925170064 0.1137254902 x0.702947855 0.8196078431 x1 1}\n\tblue {curve 0 x0.2925170064 0.1137254902 x0.702947855 0.09803921569 x1 1}\n\talpha {curve 1 x0.2925170064 1 x0.702947855 1 x1 1}\nyellowfire = master {}\n\tred {curve 0 x0.4943310618 0.8039215686 x1 1}\n\tgreen {curve 0 x0.4943310618 0.4029297322 x1 0.8795605402}\n\tblue {curve 0 x0.4943310618 0.1607843137 x1 0.3176470588}\n\talpha {curve 1 x0.4943310618 1 x1 1}\nember = master {}\n\tred {curve 0 x0.1587301642 0.275288014 x0.1859410405 0.9960784314 x0.297052145 0.9960784314 x0.6417233348 0.7424887465 x1 0}\n\tgreen {curve 0 x0.1587301642 0.1388876173 x0.1859410405 0.2344090944 x0.297052145 0.7500419623 x0.6417233348 0.6943160143 x1 0}\n\tblue {curve 0 x0.1587301642 0.124711986 x0.1859410405 0 x0.297052145 0 x0.6417233348 0.5908445869 x1 0}\n\talpha {curve 1 x0.1587301642 1 x0.1859410405 1 x0.297052145 1 x0.6417233348 1 x1 1}\nashfire = master {}\n\tred {curve 0 x0.1352380961 0.1098039216 x0.2761904895 0.2235294118 x0.4609523714 0.4078431373 x0.6304761767 0.9098039216 x0.792380929 1 x1 1}\n\tgreen {curve 0 x0.1352380961 0.1098039216 x0.2761904895 0.2235294118 x0.4609523714 0.04798962387 x0.6304761767 0.3425345235 x0.792380929 0.8635233082 x1 0.9019455253}\n\tblue {curve 0 x0.1352380961 0.1098039216 x0.2761904895 0.2235294118 x0.4609523714 0 x0.6304761767 0 x0.792380929 0.3176470588 x1 0.6666666667}\n\talpha {curve 1 x0.1352380961 1 x0.2761904895 1 x0.4609523714 1 x0.6304761767 1 x0.792380929 1 x1 1}\n\n[Motion]\ndesign01 = master {}\n\tred {curve 0 x0.4965986311 0.662745098 x1 1}\n\tgreen {curve 0.4650186923 x0.4965986311 1 x1 0.8795605402}\n\tblue {curve 0.8235294118 x0.4965986311 0.8690928511 x1 0.3176470588}\n\talpha {curve 1 x0.4965986311 1 x1 1}\ndesign02 = master {}\n\tred {curve 0.9960784314 1}\n\tgreen {curve 0 0.8666666667}\n\tblue {curve 0.3750209812 0.3176470588}\n\talpha {curve 1 1}\ndesign03 = master {}\n\tred {curve 0.9960784314 0}\n\tgreen {curve 0 0}\n\tblue {curve 0.3750209812 0.3137254902}\n\talpha {curve 1 1}\ndesign04 = master {}\n\tred {curve 0 x0.4897959232 0 x1 0.2380407416}\n\tgreen {curve 0.7030594339 x0.4897959232 0 x1 0}\n\tblue {curve 0.9960784314 x0.4897959232 0.3137254902 x1 0.337254902}\n\talpha {curve 1 x0.4897959232 1 x1 1}\ndeepbpp = master {}\n\tred {curve 0 x0.2883549035 0.4 x0.6136783957 1 x1 1}\n\tgreen {curve 0.04373235676 x0.2883549035 0 x0.6136783957 0.3568627451 x1 0}\n\tblue {curve 0.3098039216 x0.2883549035 1 x0.6136783957 0.9772793164 x1 0.4}\n\talpha {curve 1 x0.2883549035 1 x0.6136783957 1 x1 1}\noceanic = master {}\n\tred {curve 0.2415655756 x0.2975970507 0.09945830472 x0.6728280783 1 x1 1}\n\tgreen {curve 0 x0.2975970507 0.8745098039 x0.6728280783 0.3568627451 x1 0.5646601053}\n\tblue {curve 0.6039215686 x0.2975970507 0.8106965743 x0.6728280783 0.3568627451 x1 0}\n\talpha {curve 1 x0.2975970507 1 x0.6728280783 1 x1 1}\npachific = master {}\n\tred {curve 0 0.04705882353}\n\tgreen {curve 0.8352941176 0.1710688945}\n\tblue {curve 0.4716563668 0.2666666667}\n\talpha {curve 1 1}\n\n[Basic]\nwhiteblack = master {}\n\tred {curve 1 0}\n\tgreen {curve 1 0}\n\tblue {curve 1 0}\n\talpha {curve 1 1}\nblackwhite = master {}\n\tred {curve 0 1}\n\tgreen {curve 0 1}\n\tblue {curve 0 1}\n\talpha {curve 1 1}\nbwb = master {}\n\tred {curve 0 x0.4739229083 0.9960784314 x1 0}\n\tgreen {curve 0 x0.4739229083 0.9960784314 x1 0}\n\tblue {curve 0 x0.4739229083 0.9960784314 x1 0}\n\talpha {curve 1 x0.4739229083 1 x1 1}\nwbw = master {}\n\tred {curve 0.9960784314 x0.537414968 0 x1 1}\n\tgreen {curve 0.9960784314 x0.537414968 0 x1 1}\n\tblue {curve 0.9960784314 x0.537414968 0 x1 1}\n\talpha {curve 1 x0.537414968 1 x1 1}\nspectrum = master {}\n\tred {curve 1 x0.2653061152 1 x0.5102040768 0.03529411765 x0.7732426524 0 x1 0}\n\tgreen {curve 0.1137254902 x0.2653061152 0.9686884871 x0.5102040768 1 x0.7732426524 0.9960784314 x1 0.04681467918}\n\tblue {curve 0.1137254902 x0.2653061152 0.1137254902 x0.5102040768 0.03529411765 x0.7732426524 0.9842984665 x1 0.9960784314}\n\talpha {curve 1 x0.2653061152 1 x0.5102040768 1 x0.7732426524 1 x1 1}\nrainbow = master {}\n\tred {curve 1 x0.1609977335 1 x0.3197278976 0.03529411765 x0.4739229083 0 x0.646258533 0 x0.8276643753 0.9374685283 x1 0.9960784314}\n\tgreen {curve 0.1137254902 x0.1609977335 0.9270313573 x0.3197278976 1 x0.4739229083 0.9960784314 x0.646258533 0.04681467918 x0.8276643753 0 x1 0}\n\tblue {curve 0.1137254902 x0.1609977335 0.1137254902 x0.3197278976 0.03529411765 x0.4739229083 0.9140611887 x0.646258533 0.9960784314 x0.8276643753 0.9960784314 x1 0}\n\talpha {curve 1 x0.1609977335 1 x0.3197278976 1 x0.4739229083 1 x0.646258533 1 x0.8276643753 1 x1 1}\nlightspectrum = master {}\n\tred {curve 0 x0.2176870704 0 x0.3650793731 0 x0.5215419531 0.03529411765 x0.6643990874 1 x0.8095238209 1 x1 0}\n\tgreen {curve 0 x0.2176870704 0.04681467918 x0.3650793731 0.9960784314 x0.5215419531 1 x0.6643990874 0.9294117647 x0.8095238209 0.1137254902 x1 0}\n\tblue {curve 0 x0.2176870704 0.9960784314 x0.3650793731 0.9140611887 x0.5215419531 0.03529411765 x0.6643990874 0.1137254902 x0.8095238209 0.1137254902 x1 0}\n\talpha {curve 1 x0.2176870704 1 x0.3650793731 1 x0.5215419531 1 x0.6643990874 1 x0.8095238209 1 x1 1}\ncenterchromatic = master {}\n\tred {curve 0 x0.1541950107 0 x0.3083900213 0.6470588235 x0.4671201706 1 x0.6598639488 1 x0.8253968358 1 x1 0}\n\tgreen {curve 0 x0.1541950107 0.04681467918 x0.3083900213 1 x0.4671201706 1 x0.6598639488 0.9399404898 x0.8253968358 0.1137254902 x1 0}\n\tblue {curve 0 x0.1541950107 0.9960784314 x0.3083900213 0.9709468223 x0.4671201706 1 x0.6598639488 0.2705882353 x0.8253968358 0.1137254902 x1 0}\n\talpha {curve 1 x0.1541950107 1 x0.3083900213 1 x0.4671201706 1 x0.6598639488 1 x0.8253968358 1 x1 1}\n\n[Horizon]\nhorizon01 = master {}\n\tred {curve 0 x0.1587301642 0.275288014 x0.1859410405 0.9960784314 x0.297052145 0.9960784314 x0.6575963497 0.58954757 x1 0}\n\tgreen {curve 0 x0.1587301642 0.1388876173 x0.1859410405 0.2344090944 x0.297052145 0.7500419623 x0.6575963497 0.7201953155 x1 0.2081483177}\n\tblue {curve 0 x0.1587301642 0.124711986 x0.1859410405 0 x0.297052145 0 x0.6575963497 0.7437857633 x1 0.368627451}\n\talpha {curve 1 x0.1587301642 1 x0.1859410405 1 x0.297052145 1 x0.6575963497 1 x1 1}\nhorizon02 = master {}\n\tred {curve 0 x0.1587301642 0.4252231632 x0.1859410405 1 x0.2993197143 1 x0.6575963497 0.58954757 x1 0}\n\tgreen {curve 0 x0.1587301642 0.2161287861 x0.1859410405 0.4782330053 x0.2993197143 0.8663309682 x0.6575963497 0.7201953155 x1 0.4030212863}\n\tblue {curve 0 x0.1587301642 0.1943846799 x0.1859410405 0.3176470588 x0.2993197143 0.4588235294 x0.6575963497 0.7437857633 x1 0.7137254902}\n\talpha {curve 1 x0.1587301642 1 x0.1859410405 1 x0.2993197143 1 x0.6575963497 1 x1 1}\nhorizon03 = master {}\n\tred {curve 0.2600595102 x0.1451247185 0.9261768521 x0.1836734712 1 x0.2993197143 1 x0.6575963497 0.8068360418 x1 0.1921568627}\n\tgreen {curve 0.3438010224 x0.1451247185 0.8467841611 x0.1836734712 0.7600976577 x0.2993197143 0.938002594 x0.6575963497 0.8683299001 x1 0.6483253223}\n\tblue {curve 0.4379797055 x0.1451247185 0.8385290303 x0.1836734712 0.6862745098 x0.2993197143 0.7490196078 x0.6575963497 0.879438468 x1 1}\n\talpha {curve 1 x0.1451247185 1 x0.1836734712 1 x0.2993197143 1 x0.6575963497 1 x1 1}\n\n[Plasma]\nplasma01 = master {}\n\tred {curve 0 x0.1315192729 0 x0.2766439915 0 x1 0.2222018769}\n\tgreen {curve 0 x0.1315192729 0 x0.2766439915 0.7030594339 x1 0}\n\tblue {curve 0 x0.1315192729 0.3137254902 x0.2766439915 0.9960784314 x1 0.337254902}\n\talpha {curve 1 x0.1315192729 1 x0.2766439915 1 x1 1}\nplasma02 = master {}\n\tred {curve 0 x0.15646258 0.968627451 x0.2857142985 1 x0.396825403 1 x0.5487528443 0.6817273213 x0.7505668998 0.1172045472 x0.8979591727 0.1055619135 x0.9977324009 0}\n\tgreen {curve 0 x0.15646258 0.9951934081 x0.2857142985 0.9183184558 x0.396825403 0.6481879912 x0.5487528443 0.07905699245 x0.7505668998 0 x0.8979591727 0 x0.9977324009 0}\n\tblue {curve 0 x0.15646258 1 x0.2857142985 0.537254902 x0.396825403 0.2705882353 x0.5487528443 0.1641412985 x0.7505668998 0.9960784314 x0.8979591727 0.2039215686 x0.9977324009 0}\n\talpha {curve 1 x0.15646258 1 x0.2857142985 1 x0.396825403 1 x0.5487528443 1 x0.7505668998 1 x0.8979591727 1 x0.9977324009 1}\n\n[Remapping]\nbluepeach = master {}\n\tred {curve 0 x0.1441774517 0.1072251469 x0.4750462174 0.7016861219 x0.76709795 1 x0.8853974342 1 x1 1}\n\tgreen {curve 0 x0.1441774517 0.2099488823 x0.4750462174 0.726115816 x0.76709795 0.7843289845 x0.8853974342 0.9210650797 x1 1}\n\tblue {curve 0 x0.1441774517 0.3254901961 x0.4750462174 0.7882352941 x0.76709795 0.6666666667 x0.8853974342 0.768627451 x1 1}\n\talpha {curve 1 x0.1441774517 1 x0.4750462174 1 x0.76709795 1 x0.8853974342 1 x1 1}\noldphoto = master {}\n\tred {curve 0 x0.2902033329 0.4078431373 x0.6173752546 0.7294117647 x1 1}\n\tgreen {curve 0 x0.2902033329 0.2546272984 x0.6173752546 0.5875944152 x1 1}\n\tblue {curve 0 x0.2902033329 0.1871213855 x0.6173752546 0.4834210727 x1 1}\n\talpha {curve 1 x0.2902033329 1 x0.6173752546 1 x1 1}\n\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_ID_Extractor.py",
    "content": "import nuke\nimport nukescripts\n\ndef set():\n\tn = nuke.thisNode()\n\tredName = n.knob('Red').value()\n\tgreenName = n.knob('Green').value()\n\tblueName = n.knob('Blue').value()\n\tnewName_list = [redName,greenName,blueName]\n\n\tfor node in n.dependent():\n\t    if node.Class() == 'Shuffle':\n\t        for newName in newName_list:\n\t            if newName != \"\":\n\t                matte = newName_list.index(newName) + 1\n\t                if node.knob('red').getValue() == matte and node.knob('green').getValue() == matte and node.knob('blue').getValue() == matte and node.knob('alpha').getValue() == matte:\n\t                    shuffle = nuke.toNode(node.name())\n\t                    shuffle.setName(newName)\n\t                    nextDep = node.dependent()\n\t                    \n\t                    for anchor in nextDep:\n\t                        if anchor.Class() == 'NoOp':\n\t                            if anchor.input(0).Class() == \"Shuffle\":\n\t                                if 'title' in anchor.knobs():\n\t                                    anchorTitle = anchor.knob('title')\n\t                                    if anchorTitle.value() != newName:\n\t                                        anchorTitle.setValue(newName)\n\n\ndef extractRed():\n\tn = nuke.thisNode()\n\tnxpos = n.xpos()\n\tnypos = n.ypos()\n\tchannelName = n['Red'].value()\n\tchannelNameNoSpace = channelName.replace(\" \", \"_\")\n\n\tif channelName != '':\n\t    n.end()\n\t    n.setSelected(True)\n\t    \n\t    dependents = n.dependent()\n\t    shuffles = []\n\t    for node in dependents:\n\t        if node.Class() == \"Shuffle\":\n\t            shuffles.append(node)\n\t            \n\t    shuffleNames = []\n\t    for shuffle in shuffles:\n\t        shuffleNames.append(shuffle.name())\n\n\t    if channelNameNoSpace not in shuffleNames:\n\t        s = nuke.nodes.Shuffle(name=channelNameNoSpace)\n\t        s.setXYpos(int(nxpos-100),int(nypos+110))\n\t        s.autoplace()\n\t        s.setInput(0,n)##################\n\t        matte = 1\n\t        s['tile_color'].setValue(2466250752)\n\t        s['red'].setValue(matte)\n\t        s['green'].setValue(matte)\n\t        s['blue'].setValue(matte)\n\t        s['alpha'].setValue(matte)\n\t        s['note_font_size'].setValue(12)\n\t        s['note_font_color'].setValue(4294967040)\n\t        \n\t        try:\n\t            import stamps\n\t            n.setSelected(False)\n\t            s.setSelected(True)\n\t            \n\t            stamps.anchor(title = channelName, tags = \"ID\", input_node = \"\", node_type = \"2D\")\n\t            \n\t        except:\n\t            pass\n\t     \n\tnukescripts.clear_selection_recursive()\n\tn.setSelected(True)\n\ndef extractGreen():\n\tn = nuke.thisNode()\n\tnxpos = n.xpos()\n\tnypos = n.ypos()\n\tchannelName = n['Green'].value()\n\tchannelNameNoSpace = channelName.replace(\" \", \"_\")\n\n\tif channelName != '':\n\t    n.end()\n\t    n.setSelected(True)\n\t    \n\t    dependents = n.dependent()\n\t    shuffles = []\n\t    for node in dependents:\n\t        if node.Class() == \"Shuffle\":\n\t            shuffles.append(node)\n\t            \n\t    shuffleNames = []\n\t    for shuffle in shuffles:\n\t        shuffleNames.append(shuffle.name())\n\n\t    if channelNameNoSpace not in shuffleNames:\n\t        s = nuke.nodes.Shuffle(name=channelNameNoSpace)\n\t        s.setXYpos(int(nxpos),int(nypos+110))\n\t        s.autoplace()\n\t        s.setInput(0,n)##################\n\t        matte = 2\n\t        s['tile_color'].setValue(1063467008)\n\t        s['red'].setValue(matte)\n\t        s['green'].setValue(matte)\n\t        s['blue'].setValue(matte)\n\t        s['alpha'].setValue(matte)\n\t        s['note_font_size'].setValue(12)\n\t        s['note_font_color'].setValue(4294967040)\n\t        \n\t        try:\n\t            import stamps\n\t            n.setSelected(False)\n\t            s.setSelected(True)\n\t            \n\t            stamps.anchor(title = channelName, tags = \"ID\", input_node = \"\", node_type = \"2D\")\n\t            \n\t        except:\n\t            pass\n\t     \n\tnukescripts.clear_selection_recursive()\n\tn.setSelected(True)\n\ndef extractBlue():\n\tn = nuke.thisNode()\n\tnxpos = n.xpos()\n\tnypos = n.ypos()\n\tchannelName = n['Blue'].value()\n\tchannelNameNoSpace = channelName.replace(\" \", \"_\")\n\n\tif channelName != '':\n\t    n.end()\n\t    n.setSelected(True)\n\t    \n\t    dependents = n.dependent()\n\t    shuffles = []\n\t    for node in dependents:\n\t        if node.Class() == \"Shuffle\":\n\t            shuffles.append(node)\n\t            \n\t    shuffleNames = []\n\t    for shuffle in shuffles:\n\t        shuffleNames.append(shuffle.name())\n\n\t    if channelNameNoSpace not in shuffleNames:\n\t        s = nuke.nodes.Shuffle(name=channelNameNoSpace)\n\t        s.setXYpos(int(nxpos+100),int(nypos+110))\n\t        s.autoplace()\n\t        s.setInput(0,n)##################\n\t        matte = 3\n\t        s['tile_color'].setValue(1027575296)\n\t        s['red'].setValue(matte)\n\t        s['green'].setValue(matte)\n\t        s['blue'].setValue(matte)\n\t        s['alpha'].setValue(matte)\n\t        s['note_font_size'].setValue(12)\n\t        s['note_font_color'].setValue(4294967040)\n\t        \n\t        try:\n\t            import stamps\n\t            n.setSelected(False)\n\t            s.setSelected(True)\n\t            \n\t            stamps.anchor(title = channelName, tags = \"ID\", input_node = \"\", node_type = \"2D\")\n\t            \n\t        except:\n\t            pass\n\n\tnukescripts.clear_selection_recursive()\n\tn.setSelected(True)\n\ndef extractAll():\n\tn = nuke.thisNode()\n\tred = n.knob('Red')\n\tredName = red.value()\n\tgreen = n.knob('Green')\n\tgreenName = green.value()\n\tblue = n.knob('Blue')\n\tblueName = blue.value()\n\n\tif redName != \"\" and greenName != \"\" and blueName != \"\":\n\t    dependents = n.dependent()\n\t    shuffles = []\n\t    for node in dependents:\n\t        if node.Class() == \"Shuffle\":\n\t            shuffles.append(node)\n\t            \n\t    shuffleNames = []\n\t    for shuffle in shuffles:\n\t        shuffleNames.append(shuffle.name())\n\t    \n\t    if redName != \"\":\n\t        if redName.replace(\" \", \"_\") not in shuffleNames:\n\t            n.knob(\"extractRed\").execute()\n\t    if greenName != \"\":\n\t        if greenName.replace(\" \", \"_\") not in shuffleNames:\n\t            n.knob(\"extractGreen\").execute()\n\t    if blue.value() != \"\":\n\t        if blueName.replace(\" \", \"_\") not in shuffleNames:\n\t            n.knob(\"extractBlue\").execute()\n\t    \n\t    nukescripts.clear_selection_recursive()\n\t    n.setSelected(True)\n\ndef reset():\n\tn = nuke.thisNode()\n\tn.knob('Red').setValue('')\n\tn.knob('Green').setValue('')\n\tn.knob('Blue').setValue('')\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_VectorTracker.py",
    "content": "'''\nVectorTracker v1.0 by Jorrit Schulte\n\nAdd this to menu.py:\nnuke.load('VectorTracker.py')\nnuke.menu(\"Nodes\").addCommand('user/VectorTracker', \"nuke.createNode('VectorTracker.gizmo')\")\n'''\n\ndef allScriptNodes():\n    #collect all nodes in the root node graph\n    nodes = nuke.allNodes()\n    groups = [node for node in nodes if node.Class() == 'Group' ]\n\n    #first collect groups inside groups\n    for group in groups:\n        for i in group.nodes():\n            if i.Class() == 'Group':\n                groups.append(i)\n    #then append nodes inside groups to the nodes list\n    for group in groups:\n        for node in group.nodes():\n            nodes.append(node)\n    #return all nodes on all levels\n    return nodes\n\ndef J_VTT_Track(first, last, pb = True):\n    node = nuke.thisNode()\n    vectors = node.input(1)\n\n    #bool to check track direction\n    forward = last > first\n\n    #get number of frames\n    totalFrames = int(max(first, last) - min(first, last))\n\n    #check vector type\n    if vectors is not None:\n        layers = list( set([channel.split('.')[0] for channel in vectors.channels()]) )\n    else:\n        layers = []\n\n    if 'smartvector' in layers:\n        if forward:\n            u = 'smartvector.fn1vp0_u'\n            v = 'smartvector.fn1vp0_v'\n        else:\n            u = 'smartvector.fp1vp0_u'\n            v = 'smartvector.fp1vp0_v'\n        run = True\n    elif 'forward' in layers and forward:\n        u = 'forward.u'\n        v = 'forward.v'\n        run = True\n    elif 'backward' in layers and not forward:\n        u = 'backward.u'\n        v = 'backward.v'\n        run = True\n    else:\n        run = False\n\n    #check if there are vectors\n    if run:\n        #collect existing trackers\n        trackers = [i.name() for i in node.allKnobs() if i.Class() == 'XY_Knob' and 'tracker' in i.name()]\n        #remove inactive trackers\n        trackers = [i for i in trackers if node['enable_' + i].value()]\n\n        #lists where tracker position data get stored\n        xpos = []\n        ypos = []\n        xsize = []\n        ysize = []\n        for tracker in trackers:\n            #Append initial positions\n            trackerVal = node[tracker].valueAt(first)\n            xpos.append(trackerVal[0])\n            ypos.append(trackerVal[1])\n            #append sample area sizes\n            xsize.append(node['sampleArea_'+tracker].value(0))\n            ysize.append(node['sampleArea_'+tracker].value(1))\n\n            #make tracker knobs keyable\n            node[tracker].setAnimated()\n\n        #set frame list\n        if forward:\n            rangeList = range(first, last+1)\n        else:\n            rangeList = reversed(range(last, first+1))\n\n        #set up pogress window\n        if pb:\n            task = nuke.ProgressTask(\"VectorTracker\")\n            count = 0\n\n        #cycle through frames\n        for frame in rangeList:\n\n            #stop tracking if process is cancelled\n            if pb:\n                if task.isCancelled():\n                    break\n\n            #update process window\n            if frame != last and pb:\n                count += 1\n                task.setMessage(\"sampling frame \" + str(frame) + ' (frame ' + str(count) +' of ' + str(totalFrames) + ')')\n                task.setProgress(count*100/totalFrames)\n\n            #execute for each tracker\n            for i, tracker in enumerate(trackers):\n                #get current position from list\n                curx = xpos[i]\n                cury = ypos[i]\n\n                #set keyframe\n                node[tracker].animations()[0].setKey(frame, curx)\n                node[tracker].animations()[1].setKey(frame, cury)\n\n                if frame != last:\n                    #sample vectors\n                    x = vectors.sample(u, curx+.5, cury+.5, xsize[i],ysize[i], frame)\n                    y = vectors.sample(v, curx+.5, cury+.5, xsize[i],ysize[i], frame)\n\n                    #set new position\n                    xpos[i] = curx + x\n                    ypos[i] = cury + y\n\n            #jump to frame\n            nuke.frame(frame)\n        if pb:\n            del task\n    #message when there is no vector data\n    else:\n        nuke.message('No vectors found!')\n\ndef J_VTT_AddTracker():\n    node = nuke.thisNode()\n\n    trackerCount = int(node['count'].value() + 1)\n    node['count'].setValue(trackerCount)\n\n    name = 'tracker' + str(trackerCount)\n\n    #enable knob\n    enableKnob = nuke.nuke.Boolean_Knob('enable_' + name, '')\n    enableKnob.setValue(True)\n    enableKnob.setFlag(nuke.STARTLINE)\n    enableKnob.setTooltip('Enable this tracker for tracking')\n    node.addKnob( enableKnob )\n\n    #position knob\n    posKnob = nuke.nuke.XY_Knob(name, name)\n    posKnob.clearFlag(nuke.STARTLINE)\n    node.addKnob( posKnob )\n\n    #area size knob\n    areaKnob = nuke.nuke.WH_Knob('sampleArea_' + name, 'area')\n    areaKnob.setValue(1)\n    areaKnob.setRange(1,50)\n    areaKnob.clearFlag(nuke.STARTLINE)\n    areaKnob.clearFlag(0x00000004) #clear LOG_SLIDER flag\n    areaKnob.setFlag(0x00000010) #set FORCE_RANGE flag\n    areaKnob.setTooltip('Size of the area that will get sampled in the vector channels')\n    node.addKnob( areaKnob )\n\n    #remove knob\n    removeKnob = nuke.PyScript_Knob('remove_' + name, '@ColorMult', \"node = nuke.thisNode()\\nname = '\" + name + \"'\\n\\nknobs = ['', 'sampleArea_', 'enable_', 'remove_' ]\\n\\nfor i in knobs:\\n    try:\\n        node.removeKnob(node.knobs()[i + name])\\n    except:\\n        pass\")\n    removeKnob.setTooltip('Remove this tracker')\n    node.addKnob( removeKnob )\n\ndef J_VTT_Export():\n    node = nuke.thisNode()\n\n    #deselect nodes\n    an = allScriptNodes()\n    selnodes = [i for i in an if i['selected'].value()]\n    for snode in selnodes:\n        snode['selected'].setValue(False)\n    #select VectorTracker node\n    node['selected'].setValue(True)\n\n    #find group name if node is in group\n    fnn = node.fullName().split('.')\n    groupName = 'root.'\n    for i in range(len(fnn)-1):\n        groupName += fnn[i] + '.'\n    #get parent\n    if groupName != 'root.':\n        parent = nuke.toNode(groupName[:-1])\n    else:\n        parent = nuke.root()\n\n    #create node in parent root\n    with parent:\n        #create tracker node\n        trackerNode = nuke.nodes.Tracker4()\n        trackerNode['xpos'].setValue(node['xpos'].value()+100)\n        trackerNode['ypos'].setValue(node['ypos'].value()+50)\n        trackerNode.showControlPanel()\n\n        #define tracks container knob\n        container = trackerNode['tracks']\n\n        #collect existing trackers\n        trackers = [i.name() for i in node.allKnobs() if i.Class() == 'XY_Knob' and 'tracker' in i.name()]\n\n        #copy keyframes for each tracker\n        for i, tracker in enumerate(trackers):\n            #add tracker to container\n            trackerNode['add_track'].execute()\n\n            #remove auto made keys\n            for inx in [0,2,3,4,5,9]:\n                container.removeKey(i*31 + inx)\n            container.setValue(False, i*31 + 6)\n\n            #define some stuff\n            trackerKnob = node[tracker].value()\n            tracker = node[tracker]\n\n            #set keys for x and y curves\n            for curve in [0,1]:\n                animcheck = tracker.animation(0+curve) is not None\n\n                #set value if there is no animation\n                if not animcheck:\n                    container.setValue(trackerKnob[0+curve], i*31 + 2+curve)\n\n                #if there are keyframes on original tracker knob\n                if animcheck:\n                    #set x y knobs animated\n                    container.setAnimated(i*31 + 2+curve)\n\n                    #find frame numbers of first and last keyframe\n                    keys = tracker.animation(0+curve).keys()\n                    first = int(keys[0].x)\n                    last = int(keys[len(keys)-1].x)\n\n                    #set value at each frame\n                    framerange = range(first, last+1)\n                    for frame in framerange:\n                        #check if current frame is tracked before setting key\n                        if tracker.isKeyAt(frame):\n                            pos = tracker.getValueAt(frame)\n                            #set key\n                            container.setValueAt(pos[0+curve],frame,i*31+2+curve)\n\n                    #remove key at frame 0 if not used\n                    if 0 not in framerange:\n                        container.removeKeyAt(0,i*31 + 2+curve)\n\n        #reselect nodes\n        trackerNode['selected'].setValue(False)\n        for snode in selnodes:\n            snode['selected'].setValue(True)\n        #deselect VectorTracker node\n        if node not in selnodes:\n            node['selected'].setValue(False)\n\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_cardToTrack.py",
    "content": "import nuke\n\ndef setRefFrame():\n    n = nuke.thisGroup()\n    n.begin()\n    nuke.toNode(\"Switch1\")['disable'].setValue(0)\n    nuke.toNode(\"ScanlineRender1\")['disable'].setValue(0)\n    nuke.toNode(\"StabFrameHold\")['first_frame'].setValue(n['refFrame'].value())\n\n    if n['S'].value() == 1:\n        n['Stabilize'].execute()\n        n = a.input(1) \n    ss = n.input(1)\n    n.end()       \n    topnode_name = nuke.tcl(\"full_name [topnode %s]\" % ss.name()) \n    cam = nuke.toNode(topnode_name)\n    cam['near'].clearAnimated()\n    cam['far'].clearAnimated()\n    cam['near'].setValue(0.01)\n    cam['far'].setValue(10000)\n\n    ss=n['scene'].value()\n    n.begin()\n\n    nuke.toNode(\"NoOp1\")['pick'].execute()\n    n['refFrame'].setValue(nuke.frame())\n    nuke.toNode(\"Switch\")['which'].setValue(0)\n\n    r=nuke.toNode(\"Perspective\")\n    r.setSelected(False)\n    r.hideControlPanel()\n    r['rotate'].setValue(0)\n    r['translate'].setValue(0)\n    r['scaling'].setValue(1)\n    r['uniform_scale'].setValue(ss)\n    n.end()\n        \n    if n['extraHelper'].value() in [0,1,2]:\n        n['findZ'].clearFlag(1)\n        n['happyGroup'].setFlag(1)\n        n['goGroup'].setFlag(1)\n    if n['extraHelper'].value() in [1,2,5]:\n        n['Adjust'].execute()\n\ndef stabilize():\n    node = nuke.thisGroup() \n    t = node['S']\n    h = node['HighPass']\n\n    if t.value() == 0:\n       nuke.thisKnob().setLabel('<font color=\"Red\"><b>Stabilized')\n       t.setValue(1)\n       nuke.toNode(\"StabFrameHold\")['disable'].setValue(0)\n       nuke.toNode(\"StabFrameHold\")['first_frame'].setValue(node['refFrame'].value())\n       nuke.toNode(\"StabRef\")['first_frame'].setValue(node['refFrame'].value())\n       nuke.toNode(\"StabSwitch\")['disable'].setValue(0)\n    else:\n       nuke.thisKnob().setLabel('Stabilize')\n       t.setValue(0)\n       h.setValue(0)\n       nuke.toNode(\"StabFrameHold\")['disable'].setValue(1)\n       nuke.toNode(\"StabSwitch\")['disable'].setValue(1)\n\ndef consolidateAnimatedNodeTransforms():\n    # This is based on Ivan B's consolidateNodeTransforms().\n    # Added support for animated Axis/Camera nodes. Also, if it's\n    # a Camera being concatenated, then projection settings get copied.\n    # -Ean C 24/Feb/2011\n    import math\n    import nuke\n    axisNode = nuke.toNode('Z_finder')\n    m = nuke.math.Matrix4()\n\n    nuke.toNode(\"Switch\")['which'].setValue(1)\n    n = nuke.toNode('Perspective')\n    n['scaling'].setExpression('curve')\n    n['rotate'].setExpression('curve')\n    n['translate'].setExpression('curve')\n\n    first_frame_v = nuke.root()['first_frame'].value()\n    last_frame_v = nuke.root()['last_frame'].value()\n    scale_anim = n['scaling'].animations()\n    rotate_anim = n['rotate'].animations()\n    translate_anim = n['translate'].animations()\n\n    for i in range(int(first_frame_v), int(last_frame_v+1)):\n        k = axisNode['world_matrix']\n        k_time_aware = axisNode['world_matrix'].getValueAt(i)\n        for y in range(k.height()):\n            for x in range(k.width()):\n                m[x+(y*k.width())] = k_time_aware[y + k.width()*x]\n            transM =nuke.math.Matrix4(m)\n            transM.translationOnly()\n            rotM = nuke.math.Matrix4(m)\n            rotM.rotationOnly()\n            scaleM = nuke.math.Matrix4(m)\n            scaleM.scaleOnly()\n            scale = (scaleM.xAxis().x, scaleM.yAxis().y, scaleM.zAxis().z)\n            rot = rotM.rotationsZXY()\n            rotDegrees = ( math.degrees(rot[0]), math.degrees(rot[1]), math.degrees(rot[2]) )\n            trans = (transM[12], transM[13], transM[14])\n\n            for s in range(3):\n                scale_anim[s].setKey(i, scale[s])\n                rotate_anim[s].setKey(i, rotDegrees[s])\n                translate_anim[s].setKey(i, trans[s])\n    n['translate'].clearAnimated()\n    n['rotate'].clearAnimated()\n    n['scaling'].clearAnimated()\n    n['uniform_scale'].setValue(nuke.toNode(\"Card1\")['uniform_scale'].value())\n    #nuke.show((n), True)\n    n.setSelected(True)\n    r=nuke.toNode(\"look_at_Axis\")\n    r.setSelected(False)\n    r.hideControlPanel()            \n\ndef happy():\n    consolidateAnimatedNodeTransforms()\n    a=nuke.thisNode()\n    if a['S'].value() == 1:\n        a['Stabilize'].execute()\n\n    n=a\n    if n['extraHelper'].value() in [0,1,2,5]:\n        n['findZ'].setFlag(1)\n        n['happyGroup'].clearFlag(1)\n        n['goGroup'].clearFlag(1)\n\ndef go():\n    import nuke\n    axisCase = 0\n    a=nuke.thisNode()\n    C2Tgroup = nuke.thisNode()\n\n    #check if camera has animation and if yes collect first and last frame of it\n    with nuke.Root():\n        try:\n            n = a.input(1)\n            topnode_name = nuke.tcl(\"full_name [topnode %s]\" % n.name()) \n            topnode = nuke.toNode(topnode_name)\n            n = topnode\n            f,l=[],[]\n            print (topnode.name())\n            tr = n['translate'].getKeyList()\n            first_frame_v = min(tr)\n            last_frame_v = max(tr)\n        except:\n            first_frame_v = int(nuke.toNode('root')['first_frame'].value())\n            last_frame_v = int(nuke.toNode('root')['last_frame'].value())\n\n\n        if a['S'].value() == 1:   \n            a['Stabilize'].execute()\n\n\n\n    a.begin()\n    x=int(a['xpos'].value())\n    y=int(a['ypos'].value())\n    p = nuke.toNode(\"Perspective\")\n    t=p['translate'].value()\n    r=p['rotate'].value()\n    s=p['scaling'].value()\n    us=p['uniform_scale'].value()\n    nuke.toNode(\"Switch\")['which'].setValue(1)\n    a.end()\n\n\n    for node in nuke.allNodes():\n        node.setSelected(False)\n    try:    \n        a.input(1).setSelected(True)\n    except:\n        nuke.message(\"please connect your Camera\")\n    try:\n        a.input(0).setSelected(True)\n    except:\n        nuke.message(\"please connect your footage to BG input\")\n\n    #Card case\n    if a['extraHelper'].value()==3:\n        crd = a.input(2)\n        crd.setSelected(True)\n        crd.setXYpos(x,y+50)\n        axisCase = 2\n        \n    #Axises case\n    elif a['extraHelper'].value()==4:\n        axisCase = 1\n        \n        import math\n        import nuke\n        \n        axisNode = a.input(2)\n        nuke.thisGroup().end()\n        m = nuke.math.Matrix4()\n        n = nuke.nodes.Card2()\n        n['scaling'].setExpression('curve')\n        n['rotate'].setExpression('curve')\n        n['translate'].setExpression('curve')\n        n['name'].setValue(\"consolidate of \"+axisNode.name())\n        n['xpos'].setValue(int(x))\n        n['ypos'].setValue(int(y+50))\n        scale_anim = n['scaling'].animations()\n        rotate_anim = n['rotate'].animations()\n        translate_anim = n['translate'].animations()\n        \n        for i in range(int(first_frame_v), int(last_frame_v+1)):\n            k = axisNode['world_matrix']\n            k_time_aware = axisNode['world_matrix'].getValueAt(i)\n            for y in range(k.height()):\n                for x in range(k.width()):\n                    m[x+(y*k.width())] = k_time_aware[y + k.width()*x]\n        \n                transM =nuke.math.Matrix4(m)\n                transM.translationOnly()\n                rotM = nuke.math.Matrix4(m)\n                rotM.rotationOnly()\n                scaleM = nuke.math.Matrix4(m)\n                scaleM.scaleOnly()\n                scale = (scaleM.xAxis().x, scaleM.yAxis().y, scaleM.zAxis().z)\n                rot = rotM.rotationsZXY()\n                rotDegrees = ( math.degrees(rot[0]), math.degrees(rot[1]), math.degrees(rot[2]) )\n                trans = (transM[12], transM[13], transM[14])\n                for s in range(3):\n                    scale_anim[s].setKey(i, scale[s])\n                    rotate_anim[s].setKey(i, rotDegrees[s])\n                    translate_anim[s].setKey(i, trans[s])\n        a.input(1).setSelected(True)\n        a.input(0).setSelected(True) \n        n.setSelected(True)\n        a.setInput(2,n)\n                \n    #Deep input case         \n    else:\n        n = nuke.nodes.Card2()\n        n.setXYpos(x,y+100)\n        n['translate'].setValue(t)\n        n['rotate'].setValue(r)\n        n['scaling'].setValue(s)\n        n['uniform_scale'].setValue(us)\n        n.setSelected(True)\n\n    with nuke.Root():\n        try:\n            import thread, threading, time, nuke, math, nukescripts\n        except:\n            import _thread, threading, time, nuke, math, nukescripts\n        def execRC(first,last):\n            runMe = True\n            while runMe == True:\n                nuke.execute('r1',first,last)  \n                nuke.execute('r2',first,last) \n                nuke.execute('r3',first,last) \n                nuke.execute('r4',first,last) \n                stop_event.set()\n                runMe = False\n                break\n\n        def getCamera():\n            n = a.input(1) \n            topnode_name = nuke.tcl(\"full_name [topnode %s]\" % n.name()) \n            topnode = nuke.toNode(topnode_name)\n            cam = topnode\n            return cam\n\n        def BGdetect():\n            for n in nuke.selectedNodes():\n                if 'xform_order' not in n.knobs():\n                    Name = n.name()\n                    Width = n.width()\n                    Height = n.height()\n                    Aspect = n.pixelAspect()\n                    form = str(Width)+\" \"+str(Height)+\" \"+str(Aspect)\n                    bg = nuke.nodes.Constant(postage_stamp = False)\n                    bg['format'].setValue(nuke.addFormat(form))\n                    return bg\n\n        def C2T(dialog):\n\n\n            #card\n            card = None\n            for n in nuke.selectedNodes():\n                if \"Card\" in n.Class() or \"Axis\" in n.Class():\n                    card = n\n                    break\n            if card == None:\n                nuke.message('no card selected?')\n                return\n\n            # initialize tool values for auto-creation\n            label = card['label'].value()\n            ref = int(nuke.frame())\n            first = first_frame_v\n            last = last_frame_v\n            bg = BGdetect() \n            cam = getCamera()\n            rootAspect = nuke.Root()['format'].value().pixelAspect()\n            x = card.xpos() \n            y = card.ypos()\n            \n            bg.setXYpos(x,y+50)\n            \n            if dialog == True:\n                #panel\n                panel = nuke.Panel(\"C2T\")\n                panel.addSingleLineInput(\"label:\", card['label'].value())\n                panel.addSingleLineInput(\"firstFrame:\", str(first))\n                panel.addSingleLineInput(\"lastFrame:\", str(last))\n                panel.addSingleLineInput(\"ref frame:\", str(ref))\n                if panel.show():\n                    first = int(panel.value(\"firstFrame:\"))\n                    last = int(panel.value(\"lastFrame:\"))\n                    ref = int(panel.value(\"ref frame:\"))\n                    if ref>last or ref<first:\n                        ref = first\n                    label = panel.value(\"label:\")\n\n                else:\n                    nuke.message('canceled')\n                    nuke.delete(bg) # clean the mess up\n                    return\n            else:\n                print ('no dialog, use auto-created input values')\n            \n\n            # create master axis and corner slaves\n            \n            aM = nuke.nodes.Axis2(name = 'aM', xform_order = 3, xpos = x, ypos = y+50)\n            uscale = card['uniform_scale'].value()\n            scalex = card['scaling'].value(0)\n            scaley = card['scaling'].value(1)\n            \n            if card['translate'].isAnimated() is True:\n                aM['translate'].copyAnimations(card['translate'].animations())\n            else:\n                aM['translate'].setValue(card['translate'].value())\n            \n            if card['rotate'].isAnimated() is True:\n                aM['rotate'].copyAnimations(card['rotate'].animations())\n            else:\n                aM['rotate'].setValue(card['rotate'].value())\n                \n                \n            # slaves\n            a1 = nuke.nodes.Axis2(name = 'a1', xform_order = 1, xpos = x, ypos = y+50)\n            a2 = nuke.nodes.Axis2(name = 'a2', xform_order = 1, xpos = x, ypos = y+50)\n            a3 = nuke.nodes.Axis2(name = 'a3', xform_order = 1, xpos = x, ypos = y+50)\n            a4 = nuke.nodes.Axis2(name = 'a4', xform_order = 1, xpos = x, ypos = y+50)\n            \n            a1['translate'].setValue([-0.5*uscale*scalex,rootAspect*-0.5*uscale*scaley,0])\n            a2['translate'].setValue([0.5*uscale*scalex,rootAspect*-0.5*uscale*scaley,0])\n            a3['translate'].setValue([0.5*uscale*scalex,rootAspect*0.5*uscale*scaley,0])\n            a4['translate'].setValue([-0.5*uscale*scalex,rootAspect*0.5*uscale*scaley,0])\n            \n            aL = [a1,a2,a3,a4]\n            \n            for a in aL:\n                a.setInput(0,aM)\n\n            # reconcile\n            r1 = nuke.nodes.Reconcile3D(name = 'r1', xpos = x, ypos = y+50)\n            r2 = nuke.nodes.Reconcile3D(name = 'r2', xpos = x, ypos = y+50)\n            r3 = nuke.nodes.Reconcile3D(name = 'r3', xpos = x, ypos = y+50)\n            r4 = nuke.nodes.Reconcile3D(name = 'r4', xpos = x, ypos = y+50)\n            \n            rL = [r1,r2,r3,r4]\n            \n            for r in rL:\n                r.setInput(2,aL[rL.index(r)])\n                r.setInput(1,cam)\n                r.setInput(0,bg)\n                \n            # run with threading\n            global stop_event \n            stop_event = threading.Event()\n            threading.Thread(target=execRC, kwargs=dict(first=first,last=last)).start() \n            while not stop_event.is_set():\n                time.sleep(0.1)\n\n            problem = 0\n\n\n            import math\n            timeline = [\"beginning\",\"end\"]#######looping to fix stuff before and after ref frame\n            for side in timeline:##########################################################################################################: Fixing the curve###############################\n                if side == \"beginning\":\n                    firstT = first\n                    lastT = ref\n                if side == \"end\":\n                    firstT = ref\n                    lastT = last\n\n                for one in rL:########fixing stuff\n                    curveXUp = 0\n                    curveXDown = 0\n                    curveYUp = 0\n                    curveYDown = 0\n                    fuckedFrames = []\n                    k = one[\"output\"]\n                    valsx = [];valSortx =[]\n                    valsy = [];valSorty =[]\n                    for i in range(firstT,lastT+1):\n                        valsx.append(k.valueAt(i,0))\n                        valSortx.append(k.valueAt(i,0))\n                        valsy.append(k.valueAt(i,1))\n                        valSorty.append(k.valueAt(i,1))\n                    valSortx.sort()\n                    valSorty.sort()\n                    minX = valSortx[0]\n                    maxX = valSortx[-1]\n                    minY = valSorty[0]\n                    maxY = valSorty[-1]\n                    if math.fabs(valsx.index(maxX)-valsx.index(minX)) == 1:\n                        problem = 1\n            if problem == 1:\n                if nuke.ask(\"Perspective problem detected! would you like to fix it? \\n your card did pass the Camera center, this causes the track to break, i will try to fix the problem. if my fix will not succeed you should use a bit smaller card so corners of the card will not cross the camera so fast.\"):\n                    problem = 0\n                    import math\n                    timeline = [\"beginning\",\"end\"]#######looping to fix stuff before and after ref frame\n                    lastB = last\n                    firstB = first\n                    for side in timeline:##########################################################################################################: Fixing the curve###############################\n                        if side == \"beginning\":\n                            last = ref\n                        if side == \"end\":\n                            first = ref\n                            last = lastB\n\n                        for one in rL:########fixing stuff\n                            curveXUp = 0\n                            curveXDown = 0\n                            curveYUp = 0\n                            curveYDown = 0\n                            fuckedFrames = []\n                            k = one[\"output\"]\n                            valsx = [];valSortx =[]\n                            valsy = [];valSorty =[]\n                            for i in range(first,last+1):\n                                valsx.append(k.valueAt(i,0))\n                                valSortx.append(k.valueAt(i,0))\n                                valsy.append(k.valueAt(i,1))\n                                valSorty.append(k.valueAt(i,1))\n                            valSortx.sort()\n                            valSorty.sort()\n                            minX = valSortx[0]\n                            maxX = valSortx[-1]\n                            minY = valSorty[0]\n                            maxY = valSorty[-1]\n                            if math.fabs(valsx.index(maxX)-valsx.index(minX)) == 1:\n                                problem = 1\n                                if valsx.index(maxX)-valsx.index(minX) < 0:    ###############checking if the curve going up or down\n                                    curveXUp = 1\n                                else:\n                                    curveXDown = 1\n                                if valsy.index(maxY)-valsy.index(minY) < 0:    ###############checking if the curve going up or down\n                                    curveYUp = 1\n                                else:\n                                    curveYDown = 1\n                                if valsx.index(maxX)+first > ref:                                  ##### kill tail X\n                                    if curveXDown == 1: ##### curve X is going down####################################################################################FIXEDforEnd\n                                        lastGoodX= k.valueAt(valsx.index(minX)+first,0)\n                                        prelastGoodX= k.valueAt(valsx.index(minX)+first-1,0)\n                                        diffX= abs(lastGoodX) - abs(prelastGoodX)\n                                        offsetX = abs(lastGoodX)+maxX+diffX*2\n                                        for i in range(valsx.index(maxX)+first,last+1):\n                                            val = k.valueAt(i)[0]\n                                            k.setValueAt(val-offsetX,i,0)\n                                    if curveXUp == 1: ##### curve X is going up####################################################################################FIXEDforEnd\n                                        lastGoodX = k.valueAt(valsx.index(maxX)+first,0) \n                                        prelastGoodX= k.valueAt(valsx.index(maxX)+first-1,0) \n                                        diffX= abs(lastGoodX)- abs(prelastGoodX)\n                                        offsetX= maxX+abs(minX)+diffX*2\n                                        for i in range(valsx.index(minX)+first,last+1):\n                                            val = k.valueAt(i)[0]\n                                            k.setValueAt(val+offsetX,i,0)\n                                if valsy.index(maxY)+first > ref:                                  ##### kill tail Y\n                                    if curveYDown == 1: ##### curve Y is going down#####################################################################################FIXEDforEnd\n                                        lastGoodY= k.valueAt(valsy.index(minY)+first,1)\n                                        prelastGoodY= k.valueAt(valsy.index(minY)+first-1,1)\n                                        diffY= abs(lastGoodY) - abs(prelastGoodY) \n                                        offsetY = abs(lastGoodY)+maxY+diffY*2\n                                        for i in range(valsy.index(maxY)+first,last+1):\n                                            val = k.valueAt(i)[1]\n                                            k.setValueAt(val-offsetY,i,1)\n                                    if curveYUp == 1: ##### curve Y is going up####################################################################################FIXEDforEnd\n                                        lastGoodY = k.valueAt(valsy.index(maxY)+first,1) \n                                        prelastGoodY= k.valueAt(valsy.index(maxY)+first-1,1) \n                                        diffY=abs(lastGoodY) - abs(prelastGoodY) \n                                        offsetY= maxY+abs(minY)+diffY*2\n                                        for i in range(valsy.index(minY)+first,last+1):\n                                            val = k.valueAt(i)[1]\n                                            k.setValueAt(val+offsetY,i,1)\n                                if valsx.index(maxX)+first < ref:                                  ##### kill head X-------------------------------------------------------------------------------------\n                                    if curveXDown == 1: ##### curve X is going down#####################################################################################FIXEDforBeginning\n                                        firstGoodX= k.valueAt(valsx.index(maxX)+first,0)\n                                        prefirstGoodX= k.valueAt(valsx.index(maxX)+first+1,0)\n                                        diffX= abs(firstGoodX) - abs(prefirstGoodX) \n                                        offsetX = abs(firstGoodX)+abs(minX)+diffX*2\n                                        for i in range(first,valsx.index(maxX)+first):\n                                            val = k.valueAt(i)[0]\n                                            k.setValueAt(val+offsetX,i,0)\n                                    if curveXUp == 1: ##### curve X is going up#####################################################################################FIXEDforBeginning\n                                        firstGoodX = k.valueAt(valsx.index(minX)+first,0) \n                                        prefirstGoodX= k.valueAt(valsx.index(minX)+first+1,0) \n                                        diffX= abs(firstGoodX) - abs(prefirstGoodX) \n                                        offsetX= abs(firstGoodX)+maxX+diffX*2\n                                        for i in range(first,valsx.index(minX)+first):\n                                            val = k.valueAt(i)[0]\n                                            k.setValueAt(val-offsetX,i,0)\n                                if valsy.index(maxY)+first < ref:                                  ##### kill head Y\n                                    if curveYDown == 1: ##### curve Y is going down#####################################################################################FIXEDforBeginning\n                                        firstGoodY = k.valueAt(valsy.index(maxY)+first,1)\n                                        prefirstGoodY =  k.valueAt(valsy.index(maxY)+first+1,1)\n                                        diffY =  abs(firstGoodY) - abs(prefirstGoodY)\n                                        offsetY =  abs(firstGoodY)+abs(minY)+diffY*2\n                                        for i in range(first,valsy.index(maxY)+first):\n                                            val = k.valueAt(i)[1]\n                                            k.setValueAt(val+offsetY,i,1)\n                                    if curveYUp == 1: ##### curve Y is going up#####################################################################################FIXEDforBeginning\n                                        firstGoodY = k.valueAt(valsy.index(minY)+first,1)\n                                        prefirstGoodY = k.valueAt(valsy.index(minY)+first+1,1)\n                                        diffY = abs(firstGoodY) - abs(prefirstGoodY)\n                                        offsetY = abs(firstGoodY)+maxY+diffY*2\n                                        for i in range(first,valsy.index(minY)+first):\n                                            val = k.valueAt(i)[1]\n                                            k.setValueAt(val-offsetY,i,1)\n\n                    last = lastB\n                    first = firstB\n                else:\n                    pass\n\n\n\n\n            # corner pin normal or NST_CProject\n            try :\n                cp = nuke.nodes.NST_CProject(xpos = x+110, ypos = y)\n                cp['camera'].setValue(cam.name())\n                cp['translate'].setValue(card['translate'].value())\n                cp['rotation'].setValue(card['rotate'].value())\n                cp['element'].setValue(label)\n                cp.setName(\"CP_\"+label)\n                cp['refFrame'].setValue(ref)\n            except:\n                cp = nuke.nodes.CornerPin2D(label = label +' ('+str(ref)+')', xpos = x+110, ypos = y)  \n            cp['to1'].copyAnimations(r1['output'].animations())\n            cp['to2'].copyAnimations(r2['output'].animations())\n            cp['to3'].copyAnimations(r3['output'].animations())\n            cp['to4'].copyAnimations(r4['output'].animations())\n            cp['from1'].setValue(r1['output'].getValueAt(ref))\n            cp['from2'].setValue(r2['output'].getValueAt(ref))\n            cp['from3'].setValue(r3['output'].getValueAt(ref))\n            cp['from4'].setValue(r4['output'].getValueAt(ref))\n\n            #transform normal or NST_TProject\n            try:\n                tr = nuke.nodes.NST_TProject(xpos = x+330, ypos = y)\n                tr.setName(\"TP_\"+label)\n                tr['translate'].setAnimated() \n            except:\n                tr = nuke.nodes.Transform(label = label+' transform ('+str(ref)+')',xpos = x+330, ypos = y)\n                tr['translate'].setAnimated()\n\n\n            # corner pin matrix & roto & transform  \n            if C2Tgroup[\"Matrix\"].value() == True or C2Tgroup[\"Roto\"].value() == True or C2Tgroup[\"Transform\"].value() == True:\n                cpm = nuke.nodes.CornerPin2D(label = label+' matrix ('+str(ref)+')', xpos = x+440, ypos = y)   \n                cpm['transform_matrix'].setAnimated()\n\n\n\n                roto = nuke.nodes.Roto( xpos = x+220, ypos = y) \n                roto.setName(roto['name'].value().replace('Roto','R')+\"_\"+label)\n                roto_transform = roto['curves'].rootLayer.getTransform() # transform of root layer in roto\n                nuke.show(roto)\n\n                projectionMatrixTo = nuke.math.Matrix4()\n                projectionMatrixFrom = nuke.math.Matrix4()\n                frame = first\n                while frame<last+1:\n\n                    to1x = cp['to1'].valueAt(frame)[0]\n                    to1y = cp['to1'].valueAt(frame)[1]\n                    to2x = cp['to2'].valueAt(frame)[0]\n                    to2y = cp['to2'].valueAt(frame)[1]\n                    to3x = cp['to3'].valueAt(frame)[0]\n                    to3y = cp['to3'].valueAt(frame)[1]\n                    to4x = cp['to4'].valueAt(frame)[0]\n                    to4y = cp['to4'].valueAt(frame)[1]\n\n                    from1x = cp['from1'].valueAt(frame)[0]\n                    from1y = cp['from1'].valueAt(frame)[1]\n                    from2x = cp['from2'].valueAt(frame)[0]\n                    from2y = cp['from2'].valueAt(frame)[1]\n                    from3x = cp['from3'].valueAt(frame)[0]\n                    from3y = cp['from3'].valueAt(frame)[1]\n                    from4x = cp['from4'].valueAt(frame)[0]\n                    from4y = cp['from4'].valueAt(frame)[1]\n                \n                    projectionMatrixTo.mapUnitSquareToQuad(to1x,to1y,to2x,to2y,to3x,to3y,to4x,to4y)\n                    projectionMatrixFrom.mapUnitSquareToQuad(from1x,from1y,from2x,from2y,from3x,from3y,from4x,from4y)\n                    theCornerpinAsMatrix = projectionMatrixTo*projectionMatrixFrom.inverse()\n                    theCornerpinAsMatrix.transpose()\n\n                    \n                    for i in range(0,16):\n                        if C2Tgroup[\"Matrix\"].value() == True:\n                            cpm['transform_matrix'].setValueAt(theCornerpinAsMatrix[i],frame,i)\n                        if C2Tgroup[\"Roto\"].value() == True:\n                            if C2Tgroup[\"Matrix\"].value() == False:\n                                cpm['transform_matrix'].setValueAt(theCornerpinAsMatrix[i],frame,i) \n                            roto_transform.getExtraMatrixAnimCurve(0,i).addKey(frame,cpm['transform_matrix'].getValueAt(frame,i))  \n\n                    if C2Tgroup[\"Transform\"].value() == True:\n                        tr['translate'].setValueAt((to1x+to2x+to3x+to4x)/4-bg.width()/2,frame,0)\n                        tr['translate'].setValueAt((to1y+to2y+to3y+to4y)/4-bg.height()/2,frame,1)\n                        tr['center'].setValue([bg.width()/2,bg.height()/2])\n\n\n                \n\n                    frame = frame + 1\n                roto['curves'].changed()\n                if C2Tgroup[\"Matrix\"].value() == False:\n                    nuke.delete(cpm)  \n                if C2Tgroup[\"Roto\"].value() == False:\n                    nuke.delete(roto) \n                if C2Tgroup[\"Transform\"].value() == False:\n                    nuke.delete(tr) \n\n            # check for turnover\n            k = cp['to1']\n            vals = []\n            valSort =[]\n            for i in range(first,last+1):\n                vals.append(k.valueAt(i,0))\n                valSort.append(k.valueAt(i,0))\n            valSort.sort()\n            minVal = valSort[0]\n            maxVal = valSort[-1]\n\n\n            #clean up\n            rmL = [r1,r2,r3,r4,a1,a2,a3,a4,aM,bg]\n            for i in rmL:\n                nuke.delete(i)\n            #nuke.delete(bg)\n            if axisCase ==1:\n                C2Tgroup.setInput(2,axisNode)\n                card['label'].setValue(label)\n            elif axisCase == 2:#card case\n                C2Tgroup.setInput(2,None)\n                card.setInput(0,None)\n            card['label'].setValue(label)\n\n            if C2Tgroup[\"CornerPin\"].value() == False:\n                nuke.delete(cp)            \n            if C2Tgroup[\"Card_1\"].value() == False:\n                nuke.delete(card)   \n            if dialog == False:\n                roto.setXYpos(x+100,y)\n                #remove all non roto nodes\n                nuke.delete(cp)\n                nuke.delete(cpm)\n            print ('C2T done.!!!!!')\n\n\n        C2T(True)\n\n\ndef objectOnly():\n    a=nuke.thisGroup()\n\n    t = a['translate'].value()\n    r = a['rotate'].value()\n    s = a['scaling'].value()\n    u = a['uniform_scale'].value()\n    a.end()\n    panel = nuke.Panel(\"object\")\n    panel.addSingleLineInput(\"Object Name:\",\"\")\n    panel.addEnumerationPulldown(\"objects:\", \"Card Axis Cube Sphere Cylinder Light TransformGeo Camera\")\n\n    if panel.show(): \n        ob = panel.value(\"objects:\")\n        name = panel.value(\"Object Name:\")\n        obj = nuke.createNode(ob)\n        x = a['xpos'].value()\n        y = a['ypos'].value()\n        obj.setInput(0,None)\n        obj['xpos'].setValue(int(x))\n        obj['ypos'].setValue(int(y+100))\n        obj['translate'].setValue(t)\n        obj['rotate'].setValue(r)\n        obj['scaling'].setValue(s)\n        obj['uniform_scale'].setValue(u)\n        obj.setName(name)\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_cardToTrack_v9.py",
    "content": "'''\nCardToTrack is a nuke group designed to help extract position of the object in 3D space\nand represent it as corner pin in a screen space.\n\nSingle consolidated module for all supported Nuke versions (15 and lower, 16 and higher).\n- Nuke 16+: Uses fromScript optimization, Undo.disable during calculation, \"with C2Tgroup\".\n- Nuke 15 and lower: Uses begin/end for group context, setKey fallback when fromScript\n  is unavailable, and skips Undo.disable when not available.\n'''\n\n__author__ = \"Alexey Kuchinski\"\n__copyright__ = \"Copyright 2023, Alexey Kuchinski\"\n__credits__ = [\"Peter Mercell\", \"Adrian Pueyo\", \"Helge Stang\", \"Eyal Sirazi\", \"Marco Meyer\", \"Tony Lyons\", \"Mark Joey Tang\", \"Pete O'Connell\", \"Ivan Busquets\",\"Ben Dickson\",\"Trixter Folks!!!!!\"]\n__version__ = \"9.6\"\n__email__ = \"lamakaha@gmail.com\"\n__status__ = \"Perpetual Beta\"\n\nimport time\nimport nuke\nimport math\nimport re\n\n# Version check: one code path for all Nuke versions, with minimal branching where APIs differ.\nNUKE_16_PLUS = (nuke.NUKE_VERSION_MAJOR > 15)\n\ndef _undo_disable():\n    if hasattr(nuke, 'Undo'):\n        nuke.Undo.disable()\n\ndef _undo_enable():\n    if hasattr(nuke, 'Undo'):\n        nuke.Undo.enable()\n\n# -------------------------------------------------------------------------------------\n# OPTIMIZATION HELPERS\n# -------------------------------------------------------------------------------------\n\ndef set_anim_curve_from_data(knob, data_list_per_channel):\n    \"\"\"\n    Constructs a Nuke animation and applies it to the knob.\n    Nuke 16+: uses fromScript for speed. Nuke 15 and lower: uses setKey per channel.\n    \"\"\"\n    if NUKE_16_PLUS and hasattr(knob, 'fromScript'):\n        full_script = \"\"\n        for channel_data in data_list_per_channel:\n            if channel_data:\n                curve_str = \"{curve \"\n                keys_str = \" \".join([f\"x{int(f)} {val:.6f}\" for f, val in channel_data])\n                curve_str += keys_str + \"} \"\n            else:\n                curve_str = \"{curve} \"\n            full_script += curve_str\n        if full_script.strip():\n            knob.fromScript(full_script)\n        return\n    # Nuke 15 and lower: setKey per channel (avoid isAnimated(ch_idx) for API compatibility)\n    aSize = 1 if knob.singleValue() else knob.arraySize()\n    for ch_idx in range(min(len(data_list_per_channel), aSize)):\n        channel_data = data_list_per_channel[ch_idx]\n        if not channel_data:\n            continue\n        try:\n            knob.setAnimated(ch_idx)\n        except Exception:\n            pass\n        anim = knob.animation(ch_idx)\n        if anim is not None:\n            for f, val in channel_data:\n                anim.setKey(f, val)\n\n\ndef kill_animation(knobs):\n    '''\n    Kill animation in knobs if knobs are animated but animation is constant.\n    '''\n    for knob in knobs:\n        if knob.isAnimated():\n            aSize = 1 if knob.singleValue() else knob.arraySize()\n            for index in range(aSize):\n                anim = knob.animation(index)\n                if anim and anim.constant():\n                    knob.clearAnimated(index)\n\ndef offset_nodes(x,y):\n    '''\n    find how far newly created node should be created.\n    '''\n    allNodes = nuke.allNodes()\n    for step in range(1,10):\n        step = abs(10-step)\n        for node in allNodes:\n            if node['xpos'].value() == x+110*step and node['ypos'].value() == y:\n                x = x+110*step\n                break\n    return x\n\ndef check_first_last_frame(C2Tgroup):\n    '''\n    check if camera has animation and if yes collect first and last frame of it\n    '''\n    with nuke.Root():\n        how = C2Tgroup['extraHelper'].value()\n        try:\n            with C2Tgroup:\n                tr = nuke.toNode('DummyCam')['translate'].getKeyList()\n                first_frame_v = min(tr)\n                last_frame_v = max(tr)\n\n            if how == 1:\n                translateKeys = C2Tgroup.input(2)['translate'].getKeyList()\n                first_frame_v = min([first_frame_v,min(translateKeys)])\n                last_frame_v = max([last_frame_v,max(translateKeys)])\n        except:\n            first_frame_v = int(nuke.toNode('root')['first_frame'].value())\n            last_frame_v = int(nuke.toNode('root')['last_frame'].value())\n\n        if C2Tgroup['S'].value() == 1:\n            C2Tgroup['Stabilize'].execute()\n\n        return first_frame_v, last_frame_v\n\ndef check_curve(knob,first,last,ref):\n    '''\n    Check if a curve has Euler flip issue\n    '''\n    import math\n    problem = False\n    vals = [knob.valueAt(i,0) for i in range(first, last+1)]\n    if not vals: return False\n\n    valSort = sorted(vals)\n    minX = valSort[0]\n    maxX = valSort[-1]\n\n    if abs(vals.index(maxX) - vals.index(minX)) == 1:\n        problem = True\n    return problem\n\ndef fix_curves(one,first,last,ref):\n    import math\n    timeline = [\"beginning\",\"end\"]\n    lastB = last\n    firstB = first\n    for side in timeline:\n        if side == \"beginning\":\n            last = ref\n        if side == \"end\":\n            first = ref\n            last = lastB\n\n        curveXDown = curveXUp = curveYDown = curveYUp = 0\n        valsx = [one.valueAt(i,0) for i in range(first,last+1)]\n        valsy = [one.valueAt(i,1) for i in range(first,last+1)]\n\n        if not valsx or not valsy: continue\n\n        valSortx = sorted(valsx)\n        valSorty = sorted(valsy)\n\n        minX = valSortx[0]; maxX = valSortx[-1]\n        minY = valSorty[0]; maxY = valSorty[-1]\n\n        if math.fabs(valsx.index(maxX)-valsx.index(minX)) == 1:\n            if valsx.index(maxX)-valsx.index(minX) < 0: curveXUp = 1\n            else: curveXDown = 1\n            if valsy.index(maxY)-valsy.index(minY) < 0: curveYUp = 1\n            else: curveYDown = 1\n\n            if valsx.index(maxX)+first > ref:\n                if curveXDown == 1:\n                    lastGoodX= one.valueAt(valsx.index(minX)+first,0)\n                    prelastGoodX= one.valueAt(valsx.index(minX)+first-1,0)\n                    offsetX = abs(lastGoodX)+maxX+(abs(lastGoodX) - abs(prelastGoodX))*2\n                    for i in range(valsx.index(maxX)+first,last+1): one.setValueAt(one.valueAt(i)[0]-offsetX,i,0)\n                if curveXUp == 1:\n                    lastGoodX = one.valueAt(valsx.index(maxX)+first,0)\n                    prelastGoodX= one.valueAt(valsx.index(maxX)+first-1,0)\n                    offsetX= maxX+abs(minX)+(abs(lastGoodX)- abs(prelastGoodX))*2\n                    for i in range(valsx.index(minX)+first,last+1): one.setValueAt(one.valueAt(i)[0]+offsetX,i,0)\n\n            if valsy.index(maxY)+first > ref:\n                if curveYDown == 1:\n                    lastGoodY= one.valueAt(valsy.index(minY)+first,1)\n                    prelastGoodY= one.valueAt(valsy.index(minY)+first-1,1)\n                    offsetY = abs(lastGoodY)+maxY+(abs(lastGoodY) - abs(prelastGoodY))*2\n                    for i in range(valsy.index(maxY)+first,last+1): one.setValueAt(one.valueAt(i)[1]-offsetY,i,1)\n                if curveYUp == 1:\n                    lastGoodY = one.valueAt(valsy.index(maxY)+first,1)\n                    prelastGoodY= one.valueAt(valsy.index(maxY)+first-1,1)\n                    offsetY= maxY+abs(minY)+(abs(lastGoodY) - abs(prelastGoodY))*2\n                    for i in range(valsy.index(minY)+first,last+1): one.setValueAt(one.valueAt(i)[1]+offsetY,i,1)\n\ndef delete_tab():\n    if nuke.ask(\"This will delete currect Tab and all nodes inside of it\\nAre you very sure you want to do so?\\n\"):\n        node = nuke.thisGroup()\n        tab_knob_name = nuke.thisKnob().name().replace('Delete','')\n        to_remove = []\n\n        for n in range(node.numKnobs()):\n            cur_knob = node.knob(n)\n            if tab_knob_name in cur_knob.name():\n                to_remove.append(cur_knob)\n\n        for element in to_remove:\n            if isinstance(element, nuke.Tab_Knob):\n                to_remove.remove(element)\n                to_remove.append(element)\n\n        for k in to_remove:\n            node.removeKnob(k)\n\n        if 'card_to_track' in node.knobs():\n            node['card_to_track'].setFlag(1)\n\n# -------------------------------------------------------------------------------------\n# MAIN FUNCTIONS\n# -------------------------------------------------------------------------------------\n\ndef set_ref_frame():\n    C2Tgroup = nuke.thisGroup()\n    C2Tgroup['Zfind'].setValue(0)\n\n    if NUKE_16_PLUS:\n        with C2Tgroup:\n            nuke.toNode(\"ScanlineRender1\")['disable'].setValue(0)\n            nuke.toNode(\"StabFrameHold\")['first_frame'].setValue(C2Tgroup['refFrame'].value())\n            if C2Tgroup['S'].value() == 1:\n                C2Tgroup['Stabilize'].execute()\n\n            if not C2Tgroup.input(1): nuke.message('Could you please connect some Camera if you do not mind.')\n            if not C2Tgroup.input(0): nuke.message('No connectd BG footage, will use the project resolution instead')\n\n            nuke.toNode(\"NoOp1\")['pick'].execute()\n            C2Tgroup['refFrame'].setValue(nuke.frame())\n            nuke.toNode(\"Switch\")['which'].setValue(0)\n\n            r=nuke.toNode(\"Perspective\")\n            r.setSelected(False); r.hideControlPanel()\n            r['rotate'].setValue(0); r['translate'].setValue(0); r['scaling'].setValue(1)\n            r['uniform_scale'].setValue(C2Tgroup['scene'].value())\n    else:\n        C2Tgroup.begin()\n        try:\n            nuke.toNode(\"ScanlineRender1\")['disable'].setValue(0)\n            nuke.toNode(\"StabFrameHold\")['first_frame'].setValue(C2Tgroup['refFrame'].value())\n            if C2Tgroup['S'].value() == 1:\n                C2Tgroup['Stabilize'].execute()\n\n            if not C2Tgroup.input(1): nuke.message('Could you please connect some Camera if you do not mind.')\n            if not C2Tgroup.input(0): nuke.message('No connectd BG footage, will use the project resolution instead')\n\n            nuke.toNode(\"NoOp1\")['pick'].execute()\n            C2Tgroup['refFrame'].setValue(nuke.frame())\n            nuke.toNode(\"Switch\")['which'].setValue(0)\n\n            r=nuke.toNode(\"Perspective\")\n            r.setSelected(False); r.hideControlPanel()\n            r['rotate'].setValue(0); r['translate'].setValue(0); r['scaling'].setValue(1)\n            r['uniform_scale'].setValue(C2Tgroup['scene'].value())\n        finally:\n            C2Tgroup.end()\n\n    if C2Tgroup['extraHelper'].value() in [0]:\n        C2Tgroup['findZ'].clearFlag(1)\n        for one in ['happyGroup','goGroup','goGroup']: C2Tgroup[one].setFlag(1)\n    if C2Tgroup['extraHelper'].value() in [1,2,3,4]:\n        C2Tgroup['Adjust'].execute()\n\ndef stabilize():\n    '''\n    add stabilization to card in order to find its position in 3d space in easier way\n    '''\n    node = nuke.thisGroup() \n    t = node['S']\n    \n    with node:\n        if t.value() == 0:\n           nuke.thisKnob().setLabel('<font color=\"Red\"><b>Stabilized')\n           t.setValue(1)\n           nuke.toNode(\"StabFrameHold\")['disable'].setValue(0)\n           nuke.toNode(\"StabFrameHold\")['first_frame'].setValue(node['refFrame'].value())\n           nuke.toNode(\"StabRef\")['first_frame'].setValue(node['refFrame'].value())\n           nuke.toNode(\"StabSwitch\")['disable'].setValue(0)\n        else:\n           nuke.thisKnob().setLabel('Stabilize')\n           t.setValue(0)\n           node['HighPass'].setValue(0)\n           node['HighPass_1'].setValue(0)\n           nuke.toNode(\"StabFrameHold\")['disable'].setValue(1)\n           nuke.toNode(\"StabSwitch\")['disable'].setValue(1)\n\ndef happy():\n    ''' \n    bake position we did find in previous step in temporary Axis, this axis will be later used\n    to get corner pin from 3d position.\n    '''\n    C2Tgroup=nuke.thisNode()\n    \n    with C2Tgroup:\n        nuke.toNode(\"Switch\")['which'].setValue(1)\n        axisNode = nuke.toNode('Z_finder')\n        perspective_axis = nuke.toNode('Perspective')\n        refFrame = C2Tgroup['refFrame'].value()\n        matrixVal = axisNode['world_matrix'].valueAt(refFrame)\n\n        perspective_axis['translate'].setValue([matrixVal[3],matrixVal[7],matrixVal[11]])\n        perspective_axis.setSelected(True)\n        r=nuke.toNode(\"look_at_Axis\")\n        r.setSelected(False)\n        r.hideControlPanel() \n\n    if C2Tgroup['S'].value() == 1:\n        C2Tgroup['Stabilize'].execute()\n        C2Tgroup['HighPass'].setValue(0)\n    if C2Tgroup['extraHelper'].value() in [0,2,3,4]:\n        C2Tgroup['findZ'].setFlag(1)\n        C2Tgroup['happyGroup'].clearFlag(1)\n        C2Tgroup['goGroup'].clearFlag(1)\n    C2Tgroup['setGroup'].setFlag(1)\n\ndef show_grid_axis():\n    C2Tgroup=nuke.thisNode()\n    with C2Tgroup:\n        perspective_axis = nuke.toNode('Perspective')\n        perspective_axis.setSelected(True)   \n        nuke.show(perspective_axis)\n\ndef go():\n    C2Tgroup=nuke.thisNode()\n    modes = ['MatchMove','3D Locator(card or axis)','Geometry',\"WorldPosition\",\"Deep\"]\n    mode = modes[int(C2Tgroup['extraHelper'].value())]\n    \n    if mode == '3D Locator(card or axis)':\n        if C2Tgroup.input(2):\n            axisNode = C2Tgroup.input(2)\n            try:\n                if 'world_matrix' not in axisNode.knobs() and 'matrix' not in axisNode.knobs(): raise Exception\n            except:\n                nuke.message(\"Supported nodes are an Axis,Card or any Other 3D node with world_matrix\")\n                return\n        else:\n            nuke.message(\"It looks like you did not connect an Axis or a Card to the <b>Extra</b> input.\")\n            return\n\n    if C2Tgroup['S'].value() == 1:\n        C2Tgroup['Stabilize'].execute()\n        C2Tgroup['HighPass'].setValue(0)\n    for one in ['happyGroup','C2T','scene_settings','cameraExchange','goGroup','findZ']:\n        C2Tgroup[one].setFlag(1)\n        \n    # THIS WAS THE MISSING FUNCTION CALL IN THE PREVIOUS VERSION\n    first_frame_v, last_frame_v = check_first_last_frame(C2Tgroup)\n    \n    x=int(C2Tgroup['xpos'].value())\n    y=int(C2Tgroup['ypos'].value())\n\n    with C2Tgroup:\n        nuke.toNode(\"Perspective\").setSelected(False)\n\n    with nuke.Root():\n        def C2T(dialog):\n            ref = int(nuke.frame())\n            first = first_frame_v\n            last = last_frame_v\n            bg = C2Tgroup.input(0)\n            recalculate = False\n\n            if dialog == True:\n                panel = nuke.Panel(\"C2T\")\n                panel.addSingleLineInput(\"label:\", \"\")\n                panel.addSingleLineInput(\"firstFrame:\", str(first))\n                panel.addSingleLineInput(\"lastFrame:\", str(last))\n                panel.addSingleLineInput(\"ref frame:\", str(ref))\n                if panel.show():\n                    first = int(panel.value(\"firstFrame:\"))\n                    last = int(panel.value(\"lastFrame:\"))\n                    ref = int(panel.value(\"ref frame:\"))\n                    if ref>last or ref<first: ref = first\n                    raw_label = panel.value(\"label:\")\n                    label = re.sub(r'[^\\w]', '_', raw_label)\n                else:\n                    nuke.message('canceled')\n                    nuke.delete(bg)\n                    return\n            else:\n                print ('no dialog, use auto-created input values')\n             \n            if '_X_'+label not in C2Tgroup.knobs():\n                tab_knob = nuke.Tab_Knob('_X_'+label, label)\n                refFrame = nuke.Int_Knob('ReferenceFrame_X_'+label,'Reference Frame')\n                firstFrame = nuke.Int_Knob('FirstFrame_X_'+label, 'First Frame')\n                lastFrame = nuke.Int_Knob('LastFrame_X_'+label, 'Last Frame')\n                baked = nuke.Boolean_Knob('Baked_X_'+label, \"Baked\", True)\n                card = nuke.PyScript_Knob('Card_X_'+label, '3d object')\n                corner = nuke.PyScript_Knob('CornerPin_X_'+label, 'CornerPin')\n                roto = nuke.PyScript_Knob('Roto_X_'+label, 'Roto')\n                transform = nuke.PyScript_Knob('Transform_X_'+label, 'Transform')\n                translate = nuke.XYZ_Knob('Translate_X_'+label, 'translate')\n                rotate = nuke.XYZ_Knob('Rotate_X_'+label, 'rotate')\n                scale = nuke.XYZ_Knob('Scale_X_'+label, 'scale')\n                uniform_scale = nuke.Double_Knob('Uniform_scale_X_'+label, 'uniform scale')\n                to1 = nuke.XY_Knob('to1_X_'+label, 'to1')\n                to2 = nuke.XY_Knob('to2_X_'+label,'to2')\n                to3 = nuke.XY_Knob('to3_X_'+label, 'to3')\n                to4 = nuke.XY_Knob('to4_X_'+label, 'to4')\n                translateT = nuke.XY_Knob('TranslateT_X_'+label, 'translate')\n                centerT = nuke.XY_Knob('centerT_X_'+label, 'center')\n                matrix = nuke.Array_Knob('matrix_X_'+label, 'matrix',16)\n                bGCard = nuke.Tab_Knob('CardKnobs_X_'+label, 'card knobs', nuke.TABBEGINCLOSEDGROUP)\n                bGMatrix = nuke.Tab_Knob('MatrixKnobs_X_'+label, 'matrix knobs', nuke.TABBEGINCLOSEDGROUP)\n                bGTransform = nuke.Tab_Knob('TransformKnobs_X_'+label, 'transform knobs', nuke.TABBEGINCLOSEDGROUP)\n                bGCorner = nuke.Tab_Knob('CornerPinKnobs_X_'+label, 'corner pin knobs', nuke.TABBEGINCLOSEDGROUP)\n                eGMatrix = nuke.Tab_Knob('MatrixKnobs_close_X_'+label, None, nuke.TABENDGROUP)\n                eGTransform = nuke.Tab_Knob('TransformKnobs_close_X_'+label, None, nuke.TABENDGROUP)\n                eGCorner = nuke.Tab_Knob('CornerPinKnobs_close_X_'+label, None, nuke.TABENDGROUP)\n                eGCard = nuke.Tab_Knob('CardKnobs_close_X_'+label, None, nuke.TABENDGROUP)\n                delete = nuke.PyScript_Knob('Delete_X_'+label, \"<b><font color=#A40000>Delete Tab\")\n\n                flags = [card, corner, roto, transform]\n                for one in flags: one.clearFlag(nuke.STARTLINE)\n                card.setFlag(nuke.STARTLINE)\n\n                knobs = [tab_knob, refFrame, firstFrame, lastFrame, card, corner, roto, transform, baked,\n                        bGCard, translate, rotate, scale, uniform_scale, eGCard, \n                        bGCorner, to1, to2, to3, to4, eGCorner,\n                        bGTransform, translateT, centerT, eGTransform , \n                        bGMatrix, matrix, eGMatrix, delete]\n\n                for one in knobs: C2Tgroup.addKnob(one)\n\n            # Set Values & Scripts\n            C2Tgroup['ReferenceFrame_X_'+label].setValue(ref)\n            C2Tgroup['FirstFrame_X_'+label].setValue(int(first))\n            C2Tgroup['LastFrame_X_'+label].setValue(int(last))\n            C2Tgroup['Card_X_'+label].setValue('import NST_cardToTrack_v9; NST_cardToTrack_v9.card_code()')\n            C2Tgroup['CornerPin_X_'+label].setValue('import NST_cardToTrack_v9; NST_cardToTrack_v9.corner_code()')\n            C2Tgroup['Roto_X_'+label].setValue('import NST_cardToTrack_v9; NST_cardToTrack_v9.roto_code()')\n            C2Tgroup['Transform_X_'+label].setValue('import NST_cardToTrack_v9; NST_cardToTrack_v9.transform_code()')\n            C2Tgroup['Delete_X_'+label].setValue('import NST_cardToTrack_v9; NST_cardToTrack_v9.delete_tab()')\n\n            # Calculation Call\n            import time as time_module\n            start_time = time_module.time()\n            print(f\"\\n[CardToTrack] Starting calculation for '{label}'...\")\n            \n            # This calls the function that includes the UNDO FIX and STRING INJECTION\n            calculate_corner_pin(C2Tgroup, label, recalculate)\n            \n            calc_time = time_module.time() - start_time\n            print(f\"[CardToTrack] Calculation completed in {calc_time:.3f} seconds\")\n\n            # Clean up Internal Connections\n            with C2Tgroup:\n                am = nuke.toNode('aM')\n                am['translate'].setExpression('parent.Perspective.translate')\n                am['rotate'].setExpression('parent.Perspective.rotate')\n                # Revert internal helpers to default expressions\n                scale_x_expr = '-0.5*Perspective.uniform_scale*Perspective.scaling.x'\n                scale_y_expr = 'input0.pixel_aspect*-0.5*Perspective.uniform_scale*Perspective.scaling.y'\n                nuke.toNode('a1')['translate'].setExpression(scale_x_expr,0)\n                \n            toes = [C2Tgroup['to1_X_'+label], C2Tgroup['to2_X_'+label], C2Tgroup['to3_X_'+label], C2Tgroup['to4_X_'+label]]\n            cardknobs = [C2Tgroup['Translate_X_'+label], C2Tgroup['Rotate_X_'+label], C2Tgroup['Scale_X_'+label], C2Tgroup['Uniform_scale_X_'+label]]\n            kill_animation(toes + cardknobs)\n\n            issues = []\n            for one in toes:\n                issues.append(check_curve(one,first,last,ref))\n\n            if True in issues:\n                 if nuke.ask(\"Perspective problem detected! Fix it?\"):\n                    for i, issue in enumerate(issues):\n                        if issue: fix_curves(toes[i],first,last,ref)\n            \n            if '_X_'+label in C2Tgroup.knobs(): C2Tgroup['_X_'+label].setFlag(0)\n\n        C2T(True)\n\ndef recalculate_camera():\n    C2Tgroup=nuke.thisNode()\n    cardTabs = [k.rpartition('_X_')[2] for k in C2Tgroup.knobs() if k.startswith('_X_')]\n    iterations = len(cardTabs)\n    \n    if iterations > 1: progress_bar = nuke.ProgressTask(\"Processing Tabs\")\n\n    for i, label in enumerate(cardTabs):\n        if iterations > 1 and progress_bar.isCancelled(): break\n        \n        calculate_corner_pin(C2Tgroup, label, True)\n        \n        if C2Tgroup['TranslateT_X_'+label].isAnimated():\n            calculate_translate(C2Tgroup, label)\n        \n        if C2Tgroup['matrix_X_'+label].isAnimated():\n            calculate_matrix(C2Tgroup, label)\n        \n        with C2Tgroup:\n             nuke.toNode('aM')['translate'].setExpression('parent.Perspective.translate')\n             nuke.toNode('aM')['rotate'].setExpression('parent.Perspective.rotate')\n\n        if iterations > 1:\n            progress_bar.setProgress(int(100*(i / float(iterations))))\n            progress_bar.setMessage(\"Processing Tab: \"+label)\n            \n    if iterations > 1: del progress_bar\n\ndef select_associated_nodes():\n    '''\n    Select all nodes created by this Group.\n    '''\n    C2Tgroup = nuke.thisGroup()\n    group_name = C2Tgroup.name()\n    cardTabs = []\n\n    for label in C2Tgroup.knobs():\n        if label.startswith('_X_'):\n            cardTabs.append(label.rpartition('_X_')[2])\n\n    with nuke.Root():\n        nan = nuke.allNodes()\n\n        for node in nan:\n            node.setSelected(False)\n\n        for node in nan:\n            if 'card_to_track' in node.knobs() and \"CardToTrack\" not in node.name():\n                if group_name+\":\" in node['card_to_track'].value():\n                    node.setSelected(True)\n\ndef update_baked():\n    '''\n    Recalculate selected nodes to match updated camera.\n    '''\n    C2Tgroup = nuke.thisGroup()\n    group_name = C2Tgroup.name()\n    cardTabs = []\n\n    for label in C2Tgroup.knobs():\n        if label.startswith('_X_'):\n            cardTabs.append(label.rpartition('_X_')[2])\n\n    with nuke.Root():\n        c2t_nodes = nuke.selectedNodes()\n        for node in c2t_nodes:\n            identificator = node['card_to_track'].value()\n            label = identificator.rpartition(\": \")[2]\n            nodetype = identificator.split(':')[1]\n\n            if '_X_'+label not in C2Tgroup.knobs():\n                nuke.message('looks like <b>'+node.name() +\"</b> is not a part of the <b>\" +C2Tgroup.name()+\"</b> anymore.\\nCould be you erased the tab with it?\\nPlease deselect this node and run Update Selected Nodes again.\")\n                return\n            if nodetype == 'card':\n                if C2Tgroup['Translate_X_'+label].isAnimated():\n                    node['translate'].copyAnimations(C2Tgroup['Translate_X_'+label].animations())\n                else:\n                    node['translate'].setValue(C2Tgroup['Translate_X_'+label].value())\n\n                if C2Tgroup['Rotate_X_'+label].isAnimated():\n                    node['rotate'].copyAnimations(C2Tgroup['Rotate_X_'+label].animations())\n                else:\n                    node['rotate'].setValue(C2Tgroup['Rotate_X_'+label].value())\n\n                if C2Tgroup['Scale_X_'+label].isAnimated():\n                    node['scaling'].copyAnimations(C2Tgroup['Scale_X_'+label].animations())\n                else:\n                    node['scaling'].setValue(C2Tgroup['Scale_X_'+label].value())\n\n                if C2Tgroup['Uniform_scale_X_'+label].isAnimated():\n                    node['uniform_scale'].copyAnimations(C2Tgroup['Uniform_scale_X_'+label].animations())\n                else:\n                    node['uniform_scale'].setValue(C2Tgroup['Uniform_scale_X_'+label].value())\n\n            elif nodetype == 'cornerpin':\n                node['to1'].copyAnimations(C2Tgroup['to1_X_'+label].animations())\n                node['to2'].copyAnimations(C2Tgroup['to2_X_'+label].animations())\n                node['to3'].copyAnimations(C2Tgroup['to3_X_'+label].animations())\n                node['to4'].copyAnimations(C2Tgroup['to4_X_'+label].animations())\n\n            elif nodetype == 'transform':\n                if C2Tgroup['TranslateT_X_'+label].isAnimated():\n                    node['translate'].copyAnimations(C2Tgroup['TranslateT_X_'+label].animations())\n                else:\n                    node['translate'].setValue(C2Tgroup['TranslateT_X_'+label].value())\n                node['center'].setValue(C2Tgroup['centerT_X_'+label].value())\n\n            elif nodetype == 'roto':\n                nuke.show(node)\n                node['transform_matrix'].copyAnimations(C2Tgroup['matrix_X_'+label].animations())\n                node['curves'].changed()\n\n# -------------------------------------------------------------------------------------\n# CORE CALCULATION FUNCTIONS (WITH FIXES)\n# -------------------------------------------------------------------------------------\n\ndef calculate_corner_pin(C2Tgroup,label,recalculate):\n    import time as time_module\n    start_time = time_module.time()\n    \n    modes = ['MatchMove','3D Locator(card or axis)','Geometry',\"WorldPosition\",\"Deep\"]\n    mode = modes[int(C2Tgroup['extraHelper'].value())]\n\n    first = int(C2Tgroup['FirstFrame_X_'+label].value())\n    last = int(C2Tgroup['LastFrame_X_'+label].value())\n    frame_count = last - first + 1\n    print(f\"  [calculate_corner_pin] Processing {frame_count} frames ({first}-{last}), mode: {mode}\")\n    \n    translate = C2Tgroup['Translate_X_'+label]\n    rotate = C2Tgroup['Rotate_X_'+label]\n    scale = C2Tgroup['Scale_X_'+label]\n    uniform_scale = C2Tgroup['Uniform_scale_X_'+label]\n    toes = [C2Tgroup['to1_X_'+label], C2Tgroup['to2_X_'+label], C2Tgroup['to3_X_'+label], C2Tgroup['to4_X_'+label]]\n    cardknobs = [translate, rotate, scale, uniform_scale]\n\n    task = nuke.ProgressTask(\"Calculating Corner Pin Data\")\n    progress_step = 30\n    \n    # --- UNDO DISABLE (CRITICAL FOR SPEED) ---\n    _undo_disable()\n\n    try:\n        if recalculate:\n            recalc_start = time_module.time()\n            with C2Tgroup:\n                am = nuke.toNode('aM')\n                am['translate'].setExpression('parent.'+'Translate_X_'+label)\n                am['rotate'].setExpression('parent.'+'Rotate_X_'+label)\n                expr_x = '0.5*parent.Scale_X_'+label+'.x*parent.Uniform_scale_X_'+label\n                expr_y = 'input0.pixel_aspect*0.5*parent.Scale_X_'+label+'.y*parent.Uniform_scale_X_'+label\n                nuke.toNode('a1')['translate'].setExpression('-'+expr_x, 0); nuke.toNode('a1')['translate'].setExpression('-'+expr_y, 1)\n                nuke.toNode('a2')['translate'].setExpression(expr_x, 0); nuke.toNode('a2')['translate'].setExpression('-'+expr_y, 1)\n                nuke.toNode('a3')['translate'].setExpression(expr_x, 0); nuke.toNode('a3')['translate'].setExpression(expr_y, 1)\n                nuke.toNode('a4')['translate'].setExpression('-'+expr_x, 0); nuke.toNode('a4')['translate'].setExpression(expr_y, 1)\n            print(f\"  [calculate_corner_pin] Recalculate expressions set in {time_module.time() - recalc_start:.3f}s\")\n        else:\n            if mode == '3D Locator(card or axis)':\n                matrix_start = time_module.time()\n                axisNode = C2Tgroup.input(2)\n                axis_matrix = axisNode['world_matrix'] if 'world_matrix' in axisNode.knobs() else axisNode['matrix']\n                math_matrix = nuke.math.Matrix4()\n                \n                for k in cardknobs: k.setExpression('curve')\n                \n                frames = range(int(first), int(last+1))\n                scale_data, rotate_data, translate_data = [[],[],[]], [[],[],[]], [[],[],[]]\n\n                for idx, i in enumerate(frames):\n                    if task.isCancelled(): break\n                    if idx % progress_step == 0:\n                         task.setMessage(f\"Reading 3D Data frame {i}\")\n                         task.setProgress(int((idx / len(frames)) * 30))\n                    \n                    k_vals = axis_matrix.getValueAt(i)\n                    for y in range(4):\n                        for x in range(4): math_matrix[x+(y*4)] = k_vals[y + 4*x]\n                    \n                    transM = nuke.math.Matrix4(math_matrix); transM.translationOnly()\n                    rotM = nuke.math.Matrix4(math_matrix); rotM.rotationOnly()\n                    scaleM = nuke.math.Matrix4(math_matrix); scaleM.scaleOnly()\n                    \n                    s = (scaleM.xAxis().x, scaleM.yAxis().y, scaleM.zAxis().z)\n                    r = rotM.rotationsZXY()\n                    t = (transM[12], transM[13], transM[14])\n                    \n                    for ch in range(3):\n                        scale_data[ch].append((i, s[ch]))\n                        rotate_data[ch].append((i, math.degrees(r[ch])))\n                        translate_data[ch].append((i, t[ch]))\n\n                print(f\"  [calculate_corner_pin] Matrix decomposition completed in {time_module.time() - matrix_start:.3f}s\")\n                \n                # --- BATCH INJECT STRINGS (FIXES SLOWDOWN) ---\n                inject_start = time_module.time()\n                set_anim_curve_from_data(scale, scale_data)\n                set_anim_curve_from_data(rotate, rotate_data)\n                set_anim_curve_from_data(translate, translate_data)\n                uniform_scale.setValue(1)\n                print(f\"  [calculate_corner_pin] Animation injection completed in {time_module.time() - inject_start:.3f}s\")\n\n                with C2Tgroup:\n                    am = nuke.toNode('aM')\n                    am['translate'].setExpression('parent.'+'Translate_X_'+label)\n                    am['rotate'].setExpression('parent.'+'Rotate_X_'+label)\n                    expr_x = '0.5*parent.Scale_X_'+label+'.x'; expr_y = 'input0.pixel_aspect*0.5*parent.Scale_X_'+label+'.y'\n                    nuke.toNode('a1')['translate'].setExpression('-'+expr_x, 0); nuke.toNode('a1')['translate'].setExpression('-'+expr_y, 1)\n                    nuke.toNode('a2')['translate'].setExpression(expr_x, 0); nuke.toNode('a2')['translate'].setExpression('-'+expr_y, 1)\n                    nuke.toNode('a3')['translate'].setExpression(expr_x, 0); nuke.toNode('a3')['translate'].setExpression(expr_y, 1)\n                    nuke.toNode('a4')['translate'].setExpression('-'+expr_x, 0); nuke.toNode('a4')['translate'].setExpression(expr_y, 1)\n            else:\n                translate.setExpression('Perspective.translate.x',0); translate.setExpression('Perspective.translate.y',1); translate.setExpression('Perspective.translate.z',2)\n                rotate.setExpression('Perspective.rotate.x',0); rotate.setExpression('Perspective.rotate.y',1); rotate.setExpression('Perspective.rotate.z',2)\n                scale.setExpression('Perspective.scaling.x',0); scale.setExpression('Perspective.scaling.y',1); scale.setExpression('Perspective.scaling.z',2)\n                uniform_scale.setExpression('Perspective.uniform_scale')\n\n        # Internal Expressions for CornerPin\n        for one in toes:\n            idx = \"a\" + str(toes.index(one) + 1)\n            ratio = \"input0.width*DummyCam.focal/DummyCam.haperture\"\n            one.setExpression(f\"({idx}.world_matrix.3/-{idx}.world_matrix.11) * {ratio}+input0.width/2 - DummyCam.win_translate.u*input0.width/2\", 0)\n            one.setExpression(f\"({idx}.world_matrix.7/-{idx}.world_matrix.11)*input0.pixel_aspect*{ratio}+input0.height/2-DummyCam.win_translate.v*input0.width/2\", 1)\n\n        # Bake Focal Length (Fast enough with standard loop)\n        with C2Tgroup:\n            focal_knob = nuke.toNode(\"DummyCam\")['focal']\n            if focal_knob.isAnimated() and not focal_knob.animation(0).constant():\n                f_anim = focal_knob.animation(0)\n                f_data = [(f, f_anim.evaluate(f)) for f in range(first, last+1)]\n                for f, v in f_data: f_anim.setKey(f, v)\n                focal_knob.setExpression('curve')\n\n        # --- BATCH BAKE CORNER PINS AND CARD KNOBS ---\n        # Must bake both toes (corner pins) and cardknobs (translate, rotate, scale)\n        bake_start = time_module.time()\n        knobs_to_bake = toes + cardknobs\n        for k_idx, knob in enumerate(knobs_to_bake):\n            if task.isCancelled(): break\n            task.setMessage(f\"Baking {knob.name()}\")\n            task.setProgress(40 + int((k_idx/len(knobs_to_bake))*50))\n\n            if knob.isAnimated():\n                aSize = 1 if knob.singleValue() else knob.arraySize()\n                k_data = [[] for _ in range(aSize)]\n                \n                for f in range(first, last+1):\n                    for ch in range(aSize):\n                        anim = knob.animation(ch)\n                        if anim and not anim.noExpression():\n                            k_data[ch].append((f, anim.evaluate(f)))\n                \n                # Only apply if we have data\n                if any(k_data):\n                    # Filter out empty channels\n                    non_empty_data = [ch_data for ch_data in k_data if ch_data]\n                    if non_empty_data:\n                        set_anim_curve_from_data(knob, k_data)\n\n        print(f\"  [calculate_corner_pin] Baking knobs completed in {time_module.time() - bake_start:.3f}s\")\n\n        with C2Tgroup:\n            focal_knob.setExpression(\"[expression [value the_cam]focal([value the_frame])]\")\n\n    except Exception as e:\n        print(f\"Error in calculate_corner_pin: {e}\")\n    finally:\n        _undo_enable()\n        del task\n        total_time = time_module.time() - start_time\n        print(f\"  [calculate_corner_pin] Total time: {total_time:.3f}s\")\n\ndef calculate_translate(C2Tgroup,label):\n    import time as time_module\n    start_time = time_module.time()\n    \n    bg = C2Tgroup.input(0)\n    first = int(C2Tgroup['FirstFrame_X_'+label].value())\n    last = int(C2Tgroup['LastFrame_X_'+label].value())\n    frame_count = last - first + 1\n    print(f\"  [calculate_translate] Processing {frame_count} frames ({first}-{last})\")\n    \n    to1,to2,to3,to4 = C2Tgroup['to1_X_'+label], C2Tgroup['to2_X_'+label], C2Tgroup['to3_X_'+label], C2Tgroup['to4_X_'+label]\n    \n    task = nuke.ProgressTask(\"Calculating Translate\")\n    progress_step = 30 \n    _undo_disable()\n    \n    try:\n        translateT_knob = C2Tgroup['TranslateT_X_'+label]\n        bg_width_half = bg.width() / 2\n        bg_height_half = bg.height() / 2\n        \n        data_x, data_y = [], []\n        frames = range(first, last+1)\n        \n        read_start = time_module.time()\n        for idx, f in enumerate(frames):\n            if task.isCancelled(): break\n            if idx % progress_step == 0:\n                task.setMessage(f\"Processing frame {f}\")\n                task.setProgress(int((idx / len(frames)) * 100))\n                \n            t1 = to1.getValueAt(f); t2 = to2.getValueAt(f); t3 = to3.getValueAt(f); t4 = to4.getValueAt(f)\n            avg_x = (t1[0]+t2[0]+t3[0]+t4[0])/4 - bg_width_half\n            avg_y = (t1[1]+t2[1]+t3[1]+t4[1])/4 - bg_height_half\n            data_x.append((f, avg_x)); data_y.append((f, avg_y))\n        \n        print(f\"  [calculate_translate] Data collection completed in {time_module.time() - read_start:.3f}s\")\n            \n        set_anim_curve_from_data(translateT_knob, [data_x, data_y])\n        C2Tgroup['centerT_X_'+label].setValue([bg.width()/2, bg.height()/2])\n        \n    finally:\n        _undo_enable()\n        del task\n        total_time = time_module.time() - start_time\n        print(f\"  [calculate_translate] Total time: {total_time:.3f}s\")\n\ndef calculate_matrix(C2Tgroup,label):\n    import time as time_module\n    start_time = time_module.time()\n    \n    to1 = C2Tgroup['to1_X_'+label]; to2 = C2Tgroup['to2_X_'+label]\n    to3 = C2Tgroup['to3_X_'+label]; to4 = C2Tgroup['to4_X_'+label]\n    matrix = C2Tgroup['matrix_X_'+label]\n    width = C2Tgroup.input(0).width()\n    height = C2Tgroup.input(0).height()\n\n    first = int(C2Tgroup['FirstFrame_X_'+label].value())\n    last = int(C2Tgroup['LastFrame_X_'+label].value())\n    frame_count = last - first + 1\n    print(f\"  [calculate_matrix] Processing {frame_count} frames ({first}-{last})\")\n    \n    task = nuke.ProgressTask(\"Calculating Matrix\")\n    progress_step = 30 \n    _undo_disable()\n    \n    try:\n        matrix_data = [[] for _ in range(16)]\n        projFrom = nuke.math.Matrix4()\n        projFrom.mapUnitSquareToQuad(0, 0, width, 0, width, height, 0, height)\n        projFromInv = projFrom.inverse()\n        projTo = nuke.math.Matrix4()\n        \n        calc_start = time_module.time()\n        frames = range(first, last+1)\n        for idx, f in enumerate(frames):\n            if task.isCancelled(): break\n            if idx % progress_step == 0:\n                task.setMessage(f\"Matrix frame {f}\")\n                task.setProgress(int((idx / len(frames)) * 100))\n                \n            t1 = to1.getValueAt(f); t2 = to2.getValueAt(f); t3 = to3.getValueAt(f); t4 = to4.getValueAt(f)\n            projTo.mapUnitSquareToQuad(t1[0], t1[1], t2[0], t2[1], t3[0], t3[1], t4[0], t4[1])\n            resM = projTo * projFromInv\n            resM.transpose()\n            \n            for i in range(16): matrix_data[i].append((f, resM[i]))\n        \n        print(f\"  [calculate_matrix] Matrix computation completed in {time_module.time() - calc_start:.3f}s\")\n                \n        inject_start = time_module.time()\n        set_anim_curve_from_data(matrix, matrix_data)\n        print(f\"  [calculate_matrix] Animation injection completed in {time_module.time() - inject_start:.3f}s\")\n\n    finally:\n        _undo_enable()\n        del task\n        total_time = time_module.time() - start_time\n        print(f\"  [calculate_matrix] Total time: {total_time:.3f}s\")\n\n# -------------------------------------------------------------------------------------\n# OBJECT CREATION\n# -------------------------------------------------------------------------------------\n\ndef card_code():\n    _create_object_helper('Card')\ndef corner_code():\n    _create_object_helper('CornerPin')\ndef transform_code():\n    _create_object_helper('Transform')\ndef roto_code():\n    _create_object_helper('Roto')\n\ndef _create_object_helper(type):\n    if type == 'Card': _card_impl()\n    elif type == 'CornerPin': _cp_impl()\n    elif type == 'Transform': _tr_impl()\n    elif type == 'Roto': _roto_impl()\n\ndef _card_impl():\n    import time as time_module\n    start_time = time_module.time()\n    \n    panel = nuke.Panel(\"Choose your 3D object\")\n    panel.addEnumerationPulldown(\"objects:\", \"Card Axis Cube Sphere Cylinder Light TransformGeo Camera2\")\n    if panel.show(): \n        object_3d = panel.value(\"objects:\")\n        if object_3d in ['Card','Camera']: object_3d += '2'\n        C2Tgroup = nuke.thisNode()\n        label = nuke.thisKnob().name().rpartition('_X_')[2]\n        print(f\"\\n[CardToTrack] Creating 3D object '{object_3d}' for '{label}'...\")\n        x = C2Tgroup['xpos'].value(); y = C2Tgroup['ypos'].value()\n        with nuke.Root():\n            x = offset_nodes(x,y)\n            card = nuke.createNode(object_3d)\n            card.setInput(0,None); card.setXYpos(int(x+110), int(y))\n            card.setName(panel.value(\"objects:\")+\"_\"+label)\n            knob = nuke.Text_Knob('card_to_track', ''); knob.setValue(C2Tgroup.name()+\":card: \"+label); card.addKnob(knob)\n            if object_3d == 'Card2': card['image_aspect'].setValue(0)\n            \n            if C2Tgroup['Baked_X_'+label].value():\n                for k, src in [('translate','Translate'),('rotate','Rotate'),('scaling','Scale'),('uniform_scale','Uniform_scale')]:\n                    if C2Tgroup[src+'_X_'+label].isAnimated(): card[k].copyAnimations(C2Tgroup[src+'_X_'+label].animations())\n                    else: card[k].setValue(C2Tgroup[src+'_X_'+label].value())\n            else:\n                card['translate'].setExpression(\"parent.\"+C2Tgroup.name()+'.Translate_X_'+label)\n                card['rotate'].setExpression(\"parent.\"+C2Tgroup.name()+'.Rotate_X_'+label)\n                card['scaling'].setExpression(\"parent.\"+C2Tgroup.name()+'.Scale_X_'+label)\n                card['uniform_scale'].setExpression(\"parent.\"+C2Tgroup.name()+'.Uniform_scale_X_'+label) \n            card.showControlPanel()\n            \n            elapsed = time_module.time() - start_time\n            print(f\"[CardToTrack] 3D object creation completed in {elapsed:.3f} seconds\")\n\ndef _cp_impl():\n    import time as time_module\n    start_time = time_module.time()\n    \n    C2Tgroup = nuke.thisNode()\n    label = nuke.thisKnob().name().rpartition('_X_')[2]\n    print(f\"\\n[CardToTrack] Creating CornerPin for '{label}'...\")\n    ref = int(C2Tgroup['ReferenceFrame_X_'+label].value())\n    x = C2Tgroup['xpos'].value(); y = C2Tgroup['ypos'].value()\n    with nuke.Root():\n        x = offset_nodes(x,y)\n        try:\n            cp = nuke.nodes.NST_CProject2(xpos = x+110, ypos = y)\n            cp.setName(\"CP_\"+label); cp['refFrame'].setValue(ref); cp['label'].setValue(\"Matchmove\\n\"+str(ref))\n            cp['card_to_track'].setValue(C2Tgroup.name()+\":cornerpin: \"+label)\n        except:\n            cp = nuke.nodes.CornerPin2D(label=label, xpos=x+110, ypos=y)\n        \n        if C2Tgroup['Baked_X_'+label].value():\n            for i in range(1,5):\n                cp[f'to{i}'].copyAnimations(C2Tgroup[f'to{i}_X_'+label].animations())\n                cp[f'from{i}'].setValue(C2Tgroup[f'to{i}_X_'+label].getValueAt(float(ref)))\n        else:\n            for i in range(1,5):\n                cp[f'to{i}'].setExpression(f\"parent.parent.{C2Tgroup.name()}.to{i}_X_{label}\")\n                cp[f'from{i}'].setValue(C2Tgroup[f'to{i}_X_'+label].getValueAt(ref))\n        cp.showControlPanel()\n        \n        elapsed = time_module.time() - start_time\n        print(f\"[CardToTrack] CornerPin creation completed in {elapsed:.3f} seconds\")\n\ndef _tr_impl():\n    import time as time_module\n    start_time = time_module.time()\n    \n    C2Tgroup = nuke.thisNode()\n    label = nuke.thisKnob().name().rpartition('_X_')[2]\n    print(f\"\\n[CardToTrack] Creating Transform for '{label}'...\")\n    \n    calc_start = time_module.time()\n    calculate_translate(C2Tgroup, label)\n    print(f\"  [_tr_impl] calculate_translate took {time_module.time() - calc_start:.3f}s\")\n    \n    ref = str(int(C2Tgroup['ReferenceFrame_X_'+label].value()))\n    x = C2Tgroup['xpos'].value(); y = C2Tgroup['ypos'].value()\n    with nuke.Root():\n        x = offset_nodes(x,y)\n        try:\n            tr = nuke.nodes.NST_TProject2(xpos=x+110, ypos=y)\n            tr.setName(\"TP_\"+label); tr['label'].setValue(\"Matchmove\\n\"+ref)\n            tr['card_to_track'].setValue(C2Tgroup.name()+\":transform: \"+label)\n        except:\n            tr = nuke.nodes.Transform(label=label, xpos=x+110, ypos=y)\n        \n        if C2Tgroup['Baked_X_'+label].value():\n            tr['translate'].copyAnimations(C2Tgroup['TranslateT_X_'+label].animations())\n            tr['center'].setValue(C2Tgroup['centerT_X_'+label].value())\n        else:\n            tr['translate'].setExpression(f\"parent.parent.{C2Tgroup.name()}.TranslateT_X_{label}\")\n            tr['center'].setExpression(f\"parent.parent.{C2Tgroup.name()}.centerT_X_{label}\")\n        tr.showControlPanel()\n        if 'setCurrentAsRefFrame' in tr.knobs(): tr['setCurrentAsRefFrame'].execute()\n        \n        elapsed = time_module.time() - start_time\n        print(f\"[CardToTrack] Transform creation completed in {elapsed:.3f} seconds\")\n\ndef _roto_impl():\n    import time as time_module\n    start_time = time_module.time()\n    \n    message = '''Looks like Nuke does not support linking of the transformation matrix in roto nodes - please bake instead.\n\n    Since we are able to recalculate nodes if camera is updated - i will generally recommend to bake and not to link nodes while using CardToTrack.'''\n    \n    C2Tgroup = nuke.thisNode()\n    label = nuke.thisKnob().name().rpartition('_X_')[2]\n    ask = C2Tgroup['Baked_X_'+label].value()\n    \n    if ask:\n        print(f\"\\n[CardToTrack] Creating Roto for '{label}'...\")\n        \n        ref = C2Tgroup['ReferenceFrame_X_'+label].value()\n        x = C2Tgroup['xpos'].value()\n        y = C2Tgroup['ypos'].value()\n        first = C2Tgroup['FirstFrame_X_'+label].value()\n        last = C2Tgroup['LastFrame_X_'+label].value()\n        \n        to1 = C2Tgroup['to1_X_'+label]\n        to2 = C2Tgroup['to2_X_'+label]\n        to3 = C2Tgroup['to3_X_'+label]\n        to4 = C2Tgroup['to4_X_'+label]\n        matrix = C2Tgroup['matrix_X_'+label]\n        \n        # CRITICAL: Must set animated before calculating matrix\n        matrix.setAnimated()\n        \n        calc_start = time_module.time()\n        calculate_matrix(C2Tgroup, label)\n        print(f\"  [_roto_impl] calculate_matrix took {time_module.time() - calc_start:.3f}s\")\n        \n        # Create roto node and copy animation from matrix to roto root matrix\n        with nuke.Root():\n            panel = nuke.Panel(\"Roto or RotoPaint\")\n            panel.addEnumerationPulldown(\"Roto Type:\", \"Roto RotoPaint\")\n            if panel.show():\n                rototype = panel.value(\"Roto Type:\")\n                x = offset_nodes(x, y)\n                if rototype == \"Roto\":\n                    roto = nuke.nodes.Roto(xpos=x+110, ypos=y)\n                else:\n                    roto = nuke.nodes.RotoPaint(xpos=x+110, ypos=y)\n                roto.setName(roto['name'].value().replace('Roto', 'R')+\"_\"+label)\n                roto['cliptype'].setValue(\"no clip\")\n                nuke.show(roto)\n                knob = nuke.Text_Knob('card_to_track', '')\n                knob.setValue(C2Tgroup.name()+\":roto: \"+label)\n                roto.addKnob(knob)\n                \n                # Copy matrix animation to roto\n                roto['transform_matrix'].copyAnimations(C2Tgroup['matrix_X_'+label].animations())\n                roto['curves'].changed()\n                \n                # Apply format to the roto node\n                group_format = C2Tgroup.format()\n                name = group_format.name()\n                if name:\n                    roto['format'].setValue(name)\n                else:\n                    width = str(group_format.width())\n                    height = str(group_format.height())\n                    aspect = str(group_format.pixelAspect())\n                    name = \"temp_\"+width+\"x\"+height\n                    new_format = width+\" \"+height+\" \"+aspect+\" \"+name\n                    nuke.addFormat(new_format)\n                    roto['format'].setValue(name)\n                \n                elapsed = time_module.time() - start_time\n                print(f\"[CardToTrack] Roto creation completed in {elapsed:.3f} seconds\")\n    else:\n        nuke.message(message)\n\ndef object_only():\n    C2Tgroup=nuke.thisGroup()\n    t = C2Tgroup['translate'].value(); r = C2Tgroup['rotate'].value()\n    s = C2Tgroup['scaling'].value(); u = C2Tgroup['uniform_scale'].value()\n    panel = nuke.Panel(\"object\")\n    panel.addSingleLineInput(\"Object Name:\",\"\")\n    panel.addEnumerationPulldown(\"objects:\", \"Card Axis Cube Sphere Cylinder Light TransformGeo Camera\")\n    if panel.show(): \n        ob = panel.value(\"objects:\"); name = panel.value(\"Object Name:\")\n        obj = nuke.createNode(ob); x = C2Tgroup['xpos'].value(); y = C2Tgroup['ypos'].value()\n        obj.setInput(0,None); obj['xpos'].setValue(int(x)); obj['ypos'].setValue(int(y+100))\n        obj['translate'].setValue(t); obj['rotate'].setValue(r)\n        obj['scaling'].setValue(s); obj['uniform_scale'].setValue(u)\n        obj.setName(name)\n\n\n# -------------------------------------------------------------------------------------\n# CProject and TProject Functions\n# -------------------------------------------------------------------------------------\n\ndef set_ref_frame_cp(frame, node):\n    '''\n    Set reference frame for corner pin node (CProject/TProject)\n    '''\n    ntn = nuke.thisNode()\n    if node == 'cornerpin':\n        set_to_input_label_toggle(ntn, unset=True)\n        for one in range(1, 5):\n            ntn['from'+str(one)].setValue(ntn['to'+str(one)].valueAt(frame))\n    elif node == 'translate':\n        with ntn:\n            pall = nuke.toNode(\"refPall\")\n            papa = nuke.toNode(\"Transform1\")\n            pall['disable'].setValue(False)\n            knobs = [\"translate\", \"rotate\", \"scale\", \"center\"]\n            for one in knobs:\n                pall[one].setValue(papa[one].value())\n\n    ntn['label'].setValue(ntn['mode_toggle'].label().rpartition(\">\")[2]+\"\\n\"+str(frame))\n    ntn['refFrame'].setValue(frame)\n    with ntn:\n        nuke.toNode(\"FHold\")['first_frame'].setValue(frame)\n\n\nstored = []\ndef recurseUpSelect(node):\n    '''\n    Recursively select upstream nodes\n    '''\n    global stored\n    if node != None and node not in stored:\n        for i in range(node.inputs()):\n            recurseUpSelect(node.input(i))\n            stored.append(node.input(i))\n    return stored\n\n\ndef toggle_matchmove_stabilise(node):\n    '''\n    Toggle matchmove vs stabilise in CProject or TProject\n    '''\n    ntn = nuke.thisNode()\n    ntk = nuke.thisKnob()\n    ref_frame = str(int(ntn['refFrame'].value()))\n    lab = ntk.label()\n\n    mm = \"<h1 style = 'font-size:30'><b><font color=#9667D1>Matchmove\"\n    stab = \"<h1 style = 'font-size:30'><b><font color=#797BFF>Stabilize\"\n\n    if lab == mm:\n        ntk.setLabel(stab)\n        ntn['invert'].setValue(True)\n        ntn['tile_color'].setValue(1834205695)\n\n        if node == 'translate':\n            ntn['label'].setValue(\"Stabilize\\n\"+ref_frame)\n            with ntn:\n                nuke.toNode('refPall')['disable'].setValue(False)\n        else:\n            if ntn['set_to_input_1'].label() == \"<h1 style = 'font-size:10'><b>Set To Input\":\n                ntn['label'].setValue(\"Stabilize\\ninput\")\n            else:\n                ntn['label'].setValue(\"Stabilize\\n\"+ref_frame)\n\n    elif lab == stab:\n        ntk.setLabel(mm)\n        ntn['invert'].setValue(False)\n        ntn['tile_color'].setValue(2051246591)\n\n        if node == 'translate':\n            ntn['label'].setValue(\"Matchmove\\n\"+ref_frame)\n            with ntn:\n                nuke.toNode('refPall')['disable'].setValue(True)\n        else:\n            if ntn['set_to_input_1'].label() == \"<h1 style = 'font-size:10'><b>Set To Input\":\n                ntn['label'].setValue(\"Matchmove\\ninput\")\n            else:\n                ntn['label'].setValue(\"Matchmove\\n\"+ref_frame)\n\n    if node != 'translate':\n        # Auto toggle for second CProject to check input/output aspect checkboxes\n        global stored\n        stored = []\n        upstreamNodes = recurseUpSelect(ntn.input(0))\n        for one in upstreamNodes:\n            if one:\n                if 'card_to_track' in one.knobs():\n                    image_aspect = one['image_aspect'].value()\n                    image_aspect_out = one['image_aspect_out'].value()\n                    if image_aspect_out:\n                        ntn['image_aspect'].setValue(True)\n                        ntn['image_aspect_out'].setValue(False)\n                        break\n                    elif image_aspect:\n                        ntn['image_aspect_out'].setValue(True)\n                        ntn['image_aspect'].setValue(False)\n                        break\n                    else:\n                        ntn['image_aspect_out'].setValue(False)\n                        ntn['image_aspect'].setValue(False)\n                        break\n                else:\n                    ntn['image_aspect_out'].setValue(False)\n                    ntn['image_aspect'].setValue(False)\n\n\ndef set_to_input_label_toggle(ntn, unset):\n    '''\n    Toggle the set-to-input label state\n    '''\n    ntk = ntn['set_to_input_1']\n    lab = ntk.label()\n    input_set = \"<h1 style = 'font-size:10'><b>Set To Input\"\n    ref_frame_set = \"Set To Input\"\n    if unset:\n        ntk.setLabel(ref_frame_set)\n        return\n    if lab == input_set:\n        ntk.setLabel(ref_frame_set)\n    else:\n        ntk.setLabel(input_set)\n\n\ndef set_to_input_cp():\n    '''\n    Set 'From' values of the Corner pin to the input footage canvas.\n    '''\n    ntn = nuke.thisNode()\n    set_to_input_label_toggle(ntn, unset=False)\n    with ntn:\n        nuke.toNode(\"CornerPin2D2\")[\"set_to_input\"].execute()\n        ntn['label'].setValue(ntn['mode_toggle'].label().rpartition(\">\")[2]+\"\\ninput\")\n\n\ndef knob_changed_cp():\n    '''\n    Handle knob changes in CProject/TProject nodes\n    '''\n    nn = nuke.thisNode()\n    k = nuke.thisKnob()\n    kn = k.name()\n\n    if kn == \"cropP\":\n        if nn['cropP'].value() in [\"Hard Crop\"]:\n            nn[\"growBbox\"].setVisible(False)\n            nn[\"text\"].setValue(\"Image is cropped to Input, Concatenation preserved.\")\n\n        elif nn['cropP'].value() in [\"Adjustable Crop\"]:\n            nn[\"growBbox\"].setVisible(True)\n            nn[\"text\"].setValue(\"Adjust your Bbox , Downward <b><font color='Dark Red'>Concatenation is broken<b>.\")\n\n        elif nn['cropP'].value() in [\"No Crop\"]:\n            nn[\"growBbox\"].setVisible(False)\n            nn[\"text\"].setValue(\"No Crop applied, Concatenation preserved.\")\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_helper.py",
    "content": "\n##############################################################################################\n\n# NST helper utilities:\n# - Fixes file paths on created nodes that contain the <<<replace>>> token.\n# - Handles Documentation menu behavior (Auto, Online, Offline, PDF).\n# - Applies docs fallback order: Online -> Offline -> PDF with clear user messages.\n\nimport functools\nimport http.server\nimport nuke\nimport nukescripts\nimport socketserver\nimport ssl\nimport threading\nimport urllib.error\nimport urllib.request\nimport webbrowser\nfrom pathlib import Path\n\n##############################################################################################\n\n\n# Use Path.as_posix() to ensure forward slashes on all platforms (fixes Windows path issues)\nNST_FolderPath = Path(__file__).parent.parent.as_posix()\n\n# Defining a function to replace filepaths on tools importing files on creation\n\ndef filepathCreateNode(gizmoName):\n    if '.nk' in gizmoName:\n        nukescripts.clear_selection_recursive()\n        nuke.nodePaste(gizmoName)\n        fileNodes = nuke.selectedNodes()\n    else:\n        newGizmo = nuke.createNode(gizmoName)\n        fileNodes = newGizmo.nodes()\n    for i in fileNodes:\n        if i.Class() in (\"Read\", \"DeepRead\", \"ReadGeo\", \"ReadGeo2\", \"Camera2\", \"Axis2\"):\n            filepath = i.knob(\"file\").getValue()\n            if \"<<<replace>>>\" in filepath:\n                newFilepath = filepath.replace(\"<<<replace>>>\", NST_FolderPath)\n                i.knob(\"file\").setValue(newFilepath)\n\n##############################################################################################\n##############################################################################################\n### Documentation configuration\n# Values are configured in menu.py and assigned onto this module:\n# - NST_DOCS_ONLINE_URL\n# - NST_DOCS_ONLINE_TIMEOUT_SECONDS\n# - NST_DOCS_PDF_NAME\n# - NST_DOCS_OFFLINE_INDEX\n\n##############################################################################################\n##############################################################################################\n\n# Section to Handle Documentation Logic: Online -> Offline -> PDF\n\ndef _toolkit_root():\n    return Path(NST_FolderPath)\n\n\ndef find_offline_index():\n    # Offline wiki is installed in one canonical location.\n    # Checking if it's available.\n    doc_path = _toolkit_root() / NST_DOCS_OFFLINE_INDEX\n    if doc_path.is_file():\n        return doc_path\n    return None\n\n\ndef find_pdf_doc():\n    # PDF path is explicit; when docs release changes, update NST_DOCS_PDF_NAME.\n    # Checking if it's available.\n    pdf_path = _toolkit_root() / NST_DOCS_PDF_NAME\n    if pdf_path.is_file():\n        return pdf_path\n\n    return None\n\n\n# Local HTTP server for offline MkDocs (Material search / workers do not work reliably on file://).\n_httpd = None\n_httpd_thread = None\n_served_root = None\n\n\nclass _ReusableThreadingTCPServer(socketserver.ThreadingTCPServer):\n    allow_reuse_address = True\n\n\nclass _QuietStaticHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):\n    \"\"\"Same as SimpleHTTPRequestHandler but does not print one line per request to stderr.\"\"\"\n\n    def log_message(self, format, *args):\n        pass\n\n\ndef _shutdown_offline_http_server():\n    \"\"\"Stop the background http.server if it was started.\"\"\"\n    global _httpd, _httpd_thread, _served_root\n    if _httpd is None:\n        return\n    httpd = _httpd\n    thread = _httpd_thread\n    _httpd = None\n    _httpd_thread = None\n    _served_root = None\n    try:\n        httpd.shutdown()\n    except Exception:\n        pass\n    if thread is not None and thread.is_alive():\n        thread.join(timeout=2.0)\n\n\ndef _ensure_local_http_server(root):\n    \"\"\"Serve root on 127.0.0.1 with an ephemeral port; reuse if already serving same path.\"\"\"\n    global _httpd, _httpd_thread, _served_root\n    root = Path(root).resolve()\n    if (\n        _httpd is not None\n        and _httpd_thread is not None\n        and _httpd_thread.is_alive()\n        and _served_root == root\n    ):\n        return _httpd.server_address[1]\n    _shutdown_offline_http_server()\n    handler = functools.partial(_QuietStaticHTTPRequestHandler, directory=str(root))\n    _httpd_local = _ReusableThreadingTCPServer((\"127.0.0.1\", 0), handler)\n    thread = threading.Thread(target=_httpd_local.serve_forever, daemon=True)\n    thread.start()\n    _httpd = _httpd_local\n    _httpd_thread = thread\n    _served_root = root\n    return _httpd.server_address[1]\n\n\ndef _open_url_in_browser_async(url):\n    \"\"\"\n    Open the system browser without blocking Nuke's main thread. webbrowser.open can stall\n    the UI while the OS launches or hands off to the browser.\n    \"\"\"\n\n    def _run():\n        try:\n            webbrowser.open(url)\n        except Exception:\n            pass\n\n    threading.Thread(target=_run, daemon=True).start()\n\n\ndef _open_offline_index_in_browser(offline_index):\n    \"\"\"\n    Open offline wiki in the default browser. Prefer http://127.0.0.1 so MkDocs search works;\n    fall back to file:// if the local server cannot start.\n    \"\"\"\n    try:\n        port = _ensure_local_http_server(offline_index.parent)\n        _open_url_in_browser_async(f\"http://127.0.0.1:{port}/\")\n    except Exception:\n        _open_url_in_browser_async(offline_index.as_uri())\n\n\ndef is_online_wiki_reachable(timeout=None):\n    if timeout is None:\n        timeout = globals().get(\"NST_DOCS_ONLINE_TIMEOUT_SECONDS\", 1.5)\n    # Short preflight check prevents dead-clicks when the site is blocked/unreachable.\n    # Some environments/proxies reject HEAD while allowing GET, so always fall back to GET\n    # before returning False.\n    # If Python's SSL trust store cannot validate certs, treat as reachable and let the\n    # user's browser handle HTTPS trust (avoids false PDF fallback in Nuke environments).\n    for method in (\"HEAD\", \"GET\"):\n        request = urllib.request.Request(\n            NST_DOCS_ONLINE_URL,\n            headers={\"User-Agent\": \"NukeSurvivalToolkit\"},\n            method=method,\n        )\n        try:\n            with urllib.request.urlopen(request, timeout=timeout):\n                return True\n        except urllib.error.HTTPError:\n            if method == \"HEAD\":\n                continue\n            return False\n        except urllib.error.URLError as error:\n            if isinstance(getattr(error, \"reason\", None), ssl.SSLCertVerificationError):\n                return True\n            if method == \"HEAD\":\n                continue\n            return False\n        except ValueError:\n            if method == \"HEAD\":\n                continue\n            return False\n    return False\n\n\ndef openNSTDocumentationDefault():\n    # Auto fallback order: Online -> Offline -> PDF\n    # Note: this runs HTTPS reachability checks first (can block up to ~timeout per attempt).\n    # Use \"Wiki (Offline)\" when you have no network to skip that step.\n    if is_online_wiki_reachable():\n        webbrowser.open(NST_DOCS_ONLINE_URL)\n        return\n\n    offline_index = find_offline_index()\n    if offline_index:\n        _open_offline_index_in_browser(offline_index)\n        return\n\n    pdf_doc = find_pdf_doc()\n    if pdf_doc:\n        webbrowser.open(pdf_doc.as_uri())\n        return\n\n    nuke.message(\n        \"No documentation source was found.\\n\"\n        \"Use 'Wiki (Online)', or unzip NST_Documentation_Release_x.y.z.zip into \"\n        \"NukeSurvivalToolkit/NST_Documentation, or place a documentation PDF in the toolkit root.\"\n    )\n\n\ndef openNSTDocumentationOnline():\n    # Online command stays direct: no fallback, just clear guidance if unreachable.\n    if is_online_wiki_reachable():\n        webbrowser.open(NST_DOCS_ONLINE_URL)\n        return\n\n    nuke.message(\n        \"Online wiki is not reachable right now.\\n\"\n        \"Try 'Wiki (Offline)' or 'Docs (PDF)'.\"\n    )\n\n\ndef openNSTDocumentationOffline():\n    # Offline command opens canonical local index only.\n    offline_index = find_offline_index()\n    if offline_index:\n        _open_offline_index_in_browser(offline_index)\n        return\n\n    nuke.message(\n        \"Offline wiki not found.\\n\"\n        \"Unzip NST_Documentation_Release_x.y.z.zip into NukeSurvivalToolkit so \"\n        \"NST_Documentation/index.html exists.\"\n    )\n\n\ndef openNSTDocumentationPDF():\n    # PDF command opens one explicit release PDF path.\n    pdf_doc = find_pdf_doc()\n    if pdf_doc:\n        webbrowser.open(pdf_doc.as_uri())\n        return\n\n    nuke.message(\n        \"Documentation PDF not found in toolkit root.\\n\"\n        \"Try 'Wiki (Online)' or install the optional offline docs release ZIP.\"\n    )\n\n##############################################################################################\n"
  },
  {
    "path": "NukeSurvivalToolkit/python/NST_stickit.py",
    "content": "# stickit.py\n# Copyright (c) 2017 Mads Hagbarth Damsbo. All Rights Reserved.\n# Not for redistribution.\n\nimport nuke\nimport nuke.splinewarp as sw \nimport string #This is used by the code. Include!\nimport math\nimport struct\nimport time\n\n'''\nREAL TODO:\n\nGeneral Feedback:\nIn regards to assist its hard to figure if something have been sucessfully been applied or not.\n  This could be fixed by making a green label with \"Roto Node Assisted\", then fade to grey using a timer.\n\nMUST HAVE:\n  -Hook up the \"Output\" options to their respective nodes\n    in that regard remove the \"hide source\" option\n  -Check the buttons in the buttom of the advanced tab and remove the ones that we no longer need.\n  -Test the heck out of different formats and what not to enure that we don't get bounding issues.\n  -option to invert input mask!\n  -The ST map should source its X and Y from the Source image, not the overlay image!\n  --Add a option to only source the alpha from the Overlay (so that if the source have a alpha it won't carry through.)\n  Add another ST frame offset for calculating center motionblur. (or should it be hacked using offset?)\n\nNICE TO HAVE:\n  Add a button for the ref frame called \"Current Frame\"\n  Add a status that show if the shot have been tracked and solved (solve range aswell).\n    This should also highlight if the \"Disable Warp\" have been toggeled\n  Add some Analyze/Tracking presets (ie; Full Frame, Medium Object, Small Object)\n  Add a button that generates a ST-Map node and a vectorblur node outside the node. (Create ST Setup)\n\n\n\nDONE\n  +Make sure that the ST map matches. (check again!)  \n\n\nFOR CONSIDERATION:\nConsider a workflow to work with fully obscured regions (guides maybe)\nPost filter that takes all the keyframes created and does eighter smoothing or reduces the number of keyframes to the bare minimum (based on a threshold)\n    Calculate the length of the vector\n    Devide each axis by the length to get a normalized vector\n    First do a check to ensure that the vector is shorter than the threshold\n    Then comput a direction that is the averaged normalized vector from the frames that we inspect\n      If the computed direction is within the threshhold then...\n  one thing that there is to consider is that you may want to not write down the keyframes first.\n  for example in a roto or rotopaint workflow, it might be smart to gther the keyframes, filter, then apply them to the spline.\n\n\nSave the animation curve.\n  Add a interpolate range feature. \n    -You set the in and out point.\n    -You hit interpolate (it will do a linear interpolation between the points)\n    -Now the user can retrack forward\n\n\n\n'''\n\n'''\n#Todo:\n-Get all points from the CameraTracker and put them into a list\n-Create a initial set of points, this could be all points on a certain frame or a general set of points.\n  If we take from a certain frame we need to get a list of all points that are on the specified frame\n-For every source object we put in a single value that is the XY pos of the object in the specified frame\n\n-For every target object we triangulate the nearby points and get a new position, we do that for all the frames in the framerange specified.\n-For every target object we bake animation calculated in the step above\n\n\nRemember that we must save the new calculated position into a new list or modify the exsisting to get perfect results\n'''\n\n'''================================================================================\n; Function:          CreateWarpPinPair(myNode):\n; Description:       Create a Splinewarp pin pair.\n; Parameter(s):      node - The node create pin in\n; Return(s):         Returns a pair of pin objects (_curveknob.Stroke objects) [source,target]\n;                    specified - Only take knobs with this tag (like \"UserTrack\" from a cameratracker)\n; Note(s):            N/A\n;=================================================================================='''\ndef CreateWarpPinPair(myNode,pointlist,refframe):\n  ItemX = pointlist\n\n  #First we want to clear the current splinewarp.\n  #As there is no build-in function to do this, we just purge it with default data\n  warpCurve = myNode['curves'] \n  warpRoot = warpCurve.rootLayer\n  Header = \"\"\"AddMode 0 0 1 0 {{v x3f99999a}\n  {f 0}\n  {n\n  {layer Root\n  {f 0}\n  {t x44800000 x44428000}\n  {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}}}}\n  \"\"\"\n  warpCurve.fromScript(Header)\n  warpCurve.changed()\n\n  #As we just cleared the curves knob we need to re-fetch it. \n  #If we don't do this Nuke will crash in some cases.\n  #This should be reported to TheFoundry.\n  warpCurve = myNode['curves'] \n  warpRoot = warpCurve.rootLayer\n\n  #We start off by creating all the pins that we need.\n  #We do this in 2 steps. First we create the src then the dst\n  for i in range(0, len(ItemX)):\n    PinSource = sw.Shape(warpCurve, type=\"bezier\") #single point distortion \n    newpoint = sw.ShapeControlPoint() #create point \n    ConvertedX = float(pointlist[i][int(refframe-float(pointlist[i][0][0]))][1])\n    ConvertedY = float(pointlist[i][int(refframe-float(pointlist[i][0][0]))][2])\n    newpoint.center = (ConvertedX,ConvertedY) #set center position\n    newpoint.leftTangent = (0,0) #set left tangent relative to center\n    newpoint.rightTangent = (0,0) #set right tangent relative to center\n    PinSource.append(newpoint) #add point to shape \n    PinTarget = sw.Shape(warpCurve, type=\"bezier\") #single point distortion \n    newpointB = sw.ShapeControlPoint() #create point\n    newpointB.center = (ConvertedX,ConvertedY) #set center position\n    newpointB.leftTangent = (0,0) #set left tangent relative to center\n    newpointB.rightTangent = (0,0) #set right tangent relative to center\n    PinTarget.append(newpointB) #add point to shape \n    warpRoot.append(PinSource) #add to the rootLayer \n    warpRoot.append(PinTarget) #add to the rootLayer \n    warpCurve.defaultJoin(PinSource,PinTarget) \n    warpCurve.changed() #Update the curve\n\n    PinSource.getTransform().getTranslationAnimCurve(0).removeAllKeys()\n    PinSource.getTransform().getTranslationAnimCurve(1).removeAllKeys()\n    PinTarget.getTransform().getTranslationAnimCurve(0).removeAllKeys()\n    PinTarget.getTransform().getTranslationAnimCurve(1).removeAllKeys()\n    PinSource.getTransform().addTranslationKey(refframe,0,0,100.0)\n    for ix in range(0, len(pointlist[i])):\n\n      PinTarget.getTransform().getTranslationAnimCurve(0).addKey(pointlist[i][ix][0],float(pointlist[i][ix][1])-float(pointlist[i][int(refframe-float(pointlist[i][0][0]))][1]))\n      PinTarget.getTransform().getTranslationAnimCurve(1).addKey(pointlist[i][ix][0],float(pointlist[i][ix][2])-float(pointlist[i][int(refframe-float(pointlist[i][0][0]))][2]))\n      #print pointlist[i][ix][0]\n    warpCurve.changed() #Update the curve\n\n  CurrentData = warpCurve.toScript().replace('{f 8192}','{f 8224}') #Convert to splinewarp pins\n  warpCurve.fromScript(CurrentData)\n\n\n'''================================================================================\n; Function:             ExportCameraTrack(myNode):\n; Description:          Extracts all 2D Tracking Featrures from a 3D CameraTracker node (not usertracks).\n; Parameter(s):         myNode - A CameraTracker node containing tracking features\n; Return:               Output - A list of points formated [ [[Frame,X,Y][...]] [[...][...]] ]\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef ExportCameraTrack(myNode):\n    myKnob = myNode.knob(\"serializeKnob\")\n    myLines = myKnob.toScript()    \n    DataItems = string.split(myLines, '\\n')\n    Output = []\n    for index,line in enumerate(DataItems):\n        tempSplit = string.split(line, ' ')\n        if (len(tempSplit) > 4 and tempSplit[ len(tempSplit)-1] == \"10\") or (len(tempSplit) > 6 and  tempSplit[len(tempSplit)-1] == \"10\"): #Header\n            #The first object always have 2 unknown ints, lets just fix it the easy way by offsetting by 2\n            if len(tempSplit) > 6 and  tempSplit[6] == \"10\":\n                offsetKey = 2\n                offsetItem = 0\n            else:\n                offsetKey = 0\n                offsetItem = 0\n            #For some wierd reason the header is located at the first index after the first item. So we go one step down and look for the header data.\n            itemHeader = DataItems[index+1]\n            itemHeadersplit = string.split(itemHeader, ' ')\n            itemHeader_UniqueID = itemHeadersplit[1]\n\n            #So this one is rather wierd but after a certain ammount of items the structure will change again.\n            backofs = 0\n            lastofs = 0\n            firstOffset = 0\n            secondOffset = 0\n            secondItem = DataItems[index+2]\n            secondSplit = string.split(secondItem, ' ')\n            if len(secondSplit) == 7:\n                 firstOffset = 0\n\n            if len(itemHeadersplit) == 3:\n                itemHeader = DataItems[index+2]\n                itemHeadersplit = string.split(itemHeader, ' ')\n                offsetKey = 2\n                offsetItem = 2\n                if len(secondSplit) == 11:\n                  firstOffset = 1 #In this case the 2nd item will be +1   \n                  backofs = 1             \n                elif len(secondSplit) == 7:\n                  firstOffset = 1\n                else:\n                  firstOffset = 0 #In this case the 2nd item will be +0\n\n\n            itemHeader_FirstItem = itemHeadersplit[3+offsetItem]\n            itemHeader_NumberOfKeys = itemHeadersplit[4+offsetKey]\n        \n            #Here we extract the individual XY coordinates\n            PositionList =[]\n            PositionList.append([LastFrame+(0),float(string.split(DataItems[index+0], ' ')[2])  ,float(string.split(DataItems[index+0], ' ')[3])])\n            for x in range(2,int(itemHeader_NumberOfKeys)+1):\n                if len(string.split(DataItems[index+x+firstOffset-1], ' '))>7 and len(string.split(DataItems[index+x+firstOffset-1], ' '))<10 and int(string.split(DataItems[index+x+firstOffset-1], ' ')[5]) > 0:\n                  Offset = int(string.split(DataItems[index+x+firstOffset-1], ' ')[7])\n                  PositionList.append([LastFrame+(x-1),float(string.split(DataItems[Offset+1], ' ')[2])  ,float(string.split(DataItems[Offset+1], ' ')[3])]) \n                  secondOffset = 1\n                else:\n                  \n                  if x==(int(itemHeader_NumberOfKeys)) and backofs == 1:\n                    PositionList.append([LastFrame+(x-1),float(string.split(DataItems[int(lastofs)], ' ')[2] ) ,float(string.split(DataItems[int(lastofs)], ' ')[3])])    \n                  else:\n                    PositionList.append([LastFrame+(x-1),float(string.split(DataItems[index+x+firstOffset-secondOffset], ' ')[2] ) ,float(string.split(DataItems[index+x+firstOffset-secondOffset], ' ')[3])])         \n                if len(string.split(DataItems[index+x+firstOffset+secondOffset], ' ')) > 5 and len(string.split(DataItems[index+x+firstOffset+secondOffset], ' ')) < 16:\n                  lastofs = str(string.split(DataItems[index+x+firstOffset+secondOffset], ' ')[5])\n                else:\n                  lastofs = index+x+1\n\n            Output.append(PositionList)\n        elif (len(tempSplit) > 8 and tempSplit[1] == \"0\" and tempSplit[2] == \"1\"):\n            LastFrame = int(tempSplit[3])\n        else:  #Content\n          pass\n    return Output\n\n'''================================================================================\n; Function:             GetAnimtionList(myList,myFrame):\n; Description:          Returns a list of points that contain animation between myFrame and the following frame\n; Parameter(s):         myList - A list of points formated [ [[Frame,X,Y][...]] [[...][...]] ]\n                        myFrame - The frame to take into consideration \n; Return:               Output - A list of points formated [ [[Frame,X,Y][...]] [[...][...]] ]\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef GetAnimtionList(myList,nestedPoints,myFrame,_rev=False,_ofs=False):   \n    Output = []\n    thisFrame = int(myFrame)\n    try:\n      if _rev: #This will reverse the output\n        for i,item in enumerate(nestedPoints[thisFrame]):\n            if nestedPoints[thisFrame][i][4]>thisFrame: \n                outThisframe = myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])]\n                outNextframe =  myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])+1]\n                Output.append([outNextframe,outThisframe])\n      elif _ofs: #This is a temporary fix to the strange offset bug\n        for i,item in enumerate(nestedPoints[thisFrame]):\n            if nestedPoints[thisFrame][i][4]>thisFrame: \n                outThisframe = myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])]\n                outNextframe =  myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])+1]\n                outThisframe = [outThisframe[0],outThisframe[1]+1,outThisframe[2]+0.01]\n                outNextframe = [outNextframe[0],outNextframe[1]+1,outNextframe[2]+0.01]\n                Output.append([outNextframe,outThisframe])      \n      else:\n        for i,item in enumerate(nestedPoints[thisFrame]):\n            if nestedPoints[thisFrame][i][4]>thisFrame: \n                outThisframe = myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])]\n                outNextframe =  myList[nestedPoints[thisFrame][i][2]][(thisFrame-nestedPoints[thisFrame][i][3])+1]\n                Output.append([outThisframe,outNextframe])\n    except:\n      pass #No points on this frame!\n    return Output\n\n'''================================================================================\n; Function:             GetNearestPoints(myList,myFrame):\n; Note(s):              N/A\n;=================================================================================='''\ndef GetNearestPoints(refpoint,pointList,_rev=False):\n  if len(pointList) < 3:\n    xOffset = 0.0\n    yOffset = 0.0\n  else:\n    #Distance Calculation\n    x1 = refpoint[1]\n    y1 = refpoint[2]\n    distancelist = []\n    #Check if there is more than 3 points at the current frame.\n    for item in pointList: #Does it read from the same frame or a new one?\n      #print item\n      x2 = item[0][1]\n      y2 = item[0][2]\n      dist = math.hypot(x2-x1, y2-y1)\n      distancelist.append(dist+1)\n\n    sorted_lookup = sorted(enumerate(distancelist), key=lambda i:i[1])\n\n    index0 = sorted_lookup[0][0]\n    index1 = sorted_lookup[1][0]\n    index2 = sorted_lookup[2][0]\n\n    perc0 = 1 / (sorted_lookup[0][1])\n    perc1 = 1 / (sorted_lookup[1][1])\n    perc2 = 1 / (sorted_lookup[2][1])\n\n    if perc0 == 1:\n      perc1 = 0\n      perc2 = 0\n    perctotal = perc0+perc1+perc2\n\n    Percent0 = perc0 if perctotal == 0 else perc0 / (perctotal)\n    Percent1 = perc1 if perctotal == 0 else perc1 / (perctotal)\n    Percent2 = perc2 if perctotal == 0 else perc2 / (perctotal)\n    x02 = pointList[index0][1][1]\n    y02 = pointList[index0][1][2]\n    x12 = pointList[index1][1][1]\n    y12 = pointList[index1][1][2]\n    x22 = pointList[index2][1][1]\n    y22 = pointList[index2][1][2]\n    x01 = pointList[index0][0][1]\n    y01 = pointList[index0][0][2]\n    x11 = pointList[index1][0][1]\n    y11 = pointList[index1][0][2]\n    x21 = pointList[index2][0][1]\n    y21 = pointList[index2][0][2]\n    xOffset = (((x02-x01) * Percent0) + (( x12-x11) * Percent1) + (( x22-x21) * Percent2))\n    yOffset = (((y02-y01) * Percent0) + (( y12-y11) * Percent1) + ((y22-y21) * Percent2))\n  return [xOffset, yOffset]\n\ndef GrabListData():\n    Node = nuke.toNode(\"si_ct\") #change this to your tracker node!\n    #01: Get all points from the cameratracker node.\n    _return = ExportCameraTrack(Node)\n\n    #02: To optimize the lookups we index all the data into frame lists containing [x,y,index,firstframe,lastframe]\n    #     this will give a 40+ times performence boost.\n    item_dict = {}\n    for list_index, big_lst in enumerate(_return):\n        for lst in big_lst:\n            if lst[0] in item_dict:\n                item_dict[lst[0]] += [lst[1:]+[list_index]+[_return[list_index][0][0], _return[list_index][len(_return[list_index])-1][0]],] # Append\n            else:\n                item_dict[lst[0]] = [lst[1:]+[list_index]+[_return[list_index][0][0], _return[list_index][len(_return[list_index])-1][0]],] # Initialize\n    return [_return,item_dict]\n\n'''================================================================================\nSimple median.\n;=================================================================================='''\ndef median(lst):\n    sortedLst = sorted(lst)\n    lstLen = len(lst)\n    index = (lstLen - 1) // 2\n    if (lstLen % 2):\n        return sortedLst[index]\n    else:\n        return (sortedLst[index] + sortedLst[index + 1])/2.0\n\n'''================================================================================\nRangeKeeper, use to store and calculate frame ranges.\n;=================================================================================='''\nclass rangeKeeper():\n  def __init__(self,_type):\n    self.frameForRef = 0\n    self.StartFrame = 0\n    self.EndFrame = 0\n    self.type = _type\n    self.appendAnimation = False\n    self.initvalues()\n\n  def initvalues(self):\n    self.appendAnimation = nuke.thisNode().knob(\"appendAnimation\").value()\n\n    if nuke.thisNode().knob(\"assistStep\").value(): #We only run \"x\" number of frames\n      _thisFrame = nuke.frame()\n      _startFrame = _thisFrame - int(nuke.thisNode().knob(\"AssistStepSize\").value())\n      _endFrame = _thisFrame + int(nuke.thisNode().knob(\"AssistStepSize\").value())\n    else: #We run the full range\n      _thisFrame = nuke.frame()\n      _startFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n      _endFrame = int(nuke.thisNode().knob(\"InputTo\").value()) \n    if self.type == 0: #Both Ways\n      self.frameForRef = _thisFrame\n      self.StartFrame = _startFrame\n      self.EndFrame = _endFrame  \n    elif self.type == 1: #Only forward\n      self.frameForRef = _thisFrame\n      self.StartFrame = _thisFrame\n      self.EndFrame = _endFrame \n    elif self.type == 2: #Only Backwards\n      self.frameForRef = _thisFrame\n      self.StartFrame = _startFrame\n      self.EndFrame = _thisFrame\n\n\n'''================================================================================\n; Function:             KeyframeReducer():\n; Description:          Removes unwanted keyframes based on a threshold\n;                           \n; Note(s):              _method  #0 = Local, 1 = Median, 2 = Average\n;=================================================================================='''\ndef KeyframeReducer(knob):\n    myKnob = knob\n    threshold = 1.5\n    firstFrame = 1\n    lastFrame = 99\n    reduce = False\n    for frame in range(firstFrame,lastFrame):\n        xd = myKnob.getValueAt(frame)[0]-myKnob.getValueAt(frame+1)[0]\n        yd = myKnob.getValueAt(frame)[1]-myKnob.getValueAt(frame+1)[1]\n        delta = math.sqrt(xd*xd+yd*yd)\n        if delta < threshold:\n            if reduce:\n                print (\"Reduce this\",frame)\n                if myKnob.isAnimated():\n                    myKnob.removeKeyAt(frame)\n            else:\n                print (help(myKnob.setValueAt))\n                #myKnob.removeKeyAt(frame)\n                #myKnob.setValueAt(myKnob.getValueAt(frame)[0],frame,0)\n                #myKnob.setValueAt(myKnob.getValueAt(frame)[1],frame,1)\n                reduce = True\n            print (frame, delta)\n        else:\n            reduce = False\n\n'''================================================================================\n; Function:             Solve2DTransform():\n; Description:          Used to solve the trackers in a 2dtracker node.\n;                           \n; Note(s):              _method  #0 = Local, 1 = Median, 2 = Average\n;=================================================================================='''\ndef CalculatePositionDelta(_method,_refpointList,temp_pos=[0,0]):\n  if _method == 0: #If we use local interpolation\n    newOffset = GetNearestPoints([0,temp_pos[0],temp_pos[1]],_refpointList)\n    _x3 = newOffset[0]\n    _y3 = newOffset[1]\n\n  elif _method == 1: #If we use global median interpolation\n    xlist = [] #Init the lists\n    ylist = []\n    for items in _refpointList:\n      xlist.append(float(items[1][1])-float(items[0][1])) #Add the motion delta to the list\n      ylist.append(float(items[1][2])-float(items[0][2]))        \n    _x3 = median(xlist) #Calculate median\n    _y3 = median(ylist)\n\n  else: #If we use global average interpolcation\n    _x3 = 0 #Init the value\n    _y3 = 0\n    for items in _refpointList:\n      _x3 += float(items[1][1])-float(items[0][1]) #Calculate motion delta\n      _y3 += float(items[1][2])-float(items[0][2])\n    _x3 = _x3/(len(_refpointList)+0.00001) #Devide by item cound to get average\n    _y3 = _y3/(len(_refpointList)+0.00001) \n  return [_x3,_y3]\n\n\n\n'''\n\nthisFrame = nuke.frame()\nmyNode =nuke.toNode(\"Transform15\")\nmyKnob = myNode[\"translate\"]\n\nanimationsX = myKnob.animation(0) #X-axis animations\nanimationsY = myKnob.animation(1) #Y-axis animations\nanimationList = [] #List to contain the animationnlist\n\npreProcessList = [] \npostProcessList = [] \nfor x,keys in enumerate(animationsX.keys()):\n    if keys.x<thisFrame:\n        preProcessList.append([keys.x,keys.y,animationsY.keys()[x].y])\n    else:\n        postProcessList.append([keys.x,keys.y,animationsY.keys()[x].y])  \nprint preProcessList\nprint postProcessList\n\n\n\n'''\n'''================================================================================\n; Function:             Solve2DTransform():\n; Description:          Used to solve the trackers in a 2dtracker node.\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef Solve2DTransform(_node):\n  global RangeKeeper\n  #Define Variables\n  solve_method = int(nuke.thisNode().knob(\"AssistType\").getValue()) #0 = Local, 1 = Median, 2 = Average\n  frameForRef = RangeKeeper.frameForRef\n  StartFrame = RangeKeeper.StartFrame\n  EndFrame = RangeKeeper.EndFrame\n  myNode = _node\n  myKnob = myNode.knob(\"translate\")\n  myKnobCenter = myNode.knob(\"center\")\n  useExsistingKeyframes = True\n\n  #Set some initial defaults\n  init_pos = [0,0]\n  center_pos = [0,0]\n  temp_pos = [0,0]\n  _xy = [0,0]\n  frameindex = 0\n  #Read data from the knobs\n  PointData = GrabListData()\n  init_pos = myKnob.getValue()\n  center_pos = myKnobCenter.getValue()\n\n  if useExsistingKeyframes:\n    animationsX = myKnob.animation(0) #X-axis animations\n    animationsY = myKnob.animation(1) #Y-axis animations\n    if not animationsY or not animationsX:\n      useExsistingKeyframes = 0\n    else:\n      preProcessList = []   #Initialize array\n      postProcessList = []  #Initialize array\n      for x,keys in enumerate(animationsX.keys()):\n          if keys.x<frameForRef: #If the item is below the refframe it should be processed in the back process\n              preProcessList.append([keys.x,keys.y,animationsY.keys()[x].y])\n          else:\n              postProcessList.append([keys.x,keys.y,animationsY.keys()[x].y])  \n      frameindex = len(preProcessList)-1 #The next keyframe to compare with is the last in the stack when going backwards\n\n  #Clear animation\n  if not RangeKeeper.appendAnimation:\n    myKnob.clearAnimated() #Only if overwrite!!\n    myKnob.setAnimated(0)\n  myKnob.setAnimated(1)\n\n  #Re-write the initial position\n  myKnob.setValueAt(init_pos[0],frameForRef,0)\n  myKnob.setValueAt(init_pos[1],frameForRef,1)\n\n  #Substract the center position of the transform node\n  init_pos[0] += center_pos[0]\n  init_pos[1] += center_pos[1]\n\n  temp_pos = init_pos\n\n\n \n\n\n  #--------------------------\n  #Resolve backwards [<-----]\n  for frame in reversed(range(StartFrame,frameForRef)):\n    RefPointList = GetAnimtionList(PointData[0],PointData[1],frame,True)\n    _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n    temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n    myKnob.setValueAt(temp_pos[0]-center_pos[0],frame,0) #Add a keyframe with the values\n    myKnob.setValueAt(temp_pos[1]-center_pos[1],frame,1)\n    if frameindex >=0 and useExsistingKeyframes:\n      if frame == preProcessList[frameindex][0]:\n        tempX = preProcessList[frameindex][1]\n        tempY = preProcessList[frameindex][2]\n        print (\"Reached keyframe\",preProcessList[frameindex][0],preProcessList[frameindex][1],preProcessList[frameindex][2])\n        print (\"Dif:\", tempX-(temp_pos[0]-center_pos[0]),tempY-(temp_pos[1]-center_pos[1]))\n        frameindex -= 1\n\n  #-------------------------\n  #Resolve forwards [----->]\n  temp_pos = init_pos\n  for frame in range(frameForRef,EndFrame):\n    RefPointList = GetAnimtionList(PointData[0],PointData[1],frame)\n    _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n    temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n    myKnob.setValueAt(temp_pos[0]-center_pos[0],frame+1,0)\n    myKnob.setValueAt(temp_pos[1]-center_pos[1],frame+1,1)\n\n'''================================================================================\n; Function:             SolveCornerpin():\n; Description:          Used to solve the points of a cornerpin\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef SolveCornerpin(_node):\n  #Define Variables\n  solve_method = int(nuke.thisNode().knob(\"AssistType\").getValue()) #0 = Local, 1 = Median, 2 = Average\n  frameForRef = nuke.frame()\n  StartFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n  EndFrame = int(nuke.thisNode().knob(\"InputTo\").value())\n  myNode = _node\n  myKnob = myNode.knob(\"translate\")\n  myKnobCenter = myNode.knob(\"center\")\n\n  #Set some initial defaults\n  init_pos = [0,0]\n  center_pos = [0,0]\n  temp_pos = [0,0]\n  _xy = [0,0]\n\n  #Read data from the knobs\n  knobs = [myNode['to1'],myNode['to2'],myNode['to3'],myNode['to4']]\n  RefPointList = []\n  for myKnob in knobs:\n    init_pos = myKnob.getValue()\n    RefPointList.append([init_pos,myKnob])\n    myKnob.clearAnimated() #Only if overwrite!!\n    myKnob.setAnimated(0)\n    myKnob.setAnimated(1)   \n    myKnob.setValueAt(init_pos[0],frameForRef,0)\n    myKnob.setValueAt(init_pos[1],frameForRef,1)\n\n\n  PointData = GrabListData()\n\n  for item in RefPointList:\n    temp_pos = item[0]\n    myKnob = item[1]\n    #--------------------------\n    #Resolve backwards [<-----]\n    for frame in reversed(range(StartFrame,frameForRef)):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame,True)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      myKnob.setValueAt(temp_pos[0]-center_pos[0],frame,0) #Add a keyframe with the values\n      myKnob.setValueAt(temp_pos[1]-center_pos[1],frame,1)\n\n    #-------------------------\n    #Resolve forwards [----->]\n    temp_pos = item[0]\n    for frame in range(frameForRef,EndFrame):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      myKnob.setValueAt(temp_pos[0]-center_pos[0],frame+1,0)\n      myKnob.setValueAt(temp_pos[1]-center_pos[1],frame+1,1)\n\n'''================================================================================\n; Function:             SolveCurves():\n; Description:          Used to solve the curves knobs (like roto, rotopaint and splinewarps)\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef SolveCurves(_node,_isSplineWarp=False):\n  #Define Variables\n  solve_method = int(nuke.thisNode().knob(\"AssistType\").getValue()) #0 = Local, 1 = Median, 2 = Average\n  frameForRef = nuke.frame()\n  StartFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n  EndFrame = int(nuke.thisNode().knob(\"InputTo\").value())\n  myNode = _node\n  myKnob = myNode.knob(\"translate\")\n  myKnobCenter = myNode.knob(\"center\")\n\n  #Set some initial defaults\n  init_pos = [0,0]\n  center_pos = [0,0]\n  temp_pos = [0,0]\n  _xy = [0,0]\n\n  #Read data from the knobs\n\n  RefPointListInt=[]\n  for item in _node[\"curves\"].getSelected(): #Only apply to selected roto items\n      for subitem in item:\n        try:\n          RefPointListInt.append([subitem.center.getPosition(frameForRef)[0],subitem.center.getPosition(frameForRef)[1],subitem.center])  \n        except:\n          RefPointListInt.append([subitem.getPosition(frameForRef)[0],subitem.getPosition(frameForRef)[1],subitem])\n  \n  PointData = GrabListData()\n\n  for item in RefPointListInt:\n    temp_pos = [item[0],item[1]]\n    print (\"tempbos:\",temp_pos)\n    centerPoint = item[2]\n    #--------------------------\n    #Resolve backwards [<-----]\n    for frame in reversed(range(StartFrame,frameForRef)):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame,True)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      centerPoint.addPositionKey(frame,[temp_pos[0],temp_pos[1] ]) #Add a keyframe with the values\n\n    #-------------------------\n    #Resolve forwards [----->]\n    temp_pos = [item[0],item[1]]\n    for frame in range(frameForRef,EndFrame):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      centerPoint.addPositionKey(frame+1,[temp_pos[0],temp_pos[1] ]) #Add a keyframe with the values\n\n\n\n\n'''================================================================================\n; Function:             Solve2DTracker():\n; Description:          Used to solve the trackers in a 2dtracker node.\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef Solve2DTracker(_node):\n  #Define Variables\n  solve_method = int(nuke.thisNode().knob(\"AssistType\").getValue()) #0 = Local, 1 = Median, 2 = Average\n  frameForRef = nuke.frame()\n  StartFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n  EndFrame = int(nuke.thisNode().knob(\"InputTo\").value())\n\n  #Grap the number of trackers.\n  n_tracks = int(_node[\"tracks\"].toScript().split(\" \")[3])\n\n  #Constants etc.\n  numColumns = 31\n  colTrackX = 2\n  colTrackY = 3\n  RefPointList = []\n\n  for x in range(0,n_tracks):\n    track_a = [float(_node.knob(\"tracks\").getValue(numColumns*x + colTrackX)),float(_node.knob(\"tracks\").getValue(numColumns*x + colTrackY))]\n    RefPointList.append(track_a)\n  print (\"the ref point list:\",RefPointList)\n\n  #Grap data from the camera tracker and convert it into a format we can use.\n  PointData = GrabListData()\n\n  print (\"--Initializing Main Loop--\")\n  trackIdx = 0\n  for item in RefPointList:\n    temp_pos = item\n    #--------------------------\n    #Resolve backwards [<-----]\n    for frame in reversed(range(StartFrame,frameForRef)):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame,True)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      _node.knob(\"tracks\").setValueAt(temp_pos[0],frame,numColumns*trackIdx + colTrackX)\n      _node.knob(\"tracks\").setValueAt(temp_pos[1],frame,numColumns*trackIdx + colTrackY)   \n\n    #-------------------------\n    #Resolve forwards [----->]\n    temp_pos = item\n    for frame in range(frameForRef,EndFrame):\n      RefPointList = GetAnimtionList(PointData[0],PointData[1],frame)\n      _xy = CalculatePositionDelta(solve_method,RefPointList,temp_pos)\n      temp_pos = [temp_pos[0]+_xy[0],temp_pos[1]+_xy[1]] #Add our calculated motion delta to the current position\n      _node.knob(\"tracks\").setValueAt(temp_pos[0],frame+1,numColumns*trackIdx + colTrackX)\n      _node.knob(\"tracks\").setValueAt(temp_pos[1],frame+1,numColumns*trackIdx + colTrackY)   \n    trackIdx += 1\n\n\n\n\ndef Initializer(_method):\n  global RangeKeeper\n  RangeKeeper = rangeKeeper(_method)\n  ResolveSelectedNodes()\n\n\n'''================================================================================\n; Function:             ResolveSelectedNodes():\n; Description:          Used to find what functions to run for the given nodes.\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef ResolveSelectedNodes():\n  frameForRef = int(nuke.thisNode().knob(\"RefrenceFrameInput\").value()) #Not used here... yet\n  StartFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n  EndFrame = int(nuke.thisNode().knob(\"InputTo\").value())\n  selectedNodes = nuke.root().selectedNodes()\n  sucess = False\n  for item in selectedNodes:\n    itemclass = item.Class()\n    if itemclass == \"CornerPin2D\":\n      sucess = True\n      SolveCornerpin(item)\n      print (\"Cornerpin\")\n\n    elif itemclass == \"Transform\" or itemclass == \"TransformMasked\":\n      sucess = True\n      Solve2DTransform(item)\n      print (\"Transform\")\n\n    elif itemclass == \"Roto\" or itemclass == \"RotoPaint\":\n      sucess = True\n      if nuke.thisNode().knob(\"assist_rototransform\").value():\n        Solve2DTransform(item)\n      else:\n        SolveCurves(item)\n      print (\"roto or paint\")\n\n    elif itemclass == \"SplineWarp3\":\n      sucess = True\n      SolveCurves(item,True)\n      print (\"SplineWarp3\")\n\n    elif itemclass == \"Tracker4\":\n      sucess = True\n      Solve2DTracker(item)\n      print (\"Tracker\")\n\n    else:\n      print (\"selected node not supported:\",itemclass)\n  if not sucess:\n    nuke.message(\"Please select a assistable node in the nodegraph.\")\n\n'''================================================================================\n; Function:             StickIT():\n; Description:          Used to solve the base build-in warping module\n;                           \n; Note(s):              N/A\n;=================================================================================='''\ndef StickIT():\n  #Define Variables\n  frameForRef = int(nuke.thisNode().knob(\"RefrenceFrameInput\").value())\n  StartFrame = int(nuke.thisNode().knob(\"InputFrom\").value())\n  EndFrame = int(nuke.thisNode().knob(\"InputTo\").value())\n\n  if frameForRef > EndFrame or frameForRef < StartFrame:\n    nuke.message(\"You must set a reference frame inside the active range\")\n  else:\n    taskB = nuke.ProgressTask('Calculating Solve, please wait...') \n\n    NodePin = nuke.toNode(\"si_sw\") #change this to your tracker node!\n\n    #Grap data from the camera tracker and convert it into a format we can use.\n    PointData = GrabListData()\n\n    #03: Get a set of reference points. This is the points we want to move.\n    RefPointList = GetAnimtionList(PointData[0],PointData[1],frameForRef,False,True)\n    #04: Go through all of the frames and triangulate best points to move the refpoints with.\n    start = time.clock()\n\n    finalAnimation = []\n    for item in RefPointList:\n      zx =  item[0][1]\n      zy =  item[0][2]\n      tempAnimation = []\n      tempAnimation.append([frameForRef,item[0][1],item[0][2]]) #Add a keyframe on the reference frame\n      #Now start from the ref frame and move back\n      for frame in reversed(range(StartFrame,frameForRef)):\n          newOffset = GetNearestPoints(item[0],GetAnimtionList(PointData[0],PointData[1],frame,True))\n          tempAnimation.append([frame,item[0][1]+newOffset[0],item[0][2]+newOffset[1]])\n          item[0][1] = item[0][1]+newOffset[0]\n          item[0][2] = item[0][2]+newOffset[1]\n      #Now start from the ref frame and move forward\n      for frame in range(frameForRef,EndFrame):\n          newOffset = GetNearestPoints([0,zx,zy],GetAnimtionList(PointData[0],PointData[1],frame))\n          tempAnimation.append([frame+1,zx+newOffset[0],zy+newOffset[1]])\n          zx = zx+newOffset[0]\n          zy = zy+newOffset[1]\n      #Now add the animation created to the animation list\n      finalAnimation.append(sorted(tempAnimation)) \n\n    #print finalAnimation\n    end = time.clock()\n    print (\"%.2gs\" % (end-start))\n    CreateWarpPinPair(NodePin,finalAnimation,frameForRef)\n    del(taskB)\n\n\n#GLOBALS:\n\nRangeKeeper = 0\n"
  },
  {
    "path": "README.md",
    "content": "\n![NukeSurvivalToolkit-TonyLyons](https://user-images.githubusercontent.com/46404545/93950690-76be2e00-fd44-11ea-96a6-07070b28df81.jpg)\n\n# Nuke Survival Toolkit\n\n[Intro and Installation Video](https://youtu.be/MQq9GH3SekA)\n\nThe Nuke Survival Toolkit is a portable tool menu for the Foundry’s Nuke with a hand-picked selection of nuke gizmos collected from all over the web, organized into 1 easy to install toolbar.\n\n## Installation\n\nHere’s how to install and use the Nuke Survival Toolkit:\n\n1. Download the .zip folder from the Nuke Survival Toolkit github website.\n\nhttps://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/latest\n\nThis github will have all of the up to date changes, bug fixes, tweaks, additions, etc. So feel free to watch or star the github, and check back regularly if you’d like to stay up to date.\n\n2. Copy or move the NukeSurvivalToolkit Folder either in your User/.nuke/ folder for personal use, or for use in a pipeline or to share with multiple artists, place the folder in any shared and accessible network folder.\n\n3. Open your init.py file in your /.nuke/ folder into any text editor (or create a new init.py in your User/.nuke/ directory if one doesn’t already exist)\n\n4. Copy the following code into your init.py file:\n\n```\nnuke.pluginAddPath(\"Your/NukeSurvivalToolkit/FolderPath/Here\")\n```\n\n5. Copy the filepath location of where you placed your NukeSurvivalToolkit.  Replace the\nYour/NukeSurvivalToolkit/FolderPath/Here text with your NukeSurvivalToolkit filepath location, making sure to keep quotation marks around the filepath.\n\n6. Save your init.py file, and restart your Nuke session\n\n7. That’s it! Congrats, you will now see a little red multi-tool in your nuke toolbar.\n\n\n## Online Wiki\nFor full online documentation and tool index Wiki, visit:\n\n[Nuke Survival Toolkit Online Wiki](https://creativelyons.github.io/NukeSurvivalToolkit_Wiki/) (live site)\n\n[Wiki GitHub repository](https://github.com/CreativeLyons/NukeSurvivalToolkit_Wiki) — source, issues, and [wiki releases](https://github.com/CreativeLyons/NukeSurvivalToolkit_Wiki/releases/)\n\n## Offline Documentation (optional)\nYou can install local wiki docs for offline use.\n\n1. Download the documentation ZIP release from either location:\n\n[Nuke Survival Toolkit Releases (latest)](https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/latest)\n\n[Nuke Survival Toolkit Wiki Releases](https://github.com/CreativeLyons/NukeSurvivalToolkit_Wiki/releases/)\n\n2. Unzip `NST_Documentation_Release_x.y.z.zip` directly into the toolkit root so this file exists:\n\n`NukeSurvivalToolkit/NST_Documentation/index.html`\n\n3. In Nuke, open `NukeSurvivalToolkit > Documentation` and use:\n\n- `Wiki/Docs (Auto)` which falls back in this order: `Wiki (Online)` -> `Wiki (Offline)` -> `Docs (PDF)`.\n- `Wiki (Online)` for the live wiki (checked first for reachability).\n- `Wiki (Offline)` for local HTML docs.\n- `Docs (PDF)` for local PDF docs.\n\n## Development\n\nFor a more in-depth look into the repo and menu structure, check the development guide.\n\n[View the Development Guide](DEVELOPMENT.md)\n\n\n## Changelog\n\nView recent updates, tools additions, bug fixes, etc.\n\n[View the Changelog](CHANGELOG.md)\n"
  }
]